How I made my keyboard flash red when the build breaks on CI π¨

Hi, my name is Tina! I am a Full Stack Software Developer and Tech Lead from Canada. ππ»ββοΈ
Search for a command to run...

Hi, my name is Tina! I am a Full Stack Software Developer and Tech Lead from Canada. ππ»ββοΈ
No comments yet. Be the first to comment.
Have you ever installed a package by using go install <some-package> and wondered how to uninstall it? Go is really great in that respect. Go packages are a single binary and theyβre installed based on how your Go tooling is set up. Provided we have ...

Overview This is the 3rd article in a series of posts about working with Open API to create generated API clients and documentation websites. In the 1st post we went over what we can do with Open API spec files, e.g. generate API clients and documen...

Overview This article is the 2nd in a series of blog posts that discuss using Open API to help with API documentation and API client code generation. In the previous article, we went over how we can generate documentation and API clients using existi...

Overview This article starts a series of Open API-related blog posts. OpenAPI, previously known as Swagger (a name still in use today for many of its tools), is a suite of tools that generate documentation and networking clients for various programmi...

You've probably already seen the scary alert (that's possibly why you're here), but in case you haven't, it looks something like this: NewAppIJustDownloaded pasted from your clipboard Sometimes it h

I recently got a Steelseries keyboard. Other than that this keyboard was one of the only RGB keyboards I could find that was supported on Mac, it had an extra draw, which was that it was programmable.
Steelseries offers their GameSense SDK which has a REST API you can use. This sounded simple enough, so I decided to create a dream for myself:
As a developer, when I push up code that breaks the build on CI, I want my keyboard to flash red
So now I had a new side project to waste my time on!
Here's a picture of the keyboard display showing a message for the build status. This one is for successful builds.

Here's a picture of the display when builds fail.

The function keys also flash either red or green, which you can sort of see in the demo video below.
This app leverages Codeship as the continuous integration service. I like Codeship for this purpose because it allows you to configure a web hook for the project and doesn't require you to modify any Yaml files in your source code to get this to work, you can just set it up in the dashboard without making a scene in your team's code. I initially looked at Github Actions and then Circle CI but neither of those had a setup as quick and easy as Codeship's.
I also used ngrok to create a local tunnel so that Codeship had a public URL to hit.
When you install the Engine software, a server is created on your machine. Steelseries keyboards listen for events on this port, e.g. localhost:<port>.
Steelseries also offers official SDK's for game engines like Unity. There was an unofficial Node.js client, which I tried first, but unfortunately it didn't run and threw a bunch of errors when implementing the example code, so I needed to build my own solution.
If this sounds interesting, watch this demo to see it in action.
If you like what you see, get the code on Github. The readme includes a tutorial on how you can set this up for yourself. Feel free to fork it. If you add any cool features, I'd love to see them!