Maks Verver’s GitHub homepage
I have over a hundred repositories on my GitHub account, many small one-off projects, but some more substantial and/or more generally useful.
Below is a selection of projects that I find useful or interesting, listed in no particular order. Many of these are pretty old. Some are web applications, some of which are implemented in JavaScript and HTML only. Standalone applications are usually designed to compile and run on Linux, but some also work on FreeBSD or Windows.
Live demos
The following projects have live demos hosted on GitHub:
- Setko Puzzler 67: a peg-jumping puzzle, including a solver that can reveal optimal moves.
- Duokoban: a Sokoban variant that is played by two players on a single keyboard! (This is a static archive of the version that was originally hosted on Heroku, which supported rating and submitting new levels.)
- Hexagon puzzle: a simple optimization puzzle on a hexagon. (The git repo also contains a solver to find optimal solutions.)
- Mazedoku: generates puzzles for a Sudoku variant, and supports playing them, too.
- Maze generator: generates truly uniformly-random mazes on a rectangular or hexagonal grid using Wilson's algorithm.
- Poly-Y: a web implementation of the abstract board game Poly-Y with a strong AI opponent, based on 2014 CodeCup winner Lynx3 by Lesley Wevers & Steven te Brinke, ported from Java to C++ by me, and then compiled to Javascript with Emscripten (git repo).
The following are self-hosted and may be temporarily or permanently unavailable:
- Wikipedia Shortest Path Search: finds the quickest way to go from one Wikipedia article to another by clicking wikilinks. Like Six Degrees of Wikipedia, but my implementation is much faster! Implemented in C++, using Wt for the web frontend.
- Push Fight: (alternative hosted on GCE) web UI to play the board game Push Fight against an optimal AI. I was the first person to completely solve the game, with the help from volunteers who donated CPU time. The git repo also contains tools to manipulate various intermediate file formats, distributed computing tools, and a standalone implementation of the web app that can run off of a USB stick!
Other projects
The following is a selection of Github repositories that I find memorable.
Linux/FreeBSD tools
- tardiff: generates small binary diffs between block-oriented files, like .tar files. I used this to create incremental backups.
- sqlfuse: an encrypted filesystem stored in a SQLite database. Uses SQLCipher for encryption.
- foxtrot: mounts Windows shared folders (SMB/CIFS) on Linux via FUSE.
- loot: a small task bar widget to open/close resources (like network mounts etc.).
- cpu-throttle: reduces CPU power while a command is running.
Programming contests
Puzzles
- kakuro: an editor for Kakuro puzzles, built using Qt 5 — supports manual editing, validity checking, automatic solving, printing, exporting as image, and exporting as text.
- cijferkubus: a solver and 3D viewer for a variant of the Rubik's cube, built with FLTK and OpenGL.
More puzzles are linked under the live demos section above.
Games
- zatacka: a network-enabled implementation of the classic DOS game known as “Zatacka” or “Achtung, die Kurve!” — built using FLTK and OpenGL, with a standalone server implementation and pretty good AI players.
- Conhexion: a tiling puzzle for Android, based on The China Labyrinth — the only Android app I ever made.
More games are linked under the live demos section above.
Academia
- MSc: files related to my Master's thesis.
- BSc: files related to my Bachelor's thesis.
Esoteric languages
- BrainfuckVM: a highly efficient Brainfuck VM with just-in-time compilation and many features useful for debugging and error detection.
- befunge: an interpeter for the esoteric programming language Befunge.
Miscellaneous
- xz-random-access: a proof of concept demonstrating how to read arbitrary byte ranges from a compressed file in .xz format (I used this in my Push Fight standalone implementation).
- key-encoding: a human-friendly base-32 encoding scheme for product codes.
Last updated: 2023-05-02