Writing on software engineering, company building, and scaling applications.

All of my long-form thoughts on programming, leadership, product design, and more, collected in chronological order.

Understanding Weighted Graphs: Dijkstra's Algorithm Revealed

In this guide for developers, we delve into an understanding of weighted graphs and Dijkstra's Algorithm, a popular method for finding the shortest paths in such structures. Master your graph-based problems with this in-depth walkthrough.

Mastering Hash Tables: From Understanding to Optimization

A comprehensive look at hash tables and practical tips to optimize their utilization. Dive into hash functions, load factors, and trade-offs to learn how to get the best of hash tables.

Mastering Quicksort: A comprehensive Guide for Developers

Unravel the workings of the Quicksort algorithm, right from its application on simple arrays to handling larger ones. Discover how the 'Divide and Conquer' strategy plays out in Quicksort, and learn the underestimated significance of pivot choice in boosting efficiency.

Deconstructing Problems with "Divide and Conquer" Technique

Unlock the power of "Divide and Conquer" strategy in problem-solving. Learn how to solve complex problems with simplicity using recursive algorithms. Master this fundamental tool of computer science, and apply it in real-world examples from farmland division to summing elements in an array.

Recursion Revealed: An Intuitive Guide for Software Engineers

Delve into the depths of recursion, an elegant and mighty concept in coding. With an array of real-life examples and code snippets, we'll unravel the 'mystery' of recursion, proving that it's not as daunting as it seems! Step in and immerse yourself into the world where problems solve themselves.

Demystifying Sorting Algorithms: A Deep Dive into Selection Sort

Break into the world of algorithms with an in-depth look at Selection Sort! With practical examples and easy-to-follow JavaScript code, this comprehensive guide will turn you into a sorting master. No fluff, just wisdom!

Arrays vs Linked Lists: An In-depth Comparison and Understanding

Dive into this comprehensive guide discussing arrays and linked lists: two basic data structure types. Explore their distinction in detail, performance analysis using Big O Notation, and how to leverage their strengths based on your specific application needs.

Grasping Big O Notation: Your Algorithm's Speedometer

Big O Notation is a special form of notation that helps us understand the performance characteristics of an algorithm - how fast the algorithm grows in terms of time complexity.

Demystifying Binary Search: An Algorithm for Quick Discovery

Explore the fascinating world of Binary Search. This piece digs deep into the inner workings of this efficient algorithm, illustrating its effectiveness against a straightforward linear search. With examples and a useful JavaScript implementation, the article simplifies Binary Search, making it accessible for all developers. Ideal read for those eager to optimize their search operations in large, sorted datasets.

Is NodeJS single threaded or not?

After all, what is the truth about this discussion? Let's discuss how NodeJS works behind the scenes and draw a conclusion about it

How to work remotely while earning in dollars

How I became an international developer, and some golden tips that would have helped me absurdly if I had received them while working in my home country.

Understanding React renderings

Understand advanced React rendering concepts and learn powerful tools to analyze the performance of your application.