The best part

People sometimes ask me how I learned to program - or how they can learn too. I never have a great answer. I think they’re hoping I’ll say it was a two-week bootcamp, and not a two-decade hobby.

Because, the same way some people pick up a hammer or a pencil, I open a text editor. It’s how I build things, fix what’s broken, or follow a half-formed idea just to see if it works.

However, if we rewind the tape a bit, where did it all start?

The Microsoft FrontPage era

We’d have to travel back to somewhere between 2000 and 2002. One could argue that HTML and CSS aren’t real programming - and I’d probably agree. But to ten-year-old-me, sitting in front of a big beige CRT monitor in the early 2000s, HTML was programming.

Microsoft FrontPage in early 2000s

Back then, the internet - at least the part I was building - was mostly held together by tables. Not the database kind - the layout kind: <table>.

Technically <div> and <span> did exist, but they didn’t do anything. I’d drop one into FrontPage - nothing. No borders, no padding - just emptiness. Tables, on the other hand, actually made something appear on the screen.

What I ended up with was endless rows and columns, nested so deeply you’d think a recursive loop had written them. Somehow, though, it worked. I’d drag things around in FrontPage until everything looked sort of right.

Then came deployment:

  1. Save my files.
  2. Fire up an FTP client1.
  3. Upload my changes.
  4. Send the link to my friends on MSN Messenger.

No build step, no deploy pipeline, no twelve layers of abstraction. Just HTML, an FTP client, and the thrill of seeing it work.

PHP: my first “real” programming language

A little after figuring out basic HTML, I stumbled onto PHP. Suddenly, I could create one file for my header and footer and include them on every page instead of copying and pasting. Mind blown. It also meant I could start building things like guestbooks and visitor counters.

My first database? Ever heard of .txt?

I stuck with PHP for many years whenever I built something for the web. I was there in the early days of WordPress, drifted away for a while, then came back around the time Laravel appeared - and used it as my main framework for a couple of years.

Sockets, Servers and Java

Around the same time, I started writing IRC bots - the kind that hung out in a channel, asked quiz questions, or replied with jokes. I remember using a framework called PircBot.

Somewhere during my IRC years, I also started running servers. I hosted Ventrilo and Counter-Strike servers for friends and eventually had a bot that could spin one up on command.

Later, it even accepted text messages - so friends (and friends of friends) could pay a few kronor via SMS to rent a CS server for a couple of hours.

Looking back, I guess that was my first taste of automation, even some entrepreneurship, though I didn’t think of it as such back then. To me, it was just another problem to solve.

Still the same feeling

Because I wasn’t trying to build a career or make a living out of it. I was just trying to make things work, to automate some small problem, or just to see if I actually could build it.

That same curiosity started bleeding into everything else.

So while programming was my way into tech, it also quietly opened the door to the world I’ve now worked in for the past fifteen years.

Over time, the projects changed, but the feeling has always stayed the same.

So of course I built my own blog engine

I could’ve used Astro, Hugo, or heck, even WordPress. But I like building things for the sake of building things.

So this site runs on a Go-based setup I wrote for myself. It takes Markdown content, turns it into HTML, bundles and minifies CSS and JS, fingerprints assets for caching, generates RSS feeds and sitemaps, and even spits out Cloudflare Pages-compatible _headers and _redirects files.

It’s not meant to be the simplest solution - it’s meant to be my solution. I want to understand every moving part, from how Markdown turns into a page to how cache headers get set. The end result is something that works exactly the way I want it to.

If it’s overkill for a personal site? Yes. And that’s exactly the point. No frameworks, no plugins - just the joy of wiring the pieces together.

Programming started as a way to tinker, and it ended up shaping most of what I’ve done since. Two decades later, not much has changed. The code looks different, the tools are fancier, but the feeling is the same - that moment when something I built appears on the screen.

That’s still the best part.


  1. WS_FTP the only correct answer ↩︎

  2. Fun fact: UTM - those tracking links marketers still use today - literally stands for Urchin Tracking Module ↩︎