Erik Wahlberger Software Developer

About Me

A software developer from Sweden, with a passion for adventures, technology, photography and music production. Started to learn software development as a hobby during 2008. Ever since, I have developed this skill by using self-developed software to solve everyday problems, especially related to self-hosting services, which is something that I do. Examples of such projects can be found below.

Build

Experienced with build systems such as GNU Make, CMake and bitbake (Yocto Project). Also experienced with CI/CD solutions such as Jenkins and Github Actions, as well as IaC and CaC tools such as Terraform and Ansible.

Code

Experienced in C (Linux kernel driver development), .NET Framework (C#), Python, Golang, Rust.

Tools

Experienced with industry standard tools such as git, Docker, Kubernetes (FluxCD for GitOps) and Bash scripting.

Featured Projects

Minecraft server authentication through Discord

Used Technologies

  • Minecraft server - Velocity proxy, PaperMC
  • Java - Minecraft plugin
  • PostgreSQL
  • Rust - Discord bot

Project Summary

The purpose for this project was to solve an issue that I was facing when attempting to host a private Minecraft server for me and my closest friends. The problem I faced was: How do I keep the server private, while hosting it openly on the internet? During my research, I could not find a good solution for ensuring that only players that are part of a specific Discord community could play on the Minecraft server. Minecraft itself only supports white/blacklisting of IP addresses, which is not a very user-friendly solution, and it only solves the problem if every player has a static, public IP address, which I cannot ensure.

See the demo video for my solution to this problem.

GitHub links

Minecraft Auth Plugin GitHub repo Discord Bot GitHub repo

Minimal Bash logging framework

Used Technologies

  • Bash
  • Bats - Test Framework
  • ShellCheck - Linting
  • GitHub Actions - CI
  • Unix Utilities
log.sh

Project Summary

The purpose of this project was to solve a simple but irritating issue when developing bash scripts: Proper logging mechanisms. Colored output, supporting multiple logging levels, and not interfering with output printed to stdout.

Without a proper logging framework, it is difficult to catch errors from the output itself in a bash script. Instead you have to solely rely on exit codes, which is OK for scripts that execute in an automated environment, but less ideal for scripts that are executed in bash shells by the user itself. It is also unnecessarily difficult to implement debug printouts in Bash using "echo" statements. log.sh is an attempt to solve these issues.

GitHub links

log.sh GitHub repo

Terminal multiplexer session manager

Used Technologies

  • Bash
  • Bats - Test Framework
  • ShellCheck - Linting
  • GitHub Actions - CI
  • Unix Utilities

Project Summary

The purpose of this project was to quickly and efficiently be able to open new tmux sessions with pre-defined layouts, where each session correspond to a "project". A "project" can be a git repository, a user-specified path, or a scratchpad with one blank tmux pane.

Tmux is a great terminal multiplexer and I find myself using it quite a bit for all the work I do in a shell environment. Even though tmux has built-in support for creating new sessions and switching between them, doing so is not as convenient as using an external tool built only for this purpose. jorp.sh is my personal tmux session manager which is bound to a key-combination inside tmux in order to quickly switch between, create new, and remove old, tmux sessions.

See the demo video for my solution to this problem.

GitHub links

jorp.sh GitHub repo