The Dev
Ledger.
A living collection of practical notes on distributed systems, big data, algorithms, and the engineering details worth remembering.
Pick a topic, then move through related posts without losing your place.
Apache Spark
6 notesAdvanced and Intermediate Concepts in Apache Spark RDD with Java
Building on the fundamentals of RDD, this blog explores advanced and intermediate concepts including partitioning strategies, lineage optimization, broadcast variables, accumulator…
Read noteComplete Guide to Apache Spark Actions
Apache Spark actions are operations that trigger the execution of transformations and return a value to the driver program or write data to external storage. Unlike transformations…
Read noteComplete Guide to Apache Spark RDD Transformations
Apache Spark transformations are operations that create a new RDD from an existing one. They are lazy operations, meaning they don't execute until an action is called. This guide c…
Read noteInstalling Apache Spark on a Local Machine
This guide installs Apache Spark on your local machine so you can run spark-shell, pyspark, and submit jobs with spark-submit.
Read noteRunning a Spark Job on Kubernetes (Rancher Desktop)
This blog provides a step-by-step guide to run a Spark application packaged as a JAR on a Kubernetes cluster using Rancher Desktop.
Read noteUnderstanding RDD in Apache Spark with Java
RDD (Resilient Distributed Dataset) is the fundamental data structure of Apache Spark. It's an immutable, distributed collection of objects that can be processed in parallel across…
Read noteBig Data Development
2 notesData Structures & Algorithms
11 notesArrays: Fundamental Questions & Solutions
This guide covers fundamental array problems commonly asked in technical interviews. Each problem includes detailed explanations, step-by-step example walkthroughs, Python solution…
Read noteArrays: Hard Level Questions & Solutions
This section covers hard array problems commonly encountered in technical interviews. Each problem includes the problem statement, the core idea behind the solution, an example, an…
Read noteArrays: Logic Building & Problem Solving
This section focuses on essential array manipulation problems designed to build algorithmic logic, specifically focusing on in-place partition and two-pointer techniques.
Read noteArrays: Medium Level Questions & Solutions
This section covers medium-difficulty array problems commonly encountered in technical interviews and real-world software engineering. Each problem includes a detailed explanation
Read noteBinary Search: Fundamentals & Boundary Patterns
Binary Search is a foundational divide-and-conquer algorithm designed to efficiently search a sorted array by repeatedly dividing the search interval in half. This note explores es…
Read noteBinary Search: Logic Building & Advanced Problems
Beyond standard sorted arrays, Binary Search is a powerful technique for solving complex algorithmic problems by identifying ordered properties and systematically eliminating half
Read noteBubble Sort Algorithm
Bubble sort repeatedly compares adjacent elements and swaps them when they are in the wrong order. After each pass, the largest unsorted element moves to its correct position at th…
Read noteInsertion Sort Algorithm
Insertion sort builds the sorted part of the list one element at a time by taking the current value and inserting it into the correct position among the already sorted elements.
Read noteMerge Sort Algorithm
Merge sort uses divide and conquer: it splits the list into two halves, sorts each half recursively, and then merges the sorted halves back together.
Read noteQuick Sort Algorithm
Quick sort uses divide and conquer. It chooses a pivot, partitions the list so smaller elements go to the left and larger elements go to the right, and then recursively sorts both
Read noteSelection Sort Algorithm
Selection sort repeatedly picks the smallest value from the unsorted portion of the list and swaps it into the next sorted position.
Read noteJava Development
2 notesDifference Between Abstract Class and Interface in Java
Abstract classes and interfaces both define contracts for classes, but they solve different design problems. An abstract class is useful when related classes share state or common
Read noteObject oriented programming in Java
Object-Oriented Programming (OOP) is a programming paradigm based on the concept of "objects," which can contain data in the form of fields (attributes or properties) and code in t…
Read notePySpark
1 notesSystem Design
3 notesIntroduction to Low-Level Design (LLD)
Low-Level Design (LLD), often referred to as Object-Oriented Design (OOD) or Detailed Component Design, is the phase in software engineering where abstract architectural requiremen…
Read noteSoftware Design Principles: A Comprehensive Guide
Software design principles are foundational guidelines that help software engineers build systems that are easy to understand, maintain, test, and extend. These principles apply ac…
Read noteSOLID Principles in Software Engineering: A Practical Guide with Java Examples
Writing code that works is relatively easy. Writing code that remains easy to understand, test, modify, and extend as the application grows is much harder. This is where the SOLID
Read note