The hottest Programming Substack posts right now

And their main takeaways
Category
Top Technology Topics
Rings of Saturn 43 implied HN points 07 Jan 26
  1. LMA Manager 2003–2005 use a custom obfuscation scheme to generate per-unique-ID bonus codes. That algorithm can be reimplemented so you can derive the codes from any Unique ID.
  2. LMA Manager 2006 uses RSA to validate codes, but the game's 64-bit modulus was trivial to factor, allowing recovery of the private key and recreation of valid codes. Reproducing the game's custom post-RSA processing (a modified Base32 and an XOR step) yields complete, working codes.
  3. Emulation, decompilation, and small scripts were used to extract the algorithms, and public generator scripts now produce all bonus codes, including an "all bonuses" code that unlocks everything.
Software Design: Tidy First? 950 implied HN points 20 Jan 25
  1. It's important to write more tests after refactoring. This helps improve accuracy and confidence in your code.
  2. When you break down a big piece of code into smaller parts, consider writing smaller tests for those parts, especially if you plan to reuse them.
  3. You might face a dilemma on whether to keep redundant tests after refactoring. It's good to regularly review tests to make sure you have the best approach for checking your code.
escape the algorithm 399 implied HN points 23 Jan 24
  1. Discover small, niche web tools and libraries that excel at specific tasks, adding personality and uniqueness to your internet experience.
  2. Embrace the simplicity and charm of single-purpose tools that focus on doing one thing well instead of trying to solve everything, celebrating their uniqueness and originality.
  3. Appreciate the creativity and value in combining and utilizing tiny tools and libraries rather than always seeking all-in-one solutions, fostering a culture of innovative use of existing resources.
Software Design: Tidy First? 1082 implied HN points 16 Dec 24
  1. People often come to computers with intentions, like wanting to watch a show or add a stop to a trip. But the actions needed to achieve those intentions can be confusing and hard to remember.
  2. When the computer does what we want easily, we feel amazed and grateful. But this happens less often because of complicated menus and actions we have to figure out.
  3. Kids find it easier to use technology because they learn quickly from their friends and practice a lot. They navigate digital worlds more smoothly, while others often struggle with the basics.
Insight Axis 671 implied HN points 22 Oct 23
  1. Creativity is not limited to specific fields like art or music; it is a fundamental aspect of being human, manifested across various domains like science, art, writing, and programming.
  2. The creative process involves daring to create something, followed by refining and improving upon it - a cycle present in science, art, and literature.
  3. In programming and software engineering, creativity is not just about writing code but also about the iterative process of refining, debugging, and deleting code - highlighting the importance of continuous improvement and simplification.
Get a weekly roundup of the best Substack posts, by hacker news affinity:
Blog System/5 827 implied HN points 13 Feb 25
  1. The 'ioctl' system call is used in Unix-like systems to communicate with the kernel in ways that go beyond normal file operations. It allows for special operations not covered by standard read/write calls.
  2. Using 'ioctl' in Rust can be tricky. It often requires unsafe code blocks since it involves direct interactions with the kernel and can affect the running process in unpredictable ways.
  3. There are multiple ways to call 'ioctl' in Rust, including using libraries like 'nix' and 'libc', or even creating custom C wrappers. Each method has its trade-offs in terms of complexity and code structure.
Bite code! 978 implied HN points 02 Jan 25
  1. Shiv allows you to bundle your Python project into a single executable zip file, which includes all your code and its dependencies. This makes it easy to run your program on any compatible server without needing to install anything else.
  2. Creating a zipapp with shiv involves a few steps, including setting up a virtual environment and running specific commands to package your project. It’s important to understand the process to avoid common pitfalls.
  3. Using shiv can simplify deployment, especially for web services or applications with many dependencies. However, it does require Python to be installed on the target machine and might not work well with certain compiled extensions.
The Lunduke Journal of Technology 1148 implied HN points 03 Nov 24
  1. There has been a lot of news recently about Linux and its relationship with Russia, especially regarding programming bans. This issue seems to be getting more complicated in the coming weeks.
  2. The Internet Archive is in the spotlight with some strange developments that are capturing attention. It's raising questions about how information is preserved online.
  3. RISC OS has made progress by adding modern features like WiFi and a web browser. It's nice to see tech advancements, even amid all the chaos in the software world.
The Chip Letter 2839 implied HN points 19 Dec 23
  1. You can learn about computer hardware by studying assembly language of 8-bit systems.
  2. Studying 8-bit architectures is easier to grasp than modern instruction set architectures.
  3. Hacking on 8-bit systems can be a fun and instructive way to understand the basics of microprocessors.
Bite code! 2568 implied HN points 04 Feb 24
  1. TDD can make your code more flexible, reliable, and less error-prone by focusing on testing upfront.
  2. TDD may not work well for everyone, as it requires experience, ability to hold complex models in mind, and sustained focus.
  3. Not all projects are suited for TDD, and it's important to assess the cost and benefit of testing based on project needs and constraints.
The Open Source Expert 59 implied HN points 03 Jul 24
  1. Using Alerts in GitHub Markdown helps highlight important information, making it easier for readers to notice. There are different types of alerts like notes, tips, and warnings that you can use.
  2. To create an Alert, you simply need to use specific Markdown code, starting each line with a '>' symbol. This format makes your content stand out more effectively.
  3. It's important not to overuse Alerts, or they might lose their impact. Use them sparingly to ensure readers pay attention to the key points.
Tech Talks Weekly 59 implied HN points 26 Jul 24
  1. Tech Talks Weekly is a free email newsletter that shares recent talks from dozens of tech conferences. It's a great way to catch up on what you missed!
  2. Readers can participate by filling out a short form to help improve the content. This makes it a community-driven resource.
  3. The newsletter highlights popular talks each week, making it easier for people to discover valuable insights from experts in tech.
Breaking Smart 27 implied HN points 10 Jan 26
  1. Software implementation has a one-way time asymmetry: you can usually tell the minimum time needed, but there is no reliable upper bound. Rare, heavy-tailed bugs create a "bugspace" where time stretches and effort stops correlating with progress.
  2. Debugging becomes fundamentally harder as many independent factors combine — skewed defect distributions, NP‑hard diagnosis, poor observability, human cognitive limits, and organizational frictions — turning implementation into costly search and diagnosis. Tools and heuristics can collapse complexity briefly, but they fail when their assumptions break, producing long stalls and regime shifts.
  3. When stuck there are three pragmatic exits: restart and discard history, ship an expedient imperfect solution, or embrace yak‑shaving and expand scope for internal integrity. Each choice trades off predictable delivery, internal quality, and environmental robustness, so you need to pick explicitly which clock you’re answering to.
Rings of Saturn 58 implied HN points 13 Dec 25
  1. Previously unknown cheat codes were discovered in the N64 game Blues Brothers 2000, letting players trigger big‑head mode, gain extra lives, add money, become a mascot, view partial credits, and refill health.
  2. Reverse engineering located where controller input is stored and found a function that checks 17 cheat sequences held in an array of structs, which explains how the game detects and applies cheats.
  3. Many additional cheats are present but disabled or inert, and a routine appears to enable extra cheats if a save file is named 'marcus' or 'jawad!', implying developers left hidden features that weren’t activated in the retail release.
Blog System/5 827 implied HN points 10 Jan 25
  1. Using Makefiles can help stitch together complex build processes easily. They allow you to create a command dispatcher with minimal code.
  2. By implementing a 'make help' command, you can provide users with a clear overview of available actions and necessary configuration, reducing confusion.
  3. Documenting both targets and user-settable variables in Makefiles can make them more user-friendly. This helps users know how to interact with the project without getting lost.
Meanwhile, on the other side of my brain... 99 implied HN points 27 May 24
  1. The author faced a challenging recovery period after a car accident, including cognitive issues that persisted for months.
  2. Despite challenges, the author is enthusiastic about returning to writing, programming, and sharing knowledge on game development and tools.
  3. The author plans to expand the newsletter's topics, including sharing stories, project updates, and insights, and to create more video content.
LLMs for Engineers 79 implied HN points 12 Jun 24
  1. Pytest is a great tool for evaluating LLM applications, making it easier to set up tests and check their performance. It allows you to program your own evaluation metrics directly in Python without needing complicated configurations.
  2. You can easily collect and analyze data from multiple test runs using Pytest. This helps to understand how consistent the outputs are across different evaluations.
  3. The examples show how to compare different prompts and LLM models, enhancing the flexibility and variety in testing. This allows you to see which setups work best in various scenarios.
Confessions of a Code Addict 673 implied HN points 18 Feb 25
  1. Understanding operating systems is really important for software engineers. It helps you know how your code runs and can make fixing problems easier.
  2. There are different types of books to learn about operating systems: theory books, implementation books, and systems programming books. Each type helps you at different stages of your programming journey.
  3. Some popular OS books, like 'Operating Systems: Three Easy Pieces', are easy to understand and cover key concepts without sticking to just one system. These resources are great for anyone wanting to learn about OS.
Confessions of a Code Addict 288 implied HN points 16 Jul 25
  1. Registers are vital for data movement in x86-64 assembly language. They help store and manage data as the CPU processes it.
  2. Understanding how the size of registers has evolved is key. For example, early registers were 16-bit, but now they handle 64-bit data.
  3. Using hands-on exercises with assembly code can improve your grasp of how these registers work. Observing register values in a debugger is a great way to learn.
Tyler Glaiel's Blog 567 HN points 17 Mar 23
  1. GPT-4 can write code when given existing algorithms or well-known problems, as it remixes existing solutions.
  2. However, when faced with novel or unique problems, GPT-4 struggles to provide accurate solutions and can make incorrect guesses.
  3. It's crucial to understand that while GPT-4 can generate code, it may not be reliable for solving complex, new problems in programming.
Software Design: Tidy First? 375 implied HN points 31 May 25
  1. Using a simpler coding language can help solve complex problems more effectively. It's like making a tough task easier by breaking it down.
  2. There's a technique to get better results from complicated languages by copying from simpler ones. This might be useful for solving tricky coding challenges.
  3. The speed of changes in coding can create new ways to approach these problems. Staying aware of these changes can help developers improve their skills.
In My Tribe 349 implied HN points 06 Jun 25
  1. Software architecture is important for maintaining clean code. It's better to separate data and logic to avoid complications later.
  2. AI can quickly generate code, but it still needs guidance on architectural decisions.
  3. Working on the project is a balance between exploring new technology and refining the foundational structure.
Deus In Machina 36 implied HN points 01 Jan 26
  1. PowerShell can call native C libraries through .NET P/Invoke, letting you bind libraries like raylib with just a .ps1 script and inline C# declarations.
  2. There are practical gotchas: types created with Add-Type can't be redefined in the same session. Platform-specific issues (like Wayland) can also break input functions, so you'll need restarts, renaming, namespaces, or a compiled DLL as workarounds.
  3. This is a fun way to build small demos — the example shows a Pong-like game — but the approach is clumsy for larger projects because of manual input handling and P/Invoke maintenance.
Logos 19 implied HN points 13 Aug 24
  1. The project, Cellar Door, aims to find the most beautiful word in English by using a voting system based on people's preferences. It's a fun way to see which words people like the most.
  2. They initially struggled with a word list that included silly terms, but switched to a more reliable source to ensure the app only features valid words. The process of cleaning up the data is ongoing.
  3. The use of AI tools like OpenAI's API has made coding easier and more efficient for developing apps. However, there's still a need for better platforms to help non-technical users create their own apps with less confusion.
Bite code! 1957 implied HN points 19 Feb 24
  1. Python automatically concatenates strings written next to each other, making it easier to break long strings across multiple lines.
  2. In Python, be mindful of the differences between functions like sorted() and list.sort(), as they behave differently in terms of returning values.
  3. Tuples in Python are created using commas, with parentheses being optional for non-empty tuples, but crucial for tuples of one element to avoid confusion.
Register Spill 294 implied HN points 14 Jan 24
  1. Check how fast your shell starts up by running specific commands.
  2. Optimize your shell startup time by running as few commands as possible, keeping the prompt simple, and doing less.
  3. Profile your shell and tweak your configuration files to improve performance.
Bite code! 978 implied HN points 13 Oct 24
  1. Always have your business logic on both the frontend and the server. If you only trust the client side, you risk getting incorrect data.
  2. Your server needs to handle requests from various sources, including non-standard browsers and bots. These can bypass your frontend checks if they're not replicated on the server.
  3. Any important checks for security and data integrity should happen on the server to prevent unexpected issues. This means you'll often have to duplicate checks that you already do on the frontend.
Data Science Weekly Newsletter 139 implied HN points 12 Apr 24
  1. This newsletter provides links and updates about data science, AI, and machine learning. It's a helpful resource for anyone wanting to stay informed in this field.
  2. One article teaches how to handle real questions using Python, which is great for people wanting practical coding skills. Another discusses techniques to make sure AI outputs stay on task.
  3. The newsletter also features resources and courses to help people learn and improve their skills in data science and related areas. It's a good place to find learning opportunities.
Farrs’s Substack 125 HN points 20 Apr 24
  1. Personal Computers were gaining popularity in 1983, despite being considered toys by some programmers, and had promising applications developed for them.
  2. Taking a risk to work in Personal Computer Software Development led to a successful job offer and opportunity to solve a challenging memory limitation issue.
  3. Facing skepticism and disrespect at the company, the individual showcased exceptional bug-solving abilities, but ultimately chose to leave due to being labeled unfairly.
Confessions of a Code Addict 264 implied HN points 28 Jun 25
  1. Performance optimization in Python has changed a lot due to improvements in the Python virtual machine. Tricks that helped in the past may not be needed anymore.
  2. Creating local aliases for functions can speed up access, but recent Python updates have made this less important. In many cases, the performance difference is small now.
  3. Not all lookups are the same—using direct local references or importing functions can still be faster than accessing them through module paths. Always consider readability vs. speed based on your code's needs.
Bite code! 856 implied HN points 29 Oct 24
  1. Python 3.13 has been released, bringing many new features like better error messages and a new JIT compiler. It's exciting, but users are advised to hold off on upgrading until next year.
  2. Template strings (or t-strings) are introduced, offering a cleaner way to create formatted strings that can be used in various situations. This could help prevent mistakes when handling string formatting for tasks like translation or logging.
  3. New proposals like external wheel hosting and dependency groups in pyproject.toml make it easier to manage packages and their dependencies, especially for larger libraries.
Cobus Greyling on LLMs, NLU, NLP, chatbots & voicebots 99 implied HN points 07 May 24
  1. LangChain helps build chatbots that can have smart conversations by using retrievers for specific information. This makes chatbots more useful in different fields.
  2. Retrievers are tools that find documents based on user questions, providing relevant information without needing to store everything. They help the chatbot give accurate answers.
  3. A step-by-step example shows how to use LangChain with Python, making it easier to create a chatbot that answers user inquiries based on real-time data.
Sunday Letters 39 implied HN points 07 Jul 24
  1. We are experiencing a shift in programming that changes how we interact with code and AI. Just like moving from desktop to cloud, this new way will come with challenges and need new thinking.
  2. Combining traditional coding with AI models is important. It's like writing music where the code provides a solid structure, while AI adds creativity and flexibility.
  3. To succeed in this new environment, programmers should keep learning and adapting, using both past knowledge and new technologies carefully together.
Data Science Weekly Newsletter 179 implied HN points 01 Mar 24
  1. The DSPy framework makes working with large language models easier by focusing on programming instead of complex prompting techniques. This helps reduce errors and improves usability.
  2. A new sequence model approach shows better performance than traditional Transformers, especially for long data sequences. It also works faster, making it a promising development in the field.
  3. Learning resources like online courses and free books on deep learning and causal ML can help deepen understanding of data science. They provide structured material that is great for both beginners and advanced learners.
Bite code! 733 implied HN points 19 Nov 24
  1. You can measure distance using sonar technology, which was once considered advanced but is now easily available and affordable for projects like Raspberry Pi.
  2. Creating fun experiences, like detecting when people pass through a giant Mario pipe and playing a sound, requires careful planning and some troubleshooting.
  3. Working with hardware can be tricky, as it often involves dealing with unexpected issues and requires patience, but it can lead to creative and playful outcomes.
Technology Made Simple 179 implied HN points 27 Feb 24
  1. Memory pools are a way to pre-allocate and reuse memory blocks in software, which can significantly enhance performance.
  2. Benefits of memory pools include reduced fragmentation, quick memory management, and improved performance in programs with frequent memory allocations.
  3. Drawbacks of memory pools include fixed-size blocks, overhead in management, and potential for memory exhaustion if not carefully managed.
Burning the Midnight Coffee 64 implied HN points 15 Nov 25
  1. Transaction-Oriented Programming focuses on breaking down tasks into user-relevant units of work, which can help structure software and make error handling clearer.
  2. Each unit of work should be treated as a transaction, ensuring it is either completed fully or not at all, which can improve reliability in software applications.
  3. Implementing ACID properties (Atomicity, Consistency, Isolation, Durability) helps maintain integrity in software, especially when errors occur, making it easier to manage transactions.