Drew this up with tl;draw
Where I started is wanting to leverage temporal to do something interesting, and tackling a real (if small) problem I have: forgetting I have a load of laundry running.
The requirements were:
- Easy to start (otherwise I wouldn’t actually use it)
- Ability to push notifications to me, repeatedly (otherwise I might ignore them)
What I settled on:
- Slack for notifications
- I am using the Slack App as a hacky way to avoid having to build a notification mechanism. I know slack notifications will make it to my phone, and I can control whether I get dinged or not, so went with that instead of thinking too hard about other ways to buzz my phone.
- This also meant that I could use the Slack SDK’s for small bits of feedback to the app.
- Also, using socket-mode meant I didn’t have to have a public endpoint on my infra, and could be behind a NAT, simplifying some things with network security.
Things I learned along the way:
- Signals vs. async completed activities
- Temporal SDK in python, how signals work
- this thread clarifying my confusion on
wait_condition
- this thread clarifying my confusion on
- Temporal SDK in python, how signals work
- Slack Blocks
- Temporal dev deployment
- minikube
- I went for a GKE cluster for this, which was again totally overkill, but I wanted to get more familiar with kubernetes. You can get a single node cluster for ~$15 a month (I think it’s like $22/mo w/ a NAT). There’s way cheaper ways to run something this simple, but here we are.