A summary of chapter 2 of high output management
How do you drive change across difficult environments? For example, presenting radical new ideas to an unreceptive audience or collaborating with parties with opposing interests
Stop giving people answers all the time!
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).
These are a few strategies I employ to be more efficient at work.
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.
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.
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.