The Single Question to Ask before starting anything


What does success look like? That is the question I like to ask nowadays at the beginning of anything: a sprint, a project or a book. It is a conscious decision to clearly and unambiguously articulate the end goal. That way, I can align my efforts for maximum leverage. Once the goal is obvious, all … Continue reading The Single Question to Ask before starting anything

Five challenges of engineering teams


1. Clarity What does success mean? For Leads and Managers Are you working on the right problems? Would your VP/Director/CEO be interested in your work? If the answer to any of those questions is no, then why are you doing all that work? If yes, great job! More questions!! What are the secondary and tertiary … Continue reading Five challenges of engineering teams

Chasing fads or solving problems?


Sample chat between two engineers Engineer 1: We should use Hadoop/Kubernetes/Cassandra/insert-random-cool-tech. Engineer 2: Why? Engineer 1: Well, all the cool guys rave about it: latest-fad-tech is the next big thing on the tech horizon. All the hot startups are using it too! Engineer 2: So what will we use it for? Engineer 1: Well, we … Continue reading Chasing fads or solving problems?

How to backup files to Azure Blob Storage from VMs using managed identities


A couple of months ago, I needed to create backups of a database dump on one of my VMs. I initially thought it would be a difficult task but was pleasantly surprised to find it easier than I thought. Despite the excellent documentation; I still needed to do some research to get my automated pipeline … Continue reading How to backup files to Azure Blob Storage from VMs using managed identities

Kind Leadership: Influence over Authority


One of the most underrated parts of working at any job is interacting with people. It is amazing how much humans achieve via collaboration and also how fast relationships can degenerate. The following paragraphs cover real-life experiences and propose a model for kind influence - especially for senior team members. I am right and you … Continue reading Kind Leadership: Influence over Authority

Not all Technical debt is bad


Some engineers believe they have to go to great lengths to eliminate every single piece of technical debt in their codebase. This focus on perfection ignores the cost of fixing debt, the risk of introducing new bugs and contagion (the chances of debt spreading). As is with real-life decisions; not everything is black and white; … Continue reading Not all Technical debt is bad

Less work, More Impact : 5 tricks to boost productivity


1. Automate Automate toil away! Everyone has daily tasks that could be automated. Automating mundane tasks leads to immediate time savings, skill acquisition and huge cumulative benefits in the long run. For example, a 10-minute task costs about 2600 minutes a year (assuming 260 working days). Automating the task to run in 5 minutes leads … Continue reading Less work, More Impact : 5 tricks to boost productivity

Less Work, More Impact


Habits die hard It is hard to focus in a fast-paced work environment: there can be live-site incidents out of the blue; bugs to fix and meetings to attend. I have always struggled with coping with incessant demands and distractions; the urge to drop whatever I am doing and hop on the next fire is hard … Continue reading Less Work, More Impact

Three high-impact non-coding tasks for software engineers


There is more to software development than writing code. this post describes three of the most oft-repeated tasks I have been asked over the years. These are not strictly programming tasks but help magnify the impact. 1. Documentation As a grad student in 2012/2013, I set up a continuous delivery pipeline on AWS for my … Continue reading Three high-impact non-coding tasks for software engineers

Do you want to sleep well at night?


Do you want to sleep well at night? That was the question a senior engineer asked me in 2015. I had sought his feedback on some elegant code I wrote. While I was sure the code covered the scenario; I could not prove it would cover all possible scenarios all the time. That was a grey … Continue reading Do you want to sleep well at night?

What you should do before you start reforms


But why do we do this? What do you do when you run into code that apparently serves no purpose? Do you immediately expunge the code? Also, what do you do if you have to follow some organizational process that appears to make no sense? Do you just eliminate the process? Take a deep breathe and … Continue reading What you should do before you start reforms

Why you should step out of your comfort zone


Late in 2016, I made a conscious decision to become a full stack engineer. It was a tough decision for me because it meant a career reset and came with some risk. I would also have to learn a lot and fast too to be an effective contributor. I could have remained in my comfort … Continue reading Why you should step out of your comfort zone

Simple, Complicated and Complex Systems


I remember an algorithmic problem while studying at MASDAR; I naïvely came up with a simple solution that 'felt' right. My basking in euphoria was shortlived though - a more experienced course-mate needed only one look to declare my approach wrong. Funnily, he didn't know how to solve the problem too! He just knew my simplistic … Continue reading Simple, Complicated and Complex Systems

Essential Pillars for running a service at scale


Software services need a solid foundation that guarantees near 100% uptime. The work needed to establish such a base is termed devops, infrastructure or platform. About 18 months ago, my team got a new charter: launching a brand new service. I was involved in the setup of new platform resources as part of that effort. … Continue reading Essential Pillars for running a service at scale

Guaranteeing software behaviour


My foremost goal while building software is to build stable self-healing systems with deterministic behaviour. I want to ensure my code continues to work even when unexpected events occur. In the event of unknown unknowns, the expectation is a graceful degradation in the worst case. This requirement is even more important when implementing high-risk projects. … Continue reading Guaranteeing software behaviour

What you didn’t know about JSON.parse


Now that you know some more about JSON.stringify; let's dive into its complement: JSON.parse. 1. JSON.Parse The JSON parse function takes in a string (invalid JSON will cause a SyntaxError exception). If parsing succeeds, JSON.parse returns the corresponding value or object. 2. The reviver function JSON.parse accepts an optional reviver function. This reviver function, if specified, allows you … Continue reading What you didn’t know about JSON.parse

5 things I learnt from solving 100+ hackerrank algorithms


Sometime last year I started to solve hackerrank problems at my pace and here is my progress after about 108 days ago. Funnily, I used to think there was no need to practice interview questions unless you were looking for a job or interviewing job applicants. This earlier perception might be wrong; I now think engineers should … Continue reading 5 things I learnt from solving 100+ hackerrank algorithms

Nope, You don’t need lodash for that


I recently had to reduce the size of an Angular Web app for performance reasons. A quick run through the webpack bundle analyzer identified MomentJS and Lodash as the main culprits. Consequently, I had to eliminate both libraries and implement replacements in pure ES6. The upside however is that it was easier than I thought! Thus, … Continue reading Nope, You don’t need lodash for that

Adventures with XOR


I recently ran into a code puzzle; the question asked for the finding the unique element in a list of integers given that every integer appears twice except the single special element. My first solution You could use an array to hash elements to buckets (sort of like counting sort) and then flip their values … Continue reading Adventures with XOR

Reading is not enough


I used to read a lot in the past without practicing what I learnt; that exposed me to a variety of ideas and empowered me to discuss a lot of things. Over time, I found out that I mostly didn't 'know' what I thought I knew.  Yeah I know it sounds somehow but it's really true. True understanding … Continue reading Reading is not enough

Working with Integers in JavaScript


One of the ways JavaScript differs from most programming languages is the absence of integer types. Every numeric value is a Number which is based off the IEEE754 floating point representation. You can still have 'integer' values and it is technically possible to approximate this behaviour using UInt*Array types but that's a discussion for another day. This … Continue reading Working with Integers in JavaScript