Projects
here is a list of some of the projects i am working or worked on.
osbuild a linux distro (linux, bash, nodejs), prophecy a compiler (java, antlr), os a kernel (c, x86 assembly), twitter-ws a tweet reporting tool (java, mysql), iris-ws a feed reader (java, js), maatmorse a moorse translation program ( c ).
osbuild
sources for building custom os images from archlinux.
the created os image is a archlinux distro where most of the applications are terminal applications (cli/tui). the graphical environment uses sway (it has to be started manually).
this project can build os images for x86_64
, raspberry pi,
and an image that works on both (dual arch, with 2 root fs, and 1 shared home).
the design guidelines are: terminal-first, trading off functionality with install size, offline-first.
it contains many self-contained scripts ive made for various purposes.
prophecy
prophecy is an incomplete compiler for a made up programming language i wrote in 2022.
the goal was to learn how compilers were made. it is written in java, it uses antlr to define the grammar and generate the parser, then generates llvm ir source code, and finally uses llvm to generate the executable from the llvm ir. it uses gradle as the build tool.
the original idea was to write a compiler for a general-purpose, strongly typed / type safe, statically typed, programming language, that has classes, interfaces, and uses significant indentation. inspiration for this was java, koka, and C#, among other things.
i keep changing my mind on what features are good in a programming language, mostly slightly changing my opinion when i encounter new programming languages with interesting design. as of 2025-02, for the fist time i have found a programming language that has most of the features i would like: v. i havent used it a lot yet though. but at least i am now lifted from the burden of wanting to create my own programming language :P
example prophecy code:
#!./execProphecyCompilerFromSource.sh
class Point
public init new()
class Tree
public init new()
val point1 = Point.new()
val point2 = Point.new()
val tree1 = Tree.new()
val tree2 = Tree.new()
Console.writeLine('test start ')
foreach i in Array.range(2, 43)
Console.write('i: ')
Console.write(i)
Console.writeLine('')
os
os was me learning the basics of making an os/kernel, in 2013.
the code is in C and x86 assembly.
i never got further than accepting keyboard input and showing it on screen; but it taught me many concepts nonetheless.
buildx86.sh
is the shell script i was using to build the kernel on linux.
twitter-ws
web app that reads tweets live off of the twitter api, stores them in a database, and allows you to generate csv report based on filters on this tweet database.
written in java.
the app has a job/batch system to generate the reports when there is tons of tweets stored in its db.
the whole app is made to be quite robust, if there are errors trying to get the tweets live, it tries to restart at different levels or correct the issue. or crash as early as possible when the error is unrecoverable from the app, making it possible for what runs it, ex: docker, to restart it.
iris-ws
feed reader web app that supports rss, atom, and json feed.
it does some filtering of the posts, and display them in a web interface. written in java.
maatmorse
program to encode text into morse code audio.
i wrote this in c in 2015.