Category: Development

My Last Name Is 'Null,' and It's Breaking the Internet

2025-02-03
My Last Name Is 'Null,' and It's Breaking the Internet

The author's last name is "Null," a reserved word in many programming languages. This seemingly innocuous detail causes significant problems, from website form submissions failing to email addresses being rejected. Even when systems accept "Null," unexpected errors arise. Workarounds, like adding a period or using aliases, are temporary fixes. This humorous tale highlights common software development issues and the helplessness of large corporations in addressing them effectively. The author's struggles with Bank of America's email system, which consistently fails to handle his name, serve as a prime example.

Development

SCQA: A Framework for Compelling Storytelling

2025-02-03
SCQA: A Framework for Compelling Storytelling

SCQA is a framework for structuring information using Situation, Complication, Question, and Answer to create clear, engaging narratives. The article uses gamification in physical therapy as an example, showing how SCQA transforms a mundane process into a compelling story, improving patient engagement. Applicable across various fields—business, policy, science—and media—emails, presentations, books, blogs—SCQA enhances communication and clarity.

Hilbert's 10th Problem Extended: Undecidability Proved for Broader Rings

2025-02-03
Hilbert's 10th Problem Extended: Undecidability Proved for Broader Rings

Mathematicians have solved a major extension of Hilbert's 10th problem, proving that determining whether Diophantine equations have solutions is undecidable for a vast class of number rings. Building on Yuri Matiyasevich's 1970 proof for integer solutions, the work utilizes elliptic curves and quadratic twists to overcome limitations of previous approaches with non-integer solutions. This breakthrough not only deepens our understanding of the limits of computability but also provides new tools for mathematical research.

Benchmarking Code Retrieval: Challenges and Voyage AI's Approach

2025-02-03
Benchmarking Code Retrieval: Challenges and Voyage AI's Approach

Modern coding assistants heavily rely on code retrieval, but existing evaluation methods fall short. Voyage AI's research highlights issues with current datasets, including noisy labels, lack of deep algorithmic reasoning assessment, and data contamination, leading to unreliable model evaluations. To address this, Voyage AI proposes two methods for creating high-quality code retrieval datasets: repurposing question-answer datasets and leveraging GitHub repositories and issues/tickets. Voyage AI also built its internal benchmarking suite, encompassing multiple programming languages, various QA datasets, and domain-specific benchmarks, evaluating several code embedding models. Voyage-code-3 emerged as the top performer.

Senior Dev's Wisdom: Avoiding Rewrites and Efficient Coding

2025-02-03

A senior developer shares their software development philosophy, emphasizing the pitfalls of rewriting code from scratch. They highlight that when a rewrite seems appealing, avoidable mistakes have already been made, such as accumulating technical debt and increasing code complexity. The advice includes alternating between expansion (new features) and consolidation phases, budgeting ample time for polishing and testing, and automating best practices. The importance of considering edge cases and pathological data is stressed, along with writing testable code whose correctness is obvious.

Development

Rust's `time` Crate Gets a 57.5% Speed Boost with a Rewritten Algorithm

2025-02-03

After five years of maintaining the Rust `time` crate, the author undertook a major performance optimization. By redesigning the `Date::to_calendar_date` algorithm, leveraging Euclidean affine functions and clever integer arithmetic, the author avoided floating-point operations and branching, resulting in a 57.5% performance improvement. The new algorithm is significantly faster not only when calculating both date and month together but also when calculating them separately. This was a non-trivial undertaking, but the author believes the performance gains are well worth the effort.

Development

httptap: Monitor HTTP/HTTPS Requests on Linux

2025-02-03
httptap: Monitor HTTP/HTTPS Requests on Linux

httptap is a command-line tool for Linux that monitors HTTP and HTTPS requests made by any program without requiring root privileges. It achieves this by running the target program in an isolated network namespace and intercepting its network traffic. Written in Go, httptap is dependency-free and readily executable. It displays detailed request information, including URLs, HTTP status codes, request bodies, and response bodies, and supports exporting data to HAR files. httptap also supports DoH (DNS over HTTPS) and handles HTTP redirects.

Development

Supercharge HDD Write Performance with Linux's dm-writecache

2025-02-03
Supercharge HDD Write Performance with Linux's dm-writecache

This article delves into Linux's dm-writecache kernel module, which leverages an NVMe SSD as a write-back cache for slower HDDs, dramatically improving random write performance. The author demonstrates a speed increase of tens of times through experiments comparing random write speeds with and without dm-writecache. The article also covers other caching methods and tools like bcache and ReadyBoost, detailing the configuration of dm-writecache using both LVM2 and the dmsetup utility for those without LVM2. Finally, it summarizes the significant performance gains achieved with dm-writecache and suggests using the remaining NVMe space to cache other slower drives.

Development Caching

arXivLabs: Experimental Projects with Community Collaborators

2025-02-03
arXivLabs: Experimental Projects with Community Collaborators

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

Development

Reverse Engineering Apple's typedstream Format: Inside imessage-exporter

2025-02-03

This article details the reverse engineering of Apple's proprietary binary serialization protocol, typedstream, undertaken by the imessage-exporter project. Typedstream, used for storing iMessage data, is undocumented and not part of Apple's public APIs. By analyzing BLOB data in the iMessage database, the author identified patterns within the typedstream format, such as 0x84 marking the beginning of a data block with the subsequent byte indicating length, and 0x86 signifying the end of a block. Using these patterns, the author successfully deserialized the typedstream data, achieving cross-platform access to iMessage data.

Development binary serialization

Python's JIT Decorators: Three Implementation Strategies

2025-02-03

This article delves into the popular JIT decorator pattern in Python, particularly its use in JAX and Triton libraries. The author implements three JIT decorators from scratch using a simplified example: AST-based, bytecode-based, and tracing-based. The AST-based approach directly manipulates the Abstract Syntax Tree; the bytecode-based approach leverages Python's bytecode interpreter; and the tracing-based approach builds an expression IR by tracing function execution at runtime. The article details the advantages and disadvantages of each approach and uses JAX and Numba as examples to illustrate their strategies in real-world applications.

Development JIT compilation

Building a WebAssembly VM in C: A Six-Month Side Project Retrospective

2025-02-03

Over six months, the author dedicated their spare time to building a WebAssembly virtual machine in C, called Semblance. This project provided a much-needed break from the cycle of short-lived side projects and allowed for a deep dive into the WebAssembly core specification. The article details the architecture, covering module decoding, import resolution, module instantiation, and instruction execution. The author shares challenges and learnings, culminating in a successful "Hello, World!" execution. This project not only boosted the author's skills but also provided a strong foundation for future contributions to industrial-grade runtimes.

Development

Ruby Thread Contention: It's Not a Free-for-All

2025-02-03

For a long time, I misunderstood "thread contention" in Ruby. It's not a chaotic struggle; instead, Ruby threads politely queue for the Global VM Lock (GVL). Each thread gets the GVL, executes code, and then releases it or is preempted after a certain time (the thread quantum, defaulting to 100ms). This happens when a thread performs I/O or runs longer than its quantum. Understanding this is crucial for optimizing multithreaded applications, especially to avoid CPU-bound threads blocking I/O-bound threads, leading to increased tail latency. Lowering the priority of CPU-bound threads or reducing the thread quantum can help, but the minimum slice is 10ms.

Development

YouTube Channel Deleted: Indie Dev Hit by Algorithmic Misfire

2025-02-03
YouTube Channel Deleted: Indie Dev Hit by Algorithmic Misfire

Indie developer Sinevibes' YouTube channel was deleted due to alleged violations of "spam and deceptive policies." Sinevibes claims they only posted demos of their own original products and are baffled by the deletion. This incident highlights the impact of algorithmic misjudgments on content creators and sparks debate about platform moderation practices.

Development

Google Kills Dart Macros: A Focus on What Matters

2025-02-03
Google Kills Dart Macros: A Focus on What Matters

The Google Dart team announced the cancellation of the Macros project, aimed at simplifying repetitive code in Flutter and Dart development. Due to unmet performance goals and insufficient return on years of prototyping, Google is breaking Macros into smaller features. The author, a former leader of the Flutter and Dart teams, connects this decision to Steve Jobs' philosophy of saying 'no' to make room for 'yes', emphasizing the importance of focus. They express optimism for the future of the Dart team.

Development

Ubuntu Developers Migrate to Matrix for Real-time Communication

2025-02-03
Ubuntu Developers Migrate to Matrix for Real-time Communication

The Ubuntu development team announced a move from IRC to Matrix as its primary real-time communication platform, effective March 2025. This change aims to streamline communication, prevent fragmentation, and attract newer developers. While IRC remains popular, its limited features are less appealing to newer contributors who prefer richer platforms like Matrix, offering features such as discussion history, search, and offline messaging. Many Ubuntu teams and open-source projects already use Matrix, making it a natural choice. This only affects internal developer communication; end-users are unaffected.

Development

Lightweight Durable Execution: The DBOS Transact Open-Source Library

2025-02-03
Lightweight Durable Execution: The DBOS Transact Open-Source Library

Traditional durable execution relies on external orchestrators like AWS Step Functions, adding complexity to development and deployment. DBOS Transact is a lightweight open-source library that integrates durable execution into the program itself, eliminating the need for external orchestrators. It achieves durable execution by persisting the program's execution state in a Postgres database, allowing automatic recovery to the point of interruption even if the program crashes or restarts. DBOS Transact also provides additional features such as durable sleep, durable messaging, and durable queues, further simplifying the development of reliable, stateful programs.

Development

Securing Secrets in Modern Docker Compose Deployments

2025-02-03
Securing Secrets in Modern Docker Compose Deployments

This guide explores best practices for managing secrets in Docker Compose, moving from basic to more secure approaches. It highlights the risks of using environment variables and .env files, demonstrating how secrets can be exposed. The article details three methods: using environment variables mounted as files, file-based secrets mounted from the host, and leveraging Docker Compose's secrets feature with granular access control. It emphasizes the importance of secure file management, avoiding hardcoding secrets, and using tools like Phase to streamline the process, ultimately aiming to enhance security and prevent incidents.

Development Secret Management

Building a Retro 3D Website Effect with Shaders: Dithering, Quantization, and Pixelation

2025-02-03
Building a Retro 3D Website Effect with Shaders: Dithering, Quantization, and Pixelation

The author spent months building their personal website, incorporating 3D work to showcase shader and WebGL skills. The article delves into the crucial role of post-processing in enhancing 3D scene visuals, focusing on creating retro effects. It covers various dithering techniques (white noise, ordered, and blue noise), explaining their implementation using shaders. Color quantization techniques are also detailed, allowing for custom palettes. The article culminates in a stunning retro 3D website effect combining pixelation and CRT monitor emulation.

Development Shaders Post-processing

NSDI '24: Autothrottle: A Practical Bi-Level Approach to Resource Management for SLO-Targeted Microservices

2025-02-03

USENIX is committed to Open Access, making research from its events freely available. Papers, proceedings, and any subsequent video/audio/slides are open to all after the event. This includes the NSDI '24 paper, "Autothrottle: A Practical Bi-Level Approach to Resource Management for SLO-Targeted Microservices," by Wang et al., presenting a practical approach to managing resources for SLO-targeted microservices. The paper, video, and slides are now publicly accessible.

Development

Global Variables: Not the Devil You Think They Are

2025-02-03

This article uses a simple counter example to demonstrate how avoiding global variables can unexpectedly lead to bugs. The author argues that the problem isn't global variables themselves, but the hidden nature of data access – "action at a distance". Different variable types are analyzed, and the article explores ways to use global variables appropriately in specific scenarios, such as encapsulating them into functions or using types that only allow append operations, thus preventing issues caused by "action at a distance".

HYTRADBOI: The Async Database & Programming Language Conference

2025-02-02

HYTRADBOI is a unique online conference exploring the intersection of databases and programming languages. All talks are pre-recorded and captioned, delivered asynchronously via a persistent chat room. This allows participants to join from anywhere, anytime, fostering rich discussion. Attendees rave about its asynchronous format, the depth of the talks, and the forward-thinking nature of the content, making it a highly recommended event.

Garmin Data Parser: Harness Your Fitness Data with GarminDb

2025-02-02
Garmin Data Parser:  Harness Your Fitness Data with GarminDb

GarminDb is a powerful suite of Python scripts designed to parse health data from Garmin Connect and store it in a lightweight SQLite database. It automatically downloads and imports daily monitoring data (heart rate, activity, climb/descend, stress, and intensity minutes), sleep, weight, and resting heart rate information. Furthermore, it summarizes data into daily, weekly, monthly, and yearly reports and allows graphing via command line or Jupyter Notebooks. A plugin system allows for easy expansion of data types. In short, GarminDb is a comprehensive and easy-to-use tool for managing your Garmin data, making health data analysis more efficient and convenient.

Development

Effective Stakeholder Engagement in Agile Projects: A How-To Guide

2025-02-02

This article explores the crucial role of stakeholder engagement in agile project management. It highlights the challenges of maintaining consistent participation in fast-paced, iterative environments, particularly with changing requirements and geographically dispersed teams. The article emphasizes the importance of tools like stakeholder mapping, digital collaboration platforms (Jira, Trello), and prioritization frameworks (MoSCoW, Kano) in fostering effective communication and alignment. The key roles of project managers and business analysts in bridging the gap between stakeholders and agile teams are also discussed, illustrating how successful engagement leads to improved project outcomes and reinforces the value of agile methodologies. Real-world examples from Kaiser Permanente, Revolut, and Atlassian showcase the practical application of these strategies.

arXivLabs: Experimenting with Community-Driven Features

2025-02-02
arXivLabs: Experimenting with Community-Driven Features

arXivLabs is an experimental platform enabling collaborators to develop and share new arXiv features directly on the website. Participants share arXiv's values of openness, community, excellence, and user data privacy. Got an idea to improve the arXiv community? Learn more about arXivLabs.

Development

mutool: A Swiss Army Knife for PDF Manipulation

2025-02-02

mutool, built on the MuPDF library, is a powerful command-line tool offering a wide array of subcommands for manipulating PDF files. From converting pages to PNGs and extracting text to merging multiple PDFs and extracting embedded images and fonts, mutool handles a diverse range of tasks. It's a versatile tool for both simple conversions and complex PDF operations.

Development PDF manipulation

Python Protocols: Static Duck Typing and the Evolution of Inheritance

2025-02-02
Python Protocols: Static Duck Typing and the Evolution of Inheritance

Python's inheritance mechanism has always been interesting. Traditionally, Python uses type-based inheritance, similar to Java. However, the flexibility of duck typing (implemented through magic methods) is limited. PEP 544 introduces Protocols, allowing the definition of structural subtyping, also known as static duck typing. By inheriting from the Protocol class, developers can declare a set of methods; any class implementing these methods will be considered an instance of that protocol. This solves the scalability issues of traditional duck typing, resulting in cleaner, more maintainable code.

Development Duck Typing

Sniffnet: A Powerful, Cross-Platform Network Traffic Monitor

2025-02-02
Sniffnet: A Powerful, Cross-Platform Network Traffic Monitor

Sniffnet is a free and open-source, cross-platform network traffic monitoring tool available in multiple languages. Its intuitive interface allows users to easily monitor network traffic, view real-time charts, export PCAP files, and identify services and protocols. Sniffnet also supports custom themes, notifications, and filters, and includes a comprehensive Wiki. While older systems may require setting an environment variable to switch renderers, Sniffnet is a powerful and user-friendly tool overall.

Development network monitoring

Lume: A Lightweight CLI for Managing VMs on Apple Silicon

2025-02-02
Lume: A Lightweight CLI for Managing VMs on Apple Silicon

Lume is a lightweight command-line interface (CLI) and local API server for creating, running, and managing macOS and Linux virtual machines (VMs) on Apple Silicon with near-native performance, leveraging Apple's Virtualization.Framework. Run pre-built macOS images in a single step. The CLI offers a comprehensive set of commands for VM management, including creation, running, listing, getting details, setting configurations, stopping, deleting, pulling images, cloning, and cache management. Lume also exposes a local HTTP API server for automated VM management.

Development

OmiAI: The Opinionated AI SDK That Just Works

2025-02-02
OmiAI: The Opinionated AI SDK That Just Works

OmiAI is a TypeScript AI SDK that auto-selects the best model from a curated suite based on your prompt. It boasts built-in o3-like reasoning, curated tools, internet access, and full multi-modal support for nearly all media types. Imagine using one LLM that excels at everything – that's the OmiAI promise. It intelligently chains models for complex tasks, features built-in reasoning and tool-calling, and offers seamless multi-modal support and real-time internet access. Simplify your LLM workflow with OmiAI.

Development
1 2 170 171 172 174 176 177 178 214 215