I always try to Simplify

Around 2010 something I read really intrigued me.

It was about the strict limits of Haiku, a form of very short Japanese poems.

They had to be written in only 3 phrases, of 5–7–5 syllables respectively (and there’s more about the context).

At a glance this seemed too restrictive. A place where rules were limiting creativity, as I’d seen in many other places before, like in music or filming.

But still, they had some inexplicable beauty in them.

Trying it out

It wasn’t until after a few years after, when I started practicing forms of mindfulness and minimalism that I saw the power those limits could have, and how fun I could have when imposing them on my creativity.

After seeing some benefits of decluttering my possessions and emotions, I decided to give it a try with an Espruino. Using Node.js for a “machine” running with 48KB of RAM seemed like an entertaining challenge.

I liked the concept and built something, but unfortunately I wasn’t that much into the hardware aspect of it.

Simplifying software

I then started applying limits to projects I was building, like Budget Zen, Loggit, and Photo Frame, where I wanted just the minimum functionality to make it useful, not having to get more servers, hosting (web or email), not needing cookies, nor analytics.

It was amazing how much I could build without ending up with more clutter. And how freeing it was!

"Serverless"

I was even able to get completely off of Google Cloud, Amazon AWS, and Digital Ocean servers, which I had running for a few different purposes and apps.

Note I have nothing against those, they’re all great services, but I wanted to see how far I could go with it. Also, I've had to maintain many servers for a few years by myself. I did not enjoy that.

For a while it all worked out pretty well with GitHub pages ("Static/Frontend") + AWS Lambda ("Backend") + Cloudflare (HTTPS), and in 2019 I was able to combine all of that and simply use Serverless with AWS, coupled with Next.js.

Types and "Serverful"

After becoming enamored with Rust (even contributing to Mozilla) and disenchanted with Node's dependency and security design problems, I’ve been favoring Deno with TypeScript. Whenever possible, using little to no JS on the frontend (ideally vanilla, no frameworks), and trying to use only standard Web APIs and patterns (good ol' form submissions are more accessible).

After about two years I've gotten back to having a couple of Digital Ocean servers running a plethora of things with Docker and Caddy, which is very easy to maintain and Serverless isn't great for everything.


Now, I’m not saying you should or need to put hard limits in all you do (I usually advocate for healthy balances), but next time you’re building something, think about how you’d do it if you had some really strict limits in place.

It might just make you try something different.