What is it all about?
Well about me,
Martijn Casteel,
as easy as that!
A lone writer, writing about some thrilling encounters mainly in IT. First exciting point to elaborate;
Who am I?
Quoted from a strange movie with Jackie Chan. Well I'm not that old (yet) and I do like programming.
I'm an IT guy, I've
studied
Computer Science and Technical Artificial Intelligence. Currently I'm employed by the NS as a (very technical) product owner. I do a lot of fun stuff with the software we built on the train, as a product owner I work on a vision and occasionally write some scripts or review a pr.
Some of my favorite hobby projects are on this blog. I'm the most proud of
launchpad,
very educational project. Also messing around with
requestAnimationFrame
game some fun times for
pong.
Laying some tracks
is bigger than a simple hobby project; it currently holds more than 1,000 members and is still being maintained by a group of cool people.
I like watching movies among many other hobbies you may, or may not, find out reading my blog!
Pottery Throwdown
30 April 2024
During a holiday in the UK we encountered a great show called Pottery Throwdown. Which is a great show about pottery, since then we have done a workshop to do our pottery. Pottery Throwdown is free to watch on channel 4 in the UK, unfortunately I cannot watch it at home.
Flustered by this, as any IT guy would do, I created something to fix this issue. Using Ansible I am now able to set up an on-the-fly vpn server in the UK to connect to from home. Using Wireguard I can act if I’m in Londen.
The project started small. I have done Ansible before so using a little bit of commandline locally I could set up a small virtual server, a droplet. This VM has the latest Ubuntu version and the ssh credentials it needs to connect to. Ansible will wait for the server to be up and running and then will log in and install software like Wireguard.
After the wireguard is installed and configured with my keys I am able to connect with the vpn and watch my tv show. To reduce costs I have a create a simple webpage to create and destroy this server. It takes a few minutes to build up which is fine. This webpage has an api written in Go which I wanted to learn as well.
So the webpage can create a server and let Ansible install all the required software and configuration for Wireguard. I wanted to have some more feedback, therefore I added a simple go script that runs on the server and uses the Wireguard cli to retrieve usage information. This script reports this information to the webpage mentioned earlier. The webpage is updated with this information using websockets giving a live view of the bandwidth used on the vpn server.
This project is far from perfect but I did like to do some programming and learn a little bit of Go. And I can now happily finish the season of Pottery throwdown!
Launchpad
14 June 2023
For the last two years I have been working on Launchpad (trademark pending). This is a simple device with just 7 buttons that would make me the best Microsoft Teams user there is! A device that can easily mute my microphone with the press of a button, or even holding it to talk.

It was an awesome way to learn more about hardware, flashing microcontrollers, and learning embedded programming. I spend more money and time than I would admit, but I liked it a lot. Unfortunately, I have not achieved my goal. Microsoft Teams requires a certification to really create a device that manipulate Teams without being in focus.
I started of by creating schematics. The opensource schematics of Arduino are very helpful. After like half a year of checking the schematics, the bill of materials, and the crystal circuit I ordered a manufacturer to create and populate five of my Launchpad 1.0 boards. There was a small problem where I added the wrong usb-c port to the bom. So that probably set me back another half year. After ruining 2 boards myself I found someone with better equipment and a steadier hand. He managed to solder all the pins of the usb-c port. Thanks!

Then the programming began, first I started with the Arduino IDE. The Atmega32u4 is a very common microcontroller in the Arduino Pro Micro and Leonardo. What a great feeling to see the led blinking. But I wanted more, I have been using Arduino quite often and I liked to be more in control. Also, I needed it since Arduino doesn’t provide USB-HID control out of the box other than a mouse or a keyboard.
So I set up VSCode to be able to make use of avr-gcc. A simple Makefile made my life a lot easier. Using an example of one other guy, some great explanation videos of Ben Eater on USB keyboards, and reading through lots of documentation of USB.org. I managed to get ahead with small steps. Eventually, the board was able to increase and decrease my output volume and mute it. As mentioned, the board is not able to mute the microphone on Teams without having focus.
Tailwindcss
22 February 2022
It’s been a while for me to write a blog post. Last weekend I tried out something new, creating a simple single page website with tailwindcss. I started off with finding a simple html generator, something like haml for npm. I couldn’t find one that worked for me, so I decided to stick with plain html. I’ll get back to it.
Offcourse tailwind has a cli for me to generate a css file. I started with using the --watch option and developing went quickly keeping the docs nearby. When I tried to use the build command I omitted the input argument and some stuff like google fonts and font awesome were gone. It took me some time to figure out but I added the input argument, unlike demonstrated on their website.
For the html framework I looked at Nuxt, Next, and Gatsby but all are more than I looked for. I just wanted a simple html generator to write a page short and simple. More or less like middleman on ruby for nodejs. I didn’t like the idea of creating websites that require client-side javascript to render a simple view. Isn’t that what html is built for? I thought about creating my own framework for nodejs but I didn’t want to spend too much time on it. If you have any suggestions for a better html framework I’d love to hear them!