There’s a phenomenon my friends and I often joke about in Korea. As midterms or finals approach, inevitably students will pile into cafes for “study”. After long hours of socializing interspersed with occasionally reading and re-reading their textbooks and lecture slides, they will slink home, exhausted. Exhausted from hours of unproductive labor. They claim to have studied for eight hours, but they’ve probably done less work than they would have on their own in one hour if left to their own devices.
I am no stranger to this. I used to do it with classmates, and the only time when we got anything done was when we were working problem sets. As you get older, your study path diverges from even your closest peers. The work you do becomes less and less formulaic and requires more and more concentration. Different problems require different tools.
One of those tools is the “work cycle”. It’s also known by the Italian word for “tomato”, but apparently the trademark holder for that gets angry any time someone uses the word “pomodoro” in any context, with hordes of lawyers ready to pounce on anyone who dares use such a word in an App Store or in somewhere indexable by Google. Sebastian Marshall, founder of Ultraworking calls them “work cycles”, and his implementation is good enough that I recommend it to friends. He’s got a whole thing where he and his team coach you through breaking your work up into bite-sized chunks so you can get in a win early on.
Ten minutes of planning and break time. Thirty minutes of focused work.
Repeat until you’re done with the tasks for the day.
It’s not a tool for making the best work day you’ve ever had better. It’s a tool for making the worst work day you’ve ever had at least better than average. Interestingly enough, it’s also a great social tool for helping you time your breaks.
The thing is, most of my friends aren’t on his video calls. How do you keep people going on a “work cycle” clock if you’re in a social environment?
You need a shared visual indicator.
Here’s blinkycycles.gif from my static directory as an image you can see in Hugo:
First, it’s a countdown clock in your taskbar. It tells you how many minutes and seconds you have left until the current activity (planning or working) is done.
Second, it triggers a bright LED. There’s this lovely little LED that you can plug in to your computer through (sadly) USB-A called the blink(1).
Third, if you are using Yabai, the tiling window manager for macOS, it will change the colors of the frame around your windows.
Blinky Cycles is a global work cycle timer in that it’s the same for everyone in the entire world. If you’re on Discord with your friends and all using the same xBar plugin, you’ll be on the same work timer. And if you’re at a cafe, you’ve got a bright red LED to indicate that people should keep quiet and focus on their stuff. It starts to pulsate different colors before it ticks over to green to remind people to get up, stretch, use the restroom, find a snack, and chat about plans for dinner, the weekend, or how to clear driveways of the neighborhood elderly with a flamethrower.
Blinky Cycles works best with the blink(1) LED device and Yabai on macOS. Even if you don’t have the blink(1) device, if you don’t have the blink(1) drivers installed in the same Python environment, it will fail. I write Python at work, but I don’t write a lot of conditional inclusion stuff. If a Python wiz throws a PR my way to fix this, we’ll all learn something.
GitHub issues may or may not get answered. This is just a fun personal project and I am trying to get in the habit of pushing code out into the public sphere. I may come up with a variation on the CRAPL license for kicks that makes this sort of thing explicit. If you want to try guided Work Cycles, head over to Ultraworking where you can get a template and best practices video.