Preventing Cascading Failure

With the advent of reactive programming and frameworks like Netflix’ Hystrix, classic stability patterns like Nygard’s Circuit Breaker Pattern have entered mainstream software development. The circuit breaker is used inside your clients to cut the connection to a collaborating system (the server) once you notice the server doesn’t answer in a timely manner. This helps to prevent cascading failures – if your system is under high load, you open the circuit in the client to not launch a self-inflicted denial of service attack against your server.

Continue reading

Posted in best practices | Tagged , , , | Leave a comment

Two-Factor Authentication

With more and more of my personal data being hosted in the cloud, I felt that I needed to take security more seriously. Since passwords are the weakest link in most systems, I was looking for a better solution. While I’m able to generate sufficiently secure passwords, there are only so many I can remember and I don’t trust cloud-based password managers.

Continue reading

Posted in misc | Tagged , | Leave a comment

Vim File Type Configuration

Vim has been my primary text editor for more than 15 years, but even though I use it on a daily basis, my configuration hasn’t changed much over time. When I set up a new workstation, I stumbled upon the filetype plugin that I wasn’t aware of. Using this plugin, you can import different vim configuration files depending on the type of the file you’re editing.

Continue reading

Posted in productivity | Tagged , | 1 Comment

Keeping Your Server Secure With Unattended Upgrades

When operating servers, you’re responsible for keeping them up to date with the latest security fixes. Ubuntu comes with a mechanism that installs updates automatically so you don’t have to worry about it. Obviously, this is meant for personal servers operated by hobbyists where convenience is more important than availability. In a professional environment, you would test new packages first because seemingly innocent changes may break complex applications.

Continue reading

Posted in linux | Tagged , , , | 8 Comments

Living in the Future with IPv6

It’s not quite flying cars, but since yesterday I’m living in the future. IPv6 has arrived at my home network after I switched to a new VDSL contract. I had to activate it manually in my FritzBox home router though, but as far as I can tell, things are working fine. Now I’m able to use Google services and read Heise Online via IPv6!

Continue reading

Posted in linux | Tagged , , | Leave a comment

Installing Oracle’s JDK on Debian/Ubuntu

Due to licensing issues, Linux distributions don’t ship Oracle Java packages anymore. In many cases, that doesn’t matter since you can just use OpenJDK. But if you do need Oracle’s JDK, Debian packages are a bit more convenient than handling tarballs because they integrate nicely with the rest of the system. Fortunately, there’s a simple way of creating a Debian package from the official JDK using the java-package tool.

Continue reading

Posted in java | Tagged , , | 1 Comment

Managing Docker Container Updates

When running a Debian/Ubuntu-based server, it’s relatively easy to figure out whether updates need to be installed. Tools based on apt work very well in this regard and even offer advanced features like unattended updates. Not so with services running in Docker containers.

Continue reading

Posted in linux | Tagged , , | Leave a comment