India, don't ban Element

This post has my commentary, and a call to action for Element developers, on The Government of India banning Element. In the beginning, the universe was created. This made a lot of people very angry and was widely regarded as a bad move. Then, India banned Element, and it made a lot more people even angrier. My country made another decision that I strongly disagree with. The MEITY – the Ministry of Electronics and Information Technology – banned Element, among 14 mobile apps that they identified as being used by terrorists....

May 5, 2023

What do I self-host?

I’ve been recently deploying apps rather frequently on my personal droplet that I use for self-hosting. I tried hosting some bulkier apps and I was surprised when they ran without crashing or bothering any of the other apps that were already deployed. I was impressed by this setup, and I hope that writing this post inspires confidence in others to self-host their own software. VPS Information I have a single $6 droplet and a 50GB volume mounted to it that costs $5....

April 17, 2023

What I Learnt From SICP

I had started with SICP (Structure and Interpretation of Computer Programs) some time early last year. I had read through one and a half chapters and then stopped because it felt too mathematical and I didn’t know what I was getting from it. Then later that year, I attended Lambda Retreat, conducted by Anand, who is my colleague and has found SICP to be quite profound himself. It changed the way I think about programs, added new perspective, and got me interested in the design and implementation of programming languages....

March 8, 2023

Self Hosting 101 Workshop

Me (left) accepitng a momento from Hadif (right), one of the two NITC students on my team On Feb 11, I conducted a 3 hour introductory workshop on Self Hosting at FOSSMeet ‘23 at NIT Calicut. This post has my notes on teaching Self-Hosting to a crowd and an easy-to-find link for people who land on my personal website. My slides for the workshop are available here....

February 16, 2023

Objects and Types in Python

Python’s type system is fascinating. Everything in Python (anything that can be given a name or passed as an argument) is an object. This includes primitives (such as int, str, bool objects), compound objects (made from handwritten classes), and very interestingly the classes or types themselves. This fact that everything in Python is derived from a common base makes it very powerful because any two of these objects can be combined or extended in similar ways....

January 17, 2023

On Encoding and Decoding

I was in the shower and got thinking about how computers encode everything as numbers. Around the time when I was in school and had some familiarity with programming, I didn’t really think it was a good analogy to think of computers as sophisticated calculators. Calculators are dumb, they can only perform operations on numbers whereas computers are able to build something as complicated as the internet. I was younger then....

November 21, 2022

What's Wrong With the Way We Think About Web Development?

Web development has an abstraction problem. The low-level implementation details have leaked all the way into code we reguarly write. It’s analogous to writing C or assembly where you need to shape your thinking in terms of the underlying architecture. Good abstractions capture thought ideas with only as much bend as is absolutely needed to eliminate ambiguity. The ideation of a web app is in terms of the content the user can see and the interactions they can make with the website – simple....

November 4, 2022

On Camus' "The Stranger"

This blog post tells my reflections on reading Camus' novel The Stranger. I reference the content of the novel and it is unlikely to make sense to you if haven’t read the novel yourself. For a tl;dr of the novel, I would recommend reading the Wikipedia entry. I’ve never read a novel like this before. There is only a series of events, narrated with a hint of indifference. The murder of a man, Mersault’s separation from his fiance, his death sentence, and of course the death of his mother....

October 6, 2022

Dead simple SMTP server for development and testing

Local development setup When we have some code that sends emails, we probably also want a stub that we can use locally – which won’t send actual emails, let us inspect the content of each outgoing mail, and let us conduct tests. I needed something like this when we were building the skeleton of a guided project for a training [1]. One of the tasks was for the students to send an email notification upon some action....

September 21, 2022

Writing an SMTP Server from Scratch (WIP)

A few months ago, I wrote an SMTP server from scratch to learn about the protocol. It soon came to me that the knowledge of SMTP internals is not as common as it should be. Upon not finding a satisfactory blog on the topic, I read through the RFCs and tried to create my own server. I am writing this blog as a relatively concise summary of that. Before we go on to writing our server, I want to give some context that should be treated as a prerequisite....

February 14, 2022