Category: Development

vramfs: Turn Your GPU VRAM into a Filesystem

2025-03-29
vramfs: Turn Your GPU VRAM into a Filesystem

vramfs is a utility leveraging the FUSE library to create a filesystem in your GPU's VRAM. Similar to a ramdisk, but using video RAM, it's not for high-intensity use but works surprisingly well on consumer GPUs with 4GB+ VRAM. The developer achieved ~2.4 GB/s read and 2.0 GB/s write speeds, about 1/3 of a ramdisk. It uses OpenCL for memory management and FUSE for simplified development. Future improvements aim to reach PCI-e bandwidth limits.

Development Filesystem

Learn Japanese Grammar with TypeScript: Introducing Typed Japanese

2025-03-29
Learn Japanese Grammar with TypeScript: Introducing Typed Japanese

Typed Japanese is a TypeScript type-level library that allows you to express complete Japanese sentences using the type system. It creates a domain-specific language (DSL) based on Japanese grammar rules, enabling the writing and verification of grammatically correct natural language using TypeScript's compiler. The project also explores an intermediate format for AI in language learning, potentially replacing JSON with a type-checked representation for improved accuracy. It supports various verb and adjective conjugations, phrase and sentence construction, aiming to create a type system for learning and verifying Japanese grammar. While still in early stages and relying on LLM-generated rules, it offers a unique approach to language learning and grammar verification.

Converting LaTeX to Accessible HTML: A Case Study

2025-03-29
Converting LaTeX to Accessible HTML: A Case Study

LaTeX, while excellent for producing high-quality typeset documents, suffers from accessibility issues due to its PDF output. This article explores converting LaTeX to HTML for improved accessibility. It compares alternatives to LaTeX (Pressbooks, PreTeXt, Markdown) and focuses on LaTeXML and BookML as conversion tools. A case study detailing the conversion of an open logic textbook highlights challenges and tricks, such as handling mathematical formulas, alt text for images, and screen reader compatibility. The author's experience demonstrates the process of creating a more accessible online textbook, balancing the needs of various assistive technologies.

Development

Microsoft Patches Windows 11 Bypass for Microsoft Account Login

2025-03-29
Microsoft Patches Windows 11 Bypass for Microsoft Account Login

The latest Windows 11 Dev Channel preview build removes the bypassnro.cmd script, previously allowing users to circumvent the mandatory Microsoft account login requirement. Microsoft states this change enhances security and ensures all users sign in with a Microsoft account while online. This will inconvenience users who prefer offline setup or local accounts, though Microsoft accounts offer benefits like easy access to subscriptions and data syncing. Local accounts, however, reduce notifications and upsells.

Development

The End of Microservices Discussions: A Pointless Architectural Debate

2025-03-29
The End of Microservices Discussions: A Pointless Architectural Debate

The author recounts his frustration with endless debates about microservices during an architecture review meeting. He argues that the lack of a clear definition, the detachment from business goals, and the neglect of organizational changes render these discussions unproductive. Many discussions about microservices are actually about wanting cutting-edge technology rather than solving real-world problems. The author proposes abandoning abstract discussions about microservices and focusing on concrete challenges like faster feature deployments, reduced coupling, and solving bottlenecks. Microservices only work when organizational structure and processes support them; otherwise, they just add complexity.

Development

Critical Ubuntu User Namespace Bypass Exploits Discovered

2025-03-29
Critical Ubuntu User Namespace Bypass Exploits Discovered

Qualys researchers have uncovered three critical security bypasses in Ubuntu 23.10 and 24.04's unprivileged user namespace restrictions. These bypasses, leveraging the aa-exec tool, busybox shell, and LD_PRELOAD technique, allow local attackers to create user namespaces with full administrative privileges, potentially exploiting kernel vulnerabilities. Canonical acknowledges these as limitations of their AppArmor defense, not vulnerabilities, and recommends administrative hardening steps such as enabling kernel.apparmor_restrict_unprivileged_unconfined=1 to mitigate the risks.

Development

bknd: A Lightweight, Full-Featured Backend for Simplified App Development

2025-03-29
bknd: A Lightweight, Full-Featured Backend for Simplified App Development

bknd simplifies app development by providing a fully functional backend for database management, authentication, media, and workflows. Built on web standards, it's lightweight and deployable nearly anywhere, including within your framework of choice. No more deploying multiple separate services! It offers a REST API, React SDK, and React elements for authentication and media components, along with an easy-to-use admin UI. While still under active development (pre-v1.0.0), full backward compatibility isn't yet guaranteed.

Development

Windows 11 Insider Preview Build 26200.5516: Enhanced Semantic Search and More

2025-03-29
Windows 11 Insider Preview Build 26200.5516: Enhanced Semantic Search and More

The latest Windows 11 Insider Preview Build 26200.5516 brings a host of improvements to the Dev Channel. The highlight is enhanced Windows Search for AMD and Intel-powered Copilot+ PCs. Using semantic indexing, users can now search using natural language – such as "bridge at sunset" – to find documents, photos, and settings, even offline. Also included are a new Narrator speech recap feature for reviewing and copying spoken content; an improved UI for unexpected restarts; Win+C hotkey and press-to-talk functionality for Copilot; Click to Do improvements; and enhanced Windows sharing capabilities. Several known issues are slated for fixes in future updates.

Grammarly Extension Breaks Website Layout with CSS Conflict

2025-03-29
Grammarly Extension Breaks Website Layout with CSS Conflict

A website builder discovered that the Grammarly browser extension was breaking their website's layout. Grammarly injects a stylesheet that overrides the website's own styles, particularly by using the same custom property `--rem`, causing the website's fluid typography system to malfunction. The author fixed the issue using a mutation observer and the custom property `--🤡`, and called on Grammarly to improve its extension's design to avoid conflicts with other websites' styles.

Development CSS conflict

Deep Dive: Tracing the `write()` System Call in OpenBSD

2025-03-29

This article delves into the low-level implementation of the `write()` system call in OpenBSD. Starting from the user-space `write()` call, it traces the data's journey through the kernel, detailing the complete path from system call to data written to an NVMe hard drive. The article reveals a chain of kernel function calls, including `mi_syscall`, `sys_write`, `dofilewritev`, `vn_write`, `ffs_write`, `uiomove`, `bdwrite`, `syncer`, `bwrite`, `ufs_strategy`, `spec_strategy`, `sdstrategy`, and finally the NVMe driver. It illustrates data transformation and transmission across different abstraction layers, highlighting key technical details such as caching mechanisms and DMA transfers.

Development System Call

Building a Cross-Platform Encrypted Search Engine: Tackling Browser Storage

2025-03-29
Building a Cross-Platform Encrypted Search Engine: Tackling Browser Storage

This article tackles the initial hurdle in building a cross-platform encrypted search engine: secure and efficient browser-side data storage. The author compares LocalStorage, IndexedDB, and the FileSystem API, ultimately choosing the FileSystem API for its file-system-like interface, better performance, and consistency with other platforms. The article details using Rust and web-sys to interact with the FileSystem API and implements an AES-GCM encryption layer for security. Finally, a unified `File` trait is created for managing both encrypted and unencrypted files.

Development encrypted storage

Tracking Code Changes with Git Hooks: A Data-Driven Approach to Development

2025-03-29

This article presents a method for tracking code modification time using Git hooks to provide a more objective measure of development efficiency. By recording the time from branch creation to merge, excluding thinking time, it offers a clearer reflection of actual coding time. This approach helps teams identify and address inefficiencies in code maintenance, such as excessively long maintenance times for certain components, or efficiency gains from AI tools. The ultimate goal is to optimize the development process, reduce entropy, and boost team productivity through data-driven insights rather than subjective estimations.

Development Git hooks

Postgres Language Server: A Powerful SQL Toolchain for Developers

2025-03-29
Postgres Language Server:  A Powerful SQL Toolchain for Developers

This project offers a comprehensive toolchain for Postgres development, built upon Postgres' own parser (libpg_query) for guaranteed 100% syntax compatibility. Employing a server-client architecture with transport-agnostic design, it provides access via LSP, CLI, HTTP APIs, and WebAssembly. Current features include autocompletion, syntax highlighting, type checking (using EXPLAIN insights), and a linter. Future development focuses on enhancing these core features and building a robust infrastructure. Contributions are welcome!

Development Developer tools

Beyond OOP: The Evolution of Subtyping in Programming Languages

2025-03-29

This article explores the crucial role of subtyping in programming language design. The author, drawing on their experience developing several programming languages, explains that subtyping is not limited to class inheritance in object-oriented programming but is a more fundamental concept: type X is a subtype of type Y if a value of type X can be used wherever a value of type Y is expected. The article clearly explains why subtyping is crucial even in performance-oriented low-level languages, enabling the compiler to statically check for null values, aliasing, and other issues, thereby improving code reliability and ultimately driving the evolution of programming languages.

Development subtyping

Elixir's BEAM VM: Busy Waiting – Optimization or Resource Hog?

2025-03-29

Benchmarking Go, Elixir, and Node.js revealed Elixir (on the BEAM VM) exhibited high CPU usage despite excellent responsiveness. The culprit? Busy waiting, a BEAM optimization maximizing responsiveness. While misleading OS-reported CPU usage, enabling busy waiting is beneficial for HTTP workloads on dedicated hardware. However, disabling it is recommended on systems sharing kernels with other software or cloud burstable instances to prevent impacting other processes. Tests showed no performance difference with busy waiting disabled for HTTP requests.

Development Busy Waiting

arXivLabs: Experimenting with Community Collaboration

2025-03-29
arXivLabs: Experimenting with Community Collaboration

arXivLabs is a framework enabling collaborators to develop and share new arXiv features directly on our website. Individuals and organizations working with arXivLabs share 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

Testing Without Mocks: A Novel Approach to Unit Testing

2025-03-29

This article presents a novel approach to unit testing that eliminates the need for mocks and spies, resulting in fast, reliable, and maintainable tests. The core idea involves combining state-based testing with a new infrastructure technique called "Nullables." Nullables aren't test doubles; they're production code with an "off" switch, allowing tests to run without relying on external systems or state. While requiring modifications to production code, this approach avoids many drawbacks of traditional methods, such as flaky tests and difficult refactoring, and offers significant performance gains. The article thoroughly explains the patterns and techniques involved, including Narrow Tests, State-Based Tests, and Overlapping Sociable Tests, providing ample code examples and diverse use cases, making it ideal for developers to learn and implement.

Development

Self-Hosting a Nearly Free, Open Source TURN Server on Oracle Cloud

2025-03-28
Self-Hosting a Nearly Free, Open Source TURN Server on Oracle Cloud

This guide details setting up a nearly free, open-source TURN server on Oracle Cloud's free tier, offering an alternative to WebRTC implementations relying on third-party services. It walks through creating subnets, security lists, instance configurations, installing Nginx, Certbot, a PeerJS server, and a Coturn server. The guide covers configuring iptables rules and using coturn-credential-api for authentication, providing complete control over WebRTC communication and enhancing privacy and security by avoiding reliance on Google or other large providers.

Swiftly 1.0: Streamlining Swift Toolchain Management

2025-03-28
Swiftly 1.0: Streamlining Swift Toolchain Management

Swiftly 1.0 has officially launched! This Swift version manager simplifies installing, managing, and updating your Swift toolchain. Supporting macOS and various Linux distributions, it allows developers to easily install different Swift versions and use Swift outside of Xcode. Written in Swift and self-updating, Swiftly supports stable releases, nightly snapshots, and older versions, enabling effortless switching between them. A `.swift-version` file facilitates team-wide version consistency. Swiftly makes Swift development more convenient and efficient.

Optimized FP32 Matrix Multiplication on AMD RDNA3 GPU: Outperforming rocBLAS by 60%

2025-03-28
Optimized FP32 Matrix Multiplication on AMD RDNA3 GPU: Outperforming rocBLAS by 60%

This post details the optimization journey of creating an FP32 matrix multiplication kernel for AMD RDNA3 GPUs that surpasses rocBLAS by 60%. The author iteratively refines eight kernels, starting with a naive implementation and progressing to ISA-level optimizations. Techniques include LDS tiling, register tiling, global memory double buffering, LDS utilization optimization, and ultimately ISA-level VALU optimization and loop unrolling. The final kernel outperforms rocBLAS, achieving nearly 50 TFLOPS.

Development matrix multiplication

FreeBSD Foundation Provides Framework Laptops for Improved User Experience

2025-03-28

The FreeBSD Foundation provided Framework laptops to developers to enhance the FreeBSD experience on laptops. A developer documented their journey installing and configuring FreeBSD 14.2, including OS installation, graphics driver setup, and challenges encountered such as bezel installation and Wayland desktop compatibility issues. While running KDE Plasma 6 on Wayland presented hurdles, this provides valuable insights for improving FreeBSD's desktop experience.

Development

SignalBot: Security, Features, and Free Use

2025-03-28

SignalBot, a free Signal-based notification bot, employs strong security measures and doesn't store messages or metadata; however, sensitive data usage is discouraged. It offers a generic webhook API supporting plain text and emojis (with Markdown support coming soon) for individual or group notifications. Need custom notification formats or specific integrations? Contact the developer!

Development notification bot

Hexi: A Lightweight C++23 Library for Safe Binary Data Handling

2025-03-28
Hexi: A Lightweight C++23 Library for Safe Binary Data Handling

Hexi is a lightweight, header-only C++23 library for safely handling binary data from arbitrary sources (primarily network data). It bridges the gap between manually memcpying bytes and full-blown serialization libraries. Designed for ease of use, safety with untrusted data, flexibility, and minimal overhead, Hexi supports custom containers (including non-contiguous ones), exception handling, and bounds checking. Additional features include buffer types for binary files, static/dynamic buffers, and a thread-local block allocator.

Development Binary Data

Analyzing Disk I/O Bottlenecks in GitHub CI Pipelines

2025-03-28
Analyzing Disk I/O Bottlenecks in GitHub CI Pipelines

This article investigates often-overlooked disk I/O bottlenecks in GitHub CI pipelines. Using tools like iostat and fio, the author monitors and tests disk performance across different runners, discovering bandwidth limitations on the default ubuntu-22.04 runner that hinder dependency installation. The analysis delves into the impact of cache download, extraction, and numerous small file writes on disk I/O. The article recommends using fio for benchmarking and comparing runner disk performance, ultimately highlighting Depot's upcoming Ultra Runner, promising significant improvements in disk I/O performance.

Development Disk I/O

Xee: A Modern XML Execution Engine in Rust

2025-03-28

The author spent two years building Xee, an XML Execution Engine implemented in Rust, supporting modern XPath and XSLT. More than just a library, Xee is a full programming language implementation, featuring a command-line tool and a Rust library, aiming to revitalize the aging XML technology. The article details Xee's architecture, implementation, and the history and current state of XML, with a call to action for developers to contribute.

Development

Statically Linking Go Executables with CGO and Zig

2025-03-28

This post demonstrates building a statically linked Go executable that utilizes CGO dependencies via Zig. The author creates a Zig static library, then writes a simple Go program to call a function within it. By employing specific `go build` flags and leveraging Zig's build system, a statically linked executable, free from dynamic library dependencies, is successfully created, enhancing portability and security.

Development static linking

Building Node.js with clang-cl on Windows: A Success Story

2025-03-28

The author recently successfully built Node.js using clang-cl on Windows, overcoming several compilation hurdles. The post details the process, including installing necessary Visual Studio components (C++ Clang compiler and MSBuild support for LLVM), configuring ccache for faster builds, and the final compilation steps. The author shares troubleshooting tips, such as reinstalling Visual Studio components and correctly setting the ccache path. This provides a valuable guide for Windows users looking to build Node.js with clang-cl, offering an alternative to the traditional MSVC build process.

Development

Decomposing Factorials into Large Factors: Progress on an Old Conjecture

2025-03-28
Decomposing Factorials into Large Factors: Progress on an Old Conjecture

A new paper studies the problem of factoring a factorial into factors as large as possible. Erdős and others proposed a conjecture about this, but the proof was lost. This paper, using clever applications of the prime number theorem and approximate factorization, provides new upper and lower bounds, partially solving this long-standing problem and offering new avenues to fully resolve the remaining conjectures.

Development combinatorics

Writing Blog Posts Developers Actually Read

2025-03-28
Writing Blog Posts Developers Actually Read

A developer gave up blogging due to low readership. Author Michael Lynch shares nine years of blogging lessons, highlighting common mistakes: rambling introductions, unclear benefits, and neglecting audience reach. He advises clearly stating the target audience and benefits upfront, considering broadening the appeal, and planning the reader's path to discovery. Using visuals, strong headlines, and considering different platforms for sharing are also key to success.

Development

Open Source Licenses: A Balancing Act of Freedom and Responsibility

2025-03-28
Open Source Licenses: A Balancing Act of Freedom and Responsibility

This post challenges common assumptions about open-source licenses. The author, using their Windows tiling window manager, komorebi, as an example, argues that using an OSI-approved license isn't a prerequisite for success. komorebi, licensed under the non-OSI-approved Komorebi License, boasts 126k downloads and 10.6k stars on GitHub, with a steady stream of community contributions. The author believes sharing code shouldn't necessitate forfeiting the freedom to refuse involvement in harmful activities. They advocate for developers to reject dogma, choose licenses based on their needs, and share their experiences to foster a healthier open-source ecosystem.

Development
1 2 126 127 128 130 132 133 134 214 215