RSSAmplifier

Blog

Badger Badger Badger Badger

Recent content on Badger Badger Badger Badger

badgerbadgerbadgerbadger.devRSS feed ↗26 posts

Latest posts

Gophercon EU 2025 // Berlin

The Gophercon EU Berlin 2025 talks are now available on youtube, which means it is time for me to rewatch them and ponder again about the things I learned, the things that made me laugh, and the things that reignited my love for Go. This was my second in-person Gophercon, the last one being Gophercon EU 2022, also in Berlin, and I think I enjoyed this one more. I get the feeling that the…

Getting an RTSP Stream from a Mac Camera

I’ve been working on a certain project which I am not ready to share yet, but which involves reading from RTP streams. Before I ordered myself some RTSP compatible cameras, I needed a quick way to get an RTP stream to test out the general idea. The only cameras I have on hand are my iPhone, my MacBook and an old IP camera from which I’ve so far failed to extract an RTP stream. I…

Building a Golang Protoc Plugin to SQL Scan+Value Enums

At Sentiance (where I work as a Software Engineer), we use gRPC and protobuf to communicate between services in a typesafe manner. Here’s a recent problem I faced. I had several enums in protobuf files that I wanted to save as database columns. But instead of their integer representation, I wanted to store their string representations. Let’s say this is the enum I wanted to store.…

Alexa, when did baby last pee?

People have complicated feelings about AI Coding assistants. I won’t wade into that debate. For me, personally, while I enjoy learning about and playing with software, I also enjoy achieving end-goals. For this particular project, Claude has been a boon. The reality of being the father to a nearly one-year old is that I no longer get a lot of time for my hobbies. But with Claude, I was able…

Exploring How Protobuf OneOfs Are Represented

This is a short exploration of how Protobuf3 OneOf fields are represented using Golang as our exploration medium. OneOf types, aka Tagged Unions are data structures that are used to hold one of a finite list of distinct types. A variable of a tagged union type can hold a value of one of several types defined for that tagged union type. This might be easier to understand with an example via…

Scraping VRT News Journaal with Puppeteer and Github Actions

My girlfriend works in the field of language and education research and sometimes makes lessons for the online Dutch language learning platform Nedbox . The lessons are often based around real world events and having a way to _gather interesting real world events is invaluable. She asked me for help listing news events from the show VRT NWS journaal on VRT Max . Their page looks like this. Each…

Protopath Problems in Go

Failed to compute set of methods to expose - Symbol not found This cryptic error has reared its ugly head a few times in the past when working with grpc in Golang . I can’t remember how I’ve solved it before. Probably with some combination of stackoverflow answers and random github gists with advice that I have now forgotten. When it happened most recently, I decided to try to actually…

Setting up DSMR Meter Readings via a Raspberry Pi

The internet is probably full of tutorials on how to do this right, but I had to struggle a bit to figure it out for myself. My Pi randomly crashed, the other day, and I’m having to do some of the setup again and having done this for the first time months ago (and having now mostly forgotten what I did), I decided I should blog about it as I retread my steps and recreate my setup. Aside :…

Is it Dry Yet?

Clarification : This is literally about my laundry. I am not being metaphorical. I am not talking about my feelings or my secrets. I am talking about my clothes. Intro Our washing machine is a Samsung something-something that sends me a notification on the SmartThings app when it completes a wash cycle. This is useful since we almost always need to follow up a washing cycle with a drying one and…

Alerting on Process Completion

Most of my technical endeavours have something to do with enabling me to work as little as possible for as much reward as possible. And yet, paradoxically, in a pursuit of doing less I often end up doing more. I have this idea that in the long term this will eventually lead me to doing much less. I’m not sure if that’s true, but it’s a nice thought and keeps me going. Plus, I…

Short Tale of Intel -> Apple Silicon Migration

Note : I will be using the terms amd64 , x86_64 , and Intel interchangeably in this post. They all refer to the same architecture. Similarly arm64 and Apple Silicon are used interchangeably. I recently got handed a new MacBook at work. It’s a MacBook Pro with an M3 chip and my first encounter with Apple Silicon. I have been hearing many good things about Apple Silicon and having experienced…

Rust Macros (while Crafting Interpreters)

I have never used Rust extensively. The few times I have tried, have ended up in me giving up due to unwinnable fights against the borrow-checker . By the recommendation of a friend I am giving this another shot. I’m making my way through Robert Nystrom’s Crafting Interpreters as well as doing 2023’s Advent of Code . I am late to the latter but I am enjoying myself regardless. I…

Love for Expression Languages

I love expression languages. In Rust I can do this: let last_integer = { if last_number_which_list == 0 { word_to_integer( & last_number_in_words) } else { last_number_in_words.parse:: < i32 > () } }; While in Go, to achieve the same result I would have to do something like this: last_integer := 0 if last_number_which_list == 0 { last_integer = word_to_integer ( last_number_in_words ) } else {…

Building Rant

Intro Sometime in mid to late 2021 (which is a period I&rsquo;ve entirely made up because I don&rsquo;t actually remember when any of this happened), I needed to rant on my company Slack. Something had happened to ruin my day and I needed to get my feelings out. But ranting takes more effort than you&rsquo;d think. If you want your rant to have impact there needs to be just the right amount of ! s…

Yet Another mTLS Tutorial

I&rsquo;ve come across many mTLS tutorials on the internet but none of them took me through the process, end-to-end, in a satisfying fashion. I hope to do in this tutorial is to start with the ideas of TLS and mTLS and conclude with an implementation you could reasonably productionize. Although we&rsquo;ll be using a Golang server as our backend and Traefik as our reverse proxy, these ideas…

Generating the Mandelbrot Set

Update The shared github repo for the end product of this post is in version 2 state. @lovasoa kindly contributed a pull request which massivley improved performance and allowed the rendering to happen at full screen with much better speed and taught me many things in the process. I&rsquo;ve added these improvements as an updated section at the end of the post. Many thanks @lovasoa . The first…

My ES Lint and Why

I recently updated my company&rsquo;s main NodeJS repository to include formatting via prettier-eslint and linting via eslint . My colleague asked me to explain my choice of rules since it&rsquo;s tedious to go through each and every rule and figure out why it was chosen and I thought it was worth getting a blog post out of it, so here we go. This is the eslint config I plan to use: { 'env': {…

Dealing With Errors in Go Projects

Dealing With Errors in Go Projects Note: In this post I talk both about the purely technical reasons for doing certain things and some practices that have made debugging production systems easier for me. I&rsquo;m still fairly new to Go and still learning so if you find any issues with my approach or have a better way to approach the problem, please leave a comment. I come from a NodeJS background…

Template Literals, All the Way!

Today, while at work, I had to turn a single-quoted string into a template literal because mid-way through the string I realized I had to put in an apostrophe. This has happened often enough that I want to stop thinking in this dual single-quoted/template-literal mode and just go template-literal all the time. Now before I say anything more I&rsquo;d like to clarify that I&rsquo;m working with…

Semico what?

Recently, at my workplace, a colleague felt a rustle up his jimmies due to our lack of semicolon usage in our NodeJs repos. The number of projects without semicolons were in the tens and there really wasn&rsquo;t a good way to introduce semicolons in them even had the team agreed to do so. But that got me thinking. Do we really need semi-colons? Why have them or not have them? What are the…

Bookmarklets Made My Life Easier

Update I&rsquo;ve put the bookmarklets that I mostly frequently use in every day life on this repository . Being a Developer is Fun One of the advantages of browsing the web as a web-developer vs. as a layman is the fact that you get to do some pretty cool stuff to make your life easier. For example, I remember once being on a website where a certain action kept failing with no visible errors. I’d…

Styleguides: Hapi Vs. Airbnb

This post was inspired by my writing of another post which you can read [here]({{ site.baseurl }}{% post_url 2016-12-01-letter-casing-in-names-of-imported-nodejs-modules %}). On that one I talk about letter casing conventions in the names of imported NodeJS modules. Not the catchiest of titles but if it&rsquo;s something that interests you, have a look. I&rsquo;d been a strict adherer of the…

Letter Casing in Names of Imported NodeJS Modules

Disclaimer: This isn&rsquo;t a tutorial, guide, or holy writ. This is just how I do things and I&rsquo;d like to share why it makes sense to me. If it resonates with you, follow it. If it doesn&rsquo;t, follow whatever makes sense to you and your team. Styleguides are something I take very seriously. To me a programmer who has great style and writes clean, readable code is worth a lot more than…

Working with SFML::Textures — The White Box Problem

So I started using textures in my code, and it’s not been a fun time, mainly because I was missing some key understanding of how c++ keeps things in scope. Sadly I still don’t understand how what I did solve things, but I guess I’ll find out with more research. Anyway, I’ll document what I did so that anyone trying this out can see exactly what I did wrong. Or rather which steps were probably…

First Foray into C++ with SFML

Game-programming has always been one of my interests ever since I coded a simple game of Pong! back in college using Processing . But my first job ended up being in web-development and from then on that’s all I’ve been doing. It is easier to get a foot in through the door in web-development than it is in game-development (I don’t have a formal Computer Science education), and hence, two years into…

About

Hi! Thanks for visiting my little corner of the internet. I&rsquo;m Shaun, a software engineer, improv player and father of one based out of Belgium. I dabble in a myriad of things, but I&rsquo;m most passionate about building software toys, improv and writing.