Click any tag below to further narrow down your results
Links
The article details the author's project, Bob, which compiles the Scheme programming language to WebAssembly. It discusses the implementation of a new compiler that uses WASM's garbage collection to manage Scheme objects and highlights the challenges of handling complex data types. The author shares insights from the project, including how symbolic representations are handled in WASM.
This article guides you on creating a ChatGPT app, focusing on embedding your code into the platform. Colin Matthews, an experienced AI instructor, provides practical insights and resources to help you get started.
PHP 8.5.0 introduces a new operator "|>" that allows for a more streamlined way to apply functions to values. It also adds the "#[\NoDiscard]" attribute to enforce the use of return values and introduces attributes for constants. Check the migration guide for more details on these changes.
Yaklang is a domain-specific programming language designed for cybersecurity tasks. It includes a dedicated virtual machine and tools for vulnerability analysis, security product development, and general-purpose programming. Its modular architecture allows users to create and automate security workflows efficiently.
The article discusses Claude Code, an advanced AI tool that can autonomously generate software and websites based on user prompts. It highlights how Claude combines various techniques to manage tasks, analyze data, and improve its performance, making it a powerful resource for users with programming needs. However, the tool is primarily designed for programmers, limiting accessibility for non-technical users.
This article discusses how AI agents impact the choice of programming languages, emphasizing the importance of static type systems and code comprehension. It highlights the challenges of understanding and maintaining code generated by AI, as well as the necessity for clear source code to preserve knowledge within software projects.
This article introduces Kaitai Struct, a tool for creating binary parsers in a declarative way. It provides a step-by-step guide on defining a dummy binary format, writing a serialization function, and creating a parser in Python to read the format. The author emphasizes the utility of Kaitai Struct in reverse engineering and protocol analysis.
The article argues against using if statements for validating command-line interface (CLI) flags, highlighting the limitations of traditional libraries. It introduces Optique, a TypeScript library that allows for modeling relationships between options directly in the parser, enabling better type safety and reducing the need for runtime checks.
This article critiques the trend of using obscure and whimsical names for software tools, arguing that they hinder understanding and efficiency. It references Richard Stallman's emphasis on memorable names and compares naming conventions in software to those in other engineering fields. The author calls for a cultural shift towards clearer, more descriptive naming practices in programming.
This article argues against the idea that advancements in AI, particularly large language models, will replace software developers. The author reflects on historical trends where similar predictions proved wrong and emphasizes that programming involves complex human thinking that AI cannot replicate. The demand for skilled programmers will continue as businesses navigate current technological hype and economic challenges.
This article discusses the author's critical views on the Zig programming language, particularly its lack of memory safety and inconsistent generics implementation. The author uses comparisons with Rust and other languages to highlight shortcomings, including compiler speed and confusing features. It's a subjective analysis aimed at sparking discussion about Zig's design choices.
Greptile offers AI-driven code reviews that adapt to your code's context, helping teams maintain coding standards. It supports self-hosting on major cloud platforms, ensuring data privacy and compliance with regulations like GDPR and HIPAA. The service is compatible with popular version control systems and supports various programming languages.
NanoLang is a lightweight programming language designed for large language models. It features mandatory testing, unambiguous syntax, and verified semantics. NanoLang can compile to native C or run on its own virtual machine with isolated foreign function interface support.
The article discusses the evolution of large language models (LLMs), highlighting the shift in perception among researchers regarding their capabilities. It emphasizes the role of chain of thought (CoT) in enhancing LLM outputs and the potential of reinforcement learning to drive further improvements. The piece also touches on the changing attitudes of programmers toward AI-assisted coding and the ongoing exploration of new model architectures.
The article lists several configuration languages and highlights their shortcomings. The author shares personal frustrations with each format, ultimately revealing the creation of their own language, MAML, which aims to address these issues.
This article introduces "The Concise TypeScript Book," which covers TypeScript's features and best practices for developers at any level. It emphasizes the importance of strong typing and provides practical examples to enhance coding skills. The book is free and open source, supporting various languages and offering downloadable formats.
Collins Dictionary has named "vibe coding" as its word of the year for 2025. This term describes the process of creating apps by simply describing them to AI instead of writing traditional code. While it simplifies programming for non-coders, the results can still be hit or miss.
This article explains how to create a functional AI agent using the Gemini Interactions API. It breaks down the process into clear steps, from initial text generation to integrating tools that allow the agent to perform tasks. The guide emphasizes the simplicity of building agents by managing conversation state on the server side.
The author shares a simple Markov text generator called Mark V. Shaney Junior, inspired by an old Usenet program. They explain how the model works, share examples of gibberish generated from their blog posts, and discuss the limitations of Markov models compared to modern language models.
The author shares their experience programming during subway commutes in New York City. They discuss the challenges and benefits, such as limited distractions and opportunities for deep thinking, while also noting the need for a seat and the potential for social interactions.
This article revisits the Clang Hardening Cheat Sheet from ten years ago, highlighting new security mitigations in the Clang toolchain. It covers essential flags and options to enhance application security against modern threats, including stack-based memory corruption and dynamic loading vulnerabilities.
The article examines the competitive landscape of open-source and proprietary AI models, highlighting that proprietary providers maintain pricing power despite cheaper alternatives. Open-source models have stabilized at about 22-25% market share, while programming use cases dominate among leading providers. Retention rates vary significantly, with some models showing stronger user engagement than others.
The article discusses the rapid growth of C++ and Rust from 2022 to 2025, attributing it to the increasing demand for efficient programming languages driven by limitations in hardware capabilities and power supply. It also addresses misconceptions about C++'s safety and security, highlighting improvements in the upcoming C++26 standard.
This article outlines how to optimize Claude Code by tailoring its settings, skills, commands, and hooks to fit specific programming workflows. It emphasizes the importance of configuring the AI to better match team preferences rather than forcing the workflow to adapt to default settings.
This article presents JSON Structure, a modern data definition language designed for simplifying code generation and data interchange. It addresses the limitations of JSON Schema by offering a rich set of types and features, making it easier for developers to work with structured data across various programming languages.
This article explains the `satisfies` keyword in TypeScript, highlighting its role in type inference and safety. It contrasts `satisfies` with explicit type annotations, showing how it allows TypeScript to infer more specific types while ensuring assignments are valid.
Armin Ronacher discusses the significant changes in his programming approach and the impact of AI tools like Claude Code throughout 2025. He explores the evolving relationship between developers and AI, the challenges of code review in the age of agentic coding, and the need for innovation in version control and observability.
Timothy Cain, co-creator of Fallout, argues that modern game developers can learn valuable lessons from the constraints of 1980s games. He highlights the importance of focused gameplay and efficient coding, suggesting that contemporary titles often lack direction and try to cater to everyone. Indie games, he notes, often maintain this focused approach due to their development limitations.
The article shares practical strategies for generating C code from higher-level languages, particularly in compiler design. It covers topics like using static inline functions for data abstraction, avoiding implicit integer conversions, and manual register allocation for better performance. The author also discusses the limitations of generating C compared to other languages like Rust.
The article examines whether large language models (LLMs) can function like compilers, translating vague specifications into executable code. It argues that while LLMs may offer ease in programming, they also create risks by relying on imprecise natural language, which can lead to unintended outcomes. Effective specification becomes critical as development shifts toward iterative refinement rather than structured coding.
The author reflects on how app subscriptions have turned into personal projects. As a software engineer, he has started creating simple macOS applications using vibecoding, despite having no prior experience. He sees a shift in the app landscape where standalone apps are becoming features rather than products.
This article chronicles the development and impact of the Ralph Wiggum Technique created by Geoff Huntley, detailing key events from its inception in June 2025 to early 2026. It discusses the tool's unique approach to coding, the challenges faced, and lessons learned from various experiments with the technique.
dbt Core v1.11 introduces user-defined functions (UDFs), allowing users to register custom functions within their dbt projects for better code reuse across their data stack. This release also emphasizes stricter authoring standards and includes various adapter-specific enhancements.
The author discusses their decision to pause development on Boo, a personal code editor, to work on a new programming language. They emphasize the importance of inspiration in software creation and reflect on their passion for programming and building software that resonates with users.
This article explains bidirectional type checking, a method that simplifies type inference and checking in programming languages. It outlines a straightforward implementation using a small language and demonstrates how to build a functional type checker. Readers can learn how type annotations and abstract syntax trees work together in this process.
The article highlights a significant rise in Python's adoption among developers, noting a 7 percentage point increase from 2024 to 2025. It discusses the languages developers have used and their interest in future technologies, with a focus on AI and data science.
This article clarifies what an async agent truly is, emphasizing that no agent is inherently asynchronous. It outlines the distinction between an agent and its management of tasks, arguing that an "async agent" should refer specifically to one that orchestrates multiple subagents concurrently.
This article explores the author's journey with Ruby on Rails, highlighting its impact on their career and friendships. It discusses the cultural significance of the Ruby community and the joy of programming with Rails during its early days. The piece also critiques how Rails has evolved over time.
Metis is an open-source tool developed by Arm to enhance security code reviews using AI. It leverages large language models for semantic understanding, making it effective in identifying vulnerabilities in complex codebases. The tool is extensible and supports multiple programming languages.
Kimi Agent SDK offers libraries for multiple programming languages, allowing developers to integrate the Kimi CLI agent into their applications. It enables automation, custom tooling, and session orchestration, all while leveraging existing Kimi CLI configurations. The SDK supports Go, Node.js, and Python.
The article discusses how the rise of AI tools like LLMs is diminishing the need for small open source libraries, such as blob-util. The author reflects on the loss of educational value in coding as instant solutions replace the learning process. While acknowledging the challenges, they express hope for more innovative open source projects that can't be easily replicated by AI.
This article explores how emotional and identity-driven factors often overshadow rational decision-making in choosing programming languages. It uses real-world examples to highlight how these biases can lead to costly mistakes, emphasizing the need for objective analysis rather than decisions based on ego or trends.
This article discusses the challenges of using AI to generate code for distributed systems, emphasizing that traditional coding practices can lead to bugs that are hard to catch. It argues for frameworks like Hydro that make distributed behavior explicit and aim to reduce these bugs by design, rather than relying solely on testing.
The article details a developer's experience with GitHub's API when trying to link PR comments to their database. It explains the differences between GitHub's node IDs and database IDs, revealing how to extract database IDs from node IDs using bitmasking and MessagePack decoding. The author also discusses the complexities of GitHub's dual ID formats and their implications.
The article discusses how AI tools are pushing developers toward typed languages due to the increased reliability they offer. With AI generating more code, type systems help catch errors and maintain project standards, leading to a rise in languages like TypeScript and others.
This article provides an overview of MiniMax's text generation models, highlighting their capabilities and use cases. It details the performance and context window of each model, along with their applications in programming and office productivity. The M2.5 model, in particular, showcases advanced features for efficient coding and task execution.
Zig has introduced a new generic interface for asynchronous I/O that allows code to run with either synchronous or asynchronous operations without complicating the language. This design aims to improve performance while maintaining simplicity and control for developers. Some features are still experimental, but the overall model is set to enhance programming efficiency in Zig.
The author reflects on their two-year experience using AI for coding, revealing that while AI can handle simple tasks, it struggles with complex, evolving projects. After encountering significant issues with the quality of AI-generated code, they decide to return to hand coding, finding it more effective and reliable.
This article guides readers through creating a basic software renderer using 500 lines of C++. It covers the essentials of rendering a 3D model from scratch, focusing on understanding the concepts behind graphics APIs without relying on third-party libraries.
David Heinemeier Hansson argues that while AI can generate code, it lacks the quality and understanding that junior developers bring to the table. He emphasizes that coding isn't just about writing—it's about problem-solving and system design, areas where AI struggles. The future of software development relies on nurturing human talent, not replacing it with AI.
This article discusses a Reddit AMA with the Codex team, where they answer questions about Codex, their coding agent. The session highlights recent upgrades, including the launch of the gpt-5-codex model. It provides a schedule for the live Q&A and lists team members participating.
This article explores the excitement and anxiety of working with AI as a beginner. It highlights the shared experiences of early adopters who find joy in experimentation and creativity, reminiscent of the early days of Python. The author calls for a more open and casual culture of communication in the AI community.
The article discusses how virtual threads in Java address issues with traditional asynchronous programming models, particularly the problems associated with callbacks and blocking functions. By decoupling Java threads from OS threads, virtual threads reduce context-switching overhead and simplify code, allowing developers to mix blocking and non-blocking functions seamlessly.
Seth Larson discusses how developers often ignore deprecation warnings, leading to issues when deprecated methods are removed. He proposes a method where deprecated functions gradually return incorrect results to encourage timely maintenance and highlight reliance on outdated code.
This article explores key insights for building a long programming career. It emphasizes the importance of trying various programming disciplines, finding joy in work, and avoiding rigid productivity measures. The author encourages learning from different fields and recognizing the distinction between work and career.
Mojo-V adds privacy-oriented programming capabilities to the RISC-V architecture. It enables secure computation by using secret registers and encryption, significantly improving performance compared to fully homomorphic encryption. The extension integrates smoothly with existing RISC-V systems and offers tools for developers to start implementing secret computation.
This article explores the concept of a Code-Only agent that uses a single tool—code execution—to perform tasks. By enforcing this limitation, the agent generates executable code for all operations, shifting focus from tool selection to code production, which enhances reliability and clarity in computing tasks.
This article discusses two methods for representing hierarchical structures like trees. It contrasts using an array of child pointers with a more memory-efficient approach that employs first-child and next-sibling pointers. Each method has its trade-offs in terms of memory management and access speed.
This article explains NaN (Not a Number) in JavaScript, detailing its behavior and significance in mathematical operations. It covers how NaN is implemented at the hardware level according to the IEEE 754 standard, why it was created, and how it helps prevent program crashes from division errors.
This article discusses a common problem with JavaScript's Date object related to time zones. The author explains a specific bug encountered when manipulating dates and suggests using the upcoming Temporal API for clearer date handling without time zone confusion.
This article explores the current state of WebAssembly, examining its real-world applications and the misconceptions around its adoption. It highlights WebAssembly's role as a compilation target, its security benefits, and its potential for enhancing portability and performance across various platforms.
The article explores an experiment to enforce immutability in TypeScript without external tools. The author succeeded with arrays and records but struggled with regular objects, ultimately seeking help from the community to find a complete solution.
This article outlines practical programming principles for self-taught front-end developers. It emphasizes actionable advice like the "rule of three" for refactoring code and prioritizing functionality, readability, and optimization in coding practices.
The author shares their experience experimenting with AI code agents like Claude Code and Opus 4.5. They found that these agents can save time on coding tasks, but still require human oversight to ensure quality. The article highlights the practical benefits and limitations of using AI in programming workflows.
This article explores the similarities and differences between Swift and Rust, particularly in memory management and language design. It highlights how Rust offers low-level control while Swift prioritizes ease of use and higher-level abstractions. The author argues that both languages have distinct strengths depending on the use case.
The author logs and analyzes 67 bugs from their personal software projects throughout 2025, focusing primarily on Python. They explore common mistakes and the effectiveness of tools like Pyright, while discussing lessons learned and plans for improvement.
This repository offers detailed notes on the implementation of CPython, specifically version 3.8.0a0. It's geared towards those with Python experience who want to dive deeper into the interpreter's workings, covering topics like memory management, the Global Interpreter Lock, and C extensions.
This article explains how to create a basic AI coding assistant using Python. It outlines the core functionalities needed, such as reading, listing, and editing files, and provides a step-by-step guide to implementing these features. The author emphasizes that the underlying architecture is straightforward and can be adapted for various LLM providers.
Go 1.26 introduces key language updates, including a new function syntax and self-referential generic types. Performance enhancements include a default garbage collector and reduced cgo overhead. The release also features tool improvements and several experimental packages.
The article discusses recent upgrades to ChatGPT's container feature, which now allows execution of Bash commands, installation of packages via pip and npm, and downloading files from the web. These enhancements enable ChatGPT to run code in multiple programming languages and process data more effectively.
This article explains the new errors.AsType function in Go 1.26, which offers a type-safe way to check for specific error types. Unlike the older errors.As, it simplifies code by eliminating the need for intermediate variable declarations and reduces the risk of runtime panics. It's recommended for new code while errors.As remains available.
The article reviews a recent study on how AI tools impact learning new coding skills. It highlights that while AI users completed tasks faster, their retention of knowledge was poorer, especially among those who retyped AI-generated code. The author discusses the balance between speed and depth of learning in software engineering and calls for more research on long-term AI use.
This article explains how binary dependencies work when calling precompiled libraries in various programming languages. It covers concepts like dynamic linking, dynamic loading, and the challenges of data conversion between different types. Examples from languages like Rust and Python illustrate these principles.
Rust 1.91.0 introduces aarch64-pc-windows-msvc as a Tier 1 platform, enhancing support for 64-bit ARM systems on Windows. The update also adds a lint for dangling raw pointers and stabilizes several APIs for use in const contexts.
The article discusses the author's experience with AI tools in programming, emphasizing skepticism about their hype while exploring practical use cases. It critiques the notion of "vibe coding" and advocates for understanding AI's role without losing sight of core development goals. The author shares insights on effective workflows and the importance of hands-on learning.
The article explores the distinct philosophies and trade-offs of Go, Rust, and Zig based on the author's recent experiences. It details Go's minimalism, Rust's complexity with a focus on safety and performance, and Zig's manual control over memory management. The author aims to clarify the values each language embodies rather than just listing features.
This article explains the new async I/O features in Zig 0.16.0, highlighting core synchronization APIs. It covers examples demonstrating basic usage, error handling, and the benefits of cancellation in asynchronous programming.
This article provides guidance on creating effective agents.md files for GitHub Copilot. It draws from an analysis of over 2,500 repositories, highlighting the importance of specificity in defining agent roles, commands, and boundaries to improve functionality.
This article explains dependent types, a programming concept where types can depend on values. It breaks down the syntax using Idris and illustrates how dependent types allow functions to return types based on their inputs. The author also explores the debate around whether dependent types can be erased from programs.
This article explores how large language models (LLMs) can evolve competitive assembly programs, known as warriors, in the game Core War. The Digital Red Queen (DRQ) algorithm drives an ongoing arms race, resulting in increasingly robust strategies and revealing patterns similar to biological evolution. The research provides insights into adversarial dynamics and the potential of AI systems to compete in real-world scenarios.
This article introduces NERD, a programming language designed for AI to write code with minimal human intervention. It highlights how NERD optimizes code structure for efficient machine processing while remaining legible for human review. The piece argues that as AI continues to dominate code generation, traditional human-readable formats will become obsolete.
The article discusses a straightforward coding question that helps identify unqualified candidates in remote job applications. It reveals how the question can effectively screen out half of applicants by assessing their ability to think critically about code. The author shares personal experiences from his time as a CTO and highlights the importance of quick mental problem-solving in programming.
This article explains the role of shaders in 3D graphics, detailing how they manipulate visual output in rendering processes. It covers various types of shaders, their functions, and practical applications in game development and visual effects. The piece is technical but accessible for those looking to deepen their knowledge of graphics programming.
The article argues that programming languages are rigid tools for implementation, limiting our ability to think creatively about problem-solving. It suggests that mathematics provides a more flexible framework for reasoning and abstraction, allowing programmers to focus on designing solutions before committing to a specific coding approach. This shift in mindset can lead to clearer, more efficient code.
Fil-C is a memory-safe version of C and C++ that maintains high compatibility with existing code. It detects memory safety errors through runtime checks and allows many popular programs to run with little to no changes. The compiler is based on clang and supports modern build systems.
This article discusses the impact of AI on formal verification, highlighting both its potential and limitations. It explains the challenges of creating formal specifications for most software and critiques the reliability of autoformalization and proof assistants in the verification process.
The article explores the ongoing cycle of attempts to simplify software development and reduce the need for specialized developers. It highlights historical examples, from COBOL to modern AI tools, showing that while tools may change, the inherent complexity of software creation remains. Ultimately, experienced developers are still essential for navigating this complexity.
This article discusses the ease of creating LLM agents using the OpenAI API. It emphasizes hands-on experience with coding agents, explores context management, and critiques the reliance on complex frameworks like MCP.
This article details the development of an image-to-ASCII renderer that prioritizes sharp edges and character shape. The author explains the common issues with blurry edges in ASCII art and introduces methods like supersampling and shape quantification to improve rendering quality.
The article argues that object-oriented programming (OOP) has significant flaws, particularly in its reliance on classes and methods, which hinder code reusability and promote poor programming practices. It contrasts OOP with functional programming (FP), highlighting the advantages of FP's minimalist function signatures and flexibility. The author shares personal experiences to illustrate the confusion and limitations of OOP.
The article details the author's journey to create a command line tool for translating Chinese text using Swift. Initially struggling with APIs and language compatibility, they eventually leverage Apple’s Translation API and Natural Language frameworks to make it work. The author shares insights and code snippets throughout the process.
The article discusses the implications of using large language models (LLMs) in software development, arguing that while LLMs may simplify coding through natural language prompts, they don't eliminate the need for managing complexity and control. It highlights that programming languages are still essential for addressing this complexity, regardless of advancements in AI.
This article provides a detailed exploration of TCP, the protocol that ensures reliable data transmission over the internet. It covers TCP's key features like flow control, congestion management, and reliability mechanisms, alongside practical code examples for creating TCP and simple HTTP servers.
This article discusses three new features for AI agents that improve their ability to work with multiple tools efficiently. The Tool Search Tool allows tools to be discovered on-demand, Programmatic Tool Calling streamlines workflows through code, and Tool Use Examples help agents learn proper tool utilization.
This article discusses the future of the Rust cryptography ecosystem, focusing on its development and potential impact by 2026. It outlines key projects, trends, and the growing importance of Rust in secure programming.
This article explains how to use AWS Lambda durable functions for building multi-step applications and AI workflows. It describes features like automatic retries, state management, and execution suspension, allowing developers to handle complex scenarios efficiently. It also provides a sample order processing workflow demonstrating these capabilities.
This article demystifies functors, applicatives, and monads by explaining them as patterns for working with wrapped values in Elm. It highlights how these concepts are already used in everyday coding, without the intimidating terminology often associated with them. The focus is on practical application rather than abstract theory.
This article explains how to enhance the effectiveness of AI agents by implementing back pressure, which provides them with automated feedback. By doing so, you can delegate more complex tasks to agents while minimizing the time spent correcting their mistakes. It emphasizes using tools and type systems that improve agent performance and reduce manual oversight.
This article introduces Zig, highlighting its unique features and advantages over traditional languages like C and C++. It covers installation steps, basic programming concepts, and how to build and test programs. The focus is on practical insights for getting started with Zig.
This article details the process of decompiling and preserving Crimsonland, a cult classic top-down shooter from 2003. The author outlines their journey to recreate the game's original mechanics while documenting findings and challenges in understanding the game's code.