About me

TLDR;

I’m a full stack developer with a devops flavor. I run a SaaS called ShapeBlock.

Long boring version

The beginnings

I’ve been dabbling with computers since I was in high school. I started dabbling with GW-BASIC and later learnt C so that I could program games. One of my friends told me that there is an OS called Linux and that it ships with a C compiler. I could not get hold of a Linux CD at that time, let alone dual boot both Windows and Linux. I settled for a 32-bit compiler which runs on DOS called DJGPP. I spent a lot of evenings playing with DJGPP and a game programming library called Allegro. I naively thought I could ship AAA game titles from my bedroom single-handedly. Though I didn’t ship any game, I learnt a lot about writing maintainable code, libraries and how software works in general. This experience was far enlightening than most computer science courses I see today.

C++

I started my career as a systems programmer writing C++ and working on UNIX(not Linux). I was part of a team which built and maintained a distributed key-value store. Around the same time, I wrote a build and release tool with spec maintained in XML files. I used Python partly because I had a time crunch to build and ship a running v1.0 and partly because I wanted an excuse to learn Python. This was widely used by my team and they seemed to like the tool. Guess they haven’t heard of Ant or Maven, and probably I didn’t do any shopping before I set out to write the tool.

The web developer phase

I gradually defected to web development, which seemed to be a breeze compared to the dangling pointers and core dumps C++ threw at me. My first “web app” was a billing application. It was not a real web app, but rather a Django app with SQLite persistent storage running on the client’s laptop. I gave clear documentation and instructions on how to start the Django server everytime they rebooted their machine. This ran on production for quite some time!

Going Full stack

I wrote a lot of Django and Python and had a brief sojourn with Java as part of a search engine backend team. I learnt a lot about production deployments(back when devops was not a thing and Jenkins was callled Hudson), indexing and large databases. I’ve written a lot of PHP and Drupal(6,7 and 8) than I care to admit, punctuated by Backbone.js, BEM and Angular.js.

Foraying into Devops

I figured that it was as hard to deploy code as much as it was to write it. I discovered Docker around this time, but mostly used it to setup my local environments. For deploying code, I used Ansible, after checking out Chef and Puppet. I never imagined in 2015 that I could deploy production stuff inside of containers, until I heard about this tool called Kubernetes. Gitlab offered a beautiful workflow with deployment to Kubernetes. Still, Kubernetes was hard to learn and use, because of the new and unfamiliar abstractions it employed. I guess still it is 🙂

I was searching for the holy grail of “Heroku-like” workflow. I’ve tried tools like dokku and Tsuru. I used Tsuru for quite a while, but it was a small ecosystem and not something you could commoditize. My ideal version would be something where deployment is triggered by git push, is open source, based on Kubernetes and mostly extensible. And nice UI please. I tried tailoring Kubernetes to fit this, but I think OpenShift does it a million times better than me. Most of my mindspace is spent on taking OpenShift and Kubernetes to the masses.

Tools of the trade

I have strong opinions about tools, but weakly held. I’m an Ubuntu fanboy and I have a rather old X1 Carbon. I use Emacs, after briefly trying out VS Code and coming back to emacsland. Guess I’d become too institutionalized to emacs.