Programmer, DevOpper, Open Source enthusiast.
Other than my blog, I occasionally write longer articles:
Evolutionary Algorithms employ evolution as found in nature to converge on a preset target state. Candidates are bred and mutated, after which their fitness is determined. This fitness determines their chances of reproducing in the next generation. This article examines Evolutionary Algorithms without any prior knowledge of the subject.
Published in Hacker Monthly, Issue 18 November 2011.
A (Finite-) State Machine is a method of determining output by reading input and switching the state of the machine (computer program). Depending on the type of State Machine (more on this later), the state of the machine is changed by looking at the current state, sometimes in combination with looking at the input. This article explores practical implementations of State Machines using the Python programming language.
Suppose we have five objects which all depend on some of the other objects. The objects could be anything, but in this case let's say they're very simple software packages (no minimal versions, etc) that depend on other packages which must be installed first. How does one find the right order of installing the packages? This article describes an easy dependency resolving algorithm in Python.
An article that explores various different methods of approaching Weighted Random Distribution: Making random selections from a set where some items should be picked more often than others.
Umatrix is kinda like a firewall for your browser. Point & click to forbid/allow any class of requests made by your browser. Use it to block scripts, iframes, ads, facebook, etc. It has a fairly high learning curve, which this tutorial tries to lower.
There is little practical information available on the internet on how to deal with encodings. This article covers a small amount of theory, then proceeds to describe when we need to deal with encodings in our program and finally gives pratical pointers on how to properly deal with encodings in Python.
GDB, the GNU Debugger is a very powerful commandline debugging client. It does, however, have quite a steep learning curve. This tutorial will hopefully get you aquainted with GDB.
DocBook is a standard for creating, mostly technical, documents. DocBook's great advantage lies in the fact that it allows you to convert one source format into multiple target formats. I.e. one SGML document can be converted into HTML, Postscript, PDF, RTF, etc. This document will briefly touch upon a number of subjects having to do with DocBook. It is intended for people whom wish to get started with DocBook but aren't willing to read whole books on the subject.
SSH is capable of more than you'd think! This article describes some of the lesser known features and configuration options. It covers authentication, authorization, tunnels and proxies, file transfer and more.
BoxBackup is an online remote backup tool for Unix systems. It is robust, secure and low on resources. This article describes setting up BoxBackup on a Debian or Ubuntu system.
FastCGI is a hybrid solution to serving web applications. This guide describes how to set up FastCGI on Apache to server Python projects.
Some of my writings are no longer relevant and have been moved to the archive.
The following is a selection of the Open Source projects I've released:
Ansible-cmdb takes the output of Ansible's fact gathering and converts it into a static HTML overview page containing system configuration information. It supports multiple templates and extending information gathered by Ansible with custom data.
Show uncommitted, untracked and unpushed changes for multiple Git repos.
Jerrybuild is a lightweight project build and Continuous Integration server written in Python. Basically, it's a web server that listens for webhook notifications and then runs scripts.
A stand-alone webserver that automatically generates forms from JSON to serve as frontends to scripts.
cfgtrack tracks and reports diffs in files between invocations. It is useful when you want to stay informed about changes happening to files by third-parties or automatic updates.
hircd is a minimal implementation of an IRC server written from scratch in Python. It served as the basis for Psyrcd and is included in the Python IRC library for testing purposes.
Bexec is a Vim plugin that allows the user to execute the current buffer if it contains a script with a shebang (#!/path/to/interpreter) on the first line or if the default interpreter for the script's type is known by Bexec. The output of the script will be grabbed and displayed in a separate buffer.
whatswrong: Scan your system for misconfigurations, security problems and other issues.
harview: A commandline tool that dumps .har (HTTP Archive) in human-readable form to the console.
mdpreview: A simple GTK-based Markdown previewer, designed to be used with an external editor.
gcountdown: A simple alarm countdown timer for the Linux desktop.
A full list of all my projects, including unmaintained and irrelevant ones, can be found on my Github repositories page.
A Vim theme that minimizes the amount of colors used. Important things such as branching are high-contrast. Works well in the terminal and in GVim. Optimizations for PHP, Perl, Python and Shell scripting.
NetHack is a single-player roguelike video game originally released in 1987 with ASCII graphics. These files contain definitions for the sokoban levels in Nethack. With these you can practice the levels before actually trying them in Nethack.
Download levelset (XSok)
Download levelset (TXT Format, Sokoban++ and YSokoban)
Download levelset (Games 4 brains sokofun format, Sokoban++)
Download levelset (Univeral Sokoban format)
Download levelset (YSokoban)
A simple non-distracting theme for the XFCE Desktop Environment and GTK. It is based on the dark version of the Glow theme for XFCE and the Inverted theme for GTK.
Download and unpack the file in