14: Databases, Maps, and Manuals
Here's that image I promised. I cheated a bit, as Celine made it, but I'm gonna use it anyway cause I love it. It's going into hyperlink.academy v2 as the title image for the Manual 1 (which I am currently writing). It's a more nebulous kind of work provides a good counterpoint to the technical challenges.
Chiefly, I refactored the back-end to use Prisma, a library that generates a type-safe database client by introspecting your database.
This bit may be a bit technical, so you can skip ahead if you like 2 (later I talk about digging through my personal website, and maps and video-games), but let's try and break it down:
type-safe: If you've set up your database so that every Person must have a "Name", prisma won't let you create a Person without one (and more complicated constraints, like the name cannot be a number) .
introspecting: To figure out what "types" are allowed, prisma will check your actual running database. Other things like this require you to manually define what types your database uses.
It sounds a bit dry, but this results in a way different creative experience. It means you are more in sync with what was previously a disconnected part of your application, living on a server . It gives you a level of trust and security that let's you quickly implement the ideas you want to. But, even more importantly, it helps you learn how to use it, both the tool itself and your database.
Developer libraries and tools are some of the most interesting educational technologies out there, though I think very few of their creators are thinking of them that way.
Anyways, the site I'm building is not complicated, but as I'm the only developer on it right now, anything that makes things easier for me, or even just makes me enjoy the work I do more, is priceless.
Some git archaeology
Speaking of not complicated sites, last week I rambled on to some generous folks about my personal website.
My website isn't really that interesting in it's current state. But, if you slowly dig through the layers of thrown away features, different architectures, and discarded tech stacks, it's a pretty fascinating cross section.
The site has gone through a lot of iterations, not so much making progress as wandering around different paths and then doubling back. There was the time I added a commenting feature, or parsed the entire history of the site to see when I'd written the most words. My website is one long running experiment and getting to look through the lab journal was a real treat. A surprisingly effective technique was to look for all the messages in the log that had exclamation marks in them. Some were a bit sad, other's triumphant, but they never failed to be interesting ones.
Looking back now, there's a lot more I could've done to leave a better record for myself. Writing longer messages, picking the changes to include in a particular commit better. What if the git log could create a website itself?
Following a map
Another journal I'm looking forward to following along with is Robin Sloan's new newsletter adventure! He's making a video-game and inviting us to hang out in his studio while he does.
Robin's year of the meteor project was the direct inspiration for this newsletter, and this next one hits right in my little corner of interest space. I love the combination of technical details, musings on art, explorations of the concept of the game, and the why of making a game at all.
I think video games must certainly be the 21st-century incarnation of Wagner’s Gesamtkunstwerk, the “total work of art” that draws upon and integrates all other forms. For Wagner, ca. 1849, opera was the Gesamtkunstwerk.
This first issue contains many maps. My favorite map, predictably, lies in a very battered copy of The Fellowship of the Ring. I'd like to show you a picture of it, but you have to promise not to judge me too harshly. This book has been in this state for as long as I can remember, and I'm pretty sure it's not my fault (though family members who read this, feel free to contradict me).
This was one of the things my parents brought me when they came to visit the US in early March, right before things really kicked off. It's my reserve refuge, for if I really need a break from things. I distinctly remember being transported by the map it begins with, trying to make sense of it. I was then even more confused by the next 20 pages, which were concerned solely with the peculiarities of Hobbit time keeping.
-
If you have any examples of really good manuals they would be much appreciated. The recurse center's and Gitlab's handbook immediately come to mind, along with Valve's Handbook for new employees. This isn't a genre I've seen a lot of, but seems like it can create a ton of value for a project and community if done correctly. ↩
-
I want to get better at talking about technical topics like this one, so if you do read the explanation and it doesn't make sense, or you just want to learn more, please hit me upp. ↩