Squadrick Whatever works


One of my most frequently used websites was typehere.co which did something very simple. It was a blank canvas where I could type stuff, and it would store the contents locally. I mostly used it as a scratch-pad for quickly taking down notes or typing something while explaining. I’ve used it for the better part of a decade. In Oct 2023, the site... Read more

Tricks of the Trade

I’ve worked on a wide range of software projects: ML stuff, databases, search engines, rendering engines, web servers. Most of which involved writing code that was performant. I’ve learnt a bunch of tricks from each domain that I think can be applied broadly, and this blog explains some of them. First construct, then optimize Construct the d... Read more

When to stop working on side-projects

I’m a professional coder, and so like all good coders™, I spend a non-trivial number of hours working each week on side-projects. The projects’ range is pretty wide, from low-level RPC stuff to machine learning and rendering engines. Right now, I’m working on several projects that might never see the light-of-day. The most significant among them... Read more

Computing Chronicles

I recently spent an entire month’s paycheck on a new PC. Before jumping into it, I wanted to revisit my PC history from the beginning. The primary use cases for all my PCs have remained consistent over the years: gaming and coding. Prologue: Xerox Shop PCs My family didn’t have a personal computer until I was in fourth grade (2007). Before ... Read more

Going faster than memcpy

While profiling Shadesmar a couple of weeks ago, I noticed that for large binary unserialized messages (>512kB) most of the execution time is spent doing copying the message (using memcpy) between process memory to shared memory and back. I had a few hours to kill last weekend, and I tried to implement a faster way to do memory copies. Au... Read more

Goodbye, Addons

Yesterday was my last day as a maintainer of TensorFlow Addons. One of my first and last commits were adding and removing myself as a code owner respectively. June 16th 2019 to 17th May 2020. It was a good eleven months. I’ve read many blog posts about other maintainers quitting due to a toxic, ungrateful community. Fortunately, that is not ... Read more

(Better) Interprocess Locks

Jan 2020 Update: This lock does not work. Please don’t use it. I’m currently trying to fix it. Check out the previous post instead, which as of right now seems to work as intended. In the words of Linux Torvals: “Because you should never ever think that you’re clever enough to write your own locking routines.. Because the likelihood is that ... Read more

Interprocess Locks

Interprocess message passing is an important tool, especially when developing large complex systems like robots. ROS is commonly used for pretty much every small/medium scale robot, and it’s no different at Project MANAS where we were using ROS across the board. ROS uses a publish-subscribe paradigm for communicating between messages, and intern... Read more

TensorFlow Addons

I’ve recently spent a lot more time contributing to open source software. One of the major projects is TensorFlow Addons, which a SIG that basically replaces the old tf.contrib for TensorFlow 2. I was fortunate enough to be made a maintainer of the project. We recently released this blog which talks about Addons in details. Read more

Guarded Types in C++

I was working with C++ to build a replacement for Costmap ROS to use in a driverless car, since Costmap ROS is targeted towards smaller autonomous bots. To this end, the current plan is to make it work in real time, and include some more functionality (like bayesian updates). In my implementation, the costmap is split into two parts: Costmap, w... Read more