Debugging Strategies Every Developer Should Know
Master binary search debugging, rubber duck method, git bisect, stack traces, logging levels, and when to use print statements vs a debugger.
144 posts · page 1 of 3
Master binary search debugging, rubber duck method, git bisect, stack traces, logging levels, and when to use print statements vs a debugger.
Understand what system design is, why it matters for engineers, the core building blocks of scalable systems, and how to approach system design interviews.
Master Airflow DAGs -- learn the anatomy of a DAG file, scheduling with cron and presets, defining task dependencies, fan-out patterns, and task lifecycle states.
Step-by-step guide to installing Apache Airflow using pip with constraints or Docker Compose, creating an admin user, and verifying your setup works correctly.
Learn what Apache Airflow is, why Airbnb created it, how DAGs work, and when to use Airflow for orchestrating data pipelines, ETL workflows, and ML operations.
Understand the difference between ETL and ELT pipeline patterns, when to use each, and how modern cloud warehouses changed the default choice.
Understand what data engineers do, how they differ from data scientists, the core skills required, and why this role is one of the most in-demand in tech.
Step-by-step guide to running Apache Kafka locally using KRaft mode binaries and Docker Compose — includes Schema Registry, Kafka UI, topic creation, and CLI producer/consumer testing.
A deep dive into Kafka's core data model — how topics organize data, how partitions enable parallelism and ordering, how offsets track consumer progress, and how retention and compaction manage storage.
A practical introduction to Apache Kafka — what it is, why it exists, its core concepts, and how it differs from traditional message queues. Includes your first producer and consumer code.
Learn DynamoDB fundamentals — tables, primary keys, queries, scans, GSIs, single-table design, and using boto3 in Python.
Automate server configuration with Ansible — inventory, playbooks, modules, roles, and idempotent infrastructure management.
Learn Terraform from scratch — providers, resources, variables, state, modules, and deploying your first infrastructure as code.
Manage persistent data in Docker — named volumes, bind mounts, tmpfs, backup strategies, and volume drivers for production.
Build linear regression from scratch — the math, gradient descent, cost function, and a NumPy implementation compared to scikit-learn.
Understand Rust's ownership model — move semantics, borrowing, references, lifetimes, and why the borrow checker exists.
Solve Fizz Buzz with clean code and explore the string-concatenation pattern that avoids nested if-else. Python, Java, C++, and complexity analysis included.
A practical guide to Astro components and layouts — frontmatter, typed props, slots, named slots, and the BaseLayout pattern every Astro project converges on for shared shell HTML.
A practical walkthrough for scaffolding an Astro 5 project — installing Node.js, running npm create astro, understanding the file layout, writing your first .astro page, and producing a production build.
A clear introduction to Astro — what it is, why zero JavaScript by default matters, how content collections and islands work, and the kinds of sites Astro is the right tool for.
A beginner-friendly tour of Amazon EC2 — instance types, AMIs, key pairs, security groups, launching via the console, SSH access, the free tier, and the difference between stopping and terminating an instance.
A beginner-friendly tour of AWS Lambda — the handler signature, runtime choices, triggers from API Gateway and S3 and EventBridge, cold starts, packaging, and the IAM execution role every function needs.
A realistic plan for software engineer interview prep — what the loops look like, where to study, how to practice deliberately, mock interviews, talking while coding, and behavioral STAR.
Use the Django admin to get a free CRUD interface for every model — createsuperuser, register models, customise list_display and search_fields, and add inline admins.
A hands-on Django setup guide — virtual environments, pip install django, startproject, runserver, and creating your first app. Get to a working dev server in ten minutes.
A practical introduction to Django — its newsroom origins, the batteries it ships with (ORM, admin, auth, templates), and when to pick it over FastAPI or Flask.
A beginner's introduction to arrays — contiguous memory, indexing, the Python list vs C array caveat, time complexity of read/write/insert/delete, and 1D vs 2D arrays.
A practical guide to Big-O notation — O(1), O(log n), O(n), O(n log n), O(n^2), and beyond, with code examples, best/average/worst case, and a brief look at amortized and space complexity.
A practical introduction to binary trees — the TreeNode class, terminology (full, complete, perfect, balanced), height vs depth, BSTs, and the small calculations you need to reason about tree problems.
A practical introduction to bit manipulation in Python — binary representation, the bitwise operators, two's complement, and the common operations to set, clear, toggle, and check individual bits.
A practical introduction to graphs — directed vs undirected, weighted vs unweighted, cyclic vs acyclic, and the three main representations (adjacency list, adjacency matrix, edge list) with Python code.
A practical introduction to linked lists — what a node is, singly vs doubly linked, head and tail, how arrays and linked lists differ, and a clean Python implementation you can build on.
A practical introduction to recursion — the base case, the recursive case, the call stack, and how to think about problems that solve themselves through smaller versions of themselves.
A practical introduction to stacks and queues — LIFO vs FIFO, using a Python list as a stack, collections.deque as a queue, and the real-world problems each one solves cleanly.
An introduction to strings for data structures and algorithms — immutability, indexing, slicing, common operations, ASCII versus Unicode, and the two-pointer and frequency-counter patterns you will use everywhere.
A beginner-friendly introduction to data structures and algorithms — what they are, why they matter for interviews and real performance, and how to actually start learning DSA.
A clear introduction to GraphQL — a single endpoint, exact-fields queries, a typed schema, and how it compares to REST. Learn when GraphQL fits and when it doesn't.
A practical introduction to web accessibility — semantic landmarks, alt text, labels, focus management, keyboard navigation, contrast, and when to reach for ARIA.
A practical tour of the meta tags every page should ship — title, description, viewport, charset, Open Graph, Twitter cards, canonical, robots, and a gentle intro to JSON-LD.
A practical guide to the Next.js App Router — file-based routing, nested layouts, dynamic segments, client-side navigation with Link and useRouter, and the special loading and error files.
A practical walkthrough for installing Next.js 15 with create-next-app, understanding every file in the generated project, running the dev server, and shipping a production build.
A clear introduction to Next.js — what it is, why it exists on top of React, what the App Router and Server Components actually do, and where it fits compared to plain React, Astro, and Remix.
The handful of VS Code shortcuts and habits worth learning — Command Palette, multi-cursor, fuzzy file and symbol search, the integrated terminal, source control, and settings worth changing.
A practical walkthrough of HTTP methods — semantics, safety, idempotency, body conventions, and the differences between POST, PUT, and PATCH. Plus OPTIONS and HEAD.
A practical tour of HTTP status codes — 2xx success, 3xx redirects, 4xx client errors, 5xx server errors. Which to return when, and the common mistakes to avoid.
A practical guide to Rust functions — fn syntax, parameter types, return values, the difference between statements and expressions, the trailing-expression rule, and early returns.
A complete walkthrough of installing Rust with rustup on macOS, Linux, and Windows, then creating your first Cargo project and running it from the terminal.
A friendly tour of Rust's ownership system — the three rules, move semantics, Copy vs Clone, borrowing with & and &mut, the borrow checker, and the beginner errors you'll see first.