RSSAmplifier

Blog

Ankit Gadiya

My little corner of the Internet 🙌

ankit.earthRSS feed ↗25 posts

Latest posts

Wonders of Web Weaving Episodes

I added the Wonders of Web Weaving Podcast by James in my feed reader a couple of months ago when it was announced, but I didn't get to it until this weekend. The Podcast has 8 episodes so far, and I wanted to catch-up. While cleaning my apartment over the weekend, I finished listening to 3 episodes. #3 Herman Herman is the person behind Bearblog . The host talked to Herman about his personal…

1782413285

TIL about the which-function-mode in Emacs. It is a global minor mode that displays the current function in the mode line when enabled.

IndieWebClub #28

Today's session was led by Jatan where we discussed what is the most basic requirement for a blog. These are my notes about the session.

1767277502

Happy New Year 🎉 New year, new instance. I'm changing the base domain for my single-user GoToSocial instance (by migration). If it worked, you shouldn't notice it. social.argp.in → social.argp.org .

My Emacs Presentation Stack

This is my (last minute) submission for Emacs Carnival 2025-11 — An Ode to Org Babel . When I need to do presentations at work, I naturally reach for Emacs. My presentations include diagrams, code snippets and running small shell blocks. I found that Org Mode with Babel is the perfect fit. In this post, I'll describe my presentation stack based on Org mode. Here is a quick demo video: Your…

Church Booleans

In the last post, I covered the basics of Lambda calculus and its lack of built-in data types. Church encoding defines a way to represent data types as pure functions. In this post, I'll explore church booleans and control flow, and implement them using Python. Booleans as functions Booleans are plain functions that take two arguments. true always returns the first argument, false always…

Lambda Calculus

Many modern programming languages trace their roots back to Lisp, which in turn builds on ideas from lambda calculus. In this post, I explore the core ideas of lambda calculus. What is lambda calculus For the longest time, I had the impression that lambda calculus has something to do with the calculus from high school mathematics. I was wrong, calculus here simply means to calculate. Lambda…

1763127234

I use the org-pomodoro package for focused sessions at work. But Slack notifications can easily break my flow, so I added the simple hooks to disable visible notifications on GNOME desktop. (defun arg-disable-gnome-notifications () (shell-command "gsettings set org.gnome.desktop.notifications show-banners false")) (defun arg-enable-gnome-notifications () (shell-command "gsettings set…

1760213248

I found a couple of videos exploring the concept of refractive index — why light seems to slow down in different mediums. In the first, the creator reasoned intuitively that light doesn't really slow down. She built a simple home experiment to prove it, but the results showed the opposite. In the second, she set out to understand why those observations actually made sense. Does light actually…

1759668366

I'm learning about lambda calculus, the mathematical foundation of Lisp. It defines an incredibly expressive system. The Church encodings finally clicked for me.

Real-Time (Co)Maps While Flying

Background On an international flight, I saw that the in-flight entertainment system had a navigation feature. It shows a map with the source and destination, along with the plane's real-time location. It felt like a moving progress bar and also gave me a sense of the geography I was flying over. But a lot of budget airlines or domestic flights don't offer an in-flight entertainment…

1759417306

TIL that in Magit buffers, pressing \ (or M-x evil-collection-magit-toggle-text-mode ) activates text-mode . This mode enables standard visual motions that are unavailable in Magit buffers.

Implement Custom Tramp Method in Emacs

Emacs supports editing remote files using the Tramp package. Emacs transparently handles the remote files based on the special path prefixes specified, so the experience is similar to operating on a local file. Tramp uses a remote shell underneath to access remote files. In this article, I'll talk about how to extend Tramp to support custom Methods to access remote files.

XMLRPC

In this article, I'll talk about a pretty old RPC Protocol, XMLRPC. It is over 20 years old now and, it is mostly associated in legacy systems. I'd have never come across it if it wasn't for ROS. ROS 1.x still uses XMLRPC for all of its communication. So, I decided to read out the protocol specification.

Introduction to ROS

ROS is an acronym for Robot Operating System, but contrary to the name it is not an operating system. Instead, ROS is an open-source framework for building software for Robots. I got introduced to ROS in my current company which is a Cloud Robotics startup. In this article, I'll give a general introduction to ROS based on what I learned.

Selfhosting

In this article, I'll share my thoughts about Selfhosting.

Bitwarden RS

I’ve been a happy user of Bitwarden for over a year. In this article, I’ll talk about an alternate implementation of Bitwarden and my experience with it.

Pitfalls of Gorm: Unique Index

Gorm is a popular ORM library in Golang that supports the most commonly used Relational Databases. In this article, I want to talk about a subtle problem in the unique index support for Gorm.…

Redlock

Salvatore Sanfilippo described an algorithm using Redis to implement distributed locking called Redlock . In this article, we will talk about this algorithm.

The Strange case of Golang's Append

Today while working on a Golang code-base at work, I came across an anomaly, or at least that's what I thought.…

Vanity Imports in Golang

The imports in Golang are the full path of the package including the domain name. It is common to host the packages on Github and use it for import as well. However, there are two problems with it.

Backup SQLite

SQLite is one of the most popular embedded relational database. The SQLite native libraries or language bindings are available for most popular languages. SQLite files can be accessed either interactively or using shell scripts using the command-line utility.

Federated Git

Git is a Distributed Version Control System or DVCS, created for the Linux Kernel project. The idea behind a DVCS is that there is no concept of central repository. Every copy (clone) has all the information. But generally, there is a central repository that acts as a single source of truth for all the developers.…

Switched from Pocket to Instapaper

I started using Pocket in 2018, and since then, I became one of the top 5% of there user-base (according to one email I received). But recently, I decided to switch to Instapaper. I had several reasons for making the move that I'll talk about in this post.

Miniflux

I had used multiple Atom/Feed Readers in the past, including command-line based Newsbeuter (and Newsboat), Elfeed as part of Emacs and Reeder on Mac OS. But, my main problem was that none of them support syncing to my Android phone. There is also no integration with Instapaper.