Disclosure: PCBWay sponsored the PCBs for this project. The Graveyard Box 🪦 Last year (2024), I started buying up broken Pokemon games on eBay. The idea was simple: find games that didn’t work, get them working again, and sell them back to players. The graveyard box of unfixable cartridges I learned some basic repair techniques, but ended up with 114 cartridges that I couldn’t fix. My…
The finished boxes, ready to send out Background I decided to make something fun for my teammates to hack on during a team offsite in France. Although I didn’t end up bringing these overseas, I still wanted to detail how they were made, what was involved. Each puzzle box has a couple of games, using some of my favorite sensors for the Arduino. Game 1 I stole this game from this arcade…
Why switch from Arduino to ESP-IDF? If you’re like me, you love all the cheap, WiFi-y goodness of Espressif MCU’s, but hate the complexity of the Espressif IoT Development Framework (esp-idf). So you decide to go with the Arduino framework, and all is well and there is much rejoicing. For a time. Enter the watchdog. The idea is to reap long-running, unresponsive tasks. If a thread…
I made some stuff in 2021 Here’s a breakdown of projects and outcomes. Your Diagram TitleHardware → Projects started: 7Projects started → Alive: 6Projects started → Dead: 4Alive → Not ready yet: 4Software → Projects started: 3Alive → Open-sourced: 2Cat water bowl filler → Hardware: 1Giant vending machine → Hardware: 1Grafana e-paper → Hardware: 1Statlord → Hardware: 1Thermal printer →…
Background Last year, I started running Traefik full-time in my homelab. Coming from nginx, I’m happy that its not nginx HTTP/2 support out-the-box decent troubleshooting dashboard plug-n-play with k3s, prometheus But it’s not all roses. I’ve lost a few evenings (and a couple Saturdays) troubleshooting my Traefik setup. Hopefully these gotchas will saves someone, somewhere a few…
Kids Having a kid was easily the best part of 2020. There’s so much stuff to do. Prepare for, learn. At times it was overwhelming, but when my son was born, it easily became one of the greatest joys of my life. He taught me some stuff too, like how badly I had prepared for fatherhood. For the 9 months leading up to his birth, I had spent all my time reading up about babies.
It takes a little finaggling to get a 10 year old server to run the latest Debian with RAID 5 or 6. The Perc 6/i RAID controller needs the MBR on the beginning 100GB of the virtual drive, or partition layout. If it’s not, and you let the Debian partition installation wizard suggest a layout, it’ll fail on first boot. Every time I got it wrong, it dropped me into GRUB rescue mode with…
Goal Monitor your newborn’s heart rate, O2 levels and more in Grafana! Note: some of the graphs (particulate, temp, etc are from a Pimoroni Enviro+, not the sock) Parts Required server: don’t need anything extravagant – a Raspberry Pi 4 can easily handle the python scraper, grafana and postgres. I used the default, 32-bit Raspbian OS with the Desktop environment. baby: put sock…
ESP32, Sharp Memory LCD, 6DOF and trackball Confession: I have always used a library/wrapper for working with components. At work, high-level stuff like Go, Python, REST/HTTP is the norm. Writing C, low level communications is not. So when my shiny Pimoroni trackball arrived without an Arduino library: the horror. When I don’t find an Arduino library for a component, it usually turns into a…
What I quickly wrote an app that lets users paint on an HTML5 canvas together. Puppeteer is used to simulate headless browser users (instead of direct API calls). If you’ve read any of my gRPC with Typescript and Go posts, you’ll be familiar with the tech – it’s an RPC service with two methods ...service DrawService { rpc SendDrawing(Drawing) returns (None); rpc…
Code gets built. Tested, Shipped. Scaled. You’ve probably inherited, or wrote products that kept these processes humming happily along. But writing all of it from the ground up? What tools would you use? Given a clean canvas, what would you do differently? Below is my journey creating a CI/CD workflow using primarily Kubernetes and Gitlab. I’ll be simulating two “teams”…
In my personal life, I like collecting watches. Usually I go after cheap quartz watches. The weirder the better. How else would you let others know your extremeness and athleticism? I’ve always wondered what it would be like to build my own wrist watch… start simple, maybe work my way up to a smart watch? Enjoy Attempt 1 The first microcontroller I chose was the ATtiny85. Praised for…
In part 2 we implemented the service. Let’s write a Typescript client to complete the app. Geting the Typescript setup out of the way $ tsc --init $ npm i --save grpc-web-client $ npm i --save-dev webpack@4 webpack-cli@4 awesome-typescript-loader typescript @types/google-protobuf Quick webpack config for transpilation to Javascript const webpack = require('webpack'); module.exports =…
In part 1 we: defined a gRPC service (LogService) generated the server and client with protoc stubbed the gRPC server implementation in Go Getting logs from Kubernetes Right now, our GetLogs method is not very interesting. func (service) GetLogs(_ context.Context, request *api.GetLogsRequest) (*api.GetLogsResponse, error) { panic('implement me') } Let’s import the lovely Kubernetes client-go…
Last year I had the opportunity to join DevOps, and with it, a whole new class of challenges that Ops faces. And I’m glad I did. But if I could have given myself some knowledge to prepare for DevOps a year ago, this would be it. You will (still) grow as a Developer in DevOps During the interview, my first question was can I still code. And the short answer to that is yes.
WARNING All of this was written during version 6.0 of the Kubernetes client. The information here may be out of date: ymmv Picking the right Kubernetes client version Kubernetes provides an excellent compatibility matrix to help target the right client version for communicating with the cluster. Don’t worry about picking a minor version higher than your current Kubernetes API minor version;…
One of the best tools for diagnosing failed Kubernetes deployments is with the log viewer, kubectl logs. But direct kubectl logs may be restricted to Ops if your organization doesn’t allow engineers access to the Kubernetes cluster. Or, our end users might not be engineers at all, but still want something to send along with a report. Either way it’s a convenient excuse to build a…
Looking for a developer in the U.S. that won’t ghost you? I’d love to help. I’m available for medium-term engagements (~15/hrs a week). Resume 10 years developing products at agile companies Python / Go / Javascript / Typescript DevOps included: Terraform, AWS, GCP more Contact Drop me a line at nathan@de1ux.com