Rebuilding This Site for 2026
The best tools are the ones you don’t notice using.
Consider the act of writing. When you are deep in the flow of an idea, you stop thinking about the actuation force of your keys, or the grip of your pen as it glides across a page, or the refresh rate of your monitor. The instrument ceases to exist as a physical object and becomes a transparent conduit for thought. It becomes invisible infrastructure.
The same should be true for a personal website. Or anywhere that you want to share personal ideas. The moment you start fighting your own publishing workflow is the moment you stop publishing.
For years, my site ran on a custom setup built with react-static. It was a reliable tool for its time, but as the project was abandoned by its maintainers, I found myself increasingly responsible for its upkeep.
Publishing a post was way harder than it needed to be: I’d write a markdown file, manually register the link in a JSON manifest,
run a custom Python script to add the post metadata to a big ol’ blob of JSON, and restart my dev server to see the new post.
This was also a problem because it meant that every time you visited one of my blog posts, you would invisibly download the content for every single post I ever published. Not very efficient.

Oops! Turns out
routeInfo.json would include the content for every single post on the site.To fix this, I eventually settled on re-writing this site with Astro. It is a lightweight foundation that remains stable and fast, yet it is flexible enough to grow into something more complex the moment an idea requires it. Though this is the first article I’ve published on this new setup, I’ve noticed a big change in my publishing workflow. My articles are no longer loose files that I have to manually stitch together with fragile scripts. Instead, they are part of a structured system that manages itself (thank you, Content Collections).
Another exciting part of this shift is that all my posts are now written in MDX. Standard markdown is great for text, but it limits you to web primitives: paragraphs, lists, images, links, etc. MDX allows me to embed custom React components directly inside my articles. I’ve used this setup before in another project, where my friend and I write about generative art with interactive examples, and thought it was about time to use it here.
I can now build small demonstrations of ideas and place them within my content. For example, here’s a simple harmonic oscillator. Drag the slider below to change the speed.
And I wanted to write more about technical ideas and tutorials in 2026, so I added Shiki to have theme-aware code syntax highlighting.
def celebrate():
print("Zero manual CSS required.")
This all wouldn’t have been possible in my old system. I also no longer need to write custom deploy scripts to get this custom content into the world, just GitHub Actions and few lines of code. I still like to keep my personal site repository private, but I’m planning to open source this Astro + MDX setup as a template for other people to use. That’ll be a fun project for the new year.
Lastly, I finally added LaTeX support for the moments when a mathematical statement is the shortest path to an explanation. For instance, the height of the ball in the demo above can be modeled as:
where (A) is the amplitude (50px) and (s) is the speed you control with the slider.
There is a broader lesson here about the nature of friction. When you catch yourself avoiding a task, it is often because the tools you are using are pushing back against you. The natural instinct is to rely on willpower to bridge the gap, but willpower is a finite resource.
If your chair is uncomfortable, you will sit at your desk less. If your guitar goes out of tune constantly, you will practice less. If your website threatens to break every time you try to post, you will blog less. My old system taught me how far you can get with determination and a few clever scripts, but the new one is built to disappear. And hopefully, this means I can write more often about more complex ideas.
Wishing you all the best in 2026 🎉