Here’s a neat little trick for those of you using Home Assistant while also driving a Volvo. To get your Volvo driving data (fuel level, battery state, …) into Home Assistant, there’s the excellent volvo2mqtt addon. One little annoyance is that every time it starts up, you will receive an e-mail from Volvo with a two-factor authentication code, which you then have to enter in…
So much things going on these days, it’s already shaping up to be a pretty crazy year, in the good sense. Pretty much as I predicted at the start of the year, though it must be said that 2020 didn’t exactly raise the bar much. Pretty easy to clear that hurdle. But that’s for another day. For now, here’s some interesting things I’ve been reading recently, in no…
And suddenly, before you notice it, the year has passed. And what a year it has been… It’s easy to brush 2020 off as a year to quickly forget, given the pandemic we suddenly find ourselves in. But I’d rather not. Looking back, despite everthing we took for granted but currently can no longer do, it’s been a year full of great experiences, new friends, new business,…
Running Linux and noticed that ng serve or ng test don’t observe changes and thus won’t reload/test automatically? This might be caused by simply having too many files in your tree, causing your system to hit an internal limit. This limit can be raised using the following command: echo 524288 | sudo tee /proc/sys/fs/inotify/max_user_watches You’ll have to do this after every…
I’ve been studying the Rust Programming Language over the holidays, here are some of my first impressions. My main interest in Rust is compiling performance-critical code to WebAssembly for usage in the browser. Rust is an ambitious language: it tries to eliminate broad categories of browser errors by detecting them during compilation. This requires more help from the programmer: reasoning…
I’ve really come to appreciate the elegance in the io abstractions in Go . The seemingly simple patterns of io.Reader and io.Writer open up a world of easily composable data pipelines. Need to add compression? Just wrap the Writer with a gzip.Writer , etc. But there are some subtleties to be aware off, that might bite you. Let’s have a look at the description of io.Reader.Read() :…
If you’ve ever used Go to decode the JSON response returned by a PHP API, you’ll probably have ran into this error: json: cannot unmarshal array into Go struct field Obj.field of type map[string]string The problem here being that PHP, rather than returning the empty object you expected ( {} ), returns an empty array ( [] ). Not completely unexpected: in PHP there’s no difference…
In his post Iconic consoles of the IBM System/360 mainframes, 55 years old , Ken Shirrif gives a beautiful overview of how IBM mainframes were operated. I particularly liked this bit: The second console function was “operator intervention”: program debugging tasks such as examining and modifying memory or registers and setting breakpoints. The Model 30 console controls below were used…
A couple of weeks ago our first-born daughter appeared into my life. All the clichés of what this miracle does with a man are very well true. Not only is this (quite literally) the start of a new life, it also gives you a pause to reflect on your own life. Around the same time I’ve finished working on the project that has occupied most of my time over the past years: helping a…
Yesterday, at the AWS User Group Belgium Meetup I presented a short lightning talk. It was a call to action for the fact that operations people should pay more attention to the developer experience. Annotated slides of the talk can be found here . This is an important subject to me: how can we make sure developers stay productive in the ever more complex environment of the cloud. Photo: Nils De…
Octave is a good choice for getting some serious computing done (it’s largely an open-source Matlab). But for interactive exploration, it feels a bit awkward. If you’ve done any data science work lately, you’ll undoubtedly have used the fantastic Jupyter . There’s a way to combine both and have the great UI of Jupyter with the processing core of Octave: I’ve built a…
Say you’re building a HTTP service in Go and suddenly it starts giving you these: http: multiple response.WriteHeader calls Horrible when that happens, right? It’s not always very easy to figure out why you get them and where they come from. Here’s a hack to help you trace them back to their origin: type debugLogger struct {} func ( d debugLogger ) Write ( p [] byte ) ( n int ,…
The Distrinet Research Group at KULeuven (where I studied!), recently asked me to speak about “Cloud Native” at one of their R&D Bites sessions. My talk covered Kubernetes, cloud automation and all the cool new things we can do in this brave new cloud native world. Annotated slides of the talk can be found here . Comments | More on rocketeer.be | @rubenv on Twitter
CoreOS Fest 2017 happened earlier this month in San Francisco. I had the joy of attending this conference. With a vendor-organized conference there’s always the risk of it being mostly a thinly-veiled marketing excercise, but this didn’t prove to be the case: there was a good community and open-source vibe to it, probably because CoreOS itself is for the most part an open-source…
Commercial open-source software is usually based around some kind of asymmetry: the owner possesses something that you as a user do not, allowing them to make money off of it. This asymmetry can take on a number of forms. One popular option is to have dual licensing: the product is open-source (usually GPL), but if you want to deviate from that, there’s the option to buy a commercial license.…