Squadrick AKA Dheeraj R. Reddy

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

Neural Network Compiler (NNC)

This was the documentation for a project I completed as part of my compilers class. It’s a language to define neural networks, which is then optimized and compiled into efficient executable C++ code. The code of the compiler needs some refining, and will be released shortly. Also, note that the entire project was completed in around 48 hours, so... Read more

Efficient Multiple Gym Environments

In Reinforcement learning, most of the training time is spent in collecting experience from your environments(real life robots, simulators), and very little time is spent on the actual learning part on the GPU. So if we want fast RL training, we need to build fast environments. Due to its ubiquitous usage in RL and easy-to-use API, I’ll be stic... Read more