I've taken a short break from my language, debugger, and editor to program my digital chess board (Chessnut air). I've been trying to learn/get better at chess for a while now and thought a digital chess board would be a great way to practice away from the computer. It is, except 1) bots don't play like people 2) the apps for the board suck. If fixed the first by using
https://maiachess.com/ a chess bot trained on Lichess data to play like real people (it's impressive). I also had to whip up a custom openings book. And 2 by writing my own software for the board. The bluetooth protocol was surprisingly simple (and luckily someone already reverse engineered it for me).
I think the most fun part about all of this has been building an interface in the chess board itself, rather than in an app. My program has no ui other than the chess board. Want to play a game as black, setup up the pieces, and pick up the black king. The game will start when you place it down. Setup a similar setup for choosing a unique starting position. The UI has changed everything for me. I use it now way more since I don't have to mess with an annoying app on my phone.