The last year or so has been a whirlwind.
Some of it turned into blog posts, some of it turned into features, some of it turned into separate repos, and some of it is still sitting in branches and draft PRs waiting for me to write the words around it. But there has been a pretty consistent thread running through all of it.
One reason it has felt so full is that none of this happened in a vacuum. My day job has been full too. I've still been shipping Azure for Startups work at Microsoft, and more recently I also took on the Azure for Education service. So part of this update is simply that I've kept making room for my own projects while keeping the day job moving too.
I often think about Scott Hanselman's old "Own Your Words" post. I've had this domain since 2001, and 2025 was the year I started acting on that idea more literally. Instead of just posting here once in a while, I started treating CodeCube like my own parcel of land on the internet and building on it.
I've basically been pulling two big things together at once:
- making CodeCube feel less like "just my blog" and more like an actual platform for ideas, tools, and experiments
- moving further toward software that touches the physical world a little more directly, especially through Owl Precision and HootCAD
Those two threads have ended up feeding each other more than I expected.
I also like where all of this is landing. It feels less like random side quests now. It feels more like a body of work.
The last year in timeline form
This is part of why it felt funny to write a plain recap post about it. One of the things I added this year was the ability to tell stories as a timeline, and honestly that fits this stretch better than a straight essay does.
The 2025 run here started with Brewmite
I'd started training Iaido at the Florida Budokan, which has beautiful Iaido, Karate, and Kyudo dojos on a gorgeous property. Garage Beer rented the place to film a Bloodsport parody commercial, needed extras for one scene, and I ended up standing right behind Jason Kelce doing one of the Iaido katas. That became the Brewmite post, which also turned out to be the first commit I made on this site in 2025.
I kicked off the leadership series
I started the leadership series with the first post on how teams grow. That was the start of a stretch where I was writing more directly about management, team shape, planning, and the day-to-day mechanics of how work changes as groups grow. Around that same stretch I also added previous/next post navigation, because once I knew I wanted to write a series it was obvious the site needed better ways to move through connected posts.

CodeCube got a Map
A few weeks later I shipped the Map experience and wrote about mapping my own content. I wanted a way to move through the site spatially instead of only by categories, archives, and next/previous links.
![]()
I added CodeCube OS
Not long after that I built CodeCube OS, which gave the site a terminal-style shell, commands, and a different way to move around the same body of content. I wanted to see what the site looked like when navigation worked more like a tool than a menu.

I started Modulator
Around the same time I started Modulator, which scratches a very old itch for me because I'm a huge fan of modular synthesizers. It started as a small C# modulation library, but the underlying idea kept sticking around and eventually started feeding back into the audio and visual systems I was building elsewhere.

I wrote about Chloroplast
Around then I also wrote about Chloroplast. That was part of me getting back into open source docs tooling in a more explicit way and wanting to share the details of that work in public again.
![]()
I made timelines a first-class part of the site
Then I built the timeline component, which is maybe the most self-referential item on this whole list. It was me explicitly deciding that posts should be able to do more than just stack paragraphs and images in a column.
![]()
I started Photonic
By November I had shipped Photonic. I wanted the site to have a visual runtime of its own so I could publish interactive work directly instead of only writing around it. I built /viz/ as the place where I could load different modules dynamically while experimenting with Photonic, and later Sonance, without letting all of that code sprawl across the repo.
![]()
I added the features hub
In December I added the broader features hub because I wanted one place to point to the systems and experiments that were starting to pile up across the site.
HootCAD stopped being a vague idea and became an extension
Late in the year, HootCAD crossed the line from "I keep thinking about programmable CAD" into a VS Code extension scaffold with preview, file watching, and the beginnings of a clearer product shape.

HootCAD started looking launchable
Around the turn of the year, the HootCAD work picked up speed. The release pipeline was there, MCP-based agent assistance had landed, and I had updated the publisher metadata so Owl Precision was tied to it more directly.

owlprecision.com became the HootCAD site
This was when owlprecision.com stopped being a placeholder and became the HootCAD site, complete with the Visual Studio Marketplace path and clearer product language.

Project Estimation Workbench shipped
The Project Estimation Workbench came out of wanting a way to make uncertainty, staffing, dependency shape, and schedule tradeoffs more visible.
![]()
I started building Liminal
Liminal was where I started leaning harder into atmosphere: endless rooms, flickering lights, doors, and a version of /viz/ that felt more spatial and less like a straight rendering demo.

I started Sonance
A few days later I started Sonance, which was me giving the site a proper audio layer instead of scattered sound experiments. That opened the door for ambient loops, footsteps, heartbeat effects, and eventually tighter interplay between sound and visuals. More recently I started adding modulation ideas there too, which has been especially fun because of how much I love modular synths.

Photonic and Sonance started working as one system
Around then, visual space, sound, modulation, and interaction were starting to work together instead of living in separate experiments. That is why I started Photonic and Sonance in the first place: I wanted the site to get better at expressing ideas through the experience itself, not only through explanation. I also wrote down more of what they were on those feature pages so I had somewhere to point people for the details.

I added the Gaussian splat module
Then came the splat module, which was my first step toward a Gaussian splat pipeline I want to keep exploring. It brought that interest into the same environment as everything else I was building.

The story behind it
CodeCube stopped being just a publishing engine
Most visibly, I've put a lot of energy into CodeCube itself.
What started as my custom static site generator has turned into a broader playground for different ways of presenting ideas. Over the last year I kept pushing on the idea that a personal site does not have to just be reverse-chronological text and images forever. It can also be a Map, an OS, a timeline, an explorable, a little simulation, a 3D environment, a feature hub, and probably some other things I haven't built yet.
Most of those changes came out of something I needed the site to do for the writing or experiments I was already trying to publish, not from sitting around trying to invent features in the abstract.
Photonic was one of the clearer examples of that shift. I wanted a visual runtime that let me publish interactive work directly on the site instead of only describing it from the outside. I built /viz/ mostly as the place where I could load different modules dynamically while experimenting with Photonic and, later, Sonance, which also kept the repo cleaner.
Sonance came from the same instinct, just on the audio side. I wanted the site to carry atmosphere, tension, rhythm, and reactivity, not just layouts and interactions. Then Liminal, the modulation work, and the Gaussian splat module gave me more room to combine those pieces.
The feature pages for Photonic and Sonance are mostly there so I have somewhere to point when I want to explain what those systems are doing without re-explaining them from scratch every time.
Owl Precision and HootCAD kept pulling me toward hardware
At the same time, I've been spending more energy on Owl Precision, and especially on HootCAD.
If CodeCube is where I've been exploring richer ways to present ideas, HootCAD has been me pushing in the other direction: toward tools that are useful, concrete, and much closer to making real things.
The basic idea behind HootCAD is still the thing that grabbed me from the start: CAD should behave a lot more like software. Text files. Version control. Reusable geometry. Real diffs. Reviewable changes. A live preview loop right inside VS Code instead of some totally separate world of opaque files and proprietary workflow assumptions.
Over the last stretch that idea picked up live preview, multi-format exports, MCP-based agent assistance, and a clearer product shape overall. Turning owlprecision.com into the HootCAD site instead of a placeholder also forced me to get clearer about what the thing is and who it is for.
There are still a bunch of pieces in motion there. Some of the current draft work is around better camera controls, toolbar cleanup, rendering quality, and generally making the extension feel more like a serious workspace instead of just "cool prototype energy." There has also been adjacent work around things like CNC/LinuxCNC setup and other supporting tools under the Owl Precision umbrella, which all fits the same broader direction for me: software that is not only about screens and dashboards, but about fabrication, machines, geometry, and the physical layer underneath all the digital abstractions.
I wrote last year about feeling like we may be heading back toward the physical a bit more, and I still think that's true. I'm still very interested in software, AI, and web systems, obviously, but more and more I want those things connected to manufacturing, tools, materials, and real workflows. That is probably part of why the whole Brewmite experience stuck with me too, including the odd little stretch where I got to be a katana-wielding extra.
On the CodeCube side, the last couple of weeks especially have been about layering those ideas together. Liminal pushed /viz/ toward atmosphere. Sonance added a more structured audio layer. Then the Gaussian splat module became the first step toward a splat pipeline I want to keep exploring. The modulation ideas I love from Modulator have started leaking into this too, so the same kinds of modulators can now shape sound in Sonance and visual behavior in Photonic.
Open source kept branching out in parallel too
Not every repo produced one clean launch moment, and that's fine. Some of the year was just steady accumulation.
I kept putting time into Chloroplast because it sits right at the intersection of a few things I care about: docs, developer tooling, static generation, and making publishing systems feel straightforward instead of fragile. Over this stretch it picked up better sitemap generation for SEO, much stronger localization support, and a bunch of quality-of-life improvements. Writing the Chloroplast post was part of that too. I wanted to share the details of the work and get back into talking about open source more directly.
One thing I like there is that I ended up using Chloroplast to build multiple docs sites in parallel: docs for Modulator, docs for Chloroplast itself, and even the docs-backed site structure behind Owl Precision. That's the kind of dogfooding I want from a tool like that.
I also gave some attention to smaller tools and side projects. Modulator got proper docs infrastructure and kept growing out of my long-running love of modular synthesis ideas.
Chimpiler is one I especially want to come back to. At a high level, it's me trying to make EF Core-driven schema changes more automatable and reviewable by generating the database artifacts I actually want without turning every safe change into hand-authored migration work. There's more to say there, and I expect I'll eventually write a more focused post about the EF-migrate side of it.
There are a few other experiments in nearby repos too, but the broader pattern has been the same: lots of small attempts to turn "I wish this existed" into an actual tool by the end of the day.
I started building on my own parcel of the internet
I often come back to Hanselman's old "Own Your Words" idea. I've had this domain since 2001, and the easiest way I can describe 2025 is that it was the year I stopped treating it like a place I occasionally posted and started treating it like a place I could build on.
That included the writing. The first 2025 commit here was Brewmite. After that came the leadership series, a run of posts about AI and how the industry is changing, pieces on domestic manufacturing and work, and a few other side thoughts that were really me trying to understand the moment in public.
It also included the site work itself: the map, the OS, timelines, Photonic, Sonance, the estimation tools, and the rest of the experiments that turned this place into more than a stack of posts.
There are still a few things I haven't written up properly yet. I've got a proper Chimpiler post I still want to write, some additional Monte Carlo and strategy modeling ideas, and at least one leadership explorable I still want to finish because I think the visual metaphor is good even if I haven't landed the final article yet.
But stepping back, I think the update is simpler than that. Enough of these pieces exist now that I can stop pretending they are unrelated experiments.
I'm happy with where this is going. CodeCube is bigger than a blog now. HootCAD and Owl Precision have kept moving. A few open-source tools are still moving in parallel too. And all of that has been happening while I keep working on Azure for Startups and Azure for Education.
Mostly, though, I'm just glad I kept building. I like these little spaces. I like making my own tools. I like the feeling of slowly turning a vague instinct into something you can click on, walk through, install, or ship.
So if it has seemed a little quiet here at times, it hasn't been quiet. It's mostly been one of those stretches where the work fans out in a bunch of directions at once, and the narration comes after.
More to come.