Projects


My playground, and passion project. Learnt something new at work and want to try it out? I test it here. It's gone through 2 web frameworks, 3 hosts and countless "what if I rewrote it like that" dating back to 2021.

While it will never be "done", I've now built it in a way where it should be able to maintain itself for when I do eventually lose interest in this.

Most recently, after a number of platform improvements I started working on a proper mobile app as well! I'm currently looking for testers on Android, please do sign up on pokecompanion.com/app/invite.

Frontend: Svelte Kit deployed to Cloudflare. React Native via Expo soon 👀

Backend: Shared ExpressJS API on a VPS. Pocketbase acting as a user database, and Redis for caching to the PokeAPI.


I love my work, I love my family, and I love getting involved in complex problems. To make sure I maintain a healthy work-life balance, I like to track my hours. Be that for time that I spend at work, on specific projects, or boring things like chores.

Making a website made sense - I can tie data to auth, share records with my work account, and access this from any device should I forget to sign off.

This project is incredibly boring, but I use it every day. I maintain this in the background and I'm slowly product-ising it so that it could become a proper SaaS that others might want to use. But for now, it does what I need it to do and it's mine. That makes me happy.

NextJS App router project, hosted on a VPS with Pocketbase.


I like to listen to TTS reddit videos before going to bed.

My subscriptions tab gets flooded in the evenings, so Youtube does not have a nice way to just surface these videos to me. Despite "reddit" being a daily search for me, Youtube will try recommend other content to me, causing frustration.

To avoid this daily hide-and-seek before going to sleep, I've put this page together to just show the latest videos uploaded by a handful of channels and deeplink into the Youtube app.

Search API calls to youtube are quite expensive, so I cache the API responses quite aggressively.

Built with Svelte, deployed to Cloudflare.


Homelab

I have an old computer and a Raspberry Pi set up as a homelab and as a dev environment for my VPS deployed apps.

Some services like Immich have since been moved to a Hetzner VPS.


Infrastructure as Code

Github

While I've previously been able to rely on the free tiers of different SaaS Platforms, I wanted to own the infrastructure for Pokécompanion and deal with all of its associated challenges along the way.

Moving all of my existing setup into Terraform (later ditched for OpenTofu) was a fair bit of effort and I didn't want to over-engineer a proper secret storing mechanism so it's a shame I can't share my setup. However, I wanted to create a module for a Pocketbase instance on EC2 which I did rewrite and publish in the open.

This has been by far the best investment of my time. I later moved my homelab Ansible playbooks into this repo as well after my Raspberry Pi SD Cards got corrupted, saving me hours in later reconstructing my setup.

The last time I updated this section, this has now grown to managing 12 Projects via a private Github repo.


Not being able to quickly and easily share links between my laptop and my phone was really annoying.

There are a ton of other tools out there that are better and more sophisticated. Alas, unless I can easily find those (such as by having a memorable URL), they might as well not exist.

Appending any URL to the domain will generate a scannable QR code to that page.


Deterministic, "random" image generator using jdenticon. Will use the route i.e. avatar.helbling.uk/test123 as the seed.

Originally created as a Microservice to support Pokécompanion. Deployed to a single Cloudflare worker.


Favicon for helbling.uk

helbling.uk

Github

This site, built with NextJS, MDX and Tailwind deployed to Cloudflare.


Little tool to strip images of their metadata. If I'm accepting user's images, or upload my own to other platforms, then I'd like those images to contain as little information as possible so if I, or the platform, were to get compromised, the impact would be minimal.

Vibecoded in 10min with 1 prompt, deployed to Cloudflare workers.


Quick POC using ffmpeg WASM to compare its performance against my "toMP4" macOS quick action.

Should not seriously be used as its performance is terrible, but it runs entirely client-side.

Built with SvelteKit and deployed to Cloudflare


My first proper vibe coded project, I barely ever opened a code editor for this.

I had to buy a new car, and I don't know much about them. Getting tired of notebooks, excel, and looking at a car's MOT history for a fifth time without understanding any of it got boring.

The idea was that I could input a reg and pull the MOT history, run it through an LLM for analysis and keep general notes for things like vehicle tax, the insurance price difference etc.

It felt like it worked really well. Unfortunately, I still didn't know what a broken timing chain sounded like, or a slipping clutch felt like. So while I did the best I could on paper, I ended up making a poor decision due to this confirmation bias.

I may take the site down soon as it has failed to serve its purpose, even though it's in read-only mode so I can try to stretch that Vercel free tier a bit further.



Crafts

Queer inside

Intel-type sticker with a pride rainbow along the top and the world 'Pride' on a transgender coloured gradient background

Inspired by LeafItGreen on etsy I wanted to practice making my own version and print stickers on a Cricut.

The original and .svg files are available for download here.