Lessons from a toy project: Heimdall
After the kids are fast asleep, I often tinker around with toy projects. I have a long history going back to when I first started programming at 8 or so of starting and generally never finishing such projects, but they're inevitably useful for learning new things.
My kids, like many others, have been zooming into school from home for most of the last year. At the start of the lockdown, they were 6 and 7. We'd rarely allowed them to use a computer unattended before. All of a sudden, they were sitting at a desk for 6½ hours a day.
They quickly discovered things like YouTube, and online web based games. There were good things too (Michael became inordinately good at Chess), but we sometimes worried. We especially wanted to limit their access to the computers outside of school hours, because even after 6½ hours, we'd often find them continuing to use their computers for a couple more hours after school.
We set up an elaborate system involving Blocksite, and using Google WiFi to block internet access at certain times. However, this wasn't enough: Google WiFi's scheduling controls aren't fine-grained enough, we sometimes had to poke holes in Blocksite to let them use YouTube legitimately for school, and we found that they got around the Internet being unavailable by using Screen Recorder on the mac to save local copies of YouTube videos (which despite the terrible audio quality, I thought was quite irritatingly ingenious given their age).
What I really wanted was a way to lock them out of their computer entirely on a schedule. Then a remote control to temporarily unlock them from my cell phone. Finally, to be really cool, we could ideally hook it up to Google Calendar so that it would track when they were and weren't supposed to be using their computer for either school or after school classes.
So ridiculously late in the lockdown (as it turned out mere weeks before they went back to school in person), I hacked together a thing called Heimdall that was going to do some of this.
Heimdall is an unfinished lump, but through it I learned some interesting and perhaps useful things, continued my journey getting more experienced with Rust and modern web frameworks, and learned some interesting things about Mac OS that I never knew before. The next sequence of blog posts will be about the things I learned along the way. Anyway as a taste, here's what it looks like: