Skip to main content
I'm streaming on Twitch right now. You should stop by. Let's go!

Recent posts

  • Animated CSS "border"


    I had an idea for an animated "border" of sorts, and the urge to implement it in pure CSS (as much as my feeble skills are capable) stuck with me all day. I decided to take a crack at it on-stream last night. I managed to do a halfway decent job, if I do say so myself, though it requires …

  • A chat bot in your browser


    I've been tinkering with tmi.js (Twitch's messaging interface) in node as of late, and it occurred to me: the library works in the browser, as well! With this in my back pocket, I went off and built a tiny little chat bot as an experiment. The bot responds with a random "thank you" emote …

  • My daughter deserves better


    I'll be honest–I don't want to write this post, and for a multitude of reasons. Namely, I don't want to write this post because writing this post crystallizes the fact that this post needs to be written. I also feel just so wholly inadequate to put text on a screen regarding such an important …

  • Track change events for YouTube with MutationObserver


    Have you ever wanted to react to events taking place on a web page, but they aren't capital-e Events that you can catch and handle? I was in this situation recently, where I wanted to grab the current video and chapter titles to display on my Twitch stream. YouTube isn't going to provide you with …

  • Rate limiting with Flask-SocketIO


    I've been transitioning the API for a Flask project I'm working on away from REST and toward Socket.IO. In doing so, I came to the abrupt and depressing realization that the rate-limiter I had been using for the REST endpoints (flask-limiter) was unable to apply to Socket.IO endpoints. The author …

  • Aethersprite: a Discord bot framework


    For some months, I had been tinkering with the discord.py library and slowly building up a bot for use in Nexus Clash faction servers. The more I added to it, the more I began to realize that what I was really building was a bot framework, and that framework just so happened to have some commands …