Things I've done
Here is a list of various things I've developed throughout my career. I first learned to code in 2015, and as such this is not an exhaustive list of what I've done. It should, however, give you an idea of what kinds of software I'm used to writing.
Spider
Terminal-based file manager I began developing while hungover during a summer break in my masters - I now use it almost every day. Originally written in C++, later ported to Zig. Under continous development since 2019. All necessary features, including bookmarks, script keybinds, search and optional ascii art are implemented. Most patches include minor quality-of-life changes or experimental features. Developed on Linux, but you can probably get it to run on MacOS as well if you're so inclined.
Ghoul
import "io"
import "array"
fn main() {
var empty = [] int
var array = [5] int
//Regular index
printf("array[%d] is %d\n", 0, array[0])
if array? {
printf("Array is not empty\n")
}
if empty? == 0 {
printf("Array is empty\n")
}
//Iteration
for int i = 0; i < array?; i = i + 1 {
array[i] = i
printf("array[%d] is %d\n", i, array[i])
}
//Push
array <- 15
printf("element no %d is %d\n", array?, array[array? - 1])
//Clear array
while array? {
array ->
}
if array? == 0 {
printf("array is now empty\n")
}
//Push to array with capacity
array <- 42
//Push to previously empty array
empty <- 37
printf("%d\n", array[0])
printf("%d\n", empty[0])
~ array
~ empty
}
Exploratory C-esque systems-level programming language created in an attempt to bridge cache-friendly memory usage patterns with a good developer experience. Supports interop with C-libraries (e.g. SDL and libc). Written in C++, uses LLVM as backend. Written as a part of my bachelors thesis in 2020. Perfect "mid-pandemic project". Archived since.
SCV
trait Printable requires <iostream> {
code {
std::ostream& operator<<(std::ostream& os, const @Type& value) {
@ForMemberIn(@Type) code {
os << value.@Member << ' ';
}
return os;
}
}
}
struct Message is Printable {
int type
string contents
string destination
u64 validFrom
u64 validUntil
float scale
bool sentFromAdmin
}
Utility software for generating C++ code using models and a DSL-based traits system. Meant to be used as a way to statically generate code without RTTI. Developed in C++ during 2021. Archived since.
wm (padwm)
Stacking window manager featuring workspaces modeled after the D-pad on video game controllers Features five workspaces, each workspace is always reachable using one keybind. You start in the center workspace, going up moves you to the upper workspace, going up again wraps you around to the lower workspace, and so forth. Respects WM-hints for bars, dialogs, etc. Written in C++ during 2019. Eventually archived due to libX11 not playing nicely with certain Java-based applications which were mandatory for school courses (MATLAB).
json-cpp
Dead simple (almost) spec-compliant ~1K lines header-only JSON marshaling/unmarshaling library. Written due to dissatisfaction with the existing JSON libraries for C++. Unit tests written using Catch2. Used in several other of my projects.
Raytracer and linear algebra site
Rudimentary raytracer (and more) written as part of a course during my masters degree. Supports different shapes and materials, as well as a depth of field effect. Uses multiple threads if available to draw different parts of the image. Written in C++, using SDL for graphics.
Playground for exploring vector and matrix transformations in realtime. Written in plain Javascript.
Both have been archived since the assignment was turned in.
keys
Keybind manager for windows. Written in Zig. Used almost every day I'm using a Windows machine. Heavily inspired by sxhkd. Not archived, but not in need of further development either.
tmenu
Cross-platform application launcher/project opener inspired by the likes of dmenu and rofi. Keeps track of the commands/projects you've used/visited the most, and orders the suggestions as such. Written in 2022 using Go and SDL bindings. Used daily to switch projects, start programs, etc. Not archived, but not in need of further development either.
htpc
HTPC frontend in development. Meant to function as a GUI to control a computer using only an xinput-based controller. Currently supports starting Steam games and working as a basic Spotify client. Written in C++, using libcurl, SDL and json-cpp. Needs more development before being usable. Planned features include: browsing Youtube, browsing Spotify, integrations with emulators, playing local media.
moth
Proof-of-concept library/toolchain/whatever for fast iteration when writing games. Builds a dynamic library which is loaded/unloaded/compiled iteratively as the code you write is changed. Uses SDL for rendering. Uses preprocessor macros to generate class constructor/destructor functions in order to dynamically import classes from a dynamic library.
#pragma once
#include "../moth/moth.hpp"
struct MyActor : public Moth::Actor {
auto update() -> void override {
...
}
auto draw() -> void override {
...
}
};
ExportActorHppMacro(MyActor); // export class
This project was eventually scrapped, due to the granularity of the object-oriented approach the project used eventually made the solution more complicated than I ultimately believed it had to be.
Modern reimagining of the shell (no name as of now)
I've worked with the idea of creating a shell that allows for working with structured data since around March, 2022. The project has seen several rewrites and reimaginations, and is as of yet not available to the public. The current version features a very imperative design with a few functional elements tacked on. POSIX-compliance is sacrificed in favor of better language ergonomics. Once the project is mature enough for me to be able to use it instead of bash in my day-to-day work, I plan on making it public.