my website at https://anirudh.fi
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

blog: push-based productivity

+88 -3
+76
pages/blog/push.md
··· 1 + --- 2 + template: 3 + slug: push 4 + title: Push-based productivity 5 + subtitle: Getting told when to get things done 6 + date: 2025-01-03 7 + draft: false 8 + --- 9 + 10 + Way back in 2021, I wrote about [my productivity endeavours][prod], 11 + which were -- in summary -- me writing a list of todos in a notebook. 12 + I still carry these around to quickly note stuff down or to summarise my 13 + pursuits of the week every Sunday evening. 14 + 15 + [prod]: /blog/bujo/ 16 + ![notebooks](https://cdn.icyphox.sh/fit?url=http://files.garage.koti.lan/IMG_2558.jpg&width=1000&height=2000) 17 + 18 + However, I quickly realised a glaring issue with this system: it needed 19 + *me* to constantly check the notebook to learn of things to be done. For 20 + me, this failed constantly: 21 + 22 + * I didn't check it often enough and missed time-critical tasks 23 + * I checked it but I *forgot* because I was distracted 24 + 25 + As an example, every so often during the day -- I'd note down a task to 26 + say, "buy oat milk". Easy enough, I can do that on my way home from 27 + work. There's a supermarket at my nearest metro station so popping by 28 + there before walking home should be a trivial task. 29 + 30 + Hardly so. I either never checked my todo list on the metro ride home, 31 + or embarrassingly, I'd check and then proceed to immediately forget. The 32 + sheer annoyance when I'd realize my lapse upon getting home and taking 33 + out my notebook... 34 + 35 + This is a problem inherent to any "pull-based" system -- one where the 36 + user/client/whatever must "pull" (or poll!) for information at 37 + intervals. Especially given that said information has an arbitrary TTL 38 + in my head, and the poll interval is not fixed, there are several of 39 + these blind spots where tasks get missed. 40 + 41 + And so, my new push-based system -- one that I've been using to great effect 42 + for the better part of last year -- came about. At its core, it's 43 + incredibly simple: my phone's Reminders app. I use Apple Reminders but 44 + really, this works with any similar app. 45 + 46 + Nothing revolutionary, I know. I'm just rather proud of how easy it was 47 + to get setup and see positive results. I have mine setup against my 48 + [self-hosted][sh] Radicale server. Separate lists to organize tasks and 49 + a homescreen widget to quickly check off completed ones. 50 + 51 + [sh]: /uses#homelab-k3s-cluster 52 + 53 + <div class="row"> 54 + <img src="https://cdn.icyphox.sh/reminders.jpg" style="width: 240px;" alt="reminders"> 55 + <img src="https://cdn.icyphox.sh/hss.jpg" style="width: 240px;" alt="home screen widget"> 56 + </div> 57 + 58 + For quick input, I've been in love with [Remind Me 59 + Faster](https://apps.apple.com/us/app/remind-me-faster/id985555908). I'm 60 + now able to rapidly create tasks, assign it a time[^1] and optionally, a 61 + location. The latter, I find, is the killer feature. Being reminded of a 62 + task *when* you're arriving/leaving (RMF lets you choose this) a 63 + location is very powerful. 64 + 65 + [^1]: Apple Calendar in iOS 18 onward now shows your reminders alongside 66 + other events. Very handy for scheduling. 67 + 68 + <div class="row"> 69 + <img src="https://cdn.icyphox.sh/IMG_2561.PNG" style="width: 240px;" alt="remind me faster"> 70 + <img src="https://cdn.icyphox.sh/IMG_2563.jpg" style="width: 240px;" alt="setting time and location"> 71 + </div> 72 + 73 + I now get reminded to "buy oat milk" when I'm arriving at the metro 74 + station's shopping center.[^2] And to post this once I get home. 75 + 76 + [^2]: _kauppakeskus_ in Finnish.
+10 -1
static/style.css
··· 180 180 .row { 181 181 display: flex; 182 182 flex-wrap: wrap; 183 - padding: 0 0.5rem 0.5rem 0; 183 + align-items: center; 184 + padding: 1rem 0.5rem 0.5rem 1rem; 185 + 186 + img { 187 + object-fit: cover; 188 + }; 184 189 } 185 190 186 191 .image-grid { ··· 205 210 margin-bottom: 5px; 206 211 color: var(--gray); 207 212 line-height: 1.5; 213 + } 214 + 215 + .title { 216 + padding: 30px 0 10px 0; 208 217 } 209 218 210 219 .muted {
+2 -2
templates/text.html
··· 21 21 22 22 23 23 {{ if .Meta.draft }} 24 - <h1>{{ index .Meta "title" }} <span class="draft">[draft]</span></h1> 24 + <h1 class="title">{{ index .Meta "title" }} <span class="draft">[draft]</span></h1> 25 25 {{ else }} 26 - <h1>{{ index .Meta "title" }}</h1> 26 + <h1 class="title">{{ index .Meta "title" }}</h1> 27 27 {{ end }} 28 28 <h2 class="subtitle">{{ index .Meta "subtitle" }}</h2> 29 29 {{ .Body }}