The joy of making things from scratch


Published on 2024-11-25



If you wish to make an apple pie from scratch, you must first invent the universe.
Carl Sagan

I've been a programmer for many years at this point—professionally alone I'm about to cross the 20-year mark. Most of my career was built on a pragmatic foundation: always trying to use the best tools for the job, reducing development time, and using tools that wouldn't necessarily bring me joy but would do the job well. Lately, though, I've started to go on a tangent with my personal projects, where I would previously apply these same rules of pragmatism.

I have a nice job that I enjoy, I can pay my bills, and save some money, and while I would never be able to afford a Lambo (not that I want to afford that anyway), I'm very happy with my career. This realization freed me from trying to make my side projects profitable endeavors. This gave me a freedom in programming that I needed but didn't know I was missing. I finally can feel the joy of programming for fun again, just like it used to be.

This website, for example, although still using Flask as a framework, was something different and non-pragmatic enough that I wanted to try anyway. Right now, I'm in the process of removing the dependencies and doing everything from "scratch"—as much as possible and as much as my interest permits.

It needs to be a step-by-step approach: first removing the CSS lib, then removing Flask itself, maybe removing all Python dependencies (although I'm not sure I want to implement a markdown parser—and if I don't, that's fine). Then I can think about creating a new toy web server, maybe a proxy? Is that a good use of my time? Probably not, but I don't care. I don't need to be productive as long as I'm having fun with it. The best part? When it stops being fun, I can simply stop and move on to another thing.

Another great side effect is that it's a good way to escape the inundation of AI tools that have lately been sucking the life out of everything around code. I don't feel pressured to be x-times more productive when working on these tasks; I just want to enjoy, learn new things, type the code, and see it working (or breaking).

Mind you, I'm not an anti-AI person in general, but the pressure that AI tools have been exerting on every programmer to be ultra-productive all the time, with no time to think, just shipping code constantly, is really starting to pile up. Things are starting to look a bit bleak from this perspective.

What's the limit? Going and implementing a toy language just to bootstrap everything? A new OS and all that comes with it? A new protocol? Probably not. For now, I'm happy to pick my apples, flour, sugar, etc., at the grocery store and still say that I'm making my pies from scratch—but who knows, one day I may have a garden and plant an apple tree. :)