- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
173 lines
14 KiB
Plaintext
173 lines
14 KiB
Plaintext
Episode: 4075
|
|
Title: HPR4075: Making a Pomodoro Timer
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4075/hpr4075.mp3
|
|
Transcribed: 2025-10-25 19:17:49
|
|
|
|
---
|
|
|
|
This is Hacker Public Radio episode 4,075 for Friday the 15th of March 2024.
|
|
Today's show is entitled Making a Pomodoro Timer.
|
|
It is hosted by Norrist, and is about 20 minutes long.
|
|
It carries a clean flag.
|
|
The summary is Norrist uses the Pomodoro method to keep from getting fired.
|
|
Hello Hacker's.
|
|
I'm going to talk about making a Pomodoro Timer out of a circuit python express.
|
|
Talk about what it is and why I made it.
|
|
So I get distracted really easily when I'm supposed to be working in that was really
|
|
only made worse when a few years ago I started working at home.
|
|
That's been one of my biggest challenges with working from home is trying to manage
|
|
distractions.
|
|
So what will happen is if I'm trying to work on just kind of a single work dictated
|
|
task after 20-30 minutes of being sort of focused on one thing, my mind just starts drifting
|
|
and I start looking for anything just anything else that I can do or get distracted by.
|
|
So in order to keep my productivity up to a standard that is satisfactory for my employer,
|
|
I have to look for ways to make myself stay on task and it's kind of forcing myself
|
|
through it.
|
|
It works but it's not fun and I can stay on task but I don't really do great work.
|
|
So I decided that instead of fighting my natural urge to only work for 20 or 30 minutes
|
|
to sort of embrace it.
|
|
So instead of treating it as a limitation, use that and sort of build a method of working
|
|
around that and force myself to take short breaks.
|
|
So work for your period and take a short break for a period.
|
|
So the method I decided to try is called the Pomodoro method.
|
|
I have a link to the Wikipedia article about it but it sort of was a quick summary.
|
|
It was developed in the 80s by a developer named Francesco Cerrillo and he used a kitchen
|
|
timer to do it which is a really good way, honestly, to do it.
|
|
But it's just like I described, you work for an interval typically 25 or so minutes and
|
|
then you take short breaks.
|
|
Some people use it because it helps them work better and mostly I use it because it
|
|
helps them work better but also I can stay on task easier if I know there's a break
|
|
coming up.
|
|
So it improves my quality of work but also my mind can stay focused if I know in a finite
|
|
amount of time I'll let myself do something else.
|
|
So when I started kind of digging in and how I wanted to do the Pomodoro technique
|
|
and I've tried it a few times before, the hard thing about it is sticking to it.
|
|
So there's plenty of apps regardless of what kind of phone you have or desktop apps or
|
|
phone apps.
|
|
There's a lot of things out there and you can just use any timer or just fine.
|
|
But like I said, it's the hard part about it is the discipline it's to use it.
|
|
I wanted something on my desk that I could look at and it would actually kind of get my
|
|
attention and remind me that I was supposed to be doing this thing.
|
|
So I decided to make myself a timer using the circuit playground express.
|
|
So my, I don't know if it was my last episode or maybe two episodes ago I talked about using
|
|
a Raspberry Pi Pico to type some passwords for me kind of using the Pi Pico as a password
|
|
manager for websites that don't let you copy and paste.
|
|
And I mentioned that my first attempt at doing that was using this playground express and
|
|
I wanted to switch to a Pi because I wanted to do something else with the playground express
|
|
and the Pomodoro timer was something else that I wanted to use it for.
|
|
So just a quick refresher if you didn't listen to it or if you forgot the playground express
|
|
is a microcontroller it's made by the Adafruit company it's kind of a unique circular shape
|
|
you know instead of a rectangle or square like a lot of microcontrollers it's a circle
|
|
around the circle there's LEDs and then kind of in the middle it's kind of a whole bunch
|
|
of input devices it's got a switch and a couple of buttons and it can do temperature sensing
|
|
but like I said the main reason I wanted to use it is because it has 10 LEDs in a circle
|
|
and they're multicolor LEDs you can program that you can program the LEDs and which ones
|
|
are on or off and what color they'll be and it runs circuit to Python which has a ton
|
|
of libraries including libraries that make it really easy to use the pixels called neopixels
|
|
the neopixels on the circuit playground express. So the other thing I wanted to do while I was
|
|
working on this is about once a year or so I'll get a bug in my brain to try test driven
|
|
development again and I've done a few times I like doing it it's been official if you're
|
|
not in a crazy rush and it does slow if you you know overall if you're doing a giant project
|
|
I don't think test driven development will slow you down but if you're doing something you know
|
|
that's super quick that you can do in an hour test driven development probably may not be the
|
|
right thing to do if you're if you're you know totally focused on it's sort of a quick primer on
|
|
what test driven development is it's before you write any actual code to do you know what you're
|
|
want to do you write a test and you so you write a test you run the test it should fail
|
|
and then you write the simplest code that will get that test to pass and then once you're certain
|
|
that the test is passing and you can go back and refactor the code to make it better and then
|
|
while you're doing it while you're making it better you can keep running the test and make sure
|
|
the test continue to pass then when you when you get that done you you move on so you ride a
|
|
little chunk of code well you ride a test then you ride a little chunk of code that satisfies the
|
|
test you can fix the code up once once you got it done then you move on to the next piece so a few
|
|
advantages reasons that I like to do test driven development is it it kind of forces you to
|
|
write your code in small functions and that makes that always makes it easier when you come back
|
|
to the projects later and there's either something you need to change or you forgot how it works
|
|
if you can look at anytime you can look at small discrete sections of code at least for me I'll say
|
|
you but at least for me whenever I can look at small sections it's easier for me to put together
|
|
what the actual code what the code is doing it's harder to get lost in code that's in a small
|
|
separate chunks one little piece does one thing another advantage is that if you decide that you've
|
|
got a small section that needs to be rewritten or there's something you want to do or a buggy
|
|
fix it's easier to rewrite if you if you when it's chunked up your code is divided up into
|
|
discrete sections you won't if there's something you've got to fix you've only got to fix that
|
|
one little section so it makes it easier to test and it gives you confidence whenever you
|
|
are making changes to the code you know the whole time you're making changes you're running
|
|
your test suite and if you've got you know kind of a what's in your head as a major rewrite to do
|
|
or let's say you you know there's a function that you totally want to change how that function works
|
|
you know that if you wrote good tests it doesn't matter if you completely start from scratch and
|
|
start over and write this bit of code totally differently as long as the test pass you know the
|
|
application overall will work okay so I said I mentioned that it's going to be writing the code
|
|
for the pulmonary rotimer and circuit python in the way circuit python works is that you put a file
|
|
when you plug the board in the single board computer in it pops up like it's a usb thumb
|
|
drive and then you put a file on there on the circuit or on the micro controller called code
|
|
code.py and whenever the micro controller boots that's what it executes it looks for a file called
|
|
code.py and runs that file so a lot of the code that you write for a micro controller will only run
|
|
on that micro controller and what what I mean by that is if you've got code to turn an LED on
|
|
or LED off or check a temperature sensor or something like that that code is not going to work
|
|
on your laptop because your laptop doesn't have those hardware devices so what I wanted to do
|
|
when I was writing this is I wanted to put the smallest amount of code possible in code.py
|
|
and then write kind of a separate library that I could test on my laptop so I took
|
|
as much code as I could and put it in a separate file called palmadoro.py and then when I was writing
|
|
the code and testing the code I could do all that work on a laptop just kind of separate. This
|
|
way I didn't have to do I could develop without the sbc I could write some code test the code
|
|
without having to have the sbc right there. So if you look at code.py some stuff that we'll have
|
|
in there and links in the show notes by the way all this stuff is checked in to get out but I'll
|
|
definitely have this stuff in the show notes but in code.py like I said it's got the functions that
|
|
require the hardware to be there to run so the stuff in code.py I didn't necessarily write
|
|
test for but you know just some things that are actually in there's one there's a bunch of there's
|
|
some variables and constants to find at the top of the file including the break break minutes
|
|
and work minutes so remember the palmadoro technique you work for a period and take a break for
|
|
a period so you can set you can set those values I mentioned in the Wikipedia article it says 25
|
|
minutes and five minutes I've actually found that after I'm working for about 20 minutes I start
|
|
glancing around and trying to figure out how much time is left so I figured I may as well just
|
|
I just set my timer to 20 minutes because after after I'm working for 20 minutes if I'm
|
|
or if my brain is kind of clicking around looking for a break I may as well it's best just
|
|
stop then so I set my work period for 20 minutes break period for five minutes
|
|
and then also in the code.py this is where the code that's tracking the time
|
|
you know how long has it been since you started a work period or a break period
|
|
and then the way it knows how many LEDs to light up is it'll just take the how many minutes has
|
|
it has it been and then divide that by the number of LEDs and then that will give you how many
|
|
LEDs should be turned on then I'll talk in a second about how the timer actually works
|
|
so I was pretty impressed with the circuit python and the single board computers that they could
|
|
even keep up with time now they don't do time like our computer does you know they don't have a
|
|
battery in a clock or ntp or anything like that but they can they can count you know they do know
|
|
how much time has passed so when I coding counting time on the microcontrollers is a little bit
|
|
different than but it works and it's it's not too hard and you can see examples of how I do it
|
|
but a little bit about how the actual timer works and how how I use it
|
|
so like I said it's got circuit python express it's got 10 LEDs and two buttons that's primarily
|
|
what I'm using while I'm working or while it's counting down a work period I'll use I'll turn
|
|
all their LEDs white and then there'll be a green LED for every sort of work segment that I've
|
|
been doing so you know if I if I've got it set for 20 minutes and you know there's 10 LEDs
|
|
then every two minutes another LED will come on so it'll you know one you know be all white
|
|
with one green and then two green and three greens and if it's counting down correctly by the time it
|
|
gets to all the greens lit that's that's the end of your work period and then for bright time I do
|
|
something similar except I use blue instead of green so it'll you know I'm gonna start a break
|
|
we'll just you know turn all the LEDs white and then as the work as the break period progresses
|
|
it'll turn more and more LEDs blue like I said there's two buttons on the circuit playground express
|
|
so I've got one button you press and it starts a work period and the other button you press and it
|
|
will start a break period and when you when the periods are finished when the work period is finished
|
|
and the break period is finished I wanted it to get my attention in case I'm distracted
|
|
so it will it will blink a few times to let me know that a period has just finished
|
|
and then while it's idle instead of if it's not counting down actively counting down a work period
|
|
or a break period what I'll do is I'll turn all the LEDs off and the then the except for
|
|
the LED that's closest to the button to start work that will be lit green to remind me that
|
|
you know if I want to start work I'll press that button and the same for the button to start a
|
|
break period it will be the LED that's closest to that button will be lit blue and then anytime while
|
|
it's running if you're in the middle of a break period and you want to start work you can just
|
|
press the button it'll detect that and kind of abandon the break period and start a work period
|
|
so I'll have a few links at the bottom of the show notes I'll link to my get lab page where I'm
|
|
got this code written only to the circuit playground or circuit python page there was another
|
|
episode recently about circuit python and my answering computer lab temperatures I thought that
|
|
was very interesting if this is something you are even remotely interested in single board
|
|
computers and or python I'd encourage you to take a look I said it in the last episode I did
|
|
about passwords these raspberry poppecos are a whopping $4 so it doesn't take a lot of investment to
|
|
get started and you don't if you just want a blinking LED that's all you need if you want to you know
|
|
some microcontroller projects you might have to get headers and breadboards and stuff like that
|
|
but you can definitely get started with circuit python and raspberry poppeco so I think that's it
|
|
until I've got to talk about I hope you guys are excited about circuit python and microcontrollers
|
|
and I look forward to some feedback on the episode and I will see you guys next time
|
|
you have been listening to hacker public radio at hacker public radio does work today show was
|
|
contributed by a hbrlisnet like yourself if you ever thought of recording podcast and click on
|
|
our contribute link to find out how easy it leads hosting for hbr has been kindly provided by
|
|
monstros.com the internet archive and our sims.net unless otherwise stated today's show is released
|
|
under a creative commons attribution 4.0 international license
|