In this page I mention my career and technical background.
This all began back in 2012 when I began studying computer science at the University of Texas at Dallas. Programming was a new concept to me at the time and it was tough at first. The courses that we attended back then focused on the OG curriculum of C++, Java, Data structures, Algorithms, and various Operating Systems classes. Graduation approached much quicker than I could have ever anticipated. My job search was concluded after no-lifing a Java book for many hours in my last semester.
Jail software is an interesting domain to start with as a fresh software engineer. Jail software makes you realize that even inmates are at the mercy of computers. This organization was also pretty OG as they were still using Visual Basic, and many many different versions of Visual Studio. The initial setup took days and many agonizing hours of tuning windows to have the right settings and version. The engineers that worked here were spectacular and friendly. The office was quiet and filled with cubicles which I came to realize later on were actually not that bad. One day during lunch I learned about blockchain. After a few conversations about how revolutionary this technology was I wanted to learn more. This led me to contribute to some open source projects written in Golang.
My first introduction to Golang was in 2017 where I contributed to Chainlink an Oracle software (connect blockchains to the internet). Golang became my bread and butter and miraculously it turned out that many companies were looking for this language. After attending a Golang meetup hosted at Toyota Connected I applied to work there.
At Toyota I worked on supporting and building the in vehicle virtual assistant. That assistant uses real time voice data to assist users in navigation and other various domains like calendar. The goal of this project was to use machine learning models that we trained ourselves to figure out what a user wants. If they wanted to go to Starbucks we’d route them there in real time. Testing this project was difficult due to the probabilistic nature of machine learning systems. We had to ensure none of our use cases broke during a deploy. This led to a very comprehensive integration testing framework that’s probably in use till today.
Toyota also taught me about the fun world of kubernetes. As a developer there were already enough things to learn and master. In a serious sense I’d describe kubernetes as container orchestration platform that makes it easy to deploy hundreds of services in real time. Along with monitoring and rollback capabilities and many other deployment steroids. A less serious description I’d give kubernetes is that it’s just YAML. Kubernetes is YAML.
After spending some time at a few companies I eventually end up working at Bitly.
At Bitly I was on the QR Code team to build and maintain a relatively new product. QR Codes are basically everywhere and this was an impactful project. We built a system to generate QR Codes in real time but they had to be more beautiful. The QR Codes started off with minor customizations and only a few color options. We improved it a lot in a short time span. We added the ability to create any color, color gradients, crazy shapes,frames, and templates (preset settings of colors).
From the first day of programming I developed a love for using the terminal. I’m not sure why I started obsessively using the command line but it drew me in for being insanely cool. Being a command line user leads you down different rabbit holes of hacker like optimizations. Vim is one of those optimizations that will always show up if you spend any time in the terminal. If you start learning vim you’ll wonder why a sane person would do this to themselves. No autocomplete in some cases and spamming ctrl-d and ctrl-u all day to navigate around files. Eventually you become some sort of wizard to everyone.
It was almost a necessity to learn debugging and profiling skills. These are some of my favorite tools to understand happens at a deeper level in a program. My debugging and profiling skills came in handy every time there was a memory leak or weird bug. It helps being able to set break points and follow the execution of a program.
Teaching others is something I excel at doing. Once I grasp a concept or idea my goal is to help impart that knowledge to others so that everyone benefits.
Technology that i’ve used
- golang
- kubernetes
- git
- bash
- cloud ( aws, gcp )
- pprof (golang’s performance profiler)
- debugging ( delve )
- Chainlink
- datadog
- redis
- postgres
- docker
- make
- Google’s speech api