Projects

Stuff I made. This is mostly about software, but might also include some TTRPG related things, from time to time.
Last updated:

I tend to host my code on multiple places, typically Sourcehut and my Forgejo server. Usually, if it involves a community, it is hosted or mirrored on Github as well, for visibility.

Vuejs//Berlin Homepage

I host the monthly Vuejs//Berlin meetup since 2016 and created this homepage to publish details about the upcoming and former meetups. It also hosts a newsletter archive.

The Vuejs//Berlin meetup is Berlins community around the Vue Framework and its ecosystem. We meet monthly every second Tuesday. Doors open at 19:00, talks usually start around 19:30. Subscribe to the event calendar to never miss an update!

Source code: github

🔗250kB Club 🔗

250kB Club Screenshot

I am the creator of 250kB Club, which should actually be called 256kb.club, but that thought reached me only after I got the domain.

Already in 2016, we crossed the line, where the typical website is bigger than the game Doom. I think, we can do better! The 250kB Club is a collection of web pages that focus on performance, efficiency and accessibility. Originally inspired by 1mb.club, I created the 250kB Club, because I don’t think 1MB is small enough. Not long ago, we would have waited 10 or more minutes to load this amount of data and not everyone in the world is a lucky high-speed internet user.

Source code: github, sourcehut, selfhosted

🔗Plaintext Casa 🔗

Plaintext Casa Logo

A decentralized personal hub and social network that uses plain text files over HTTP. With rich about sections and multi-page feeds, it’s a full blogging platform that allows to write short posts, long essays or a complete homepage, all in plain text.

Source code: github, selfhosted

🔗vue-shovel (formerly DIG!)

vue-shovel Screenshot

I once embarked on the journey to build a game similar to Terraria with Vuejs, just to see if it is possible. It should use HTML and CSS as much as possible and so a blocky world was created out of HTML DIV elements with CSS transitions and a lot of visual tricks to make it smooth. I once even talked about it in front of some dozens of people.

Source code and slides: github, selfhosted, slides

🔗Starsy 🔗

Starsy Screenshot

For a hard sci-fi campaign setting, I once planned, I created this star system generator. I wanted to recreate the style of some image I found on reddit, a while ago.

Source code: github, selfhosted

🔗Stellar Neighbourhood 🔗

Stellar Neighbourhood Screenshot

For that same campaign setting, it would be good to have a realistic, interactive map of the surrounding star systems. So I build one, with real astronomic data from the SIMBAD Astronomical Database. It includes a script that creates a stripped down JSON version of the SIMBAD CSV export, which can then be used in the web application.

🔗RPG-Cards-ng 🔗

RPG-Cards-ng Screenshot

I wanted to be able to create good looking cards for RPG sessions but didn’t find a good tool that makes designing them simple and intuitive. So I created my own tool.

Source code: github, selfhosted

🔗Projects for myself

Just for the sake of completeness and to motivate myself to keep track of it, here are some private projects around my own setup.

🔗Homepage Overhaul

With lots of work comes lots of opportunity for productive procrastination

tl;dr:

I use Zola to statically render my homepage after a change. Additionally, I fetch bookmarks from a self-hosted Linkding instance. Before I switched back to Zola, I used zine-ssg, but I was tired of keeping up with the breaking changes, so I guess, it is still in a too early stage for me.

The long version:

Not too long ago, .ing TLDs became available, that allowed me to finally have my full name as a “cool” domain name: koehr.ing. Other domains I have are nkoehring.de (boring), koehr.in (confusing) and k0r.in (nerdy). koehri.ng wouldn’t be possible due to domain registars policies or pricing (Nigeria used to have the british model, like allowing only net.ng, com.ng, and so on. Later they allowed more, but the price would be pretty high).

Why am I writing all this? Because the new domain name made me think about my homepage as a professional. I wanted to have something, that showcases my skills while not being the usual boring homepage. This is how the interactive homepage experiment began; a terminal like website, written from scratch. Having this, I now also needed to change my old homepage to somehow feature my new shiny experiment. But my old homepage is white and not very responsive; two very good reasons (for me), to change it. So I also started writing a completely new homepage, using vss. Pretty soon I realised, it is by far not mature enough for my needs, so I started building workarounds to suit my needs, so I don’t get stuck in the rabbit hole of choosing frameworks over finishing the page. My plan was, to finish the page and its content and then, when there is time, move it on top of something more sophisticated, like good ol’ Zola, which is what I’m using again after some time with zine-ssg.

🔗New Server

I found a pretty cheap dedicated server with tons of space and quite some CPU power, compared to cheap virtual servers, so I needed to move everything I hosted on a VServer before. That was not a simple task, unfortunately, as I tend to overthink and wanted to use the change to make everything better (and some things just different). This move included a switch from Docker and systemd services to podman and lingering users. This way, no root enabled service is involved in running any outside-facing services. This website and everything under the koehr.ing domain runs on the new server. Thanks to Forgejo and forgejo-runner it even rebuilds and deploys everything on git push!

🔗learned.today

Quite a while (aka way too long) ago, I bought the domain learned.today and thought about some idea around a Today I learned page or service, where people just share short snippets of things they just learned, similar to my TIL page. I never got to implementing it though. I wrote it down here as a motivation for myself, to finally work on it.