How to brilliantly deliver on seemingly impossible projects
This is a screenshot I took of my CPU metrics on my computer. This post provides a deep dive into the information contained in the Task Manager panel. The Graph The graph shows a sliding window plot of CPU utilization against time. Utilization: shows how much 'work' is being done by the processor. This includes … Continue reading Windows Operating System Metrics: CPU
That is the question I like to ask nowadays at the beginning of anything: a sprint, a project or a book.
5 important ideas that engineering teams need to keep in mind to optimize value delivery.
Tips for making learning a habit and maximizing knowledge acquisition
Constantly factoring deletes into your iterations keeps your code base healthy
My heuristic is to green-light full adoption only if the long-term benefits outweigh the costs and risks
Tips for running services at scale with minimal toil
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
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.
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).
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
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
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?
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?
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.
A simple system can be understood by studying each of its components; similarly, complicated systems can be understood by studying the intricate details of components. It becomes possible to model complicated systems by reducing them to fundamental principles. Complex systems cannot be reduced down to a basic set of rules as the whole is larger than the sum of parts. Inference is only by observing the entire system as a whole.
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
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
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
Sometime last year I started to solve hackerrank problems at my pace and here is my progress after about 108 days ago.
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.
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.