Olle Langwagen

Projects

A selection of projects I've built, mostly to learn something new.

Docker Monitor with ESP8266

A physical dashboard that monitors server status in real-time via an OLED screen, web panel, and a custom-developed REST API.

A Flask backend reads container status from the Docker socket and exposes it as a REST API. An ESP8266 with an OLED screen polls that API and displays it, using page-buffered rendering to work around the device's limited RAM.

C++ESP8266Python (Flask)DockerREST APIArduinoJsonIoT

Key features

  • · Docker API Integration
  • · Real-time Monitoring
  • · Memory-optimized Rendering
  • · NTP Time Sync
  • · Web Dashboard
Docker Monitor with ESP8266

Homelab

A three-node Proxmox cluster at home that I use to run my own services and to learn different Linux distributions.

Each server runs VMs with Debian, Ubuntu and Rocky Linux, which host Docker containers, DNS-level ad blocking and monitoring. Everything is reachable remotely through Tailscale. The hardest problem so far: one night Uptime Kuma alerted me that a node had frozen completely, and it stayed down until I could hard-reset it. It was the second time it happened. After the first, I had turned off network offloading (TSO/GSO), but that wasn't enough. After ruling out a backup job, a failing disk and ZFS memory usage, I traced it in the kernel logs to the built-in Intel I219-V network card, which has a known hardware bug that makes it hang. That stalled the VMs' network traffic, locked up memory management on the host, and the kernel ended up killing a VM. I disabled Energy Efficient Ethernet, set the host to reboot automatically if it ever locks up again, and installed a dedicated Intel network card.

ProxmoxLinuxDockersystemdTailscale

Pokémon battle simulator

A CLI-based program that simulates the classic Pokémon battle from Pokémon Red/Blue/Yellow, where the user can watch the battle unfold in the terminal.

Three random Pokémon are picked for each side, then the battle plays out turn by turn in the terminal, with color-coded output for damage, status effects, and type advantages.

PythonColoramaOOPCLIJust_Playback

Key features

  • · Turn-based Combat
  • · Type Effectiveness
  • · Status Effects
  • · Color-coded Output
  • · Music
Pokémon battle simulator

eCommerce webshop

An e-commerce webshop built with vanilla JavaScript, HTML, and CSS with a focus on user experience and responsive design. It's a frontend design project only, with no backend.

JavascriptHTMLCSSLocalStorageUI/UX

Trivia Game in Python

A simple trivia game in Python made with customTkinter where the user can test their knowledge in different categories and difficulty levels.

Questions are pulled from CSV files across categories like History, Technology, and Music, with three difficulty levels. Built with customTkinter for a more modern GUI than standard Tkinter.

PythoncustomTkinterGUICSV

Key features

  • · Multiple Categories
  • · Difficulty Levels
  • · Score Tracking
  • · CSV Data Storage
Trivia Game in Python