I'm Bob Davidson. I make stuff on the web. I also make stuff in real life, but that's not what this website is about. Below, you'll find links to some of the stuff I've put on the web, such as my YouTube videos, Github repositories, blog posts, and more.
I like to work in "seasons" as much as I can. This is what I mean by that.
A relatively quick introduction to some simple tools to get you started in performance profiling in Optimizely CMS (or other ASP.NET applications).
A quick introduction to 2B2D, my home-grown game engine, and the concepts contained there-in.
2B2D is a very simple 2D-only game engine heavily inspired by Bevy, written in Typescript, rendered in WebGPU, with no dependencies.
How I supplement my workflow with a mix of technology, process, and habit through daily journaling.
A lengthy introduction to content events and building scheduled jobs in Optimizely CMS 12.
An introduction to working with content objects, content APIs, and avoiding some common stumbling blocks for people who are new to the CMS platform.
A brief (hour long) introduction to several basic ways to render content in Optimizely CMS 12, including rendering pages via a controller, blocks via a controller, blocks via the template coordinator, and page partials via the template coordinator.
A discussion about what content and content modeling actually are from a conceptual point of view, followed by a brief introduction into making content types for the CMS.
I revamp my old series on building Episerver (now Optimizely CMS) sites from the ground up.
XHtmlString properties are more than just HTML, they include HTML, internal links to content, embedded blocks, personalization, and more. Here I take a brief look at the internals of XhtmlString properties and the fragments that make them.
Another year, another failed attempt. Actually, I completed all of the puzzles this year, just a month and a half late. Like last year, I kept a dev diary of sorts. Unlike last year, I did all the puzzles in C#.
If you're wondering how this site is built and deployed, wonder no more. I've published the source code on Github. There's not actually much interesting here (except maybe the Gulp file that builds everything), but perhaps someone will find something useful here.
Another year and another attempt at Advent of Code. Once again, I did not finish, though I made it slightly farther than before (day 15). And once again I tried it in Rust. You can read my development diary as I worked through the syntax and logic. I've not used systems languages much, but I've had much greater success with Rust than I have any other systems language. It's not quite ready to be a part of my day job, but I see why it has such buzz.
I started playing around a bit with Godot, following some tutorials and building a very rough, proof-of-concept side-scrolling platformer. In the Github repo, you can find all my files and read through my development diary as I tried to figure out just what the heck I was doing. Overall, though, I'm extremely impressed with how polished Godot is, and how quickly a person can get up and running.
I show one technique to make metadata and otherwise non-visible page properties more user-friendly for on-page editing in Episerver.
I show one technique to make metadata and otherwise non-visible page properties more user-friendly for on-page editing in Episerver.
In which we answer the questions: how do `foreach` loops work? How do `yield return` statements work? We look at the C# compiler actually generates (more or less) in these cases.
In which we explore a home-built, makeshift content management system. Thanks to John for letting us examine and critique his code!
In which we solve a code challenge (being intentionally naive), and then refactor the solve.
In which we look at a made-up gated content form controller in MVC.
In which we look at a made-up function that adds/publishes comments to a page in a Content Management System.
Bob Davidson | 2025 | RSS