home
Projects
A random collection of my programming projects. Some of these projects are quite old and may no longer compile because of bit rot.
For work
- SECA - Symbolic Energy Consumption Analysis
- A symbolic execution engine for a small C-like imperative programming language called SECA
- The SECA language has special statements for controlling hardware
- The analysis predicts total energy consumption of the hardware a program controls, visualized over lines of code
- Written in Haskell
- https://gitlab.science.ru.nl/mklinik/eca-symbolic-execution
- Brightspace Grading Tools
- no-bs is a command-line application for interfacing with the Brightspace web API
- Brightspace is a digital learning environment used at Radboud University
- I wrote it to automate downloading of student assignment submissions, distributing them to teaching assistants, and uploading the grades back to Brightspace
- Written in Python
- bs-grades is a tool for parsing, querying and evaluating the grade .cvs files you can export from Brightspace
- Useful when talking to students, when you need a quick overview of their progress
- Written in Haskell
- https://gitlab.science.ru.nl/mklinik/brightspace-grading-tool
- Resource Analysis
- A Hindley-Milner type inference algorithm for a small functional task-oriented programming language
- Piggy-backing on the type system is an effect system that analyses resource consumption of all tasks in a program
- https://gitlab.science.ru.nl/mklinik/program-analysis
- Genetic Algorithm Scheduler
- A scheduler for the Multi-Skill Resource Constrained Project Scheduling Problem (MSRCPSP)
- In addition to the MSRCPSP we want arbitrary computable constraints and fitness functions
- Uses a genetic algorithm to compute a schedule, given:
- a partially-ordered set of tasks to execute
- resource requirements of the tasks
- available resources
- a user-defined fitness function
- Written in Clean
- https://gitlab.science.ru.nl/mklinik/ga-scheduler
- Computer Algebra
- MFoCS
- Homework and projects for various courses of the Mathematical Foundations of Computing Science (MFoCS) master’s programme at Radboud University
- Some functional programming in Clean
- A compiler with Hindley-Milner type inference for an imperative programming language with structural record subtyping, written in Haskell
- Some dependently-typed programming in Coq
- Some homework and reports
- https://github.com/mklinik/radboud
For fun
- Dauntless Loadout Optimizer
- Travel Expenses
- bibtextool
- dock-undock
- Tool to execute various system commands when I dock or undock my laptop
- For example switch screens and resolutions, set keyboard layout and speed, set mouse speed
- Involves some parsing, which I did not want to do in bash
- Written in Haskell, because Haskell is the best scripting language
- https://github.com/mklinik/dock-undock
- hmud
- Multi-user dungeon that can interface with Jabber group chats and irc channels
- People in the chat get associated with a randomly generated character
- People can pick up, drop, and trade items
- Written in Haskell
- website
- source code
- ticketBot
- Web scraper for the ticket system of the Radboud University sports center
- When you want to do sports there you have to reserve a ticket
- Tickets are often gone very quickly, but become available before the lesson starts as people drop out
- You have to be fast to grab one of those tickets
- The bot automates polling, and automatically reserves a ticket as soon as one becomes available
- Written in Haskell
- Source code not available, I wrote it only for myself and don’t want other people to use it
- commaFirst
- Parser and pretty-printer for a subset of the syntax of C++
- Formats function call expressions in comma-first style
- Intended to be used as pipe command in vim
- You have to visually select a function call statement and pipe it through commaFirst
- https://github.com/mklinik/commaFirst
- uscs2011
- mciij2e
- Implementation of a compiler from Andrew Appel’s book “Modern Compiler Implementation in Java, 2nd edition”
- A compiler (or just the parser? Too long ago, don’t remember) for a small Java-like language, written in Java
- https://github.com/mklinik/mciij2e
- gpx2tango
- Once upon a time I owned a Nokia n900
- It had an app called TangoGPS, which I used for geocaching
- This script imports .gpx files, downloadable from geocaching.com, into the TangoGPS sqlite database
- Written in bash and xslt transformations
- Source code available on request
- programmingGroundUp
- The book “Programming from the Ground Up” by Jonathan Bartlett teaches programming in x86 assembler
- This repository contains some assembler programs from the book
- Written in x68 assembler
- https://github.com/mklinik/programmingGroundUp
- haskey
- Server-side search keywords
- Some browsers support search keywords, for example when you type “g foobar” it searches google for “foobar”, or “w haskell” it searches wikipedia for “haskell”
- I want the same search keywords consistent across all browsers, across all devices, even mobile
- This program runs on a server of your choice, at that time I had a dedicated server
- You set the server as the default search engine in any browser
- Searches from your browser are then sent to haskey, which answers with a redirect to the respective search engine
- Written in Haskell
- https://github.com/mklinik/haskey
- sanitize
- Script to sanitize file names
- When you download files from the internet they often have special characters and spaces in file names
- Converting them to underscores is surprisingly tricky in bash
weird file name[from%20the%20int(e)rnet]
becomes weird_file_name_from_20_the_20_int_e_rnet
- Written in Haskell because quoting and text replacement in bash is a nightmare
- Source code available on request
- pandoc-wikiwords
- Pandoc plugin for translating WikiWords to URLs to local files
- I wrote it because my personal notes are stored in a plain-text markdown wiki, which I then convert to HTML pages with automatic wiki links
- Written in Haskell
- https://github.com/mklinik/pandoc-wikiwords
- latex-ide
- Very simple IDE for writing latex documents
- Used to be a Haskell program, now it is just a latexmk config file
- Connects zathura (pdf viewer), vim, and latex to provide backwards and forwards synctex, and auto-recompiles on save
- https://github.com/mklinik/latex-ide/
- haskell-misc
Contributions
Some open source projects I have contributed to.
- A color scheme based on vim’s wombat for the sup email client
- Nested ssl proxy connections for ncat
- Allows you to tunnel an ssl connection over another ssl connection
- The patch is somewhere in the project’s history
- ncat
- True half-page scrolling for the astroid email client
- astroid
- TODO: make pull request upstream