Category: Development

Cross-Compiling Raylib Lisp Bindings and Games for Windows from Linux

2025-06-30

This article details the process of cross-compiling C code and an SBCL Lisp program for Windows from Linux, using Wine to run a Windows SBCL within a Linux-based Emacs, and loading .dll files into the Lisp image to produce a .exe executable. The author outlines cross-compiling C code using mingw-w64-toolchain, configuring the Raylib library for cross-compilation to generate .dll files, installing and using SBCL within Wine, leveraging vend for dependency management, and finally using sb-ext:save-lisp-and-die to create the Windows executable.

Development

arXivLabs: Experimenting with Community Collaboration

2025-06-30
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 share arXiv's values of openness, community, excellence, and user data privacy. arXiv is committed to these principles and only partners with those who adhere to them. Have an idea to improve the arXiv community? Learn more about arXivLabs.

Development

Rust Error Handling: Evolving from Monolithic Enums to Elegant Error Sets

2025-06-30

Rust's error handling has been a point of contention. The traditional approach of defining massive error enums per module or crate leads to bloated and hard-to-maintain code. This article explores alternatives: representing individual errors with structs and managing error sets using tools like the `error_set` crate. `error_set` simplifies error enum definition and conversion via macros, supporting composition and subset relationships between error sets for cleaner, more efficient error handling. While extra work is still needed for complex errors requiring additional information, `error_set` provides a more elegant and maintainable approach to Rust error handling.

Development

Blazing Fast In-Process Event Dispatcher for Go

2025-06-30
Blazing Fast In-Process Event Dispatcher for Go

This Go package delivers a high-performance, in-process event dispatcher ideal for decoupling modules and enabling asynchronous event handling. Boasting speeds 4-10x faster than channels (processing millions of events per second!), it supports both synchronous and asynchronous operations with a focus on simplicity. Perfect for intra-process module decoupling, lightweight pub/sub, and high-throughput scenarios, but not suitable for inter-process communication, event persistence, or advanced routing.

Development Event Dispatcher

Scaling Customer Container Builds with the Depot API

2025-06-30
Scaling Customer Container Builds with the Depot API

Many SaaS platforms need to run code on behalf of their customers, presenting challenges in container building. This post demonstrates building tools with the Depot API to create isolated build environments for a multi-tenant SaaS platform. Using a Go client, you can create projects, manage project caches, retrieve build metrics, and logs. The Depot API leverages Buf.build, offering client libraries for various languages, making integration into existing infrastructure seamless. The article details creating, deleting, and resetting project caches, fetching build metrics and step details, ultimately enabling scalable and secure customer container infrastructure.

Development container builds

Python Dataclasses: `kw_only=True` for Maintainability and Extensibility

2025-06-30

Python's dataclasses offer a convenient way to create data classes, but the default `__init__` method uses positional arguments, which can lead to maintenance and extension difficulties. This article introduces the `kw_only=True` parameter, which enforces keyword arguments, preventing issues caused by changes in argument order and allowing subclasses to add required fields flexibly. While this parameter was introduced in Python 3.10, the article also provides a solution for compatibility with older versions.

Development

Knuth's 'Premature Optimization is the Root of All Evil' Misunderstood?

2025-06-30
Knuth's 'Premature Optimization is the Root of All Evil' Misunderstood?

This article delves into the actual meaning of Donald Knuth's famous quote, "Premature optimization is the root of all evil." By analyzing examples from Knuth's paper on using goto statements and implementing multisets, the author shows that the quote doesn't entirely discourage small optimizations. Experiments comparing different implementations reveal that even minor optimizations (like loop unrolling) can yield significant performance gains for critical code and frequently used library functions, depending on benchmarking results. The author ultimately advocates for using well-optimized standard library functions to avoid unnecessary optimization efforts and leverage modern compiler optimization capabilities.

Development

The Book of Shaders: A Gentle Introduction to Fragment Shaders

2025-06-30
The Book of Shaders: A Gentle Introduction to Fragment Shaders

The Book of Shaders, authored by Patricio Gonzalez Vivo and Jen Lowe, provides a step-by-step guide to understanding fragment shaders. It gently navigates the complexities of this abstract topic. The book includes author bios, acknowledging numerous contributors and translators who made multiple language versions possible.

Development

Bypassing Malware VM Detection: Spoofing a CPU Fan via Custom SMBIOS

2025-06-30

Malware often checks for the absence of hardware components typically not emulated in virtual machines (like a CPU fan) to evade analysis. This post details how to bypass this detection by modifying the virtual machine's SMBIOS data to spoof a CPU fan. The author thoroughly explains the steps for Xen and QEMU/KVM environments, including obtaining SMBIOS data, creating a custom SMBIOS file, and configuring the VM. The post also highlights the need to additionally handle SMBIOS Type 28 (temperature probe) data in Xen for successful WMI deception.

Development

NativeJIT: A High-Performance JIT Compiler for Bing

2025-06-30
NativeJIT: A High-Performance JIT Compiler for Bing

NativeJIT is an open-source, cross-platform library for high-performance just-in-time compilation of expressions involving C data structures. Developed by the Bing team for use in the Bing search engine, it's crucial for scoring documents based on keyword matches and user intent. Lightweight and fast, it relies only on the standard C++ runtime and runs on Linux, OSX, and Windows. Its optimized code, particularly its register allocation, enables efficient processing of large-scale queries.

Development

Budget Ampere Altra Dev Machine Build

2025-06-30
Budget Ampere Altra Dev Machine Build

Needing a development machine with 64k page size support, the author built a system based on Ampere Altra. He chose an AsrockRack ALTRA8BUD-1L2T motherboard, a used Q80-30 processor (80 cores, 3.0 GHz), an Arctic Freezer 4U-M cooler, and eight 16GB SK Hynix HMA82GR7CJR8N-XN RAM sticks. After some troubleshooting, the system booted successfully. He also selected a suitable case and power supply, adding NVME storage and a graphics card. The total cost was around €1800, slightly over budget. Future plans include installing Fedora 42, creating RHEL and CentOS Stream VMs, experimenting with different GPUs, and desktop usage.

Development Development Machine

LLVM-MCA Performance Analysis: Pitfalls of Vectorization Optimization

2025-06-29
LLVM-MCA Performance Analysis: Pitfalls of Vectorization Optimization

The author encountered a performance degradation issue when vectorizing code using ARM NEON. The initial code used five load instructions (5L), while the optimized version used two loads and three extensions (2L3E) to reduce memory accesses. Surprisingly, the 2L3E version was slower. Using LLVM-MCA for performance analysis revealed that 2L3E caused bottlenecks in CPU execution units, unbalanced resource utilization, and stronger instruction dependencies, leading to performance regression. The 5L version performed better due to its more balanced resource usage and independent load instructions. This case study highlights how seemingly sound optimizations can result in performance degradation if CPU resource contention and instruction dependencies aren't considered; LLVM-MCA proves a valuable tool for analyzing such issues.

Development

Bloom Filters: A Probabilistic Data Structure for Efficient Set Membership

2025-06-29

Bloom filters are probabilistic data structures designed for rapid and memory-efficient set membership testing. They use multiple hash functions to map elements to bits in a bit vector. If all corresponding bits are 1, the element *may* be present; otherwise, it's definitely absent. While prone to false positives, their speed and space efficiency make them ideal for large datasets. This article details Bloom filter principles, hash function selection, sizing, applications, and implementation examples across various systems.

Development

Octelium: A Revolutionary Zero Trust Access Platform

2025-06-29
Octelium: A Revolutionary Zero Trust Access Platform

Octelium is a free and open-source, self-hosted, unified platform for zero trust resource access, designed as a modern alternative to VPNs and similar tools. It's incredibly versatile, functioning as a zero-config VPN, ZTNA platform, secure tunnel infrastructure, API gateway, AI gateway, PaaS for secure and anonymous containerized application hosting, Kubernetes gateway, and even a homelab infrastructure. Octelium offers a scalable zero trust architecture (ZTA) for identity-based, application-layer (L7) aware, secret-less secure access via WireGuard/QUIC tunnels and public clientless access.

Development VPN alternative

The Hidden Copyright War Behind Windows 95's Plug and Play

2025-06-29
The Hidden Copyright War Behind Windows 95's Plug and Play

Implementing Plug and Play in Windows 95 wasn't easy. To make older hardware work with the new feature, engineers employed ingenious workarounds. One amusing example involved manufacturers adding the string "Not Copyright Fabrikam Computer" to their BIOS. This was a clever trick to fool LitWare Word Processor's licensing check, unlocking the full version without actually being a licensed Fabrikam PC. This highlights the challenges of early PC compatibility and the lengths manufacturers went to for software licensing.

Development Plug and Play

IPv4 Down? Linux, WireGuard, and Hetzner Saved My Internet!

2025-06-29

A power outage knocked out my IPv4 internet connectivity, leaving only IPv6, but many websites were inaccessible. I used a Hetzner VPS, WireGuard, and Linux network namespaces to cleverly fix this. By setting up a WireGuard server on the VPS, I tunneled my IPv6 connection to restore IPv4 functionality. Network namespaces allowed me to run my work VPN and Docker without interfering with WireGuard. I also solved WireGuard MTU issues. This whole process highlighted the flexibility and problem-solving power of Linux.

Development

Two Enigmatic Mathematica Programs

2025-06-29

This code showcases two Mathematica programs that generate numerical sequences. The first employs `Do` and `While` loops to iteratively build a sequence whose growth pattern depends on the position of preceding elements. The second program extends the sequence by cumulatively adding prior differences, continuing until the length surpasses 50. Both programs highlight Mathematica's capability in generating intricate sequences, with algorithms warranting further investigation.

Development Sequence Generation

XLibre: A Rebellious Fork of X11 Challenges Wayland's Dominance

2025-06-29
XLibre: A Rebellious Fork of X11 Challenges Wayland's Dominance

Frustrated by Wayland's slow progress and shortcomings, developer Enrico Weigelt launched XLibre, a deep improvement of X11. XLibre isn't just a simple branch; it's a complete overhaul aimed at fixing Wayland's flaws and offering superior performance and security. Weigelt claims he was ousted from the Xorg project by Red Hat, sparking industry debate about Red Hat's control over Linux development. Surprisingly, Fedora, a Red Hat derivative, is considering replacing X11 with XLibre. XLibre's future remains uncertain, but it's undeniably injected new variables into the Linux desktop world.

Development

Linux Kernel Drama: Bcachefs Gets the Axe

2025-06-29
Linux Kernel Drama: Bcachefs Gets the Axe

The upcoming Linux kernel 6.17 will drop support for Bcachefs, a COW filesystem, due to escalating tensions between its maintainer, Kent Overstreet, and Linus Torvalds. The conflict stems from disagreements over code submission practices and timing, violating established community rules. A central point of contention was a new 'journal-rewind' feature submitted during the release candidate phase, raising concerns from other developers. Despite Overstreet's arguments about user data integrity, Torvalds ultimately decided to remove Bcachefs entirely, marking a notable event in Linux kernel development history.

Development Developer Conflict

Efficient Awk Function for JSON Parsing

2025-06-29

This code implements a robust Awk function designed to parse JSON data and extract the value associated with a specified key. It handles nested objects and arrays, supports dot-separated key paths, and gracefully manages various JSON data types. Leveraging Awk's string manipulation capabilities, the function efficiently traverses the JSON structure, locating the target key and returning its corresponding value, showcasing Awk's power in data processing.

(akr.am)
Development

AGL: A Concise Scripting Language Compiling to Go

2025-06-29
AGL: A Concise Scripting Language Compiling to Go

AGL is a new programming language that compiles to Go. It leverages Go's syntax but introduces improvements like single return values, tuple and result/option types for streamlined error handling, concise anonymous functions, and built-in array methods. AGL supports operator overloading, enums, and generics, and offers a VSCode extension and shell shebang support for enhanced developer experience. Its flexible compilation allows for both compiling to Go code and direct execution, facilitating rapid iteration and testing.

Development

arXivLabs: Community Collaboration on New arXiv Features

2025-06-29
arXivLabs: Community Collaboration on New arXiv Features

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

Development

MCP: The Accidental Universal Plugin Ecosystem

2025-06-29
MCP: The Accidental Universal Plugin Ecosystem

This article explores the unexpected uses of MCP (Model Context Protocol). Initially designed to enhance AI assistants, its ability to "provide a standardized way to connect AI models to different data sources and tools" transcends the AI realm. Like a USB-C port that can connect a toaster to a monitor, MCP has become a universal plugin ecosystem. Developers can create functional plugins without needing to understand other applications' inner workings. This dramatically enhances app functionality, creating unexpected applications. A task management app, for example, can use MCP servers for spell check, automated coffee ordering, and more.

Development plugin ecosystem

UK Passport Application: A Bureaucratic Adventure Game Solved with Haskell

2025-06-29

The UK passport application process is likened to a complex online game by a programmer. Applicants must gather various documents, akin to collecting artifacts, to prove British citizenship. The rules are intricate, filled with bureaucratic logic, even requiring ancestral birth certificates. Using Haskell, the programmer created a program simulating the process, generating all possible required document sets. This aids in understanding the complexity and sparks discussion on automating government processes and human-computer collaboration.

Development UK Passport Bureaucracy

Oracle's JavaScript Trademark Case: A Fight for Open Source

2025-06-29
Oracle's JavaScript Trademark Case: A Fight for Open Source

The creator of Node.js is fighting Oracle's claim to the "JavaScript" trademark. While a fraud claim was dismissed, the core dispute lies in the trademark's genericness and abandonment. The plaintiff argues "JavaScript" is a generic term, not an Oracle brand, and Oracle's use of a Node.js website screenshot as evidence further fuels the controversy. The case will proceed, with Oracle required to respond to allegations of genericness and abandonment. The outcome will determine whether "JavaScript" is freed from trademark restrictions and returned to the community.

Development

Undergrad Team Runs Xv6 on a Homebrew CPU

2025-06-28

In 2015, a University of Tokyo undergraduate team tackled an ambitious project: designing, building, and running the Xv6 operating system on a homebrew CPU with a custom RISC ISA. Over four months, they built a C compiler from scratch, overcame numerous challenges in understanding and implementing the necessary CPU features for an OS (interrupts, memory management), and successfully ported Xv6, even adding games like 2048 and Minesweeper. Their final demo ran the required ray-tracing program on top of Xv6, showcasing incredible ingenuity and problem-solving skills. This project serves as a testament to the rewards of reinventing the wheel and the educational value of hands-on learning.

Development CPU Design

Why Senior Developers Are More Crucial Than Ever in the Age of AI Code Generation

2025-06-28
Why Senior Developers Are More Crucial Than Ever in the Age of AI Code Generation

In the era of AI-powered code generation, senior developers are more vital than ever. The article argues that a program is not just code, but a theoretical model built upon a deep understanding of the system. AI-generated code often lacks this theoretical foundation, leading to incoherent codebases and accumulating technical debt. Senior developers build and maintain this theoretical framework, ensuring code aligns with business needs and mentoring junior developers to transform scattered code into coherent programs. Therefore, organizations need to prioritize knowledge sharing and theoretical inheritance to cultivate developers with strong theoretical foundations, ensuring software quality and long-term maintainability.

Development senior developers

Whitesmiths C Compiler Open Source Initiative: A Legend Returns

2025-06-28
Whitesmiths C Compiler Open Source Initiative: A Legend Returns

The Whitesmiths C compiler, originally released in 1978, supported architectures like DEC PDP-11 and Intel 8080, is poised to become open source! Its creator, P.J. Plauger, has granted permission for non-commercial use. Binaries and some source code for versions including CP/M-80 and an IBM System/36 cross-compiler are now available for download. This historically significant compiler will be a valuable resource for studying the history and development of the C language.

Development

Bare-Metal Nim on Raspberry Pi: A Headless Adventure

2025-06-28
Bare-Metal Nim on Raspberry Pi: A Headless Adventure

This project details a bare-metal environment for Raspberry Pi 1/Zero using the Nim programming language. It features a cooperative scheduler, asynchronous programming model, and direct hardware access without vendor-specific APIs. The project includes memory management, exception handling, and runtime monitoring, along with comprehensive setup instructions. Future plans involve expanding to more target platforms and adding more peripheral drivers.

Development

Generative AI: A Paradigm Shift in Programming

2025-06-28
Generative AI: A Paradigm Shift in Programming

Large Language Models (LLMs) are revolutionizing software development, a change comparable to the shift from assembly language to high-level programming languages. The author argues that LLMs not only raise the level of abstraction but also introduce non-determinism, fundamentally altering the nature of programming. The evolution from Fortran to Ruby improved efficiency but didn't change the core essence of programming. The non-determinism introduced by LLMs requires programmers to adapt, presenting both challenges and opportunities.

Development
1 2 38 39 40 42 44 45 46 202 203