Exploring How Protobuf OneOfs Are Represented

2024-12-05 | #golang #protobug

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 pseudocode.

Continue reading 


Scraping VRT News Journaal with Puppeteer and Github Actions

2024-10-21 | #automation #github-actions #puppeteer #web-scraping

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 day there are two episodes, one for the 13h news and another for the 19h news.

Continue reading 


Protopath Problems in Go

2024-09-11 | #golang #grpc #protobuf

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 understand what was going on under the hood.

Continue reading 


Setting up DSMR Meter Readings via a Raspberry Pi

2024-05-23 | #dsmr #electricity #home-assistant #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.

Continue reading 


Is it Dry Yet?

2024-04-08 | #home-assistant #home-automation #smart-plugs

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 maybe even another load of laundry.

Continue reading 


Alerting on Process Completion

2024-04-04 | #home-assistant #shell-scripting #webhooks

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.

Continue reading 


Short Tale of Intel -> Apple Silicon Migration

2024-03-13 | #apple #shell-scripting

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 it for myself for the past day I must say that my old Intel MacBook can’t compare.

Continue reading 


Rust Macros (while Crafting Interpreters)

2023-12-31 | #interpreters #macros #programming-languages #rust

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 am using Rust as my language of choice for both endeavours.

Continue reading 


Love for Expression Languages

2023-12-26 | #programming-languages #rust

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 { last_integer = strconv.Atoi(last_number_in_words) } Or what feels clunkier but comes closer to an expression:

Continue reading 


Building Rant

2022-11-14 | #golang #humor #intepreters

Intro Sometime in mid to late 2021 (which is a period I’ve entirely made up because I don’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’d think. If you want your rant to have impact there needs to be just the right amount of !

Continue reading 