Mikael's blog

A developers seventh time trying to maintain a blog

The seventh blog

The seventh blog has gone live!
I didn’t dare to hope that this day would come, but a stint of bad (or not as great as usual) weather has left me with a lot of time for coding while my family wears out their phone batteries to the best of their abilities.

The fixed and the missing

While there was quite a lot of missing features a few days ago, there is now a working archive, tag cloud and even search(!).

The latter was solved with Orama, formerly known as Lyra, and it does all the full-text searching client-side. It’s all hooked up with a custom WebComponent and some clever index building with Astro. There will be a more complete writeup on it in the future, but for now you can check out the code over on GitHub. The link for that is at the source page.

Comments are still missing, and I have not figured out a great way of doing them yet. It will need a database of its own though, since the rest of the blog runs without a database.

Also missing is the admin area, which is for my eyes only anyway, but that will have to wait for another rainy day. For now I’ve set up a webhook on GitHub that calls a docker container on my server. The docker container then fetches the latest code and builds it, after which it copies it to a shared volume that the web server reads from. This makeshift pipeline works quite nicely for the moment.

by Mikael Lofjärd

New blog on the way

I’ve spent the last week in the mountains, skiing, relaxing and eating well.
I also took some time rewriting my blog. The old blog relies on client certificates to enter the admin area. This worked like a charm while I had the certificates on hand, but now, 8 years, 4 computers and a whole lot of reinstalls later, they are nowhere to be found.

The new blog is written using Svelte (because why not?) and currently only lives on my laptop.
I’ve written a new admin UI and established a proxy connection to my CouchDB instance through a SSH tunnel.
All in all, I’ve gotten to the point where I can write new posts. (Yay!!)

The new blog won’t be online for a while though since I need to write a real proxy backend for the database and set up some proper authentication for the admin UI first.

There might be screenshots in a few day.

Here’s to hoping it doesn’t take another 8 years for me to post again! =)

by Mikael Lofjärd

2014 In Review

It has been a bad year for my blog. Early on I started working on a new blogging platform that would also support a number of other content types to better reflect my life.
I wanted to host my own data from my running and mountain biking activities and I wanted to review at least a part of all the tech and sporting equipment I’ve bought over the year.

None of this came to pass…

…and I’m quite ashamed…

…and consider it a personal failure.

The new platform is still under construction and I’m thinking of breaking it into parts and doing a partial release as soon as possible, though that might still be closer to the end of Q1 2015.

New hardware for my office has been ordered a few days ago and I hope I will get some time to do some serious bare knuckle programming done as soon as I get home (I’m currently celebrating Christmas and the new year in the Swedish mountains).

To all you readers who persist in checking in on this blog: Thank you, and a happy new year!

by Mikael Lofjärd

Summer is Coming

And with summer, my almost year long blog hiatus ends.

July 31st 2013 was the day my second daughter was born. Besides installing some long forgotten parts in the server machine, little has happened since then. Well, little has happened with regards to the blog, that is.

September 25th marked my 31st birthday and the scale tipped at 90 kilograms. I strapped on my running shoes and started running. Once a week. Then twice a week. For a while I ran three times a week. I also cut all my intake of carbohydrates, except for one beer each weekend, and about two weeks after Christmas the blinking digits underneath my feet presented themselves as 75 kilograms.
I’ve kept on running ever since.

Then the year 2014 happened and boy did it happen fast. It’s already May and I’ve yet to write a single blog post (well except for this one). I have, however, started up a few new projects, both by myself and some with friends. One of them will result in a new design for this blog and its subsequent merge into a larger site presenting more aspects of my life.
More information about that will follow, I promise!

by Mikael Lofjärd

Server Maintenance of 2013

My server mostly keeps to itself, chugging along in my apartment storage space, but sometimes I order new parts for it. One such part was the picoPSU I bought several months ago to replace my totally overkill 650W PSU.

Essentially, I wanted to replace this:

Really big PSU

with this:

Really tiny PSU

The Corsair TX-650 has worked without a hitch, but my server is an Atom D525 with a TDP of 12W and its only other hardware is an SSD. It seems like there would be some serious loss of power due to PSU inefficiencies on such small loads.

The picoPSU on the other hand is a DC-DC PSU with an external brick rated for 120W loads, and it has proven much more efficient on smaller loads in test around the interwebs.

When I finally took the time to switch to the picoPSU, I also got rid of one of the large fans humming along inside the server case. The expected silence was however interrupted by the screeching sound emanating from the Lian-Li case fan installed in my server case. Since this was now the only fan in the case (and the motherboard chipset was getting a bit hot for my taste without any fan at all) I decided to replace it with something a bit quieter.

The choice fell on this:

REALLY quiet fan

This is the Noctua NF-A14 ULN (Ultra Low Noise) 140mm. In the configuration I chose it runs at 650 RPM and it is barely audible from a distance of about one inch. Move another inch or two away from the fan and you need to have a seriously quiet room if you’re going to hear anything from this fan.
More than once I had too look at the fan to make sure that it was really spinning.

The next time I’m upgrading my server I’m going to purchase some kind of power meter to see how many watts my little machine is operating on but for now I’m just happy that it’s operating a little (a lot) quieter.

by Mikael Lofjärd

The End of May

The blog has been silent lately but i certainly have not been sitting still. About a month ago I started to remake the administration area of the blog into something a bit more fashionable (today it consists of a few input boxes and a “publish” button). Halfway through I decided to rewrite it using AngularJS. Needles to say, I’m not quite done with it yet but it’s a work in progress and it’s going to be awesome.

My great friend and fellow coder Mattias spent a long weekend here and we put together a little P2P file sharing site using Node.js, AngularJS and Web RTC data channels. It’s really cool but like most things, it needs a little more work. It’s up on GitHub though if anyone wants to take a peek at it.

The day before yesterday I beefed up security on my server and it’s been quite interesting seeing who gets banned from trying to log in to every account known to man through SSH.

Spoiler alert! It’s Chinese authorities. =)

I might do a blog post about it someday in the near (or far) future.

In other news; my wife gets more and more pregnant every day, the weather is awesome most days so I really should get a move on with my robot, and I’m really hung-over today from attending a company event last night. We played Segway-polo. It was awesome! =)

by Mikael Lofjärd


I’ve been hacking away at the blog again and made a little nifty photo uploader for the admin area. It resizes the image on the client (browser) before uploading it with Ajax which is great because now I can upload directly from my phone without worrying about file size.

The uploader really needs its own blog post but I’m heading out so in the meanwhile, here is a sneak preview of things to come!


Oh, that’s right; inline pictures are working as well.

Remember to refresh your browser cache if stuff looks weird.

by Mikael Lofjärd

New Drapes

I got tired of the old dark green design. It was too murky and spring is in the air, so I redesigned the site to be lighter and more “spring-y”.

Old friends

var awesome = "Inconsolata is back!";

Inconsolata is back as the source code font and Open Sans makes up the majority of the text on the blog now with the exception of headers which are set in Racing Sans One.

All-in-all, I’m happier. And hopefully this can trigger my implementation of multiple pictures per post since I need that to report on my robot project progress. Summer is coming and summer means sun, and sun means solar power which in turn means that I need to speed things up if I want this project done before the (OMG spoiler alert!) new baby in the end of July.

by Mikael Lofjärd

4 Hours of Markdown

Wow, that was kind of exhausting.

I’ve completed my rewrite of all my blog posts into Markdown. Somewhere in the middle I found why my inline HTML didn’t work and that made my old posts look almost acceptable, but the syntax highlighted source code didn’t work anymore since I had moved the highlighting code into the marked configuration.

So on I went into the abyss, continuing to rewrite (more like edit) all my older posts. While I was at it I re-indented all source code examples into using 2-space indentation. Man, some posts do have a lot of source code in them. =)

I made good use of SSH for connecting to my server from my parents-in-laws’ cabin (where I’ve spent the last week).

ssh -L 8080:localhost:5984 lofjard.se made sure I could connect to the CouchDB instance on lofjard.se.


  • All posts are now written in Markdown. You will not know the difference.
  • SSH is awesome.
by Mikael Lofjärd

Marked Up With Markdown

Desperate, as always, for lowering my blogging threshold I implemented Markdown syntax for the blog.

As I did this through use of the marked plugin I lost support for inline HTML (might be a setting though). For a few hours this means that my old blog posts will look ugly until I’ve gone through the backlog and converted it to Markdown.

by Mikael Lofjärd

Sorry, sharing is not available as a feature in your browser.

You can share the link to the page if you want!