5 min read

Freedom Week #1

Week 1 of me not having a job has almost finished, and it was great 🎇
Freedom Week #1

Week 1 of me not having a job has almost finished, and it was great 🎇

At my previous team at Automattic, a Slackbot would ping me daily to ask what I've been up to, a sort of daily virtual standup. I liked it, as it put some pressure on me to get things done and keep a record of what I've been up to.

As I want to make the absolute most out of every day given to me, I've decided to keep a log. And since I'm all about building stuff in public, I will post it to my site here as well.

Endgame

In January 2020, I started a fun little project: a step counter showing how many steps you've left until you die.

I've had much fun working on it, but finishing it was hard. Scope creep kicked in in, I had trouble preventing HealthKit syncing from causing tons of edge cases, and Reactive Native was being a bitch.

Over the past few years, I've made a couple of attempts at reviving it, but I gave up every time because finishing it requires focus, and something always came up.

I picked it up again this week and did quite some things:

  • Started over fresh, using Expo instead of 
  • Converted all JS code to TypeScript
  • Migrated the old Redux code to redux-toolkit.
  • Played around with some i18n packages and settled on Lingui.
  • Translated the app in Dutch.
  • Made HealthKit syncing more robust.
  • Added some extra categories.
  • Reduced scope (gone are Apple Watch support and subscriptions - why did I ever think subscriptions were a good idea?).
  • Came up with a better name: Endgame. The original name was Hour Zero, which sounds like a bad zombie apocalypse movie. At least we're in Marvel territory now.

The road to a release is still long, but I hope to be able to share a TestFlight link next week.

Selfhosting

On Wednesday, I worked on an update of an internal tool we have at Wannabes, which takes a post and uploads an Instagram carousel based on it.

This is an old Next.js tool that uses Playwright under the hood to take a screenshot of the carousel. It's hosted on Vercel, and it's been giving me lots of headaches. Because of ✨ Serverless ✨ an API function cannot be bigger than 50M. Finding a Chromium binary with no issues to fit inside 50M has been a hassle every single time I touched this project.

Vercel is also not cheap anymore. I paid $30/month for a Pro plan for a very long time, and in the beginning, I could throw whatever I wanted at it and stay within the limits. Recently, however, I've been hitting the limits of function calls quite often, resulting in extra charges.

Vercel also chose to stop sponsoring Woordje.be's hosting. Woordje uses ✨ Serverless ✨ GraphQL API, which at the volume Woordje is visited does not fit within Vercel's Pro plan at all.

Since Next.js is supposedly hard to self host I looked into a way to do it 😅 I found two really cool projects:

Both platforms offer seamless GitHub integration, enabling automatic deployment on push and LetsEncrypt provisioning for domains. They also support Next.js projects out of the box and provide numerous templates for popular applications like Plausible, Ghost, and Supabase.

While Dokploy's interface closely resembles Vercel's, I opted for Coolify due to its enhanced configurability. Both solutions utilize Nixpacks and Docker containers as their underlying technologies.

I've set up a cheap VPS with Coolify, which is currently hosting the Wannabes.be frontend, the internal Instagram tool, Woordje.be and my own Plausible instance. This allowed me to cancel my Vercel Pro subscription, saving some money.

Lijsje

A mini side project I've been pondering is something that has been done numerous times before. However, none of the implementations I've tried so far have hit the mark regarding ease of use or are any faster than just using a Google Doc.

The idea is wishlist management, which is making a list of things you want for, for example, your birthday, where people can cross off items. Every website I've tried so far requires me to create an account or throws everything and the kitchen sink at the problem.

I envision a site as simple to use as a Doodle, has real-time multiplayer, and requires no account creation or even cookies.

It's still early days, but I've secured the domains lijsje.be and lijsje.eu (lijsje.nl was already taken 🥲).

I plan to start scaffolding this project next week. I think I'm going to use Laravel since I've been doing too much Next.js lately.

Cleaning the cellar

I've also spent considerable time cleaning the cellar and driving to the recycling center this week.

Misc

Some weeks ago, I added a WLED-controlled string of lights above our bed. The mounting hooks I used on the wall had weak adhesive, and everything came down at night this week.

I designed and 3D-printed some more sturdy hooks, which, together with some really good double-sided adhesive, should hold 🤞

I also finally got the chance to use Cursor full-time. Cursor is an AI code editor, that leverages multiple models (Claude 3.5, GPT4o, ...) to supercharge coding. It blows my mind.