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…
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 .
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…
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…
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…
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…
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…
I'm learning about lambda calculus, the mathematical foundation of Lisp. It defines an incredibly expressive system. The Church encodings finally clicked for me.
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…
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.
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.
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.
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.
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.
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.…
Salvatore Sanfilippo described an algorithm using Redis to implement distributed locking called Redlock . In this article, we will talk about this algorithm.
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.
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.
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.…
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.
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.