Welcome to the Bikeshed
Last year I set myself a goal to write a few articles on what you could call my blog. I managed to create four small posts and that was it.
So I finally gave in to my true passion: writing code. I created my own tiny blogging system from scratch. You know how every dev writes their own blog at least once in life? I'm planning to document my journey here and there and hopefully give some helpful tips and tricks to people along the way. Me writing this in the already built project means this will be done retroactively but this shouldn't detract from the learning experience for you and me.
In the beginning, I created a small Django project from scratch. It's not much but I wanted to incorporate every tiny little trick I've learned in the past decade or so. This comes natural to me as a full-time Django developer and long time advocate of simpler backends.
Features and Performance #
Naturally, it wouldn't be true bikeshedding with the obligatory dash of premature optimization. From the start, we're going to implement every whimsical feature I want to and also tune the system for the most possible RPS my little virtual server has to spare.
- Going Async: While Django has supported asynchronous features since 3.0 released in December 2019, it only really becamse feasible after async support was added to the ORM as well. Basic async database access was added in 4.1 and today we can write entire blogs using only
async def
! - SQLite: Network latency is the one true killer of app speed. Let's skip it entirely by using a small file living right next to our application on the same filesystem.
- Caching: We'll incorporate an aggressive caching strategy. Not only are we practically caching to our static assets forever, we'll also use the raw
@cache_page
decorator on our views. - Frontend assets: We can minimize and optimize our JavaScripts and stylesheets and even the font you're reading this on.
- Making it whimsical: There's no fun in today's corporate web. I want to make a website that may look a bit boring (because I'm no designer) but sports some fun features that invite you to try them out. :)
- And a lot more small details...
Stay tuned on future posts explaining individual aspects of this project.