The hottest Programming Substack posts right now

And their main takeaways
Category
Top Technology Topics
Software Design: Tidy First? • 331 implied HN points • 29 Jan 26
  1. Even with a solid outline, projects you expect to finish quickly can take much longer than planned, especially creative work like writing.
  2. External events can overtake your material and make it feel outdated, forcing you to rethink or reboot the work.
  3. Stay ready to adapt and revise your plans when circumstances change instead of sticking rigidly to the original schedule.
Victor Tao • 273 HN points • 28 Aug 24
  1. You can make a pong game more exciting by syncing the ball's movements to music. This allows paddles to dance to the beat as they hit the ball.
  2. Using math and optimization techniques can help you decide where the paddles should hit the ball. It ensures that the game looks good while still following all the rules.
  3. Changing the physics of the game doesn't have to be hard. You just update the rules in your math model, making it easy to test new ideas and keep improving the game.
Bzogramming • 61 implied HN points • 03 Mar 26
  1. There is no universal machine tool: every manufacturing process has hard trade-offs in cost, speed, materials, and geometry, and even hypothetical atom-by-atom assemblers would face stability, energy, and material limits.
  2. In software, theoretical universality (Turing-completeness) doesn’t imply practical usefulness—different paradigms like programming languages, neural networks, and superoptimizers are distinct "software machine tools" with very different real-world strengths.
  3. Big opportunities lie in alternative software tools and analyses—verification-driven code synthesis, superoptimizers, compact magic-constant solutions, better static analysis, and more visual/geometric tooling can solve hard problems more efficiently than brute-force code or giant models.
Don't Worry About the Vase • 1657 implied HN points • 18 Nov 25
  1. GPT-5.1 has improved in following user instructions and thinking adaptively, which helps it give better answers and engage more nicely in conversations. Users can also customize the tone to suit their preferences.
  2. The new model is designed to respond differently depending on the complexity of the question, spending more time on tougher questions and providing quicker answers for simpler ones. This makes it more user-friendly.
  3. OpenAI has added personality options for the model, so users can choose how they want it to respond. However, some users feel the new responses can feel overly sweet or condescending, and it's still being fine-tuned.
DYNOMIGHT INTERNET NEWSLETTER • 640 implied HN points • 08 Jan 26
  1. Reported percentages of vegetarians by country can be wildly inconsistent, so surprising rankings often reflect different surveys and measurement challenges rather than true differences.
  2. A domain can end up on anti-spam blocklists even without sending email or hosting malware, and the removal/verification process can be opaque and hard for individuals to navigate.
  3. Generic drug names are built from meaningful prefixes and suffixes that hint at drug class and mechanism (e.g. -ib for inhibitors, -vir for antivirals), yet there’s no single, easy-to-use comprehensive reference or visualization for the full naming system.
Get a weekly roundup of the best Substack posts, by hacker news affinity:
Jacob’s Tech Tavern • 5904 implied HN points • 08 Jul 25
  1. Swift concurrency is important to understand for effective development in modern iOS programming. Knowing how it works helps you make better decisions when writing code.
  2. The course focuses on two main areas: the reasons behind Swift concurrency and the available tools to use. Understanding when to use each tool is key to solving problems efficiently.
  3. Having a strong grasp of Swift concurrency allows you to predict how your code will behave in different situations. This makes you a more skilled and intuitive developer.
The Chip Letter • 12886 implied HN points • 14 Feb 25
  1. Learning assembly language can help you understand how computers work at a deeper level. It's beneficial for debugging code and grasping the basics of machine instructions.
  2. There are retro and modern assembly languages to choose from, each with its own pros and cons. Retro languages are fun but less practical today, while modern ones are more useful but often complicated.
  3. RISC-V is a promising choice for learning assembly language because it's growing in popularity and offers a clear path from simple concepts to more complex systems. It's also open-source, making it accessible for new learners.
Blog System/5 • 744 implied HN points • 26 Dec 25
  1. ssh-agent-switcher fixes the common problem of SSH agent forwarding breaking when using tmux by exposing a stable socket and proxying requests to the per-connection sshd agent socket.
  2. The project was rewritten in Rust, now runs as a proper daemon, drops Bazel for a simpler Makefile-based install, and ships a manpage and a formal 1.0.0 release for easier installation and packaging.
  3. Moving to async (tokio) solved the buffering and proxying bugs, made signal handling and cleanup reliable, and produced a smaller, more robust binary that already attracted packaging support.
lcamtuf’s thing • 8366 implied HN points • 27 Feb 25
  1. Reaching 5,000 subscribers is a big deal for a project that went against the usual trends. It's great to see growth, even if it seems small compared to others.
  2. Writing a newsletter is unique because you don't get much direct feedback from readers. It's interesting to see who signs up or leaves but hard to know what they really think.
  3. Three articles worth revisiting cover complex topics: discrete Fourier transforms, fractals, and core concepts in electronic circuits. They offer in-depth discussions that are easy to understand, even for beginners.
System Design Classroom • 499 implied HN points • 19 Jul 24
  1. Loose coupling is important in software. It means different parts of a program should depend on each other as little as possible, making it easier to change and fix things.
  2. The Law of Demeter suggests that objects should only talk to their direct friends and not reach out too far. This helps to keep dependencies low and makes code more manageable.
  3. Using strategies like the Single Responsibility Principle, interfaces, and dependency injection can improve your code's structure. This makes modules clear, easy to test, and maintain.
The Kaitchup – AI on a Budget • 79 implied HN points • 03 Oct 24
  1. Gradient checkpointing helps to reduce memory usage during fine-tuning of large language models by up to 70%. This is really important because managing large amounts of memory can be tough with big models.
  2. Activations, which are crucial for training models, can take up over 90% of the memory needed. Keeping track of these is essential for successfully updating the model's weights.
  3. Even though gradient checkpointing helps save memory, it might slow down training a bit since some activations need to be recalculated. It's a trade-off to consider when choosing methods for model training.
@adlrocha Weekly Newsletter • 64 implied HN points • 15 Feb 26
  1. Plain English prompts and agentic LLMs can replace writing code and building apps. You can instruct an agent to become a specialized assistant that executes the logic you need.
  2. Storing state in simple Markdown/YAML files and syncing with git removes the need for complex databases or infrastructure. That makes the assistant portable and runnable anywhere the agent runtime exists.
  3. Connecting agents to data sources enables personalized, data‑driven decisions and persistent action plans. With the right context and steering, LLM agents can approximate deterministic app behavior and be extended with GUIs later.
Jacob’s Tech Tavern • 3280 implied HN points • 30 Jun 25
  1. Data is essential for making applications work smoothly, acting like the oil in a machine. Without it, everything would grind to a halt.
  2. The Foundation library has been around for a long time, helping with things like data management and networking. It's getting a modern upgrade to work better across different platforms.
  3. Understanding how Data is built in the swift-foundation gives insights into its importance and functionality in coding. It's crucial for developers to know how it works under the hood.
Bite code! • 978 implied HN points • 09 Nov 25
  1. Python 3.9 is reaching its End Of Life, which means it won't get any more security updates.
  2. Several new versions of Python have been released, including 3.13.9 and 3.12.12, and a new alpha version, Python 3.15.
  3. A new Django 6 beta is available, introducing features like template partials and background tasks, but it stops supporting older versions of Python.
Jacob’s Tech Tavern • 2842 implied HN points • 14 Jul 25
  1. The app developed for Comic-Con was popular for its cool features but struggled with performance issues. As I used it, the app got slower, draining the battery and eventually crashing.
  2. I needed to improve the app's performance by optimizing how it used SwiftData without losing the cards I had already created. It was important to keep my collection safe while fixing the issues.
  3. This experience highlighted how vital it is to focus on app efficiency and data management to avoid frustration for users and devices alike.
Jacob’s Tech Tavern • 2624 implied HN points • 22 Jul 25
  1. To learn the Swift source code, focus on understanding three key areas: the standard library, the compiler, and the runtime. These are the core building blocks that will help you make sense of the code.
  2. The 'type(of:)' function is important as it helps you find out the dynamic type of an object during debugging. It's a useful tool for any Swift developer to know about.
  3. Looking into the built-in types and how they operate can deepen your understanding of Swift's performance. Exploring the internals can make working with Swift more intuitive.
lcamtuf’s thing • 6530 implied HN points • 08 Feb 25
  1. When picking a microcontroller for simple projects, stick to 8-bit options like AVRs. They are easy to use and work well for tasks that don’t need a lot of speed or memory.
  2. For more demanding applications, like video processing or complex calculations, go for higher-end 32-bit microcontrollers. They are more powerful and can handle heavy data loads.
  3. If you need wireless connectivity and processing power, single-board computers are the way to go. They run full operating systems but can be more expensive and less efficient than microcontrollers.
jDeploy Newsletter • 84 implied HN points • 10 Feb 26
  1. Deep linking is critical to a smooth desktop app experience because it lets links open directly in the native app instantly, avoiding slow web reloads and reducing friction.
  2. Making apps behave as singletons on Windows and Linux is essential so opening a link brings the existing app to the front instead of launching new processes or windows, which saves RAM and avoids clutter.
  3. jDeploy 6 delivers a cross-platform deep-linking solution for Java desktop apps by adding singleton support, simple package.json flags (singleton=true and urlSchemes), and a small desktop library to handle URL/file callbacks.
Bite code! • 733 implied HN points • 17 Nov 25
  1. Keeping lines of code to 80 characters makes it easier for our eyes to read. It helps us quickly find where the next line starts.
  2. Having shorter lines is useful when using multiple tools side by side, like browsers and code editors. It makes coding and comparing changes easier.
  3. Sticking to the 80-character limit can improve programming habits, like using clear variable names and reducing complexity in code. This helps create better overall code.
Jacob’s Tech Tavern • 7872 implied HN points • 18 Nov 24
  1. Libraries are just code you use in your projects. There are two types: static and dynamic, which impact how they are linked to your app.
  2. Dynamic linking happens at runtime, making builds faster but can slow down app launch times. Static linking copies everything into the app, which can make the app bigger but loads faster.
  3. Mergeable libraries combine the benefits of both static and dynamic linking, aiming to speed up builds while keeping app launch times quick.
Kathy PM • 23 implied HN points • 06 Mar 26
  1. Don’t stress about finding a single perfect passion — start by getting good at something practical, and passion often grows out of skill and momentum.
  2. Take risks early: try different roles, join startups, and be willing to fail because those experiments create big career leaps and help you figure out what you want.
  3. Trust your curiosity and grit; staying determined and adaptable will let you turn uncertainty or setbacks into defining opportunities.
Data Science Weekly Newsletter • 139 implied HN points • 15 Aug 24
  1. The Turing Test raises questions about what it means for a computer to think, suggesting that if a computer behaves like a human, we might consider it intelligent too.
  2. Creating a multimodal language model involves understanding different components like transformers, attention mechanisms, and learning techniques, which are essential for advanced AI systems.
  3. A recent study tested if astrologers can really analyze people's lives using astrology, addressing the ongoing debate about the legitimacy of astrology among the public.
atomic14 • 346 implied HN points • 18 Dec 25
  1. Don't rely on printf() or GPIO pin waggling as your primary way to debug ESP32 projects.
  2. There are better, more reliable debugging approaches and tools you should use instead of ad‑hoc prints and pin toggles.
  3. Learn a structured debugging process — the "six stages of debugging" (covered in the video and short blog post) can help you diagnose problems more effectively.
Artificial Ignorance • 113 implied HN points • 02 Feb 26
  1. The Codex desktop app turns coding into managing multiple AI agents, using git worktrees to run parallel, isolated workstreams so you can review and orchestrate instead of writing every line.
  2. Combining Skills, MCPs, Automations, compaction, and stronger long-horizon models lets agents run long, coherent threads that fetch context, test, and deploy, so you can work at a higher level of abstraction.
  3. The role of programmers is shifting from hands-on craftsmanship to providing vision, taste, and judgment, which increases leverage but can feel bittersweet for those who love building code themselves.
Bite code! • 1834 implied HN points • 23 Jul 25
  1. 'Parse, don't validate' means that we should focus on understanding and converting our input into a usable format instead of just checking if it's correct. This makes our code more reliable.
  2. Parsing is about changing raw data into a structured format that makes it easier to work with, which can also help us avoid mistakes later on.
  3. In Python, the way we structure our data impacts how much work we need to do and how confident we can be in our code. It's important to find the right balance of parsing versus performance.
Computer Ads from the Past • 384 implied HN points • 08 Dec 25
  1. Komputerwerk was a Pennsylvania-based company from the mid-1980s that made tools for compiled BASIC; records conflict but it appears to be no longer active.
  2. Its flagship product, Finally!, was a library of over 100 named subroutines for compiled BASIC, with source code and documentation for tasks like array math, string trimming, sorting, charts, and system queries.
  3. They also sold Xgraf, an assembly-language graphics kernel for QuickBASIC that added extended graphics calls, screen packing, zooming, and file save/load/import features.
VuTrinh. • 259 implied HN points • 13 Jul 24
  1. Kafka uses the operating system's filesystem to store data, which helps it run faster by leveraging the page cache. This avoids the need to keep too much data in memory, making it simpler to manage.
  2. The way Kafka reads and writes data is done in a sequential order, which is more efficient than random access. This design improves performance, as accessing data in a sequence reduces delays.
  3. Kafka groups messages together before sending them, which helps reduce the number of requests made to the system. This batching process improves performance by allowing larger, more efficient data transfers.
Software Design: Tidy First? • 1855 implied HN points • 25 Jun 25
  1. Augmented coding is different from vibe coding. It's about caring for the code quality and complexity, not just getting the system to work.
  2. Keeping the project scope clear is key. You should focus on specific tasks, like creating a B+ Tree, while ensuring the code is tidy and functional.
  3. Collaboration with AI tools can enhance coding efficiency. You can rely on AI for tasks like writing tests or suggesting optimizations, but you must guide it to stay on track.
Deus In Machina • 72 implied HN points • 05 Feb 26
  1. Technological lock-in has been the default for decades, so AI tools are more inheriting existing monocultures than creating them. They might speed up adoption of dominant tools, but the fundamental switching costs already existed.
  2. Products and tools tend to win by being familiar, not necessarily by being better, because people avoid relearning interfaces. That’s why many improvements preserve old APIs and conventions instead of introducing new paradigms.
  3. Concrete chokepoints — like the C ABI, curly-brace syntax, dominant CPU/GPU ecosystems, and the browser stack — show how early choices constrain future innovation. Those entrenched standards make it hard for new languages, hardware, or platforms to gain traction even before factoring in AI.
Jacob’s Tech Tavern • 1749 implied HN points • 24 Jun 25
  1. Apple's concurrency APIs have evolved significantly since 1977, with each new version reflecting advancements in technology. Today, developers can handle complex tasks easily, thanks to modern tools.
  2. In the early days of computing, like with the Apple ][, parallel processing was nearly impossible because machines had limited capabilities. Over the years, technology grew, leading to better tools for developers.
  3. Swift Concurrency is considered a major breakthrough for the Swift programming language, making it easier to manage multiple tasks and streamline code.
Software Design: Tidy First? • 1745 implied HN points • 10 Jun 25
  1. Cognitive decline can be hard to deal with. It can affect your daily life, work, and relationships.
  2. Getting a clear diagnosis is important, even if it doesn't provide all the answers. It can help you understand your situation better.
  3. Sharing your struggles can help others who may be going through similar issues. It's okay to seek help and adapt to new challenges.
Jacob’s Tech Tavern • 3936 implied HN points • 30 Dec 24
  1. Swift 6 introduced a new Synchronization framework that includes features like Mutex and Atomics. These help manage how different parts of a program can work together safely.
  2. The new concurrency tools are based on a concept called generic ownership, which is new for Swift 6. This means they have better performance and flexibility.
  3. The article also compares these new low-level features to high-level ones like Actors to see how they perform. This can help developers choose the right tool for their needs.
lcamtuf’s thing • 3673 implied HN points • 10 Jan 25
  1. Understanding C's syntax can be tricky, especially with function declarations and typedefs. You'll find that some definitions may not be exactly what they seem.
  2. C allows some flexibility with variable and function declarations, which can lead to surprising behaviors, so always double-check how your symbols interact in different scopes.
  3. There are quirky features in C, like a BASIC compatibility mode for line numbering, showing that the language has some fun, unexpected twists!
Franz likes to code • 39 implied HN points • 05 Sep 24
  1. If you're having trouble with the Google Trends Python package, you can switch to using Wikipedia's page view statistics instead. It's a reliable and official way to get data on search trends.
  2. Wikipedia provides a rich API that allows you to fetch daily or hourly view counts for specific articles. This can help analyze how topics gain interest over time.
  3. You can use a simple Python code to find the page views for any Wikipedia article, making it easy to replace Google Trends in your research and get the data you need.
Encyclopedia Autonomica • 19 implied HN points • 09 Oct 24
  1. Using Transformer Agents 2.0 is a step up from traditional methods. They can handle multi-step tasks better and have memory to store information as they work.
  2. Setting up and building a basic ReAct Agent is straightforward. You only need to install some packages and create the agent using selected models and tools.
  3. You can orchestrate multiple agents together for more complex tasks. By combining different agents, you can enhance their capabilities and improve the results of your searches or queries.
Jacob’s Tech Tavern • 1530 implied HN points • 16 Jun 25
  1. WebSockets are great for real-time communication because they keep a constant connection open, allowing data to flow smoothly without the delays of making separate requests. This is much more efficient than traditional methods.
  2. Combine is a powerful tool that helps manage and combine streams of data in a clean and organized way. When used with WebSockets, it makes building reactive applications easier and more straightforward.
  3. Using real-time systems can enhance user experience in various applications, like gaming or auctions, by providing instant updates and interactions. Implementing these technologies can help create engaging and responsive apps.
Basta’s Notes • 286 implied HN points • 05 Dec 25
  1. Code reviews are crucial for maintaining a clean and efficient codebase. By giving thoughtful feedback, you help improve the team’s overall coding practices.
  2. With the rise of AI in programming, it’s important to not just trust the AI’s output. You need to review and refine its work to make sure it fits well within the overall code structure.
  3. Looking for common issues, like duplicated code, is key during reviews. Small repetitive mistakes can pile up and make the codebase messy, so it's best to address them early.
Jacob’s Tech Tavern • 2842 implied HN points • 10 Feb 25
  1. The \\_VariadicView feature in SwiftUI helps create custom components like flexible tab bars and lists. It's useful for developers wanting more control over their UI elements.
  2. Finding real-world examples for \\_VariadicView can be tough, but it can significantly help in building complex UIs like chat applications.
  3. A specific application of \\_VariadicView is creating a reusable 'ChatList' component that manages scroll inversion, making it easier to handle messaging apps.
The Palindrome • 4 implied HN points • 14 Mar 26
  1. Machine learning means training predictive models from data. The core setup uses a dataset, a parametric model (a hypothesis), and a loss function to measure how well the model fits the data.
  2. A model approximates the true input–output relation and depends on both its parameters and the training data (often written h(x; w, D)). Models can be deterministic or probabilistic and belong to different families like generative or discriminative.
  3. Which learning paradigm you use depends on what inputs, outputs, and labels are available — the main paradigms are supervised, unsupervised, semi‑supervised, and reinforcement learning. In supervised learning you have input–label pairs and the goal is to learn the mapping from x to y.
Cloud Irregular • 2956 implied HN points • 20 Jan 25
  1. Nix is a tool that helps you set up your software environment the same way every time, making deployments easier. It's designed to manage software dependencies reliably.
  2. Nix can be complex to learn, especially because it uses functional programming concepts. This makes some programmers hesitant to adopt it.
  3. While Docker is useful for containerization, Nix offers better reproducibility for builds by focusing on what the environment should look like, rather than just the steps to create it.