Category: Development

Microsoft's New Office Startup Booster: Faster Loading, But With a Catch

2025-03-27
Microsoft's New Office Startup Booster: Faster Loading, But With a Catch

Microsoft is rolling out a new Windows scheduled task called 'Startup Boost' in May to speed up Office app loading. This background task preloads performance enhancements but only runs on systems with 8GB RAM and 5GB free disk space, disabling automatically in Energy Saver mode. Users can disable it in Office settings, but the Office installer re-enables it with each update. While designed to improve launch times, its automatic re-enablement might annoy some users.

Dagger Shell: Reimagining the Unix Command Line

2025-03-27
Dagger Shell: Reimagining the Unix Command Line

Dagger Shell is a bash-syntax frontend for the Dagger Engine, a state-of-the-art runtime and composition system. It combines the best ideas from Docker, Make, PowerShell, and Nix, simplifying modern software development workflows. With native support for containers, secrets, and service endpoints; typed objects; declarative execution; and content-addressed artifacts, Dagger Shell streamlines builds, tests, ephemeral environments, deployments, and more. It even facilitates AI agent orchestration. The core philosophy is modularity and composability, aiming to reduce complex tasks to simple shell scripts and code, eliminating the need for numerous DSLs.

Development

Restate: A Database-less Durable Execution Engine

2025-03-27
Restate: A Database-less Durable Execution Engine

Restate is a newly built durable execution engine requiring no database or log system. Built from first principles, it boasts a complete self-contained stack centered around a command log and event processor, competing with the best logs in durability and operations. This article details Restate's architecture, including its bidirectional service connections, partitioned scaling model, embedded RocksDB state storage, and virtual log abstraction. Restate cleverly balances low latency and high durability through log design and storage tiering, supporting SDKs in multiple programming languages.

Development

The Philosophy of Coroutines: A Programmer's Musings

2025-03-27

This article delves into the philosophy of coroutines through the lens of the author's personal journey. From early days simulating coroutines in C with preprocessor tricks to the advent of native C++20 coroutines, the author shares insights into their use and advantages. A comparison of coroutines versus state machines and threads highlights their flexibility, debuggability, and ease of cleanup, particularly beneficial for sequential tasks like network protocols and data stream processing. The author explores various coroutine implementations, optimization techniques using queues and pre-filters, and offers a glimpse into the future of coroutines.

Development

Terraform Docker Provider: Handling Image Attribute Changes Gracefully

2025-03-27

When managing Docker containers with Terraform, the Docker provider transforms the `image` attribute into a SHA digest. This leads to subsequent Terraform refreshes incorrectly detecting image changes and forcing container rebuilds. Simply using `lifecycle { ignore_changes = [image] }` masks actual image changes, creating a potential risk. This article presents a solution: leverage a `null_resource` as a trigger. When the `image` attribute changes, the `null_resource` rebuilds, indirectly triggering a container rebuild, ensuring image updates while avoiding unnecessary container recreation.

Development

Stoffel VM: A Virtual Machine Optimized for Multi-Party Computation

2025-03-27
Stoffel VM: A Virtual Machine Optimized for Multi-Party Computation

Stoffel Virtual Machine is a work-in-progress virtual machine designed for optimizing multi-party computation (MPC). Currently, it boasts basic functionality, supporting various data types (integers, booleans, strings, objects, arrays, etc.) and a rich instruction set including arithmetic, bitwise operations, control flow, and function calls. It also supports Rust FFI for easy integration of high-performance features. Future plans include adding MPC support and garbage collection.

arXiv's 20-Year Odyssey: One Programmer's Reluctant Reign

2025-03-27
arXiv's 20-Year Odyssey: One Programmer's Reluctant Reign

Paul Ginsparg's arXiv preprint server, a cornerstone of scientific communication, has undergone a dramatic transformation over two decades. Initially a solo project, its growth led to management challenges, code maintenance nightmares, and friction with library staff. Despite attempts to relinquish control, Ginsparg remained deeply involved until the Simons Foundation's funding enabled a much-needed restructuring and modernization. This article details the story of a brilliant programmer's tenacious yet bittersweet journey, and the arduous evolution of an open-source platform.

Development

Next.js's Openness Challenges and Netlify's Response

2025-03-27
Next.js's Openness Challenges and Netlify's Response

Netlify delves into the challenges posed by Next.js, including the lack of adapter support hindering other platforms from providing the same experience as Vercel, insufficient documentation for serverless deployments, and numerous undocumented behaviors. These issues force platforms like Netlify to invest heavily in reverse engineering and testing to offer complete functionality. The article advocates for increased openness in Next.js and details Netlify's strategies, such as proactive automated testing and participation in initiatives like OpenNext, to address these challenges.

Development Openness

The Synchrony Budget: Minimizing Synchronous Calls in Distributed Systems

2025-03-27

This article explores the importance of managing synchronous calls when building distributed service systems. The author introduces the concept of a "synchrony budget," advocating for minimizing synchronous requests between services to improve performance and availability. Synchronous calls are costly, impacting response times and system stability. Using an e-commerce order processing example, the article demonstrates how to handle interactions with inventory and shipping services asynchronously (e.g., using Kafka), reserving synchronous calls for situations where they're essential (like payment services). The author also covers the Outbox pattern and CDC technology for handling message buffering and data synchronization in asynchronous communication, ultimately achieving a high-performance and highly available distributed system.

Search Engine Crawler Optimization: The Long Tail of 0.1%

2025-03-27

A search engine's crawler consistently struggled to finish its task, spending days on the final domains. Recent migration to slop crawl data reduced memory usage by 80%, increasing crawling tasks. This resulted in 99.9% completion in 4 days, but the remaining 0.1% took a week. The issue stems from website size following a Pareto distribution, with large websites (especially academic ones with numerous subdomains and documents) and crawler limits on concurrent tasks per domain. Initial random ordering caused large sites to start late. Sorting by subdomain count led to a surge of requests to blog hosts. Adding request delay jitter and adjusting the sort order to prioritize sites with more than 8 subdomains partially solved the problem. However, inherent limitations of the batch crawling model require further optimization.

Development crawler optimization

Rivulet: A Flowing Strand Programming Language

2025-03-27
Rivulet: A Flowing Strand Programming Language

Rivulet is a novel programming language that uses semigraphic characters representing 'strands' to write code. Programs consist of tightly packed code blocks called glyphs, each containing several types of strands that execute together. Rivulet avoids traditional control flow mechanisms, instead using a rollback mechanism to implement conditional branching and loops. Data is organized as lists, and commands operate on single cells or entire lists. While its syntax may seem complex at first glance, it's actually quite easy to learn.

Modern C Updated: Free Edition Now Available with Full C23 Support

2025-03-27

The free version of the updated Modern C is now available! This release focuses on complete support for the new C23 standard. Key improvements include enhancements to integer types (new _BitInt(N) type, `` and `` headers, 128-bit type support), a nullptr constant, attribute annotations, enhanced type-generic programming (auto and typeof type inference), default initialization, and constexpr. New chapters cover compound literals, lambdas, internationalization, and robust error handling. An appendix and a temporary include header are also included to ease the transition to C23.

Development C23 standard

Postel's Law: The Open Source Evolutionary Dead End

2025-03-27

Postel's Law, advocating "be conservative in what you do, be liberal in what you accept," has ironically led to an evolutionary dead end for open-source software. Because closed-source producers often violate specifications, open-source consumers are forced to constantly compromise, leading to specifications becoming meaningless, hindering new projects, and reducing competitiveness. The author urges open-source maintainers to strictly adhere to specifications, reject unreasonable user requests, and direct issues to the offending closed-source vendors, avoiding the "three-ring circus" and maintaining specification integrity.

Write Rust in German: Introducing the Rost Project

2025-03-27
Write Rust in German: Introducing the Rost Project

The Rost project lets you write Rust programs in German, using German keywords, function names, and idioms. It's fully compatible with English Rust, allowing you to mix and match. This fun project invites contributions to expand its capabilities.

Development German

Rust Trait Objects with Multiple Bounds: A Surprising Limitation

2025-03-27
Rust Trait Objects with Multiple Bounds: A Surprising Limitation

This article delves into the reasons behind the limitations of multiple trait bounds in Rust trait objects. The author discovers a compilation error when attempting to use multiple trait constraints (e.g., `Mammal + Clone`) simultaneously within a trait object. The article explores the underlying mechanisms of dynamic dispatch in Rust and C++, comparing their vtable implementations. It examines using trait inheritance to circumvent this limitation and its inherent restrictions. Ultimately, the author suggests that allowing multiple trait bounds requires multiple vtable pointers, although this introduces some redundancy, it efficiently solves type conversion issues.

arXivLabs: Community-Driven Experiments on arXiv

2025-03-27
arXivLabs: Community-Driven Experiments on arXiv

arXivLabs is a platform enabling collaborators to build and share new arXiv features directly on the website. Participants, both individuals and organizations, share arXiv's commitment to openness, community, excellence, and user data privacy. arXiv only partners with those who uphold these values. Got an idea to improve the arXiv community experience? Explore arXivLabs.

Development

eBPF-Go on Windows: A Developer's Guide

2025-03-27

This document details running the eBPF-Go library on Windows. Because eBPF on Windows is not yet stable, the library supports three modes: interpreter, JIT, and compilation to a native Windows driver. It explains differences from Linux, handling platform-specific ELF files, the exported API, development setup (using a Windows VM and build scripts), using pre-built binaries, and debugging and interpreting error codes. Debugging includes using WinDbg and interpreting the trace log. Error handling involves understanding Windows system error codes, RPC errors, ebpf_result_t, and Unix-style errno.

Development

Google Docs Fatal Error: The Bizarre Math.abs() Bug

2025-03-27
Google Docs Fatal Error: The Bizarre Math.abs() Bug

The Google Docs team encountered a bizarre fatal error: in a specific Chrome version, the Math.abs() function unexpectedly became an identity function at the super-optimized level, causing the document editor to crash after extensive text manipulation. After two days of intense debugging, the team finally traced the issue to an optimization change in the V8 engine, which caused Math.abs() to return negative values under specific conditions. This was a low-probability, non-deterministic error that was ultimately resolved with a temporary fix and assistance from the V8 team. The entire process revealed the complexity and challenges of debugging large software systems.

Development V8 engine

Visualizing Linux Kernel Contributions with cregit

2025-03-27

cregit visualizes contributions to the Linux kernel by color-coding source code files to identify individual contributors. Hovering over code snippets reveals commit details, and clicking opens the corresponding GitHub commit. While based on git blame and using srcML for parsing, it has limitations, such as macro expansion and true C compilation. cregit is a collaborative effort from researchers at Polytechnique Montreal, the Linux Foundation, and the University of Victoria.

Compositor Rewrite: Massive Performance Boost for Image Compositing

2025-03-27
Compositor Rewrite: Massive Performance Boost for Image Compositing

The Compositor image compositing engine has been rewritten, resulting in significant performance improvements. Performance gains are particularly noticeable in certain node configurations; caching of static resources like images is optimized, and memory usage is reduced on node setups with many nodes operating on pixels. Filter nodes are dramatically faster: Levels is up to 10x faster, Filter and Kuwahara are twice as fast, Blur nodes are up to four times faster, the Glare filter is 6x more performant and more advanced, and Pixelate is 9x faster. Adjusting compositor node trees is also significantly faster and more interactive, as the compositor now avoids computing outputs not viewed by the user through the backdrop or image editor. The overall compositing experience should feel much more responsive, whether using the CPU or GPU.

Development image compositing

Styrolite: A Secure and Efficient Low-Level Container Runtime

2025-03-26
Styrolite: A Secure and Efficient Low-Level Container Runtime

Styrolite is a new low-level container runtime offering a clean Rust API for container creation and management, addressing the complexity and error-proneness of existing tools like Bubblewrap's CLI. Acknowledging the inherent limitations of Linux namespaces, Styrolite incorporates careful defaults and explicit security controls for a more robust foundation. Used within the Edera Protect platform for secure microservices, application sandboxing, and custom CI/CD environments, Styrolite boasts container initialization times comparable to or faster than traditional CLI approaches.

Development container runtime

Elegant UI Undo Stack Algorithm: Avoiding Indexing Errors

2025-03-26

This article presents a clever implementation of a UI undo stack algorithm. Instead of the traditional index-based approach, it uses two stacks (undoStack and redoStack) to manage undo and redo operations, neatly avoiding common indexing errors and off-by-one issues. The code is concise and easy to understand. The author addresses the pass-by-reference problem in JavaScript using `structuredClone()`, ensuring idempotency. A complete code example is provided.

Google Shifts Android Development Inward, Less Transparency Ahead

2025-03-26
Google Shifts Android Development Inward, Less Transparency Ahead

Google is changing how it develops Android. All future development will occur in internal branches, shifting away from the previously more public AOSP model. While the final source code will still be publicly released, the development process itself will be less transparent. This aims to streamline releases and simplify development for both Google and Android device manufacturers. The change impacts developers and OEMs, but Google promises improved efficiency.

Development

Building iximiuz Labs: A Hands-On DevOps Learning Platform

2025-03-26
Building iximiuz Labs: A Hands-On DevOps Learning Platform

This post details the creation of iximiuz Labs, a learning platform for DevOps, SRE, and platform engineers. It features a unique learning-by-doing approach, combining theoretical learning with interactive practice using Firecracker-based microVMs. The author dives into design goals, architecture, technology choices (including frontend framework, backend language, containerization, and infrastructure), and challenges encountered. The resulting platform is cost-effective, reliable, secure, and scalable, with future plans including IDE integration, multi-node playgrounds, and a Kubernetes visualizer.

Development Learning Platform

Heap Overflow Vulnerability: A Potential System Catastrophe

2025-03-26

A critical heap overflow vulnerability has been discovered, potentially leading to system crashes or remote takeover. An attacker can use a tool called 'random-tool' to cause memory corruption in the 'atop' program on a target system, resulting in 'Segmentation fault' or other fatal errors. Worse, if the target user has root privileges, the attacker gains complete control. The author urges users to stop running the tool to prevent potential risks.

Development

Ruby Ractors and YJIT: A Concurrency Performance Deep Dive

2025-03-26

This post explores the true concurrency capabilities of Ruby Ractors in version 3.4.2 and unexpectedly discovers the impressive performance gains offered by YJIT. Benchmarks using Fibonacci and Tarai functions reveal that Ractors effectively utilize multiple cores on native macOS, but underperform in Docker. However, enabling YJIT significantly improves performance in both environments, exceeding expectations. The author concludes that Ractors are not yet production-ready, but YJIT is production-ready and provides substantial performance improvements.

Development

Playwright MCP: Headless Browser Automation for LLMs

2025-03-26
Playwright MCP: Headless Browser Automation for LLMs

The Playwright Model Context Protocol (MCP) server provides browser automation capabilities for LLMs using Playwright. It allows LLMs to interact with web pages through structured accessibility snapshots, eliminating the need for screenshots or visually-tuned models. It's fast, lightweight, and LLM-friendly, using Playwright's accessibility tree rather than pixel-based input. Features include web navigation, form filling, data extraction, and automated testing. Supports headless and headed modes. Installation is straightforward via VS Code CLI.

Development

NCURSES: The Unsung Hero of UNIX Terminal Programming

2025-03-26

This document introduces the NCURSES library, a powerful and terminal-independent library for screen painting and input event handling. Originating from the screen-handling routines of the vi editor, it evolved through termcap and terminfo databases. NCURSES supports multiple highlights, color, mouse interaction, and extensions for panels, menus, and forms, simplifying terminal application development significantly.

Development terminal programming

Sophisticated npm Malware Campaign Uses Clever Evasion Techniques

2025-03-26
Sophisticated npm Malware Campaign Uses Clever Evasion Techniques

A recent sophisticated malware campaign leveraged two seemingly benign npm packages, ethers-provider2 and ethers-providerz, to inject malicious code into locally installed `ethers` packages. These packages cleverly hide their malicious payload, ultimately establishing a reverse shell connection to the attacker's server. Even after removing the malicious packages, the malicious functionality may persist due to the attackers' clever injection method. This highlights the ongoing risk of malicious packages in open-source repositories and the need for enhanced security measures.

Development npm security

Google Moves All Android Development In-House

2025-03-26
Google Moves All Android Development In-House

Google has confirmed it's moving all Android development to its internal branches, meaning the Android Open Source Project (AOSP) will no longer reflect Google's complete work. This aims to streamline development and prevent merge conflicts, but doesn't change Android's open-source nature. New versions and maintenance releases will be pushed to AOSP. End users and app developers will likely see little impact; the main change is less premature exposure of unconfirmed internal information via AOSP leaks.

Development
1 2 128 129 130 132 134 135 136 214 215