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?
Do you want to sleep well at night?
What you should do before you start reforms
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?
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.
Simple, Complicated and Complex Systems
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.
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.
What you didn’t know about 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.
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.
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 Exclusive OR (XOR) Explained
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.
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
Ensuring Integer results in JavaScript
One of the ways JavaScript differs from most programming languages is the absence of integer types.
How to build Resilient Software
One of the most challenging aspects of software development is staging changes without breaking the service. Releasing new features always comes with a risk - bugs might be introduced and existing failure points might become more prone to failure.
Why you should not use isNaN in JavaScript
Nan literally means Not a Number. Yes, it means that value is not a number and occurs when you try to coerce a non-mathematical value (e.g. string) into a number.
What it means to be a Senior Software Engineer
This post discusses the traits of the excellent engineers I have had the opportunity to work with over the years.
A framework for shipping high quality software
Software engineers, technical leads and managers all share one goal - shipping high-quality software on time. Ambiguous requirements, strict deadlines and technical debt exert conflicting tugs on a software team's priorities. Software quality has to be great otherwise bugs inundate the team; further slowing down delivery speed.
Why computer science matters for software developers
I used to think computer science never mattered because I rarely used algorithms and never saw the value of algorithm-based interviews (I still don't ;) ). The few folks I asked also concurred so I felt I was right.
What every programmer should know about types I
the mathematical concept of sets in number theory. The set of integers can be seen as a type - only values such as 1, 2, 3 are integers; decimals (e.g. 1.1) or irrational numbers (e.g. π) aren't members of the integer set.
Faking goto in JavaScript with Labeled Statements
What if I told you JavaScript had a limited form of the infamous goto statement? Surprised? Read on.
What you didn’t know about JSON.Stringify
This post shows a couple of new tricks and ways to properly leverage the hidden capabilities of JSON.stringify covering: JSON expectations and non-serializable data formats, How to use toJSON() to define objects properly for JSON serialization, The replacer option for filtering out values dynamically, the spaceparameter for formatting JSON output. The post also covers the difference between stringifying arrays and objects containing non-stringifiable fields
5 Tips for consistently crafting delightful User Experiences
Have you ever wondered why some applications always look and feel similar? Why for example does Apple have a unified experience across devices? Why are Google products starting to adopt the material experience?
JavaScript has no Else If
A surprising random fact about JavaScript is the lack of else if support
Efficiently shipping Big Hairy Audacious Software projects
I recently transitioned into a full-stack role - I wanted to stretch myself and step out of my comfort zone. The biggest challenge was my struggle to quell the quite nagging voice in my mind screaming 'impostor!'.
Why JavaScript has two zeros: -0 and +0
Do you know there are two valid zero representations in JavaScript?