This week note covers the week of 23rd February–1st March.
Life#
This week has been a slow one. Not much to update on this time. Life is moving at usual pace; home-work-walk-build-watch-read.
My sleep has improved but I’m still not waking up fully refreshed; at least I am able to drive now. I kept sneaking in walks here and there, even spent some time on a treadmill because the summer is here in Bangalore. I finished February with 10225 daily average steps, which is a tad bit better than January. With the heat increasing, I’ll have to spend more time on the treadmill.
We got all the ACs serviced just in time. A and my wife made popsicles twice this week with fruit juices, which turned out absolutely delectable. Looking forward to more of those this summer. Holi is around the corner, and this year A is old enough to play with water. Got to get her a pichkari.
Personal Projects#
This week I worked on feed-repeat, the small tool I made to repeat the posts from my favourite feeds into new feeds so that I can reread them forever. I’m planning to open source it so I added a few features that I felt were missing, and refactored it a bit. In particular:
- I added support for conditional feed fetches.
- I added a parameter to tune the entry selection probability.
I think it is in a good shape now for opening. I’ve been running it for myself for three months and it has been performing as expected.
Rest of my free time was spent on an urgent issue. Turns out RAM is very expensive now, causing my VPS provider Hetzner to increase their prices. My VPS that hosts my website and a few more services mostly sits idle, so it doesn’t make sense for me to pay so much for it. The only reason I was using an 8GB server was because my website generator was too memory hungry. I wrote it in a time when memory was cheap but compute was expensive. So I cached the hell out of everything. This worked well for 5 or so years, but now that I have over a hundred posts and memory is scarce, I decided to optimize.
I moved many caches from memory to on-disk and trimmed down things that were cached. I batched some build targets together. I also reduced the build concurrency. Over 16 commits, I brought down the memory use from 7GB to 2GB. It can still be improved but this is good enough now that I can rescale the VPS to 4GB RAM, and save some bucks.
Interestingly, this also cut down the run time by about 40%, even when running with 8 threads instead of 50. Turns out, if you reduce memory use, the program will run faster because the garbage collector does not have to work as hard. Here are details for the curious:
Before run stats157,185,195,096 bytes allocated in the heap
87,212,373,968 bytes copied during GC
2,097,087,272 bytes maximum residency (60 sample(s))
213,954,456 bytes maximum slop
7071 MiB total memory in use (0 MiB lost due to fragmentation)
Tot time (elapsed) Avg pause Max pause
Gen 0 106 colls, 106 par 301.063s 5.451s 0.0514s 0.2627s
Gen 1 60 colls, 59 par 78.511s 24.207s 0.4035s 1.4609s
Parallel GC work balance: 93.98% (serial 0%, perfect 100%)
TASKS: 216 (1 bound, 215 peak workers (215 total), using -N50)
SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)
INIT time 0.004s ( 0.003s elapsed)
MUT time 0.000s (120.139s elapsed)
GC time 379.574s ( 29.659s elapsed)
EXIT time 0.181s ( 0.015s elapsed)
Total time 200.424s (149.816s elapsed)
Alloc rate 0 bytes per MUT second
Productivity -89.5% of total user, 80.2% of total elapsed
After run stats
86,561,960,248 bytes allocated in the heap
13,599,700,352 bytes copied during GC
885,401,912 bytes maximum residency (45 sample(s))
71,571,144 bytes maximum slop
2015 MiB total memory in use (0 MiB lost due to fragmentation)
Tot time (elapsed) Avg pause Max pause
Gen 0 323 colls, 323 par 10.476s 3.928s 0.0122s 0.0667s
Gen 1 45 colls, 44 par 8.457s 2.668s 0.0593s 0.2832s
Parallel GC work balance: 82.49% (serial 0%, perfect 100%)
TASKS: 34 (1 bound, 33 peak workers (33 total), using -N8)
SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)
INIT time 0.003s ( 0.003s elapsed)
MUT time 60.034s ( 82.092s elapsed)
GC time 18.933s ( 6.596s elapsed)
EXIT time 0.032s ( 0.002s elapsed)
Total time 79.003s ( 88.693s elapsed)
Alloc rate 1,441,880,584 bytes per MUT second
Productivity 76.0% of total user, 92.6% of total elapsed
Reading & Watching#
I’m slowly making headway in reading Proto. It’s not going as fast as I’d like but it’s better than nothing. Wife and I started watching Love Through a Prism and I started watching Lord of Mysteries. Still unsure about both but let’s see.
Social Media#
I see that I’m almost at 1000 original posts on my microblog. I also crossed 500 followers on Mastodon.
I posted a new photo that I took on the day of my wedding. I’m not passing much time on social media these days 🤷🏽♂️.
Interesting Internet Links#
- How far back in time can you understand English?
- Four Kinds of Optimisation
- 10 Commandments: Compiler in Haskell Edition
That’s all for this week. You can subscribe to the feed of my week notes for updates.
If you have any questions or comments, please leave a comment below. If you liked this post, please share it. Thanks for reading!
Thanks for reading this post via feed. Feeds are great, and you're great for using them. ♥
This post was originally published on abhinavsarkar.net.
Like, repost, or comment on:
Read more of my posts and notes.

Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.