Getting started - Setting up a Blog

Aug 16, 2025

Kicking Off an IoT Sleep Project

About This Post (Process & Quality)

Fair warning: this was pre-recorded in one shot, sent to my speech-to-text bot, and then cleaned up with AI. It’s not the measure of quality I can output, but it’s a measure I can output easily, quickly, and intuitively.

Since the focus isn’t linguistic sophistication, this will have to suffice. AI will slice it and clean up my grammar, hopefully without changing anything or inserting too much, and will (mostly) keep my style of speech.

If I ever rework it into something polished, it’ll probably be part of some kind of book publishing. For now, this is free. Enjoy! I hope you can learn as much as I do - and maybe avoid some of the pitfalls I’ll undoubtedly encounter, as I have a talent for walking into them...


I note down a lot of things: helpful discoveries, fun/weird/difficult experiences - the kind of things that are worth more when they’re shared.

First demo will be to show how I approach a new project - new meaning I haven’t used the technology or the programming language before. I’ve heard about it, but I’ve never actually touched it or worked with someone who has.


The Project: Sleep

Sleep gets a bit harder as you get older. I ordered an Oura ring and a Whoop armband to track my sleep a few years ago to see:

  • Where does it go wrong?
  • When is my sleep objectively bad?
  • What is the minimum my body and brain can take and still perform?

One repeating pattern might be waking up during the night or moving around a lot - generally distressed sleep. Many factors that cause this aren’t caught by a wearable, for example:

  • CO₂ concentration in the room
  • Chemical components in the air
  • Light levels
  • Pressure
  • Noise levels

You could buy a high-end device for €300–€500. I decided it’s more fun to learn how to build it myself - but better: higher resolution, better compression, more data, and an open API. I will correlate this with my health data from the Oura ring and Whoop armband. If it matches “I woke up ten times” with some environmental cause, I can fix it. Win.


Why IoT (and My Background with Hardware)

Beyond learning and showing my process in a completely new field, this will be an IoT project. I’ve never done electronics - unless you want to count dismantling any electronic device i got my grubby little hands on as a child. I took a screwdriver to anything with screws just to see the parts. Later I learned to put things back together without the parts that don’t do much - build them back up, but better.


Learning Rust From Zero

My first IoT project will be made using the Rust programming language, in which I have zero experience. I’ve seen some code; it feels like a bastard child between C and Python in how it reads - more readable than C, but with more structurally enforced semantics than python. As if the creator really liked the idea of "somewhat readable if you know english" but still couldn't quite let go of what he was used to from c/c++/java etc.

I’ll learn Rust with the official Rust book, work through the chapters, and explain how I approach learning Rust as someone who has learned other languages since age 11. I’ll also abstract and talk about how we learn in general: there’s a dumb way and a smart way. The dumb way works - just slower, more boring, and more painful.

So: an IoT project, studied with a language I’ve never programmed in, on something useful that adds value. Fun.


Setting Up the Blog (Again)

The first learnings were setting up this blog. In the past I had a Ghost blog, posted a couple of times, then stopped. You can talk about things like moving to another country, but I need something I can sustain long term, aligned with my curiosity to tinker and optimize.

So I decided to reset and create another Ghost blog, updated to the latest version. I found there’s no compatible version of my previous theme anymore, which was sad.


Theme Choice & Fixes (Liebling)

I found another theme: Liebling by eddiesigner. It’s optimized for Ghost 5 and was last updated in 2024 as of this writing.

I tried uploading it. It uploaded with an error. I figured it might be just one file - fixed it, re-zipped, uploaded again: no errors. Nice.

Then I customized it and tried to change the highlight color of the buttons. It didn’t apply. I asked ChatGPT about it. The answer: adjust the default.hbs as well. I did that, re-zipped, uploaded, and now the highlight color works.

There may be other bits still broken that I haven’t discovered yet, but I’ll fix them as I go. For now, I’ve uploaded the zip to my GitHub project for the Ghost infra, which (until now) only contained a couple of env-templates and a docker-compose file to spin up a new blog with Ghost.

That was day one(~1h). I decided to do it, took the first step, and set up the blog for easy sharing.


Ghost vs. Hugo (Why I Stayed With Ghost)

I considered Hugo - a nice integration where you commit in GitHub and it propagates via Actions to your Markdown blog. It’s static, fast - what else could you want?

But honestly, did it matter? Hugo renders Markdown into HTML. Ghost renders Markdown into HTML. I already had a previous Ghost set up i could adapt and reuse in a shorter time than learning how to setup hugo and configure github actions/cicd, so reuse won.

The goal of this project is to build an IoT project for the first time and share it as I go - and learn Rust (as a dependency). So I’m staying slim on infrastructure, reusing what I know, and keeping learning focused on what’s relevant to the project.

Ghost is pretty fast. It’s self-hosted on my server for now. We’ll see how it performs. Right now there’s nothing special in it, but this will be my first post - an introduction.


PS: There will be other topics along the road - I have moved abroad 2 years ago, I dabble in investing/swing-trading, philosophy and a slew of other topics that might serve as storytime material at some point :)


Resources: