Overview of posts

Overview of some posts that occured in geekoverdose. Sections are in alphabetical order.

Artificial intelligence and puzzle game solvers

Counter Strike Agent-Goal-Labyrinth-Simulation: simulation of agents leaving a labyrinth without seeing each other. Agents and goals get distributed arbitrarily over the labyrinth, each agent has to find a way to his corresponding exit and leave the labyrinth without being seen by other agents. Uses an A* and a Manhattan Distance Heuristic, implemented in Java.

Draught board puzzle / checkerboard puzzle solver: Python implementation using depth first search, branch cutting, limited successor generation and some caching between states.

Einstein puzzle solver in Prolog: an easy to understand Prolog implementation of the Einstein or Zebra puzzle/riddle.

Equation puzzle solver: Python vs Prolog: comparison of equation (crossword) puzzle solvers: the equation puzzle contains 3 vertical and 3 horizontal equations. Two equations always share one variable (9 variables in total), from which 8 are unknown at the start.

Flower disk rotation puzzle: Python vs Prolog: comparisons of solvers for a disk rotation puzzle: the puzzle has 4 disks containing 12 fields (9 of them are holes, 3 are of solid wood) which have to be rotated so that all holes are covered by at least one layer of wood.

Hidoku solver in Python: a solver to Hidoku puzzles written in Python that uses brach cutting, intelligent generation of successors, and some simplifications to keep the search space small.

Jodici solver: Python vs Prolog: comparison of Jodici solvers implemented in both Python and Prolog. Jodici is a number placement puzzle similar to Sudoku, but in contrast to Sudoku includes addition in it’s rules and has a smaller total solution space.

Magic number board puzzle solver: Python implementation using a best first search with branch cutting, heuristics and limited successor generation.

Mastermind: a code-guessing helper in Prolog, which uses past code guesses and their results to derive a list of codes which are still possible.

Pick Stones Game: Python script using Alpha-Beta-Pruning suggesting ideal steps for the “Nim” or “Marienbad Game” (2 players remove stones from piles each turn, the player to remove the last stone loses the game).

Prolog puzzle solvers: three posts about simple logic puzzles with their corresponding solvers written in Prolog: Puzzle 1, Puzzle2, and Puzzle 3.

RushHour Puzzle: a car stuck in a traffic-jam-puzzle has to exit the puzzle. The solver uses an A* and a relatively simple advanced heuristic, implemented in Java.

The Wumpus World: a hunter tries to find gold in a grid-organized cave world while avoiding pits and the Wumpus. The solver uses rules to derive new facts from current ones in a knowledge database, implemented in the Jess rule language.

Who has to attend the party? another small example of how Prolog solves the problem of who has to attend a boring party, using facts and rules.

Who Lives on Which Floor? small example of how Prolog solves the logical problem of which person lives on which floor of a house “on it’s own” by using a) known facts and b) how a valid solution of the problem looks like.

Computer vision

Computer Vision IM520 class report: complete report for the IM520 computer vision class at the University of Applied Sciences Upper Austria from 2012, with exercise descriptions, solution ideas and background on both.

Pan shot face recognition for Android: Face detecion and recognitition, using OpenCV, different haarcascades, SVM/KNN classification, PCA feature transform and convolution kernel based image energy normalization. Is now integrated into the face module of the mobilesec authentication framework.

Data analysis/machine learning/pattern recognition

caret: SVM hyperparameter tuning: R script for multicore hyperparameter tuning with SVMs using caret and evaluating performance using a ROC curve, EER and kappa as metrics.

Image classification using SVMs in R: R script demonstrating a Support Vector Machine (SVM) classifying images as being either of type A or of type B.

mctune car detection: extension of R package e1071 “tune” (hyperparameter optimization) for using multiple cores and returning confusion matrizes – and an example demonstrating tuning SVM hyperparameters for a car detection.

Weka in Java: how to use a precomputed model (e.g. from the Weka-UI) to predict the target variable for new samples in Java code.

Weka on Android: how to connect Weka with Android and how to use a precomputed model (e.g. from the Weka-UI on a desktop PC) to predict the target variable for new samples on Android.


Bash improvements: log commands of all shells immediately to a single logfile.

Backups with diff, rdiff-backup: small post on some useful features of diff, rdiff-backup etc that can be helpful in certain backup scenarios.

Deleting opened/written files: how to really remove files that got deleted from the file system while being opened/written, therefore still exist without being visible in the file system.

i3 window manager configuration: how to quickly setup and configure i3, including our usually used configuration.

Pulseaudio reset: reset pulseaudio if Rhythmbox (or other music players using pulseaudio) suddenly become silent.

Ubuntu Gnome 16.04/Gnome Shell configuration: our usually applied configuration to Gnome Shell on the example of Ubuntu Gnome 16.04. There is a previous version of this post for Ubuntu Gnome 14.04 too.

Text replace using sed: example of batch replacing text across multiple text files on Linux using sed

Digital image processing, photography and graphics

Animated gif image alignment: automatically aligning images before using them in an animated gif

convertconditional: python script that adds conditional functionality to ImageMagick’s convert

Panorama: batch creation: automatically create multiple panoramas using batch processing

Rename images to show date and time in filename: batch rename images to uniform filenames containing timestamp, original image number and a personal postfix

Sort pictures into folders by date: batch sort picture files to folders named after their creation dates

Vector graphics batch manipulation: manipulate multiple vector graphics (svg) on the command line at once


Cracking weak RC4 messages: cracking RC4 based, “intercepted” messages that use weak keystream reinitialization for each message block.

Git: enable fsckobjects: enable fsckobjects with Git for security reasons.

SSH proxy + SSH port forwarding: how to circumvent firewalls using SSH tunnels and SSH proxy included in standard SSH.

SSH proxy user without shell: client end server side of how to add and utilize a user on a Linux system that does not get a shell but is allow to perform port tunneling in order to achieve SSH based proxy functionality.


== for Strings in Java: specialities for hard coded strings

LaTeX presentations with Beamer: tips & tricks

latexdiff-git: fast and easy to use highlighting of changes between different versions of latex files managed with git

Neo2 keyboard layout review: a review and recap of my learning process of the Neo2 keyboard layout after the first 1.5 years.

PDFLaTeX repair error 131: a simple method to repair pdf files generated by PDFLaTeX that cause the Adobe Acrobat Reader error 131 using GhostScript.

Video conversion: batch convert multiple videos on the command line using ffmpeg (avconv)

Visitor pattern VS instanceof: visitor pattern to replace runtime based object metainformation