Other than my blog, I occasionally write longer articles:
Evolutionary Algorithm: Evolving "Hello, World!"
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.
(Finite-) State Machines in Practice
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.
Dependency Resolving Algorithm
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.
Weighted Random Distribution
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.
Encodings in Python v2
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.
Quick guide to GDB Debugging
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.
Really quick guide to DocBook
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 Tips and Tricks
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 setup on Debian
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.
Apache, FastCGI and Python setup guide
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.
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.
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.
multi-git-status: Show uncommitted, untracked and unpushed changes for multiple Git repos.
whatswrong: Scan your system for misconfigurations, security problems and other issues.
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.
Nethack 3.4.3 Sokoban levels
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)
Dark N Light XFCE Theme
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