Abhinav 🌏
banner
abnv.me
Abhinav 🌏
@abnv.me
Programming languages aficionado, occasional runner, quantified-self enthusiast, and fervent napper. Works as senior software engineer at Google.

If you want to follow […]

🌉 bridged from ⁂ https://fantastic.earth/@abnv, follow @ap.brid.gy to interact
Pinned
https://stic.earth is a collection of privacy-respecting, self-hosted applications and services, which includes https://fantastic.earth, my server. It currently runs these services:

- #mastodon (Microblogging)
- #pixelfed (Image posting)
- #bookwyrm (Book […]

[Original post on fantastic.earth]
A new #weeknote about sickness, IndieWebClub and TV shows: https://abhinavsarkar.net/notes/2026-weeknotes-02-08/

#weeknote #blogging
Notes for the Week #6 (2026)
This week note covers the week of 2nd–8th February. Boat ## Life# My wife’s sickness continued into this week. The doctor did not prescribe antibiotics on the first visit last week, so we visited again this week and finally got prescribed some. I’m so thankful to scientists and medical professionals for inventing antibiotics. She is recovering well. The fatigue of illness kept us mostly doing bare minimum, no outings or events this week. I missed walking 10k steps a few days, and I had to walk 13–14k on few other days to compensate. My body has adjusted to this routine of exercise now. I’m hoping to move it up a notch in the upcoming weeks. The weather has been somewhat treacherous of late, with days reaching 30°C and nights at 15°C. The large variation has been the cause of the spreading viral sickness, or so our doctor told us. Houses in India do not have insulation, so we are layering up or down depending on the temperature. ## Work# Google renamed the ZetaSQL project to GoogleSQL last week. So now I’m working on GoogleSQL within-and-out Google. I need to do some configuration so that my name starts showing up in the commits in the Github repo. ## Personal Projects# I mentioned in my last week note that I moved my websites and services to a Hetzner VPS. After running it for a week, yesterday I shut down my Digital Ocean VPS for good after a run time of 12 years! This week I mostly worked on the IndieWebClub Bangalore website. I added: * a webring for the club members, * the member directory page, * light mode CSS styles, and * an ad-hoc build system to simplify and optimize the website build. Unfortunately, I’m missing today’s session. This is the second writing oriented session I’ve missed in a row, and I’m sad about it. ## Reading & Watching# I’ve made it through the first chapter of Proto by Laura Spinney despite being tired and distracted. I hope to finish it this month. Wife and I watched the entire season of the new Marvel TV show Wonder Man. It was refreshing to see a show not about superpowers (mostly), but instead focusing on characters’ lives and aspirations. I went in not knowing what to expect, and was pleasantly surprised to find it a drama-comedy. We need more Trevor in Marvel. ## Social Media# I literally did not post even a single thing on social media this week (not counting replies), so that’s new. ## Interesting Internet Links# * Breakfast dishes of Karnataka beyond Idli Vada Dosa * “Five-Point Haskell”: Total Depravity (and Defensive Typing) * What is the best pointer tagging method? 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!
abhinavsarkar.net
February 8, 2026 at 4:13 PM
Reposted by Abhinav 🌏
I think Firefall by Peter Watts is the absolute correct reference for this. Echopraxia is also very good for understanding AI https://distantprovince.by/posts/its-rude-to-show-ai-output-to-people/
It's rude to show AI output to people | Alex Martsinovich
Feeding slop is an act of war
distantprovince.by
February 8, 2026 at 7:43 AM
"Five-Point Haskell": Total Depravity (and Defensive Typing)
I have thought about distilling the principles by which I program Haskell, and how I’ve been able to steer long-lived projects over years of growth, refactorings, and changes in demands. I find myself coming back to a few distinct and helpful “points” (“doctrines”, if you may allow me to say) that have yet to lead me astray. With a new age of software development coming, what does it even mean to write good, robust, correct code? It is long overdue to clarify the mindset we use to define “good” coding principles. In this series, Five-Point Haskell, I’ll set out to establish a five-point framework for typed functional programming (and Haskell-derived) design that aims to produce code that is maintainable, correct, long-lasting, extensible, and beautiful to write and work with. We’ll reference real-world case studies with actual examples when we can, and also attempt to dispel thought-leader sound bites that have become all too popular on Twitter (“heresies”, so to speak). Let’s jump right into point 1: the doctrine of Total Depravity, and why Haskell is perfectly primed to make living with it as frictionless as possible. Total Depravity: If your code’s correctness depends on keeping complicated interconnected structure in your head, a devastating incident is not a matter of if but when.Therefore, delegate these concerns to tooling and a sufficiently powerful compiler, use types to guard against errors, and free yourself to only mentally track the actual important things.
blog.jle.im
February 5, 2026 at 10:32 AM
Reposted by Abhinav 🌏
Dry is the limit #photography #sky
January 22, 2026 at 5:09 PM
Reposted by Abhinav 🌏
Supernova! #photography
January 26, 2026 at 5:31 AM
Reposted by Abhinav 🌏
January 31, 2026 at 6:48 AM
Reposted by Abhinav 🌏
True Blue #photography #sky

A really bright evening in #bangalore today. I had to take a photo.
December 3, 2025 at 12:04 PM
Reposted by Abhinav 🌏
how. many. times. must. i. learn.

just. start. with. postgres.

🥫#databased
February 3, 2026 at 10:49 PM
Reposted by Abhinav 🌏
I recently returned from an incredible trip to Antarctica and I need everyone to look at my penguin photos.
February 3, 2026 at 5:18 PM
A new #weeknote: https://abhinavsarkar.net/notes/2026-weeknotes-02-01/
This time we talk about migrating VPSes, walking and not being entertained.

#weeknote #blogging
Notes for the Week #5 (2026)
This week note covers the week of 26th January–1st February. Supernova! ## Life# I returned to work last Monday after a ten day vacation. It was hard; my mind kept going back to the relaxing days. I felt very refreshed. It lasted only a day. My whole family caught a cold on Tuesday. My wife had it worst. While A and I have recovered, my wife is still not well enough. We made through the week somehow fighting the weariness. Despite the sicknesses, I’m happy to tell you that I was able to walk 316727 steps in January, that is 10217 steps every day on average. I missed hitting the mark 6 days out of 31, but because of walking extra steps on other days, I maintained the average. I’m going to continue this habit for now. ## Personal Projects# Not much work on the website this week, I think I’m done for a while. I don’t have any pending tasks or ideas for now. I’m going to focus on other projects next. I did accomplish a big one this week. I’ve been running my VPS on Digital Ocean for the last 12 years. It’s been convenient and I never faced any issues, but the bills have been increasing over years—recently I’ve been paying 17 USD per month for a single CPU/2GB RAM machine. This week I moved all my services and websites to Hetzner. Hetzner is charging me 15 USD for a four CPU/8GB RAM machine. It made no sense to stick to Digital Ocean. The migration was painless thanks to NixOS. Most of my service config is already in my Nix files. I had to copy some data over, mostly service databases and files. Here is the checklist I used: * Pin MySQL version * Build service * Stop service on old VPS * Dump service database * Disable service * Switch DNS to point to new VPS * Enable service on new VPS * Start service on new VPS * Stop service * Copy database dump to new VPS * Copy config files * Copy data files * Copy secret files * Restore permissions * Start service on new VPS * Verify service * Enable service backups * Enable service health checks * Run backup I migrated one service at a time, starting with the stateless services first. I had been delaying the move to Hetzner, because unlike Digital Ocean it is not hosted in India, and I wanted to have a good backup strategy. I ended up going with BorgBase’s 10GB free backup space plan to backup the dumps of service DBs and files. I also enabled weekly full disk backups in Hetzner. I’m comfortable with this arrangement. I also installed Beszel following Sathya’s recommendation. I already had Monit set up for alerts but it’s nice to see metric history and charts in Beszel. One day after the move, my website was discovered by terrible Chinese crawlers. They came very rapidly from random IPs, using headless browsers to visit one page at a time. My now powerful VPS held but I didn’t like them anyway. So I got back on Cloudflare proxy after two months of being off it, and turned on Cloudflare verification for Chinese IPs. The crawlers finally backed off after trying for few more hours. ## Reading & Watching# I started reading Proto by Laura Spinney. I love reading about linguistics and anthropology and I’m hoping this book is everything it is hyped to be. Wife and I watched Agatha Christie’s Seven Dials, a short TV show based on Agatha Christie’s 1929 novel The Seven Dials Mystery. The acting and sets were great but I was not entertained by the mystery of the case, which was rather tame. I’m super excited about the second season of the Frieren: Beyond Journey’s End anime. I loved the first season and I’ve been eagerly waiting. The first season has been ranked one in MyAnimeList’s list of top anime for years and I expect a great second season too. ## Interesting Internet Links# * Wheel Reinventor’s Principles * The Value of Things * (How to Write a (Lisp) Interpreter (In Python)) 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!
abhinavsarkar.net
February 1, 2026 at 12:56 PM
Reposted by Abhinav 🌏
Yesterday my website running on my tiny VPS was discovered by terrible Chinese crawlers. They come from random IPs, use headless browsers to visit one page at a time, very rapidly. So I had to get it on #cloudflare proxy and turn on Cloudflare verification. Sigh. :blobcatverysad:
#selfhosting
January 31, 2026 at 2:53 AM
January 31, 2026 at 6:48 AM
But I made sure to exclude my Atom #feeds from the verification, but that's how it should be.
January 31, 2026 at 2:57 AM
Yesterday my website running on my tiny VPS was discovered by terrible Chinese crawlers. They come from random IPs, use headless browsers to visit one page at a time, very rapidly. So I had to get it on #cloudflare proxy and turn on Cloudflare verification. Sigh. :blobcatverysad:
#selfhosting
January 31, 2026 at 2:53 AM
Reposted by Abhinav 🌏
hi programmers of fedi, have any of you worked with nonprofits/charitable organisations (idk if this is strictly accurate I just mean a group of people working for public good on the ground) to donate your time coding for them? How has that been? Do you think you had a bigger impact than if you […]
Original post on hachyderm.io
hachyderm.io
January 26, 2026 at 4:43 AM
Reposted by Abhinav 🌏
Today‘s ride to work counts as a workout. Glad that I‘ve seen all cyclocross races of MvdP this season. Made me feel confident. 😅

#mdrza #bike2work #biketooter #photography
January 26, 2026 at 9:00 AM
Supernova! #photography
January 26, 2026 at 5:31 AM
Reposted by Abhinav 🌏
Running a Goaccess Server on NixOS | Abhinav's Notes
notes.abhinavsarkar.net
April 20, 2025 at 3:58 PM
A new #weeknote, this time about travels, comments and trimming the fat: https://abhinavsarkar.net/notes/2026-weeknotes-01-25/

#weeknotes #blogging
Notes for the Week #4 (2026)
This week note covers the week of 19th–25th January. Blue As Sky ## Life & Travel I was on vacation this week. This was my first proper vacation after 6½ years. My wife, I, and our 3yo A took a train to Kodaikanal on last Sunday. This was A’s first train journey of life. There was much excitement, followed by much boredom waiting for the train. We took the overnight train from Bangalore and slept through the journey. I had the upper berth, which was right next to the AC vent, leading to a slight cold that I nursed for the rest of the vacation. In our unpreparedness caused by the aforementioned lack of vacations for years, we made many mistakes. We forgot to check how far our hotel was from the train station, and it turned out to be a 3 hour car drive away. We didn’t pack enough warm clothes for the cold weather, the right footwear for the hilly terrain, and adequate number of toys for A. Somehow we managed to walk around the town and visit all the touristy places. Keeping A engaged all the time without any friends and toys was the biggest challenge, and we ended up with more TV time than the usual. The weather in Kodaikanal was chilly—the kind of cold we have forgotten about living in the comfort of Bangalore weather. I had to put on many layers while the locals were walking around in T-shirts—it was slightly embarrassing. I still kept my habit of walking ten thousand steps each day. We spent a lot of time indoors, playing games and reading books. I even found some time to work on my website. We returned by train on Thursday night and reached home on Friday morning. The return journey was a bit troublesome, both my wife and A fell sick because of motion sickness. Rest of the week was spent in recovering from the vacation. ## Health I took a break from walking for the last two days to recover from the pain in my knees caused by climbing the hills in the wrong shoes. I walked eleven thousand steps today, causing my average to stay over ten thousand steps per day this month. However, I feel like I’m regressing again from the good sleeping habit I built in the last few months. Also, I keep forgetting to wear my reading glasses. ## Photography I took over a hundred photos over this vacation. I even dusted out my old point-and-shoot camera that I had been neglecting in preference to my phone camera. I posted some of these photos to my Photography page. The photo on the top of this note is also one of them. I’ll post some more in the upcoming days. Subscribe to my photography feed if you are interested. ## Personal Projects This week I worked on comments on my website. Informed by a comment on the previous week note, I found that commenting via Isso on my notes was broken. While I was fixing it, I noticed that Isso provides an Atom feed for each comment thread, allowing commenters to subscribe to it to receive updates and replies. So I added per post comment feeds to my website that are just a slightly massaged version of the Isso comment feeds. See this very post’s comment feed for example. Then I added a feed for all comments on my website, collected from all posts and notes. This feed is for me to keep track of new comments. While I was doing that I also removed comments from Twitter on my posts because Twitter sucks. After coming back to Bangalore, I spent a day optimizing the static site generator (SSG) executable size. My SSG is written in Haskell, and I use Nix to compile and statically link it to a single binary exe. Recently the size of the exe had ballooned to 120 MB! The reason for this is, the SSG uses Pandoc, Skylighting and some other libraries that are very featureful. Pandoc has readers and writers for scores of formats, and Skylighting supports hundreds of syntax grammars. Even though I only need Markdown and HTML support and have snippets in twenty-some programming languages on this website, I still had to include a lot of unused code in the exe. Pandoc also pulls in many heavy dependencies like Typst and LaTeX etc. This had been on my mind for years, and yesterday I sat down and wrote a series of patches for Pandoc and Skylighting to delete all the unused code. I apply these patches via my Nix-based build system. I also configured ICU to retain data only for English and removed many advanced features following the build guide. These changes **halved** the exe size to 61 MB! Then I compressed the exe using UPX. The final size is now 9.5 MB. The downsize of compression is a slowdown of 2 seconds when generating the website, which I’m okay with. ## Watching I rewatched Your Name on a whim when it appeared in my recommendations. Such a beautiful and well-done movie! I didn’t get time to watch or read anything else. Even my feed reader queue has grown to almost a thousand. ## Interesting Internet Links * The Case For Comments * Agent Psychosis: Are We Going Insane? * Dynamic GHC matrix in GitHub CI 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!
abhinavsarkar.net
January 25, 2026 at 2:35 PM
Reposted by Abhinav 🌏
my friend @nemo will be at #fosdem this year, carrying the torch at the foss united booth. talk to him about funding.json / floss.fund … or chat about open source in india and germany! he’s good people.
I’ll be around at @fosdem.org this year, and manning the FOSS United / funding.json / floss.fund booth.
January 23, 2026 at 1:27 PM