Internship Post Mortem 2016

This summer, I interned at an undisclosed software company. Without getting too specific, here’s a basic post mortem of my experience. Things I Learned Things are designed for the lowest common denominator, especially in software. There isn’t enough documentation, and often the code is better documentation than the actual documentation. Using source annotations to generate documentation for the end user (eg JavaDoc, JsDoc) is often easier than writing the documentation by hand (this only applies to large code bases, however).

Recent Site Downtime

Recently this site experienced some downtime. This was related to both (1) Go breaking on the latest OpenVZ kernel patch 2.6.32-042 and (2) my TLS certificate expiring.

Go looks borked on OpenVZ until it moves to 3.X. As for the certificate that has been fixed.

Nate Silver Considered Harmful

As the 2016 Republican Presidential Primary comes to an end, so has Nate Silver’s credibility. Silver is known as the whiz kid who predicted the 2008 and 2012 general presidential elections using historical data. It’s just sad that Nate Silver is consistently wrong lately because of his overt bias (that apparently he can’t recognize).

The Insecure of Things

So weev had some fun with printers recently. With 6 lines of shell, weev not only trolled hundreds of people from across the Atlantic Ocean, but also showed how screwed IT security is. If any of the affected organizations used even the most basic security measures, all of this could have been prevented. It’s sad that in $CURRENT_YEAR companies still can’t be bothered to implement the simplest of security measures. But this post isn’t about anything Andrew Auernheimer has done, it’s about something worse – the Internet of Things (hereafter referred to as IoT).

We Dogfood Now

For a while, I ran this blog using Ghost. Ghost is a great blogging platform, with a great theme and developer ecosystem. I cannot laud the Ghost team enough for how well-designed the UI is (IMHO). My only issue with Ghost is how badly it hogs resources (due to the fact that it’s written in a dynamic, interpreted language). Node.js used a ton of memory on my itty-bitty VPS, and it’s sometimes it’s slow and apt to crash.

A New Blogging Architecture

As of the time of this post, I am hosting this blog using Ghost. My only issues are that Ghost takes up a lot of memory (52 MB) on my VPS and page loads are slightly sluggish. In the search of a better platform, I realized that there’s still room for improvement in the blogging atmosphere. First, some background knowledge: A Tale of Two Systems As it stands, there are two existing ways that web blogs work.

KeePass is Complicated

For the past few weeks, I’ve been writing a small program to parse KeePass 2 database files (the ones that end in .kdbx) using Go. I’ve been using this blog post which details the file format but it’s still damn complicated. For example, the headers are a Type-length-value list. Note that TLV is meant for communications protocols (where bandwidth is limited), not for disk-based storage). Fair enough, I’ll deal with it.

From Lighttpd to Nginx

I recently moved this blog from Lighttpd to nginx. Lighttpd was good for a while, but now that I have plenty of experience rewriting server configuration rules, I feel that I’m ready for nginx. To be upfront, nginx configuration isn’t that hard at all. The only issues I seemed to have was that I was unfamiliar with the terminology or what I wanted to make happen with nginx. For example, when I first started being a sysadmin, I had no clue what a scheme, URI, or the status codes were.

Lets Encrypt (This Website)!

Looks like I got in to the Let’s Encrypt Beta Program. As of now,,, and now use a certificate from Let’s Encrypt. I had to do some work to make sure everything works with Lighttpd, but so far so good. This included concatenating the cert.pem and privkey.pem together to create a single lighttpd.pem file that lighttpd could handle. I’ll start using the cert with Postfix soon too. I’m now going to start redirecting HTTP requests to HTTPS, as well as fixing links within this website.

Bye Bye Capslock

Hate Capslock? Me too. Nobody uses it on purpose. I can count on one hand the number of times I’ve used the Capslock key unironically. Time to rebind it to escape. That’ll be far more useful with vim. xsetkbmap -options caps:escape Good riddance.