Best of freeCodeCampJanuary 2026

  1. 1
    Article
    Avatar of freecodecampfreeCodeCamp·15w

    Learn Dynamic Programming Through Dynamic Visuals

    A comprehensive 2-hour video course teaches dynamic programming through visual patterns rather than memorization. Created by an ex-Google engineer, it covers six fundamental DP patterns including constant transition, grid patterns, two sequences, interval DP, non-constant transition, and knapsack problems. Each pattern is explained with logic and Python code examples, using classic problems like Climbing Stairs, Longest Common Subsequence, and Coin Change to build intuition for optimization.

  2. 2
    Article
    Avatar of freecodecampfreeCodeCamp·16w

    Build Your Own Kubernetes Operators with Go and Kubebuilder

    A comprehensive 6-hour video course teaches how to build custom Kubernetes operators and controllers from scratch using Go and Kubebuilder. The course covers controller theory, Kubernetes extensibility, environment setup, API and logic building, hands-on development, and advanced internals including Informers, Caches, Finalizers, and Idempotency. A practical example demonstrates managing AWS EC2 instances directly from Kubernetes, treating Kubernetes as an SDK rather than just a deployment platform.

  3. 3
    Article
    Avatar of freecodecampfreeCodeCamp·15w

    How to Implement Type Safe Unions in C# With OneOf

    OneOf is a C# library that implements discriminated unions, allowing methods to return one of several predefined types in a type-safe manner. Unlike tuples that bundle multiple values together, OneOf represents a choice between types (A or B or C), with compiler-enforced exhaustive handling through the .Match() method. The library provides a cleaner alternative to exception-driven control flow, inheritance hierarchies, and marker interfaces. Common use cases include polymorphic return types without inheritance, state machines with rich data per state, multi-channel notifications, file format handling, and explicit error handling. The approach makes failures explicit in method signatures, improves code readability, and eliminates entire categories of bugs by forcing developers to handle all possible cases at compile time.

  4. 4
    Article
    Avatar of freecodecampfreeCodeCamp·16w

    How to Use the tailwind-sidebar NPM Package in Your React and Next.js Apps

    The tailwind-sidebar NPM package provides a lightweight, utility-first sidebar component built with Tailwind CSS for React and Next.js applications. Installation involves adding the package via npm/yarn, importing components (AMSidebar, AMMenuItem, AMMenu, AMSubmenu, AMLogo), and configuring routing with react-router or next/link. Key features include responsive design through Tailwind breakpoints, full customization via utility classes, nested submenu support, icon integration, smooth animations, and minimal JavaScript overhead. The package relies entirely on Tailwind utilities rather than custom CSS, keeping bundle sizes small while maintaining flexibility for colors, spacing, hover states, and layout control.

  5. 5
    Article
    Avatar of freecodecampfreeCodeCamp·16w

    Unit Testing in Go - A Beginner's Guide

    Go's testing approach is deliberately minimal, using regular Go code and the standard library's testing package. Tests live in files ending with `_test.go`, with functions starting with `Test` that take `*testing.T`. The guide covers writing basic tests, running them with `go test`, using table-driven tests for multiple cases, handling error returns, and checking for panics. Key patterns include using `t.Errorf` for failures, `t.Run` for subtests, and organizing test cases in struct slices. Best practices emphasize clear naming, focused tests, explicit error checking, and frequent test runs.

  6. 6
    Article
    Avatar of freecodecampfreeCodeCamp·16w

    Why is Debugging Hard? How to Develop an Effective Debugging Mindset

    Debugging is as critical as coding but often neglected as a deliberate skill. Most developers debug reactively through guessing rather than systematically. A mental model framework transforms debugging from trial-and-error into structured investigation: identify the bug, define provable facts, surface hidden assumptions, form a hypothesis about the root cause, verify it with tools, then fix with confidence. This methodology is demonstrated through a common JavaScript async bug where setTimeout doesn't block execution. The framework applies universally across languages and tools, making experienced developers adaptable to new technologies.

  7. 7
    Article
    Avatar of freecodecampfreeCodeCamp·17w

    How to Build an In-Memory Rate Limiter in Next.js

    Rate limiters control API request frequency to prevent abuse and manage costs. This guide implements an in-memory rate limiter for Next.js using the fixed window algorithm, tracking requests by unique identifiers and blocking excess traffic with 429 responses. The implementation stores usage data in a Map, automatically clears expired entries, and can be applied to any API route. Artillery load testing confirms the limiter accurately enforces limits (12 requests per 60 seconds) even under high traffic, with 99% of requests maintaining sub-100ms latency.