This is the website I built to host personal projects and anything I'm interested in enough to write about and share.
A few highlights below:
sya - This is a tool I recently finished that used to teach myself to build a
PyQT
GUI binary. Originally it was just a Python script that downloaded & split an audio track from youtube (usingyt-dlp
andffmpeg
); recently in my D&D group, the DM started getting youtube ads from the ambient music he played while he was describing us something. Intially it was funny but eventually I decided to build a GUI so he could use the Python script for it.Links: code
tralloc - An experiment into a method of tracking the size of allocated memory blocks in C. The method works, but the library is purely a proof-of-concept and not intended for development (it relies on unsafe behaviour). I also wrote an accompanying article which describes the idea and aims to explain my thinking and alternative different solutions.
- Git Server - I setup my own git mirror server on a Raspberry Pi 1 B+ I had lying around. I documented the process so I'd have something to go back on for future reference.
It updates every 24hrs from more reiable servers (like GitHub) that I push commits to.Links: article src.gearsix.net
- txt2html - A parser/generator to convert text to a subset of Markdown. I wrote this to challenge myself to try writing simple parser/generator for Markdown after a growing curiosity that resulted from writing mdoc (a cli stream interface to cmark).
- shuntyard - An implementation of Djikstras Shunting Yard Algorithm. I found the wikipedia page on it and thought it sounded cool. It uses a stack to convert mathematical expressions written in infix notation to their equivalent in polish notation.
Links: code
- pagr / dati - This is a static site generator which I used as a learning project for the Go language. It went through several iterations but now I'm happy enough with it to use it for building gearsix.net from Markdown and HTML templates.
It also gave me a chance to try out Test-Driven Development as Golang has great builtin testing.
It also gave me a tool to do this.Links: code
- xpm - A shell script that provides a generic interface to the host system package manager.
It doesn't do anything smart but except providing a single set of commands to the multitude of package managers that all do (roughly) the same thing from a user-perspective. - dotfm - A Python cli tool I wrote out of the frustration of managing my dotfiles. It allows you to install/modify/remove files whenever required using symlinks and set aliases to remember them by. It also knows where the dotfile should be, so you don't need to remember the filepath of it.
I tend to use this day-to-day, it's great. - Piece Chain - I was researching different text ditors and discovered a text buffer algorithm that I really loved: the Piece Chain/Table/etc. This resulted from a rabbit-hole that eventually landed at Niklaus Wirth and his Oberon OS, which was a text-based OS that made heavy use of this algorithm.
I implemented the algorithm in C, using part of a paper Wirth had written on Oberon, where he describes th algorithm and am currently writing an article on the algorithm.Links: code