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]
Reposted by Abhinav 🌏
People want a technical solution to what is ultimately a judgement problem.

People know that unwrap can cause a panic. That's the choice that's being made when you unwrap. Changing the name won't change that.
November 19, 2025 at 4:51 PM
Reposted by Abhinav 🌏
I can't get over the fact that #rust invented `Option` to avoid NULL pointers, and then added `unwrap` to it, undoing the whole thing.
November 19, 2025 at 5:00 AM
Reposted by Abhinav 🌏
I've seen a lot of posts focusing on the specific issues that caused the recent Cloudflare incident, but no discourse about how these companies are being run.

We've known how to build completely reliable computer systems for decades. When things fall apart, it's not […]

[Original post on mas.to]
November 19, 2025 at 9:23 AM
I can't get over the fact that #rust invented `Option` to avoid NULL pointers, and then added `unwrap` to it, undoing the whole thing.
November 19, 2025 at 5:00 AM
Reposted by Abhinav 🌏
November 18, 2025 at 2:00 PM
Reposted by Abhinav 🌏
it's not a proper outage until the status page is rendering without CSS (it's not a flawless 10/10 outage until the status page is in a DNS black hole)

#cloudflare
November 18, 2025 at 12:22 PM
#cloudflare is down at least partially, and a lot of websites including mine are down with it. 😭
November 18, 2025 at 12:11 PM
Reposted by Abhinav 🌏
Mostly posting here so I will have a place to link it to a friend...
November 16, 2025 at 2:13 PM
Reposted by Abhinav 🌏
In which Nick Radcliffe goes very deep for a month with Claude Code and reports back. I’m convinced by some not all of what he says, but found the whole thing a stimulating read: https://checkeagle.com/checklists/njr/a-month-of-chat-oriented-programming/

#genai #claude
A Month of Chat-Oriented Programming - CheckEagle
checkeagle.com
November 17, 2025 at 6:29 PM
Reposted by Abhinav 🌏
Notes for the Week #46
This week note covers the week of 10th–16th Nov. Green, White and Black * This week has been … different. Early this week while having a conversation with my wife, I had a sudden realization that I was having a productive burnout. Unlike the last time when I had a burnout six years ago, this time I was getting a lot done. Just look at how many posts and notes I’ve written this year! Add to that the half-dozen personal projects I’m working on, my office work, my personal commitments, attending IndiewebClub every fortnight. It’s crazy! I’ve also been feeling very mentally tired and uninterested in almost everything. After the realization, I decided to take a break, but not like the other breaks I took earlier this year where I drove myself more and more into personal work. This time I didn’t write a single line of code outside work and the IWC session. That’s right, nothing for an entire week. I did feel the temptation at many occasions, but I restrained myself. And I must say, the results have been amazing. I feel more calm, spacious and happy. I spent time playing with my kid, reading books, listening to my favourite bands, meditating, taking walks, talking to friends, and just thinking about many things. I slept better and felt more energetic through the days. So now I’ve decided to limit the time I spend on personal projects, and just enjoy my free time without worrying about producing. * My overall health has slowly improved to the level it was six months ago. This week I walked over 8000 steps every day. Brain fog and fatigue is also down by a lot. * I attended the IndiewebClub Bangalore meetup yesterday. This week we focused on creating and improving our websites. I worked on adding support for spoilers in my website, but I could not get it done well enough within the allotted time. I also wrote a note about changing my mind. * I read quite a bit this week. I am 20% through the _Writing a C compiler_ book, and 60% through _This is How You Lose the Time War_. * I finished watching the latest season of _Only Murders in the Building_. I liked it more the previous couple seasons, mostly because this time it focused on the murder mystery and investigation instead of celebrity gimmicks. I also watched few more episodes of _Black Mirror_ , and liked it as always. * Some interesting posts I read on the internet this week: * The Overly Humble Programmer * Folk Interfaces * Waiting for the Dehradun That’s all for this week. Talk to me in the comments. 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
November 16, 2025 at 7:59 AM
Reposted by Abhinav 🌏
November 15, 2025 at 5:29 AM
Reposted by Abhinav 🌏
Change of Mind
_I wrote this post for a prompt given during ourlocal Indieweb club meeting: “What did you recently change your mind about?”_ I’ve always wanted to write a book, some book, since I can remember, for reasons I’ll not go into in this post. Initially, I had no clue what I wanted to write about. Over years (decades really), I slowly zeroed it down to writing a book about compilers in Haskell. I got interested in Functional Programming while I was a wee J2EE developer back in the aughts. The first language that caught my fascination was Clojure, the excellent Lisp on JVM. But soon enough, the dark side of static typing seduced me and I fell in love with Haskell. Over a decade or so, I’ve read and written enough Haskell code that I can call myself proficient in it. Haskell is now the first language that I reach out to, no matter the size of my project, which I believe is something very uncommon. Along with Haskell and functional programming, usually comes the allurement of compilers and creating your own programming languages. And sure enough the bug bit me hard when the world stopped in 2020. I spent countless hours learning all things compilers from scratch, and writing many of them in Haskell. An idea crossed my mind one day, why not write a book on compilers using Haskell? I spent some time digging up. Turns out, there is only one compiler book that uses Haskell as its implementation language. This is a very bizarre and curious fact, because one of the biggest strengths of Haskell is writing compilers, and there are tens if not hundred of them written already. But only one person wrote a book about the process! I decided to snatch this opportunity. Thereafter, I spent a lot of time thinking about the book, more than a year actually. I wrote the table of contents, I thought about how I’d structure the code examples, even about the publishing software. I also read multiple articles about the process of book-writing by people who have successfully published. After a lot of deliberation and talking to friends, I’ve changed my mind about writing _the_ book. The effort to result ratio just does not seem worth it. This is more true for the kind of writing I do / want to do—an in-depth everything-explained all-code-provided book. I know that I would not be satisfied with anything less. I suspect that if I go down this path, it would take a good chunk of my forties, and I’ll not have enough to show for all the time I put in it. Of course, I could be wrong, but this is what I feel right now. So, I’m changing my mind and I’m giving up. So long, my childhood dream of becoming a famous published author. But it’s not all sad and gloom. I’ll probably do something more useful and fun with my time. I really think that I’ll not regret this decision. But if I do, I suppose I can change my mind about it again! 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
November 15, 2025 at 1:23 PM
Notes for the Week #46
This week note covers the week of 10th–16th Nov. Green, White and Black * This week has been … different. Early this week while having a conversation with my wife, I had a sudden realization that I was having a productive burnout. Unlike the last time when I had a burnout six years ago, this time I was getting a lot done. Just look at how many posts and notes I’ve written this year! Add to that the half-dozen personal projects I’m working on, my office work, my personal commitments, attending IndiewebClub every fortnight. It’s crazy! I’ve also been feeling very mentally tired and uninterested in almost everything. After the realization, I decided to take a break, but not like the other breaks I took earlier this year where I drove myself more and more into personal work. This time I didn’t write a single line of code outside work and the IWC session. That’s right, nothing for an entire week. I did feel the temptation at many occasions, but I restrained myself. And I must say, the results have been amazing. I feel more calm, spacious and happy. I spent time playing with my kid, reading books, listening to my favourite bands, meditating, taking walks, talking to friends, and just thinking about many things. I slept better and felt more energetic through the days. So now I’ve decided to limit the time I spend on personal projects, and just enjoy my free time without worrying about producing. * My overall health has slowly improved to the level it was six months ago. This week I walked over 8000 steps every day. Brain fog and fatigue is also down by a lot. * I attended the IndiewebClub Bangalore meetup yesterday. This week we focused on creating and improving our websites. I worked on adding support for spoilers in my website, but I could not get it done well enough within the allotted time. I also wrote a note about changing my mind. * I read quite a bit this week. I am 20% through the _Writing a C compiler_ book, and 60% through _This is How You Lose the Time War_. * I finished watching the latest season of _Only Murders in the Building_. I liked it more the previous couple seasons, mostly because this time it focused on the murder mystery and investigation instead of celebrity gimmicks. I also watched few more episodes of _Black Mirror_ , and liked it as always. * Some interesting posts I read on the internet this week: * The Overly Humble Programmer * Folk Interfaces * Waiting for the Dehradun That’s all for this week. Talk to me in the comments. 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
November 16, 2025 at 7:59 AM
Change of Mind
_I wrote this post for a prompt given during ourlocal Indieweb club meeting: “What did you recently change your mind about?”_ I’ve always wanted to write a book, some book, since I can remember, for reasons I’ll not go into in this post. Initially, I had no clue what I wanted to write about. Over years (decades really), I slowly zeroed it down to writing a book about compilers in Haskell. I got interested in Functional Programming while I was a wee J2EE developer back in the aughts. The first language that caught my fascination was Clojure, the excellent Lisp on JVM. But soon enough, the dark side of static typing seduced me and I fell in love with Haskell. Over a decade or so, I’ve read and written enough Haskell code that I can call myself proficient in it. Haskell is now the first language that I reach out to, no matter the size of my project, which I believe is something very uncommon. Along with Haskell and functional programming, usually comes the allurement of compilers and creating your own programming languages. And sure enough the bug bit me hard when the world stopped in 2020. I spent countless hours learning all things compilers from scratch, and writing many of them in Haskell. An idea crossed my mind one day, why not write a book on compilers using Haskell? I spent some time digging up. Turns out, there is only one compiler book that uses Haskell as its implementation language. This is a very bizarre and curious fact, because one of the biggest strengths of Haskell is writing compilers, and there are tens if not hundred of them written already. But only one person wrote a book about the process! I decided to snatch this opportunity. Thereafter, I spent a lot of time thinking about the book, more than a year actually. I wrote the table of contents, I thought about how I’d structure the code examples, even about the publishing software. I also read multiple articles about the process of book-writing by people who have successfully published. After a lot of deliberation and talking to friends, I’ve changed my mind about writing _the_ book. The effort to result ratio just does not seem worth it. This is more true for the kind of writing I do / want to do—an in-depth everything-explained all-code-provided book. I know that I would not be satisfied with anything less. I suspect that if I go down this path, it would take a good chunk of my forties, and I’ll not have enough to show for all the time I put in it. Of course, I could be wrong, but this is what I feel right now. So, I’m changing my mind and I’m giving up. So long, my childhood dream of becoming a famous published author. But it’s not all sad and gloom. I’ll probably do something more useful and fun with my time. I really think that I’ll not regret this decision. But if I do, I suppose I can change my mind about it again! 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
November 15, 2025 at 1:23 PM
Gave my aging #mechanicalkeyboard a makeover by changing keycaps. The mix of colors looks pretty cool.
November 15, 2025 at 7:14 AM
November 15, 2025 at 5:29 AM
Reposted by Abhinav 🌏
November 14, 2025 at 5:43 AM
Reposted by Abhinav 🌏
“You are not worse than the kernel hacker, the compiler engineer, or the game engine programmer. You, too, can build whatever you want to build. All software is just software. It's time we treated it that way.”

https://jimmyhmiller.com/overly-humble-programmer
The Overly Humble Programmer
jimmyhmiller.com
November 13, 2025 at 9:49 AM
Reposted by Abhinav 🌏
In which, on the occasion of my 3-year migration anniversary and the release of Mastodon 4.5, I assemble all my arguments as to why Mastodon is great and why anyone else on a service that’s becoming less fun/safe/useful should migrate to Mastodon and do it now, in late 2025 […]
Original post on cosocial.ca
cosocial.ca
November 12, 2025 at 10:44 PM
Reposted by Abhinav 🌏
all articles about the new steam machine say it's the size of a box of kleenex

why do they think I know what that is
November 12, 2025 at 7:25 PM
Reposted by Abhinav 🌏
Always nice to have options
November 10, 2025 at 12:09 AM
RE: https://bots.robots.rodeo/@scream/115523526520806858

This is your sysadmin tooting. https://fantastic.earth is now on #mastodon 4.5! Please enjoy quote posts responsibly.
bots.robots.rodeo
November 10, 2025 at 4:46 AM
Notes for the Week #45
This week note covers the week of 3rd–9th Nov. Perspective * This week has been a downer. Both my child (_A_) and I have been sick with some stomach bug. While we are doing better now, full recovery is yet to be made. * We bought a new bed for _A_! But the paint on the bed smelled so much, we had to move to the guestroom to sleep. And it’s always a pain for me to sleep in a new room. Therefore, I’ve not slept well in days now 😢. * I wrote a new note about compiler targets. It unexpectedly reached and stayed at the top of lobste.rs for hours! No likes at Hacker News though. * I added dynamic OpenGraph preview images for my posts, such as this one, but learned later that SVG previews are not supported by most platforms. So now I need to rewrite it to produce PNGs. * I started reading the Writing a C compiler book, and I’m already through 8/20 chapters. I’ve been looking for a modern compiler book, and I think this one comes quite close. It works with a real-world language (C), compiles all the way to assembly, and deals with optimizations and register allocations. It is a bit light on theory and code, but it complements the older compiler books well. * I’ve been researching the AST typing problem, specifically its solutions in Haskell. Send me pointers if you know any. * I’m excited about the Advent of Code this year, more that usual because now it will run for only 12 days. I always found myself running out of steam around the 15th day. I want to do this year in Zig, but I may fall back to Haskell if it’s too difficult. * Some interesting things I read on internet this week: * Writing a C Compiler, in Zig * Longford Marathon 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
November 10, 2025 at 2:50 AM
A Short Survey of Compiler Backends
As an amateur compiler developer, one of the decisions I struggle with is deciding choosing the compiler backends. Unlike the 80’s when people had to target various machine architectures directly, now there are many mature options available. This is a short and very incomplete survey of some of the popular and interesting options. ### Contents 1. Machine Code / Assembly 2. Intermediate Representations 3. Other High-level Languages 4. Virtual Machines / Bytecode 5. WebAssembly 6. Meta-tracing Frameworks 7. Unconventional Backends 8. Conclusion ## Machine Code / Assembly A compiler can always directly output machine code or assembly targeted for one or more architectures. A well-known example is the Tiny C Compiler. It’s known for its speed and small size, and it can compile and run C code on the fly. Another such example is Turbo Pascal. You could do this with your compiler too, but you’ll have to figure out the intricacies of the _Instruction set_ of each architecture (ISA) you want to target, as well as, concepts like register allocation. ## Intermediate Representations Most modern compilers actually don’t emit machine code or assembly directly. They lower the source code down to a language-agnostic _Intermediate representation_ (IR) first, and then generate machine code for major architectures (x86-64, ARM64, etc.) from it. The most prominent tool in this space is LLVM. It’s a large, open-source compiler-as-a-library. Compilers for many languages such as Rust, Swift, C/C++ (via Clang), and Julia use LLVM as an IR to emit machine code. An alternative is the GNU C compiler (GCC), via its GIMPLE IR, though no compilers seem to use it directly. GCC can be used as a library to compile code, much like LLVM, via libgccjit. It is used in Emacs to _Just-in-time_ (JIT) compile Elisp. Cranelift is another new option in this space, though it supports only few ISAs. For those who find LLVM or GCC too large or slow to compile, minimalist alternatives exist. QBE is a small backend focused on simplicity, targeting “70% of the performance in 10% of the code”. It’s used by the language Hare that prioritizes fast compile times. Another option is libFIRM, which uses a graph-based SSA representation instead of a linear IR. ## Other High-level Languages Sometimes you are okay with letting other compilers/runtimes take care of the heavy lifting. You can transpile your code to a another established high-level language and leverage that language’s existing compiler/runtime and toolchain. A common target in such cases is C. Since C compilers exist for nearly all platforms, generating C code makes your language highly portable. This is the strategy used by Chicken Scheme and Vala. Or you could compile to C++ instead, like Jank, if that’s your thing. Another ubiquitous target is JavaScript (JS), which is one of the two options (other being WebAssembly) for running code natively in a web browser or one of the JS runtimes (Node, Deno, Bun). Multiple languages such as TypeScript, PureScript, Reason, ClojureScript, Dart and Elm transpile to JS. Nim interestingly, can transpile to C, C++ or JS. A more niche approach is to target a Lisp dialect. Compiling to Chez Scheme, for example, allows you to leverage its macro system, runtime, and compiler. The Idris 2 and Racket use Chez Scheme as their primary backends. ## Virtual Machines / Bytecode This is a common choice for application languages. You compile to a portable bytecode for a _Virtual machine_ (VM). VMs generally come with features like _Garbage collection_ , _JIT compilation_ , and security sandboxing. The Java Virtual Machine (JVM) is probably the most popular one. It’s the target for many languages including Java, Kotlin, Scala, Groovy, and Clojure. Its main competitor is the Common Language Runtime, originally developed by Microsoft, which is targeted by languages such as C#, F#, and Visual Basic.NET. Another notable VM is the BEAM, originally built for Erlang. The BEAM VM isn’t built for raw computation speed but for high concurrency, fault tolerance, and reliability. Recently, new languages such as Elixir and Gleam have been created to target it. Finally, this category also includes MoarVM—the spiritual successor to the Parrot VM—built for the Raku (formerly Perl 6) language, and the LuaJIT VM for Lua, and other languages that transpile to Lua, such as MoonScript and Fennel. ## WebAssembly WebAssembly (Wasm) is a relatively new target. It’s a portable binary instruction format focused on security and efficiency. Wasm is supported by all major browsers, but not limited to them. The _WebAssembly System Interface_ (WASI) standard provides APIs for running Wasm in non-browser and non-JS environments. Wasm is now targeted by many languages such as Rust, C/C++, Go, Kotlin, Scala, Zig, and Haskell. ## Meta-tracing Frameworks _Meta-tracing Frameworks_ are a more complex category. These are not the backend you target in your compiler, instead, you use them to build a custom JIT compiler for your language by specifying an interpreter for it. The most well-known example is PyPy, an implementation of Python, created using the RPython framework. Another such framework is GraalVM/Truffle, a polyglot VM and meta-tracing framework from Oracle. Its main feature is zero-cost interoperability: code from GraalJS, TruffleRuby, and GraalPy can all run on the same VM, and can call each other directly. ## Unconventional Backends Move past the mainstream, and you’ll discover a world of unconventional and esoteric compiler backends. Developers pick them for academic curiosity, artistic expression, or to test the boundaries of viable compilation targets. * Brainfuck: An esoteric language with only eight commands, Brainfuck is _Turing-complete_ and has been a target for compilers as a challenge. People have written compilers for C, Haskell and Lambda calculus. * Lambda calculus: Lambda calculus is a minimal programming languages that expresses computation solely as functions and their applications. It is often used as the target of educational compilers because of its simplicity, and its link to the fundamental nature of computation. Hell, a subset of Haskell, compiles to Simply typed lambda calculus. * SKI combinators: The SKI combinator calculus is even more minimal than lambda calculus. All programs in SKI calculus can be composed of only three combinators: S, K and I. MicroHs compiles a subset of Haskell to SKI calculus. * JSFuck: Did you know that you can write all possible JavaScript programs using only six characters `[]()!+`? Well, now you know. * Postscript: Postscript is also a Turing-complete programming language. Your next compiler could target it! * Regular Expressions? Lego? Cellular automata? ## Conclusion I’m going to write a compiler from C++ to JSFuck. 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
November 5, 2025 at 11:17 AM
Reposted by Abhinav 🌏
Notes for the Week #44
This week note covers the week of 27th Oct-2nd Nov. Blue Heights * This week has been rather uneventful. I suppose that is a good thing. * I’ve been busy at work, something to do with parsing and analyzing SQL. * I wrote a new note in response to the latest blogging challenge. * I wrote first drafts of three blog posts (!), but it’ll probably be a long time before they are ready to be published. * I am running a poll about compiler backends on Mastodon. The results as of the time of publishing this note: > If someone were to write a new compiler book today, what would you prefer the backend to emit? Learning about which backend would help the readers most these days? > > * LLVM (38) > * WASM (19) > * Arm assembly (14) > * X86 assembly (6) > * C (12) > * JavaScript (4) > * Lua (5) > * JVM bytecode (3) > * CIL (2) > * QBE (1) > * I watched a couple of episodes of the latest _Black Mirror_ and _Only Murders in the Building_ TV shows. It was fun. _One Punch Man_ continues to have bad animation, but I like where the plot is going. * IndieWebClub Bangalore session this week was driven by Itihas. We had a long talk and discussion about _Digital Gardens_, their history and purpose, tool and techniques to create and maintain them, and useful workflows. * This week’s work on the website was mostly fixing bugs and small performance improvements. * I made the rendering of sidenotes in posts faster by moving most functionalities from JavaScript to CSS, and by switching from JQuery to browser APIs. * I also improved the non-JavaScript experience of the website. I’m proud to say that most of this website is usable without any JavaScript. * Some interesting things I read this week: * The Abode of Salvation: Rohan writes about a favourite childhood boardgame of mine, _Snakes and Ladders_ , and analyzes the probabilities of the gameplay using Reinforcement Learning. * Writing lessons learned after writing a book: Some useful advice if you are planning to write a book. * The Expression Problem and Its Solutions: The expression problem lies at the center of programming language design. Eli Bendersky explores what it is and how to solve it in this popular post. That’s all for this week. Reach out to me in the comments. 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
November 2, 2025 at 5:26 AM