State of Web Development 2016

Posted on .



Honestly, some days it feels like web development is the art of building a self-aware network of node.js packages that sort of does what you need it to do… until someone on the other side of the planet inserts a breaking change in a patch version and the abomination you have created decides to set your house on fire instead.

And I Feel Alive

Posted on .



‘Conqueror’ is about a world that is kind of falling apart around you, and you’re looking for a conqueror to save you. But you’re looking for the conqueror in someone else, which I think is something you should not do. You should find the conqueror in yourself first, and be your own hero. If you stand strong, then you will stand for a bit longer.

Use WhatsApp via Your IRC Client with BitlBee

Posted on .


NOTE 2016-09-21: It seems whatsapp-purple has been abandoned by its maintainer. So the things in this guide may stop working over time, and your mileage may vary. This guide is left here for posterity.


Perceptive readers may know that I use a Jolla as my phone. This places quite a few restrictions on what programs can be used on it. For WhatsApp I used to use a native application called Mitäkuuluu by coderus. Unfortunately at some point the program was discontinued, the official Android® version did not run well on the phone and the whole thing was a hassle. So I searched for an alternative way of using WhatsApp, since it has some people I would have trouble contacting otherwise. Since my IRC client is always running (on my server) and is something I check often, I looked into what BitlBee had to offer. I got a setup working and decided to document it for others.

Automating Let's Encrypt with simp_le

Posted on .

Let's Encrypt is the new free, automated and open certificate authority, that I talked about in a previous post. The part that I'm focusing on in this post is automated. Let's Encrypt is all about automating the certificate request and renewal process, and they encourage this to the users by offering a good client – and by only giving out certificates with a maximum of a 3 month validity.

I'm not good at remembering things months down the line, especially if I have to deal with multiple different subdomains. That's why I wanted to automate my certificate renewal process.

Mebe Forked

Posted on .

Just noticed someone has forked Mebe into their own version. Haven't looked at it more thoroughly, but looking at the feature list they have added lots of useful stuff and removed stuff that Mebe still has that is specific to my own blog (I'm working on removing them piece by piece). If interested, you should totally check it out on Github: https://github.com/nmqanh/geekpress.

This is the first project I have that has been forked by someone, makes me feel all warm and fuzzy inside. 😊 Though also a bit embarrassed of all the things they have had to fix in the engine… Anyway, such a great motivator to see someone use something you have created.

More Mebe Benchmarks

Posted on .

You may remember that earlier this fall I found out just how much faster a 2048-bit HTTPS certificate is for the server to handle. Now that I got one from Let's Encrypt, I decided to redo the performance tests with the new certificate all set up. Since I ran out of credits on my blitz.io free account, I did the new tests with loader.io's free tier instead. That's why the graphs are a bit different this time.

Before I go into the HTTPS results, I will bring some context. You might remember that last time I got about 730 requests per second served over HTTPS with a 2048-bit key, and about 1380 requests per second for plain HTTP. Quoting myself from that time: "So fast… 🚀". Turns out I spoke too soon. By disabling some extraneous console logging, I was able to more than double the performance. Let's see the latest results.

For reference: The server is an online.net Dedibox XC with an 8-core Intel Atom C2750 processor and 8 GB of DDR3 RAM.

Let's Encrypt!

Posted on .

The identity of this website has been verified by Let's Encrypt Authority X1.

That's right! Let's Encrypt, the new free, automated and open certificate authority, has moved to public beta and their client has improved enough that I was able to request a certificate for this blog! In the end it was criminally easy, basically a matter of running one command (after fiddling around a bit to find the correct command…):

letsencrypt-auto certonly --webroot -w /path/to/blog -d blog.nytsoi.net

This uses the Let's Encrypt program to automatically validate my domain and request a certificate for it (with the default value being a 2048-bit one). The way it does the validation is by adding some files to the path I specified and then making an HTTP request for the domain, checking that the files are accessible. When the domain has been validated, it requests the certificate and saves it. The cool thing about it is that it creates a directory /etc/letsencrypt/live/blog.nytsoi.net/ that contains symlinks to the files required for using the certificate, such as the full chained certificate file and the private key. When I want to renew the certificate, I can run the Let's Encrypt program with the same arguments again and it will update the symlinks. That means automating it is very easy (and indeed required since their certificates currently only last for 90 days). The program also contains plugins for Apache and nginx, but the nginx plugin is very experimental so I settled for the webroot method.

I'm really excited for Let's Encrypt's launch. I hope this will encourage more and more people to adopt HTTPS for their websites, especially those that deal with user logins or other sensitive data. There's really no reason to not do it anymore. Encryption for everyone!

Music I Like: Linstrøm – Smalhans

Posted on .

This installment of music-i-like deals with a specific album, because I feel like I don't know enough about the artist Hans-Peter Lindstrøm to talk about him in general, but I still want to share the album in question. Smalhans (2012) is refreshingly different album from what I usually listen to. It has a simple formula: simple melodies on top of beats that steadily keep on going, all building towards… well, it doesn't matter. In Smalhans it's not about the destination, it's about the journey. Perfect music for when you are driving but are not in any rush to get to where you are going. Also, it has fun track names, like Fāār-i-kāāl and Ęg-gęd-ōsis.

Music I Like: AURORA (2012–)

Posted on .

AURORA, or Aurora Aksnes, is my latest discovery. She is a young Norwegian singer with an awesome voice and who is already showing some serious promise as a songwriter – she has written most of her songs herself, and they already sound – to me – better than those from some famous popstars. AURORA has been gaining popularity fast recently, getting good reviews and being endorsed by people like Katy Perry.

What I like about AURORA, other than her being a really good singer, is that she conveys a lot of her emotion through her hands and body while she sings. In some songs she can be seen clutching her dress as if to keep her from exploding, whereas in others she dances around the stage in a frenzy. That makes her live sessions fun to watch – and as with any good artist, they are as good as, or even better than the studio versions.

Still waiting for that album, though. I hear it's coming in the beginning of 2016 and I can barely wait. AURORA has, in a week's time, dominated my 365-day "Most played tracks" statistic (one more playthrough and every track on the top 10 will be hers). I'm expecting great things from her.

Music I Like: Linnea Henriksson (2010–)

Posted on .

This is kind of a funny entry since I'm usually not into this kind of radio pop, but for some reason Linnea's songs work for me. I don't know why, but I'm not ashamed to admit it either. Just listen, they're good.