Public services
- tools.nafn.de - Pet-Platform for custom tools which suit my needs. Built using Elixir.
- reisen.nafn.de - German blog to write about experiences while traveling
- somar.nafn.de - Social Media Archive - My social media posts backed up in a dedicated static site. Posts are in German and English. Page size is about 10MB.
Not so public services
- b.nafn.de - Something that might eventually become a game
- s.nafn.de - An Uptime Kuma instance with a public status page to get notified if one of these services is not running anymore
Software projects
Global Cluster (2023)
Technologies: Elixir, Mnesia, FreeBSD, WireGuard
Code: github.com/maltekrupa/global_cluster
Website archive: archive.ph - archive.org
Out of interest in Elixir and the distributed nature of the BEAM I decided to build a globally distributed application providing a simple website and visitor counter.
From the projects “Why?” section:
The BEAM is said to be very robust and I wanted to see how complicated it gets when you try to build a clustered application. The default scenario would’ve been to run multiple high-performance servers close to each other so you can make use of a low-latency high-bandwith network. I instead choose the path of using virtual servers with very limited resources connected over a long distance.
clamav-rest (2019 - 2024)
Technologies: Python, Docker, Github Actions
Code: github.com/maltekrupa/clamav-rest
Container repository: github.com/maltekrupa/clamav-rest/pkgs
Some time ago I started a tiny side project which allows you to scan for viruses via an API. The project was used at a company I worked for in their SaaS product to scan user-uploaded files for viruses.
The project is very small but the constant maintenance work for all the parts in and around this tiny piece of software tought me a lot of respect for people working in open source projects.
Ansible roles for FreeBSD (2022 - ongoing)
Technologies: Ansible, YAML, FreeBSD
Repository: github.com/maltekrupa/ansible-roles-freebsd
Most - if not all - of the services I host are managed using ansible. I don’t particularly like ansible but it is boring and does the job.
University - Simulation of the Future (2015)
Technologies: JavaScript, Three.js
Repository: github.com/maltekrupa/sunsimulation
For a cross functional course called “Simulation der Zukunft” we had to create a simulation that depicts the movement of the sun and the shadow it casts on buildings. We did so by making use of three.js.
Our team consisted of two computer science students and two mechanial engineering students.
The project is still reachable: https://nafn.de/simdezuk/
Open Source contributions
Minor contributions
- https://github.com/exercism/elixir/pull/1257
- https://github.com/exercism/elixir/pull/1166
- https://github.com/superfly/docs/pull/212
- https://github.com/elixir-lang/elixir/pull/11705
- https://github.com/grafana/loki/pull/864
- https://github.com/sentinelsat/sentinelsat/pull/184
- https://github.com/kubernetes/autoscaler/pull/2014
- https://github.com/hashicorp/vault/pull/4128
- https://github.com/KennethWilke/PingdomLib/pull/33
Add precompiled NIFs for FreeBSD (2023)
Technologies: Elixir, FreeBSD
Pull request: github.com/elixir-explorer/explorer/pull/618
To make use of kino_explorer on a livebook instance running on FreeBSD I ran into an issue.
The change to fix this only touched three lines but it took me about 9 commits to get there. :) The elixir community was very helpful.
Testing live views with chromedriver fails on GitHub actions (2023)
Technologies: Elixir, GitHub actions
Issue: github.com/elixir-wallaby/wallaby/issues/699
After working on a tiny open source project for years I’m somewhat aware of the amount of work it takes to create a project in public. So, when I interact with people who do this work for all of us, I try to be respectful and make their lives as easy as possible.
At one point I ran into an issue (which was my fault) with Wallaby which is Elixir based and does: “Concurrent browser tests for your Elixir web apps”.
I tried to make sure that the issue takes away as little time as possible of their time but … should’ve just read the readme instead . :)
Add GitHub actions to run Continous Integration tests to chessboard.js (2023)
Technologies: Github actions, JavaScript
Pull request: github.com/oakmac/chessboard2/pull/42
While working on a chess based phoenix live
view app I came across
the chessboard.js library and an
issue where the maintainer
added the help-wanted
tag. Since I often work with GitHub Actions, I figured I
could help here.
Add documentation on lab.uberspace.de (2018 - 2019)
Technologies: Markdown
Uberspace is a hosting company. They provide an extensive collection of guides for their users. I created guides for Prometheus, Grafana and Alertmanager.