My Boring Stack 2024
This post has been a long time in the making, that's how I've ended up with 2024 in the title of a post published halfway through 2025
As an engineer with a day-to-day focus on cloud security and compliance, I’ve come to appreciate just how much my professional life informs my personal projects. It’s that same passion for reliability, efficiency, and robustness that fuels my "boring stack"—a collection of tried-and-true tools and technologies that let me build tools for my day job and random side projects fast and efficiently while still delivering something that meets my high standards for "production-ready".
This stack is shaped by my experience as a cloud security engineer as well as my passion for software development in my spare time, where I want to be able to focus on bringing ideas to life rather than getting bogged down in unfamiliar tech.
With these go-to tools, I can quickly spin up a new project and start building, without worrying about the overhead of learning a new framework or toolset. It's not about avoiding challenges or being boring - it's about having a solid foundation that lets me focus on what really matters: solving problems and creating something from scratch.
In this post, I'll share with you the humble heroes that make up my personal "boring stack" – the tools that help me stay productive and bring my projects to life.
Core Technologies
Python - my first tech stack included PHP. Python followed close after and—despite touching many others along the way—has remained my language of choice for over 15 years.
Django - most of my projects are web apps, so naturally a web framework follows. While there are several other Python frameworks, I'm drawn to python for it's "included batteries" and vast ecosystem of libraries. While I've tried and worked with others, Django has been my go-to since I first used it as an intern 11 years ago now.
Apps
Aside from the SaaS services at the end of this list, there aren't many UI tools that I rely on to write apps.
PyCharm - I use VS Code for almost all my coding, I know my way around vim too. Still nothing beats PyCharm as a fully featured IDE for Python and Django and all the trimmings that entails. I've now paid for PyCharm Professional for a few years as I find it helps me go faster and has a great developer experience.
OrbStack - this could live under CLI tools but technically it is a UI app. OrbStack is a Docker Desktop alternative. I first came across it when I first got an Apple Silicon mac as it was significantly more performant than Docker Desktop and it continues to hold it's own. I know there are more options now, maybe I'll explore them one day.
CLI tools
These are things that aren't "just a library" even though they may or may not be python packages.
Git - I don't think I need to say anything about this one.
uv - new for 2024, hot on the heels of Poetry in 2023 and pip-tools shortly before that. uv
is blazing fast and makes managing virtual environments and python versions that much easier.
ruff - from the same folks as UV, ruff is an upgrade from black with extra checks and features. As a PEP8 fan and someone who likes their code neat and consistent this is a must have.
Playwright - another 2024 addition! I'm a long time Selenium user, however after one too many issues setting up Selenium for a new project I decided to give Playwright a crack and haven't looked back.
python-semantic-release - having previously used the javascript package semantic-release with a client, I wanted something to version python projects and happened across a python-native implementation. I've found that having version numbers auto-increment depending on commit message content has changed how I approach commit messages and even how I structure changes in subtle but productive ways.
Python Libraries
The big Kahuna, the list that started it all - I've split it into Django specific and general Python libraries.
faker - for generating fake data for testing (programmatically and manually). Being able to generate a production-sized fake data set easily really steps up your testing.
python-ulid - for generating ULIDs. Apparently ULIDs are dead, UUIDv7 are the new thing and I'll likely be dropping this in 2025 in favour of UUIDv7.
pytz - for all things time.
qrcode - generating QR codes for various applications.
requests - http requests that are less painful than urllib. Though I would like to try httpx in 2025, since this is probably the year that I start incorporating async into some of my applications.
python-dotenv - automatically load a .env
file into your environment variables. Fantastic for configuring applications in local dev while ensuring your dev defaults don't end up in production.
pytest - new in 2023 or 2024. I've always used unittest since that what comes with Django by default. Now that I've used pytest for a while there's no going back for me. Bonus - pytest supports unittest style tests so you don't have to migrate your existing tests immediately!
pytest-asyncio - sometimes I need to test a race condition and this library has come in clutch.
pytest-playwright - I mentioned Playwright earlier, this is how it plugs into pytest.
coverage - I'm not a stickler for coverage but sometimes it's good to check if all branches are covered in a particularly complex piece of business logic etc. PyCharm has fantastic support for this.
Django specific libraries
pytest-django - makes using pytest with Django as easy as using unittest.
django-debug-toolbar - lifesaver for seeing why your page loads are slow and many other things.
django-filter - makes light work of list views with many parameters to filter on.
django-prometheus - export a bunch of useful metrics to Prometheus. Especially useful for performance testing which will be a whole seperate post.
django-template-partials - your best friend for HTMX (see below)
gunicorn - the webserver. Ok, they're all pretty good but this is my choice. Not technically Django specific.
neapolitan - class based views but faster. New for 2024 I especially like these for prototyping.
pillow - all things image manipulation, which I've been doing a lot of recently!
sentry-sdk[django] - I think Sentry is fantastic, hands down the top of my list of monitoring tools I'd pay money for, before any metrics or logging tools.
SaaS services
Fastmail - hosts my incoming email / personal inbox.
Mailtrap - fantastic for testing and sending email from applications.
Sentry - as above, I think it's pretty neat.
Grafana / Prometheus / Loki - for monitoring and logging. Though I still haven't decided if I'm the biggest fan of Loki...
Fly.io - new in 2024!! Went to stand up an ECS cluster for a project and decided it was time to find something better. Fly is fantastic for small projects, couple it with Sqlite and Litestream and you have a fantastic platform that can scale while remaining incredibly cheap to run.
Tigris - using it as it comes with Fly for S3 compatible storage. I will be changing this out in 2025. Probably for R2 or plain old AWS S3.
Cloudflare - DNS and a "first line of defence" for free sounds good to me. Whether I'd ever willingly pay them money for anything remains to be seen.
Metaname - DNS registrar here in .nz
land. Very no nonsense.
GitLab - 2024 was the year I began migrating my projects off of GitHub. 2025 will hopefully be the year I complete the migration. All my build and deploy workflows are set up. They're a fantastic company and the product is pretty good too!
Discord - for hanging out with friends, but also push notifications / chat ops for various bits and pieces.
Misc
Sqlite - everything I've heard and read tells me SQLite can scale further than my apps ever will. With tools like Litestream, LiteFS, Turso etc it's hard to beat. I'm still a Postgres fan but flat files are just easier to deal with.
Litestream - allows you to persist and restore sqlite from s3 automatically.
Alpine Linux - another thing that'll end up being it's own post but I've been running workloads on Alpine professionally for a while and I'm yet to see any issues with it over Debian. Smaller image sizes and less CVEs sounds good to me!
Frontend
TailwindCSS - new in 2024 but some projects are still rocking Boostrap 4. It's a little more work but the apps don't look like Bootstrap!
HTMX - for interactivity without a frontend framework.
I'll investigate AlpineJS in 2025 for similar reasons.