Luna's Portfolio

Active Projects

I regularly work on these in my spare time.

Veloren - Open Source Video Game

Veloren (Website) Rust

An open-source multiplayer voxel role-playing-game.

I'm a long-time contributor, currently a maintainer on GitLab and administrator of online community spaces. My work on the project has involved many areas such as programming, technical writing and moderation.

brother-ql-next - Driver for Brother Label Printers

brother-ql-next (GitHub) Python3serial communication

A CLI application and library for interfacing with Brother label printers. Maintained fork of `brother-ql` with many bugfixes, new features, and more documentation.

Notably it allows for easy pixel-perfect printing, which is typically quite difficult with standard printer drivers, and may be important for uses such as barcodes.

Additionally this application doesn't require any other drivers as it talks to the printers directly (via serial, USB or the network).

My Linux Configuration Files

dotfiles (Gitlab) LinuxShells (Bash/Zsh/Fish)AwesomeWM/X11/luaNiri/Wayland/KDL

This is the git repository where I store some of the configuration files for my computers.

ProtoFox - My Firefox UI Customizations

protofox (Gitlab) FirefoxCSS

This is a set of adjustments to the Firefox UI, mainly intended to better integrate it with [Sidebery](https://addons.mozilla.org/en-US/firefox/addon/sidebery/) - an extension adding vertical tabs with support for tab trees.

While Firefox now supports both vertical tabs and flat tab groups, I find that insufficient for managing large amount of open tabs at once. Sidebery provides arbitrary-depth tab trees, tab groups, tabs for your tab lists, snapshots to help you avoid accidentally closing your precious huge tab collection and more.

Human working memory is quite limited, so I like to keep all the documentation I need for a given project open for extended periods of time as needed. Then when I switch tasks and work on a different project, I can collapse the previous tab tree and start another one associated with the new project, or reopen an existing one.

Complete Projects

These projects already fullfill my needs and receive minimal updates.

brother-ql-net-emulator

brother-ql-net-emulator (Gitlab) Async Rust (Tokio)SNMPTCP

A program allowing the user to expose a wired-only Brother label printer to the local area network, in a way compatible with both `brother-ql-next` and the official Brother iPrint&Label mobile app.

As of March 2025 it requires a modified version of `brother-ql-next` and only supports the Brother QL-570 printer.

MIT Kerberos Container

mit-kerberos-container (Gitlab) DockerPodmanSupervisorDKerberos

A complete deployment configuration for a Kerberos v5 KDC server with example settings included.

Light Theme for MicroCorruption

microcorruption-light-theme (UserStyles.world)microcorruption-light-theme (Codeberg) CSSAccessibility

A user-style for the MicroCorruption website which adds a light theme.

DeSec DDNS Script

desec-ddns (Codeberg) BashFishjqcurl

A script which allows easy dynamic DNS updates for use with [DeSec](https://desec.io/) authoritative DNS servers.

The configuration of the new version written in Fish is done via a JSON file, the program minimizes the amount of requests made to the API by first gathering all required RR updates and then utilizing bulk update endpoints.

PDF Table Extractor

pdf-table-extractor (Website) PythonGTKFlatpak

This is the program created as part of my bachelor's thesis in bioinformatics.

It allows the user to extract data from papers in PDF format which fail to provide machine-readable versions of data they present as tables. The program prompts the user to select all desired tables and their columns, and subsequently extracts the data into a spreadsheet file, one sheet per selection. This speeds up data extraction efforts significantly, and the extraction is very reliable, even if some tables require manual cleanup (merging split cells) after the initial extraction.

Rust OAuth 1.0a client library

oauth1-client (Gitlab) RustOAuth 1.0a

A library implementing an OAuth 1.0a client in Rust. Notably, the `rsa` signature method is provided with a feature flag, as enabling it requires a lot more dependencies to be compiled.

I intended to use this library to create an application for accessing and extending the class schedule available from my university's digital systems via a public API, I succeeded in creating a proof-of-concept implementation using this library, however I never made it into a fully usable app. Nevertheless, that provided me with a real-world test of the client library, and it worked flawlessly.

Pentago Game written in Bash

bash-game (Gitlab) BashAutomated testing

This was a group project for the Linux course during university. We worked in a pair, first agreeing on the overall design, then splitting the project into tasks and collaborating via Git.

The concept was fairly simple - make a CLI program replicating the board game Pentago. The game is played on a 6x6 board, with four 3x3 sub-boards. Two players are assigned a color of balls each. Every turn, a player first places one ball on the board and then rotates one of the sub-boards by 90° in any direction. A player wins if five of their balls line up in the horizontal, vertical or diagonal direction.

To solve the task, we utilized many lesser known features of Bash, such as associative arrays. Due to the data structures involved we had to be careful about the detailed behaviors the different quoting and variable expansion styles Bash supports. To help us avoid mistakes, we used ShellCheck as the linter for the code.

We also implemented automated tests for the win-condition-detection algorithm, which help us find bugs that appeared with different edge-case board configurations. We managed to avoid needing to declare multiple test boards by making the algorithm check the win condition for a player denoted by a specific character, and placing more than two different player-charcter kinds on the same board. The test board thus couldn't ever appear in a real game, however the checking algorithm ignores all characters except the one it was instructed to check against so this was not an issue.

We tried to avoid code duplication where possible, utilizing loops and functions, however this project has demonstrated the limitations of Bash as a programming language, and some parts of the codebase are quite repetitive to avoid introducing even more difficult to understand abstractions. The project is also split into multiple files which are then loaded by the script entrypoint to make it easier to find specific areas of code.

We were aware that Bash was not the ideal tool for such project, however it was one of the tools we had at our disposal that were relevant to the course, and this project let us practice its advanced usage.

The lecturer praised our work and said it was the best project submitted during the semester.

Random Projects

I don't work on these regularly but they are still useful.

VimRename - a batch renaming utility

VimRename (Codeberg) Python3

A small script making it much easier to batch-rename files.

It works by opening a list of all files in your text editor of choice, and letting you utilize its abilities to edit multiple lines simultaneously.

The Well Known Button Specification

well-known-button (Codeberg) HTTPJSON SchemaTechnical Writing

This is a fun little project to help people share 88x31 badges with eachother!

Despite the relatively silly topic it's a very real piece of technical writing, in a similar style to IETF RFCs, and includes a full JSON Schema for validation.

Lunar Misskey Tweaks

lunar-misskey-tweaks (Gitlab) CSS

CSS A set of custom CSS rules for a number of minor improvements for Misskey-like social media platforms.

Multipurpose Clock - a hardware project

multipurpose-clock (Gitlab) AVR microcontrollersCMesonKiCad

A little hardware project I've been working on over the years, using an ATMega8a microcontroller to drive a Nokia 5110 display (monochrome 84x48px), and displaying current time (with an external I2C RTC board), temperature and humidity (AM2320 I2C sensor).

The user interface is a single rotary encoder with a button, although I have not fully implemented it yet.

The project currently features a schematic, a real-life version built on a breadboard, and corresponding software. In the future I plan to improve the electronic design with components that have a lower power usage, and eventually make a 3d-printable enclosure for it.

I've learned a lot about embedded developement, working with very restricted hardware (8kb of flash) and electronic circuit design.

PictureToCHex

PictureToCHex (Gitlab) PythonCcode generation

Small program that turns a given input image into an array of bytes that can be imported into a C program to display an image on a display such as the one I used for the multipurpose clock project

Notable OSS Contributions

Specific contributions which I'm particularly proud of.

2025

2024

2022

2021

2020

Archived/Inactive Projects

Projects that aren't very relevant anymore and I no longer work on.

Fish Subsonic Client (archived in 2024)

FishSubsonicClient (Codeberg) fishcurljq/yqXML

A shell script for streaming a random song from a Navidrome music server. I wrote this in part to learn/practice some command-line tools, and in part because the built-in webUI for Navidrome doesn't handle a playlist of >1000 songs well.

The project was archived because it could only support Navidrome instances which put all music in one folder, and that stopped being the case for mine eventually.

ReScreen - Remote Virtual Screens for Linux/X11 (archived in 2023)

rescreen (Gitlab) RustVNCX11Linux

A set of programs to add a virtual screen to one computer, and then display it on another over the LAN. This allows for example using a laptop as an extra screen for a desktop.

The project has been archived because virtual outputs are extremely buggy on most computers, and the performance was quite bad.

SpigotMC Plugin for setting custom model data for items (last update in 2021)

spigotmc-plugin-cmodel (Gitlab) JavaKotlinGradle

A small plugin for SpigotMC-based Minecraft servers, allowing players to take advantage of extra item models included in resource packs.

The project started out being written in Java, and later on I decided to rewrite it in Kotlin. I got a bunch of experience with both languages and using Gradle as a result.

Git Branch Archiving Proof-of-concept (last update in 2021)

branch-archive-test (Gitlab) Git

A short document presenting a way of archiving git branches non-destructively, in a way where they can be restored later if desired.

It is a very interesting technical concept that I haven't found a use for yet.

SweeperLib (last update in 2020)

sweeperlib (Gitlab) Rust

An implementation of all the game logic required for Minesweeper, complete with comprehensive doc-comments for generating Rustdoc documentation.

My goals were to create a library from start to finish, including comprehensive error handling, documentation and testing. I achieved all of them except for automated tests, as I lost interest in the project at that point.

FlashProg (fork) (last update in 2020)

lunareclipse363/flashprog (Gitlab) AVR microcontrollersC++electronics

This project turns an ATmega8a microcontroller into a 25x series SPI flash programmer.

This fork added many documentation improvements, and other small niceties (like `Makefile`s to build the whole project on Linux), however I never finished all my plans for it because I got stuck during hardware prototyping, and no longer have some of the required components available.

This project *may* be reactivated in the future.

LineageOS Performance Profile Quick Tile (archived in 2020)

LineageOS Performance Profile Quick Tile (Gitlab) JavaAndroidGradle

This small app adds a quick settings tile, which allows the user to easily change between the system's power profiles, ranging from "power saving" to "highest performance".

It was archived because the next LineageOS version included this feature by default.

Modified BIOS turning an RX480 GPU into an RX580 (last update in 2018)

XFX-RX480-BIOS-RX580 (GitHub) Git

This is my first GitHub repository, its primary purpose was learning Git on a real-world project.

It includes a history of modified versions of the BIOS for a GPU I had in my PC at the time. The final one achieved a ~20% performance increase.