I’m back from a quite long hiatus of my weekly blog posts. For now, I’ll try to do them semi-regular again, maybe even on a monthly, bi-weekly or whenever-I-feel-like-it basis. Thank you if you’ve been waiting to read my new post (although I doubt it). Also, this article has a lot of personal backstory in the beginning, if you just want to know the “free” and useful part of this article, feel free to skip that part.
One vacation back when I was in highschool as a 13 year old, I grew tired of playing Minecraft (which was the bomb at the time as well) and decided I wanted to do something a little bit more productive. Back then I had convinced a bunch of my friends that I was a “hacker’, even though I knew nothing about anything related to pen-testing or programming. I knew a lot about computers, but mainly just how to do silly stuff on Windows. Being as bored as I was, I decided to take a look at this “Linux” thing I had experimented installing sometime before. I had seen it installed on a computer in some weird humid basement of my mom’s acquaintance, but never had I really dabbled in it further.
“It was about time I started learning something” I must’ve thought to myself as I pushed the DVD (yes, those were the prime way of installing OSes back then) with the Ubuntu install in my computer. Over the next few years I hadn’t only mastered the CLI and Linux it’s most basic form. I had started converting left over computers and laptops into home servers that I could use to deploy and run a student scheduling website. In my final year of highschool I even wrote an essay on its inner workings and used it to pass my final year exams! All of this is what got me into programming and development in the first place. It even landed my first job at a tech company ~3 months later.
Over the next 2~3 years I went through all sorts of server admin and personal linux setups. I went from Ubuntu to Ubuntu-based distros like Xubuntu, going as far and deep as Arch Linux and finally settling for something like Elementary OS. But as my years managing the complexity of Linux began to grow, it felt more and more like a chore. I did most of my work because I found it fun and I had learned as much as I could from Linux.
The industry was changing in favor of larger ways of managing container-based solutions like Kubernetes. All of the sudden, it became a lot more frustrating if you just wanted to do something on a computer and you were hindered by something that wasn’t a big problem to fix, but a problem nonetheless. I want to make absolutely clear that I don’t think differently of Linux the distros I used. Nor am I implying using Linux for a server or Desktop is a bad idea. I just merely felt my personal preference for computing started to change. And in the last year or so, I started shutting down all my VPSes and other hosted forms of Linux in favor of something else: low-upkeep and low-cost services.
Let me say this: I don’t like most of startup/tech businesses. I specifically despise “services” planning to “revolutionise” something for you or your business. What I can appreciate, is the effort to make something more efficient or more fun to do. Services that are made to take away the painstaking steps of a process or replacing it with a better process are worth a lot. Services that as easy to use as well designed furniture or home products. Basically, services with great UX that get out of the way of what you’re trying to do.
A person that learned me a lot about this is Berco Beute. Working with him and learning is philosophy of “designing & building from user intention” has been largely responsible for my change of feelings on this topic. Although his vision of computing and tech is incredibly underrepresented and under-appreciated with such a small quote, I’ll refrain from explaining most of his philosophy (or my interpretation) for the sake of keeping this article readable for now.
I started looking for services that are cheap and deliver on this promise. I wanted something to replace my blogging-, code repo-, computing- and database setup all together. No one service is gonna be perfect for all of this. But I did find a combination that feels really good up until now, and are completely free:
-
Vercel (for deploying frontends & my blog)
-
Fly.io (for generic computing or hosting bigger projects)
-
Notion (for CMS and generic data storage)
-
Litestream + Scaleway (for more extreme versions of data storage)
Having a way to publish things with low effort is great! Although usually, this means getting something like Squarespace, Wix or (the worst of the worst) Wordpress. I run this blog with Hugo (the project, not the brand nor my super cool Portuguese colleague) and I was looking for a way to not manually run a weird bash-based webhook thing to build and deploy it with nginx on my Linux VPS.
Vercel is just super easy to use. You just set it up to compile Hugo and it just does. Every time I commit to my repo it just automatically compiles and pushes it to this blog: amazing! It also has some really cool serverless functionality if your computation needs are smaller. Saves me a ton of hassle. The true value of this isn’t that it’s automated, but that it’s automated without me having to worry about it. You can get up and running with Vercel in less than 30 minutes.
This service is really nice. If you’ve had to use Docker containers in your work, this service shouldn’t be too hard to use. Even for beginners of container tech this should be do-able. If you’re newer to CLI in general this might be a little bit too much however. Fly.io is an amazing service that takes a docker container, publishes it in a datacenter and giving you access through a subdomain and IP. Most (if not all) of the interaction is done through their CLI tool which makes it easy to integrate into your workflow. It also has a free offering for people trying the service out or using it for personal use! You can have three small services of your own running for exactly $0! I use this service to run a small project named “Pigeon” to automatically convert my Notion pages to markdown and publish it on my blog through Vercel! (If there’s enough interest in Pigeon I can write a post about it as well)
Okay, so I said earlier on in the article that I hate services that claim to “revolutionise” something. Well… This service actually did revolutionise the way I keep notes or keep a knowledge base for myself and project/organisations I work with! I even write these articles out on Notion before using my aforementioned combination of Vercel & Fly.io to publish them. This is the “CRM” part I mentioned in the list. You can easily write large pieces of text with pretty pictures or other forms of content. I also use it to convert my devlogs of Clarice Clairvoyage to the blog format and a format I use to post to different forums like TIGSource or the PICO-8 forums.
Another way to use Notion is through it’s (somewhat recently announced) API! I used notion-py
before the API came out and haven’t gotten to switching yet. However, my ideas with the API have always been in a way of storing information where you’d normally use a small service or database. An example: Using it as a simple way to do analytics on game prototypes. Have the prototype call when a certain event happens so you can see how many times players interact in a certain way with your game. No need to build weird platforms to see your data, just make a cool Notion page! There’s a point at which this obviously doesn’t scale anymore, so use that idea with caution.
Now, if you need a large amount of storage for a project, you would want something a little bit more SQL-y. Well, how about SQLite mixed with some auto-syncing and object storage? It’s everything you’re used to with SQLite, but having a way to sync it and make it more robust. Litestream is just a small program that copies backups of your SQLite database periodically to an S3-like object storage of your choice. My choice? Scaleway! Scaleway actually has an awesome “first 75GB for free” thing going on! Meaning: you have cool redundant storage without too much effort. Host that application of Litestream on Fly.io and you’re set for a 100% free way of running whatever you need to run!
None of the things I shared are particularly going into detail about how I set these things up. I just wanted to drop some inspiration on you to try and figure out your perfect combination of free services to run what it is you need to run. I found most of these services and ideas through keeping my eyes peeled on Hackernews. I’ve been using “Free for Dev” as a good alternative though. There’s a bunch of people that keep their eyes out for free deals for developers. You don’t have to be a developer to benefit from this though, as you can use most of these services for personal use. They do usually rely on some understanding of tech or for you to have some technical/computing skills.
Thank you for reading my post!