Category: Development

Ubuntu 25.04: Plucky Puffin Soars with Performance and Security Enhancements

2025-04-17
Ubuntu 25.04: Plucky Puffin Soars with Performance and Security Enhancements

Canonical has released Ubuntu 25.04, codenamed "Plucky Puffin," featuring GNOME 48, improved installation and boot experience, and a new "devpack" for the Spring framework. This release boasts performance improvements for AI workloads on Intel GPUs and support for confidential computing using AMD SEV-SNP. The Linux 6.14 kernel includes improved scheduling and a new NTSYNC driver for better Windows game performance on Wine and Proton. Ubuntu 25.04 also includes the latest toolchains, enhanced manageability and networking controls, and expanded support for Intel Core Ultra processors and ARM64 hardware.

Development

Sandbox Python Execution via MCP Server

2025-04-17
Sandbox Python Execution via MCP Server

This article introduces a Model Context Protocol (MCP) server that runs Python code in a sandbox using Pyodide within Deno, providing isolation from the operating system. The server supports several modes: standard input/output (stdio), server-sent events (SSE), and a warmup mode for testing and deployment. An example using PydanticAI demonstrates interacting with LLMs via an Agent using this MCP server.

Development

Critical Erlang/OTP SSH Vulnerability Allows Unauthenticated Remote Code Execution

2025-04-17

A critical vulnerability (CVE-2025-32433) has been discovered in the Erlang/OTP SSH server, allowing unauthenticated remote code execution (RCE). Versions prior to OTP-27.3.3, OTP-26.2.5.11, and OTP-25.3.2.20 are affected. Attackers can exploit a flaw in SSH protocol message handling to gain unauthorized access and execute arbitrary commands without credentials. Patches are available; update to OTP-27.3.3, OTP-26.2.5.11, or OTP-25.3.2.20 or later.

Development

Deep Dive into 3FS: DeepSeek's Open-Source Distributed Filesystem

2025-04-17

DeepSeek released 3FS (Fire-Flyer File System), a distributed filesystem. This post explains distributed filesystems and 3FS's architecture. 3FS comprises four node types: Meta (metadata management), Mgmtd (management server), Storage, and Client. It uses the CRAQ (Chain Replication with Apportioned Queries) protocol for strong consistency. The post analyzes 3FS's performance characteristics and outlines future performance testing and improvement directions.

go-mcp: A Type-Safe Go SDK for Building MCP Servers

2025-04-17
go-mcp: A Type-Safe Go SDK for Building MCP Servers

go-mcp is a Go SDK simplifying MCP (Model Context Protocol) server development. Its type-safe, intuitive interface streamlines the process. Code generation ensures static typing for tools and prompt parameters, catching errors at compile time. The clean API and developer-friendly design make it easy to learn and use. The project includes comprehensive examples and documentation, supporting features like tools, prompts, resource management, and logging. While dynamic tool addition isn't currently supported, future development plans include batching, streamable HTTP transport, and progress notifications. The project is MIT licensed.

Development

Rust Compile Times: From 25 Minutes to 2 Minutes

2025-04-17
Rust Compile Times: From 25 Minutes to 2 Minutes

The Feldera team encountered excessively long compile times when compiling large SQL-generated Rust code. An 8,562-line SQL program translated to ~100k lines of Rust took 25 minutes to compile. Techniques like type erasure and code deduplication yielded minimal improvements. The breakthrough came from splitting the generated Rust code into 1,106 smaller crates, enabling parallel compilation and dramatically reducing compile time to under 2 minutes, fully utilizing multi-core processors.

Setting Up a Linux Dev Environment on Apple Silicon with UTM

2025-04-17
Setting Up a Linux Dev Environment on Apple Silicon with UTM

This guide demonstrates setting up a Linux development environment on Apple Silicon Macs using UTM virtual machines. After installing UTM and cdrtools via Homebrew, a cloud-init script automates the process of installing essential development tools like Git, Docker, and configuring SSH access. The article walks through creating the VM, importing images, configuring the cloud-init script, and removing temporary drives, resulting in a functional Linux development environment.

Development

Differentiable Programming: A Deep Dive from First Principles

2025-04-17

This article provides a comprehensive explanation of differentiable programming, starting from the definition of derivatives in calculus and progressing to concepts like gradients, directional derivatives, and Jacobians. It details three differentiation methods: numerical differentiation, symbolic differentiation, and automatic differentiation (forward and reverse modes), comparing their strengths and weaknesses. Finally, it demonstrates how reverse-mode automatic differentiation, combined with gradient descent, can solve real-world optimization problems using an image de-blurring example.

arXivLabs: Experimenting with Community Collaboration

2025-04-17
arXivLabs: Experimenting with Community Collaboration

arXivLabs is a framework enabling collaborators to develop and share new arXiv features directly on the website. Individuals and organizations involved embrace arXiv's values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners who share them. Have an idea to enhance the arXiv community? Learn more about arXivLabs.

Development

Beyond NP: A More Intuitive Complexity Problem

2025-04-17
Beyond NP: A More Intuitive Complexity Problem

The author challenges the use of the Halting Problem as the canonical example of a problem harder than NP-complete, arguing it's confusing and unintuitive. While undecidable, verifying a "yes" answer for the Halting Problem can be done by running the program for a finite number of steps. A more easily understandable alternative is presented: moving a token on an infinite grid to reach a target point. This problem is PSPACE-complete in lower dimensions, but its complexity explodes with increasing dimensions, eventually reaching ACKERMANN-completeness, visually demonstrating a complexity far beyond NP problems.

Formance: Rewriting the Rules of Developer-Finance Interaction

2025-04-17
Formance: Rewriting the Rules of Developer-Finance Interaction

Formance is on a mission to redefine how developers interact with money as a first-class primitive, enabling the composition of financial applications. Currently hidden within permissioned, vendor-locked infrastructure, money needs to be rewired to empower product-focused companies. The Formance Platform provides open-source, agnostic primitives for engineers, allowing integration with their chosen financial partners. Formance is globally native, serving enterprise clients worldwide, 24/7, to build and scale financial applications.

Development

Why Frameworks Are Evil: A Case for Libraries

2025-04-17
Why Frameworks Are Evil: A Case for Libraries

This article delves into functional library design principles, focusing on composability and avoiding callbacks. The author argues that frameworks are difficult to compose, explore, and test, and restrict code structure. In contrast, libraries offer greater developer control, encourage interactive exploration, and support multiple layers of abstraction. Using a game engine example, the article demonstrates how asynchronous workflows and event-based programming can mitigate the drawbacks of callbacks. Examples like FsLab illustrate the composability of libraries. Ultimately, the author advocates for building composable, easily explorable libraries instead of rigid frameworks.

Hidden Gems in C's stdint.h: Beyond limits.h for Integer Type Definitions

2025-04-17
Hidden Gems in C's stdint.h: Beyond limits.h for Integer Type Definitions

This blog post recounts the author's unexpected discovery about integer type definitions while learning C. In the early days of C, the size of integers varied greatly across different architectures, leading compiler vendors to create custom type definitions like Microware's types.h. Later, the ANSI C standard introduced stdint.h, providing standard type definitions like uint32_t and maximum value definitions like INT_MAX from limits.h. However, the author recently discovered that stdint.h also includes definitions like INT8_MAX and UINT32_MAX, which can be directly used to define the maximum and minimum values of integer types of specific sizes, making the code more portable and avoiding errors caused by platform differences.

Development integer types

Haskell Concurrency: Escape from Thread Hell

2025-04-17

This article recounts the author's journey from embedded systems development in C/C++/Rust to Haskell, highlighting Haskell's advantages in concurrent programming. Haskell uses green threads and event-driven IO, avoiding the complexities of traditional threading models. Through the `async` package and STM (Software Transactional Memory), Haskell offers a cleaner and safer approach to concurrent tasks. Functions like `concurrently`, `race`, and `mapConcurrently`, along with data structures such as `TVar` and `TBQueue`, simplify concurrent operations and prevent common concurrency issues like deadlocks and race conditions.

Development

Pure Nix Trigonometric Library: Ditching Python for Performance

2025-04-17
Pure Nix Trigonometric Library: Ditching Python for Performance

To calculate network latency between his 17 VPS nodes without manual ping tests, the author attempted to approximate latency by calculating the physical distance between node coordinates using Nix. Lacking native trigonometric functions in Nix, he implemented sin, cos, tan, arctan, and sqrt functions in pure Nix and used the Haversine formula to calculate distances and latencies. This project avoids external dependencies like Python, improving efficiency and reproducibility.

Development Trigonometry

Kotlin Type Classes and Data Validation: An Arrow-Powered Approach

2025-04-17
Kotlin Type Classes and Data Validation: An Arrow-Powered Approach

This article explores the use of type classes in Kotlin for data validation. Using a fintech startup's user portfolio validation system as an example, the author demonstrates how to build a generic, reusable validation framework using the Arrow Kt library and Kotlin's context receivers. The article compares object-oriented and type class approaches, highlighting the advantages of type classes for maintainability and extensibility, and shows how to leverage Arrow's `EitherNel` type for functional error handling. The power of `zipOrAccumulate` for efficient validation is also explained.

My Journey to Self-Hosting Music: Ditching Spotify for Jellyfin

2025-04-17
My Journey to Self-Hosting Music: Ditching Spotify for Jellyfin

Tired of Spotify, I embarked on a quest for the perfect replacement. I tried Winamp, foobar2000, even built my own web music player, before settling on Jellyfin. Jellyfin is a self-hosted media server, giving me access to my music library anytime, anywhere, without relying on streaming services. While it requires some technical setup, it's surprisingly easy, even on an older computer. Combined with mobile apps, offline listening is a breeze. This not only gave me digital autonomy but also opened the door to self-hosting other apps like Immich for photo management.

Development music player

ZFS Compression Paradox: Logical vs. Physical Blocks

2025-04-17

A 256KB zero file created with `dd` on a ZFS filesystem with compression enabled exhibits a puzzling behavior: `ls -l` shows its size as 256KB, but `ls -s` and `ls -slh` show a much smaller size, almost zero. This is due to ZFS's efficient compression resulting in a minimal number of physical blocks. The article explores three ways to measure file size: logical size (in bytes), physical block count, and logical block count. It points out that the POSIX `st_blocks` field doesn't specify which size to report, leading to potential changes in `st_blocks` value when moving files between filesystems, and even potential file size expansion exceeding the capacity of the new filesystem.

Development

Database Query Engines: Push vs. Pull

2025-04-16

This article delves into the differences between push-based and pull-based query engines in databases. Pull-based systems, akin to the iterator model, are consumer-driven, where data is retrieved on demand. Push-based systems, conversely, are producer-driven, actively pushing data to downstream operators. Push-based systems excel at handling DAG-shaped query plans (e.g., SQL's WITH clause) due to their ability to efficiently push data to multiple downstream operators, avoiding redundant computations and unnecessary buffering. However, pull-based systems offer advantages when handling certain algorithms (like merge joins and LIMIT clauses). The article further examines cache efficiency, code simplicity, and the suitability of each model in different scenarios, concluding that neither is universally superior, with the choice depending on specific requirements.

Development query engine push-pull

Plandex: AI Coding Agent for Large Projects

2025-04-16
Plandex: AI Coding Agent for Large Projects

Plandex is a terminal-based AI development tool designed for tackling large coding tasks spanning multiple steps and numerous files. Handling up to 2M tokens of context directly (~100k per file), it can index directories with 20M tokens or more using tree-sitter project maps. A cumulative diff review sandbox keeps AI-generated changes separate until ready, and command execution is controlled for easy rollback and debugging. Plandex combines models from Anthropic, OpenAI, Google, and open-source providers, offering both full autonomy and fine-grained control, making it resilient to the complexities of large projects. It features a project-aware chat mode, Git integration, and a developer-friendly CLI interface.

Development large projects

Program Optimization: Four Approaches Before Rewriting

2025-04-16

Slow program execution is a common pain point for programmers. The author, drawing on years of optimization experience, presents four approaches: 1. Use a better algorithm; 2. Use a better data structure; 3. Use a lower-level system; 4. Accept a less precise solution. The article uses bubble sort and selection sort as examples to illustrate the importance of algorithm selection, emphasizing the need to consider practical factors when choosing data structures and programming languages. The author cautions against premature optimization and stresses the importance of rigorous profiling before attempting optimization.

Development program optimization

Codex: A Lightweight Coding Agent for Your Terminal

2025-04-16
Codex: A Lightweight Coding Agent for Your Terminal

Codex is a lightweight coding agent running in your terminal, leveraging the OpenAI API for ChatGPT-level code reasoning. It offers interactive and non-interactive modes, automating code completion, execution, dependency installation, and even unit test generation. Robust sandboxing ensures safety. Users can customize instructions and approval modes, tackling tasks from simple code explanations to complex refactoring. Supporting multiple OSes and open-sourced for community contributions, Codex streamlines development workflows.

Development

Llama 3.3 License: Are You Really Complying?

2025-04-16
Llama 3.3 License: Are You Really Complying?

While marketed as open-source, Meta's Llama 3.3 license contains restrictions many developers may overlook. The article highlights the requirement to prominently display "Built with Llama" when distributing the model or derivatives, and to prefix derivative model names with "Llama-". Further, the Acceptable Use Policy demands disclosure of known AI system risks, such as biases or inaccuracies, to end-users. The author urges developers to carefully review the license and decide whether to comply, avoiding potential legal issues.

Development

OpenAI's Codex CLI: A Local AI Coding Agent

2025-04-16
OpenAI's Codex CLI: A Local AI Coding Agent

OpenAI launched Codex CLI, a local coding agent running from your terminal. Connecting OpenAI's models (including the new o3 and o4-mini) to local code and tasks, Codex CLI allows AI to write, edit code, and perform actions like moving files. This represents a step towards OpenAI's vision of an 'agentic software engineer'. Open source and lightweight, Codex CLI is supported by a $1 million API grant program for software development projects. While AI coding tools have inherent risks, Codex CLI offers a new approach to AI-assisted programming.

Development

RakuAST: A Herculean Rewrite of a Compiler Frontend

2025-04-16

The RakuAST project undertook a complete rewrite and redesign of the Raku programming language's compiler frontend. The author tackled the project by systematically fixing failing spec tests, one by one. This involved addressing the complexities of Raku's syntax, including private methods, metamethods, and hypermethod calls. The biggest hurdle was the intricate timing and sequencing required within the Raku compilation process, necessitating precise control over the order of component compilation. Over 900 commits later, the project successfully achieved its primary goal. Additionally, it bootstrapped the compiler, enabling self-compilation, which presented further challenges in managing circular dependencies and the intricacies of the extensive standard library. The project's success was aided by contributions from several community members.

Development

Solving the CVE Crisis: Professional Certification and Mandatory Vulnerability Reporting

2025-04-16

The impending expiration of MITRE's CVE contract sparked controversy, prompting a proposal for software security improvement. The current CVE system is plagued by inaccurate reports, diminishing its value. The author suggests a system based on vulnerability attributes instead of scores, along with professional Software Engineer (PSWE) certification. Failure to accurately report vulnerabilities within a timeframe would result in license revocation, incentivizing reporting. The proposal includes funding and training for future PSWEs, addressing accessibility concerns, ultimately creating a win-win scenario for software security and FOSS project sustainability.

Reviving the UCSD p-System: A Cross-Platform Compilation Legend

2025-04-16
Reviving the UCSD p-System: A Cross-Platform Compilation Legend

The author revisits the UCSD p-System, a cross-platform operating system and compiler from the 1970s. It achieved portability across diverse machines (from PDP-11 to Apple II) through its p-machine virtual machine. The author shares personal experiences using Apple Pascal and UCSD Pascal in high school and plans to rebuild a p-machine emulator in Rust, continuing its legacy and addressing issues with missing documentation and outdated compiler dependencies in existing tools.

Development

12-Factor Agents: Principles for Building Reliable LLM Applications

2025-04-16
12-Factor Agents: Principles for Building Reliable LLM Applications

This article explores the principles for building reliable, scalable, and maintainable LLM-powered software—the 12-Factor Agents. The author argues that existing agent frameworks fall short in production, with many so-called "AI Agents" being mostly deterministic code sprinkled with LLM steps. The author proposes principles for building more robust agents, emphasizing a modular approach of incorporating small, modular agent concepts into existing products, avoiding inefficient greenfield rewrites. This is a valuable read for engineers and entrepreneurs focused on AI application development.

Development

ActorCore: Stateful Serverless That Runs Anywhere

2025-04-16
ActorCore: Stateful Serverless That Runs Anywhere

ActorCore is a TypeScript framework for easily building stateful, AI agent, collaborative, or local-first applications. It eliminates the need for databases and ORMs, offering blazing-fast read/write speeds by storing state on the same machine as the compute. Deploy to Rivet, Cloudflare, Bun, Node.js, and more. Built-in low-latency events enable real-time state updates and broadcast changes. Its unique edge-data storage provides instant interactions. While currently not ideal for OLAP, data lakes, graph databases, and highly relational data, it's constantly improving and aims to become the universal way to build and scale stateful serverless applications.

Development actor model

Can AI Replace $1M in Freelance Software Engineering? OpenAI's Latest Research

2025-04-16
Can AI Replace $1M in Freelance Software Engineering? OpenAI's Latest Research

OpenAI's new paper, SWE-Lancer, benchmarks frontier AI models on real-world software development tasks. Using over 1400 Upwork freelance jobs (totaling over $1 million), the study divided tasks into individual contributor tasks (bug fixing, feature building) and engineering manager tasks (selecting the best solution). Even the top performer, Claude 3.5 Sonnet, only completed 33.7% of tasks, earning roughly $403,000. AI excelled at selecting solutions over creating them, suggesting initial applications might focus on code review and architectural decisions. This benchmark offers a concrete way to measure AI progress, helping leaders understand and predict AI's capabilities and impact.

Development
1 2 3 4 5 6 8 10 11 12 108 109