Muskalla

Sebastian

Code

After learning some basic programming in 2004, I have enjoyed programming for most of my life. I have written code in Kotlin, Java (including Spring and Hibernate), C++, Haskell, HTML, JavaScript, TeX, PHP, SQL, Lua, and Bash. I am familiar with Linux and technologies like Docker.

You can find information on several of my programs and coding-related projects below. You may also want to check my list of public repositories at GitHub: Sebastian Muskalla @ GitHub.

iExport

iExport
2014-2022, GPLv3
Java, Gradle, YAML; ~10000 lines of code

iExport is a tool for parsing and processing the iTunes music library. It started in 2014 as a fork of the deprecated tool iTunes Export before I eventually rewrote it from scratch in 2016.

iExport parses the iTunes music library based on the property list file iTunes Music Library.xml. It then allows the user to execute various tasks including

  • printing information about the library,
  • exporting the iTunes playlists in the form of .m3u files,
  • exporting the iTunes playlists as folders that contain the tracks as files.
The latter two tasks can be used to migrate the iTunes music library to another system.

iExport is written in Java and can be built and run using Gradle. It provides a command-line interface and is extensively configurable via settings that can be passed in the form of a YAML file.

The source code and more information is available on GitHub. iExport is free and open-source software, licensed under the GNU General Public License.

RIGG

RIGG - Solver for regular inclusion grammar games
2016-2022, GPLv3
C++, CMake; ~6500 lines of code

RIGG is a solver for regular inclusion grammar games. I programmed this tool in conjunction with our 2016 paper Summaries for context-free games. It provides a prototype implementation of the algorithm that we present in our paper. You can find more information on the paper on my publication page.

RIGG is written in C++ and can be built using CMake. The tool provides a command-line interface for generating and solving randomly-generated instances of grammar games. For the latter task, the tool implements two algorithms.

The source code and more information is available on GitHub. RIGG is free and open-source software, licensed under the GNU General Public License.

Zahnrad

Zahnrad
2019, proprietary / closed source
Java, Gradle, Spring, Thymeleaf, JQL, Docker; ~12000 lines of code

Zahnrad is a tool for automatically and optimally assigning students to exercises classes. I have written this tool in 2019 when I was responsible for organizing various lectures at TU Braunschweig in 2019. Users can use a web interface to select their preferences for the available time slots. The tool will try to respect these preferences when creating the assignment.

Zahnrad is implemented and deployed using various technologies including Java, Gradle, Spring, Thymeleaf, SQL and Docker.

Zahnrad is proprietary closed-source software and not publicly available. However, I have created a showcase for Zahnrad containing more information.

muskalla.saarland

muskalla.saarland
2022, proprietary
HTML, CSS; ~3000 lines of code

This is the website you are currently looking at! My goal was to write a modern, responsive website from scratch using HTML and CSS. It is fully static and uses neither JavaScript nor any active backend technology.

I also did not want to rely on a bulky framework like Bootstrap. However, this site uses normalize.css and FontAwesome.

WoW Addons

PitbullRaidResizer + CombatTime + MovementSpeed + RaidCount
2019-2022, MIT License
LUA, WoW API; ~600 lines of code

I have written a list of small addons for the game World of Warcraft. The addons are coded in Lua and rely on the WoW API. These addons have not been maintained since for quite some time, but it should be easy to adapt the code to the current version of the WoW API.

The addons include:

  • PitbullRaidResizer: An companion addon for PitBull Unit Frames 4.0 that resizes the group UI in order to maintain a nice rectangular layout.
  • Broker_CombatTime: A data broker addon for LDB that displays the time you have been in combat with your current enemy.
  • Broker_MovementSpeed: A data broker addon for LDB that displays your current movement speed as a percentage of the normal running speed.
  • Broker_RaidCount: A data broker addon for LDB that displays the number of players in your group and the role composition.

More information and the source code for these addons - which can be deployed by copying it into the AddOns folder - is available on GitHub.

Minor projects

A few projects that are too minor to deserve their own section.

MarkdownToHTML

A tool for converting Markdown into standalone HTML files using the GitHub API. Available as a standalone script and as a docker container.

enUS deDE bilingual dictionary

A Hunspell dictionary that will accept both American English and German Standard German. It is meant for users who regularly write in German and English. With it, you will not need to manually switch between dictionaries for the two languages.

This dictionary is also provided as an addon for Mozilla Firefox and Thunderbird.

enGB_DEM Keyboard Layout

A keyboard layout for 105 key keyboards that extends the regular United Kingdom keyboard layout with symbols needed to type in German (äÄöÖüÜßẞ„”) and various other special characters.

McNaughton-Zielonka parity game solver

A quick and dirty implementation of the McNaughton-Zielonka algorithm for solving parity games in Java.

Modeless vim

A collection of configuration files that turn the terminal editor vim into a modeless editor that supports standard key bindings.