Category: Development

Austral: A Systems Programming Language Focused on Simplicity and Strictness

2025-03-20
Austral: A Systems Programming Language Focused on Simplicity and Strictness

Austral is a new systems programming language designed for simplicity and strictness. Think of it as Rust's essential features or a modernized, stripped-down Ada. Key features include a strong static type system, linear types, capability-based security, and strong modularity. Linear types enforce correct resource lifecycle management, preventing memory leaks and other errors, while capability-based security mitigates supply chain attacks. Austral eschews features like NULLs, garbage collection, and exceptions to maximize safety and predictability.

Retro Pascal Compiler Memory Optimization: Clever Tokenization Techniques

2025-03-20

This article delves into the memory optimization strategies of a retro Pascal compiler. To accommodate limited memory, the compiler employs tokenization, converting error messages, reserved words, identifiers, and other elements into bytecodes. The article provides detailed hexadecimal representations and meanings of error codes, source tokens, and P-codes (pseudo-machine codes), revealing how the compiler efficiently handles the compilation process through clever tokenization and bytecode manipulation. This is valuable reading for those studying compiler design, reverse engineering, and embedded systems programming.

Can AI Auto-Generate System Architecture Diagrams?

2025-03-20
Can AI Auto-Generate System Architecture Diagrams?

This article explores three use cases for AI-generated system architecture diagrams: generic technology diagrams, whiteboard diagrams, and diagrams of real-world systems. Experiments show AI excels at generating generic technology diagrams and whiteboard diagrams, producing basic architecture diagrams from simple descriptions and readily accepting refinements. However, AI struggles with generating diagrams of real-world systems, failing to accurately extract information from source code to produce detailed, accurate architecture diagrams. This is mainly due to challenges including a lack of sufficient training data, the complexity of code analysis, and the AI's difficulty in understanding system design intent. In short, AI-assisted whiteboarding is feasible, but auto-generating diagrams of real-world systems remains a challenge, requiring essential human involvement.

Development System Architecture

Package Phobia: Pre-install npm Package Size Checker

2025-03-20
Package Phobia: Pre-install npm Package Size Checker

Package Phobia is a tool that reports the size of an npm package before you install it. It differentiates between 'publish size' (the size of the source code, usually small) and 'install size' (the size after installation, including all dependencies, which can be much larger). This allows developers to inspect potential dependencies without wasting disk space or waiting for lengthy installations, improving dependency management.

Development package size

Google's Novel Approach to Preventing Outages with STPA

2025-03-20

Google leverages System Theoretic Process Analysis (STPA) to prevent outages in its massive software systems. This article details Google's journey from initial external training to developing custom internal training, including building control structure models and ultimately creating self-paced tutorials to more effectively disseminate STPA. By using real Google system examples, the training became more engaging and highlighted the importance of focusing on feedback paths, often neglected in traditional software design. Google's experience shows STPA effectively identifies potential failure points, improving system reliability.

Development system reliability

GitHub Actions CI/CD: A Painful Odyssey

2025-03-20
GitHub Actions CI/CD: A Painful Odyssey

The author recounts a frustrating journey building a complex CI/CD pipeline using GitHub Actions, involving multiple iterations and struggles with merge queues, inconsistent behavior, and security concerns. Challenges included enforcing status checks with merge queues, understanding the security model surrounding GITHUB_TOKEN, Docker container file permission and path issues, and the complexities of YAML workflows. Despite achieving a reduction in merge time, the author highlights the numerous hidden pitfalls and inconsistent behavior, advocating for improved usability and debugging in GitHub Actions.

Development

MCP Server for Web Page Content Fetching with Playwright

2025-03-20
MCP Server for Web Page Content Fetching with Playwright

This project offers an MCP server that uses the Playwright headless browser to fetch web page content. It supports single and batch URL fetching, intelligently extracts main content and converts it to Markdown. Users can run it directly with `npx`, and configure parameters such as timeout, wait strategy, content extraction, maximum length, and whether to return HTML or Markdown. Instructions for configuring the server in Claude Desktop, installing Playwright browsers, and debugging are also provided.

Development MCP Server

Tencent's Hunyuan3D Model Gets a Speed Boost and Texture Generation

2025-03-20
Tencent's Hunyuan3D Model Gets a Speed Boost and Texture Generation

Tencent has released an updated version of its open-source Hunyuan3D model, featuring a smaller, faster 'mini' variant. This update not only improves inference speed but also adds texture generation capabilities, resulting in significantly enhanced 3D model visuals. Code changes focus on optimized model loading, parameter adjustments, and a streamlined texture generation pipeline with broader file format support. This makes the powerful 3D modeling technology more accessible to a wider range of developers.

Development Tencent Hunyuan3D

Building an LLM from Scratch: A Deep Dive into Dropout

2025-03-20
Building an LLM from Scratch: A Deep Dive into Dropout

This post documents the author's journey through the dropout chapter of Sebastian Raschka's "Build a Large Language Model (from Scratch)". Dropout is a regularization technique that prevents overfitting by randomly ignoring some neurons or weights during training, thus spreading knowledge more broadly across the model. The author details the implementation of dropout and explores nuances of its application in LLMs, such as applying dropout to attention weights or value vectors, and rebalancing the resulting matrix. The post also touches upon practical dropout rate choices and the challenges of handling higher-order tensors for batch processing, setting the stage for further learning.

Development

Adminer: A Powerful Single-File Database Management Tool

2025-03-20
Adminer: A Powerful Single-File Database Management Tool

Adminer is a full-featured database management tool written in PHP, consisting of a single file for easy deployment. It supports MySQL, PostgreSQL, SQLite, and many more databases, with plugins extending functionality to Elasticsearch, MongoDB, and others. Users can customize Adminer with additional plugins and manage their loading order via a simple PHP configuration file. Adminer Editor provides a user-friendly interface for data manipulation.

Development

mcp-kafka: Bridging AI Assistants to Apache Kafka

2025-03-19
mcp-kafka: Bridging AI Assistants to Apache Kafka

mcp-kafka is a Model Context Protocol (MCP) server that acts as a bridge between AI assistants and Apache Kafka. It allows AI assistants to create, manage, and interact with Kafka topics and messages directly. The tool supports creating, listing, deleting, describing topics, producing and consuming messages, with support for SASL_PLAINTEXT and PLAINTEXT authentication. mcp-kafka is easy to install and use, with comprehensive documentation and examples provided.

Development

Gracefully Handling JSON Sum Types in Go: Avoiding Panics

2025-03-19

Go doesn't natively support sum types, but this article demonstrates how to emulate them in Go and safely handle JSON encoding and decoding to avoid runtime panics. The author uses a real-world example to illustrate using a "sealed interface" approach and code generation tools (OpenAPI Generator and Protocol Buffers) to gracefully handle JSON sum types. This achieves compile-time type safety and effectively prevents runtime errors. The article also compares alternative implementations and explores the advantages of the V language in handling sum types.

Development

Say Goodbye to Copy-Pasting: Claude Desktop Gets a Pair Programming Assistant

2025-03-19
Say Goodbye to Copy-Pasting: Claude Desktop Gets a Pair Programming Assistant

Tired of copying and pasting code in and out of Claude's chat window? codemcp is a plugin that transforms Claude Pro into a powerful pair programming assistant. Directly edit files, fix bugs, refactor code, and run tests all within your IDE. Built around safe agentic AI and Git version control, codemcp ensures all changes are reversible. Say goodbye to massive API bills (hello to time-based rate limits!) and hello to efficient, collaborative coding with Claude!

Development

C's `defer` Keyword: A Blitz to Prevent Memory Leaks

2025-03-19
C's `defer` Keyword: A Blitz to Prevent Memory Leaks

A new feature is coming to C: `defer`. It acts as a general-purpose 'undo' mechanism, ensuring that a set of statements are executed regardless of how a code block exits, crucial for resource cleanup like freeing memory or unlocking mutexes. `defer` builds upon existing compiler extensions and similar features in other languages. The article details `defer`'s functionality, scope, and differences from similar constructs in Go, with examples illustrating its use. The author urges compiler vendors to implement `defer` promptly to enhance C code safety and maintainability, preventing memory leaks like those seen in CVE-2021-3744.

Development

Say Goodbye to Cloud Services: A Local, Zero-Dependency Image Archiver

2025-03-19
Say Goodbye to Cloud Services: A Local, Zero-Dependency Image Archiver

Tired of complex cloud-based photo management? This project aims to simplify image archiving with a local, zero-dependency tool. It requires no server, database, or specific ecosystem—just files and folders. Think of it as a static site generator that lives within your image library. Built in Rust or Go, it will be a lightweight executable that automatically generates folder indices and thumbnails, with optional metadata (Markdown or plain text). Deleting the app leaves your images and structure untouched. It's a simple, powerful solution for local image management.

Marimo: Reimagining Jupyter Notebooks as Versionable Pure Python

2025-03-19
Marimo: Reimagining Jupyter Notebooks as Versionable Pure Python

Marimo is an open-source project that reimagines Jupyter Notebooks as pure plaintext Python files, usable as regular Python programs. Traditional Jupyter Notebooks' JSON-based .ipynb format leads to version control headaches, poor code reusability, and other issues. Marimo solves these by representing notebooks as dataflow graphs, making them easily versionable (with Git), importable as modules, testable with pytest, and executable as scripts. It also supports embedding SQL and Markdown and offers caching for efficiency. Marimo has seen wide adoption, used by companies like OpenAI and BlackRock, and numerous research institutions, quickly establishing itself as a new standard for interactive computing.

Development

Blind Spots in LLMs for AI Coding

2025-03-19

This article highlights several blind spots the author encountered while using Large Language Models (LLMs) for AI coding. Issues include insufficient black-box testing, stateless tools, over-reliance on automation, and neglecting documentation. Solutions suggested include preparatory refactoring, using static types, keeping files small, and adhering to specifications. The author hints at future Cursor rule suggestions to address these problems.

Development

Generic Programming in C: A Comparison of Four Approaches

2025-03-19
Generic Programming in C: A Comparison of Four Approaches

C's lack of support for generic types (parametric polymorphism) is a common frustration. This article explores four methods for emulating generics in C: template macros, template headers, type erasure, and inlining macros. Template macros are simple but suffer from readability and error-proneness; template headers improve readability but still have naming challenges; type erasure sacrifices type safety but is useful for FFI or dynamic linking; inlining macros are user-friendly but lead to code bloat. Ultimately, the author suggests choosing between template headers (easier to develop) and inlining macros (easier to use) based on project needs.

Development

Fauna Database Shutting Down, Core Tech Going Open Source

2025-03-19
Fauna Database Shutting Down, Core Tech Going Open Source

Fauna, a document-relational database service, announced it will be sunsetting its service in the coming months. Unable to secure the funding needed for global expansion in the current market, the company made the difficult decision to cease operations. However, Fauna is committing to open-sourcing its core database technology, drivers, and CLI tooling, making its unique transactional features, document-relational data model, and FQL language available to the wider developer community. Existing customers will receive migration support to ensure a smooth transition.

Development

Chrome Ditches FreeType for Rust-Based Skrifa: A Security and Performance Win

2025-03-19
Chrome Ditches FreeType for Rust-Based Skrifa: A Security and Performance Win

Chrome has replaced its aging FreeType font rendering engine with Skrifa, a new Rust-based library. FreeType's C-based codebase was plagued by security vulnerabilities, demanding significant maintenance resources. Skrifa leverages Rust's memory safety to dramatically reduce vulnerabilities and improve developer productivity. Rigorous testing and comparisons ensure Skrifa matches FreeType's performance and rendering quality. Chrome plans to extend Skrifa's use to more operating systems in the future.

Development

AGX: A Modern ClickHouse Desktop Client Built with Tauri and SvelteKit

2025-03-19
AGX: A Modern ClickHouse Desktop Client Built with Tauri and SvelteKit

AGX is a desktop application built with Tauri and SvelteKit, providing a modern interface for exploring and querying data using ClickHouse's embedded database engine (chdb). It boasts native desktop application performance, an interactive SQL query editor with syntax highlighting, a schema browser, tabular result display, drag-and-drop file support, and cross-platform compatibility (macOS, Linux, Windows). The frontend uses SvelteKit for a reactive and efficient UI, while the backend leverages Tauri and Rust for native performance and security. Communication between frontend and backend is handled via Tauri's IPC bridge, with data querying powered by the embedded ClickHouse engine, chdb. Contributions are welcome!

Development

arXivLabs: Experimenting with Community Collaboration

2025-03-19
arXivLabs: Experimenting with Community Collaboration

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

Development

Zest: A Programming Language Balancing Malleability and Legibility

2025-03-19
Zest: A Programming Language Balancing Malleability and Legibility

Zest is a work-in-progress programming language designed to create systems that are both malleable and legible. It aims to combine the interactivity and liveness of systems like emacs with features like static typing, early binding, and jump-to-definition. Currently, Zest supports basic control flow, arithmetic, and functions, but still needs improvements in error handling, memory management, and recursive functions. Code can be interpreted or compiled, but mixed mode is not yet supported. The documentation includes embedded tests to verify the output of different dialects (lax and strict).

Development

fd: Blazing Fast File Finder (23x Faster than find)

2025-03-19
fd: Blazing Fast File Finder (23x Faster than find)

fd is a faster and more user-friendly alternative to the find command. It boasts intuitive syntax, parallelized directory traversal, and smart case matching, defaulting to ignoring hidden files and .gitignore entries. Supporting both regular expressions and glob patterns, fd offers extensive options to customize searches, including specifying root directories, file types, sizes, modification times, and more. It integrates seamlessly with other commands such as `ls`, `rm`, `rg`, and `fzf`. Benchmark tests demonstrate fd's significant speed advantage over find in large filesystems, achieving up to 23 times faster performance.

Development file finding

MVVM in SwiftUI: Best Practices and Pitfalls

2025-03-19
MVVM in SwiftUI: Best Practices and Pitfalls

This article delves into the best practices and challenges of using the Model-View-ViewModel (MVVM) architectural pattern in SwiftUI. The author argues that while MVVM aligns well with SwiftUI's data flow, its perceived rigidity can introduce problems. The article explains how MVVM works, how to leverage its advantages in SwiftUI, and how to navigate its challenges, including avoiding overusing view models and implementing MVVM in a SwiftUI app. It also compares MVVM to alternative architectural patterns like MVC, the Model-View pattern, and Clean Architecture, analyzing their pros and cons.

1GB Boot Partition? Not Enough! My Debian Upgrade Nightmare

2025-03-19

I confidently allocated a 1GB ESP partition and a 1GB boot partition, only to be quickly proven wrong. During a routine system update, apt complained about insufficient boot partition space. The culprit? New NVIDIA driver modules from my recently installed graphics card. A temporary fix was cleaning up old kernel versions, but this was only a band-aid solution. The final solution involved using GParted to shrink the root partition, expand the boot partition, and migrate data using rsync. I also updated fstab and grub. Crucially, I learned to run `grub install` before cleaning the old partition, otherwise the system wouldn't boot. Finally, I repurposed the old boot partition as an unencrypted temporary backup partition.

Development Partition Management

Mozilla's Thrilling Rewrite of Firefox's Crash Reporting Backend in Rust

2025-03-19
Mozilla's Thrilling Rewrite of Firefox's Crash Reporting Backend in Rust

Mozilla replaced its C++-based google-breakpad with a pure-Rust implementation, rust-minidump, for Firefox's crash processing backend. After rigorous unit testing, integration testing, and production deployment, rust-minidump launched, boasting double the speed and improved reliability. The author details the challenges faced and the extensive testing methods employed to ensure robustness, culminating in a successful launch. The article is split into two parts: part one covers the background and testing process, while part two will detail the subsequent fuzzing results.

Development Crash Reporting

PostgreSQL's Synchronous Commit: A Performance vs. Durability Trade-off

2025-03-19
PostgreSQL's Synchronous Commit: A Performance vs. Durability Trade-off

This post explores the performance implications of PostgreSQL's `synchronous_commit` setting. Turning it off significantly boosts transaction throughput, reducing I/O and CPU load, but introduces a small risk window for data loss. The author demonstrates a 30% increase in TPS on I/O-constrained systems. The article advocates for a nuanced approach, suggesting adjusting `synchronous_commit` per session, transaction, or operation, with a Ruby on Rails example provided. The author also notes that on Aurora PostgreSQL, setting `synchronous_commit` to `off` yields the greatest performance gains.

Development synchronous commit

New Kernel Exploit: Bypassing the modprobe_path Patch with AF_ALG

2025-03-19
New Kernel Exploit: Bypassing the modprobe_path Patch with AF_ALG

This security research blog post details a novel method for exploiting the modprobe_path technique, circumventing a patch merged into the Upstream kernel last year. This patch rendered the previous method of triggering modprobe_path by executing dummy files ineffective. The new method leverages AF_ALG sockets. By calling bind(), it triggers request_module(), allowing execution of the file pointed to by modprobe_path, achieving privilege escalation. Combined with lau's memfd_create() technique, this results in a completely fileless exploit, reducing the chance of detection. The patch hasn't yet reached stable kernel releases, so the older method still works; however, the AF_ALG method will be crucial in the future.

Development
1 2 134 135 136 138 140 141 142 214 215