Automatically restarting an IKEA TRÅDFRI gateway

So I got myself a set of connected light bulbs for my living room. Based on review, I decided to go with the IKEA models, as they are pretty inexpensive and provide good quality lighting. I also decided to have a gateway, which allows you to control your lamps from your LAN and provide additional functions like lamp groups. The gateway also offers an API so I figured it could be a fun thing to hack with.

»

Test your external dependencies

In the unit testing crowd your often hear the mantra that you should not test your external dependencies with unit tests and that they are only for integration testing. In a way this makes sense: the developper of the library probably took some time to test the library on their own, so why redo the work? However, I like to write a few unit tests when I am integrating a new library into a project. Most of the time I even commit them to the source repository and add them to the CI build.

»

Measuring program performance with perf(1)

In my new internship I am working on optimizing some software. But before starting making changes to the source code, I need to make sure that I am optimizing important parts. Imagine for a moment that I spend days making one part of a program go 10x faster (!!), only to realize later that it is responsible for 1% of the total run time. How much would I have saved? The answer is not much: the new run time would be 99% + (1% / 10) = 99.1% of the original run time. In other words, only 1.01 times faster. Not so impressing now, is it?

»

How to read a datasheet ?

So, since you started your journey into hardware making one word has been thrown around a lot: “datasheet”. You are not totally sure of what it is, but judging by how many times it is referenced by other engineers, you thought it must be very important. And you were right! Let me introduce you to this famous document.

»

33rd Chaos Communication Congress

I spent the time between Christmas and New Year in Hamburg, Germany, at the Chaos Communication Congress, 33rd edition (33C3 in short). 33C3’s motto was “Works for Me”, a phrase that everyone working in IT/engineering will hear at some point during their career. It quickly became a meme in the congress, showing up every time a presenter had a laptop issue for example.

»

Global Game Jam

As last year, I took part in the local Global Game Jam chapter. As last year, we had about 48 hours to create a video game about a specific theme, revealed at the beginning of the jam. I took part with almost the same team as last year (kudos to them):

»

A value chain approach to understanding Open Source software

Open Source is a way of developing products – usually software ones, although this is changing – in an open and public way. To qualify as “proper” Open Source, a product must grant several key freedoms to its customers: The user must be free to use the product, they must be free to copy the product, they must be free to study and modify the product. This approach to software distribution started in the 1970s. At first it only applied to research projects produced in universities, but in the 1990s it became used commercially, especially as backend (i.e. not user-facing) systems. In recent years, Open Source software left the backend and is now very present even in customer facing products.

»

Using Dnsmasq for VM testing

Today I was trying a new configuration option for Gitlab and I wanted to make sure I did not make any mistakes before trying the site live. Therefore I decided to deploy the configuration in a virtual machine and then copy it on the live server.

»

Using GCC's Stack Smashing Protector on microcontrollers

Writing your code in C means manual memory management means a lot of bug types: Double free, use after free, stack overflow, etc. Those bugs can be especially hard to debug because they will cause erratic behavior but might not trigger an error condition immediately.

»

10/10, will do again

Last weekend I took part in the global game jam chapter organized in my home town. For those who don’t know the concepts of a game jam, it is a type of events where team gathers to make a game in 48h. The global in the name means that it simultaneously takes place all over the world, both remotely and with physical gatherings.

»