Best of General ProgrammingNovember 2025

  1. 1
    Video
    Avatar of bigboxswebigboxSWE·26w

    Programming books that rewired my brain

    Three foundational programming books are recommended for developers with at least one year of experience: Structure and Interpretation of Computer Programs (SICP) teaches computational thinking and functional programming concepts through Scheme; Computer Systems: A Programmer's Perspective provides deep understanding of how computers work from assembly to networks; and Designing Data-Intensive Applications explains how to build scalable systems. The key advice is to read technical books after gaining practical experience, as retrospective learning helps concepts click better than passive consumption.

  2. 2
    Article
    Avatar of yegor256Yegor's Blog·27w

    Small Repo, High Quality

    Breaking software into smaller repositories instead of using monolithic repos improves code quality through stricter style enforcement, deeper testing, more thorough code reviews, better documentation, faster release cycles, improved AI agent effectiveness, quicker onboarding, stronger code ownership, and easier open-source adoption. While companies like Google and Facebook favor monorepos for reduced integration overhead, smaller repositories enable teams to maintain higher quality standards across multiple dimensions of software development.

  3. 3
    Article
    Avatar of devtoDEV·29w

    The Invisible Developer: Why Caring Burns You Out

    Explores the emotional toll of maintaining code quality standards in environments where craftsmanship is undervalued. Examines how caring deeply about software quality becomes invisible work that leads to burnout when others prioritize velocity over excellence. Argues that integrity means refusing to let care die quietly, even when standards feel increasingly personal rather than cultural. Encourages developers to continue caring visibly about code quality, meaningful reviews, and thoughtful architecture decisions.

  4. 4
    Article
    Avatar of rubyflowRuby Flow·28w

    Growing Software

    Software development benefits from patience and organic growth rather than premature optimization. Complex architectures and abstractions should emerge from actual pain points in the codebase, not from theoretical best practices applied too early. Like tending a garden, developers should let code evolve naturally, refactoring only when the need becomes evident through real usage and maintenance challenges. This approach avoids over-engineering and keeps codebases simpler and more maintainable.

  5. 5
    Article
    Avatar of hnHacker News·27w

    When did people favor composition over inheritance?

    Explores the historical origins and context of the "favor composition over inheritance" principle from the Gang of Four's Design Patterns book. Examines the three-page discussion that led to this aphorism, including the white-box versus black-box reuse distinction, language-specific considerations in Smalltalk and Java, and the compile-time versus runtime trade-offs. References Barbara Liskov's earlier work on subtypes and polymorphism, highlighting that composition and inheritance aren't the only options—first-class procedures offer a third alternative that the simplified aphorism overlooks.

  6. 6
    Article
    Avatar of tonskytonsky.me·27w

    Needy Programs

    Modern software has shifted from serving users to demanding attention and data from them. Applications increasingly require accounts, push constant updates, send unwanted notifications, and force onboarding flows—none of which users actually need. Traditional tools like command-line utilities and programs like Syncthing demonstrate that software can function effectively without these intrusive patterns. The author advocates for returning to user-centric design where programs remain quiet tools that serve their purpose without demanding ongoing engagement or personal information.

  7. 7
    Article
    Avatar of typescripttvTypeScript.TV·29w

    You Don't Need dotenv Anymore

    Node.js v20.6.0 introduced native support for loading environment variables from .env files, eliminating the need for the dotenv package. Developers can now use the built-in loadEnvFile function from node:process or the --env-file CLI flag to manage environment variables without external dependencies. The native solution supports multiple files with override capabilities, and can be enhanced with dotenv-defaults for better developer experience through default value management.

  8. 8
    Article
    Avatar of newstackThe New Stack·25w

    2025’s ‘Advent of Code’ Event Chooses Tradition Over AI

    Advent of Code 2025 introduces significant changes after 10 years: reducing puzzles from 25 to 12, removing global leaderboards, and officially banning AI use. Creator Eric Wastl made these adjustments to reduce stress and time commitment while maintaining the event's spirit. Survey data shows 62% of participants use zero AI, with sentiment against AI in the competition increasing. Python remains the most popular language (40%), followed by Rust (16%), with VS Code as the dominant editor and Linux gaining ground over Windows.

  9. 9
    Video
    Avatar of primeagenThePrimeTime·26w

    All code is IF statements

    A satirical take on software architecture and code complexity, arguing that all code fundamentally reduces to conditional logic (if statements), regardless of how many layers of abstraction, indirection, or architectural patterns are applied. The piece challenges the notion that wrapping basic control flow in complex structures makes code inherently better.

  10. 10
    Article
    Avatar of fasterthanlifasterthanli.me·29w

    Engineering a Rust optimization quiz

    A detailed account of building an interactive Rust optimization quiz for EuroRust 2025, covering the entire process from question design using Compiler Explorer to implementation with Dioxus framework. The author explores compiler optimizations like division-to-shift transformations, floating-point arithmetic edge cases, and memcpy recognition, while solving technical challenges including real-time voting, WebSocket reconnection handling, and scaling to hundreds of concurrent players. The project involved multiple playtesting sessions with Rust community members, last-minute features like GitHub OAuth and swipe gestures, and deployment on Kubernetes.

  11. 11
    Article
    Avatar of matkladmatklad·25w

    Size Matters

    Explores principles for determining optimal code organization size, arguing that the ratio of module size to interface matters more than absolute size. Introduces the concept of minimizing the "cut" by keeping related code together while separating independent concerns, and discusses how physical constraints like screen dimensions can guide better design decisions. Uses examples from TigerBeetle's codebase to illustrate when files should be split or kept together based on cohesion rather than arbitrary line limits.