On Monday, one of our students at $DAYJOB asked me what projects I do in my freetime. After I infodumped on her for half an hour, she asked in disbelief “And you do these in your freetime, without being paid?”.
Like, mate, did you not listen how feckin’ excited I got just then? Of course, I do these in my freetime.
To be fair, though, the last project I told her about is very dry. It’s a library to help automate CI builds. And the thing I’m thrilled to build is a compile-safe API for accessing the packages in your workspaces. Like, yeah, it does take a special kind of nerd to get excited about that…






Yeah, the latter is certainly a big part of it. The way to make it compile-safe is to use macros to generate code, so that my users can write e.g.
Package::my_frontend.versionand that gives them the version of their frontend package.Writing such macros, i.e. writing code to generate code, is certainly something I haven’t done a ton of yet, because you practically cannot justify doing that in an application codebase, only in a library, so it is new stuff that I learn.
But well, you did already call it a “nice abstraction”, which is another big part where my excitement comes from and where I think, the special nerdery is necessary.
Others might build projects which are visually tangible, like a sexy GUI, or which do something tangible, for example a colleague (who I will absolutely not deny his own special nerdery) is currently building a driver for a motor. If that driver works, you can see a motor moving in the real-world. Even non-nerds can at least tell that something is happening.
But with my project, my success is that you can write
Package::my_frontendinstead ofPackage::from_str("my_frontend")?. And that if you rename the package tosuper_duper_frontend, that the compiler will tell you to fix the code rather than it only breaking once you actually run the build code for the frontend.No chance of explaining to non-coders why this is exciting or even just when you’re successful.