Turns out the Oura Ring has an API! This is incredibly helpful because my dashboard’s BMR calculation is based on the previous day’s activity levels. This used to be entered manually every morning, but no longer! Now there’s a handy Python script that dumps the most recent day’s data to a SQLite table.
This was one of those “spend an hour to save a minute” situations, though. Sleep is always elusive after discovering cool new things. Anyhow, I learned stuff and there’s now a shiny new health insights section on the dashboard, so whatever. It passes the I Dig It™ test.
Note: Resting Heart is wrong, but that’s a tomorrow problem.
Fixed this and made it more pretty.
Because a $60 Shadow Box is Just Dumb
My brother grabbed a really neat birthday present - a copy of EGM (Electronic Gaming Monthly) from 1994 in pristine condition. It came wrapped in plastic with a cardboard backing and a certificate of authenticity. So of course, it needed to be displayed on my wall.
Looking around on Amazon, magazine frames were really expensive and generally had subpar reviews. I just couldn’t bring myself to spend that much anyway. So I quickly designed and printed some minimalist magazine holders that fit my tastes much better.
I’ve started printing little figurines of the characters they love. There’s nothing more heartwarming than seeing your kid’s eyes light up when they get a real-life, physical version of a character they care so much about.
This one’s from The Good Dinosaur, while Toothless and a bee from that terrible Minecraft movie are hiding in the background. This won’t be a weekly thing. Each one took over 10 hours to print, mostly due to constant filament changes.
My son needed a place to store all these, so he was encouraged to design something to solve his problem. No more than 30-45 minutes later, he had created a basic shelf in Tinkercad using a micrometer, Tinkercad, and his figurines for reference. We walked through the best way to print it, and now his new shelf is sitting proudly on his desk, showing off all his favorite characters.
He’s also very protective of his new shelf. He might need to add an intellectual property badge to his portfolio. Thankfully, we can have our lawyer family members walk him through a CC BY-NC-ND license.
3D Printer Upgrades
The Bambu AMS serves double duty by feeding the printer the right color at the right time and keeping all the filament dry and away from the outside air. Quite a bit of solutions have been designed by the community to prevent moisture damage to 3D printing filament, but ultimately having a sealed container with desiccant is the best first step. The following projects can be found on MakerWorld to address this issue:
So I printed some up, filled them with desiccant, and will hopefully watch how the moisture levels slowly decrease. Whether or not they have a significant effect over time remains to be seen.
Why Moisture Matters
If you’ve ever used old filament and have it easily snap apart on you, you’ll understand the pain of moisture damage. Filament, especially “hygroscopic” ones like PETG, can absorb water from the air. Not only does this cause filament to become brittle, but water can also boil in the hotend, leading to failed prints and potential clogs.
The desiccant spool holder above allows for lots of air circulation in a design that isn’t difficult to install or print. The AMS is designed to be airtight and spool-friendly, so these designs fit our needs without too much fartin' around. If you want to print some of these yourself, grab the following from Amazon to complete the project:
We’ll find out how much effect this has in time, but at least we have two quick and easy solutions to play around with.
Tell me what I need to know
Updated: 20250508 - Added crypto to the morning digest.
This week I wrote a bot that scrapes a popular stock news aggregating site, filters for stocks in my portfolio, then dumps the results into an RSS feed and a text file that maintains the last seven days worth of news.
Another script grabs the news entries, compares it to my current portfolio, and pings a self-hosted LLM (Llama3.3). The AI will churn on it for a bit, then spit a formatted message into Slack on what I should be concerned about for the day.
As you can see by the picture, it gives me a personalized “morning digest” when I have a cup of coffee in hand and am ready to look at market stuff.
Eventually this’ll get honed into a personalized stock trading bot. All that’s needed is a connection to a broker API (with guardrails). The messages from that point will be less news-focused, and more “I traded {ticker} and have earned/lost {value}.”
Automation is not about shoving more data in your face, but instead having the work done for you and seeing results.
I’d post the Python, but the news site doesn’t exactly know I’m scraping their site. However, if you would like to know how to utilize a self-hosted LLM like this, I’d be more than happy to chat. No n8n here. Just straight Python.
Communication is Critical
Until recently, I was relying on a combination of Joplin, TickTick, and internal company tools to organize my work. Joplin allows me to self-host markdown notes and syncs my thoughts across all devices. However, since TickTick is in someone else’s cloud, I keep sensitive data away from there. Thankfully, most of what I track in TickTick - like obfuscated links and generic numbers - ain’t gonna hurt nobody if it leaks.
I often spend more time thinking about automation and efficiency than the basics like eating or exercising. It’s not unusual for me to be in the middle of a workout when my brain suddenly shifts to a new automation idea, completely klling my focus.
For today’s accomplishment, I built some Python automation that pulls current project and bug status and sends them out weekly. Rather than maintaining running notes in both Joplin and TickTick, I now track high-level tasks exclusively in TickTick. This Python script now grabs my tasks and emails them to my manager and team every Friday afternoon. Joplin is still where long-term notes are stored. It just won’t be used in parallel with task management.
Working with TickTick’s official API wasn’t easy. It’s very rough around the edges and doesn’t work out of the box. After a couple of days deep-diving into the problem, I found success using ticktick-py (along with some forked fixes not yet merged into main). I briefly considered switching back to Todoist for its better maintained API, but TickTick is just built better for my needs.
Building small automations like this keeps me excited for tech and programming. If you’re working on similar workflow automation challenges, I’d love to hear them!
(Next) Halloween Decor
While working through some skills badges with my son, he came across an old project of mine - one I’d started but never finished. It caught his interest right away, and he asked if we could build it together.
I originally started it around Halloween, hoping to go all-out for the holidays and make them extra memorable for the kids. Unfortunately, I got really sick (again) and couldn’t even manage the basics, so many of these projects just sat on my workbench collecting dust.
The idea was to 3D print a bunch of fun, spooky-themed decorations - complete with lights, sound, and maybe even a bit of smoke. One of the pieces is this bubbling cauldron, designed with flickering LEDs to make it look like it’s brewing some crazy magic spells. Everything had been printed. All it needed was electronics and software. That’s where my son stepped in and helped finish the job.
There are a few more projects like this that had been put on hold, but now that there’s another little electrical engineer in the house, we’re ready to knock the rest out.
For the Coffee Addicted Wife
I’ve been busy building a lot of stuff lately, and this latest project is pretty cool. It’s a night light with a latte heart design. Still needs some coffee beans around the edges to finish it off, but it’s already looking solid. If you want to print one yourself, check out the great design on MakerWorld.
The blue lighting in the photo is just from ambient light around my workbench - nothing to do with the cup itself.
In the background, you might notice a Pac-Man ghost getting some repairs. Mr. Pac and two of his ghost friends had to be retired this week after years of loyal service. The heat from the 12V RGB rope lights finally caused them to warp and break in unrepairable ways.
However, the “green ghost” got an upgrade with a 5V RGB strip attached to a Sparkle Motion mini. This will make the colors match the original game better. Once Pac-Man is re-printed and the scripting is sorted out, I’ll update the Neon Signs post. The new setup should look even better than before.
Parenting Automation
We’ve had the kids on a point system for years now. They earn points by completing daily responsibilities, which they can use to “buy” rewards. So far, it’s mostly been Nintendo Switch games and PC accessories.
This all started with the Wake Up Light, originally designed to keep our oldest in bed while the rest of the house was asleep. He’d often wake up in the middle of the night and end up in the living room, scared of the dark and the silence. Later on, I modified the light to also function at bedtime. It turns red at 20:30, and if they’re not in bed by then, they don’t earn their point.
The system worked well, but they were constantly asking, “How many points do we have now?” Instead of keeping track in my head, I built a points site where they could check their status. The problem was that every morning, I had to remember whether they earned a point the night before and manually update the HTML. It was incredibly tedious, but at least I could answer their questions with a simple, “Go check the site.”
Now that they’re older and have more responsibilities - homework, cleaning their rooms, etc. - it was time for an upgrade. And ideally, one that removes me from the equation.
So, I built a site that tracks their tasks dynamically. Every day includes the usual chores like brushing teeth and changing for ninite, but there are also tasks that only show up on specific days. Bedtime is the most crucial. If they don’t check in by 20:31, no point for that day.
We also introduced a special star they can earn by going above and beyond. Right now, we’re focusing on areas they each need to improve - trying new foods for her, and reading more for him. Once they rack up enough special points, they get a much bigger reward than what the daily points provide.
As a bonus, we created a personalized bookmark page that gives them easy access to everything they use daily. They’ve set it as the homepage on their laptops and tablets, so they’re never far from the stuff they need!
The machine with a million uses
I’m in love with quick and easy solutions that make the little things in life easier.
For example, my GameBoy - with basically every game ever made on it - sits in a perfectly designed stand right between my desk and the bathroom. So when it’s time to take care of business, I’ve always got games handy. The problem is, I recently added an ebook reader to the rotation, and its current location of “wherever I last used it” just slows down my bathroom game plan.
Thankfully, I’ve learned enough to fix that.
The reader is a Kobo Clara BW (black & white), and it came with one of their cases. Neither Thingiverse nor MakerWorld had a stand that worked with a case on, so I tooled around in CAD and made my own. Now there’s a real, physical thing that used to only exist in my head.