Fernando @francofernando.com · 01/07/2026The one rule that prevents most BFS bugs: mark a node visited when you enqueue it, not when you dequeue it. If you mark on dequeue, the same node gets pushed many times before it is processed -> duplicates in the queue, wrong distances, TLE. 100
Fernando @francofernando.com · 15/07/2025When I started writing two years ago, I never imagined my newsletter would become a bestseller. I'm speechless. Thank you all for your trust and support 🥹 It means a lot to me and pushes me to always do better. 020
Fernando @francofernando.com · 17/06/2025This is one of my favorite pages of the Design Data Intensive Application book. It's amazing how you can build the worlds simplest database using only two bash functions. A pleasure to read every time. 291
Fernando @francofernando.com · 18/05/2025This morning, I did some math exercises with my son. The task was to complete the multiplications with the missing numbers. I'm not sure how the teacher wanted us to solve it, but we did it by trying all possible combinations using backtracking. My son got the idea right away. 010
Fernando @francofernando.com · 14/05/2025Mastering the fundamentals is the only way to become a good software engineer. You stand out if you know algorithms, distributed systems, and system design. Here are 12 curated articles to help you learning new things and get better: ↓ 120
Fernando @francofernando.com · 07/05/2025What Every Programmer Should Know About Memory: • RAM • CPU caches • Optimization techniques • Memory performance tools It is still the best primer on how memory works. By Ulrich Drepper from Red Hat. 100% Free. Download it here: people.freebsd.org/~lstewart/ar... 030
Fernando @francofernando.com · 30/04/2025If you are a senior software engineer who wants to improve his/her skills, read these 10 curated articles: ↓ 100
Fernando @francofernando.com · 26/04/2025Coming up with an algorithm to solve a problem is hard. Without a proper approach, it's easy to get lost. Here are 6 methods you can use to solve 99% of the problems: ↓ 130
Fernando @francofernando.com · 23/04/2025I've always wanted to visit this place. Engineers are problem solvers, and what they do here is a reminder that their capabilities are likely endless. 030
Fernando @francofernando.com · 20/04/2025To everyone who celebrates today, I wish a blessed and happy Easter. I hope your day is eggcellent. 020
Fernando @francofernando.com · 19/04/2025Caching is an effective way to boost the performance of a web application. But it's not as simple as flipping a switch. There are several backend read and write caching strategies. Here is how to pick the right one: ↓ 121
Fernando @francofernando.com · 16/04/2025If you're a software engineer who want to get better at tech interviews, read these 10 articles: ↓ 120
Fernando @francofernando.com · 15/04/2025What is a quadtree? A quadtree is a data structure that efficiently manages 2D spaces like maps. For example, Google Maps includes it as part of its SDK library to locate landmarks and points of interest in a given area. 110
Fernando @francofernando.com · 06/04/2025I spent my Sunday without touching any computer. Only jumping and having fun with my kids. How about you? 010
Fernando @francofernando.com · 05/04/20258. Radix Sort • It finds the max value in the array, determining how many digits it has. • It iterates over each item in the array considering first units, then tens, hundreds etc. • It arranges the elements based on sorted numbers in that digit place. 100
Fernando @francofernando.com · 05/04/20257. Counting Sort • It iterate the array to find the number of items • It creates a counter array of size (num items + 1) with all 0s. • It iterates the array and updates the counter array accordingly. • It sorts the array using the counter array. 100
Fernando @francofernando.com · 05/04/20256. Heap Sort • It keeps the items in a min-heap data structure. • It swaps the root with the right most child node, removes it from the heap, and insert it in the final array. • Then it moves the smallest remaining item to the root. • It stops when the heap is empty. 100
Fernando @francofernando.com · 05/04/20255. Quick Sort It uses Divide-and-Conquer. • A pivot item is chosen, determining its final position in the array. • After that smaller items are on the left of the pivot and larger are on the right. • The left and right subarrays are processed recursively in the same way. 100
Fernando @francofernando.com · 05/04/20254. Merge Sort It uses a Divide-and-Conquer approach. • The array is divided in 2 equal halves. Each half is recursively processed. • At the end of each recursive step there are 2 sorted subarrays. • The 2 sorted subarrays are merged into a sorted one. 100
Fernando @francofernando.com · 05/04/20253. Insertion Sort • In each cycle an item is compared with all other item proceeding it in a reverse order. • If the item is smaller than the compared item, this compared one is shifted to right. • Otherwise the item is inserted next to the compared item. 100
Fernando @francofernando.com · 05/04/20252. Selection Sort • Iterate over the array to find the smallest item. • At the end of each cycle, this smallest item is swapped with the first one. • The next cycle excludes the last positioned smallest item. 100
Fernando @francofernando.com · 05/04/20251. Bubble Sort • Compare 2 adjacent items. If the first is bigger than the second, swap them. • At the end of each cycle, the biggest item on the array moves to the end. • The next cycle through the array leave off the last positioned biggest item. 100
Fernando @francofernando.com · 05/04/2025There are reasons why you should know how sorting algorithms work. First, they're the building block of many programs. Second, they let you learn a lot of great programming techniques. Here are the 8 must-to-know sorting algorithms explained step-by-step: ↓ 120
Fernando @francofernando.com · 02/04/2025If you are a developer who want to get better at algorithms and data structures, read these 11 articles: ↓ 120
Fernando @francofernando.com · 25/03/2025How can you order events in a distributed system? Distributed systems don't have a global clock to order events. They use logical clocks to measure time in terms of logical operations. There are two popular types of logical clocks: ↓ 110
Fernando @francofernando.com · 22/03/2025Scaling up a cluster of database servers is easier with read replicas. But the more replicas you use, the more you must deal with the replication lag. Here are the 3 approaches every backend engineer should know: ↓ 110
Fernando @francofernando.com · 19/03/2025In the Italian tradition, Father's Day is celebrated today. Coming back home and getting this gift from my kids made my day more than everything else. 020
Fernando @francofernando.com · 19/03/2025If you're a software engineer who want to get better at system design, read these 10 articles: ↓ 110
Fernando @francofernando.com · 11/03/2025What are message queues? They are a way to let two services talk asynchronously and are critical in any distributed system. A producer creates messages and puts them in the queue. A consumer gets messages from the queue and processes them. Here's a practical use case: ↓ 121
Fernando @francofernando.com · 09/03/2025Sun and snow. What a day to spend time in the mountains! 010
Fernando @francofernando.com · 08/03/2025As a software engineer, mastering data structures is a game changer. It's not about just passing interviews but writing better code. These are the 7 types of data structures everyone should know: ↓ 110
Fernando @francofernando.com · 04/03/2025You can run Redis without saving data to disk. It is faster, but it means you have no data backups. If you decide to save your data, Redis offers two main methods: RDB and AOF. Which one should you use? 152
Fernando @francofernando.com · 01/03/2025Most software engineers focus on how to read data from a cache. But reading from a cache is only half of the battle. Here are 3 key cache writing methods to know: ↓ 130
Fernando @francofernando.com · 26/02/2025Query Optimization Techniques Ten tips for writing efficient and faster SQL queries: 1. Use column names instead of * in a SELECT statement 2. Avoid including a HAVING clause in SELECT statements 3. Eliminate unnecessary DISTINCT conditions 4. Un-nest sub queries 111
Fernando @francofernando.com · 25/02/2025How can Kafka handle 1+ trillion daily messages? PayPal runs 1.5K brokers worldwide and hosts over 20K topics. But reaching that scale wasn’t just about adding brokers. I read a post on their blog that summed up the main points of their approach: ↓ 110
Fernando @francofernando.com · 22/02/2025Popular coding interview question: "How to reverse a linked list?" Here is how to solve it with a few logical steps: ↓ 100
Fernando @francofernando.com · 20/02/2025When I was a teenager, the hero of the school was the guy using this software and burning CDs for everybody 130
Fernando @francofernando.com · 18/02/2025Latency and throughput are critical for any application. But many developers get them wrong or use them in the wrong way. Here are the key differences you should know: ↓ 120