Posts

  • Sitting Quietly in a Room: Reading Notes on Pascal's 'Pensées'

    For most of this year, Nietzsche has been my companion on this blog. So it feels almost like a provocation to spend the first dark weeks of November with Blaise Pascal: mathematician, inventor of one of the first calculating machines, and the Christian apologist whose faith Nietzsche spent his life arguing against.

    And yet Nietzsche himself admitted the pull. In Ecce Homo he confesses that he does not merely read Pascal, he loves him, “as the most instructive victim of Christianity.” Reading the Pensées now, I understand why. Whatever you think of his conclusions, Pascal looks at the human condition with a precision that is hard to get away from.

    Read more »
  • The Solitary Builder: What Nietzsche Can Teach an Indie Developer

    For the last few weeks, this blog has been split in two. On one side, the technical posts: Postfix containers, procedural dungeons in GDScript, analytics dashboards that refuse to move. On the other, the quieter posts about Nietzsche, solitude, and the strange light of a Finnish autumn.

    I used to think these were two different versions of me. Lately I suspect they are the same conversation. Building something alone, with no audience and no guarantee, is not only an engineering problem or a marketing problem. It is a philosophical one. And the philosopher who understood that situation best was a half-blind, chronically ill man who sold almost no books in his lifetime.

    Read more »
  • Enkimail: How I Set Up My Own Transactional Email Service with Docker and Postfix

    Ever since I started building independent web apps and side projects, reliable email delivery has been a quiet, lingering headache. When you launch a new service, you need transactional emails immediately: account verifications, password resets, order notifications, and status alerts. The conventional advice is always the same: “Just plug in SendGrid, Mailgun, or Resend.”

    In January 2026, while building the foundation for Enkimail, I decided to take the opposite route: setting up and hosting my own dedicated transactional mail server from scratch using Docker and Postfix. Everyone asked why I would take on the deliverability baggage of mail servers in 2026. The reality? Self-hosting gives you complete architectural control, zero per-email pricing, and a crystal-clear understanding of mail deliverability that SaaS platforms keep hidden behind black boxes.

    Read more »
  • The Web Traffic Illusion: Why Social Media Falls Flat and the Dilemma of Direct Email Outreach

    Writing technical articles takes serious effort. Researching, writing code snippets, documenting real-world bugs, and publishing with the hope of contributing something valuable to the community is deeply rewarding—until you open your analytics dashboard the next day and hear nothing but crickets.

    If you maintain an independent tech blog or side project, you know the drill: you share a link on social media expecting some discussion, but the counter barely budges. Recently, I sat down to dissect the latest 7-day analytics on enkilabs.site, and the reality of traffic acquisition could not be more blunt.

    Read more »
  • Procedural Dungeon Generation in GDScript: Rooms, Corridors, and Enemy Spawning

    One of the most rewarding milestones in game development is watching a world construct itself from sheer mathematical logic. In roguelikes, action-RPGs, and dungeon crawlers, procedural level generation is the engine that drives infinite replayability. It transforms static architecture into a dynamic labyrinth where neither player nor designer knows what lurks around the next bend.

    When prototyping my catacombs RPG shooter in Godot, I needed a dungeon generation algorithm that was lightweight, predictable, and easy to debug. You don’t always need hyper-complex wave function collapse or Voronoi noise fields right out of the gate. A clean, modular implementation based on Random Room Placement, L-Shaped Hallway Carving, and Weighted Entity Spawning delivers fantastic results in just a few lines of GDScript.

    In this guide, we will implement a complete, production-ready procedural dungeon generator in Godot 4 using typed GDScript.

    Read more »