The Doomsday Programmer
March 12, 2025
6 min read, 1171 words2026 update: My opinions have some changes, additions and clarifications:-
- You might be reliant on programming languages mostly commonly found pre-installed in consumer computers, which as of present will likely be the browser, then python2, ruby if you find a mac. And if you are proficient, use powershell, bash, perl as they will also be present depending on the computer.
- You should probably not be using a system levels programming language anyway in a doomsday scenario, if you leave memory leaks among other bugs you can end up damaging the hardware in some cases.
- If you have the luxury to store software and can run it on the computers available, rely on those that donât completely rely on online package managers, and are easy enough for you that you can build most things from scratch using the stdlib (python3, bun, odin compiler). I for example am keeping termux apk on my phones, and copy of some js files from cdn for local projects: petite-vue, chart.js (I imagine I might need charts for anything I might build and they should look good from the beginning).
- Debugging without gdb is a nice to have skill but you should ideally learn to debug all available tools properly.
- Maybe keep a local llm model if your device can run it, and if you do have your programming language of choice installed, then for the most part you are done. The journey of learning the basics can still happen but you donât have to lose sleep over it.
Programming is a craft that can create wonders, machines, games, art, but too many of us have gotten lazy. Weâve fallen into the trap of relying on crutches, libraries, frameworks, fancy editors that promise to make our lives easier but end up weighing us down. Enter doomsday programming: the antidote to our crutch addiction. Iâm here to make the case for stripping things down to the bare essentials and embracing the doomsday way.
So why go full minimalist? Picture this: the apocalypse hits. The internetâs gone, computers are toast, and your precious software is kaput(corrupted). How would you fare as a programmer? If youâve been leaning on crutches all along, youâd be up a creek without a paddle. You would not know how to run code without installing dependencies, or how to debug code without using tools. But if youâve been honing your doomsday skills, youâd be ready to roll. Youâd know how to write code from scratch, run it with minimal resources, and debug it using nothing but your wits. Itâs survival of the fittest, programmer edition.
The beauty of doomsday programming lies in its simplicity and self-reliance. By ditching the crutches, you sidestep all the headaches that come with modern programming. No more bugs from dodgy dependencies, no more bloat from unnecessary features, no more reliance on external services or proprietary libraries. Your code becomes leaner and more resilient. Itâs code that you own, control, and can trust to work anywhere, anytime.
But letâs not kid ourselves; embracing the doomsday mindset ainât easy. Thereâs a siren song to using those shiny libraries, frameworks, and editors that promise to do all the heavy lifting for us. And letâs not forget the naysayers whoâll scoff at our back-to-basics approach. But hereâs the kicker: the struggle is worth it. Because when you eschew the crutches, you learn more, you grow more, and you achieve more. Itâs a journey of self-discovery and mastery (just like learning vim).
Imagine youâre knee-deep in a Node.js project, tasked with parsing some JSON data. The air is thick with the scent of dependencies:axios, moment, fs-extra?each one adding its own layer of complexity to your codebase. But as you weave these dependencies into your project, you canât help but feel a nagging sense of unease. And sure enough, when the network connection drops or a dependency decides to throw a tantrum, your once-smooth project grinds to a halt. Itâs like trying to juggle flaming torches in a hurricane: wet, also far from optimized.
Now, letâs switch gears to Nim. Here, parsing JSON is a different story altogether. In Nimâs minimalist world, thereâs no need for a laundry list of dependencies. Nope, parsing JSON is as simple as breathing, thanks to Nimâs sleek and efficient standard library. So, while your Node.js counterparts are drowning in a sea of require statements (ideally import statements, also none of this applies if using bun instead of nodejs but it doesnât run on all devices though), youâre sailing smoothly, unencumbered by the weight of unnecessary baggage.
Hereâs a taste of what Nim code might look like for parsing JSON:
import json
# Define your JSON string
let jsonString = """
{
"name": "John Doe",
"age": 30,
"city": "New York"
}
"""
# Parse the JSON string into a Nim data structure
let jsonData = parseJson(jsonString)
# Access individual fields
echo "Name:", jsonData["name"]
echo "Age:", jsonData["age"]
echo "City:", jsonData["city"]
Clean, concise, and devoid of excess. Thatâs the Nim way. So, the next time you find yourself drowning in dependencies, remember: simplicity isnât just a virtue but duty too.
May your code be clean, your logic sound, and your resolve unshakeable.
Doomsday programming isnât just a philosophy; itâs a way of life. Itâs about embracing simplicity, honing our skills, and striving for excellence in everything we do. It is an ideology that advocates for using no crutches and only the essentials to make your work. Doomsday programming prepares you for the worst-case scenario, makes your work more robust, and independent. Doomsday programming is a defence of simplicity, a celebration of skill in pursuit of excellence (this line reminds me of the constitution and the Will Smith movie).
The article may have been insistent, but thereâs a kernel of truth in the doomsday programming ideology. While itâs not a call to abandon all modern conveniences, it is a reminder of the serious benefits that come from embracing simplicity and self-reliance in programming. Going forward, I expect just as much from other programming environments too.
This post isnât a promotional piece for Nim. Rather, itâs a reflection on the troubles Iâve faced due to dependency hell countless times, specially older React projects simply not building. Reading posts like these, and reflecting on the virtues of simplicity and skill, has a calming effect. It reaffirms the importance of mastering the basics, being prepared for the worst, and finding a certain peace in knowing my code is clean, my logic is sound, and my resolve is unshakeable.
Doomsday programming shouldnât just be a philosophy on coding setup but a way of life. Itâs about embracing simplicity, honing our skills to strive for excellence in everything we do.