Code Is All You Need: The Limitations of Multi-Component Pipelines (MCPs)

2025-07-03
Code Is All You Need: The Limitations of Multi-Component Pipelines (MCPs)

This article challenges the practicality of Multi-Component Pipelines (MCPs) for many tasks, arguing that their heavy reliance on inference makes them inefficient and difficult to scale. The author uses a personal example – converting reStructuredText to Markdown – to demonstrate a superior approach: using LLMs to generate code that performs the task, followed by LLM-based validation. This method reduces inference dependency, enhances reliability, and scales well, especially for repetitive tasks. While acknowledging MCP's strengths in niche scenarios, the author concludes that its inherent limitations hinder large-scale automation. The future, they suggest, lies in developing more effective code generation techniques coupled with LLM validation and explanation to improve usability and applicability.

Read more
Development

Programming Agents: A New Way to Measure Developer Experience

2025-06-19
Programming Agents: A New Way to Measure Developer Experience

A 24-hour coding sprint highlighted the poor developer experience caused by inadequate tools and processes, including missing documentation and flawed APIs. However, programming agents offer a solution. The author used agents to objectively evaluate different languages and tools, quantifying developer experience factors such as test coverage, error reporting quality, and ecosystem stability. Agent feedback closely mirrored human developer experiences, offering a new approach to improving code quality and development workflows.

Read more
Development

Agentic Coding: Practical Tips and Tricks

2025-06-12
Agentic Coding: Practical Tips and Tricks

This post details the author's experience with agentic coding using Claude Code, focusing on maximizing efficiency. Key strategies include using the cheaper Sonnet model, disabling permission checks, optimizing tool usage, and choosing Go for its simplicity and efficient testing. The author emphasizes writing simple, stable, and parallelizable code, and refactoring strategically. While the field is rapidly evolving, core principles like simplicity, stability, observability, and smart parallelization remain crucial for success.

Read more
Development agentic coding

AI: The Irreversible Shift

2025-06-04
AI: The Irreversible Shift

This blog post details how AI, specifically Claude Code, has revolutionized the author's programming workflow, boosting efficiency and freeing up significant time. The author argues that AI's impact is irreversible, reshaping how we live and work, despite initial challenges. The rapid adoption of AI across various sectors is highlighted, showcasing its transformative power in communication, learning, and daily tasks. The author encourages embracing AI's potential with curiosity and responsibility, rather than fear and resistance.

Read more

Rust's `Any` Trait Finally Supports Upcasting

2025-03-30
Rust's `Any` Trait Finally Supports Upcasting

Rust 1.86 has finally fixed a long-standing issue with the `Any` trait: the inability to upcast `dyn Any`. This means developers can now use methods from the `Any` trait, such as `downcast_ref`, on traits inheriting from `Any`. This fix eliminates the need for hacks previously required to achieve this functionality, improving code readability and maintainability. This is welcome news for Rust developers who have relied on these workarounds for years.

Read more
Development upcasting

Rust's rand Crate: A Dependency Nightmare for Random Number Generation

2025-02-08
Rust's rand Crate: A Dependency Nightmare for Random Number Generation

This article delves into the dependency issues of Rust's `rand` crate, used for random number generation. The author highlights the surprisingly large number of dependencies, leading to excessive compile times and bloated code size. `rand`'s dependency tree includes numerous crates like `libc`, `zerocopy`, and `ppv-lite86`, contributing significantly to the line count and compilation overhead. Potential solutions are suggested, including integrating some functionality into the standard library or improving `rand`'s dependency management. This sparks a discussion on the completeness of Rust's standard library and external crate dependency management.

Read more
Development

The Case for Fewer Dependencies in Rust

2025-01-24
The Case for Fewer Dependencies in Rust

Armin Ronacher, a renowned developer, laments the over-reliance on external crates in the Rust ecosystem in a recent blog post. He argues that excessive dependencies lead to constant updates, patches, and security audits, burdening developers and often introducing unnecessary code bloat. He advocates a "build it yourself" philosophy, encouraging developers to write their own code when appropriate instead of blindly relying on external libraries. He uses the `terminal_size` crate as an example, illustrating how a simple function depends on multiple crates and has undergone numerous updates, highlighting the drawbacks of over-dependency. The post calls for a shift in the Rust community's perspective, prioritizing fewer dependencies and celebrating developers who create low-dependency libraries.

Read more
Development