Category: Development

Ruby's Singleton Class: A Deep Dive

2025-01-31

This article delves into Ruby's singleton class, a crucial feature for its object-oriented semantics, despite lacking an official name for years. It explains that a singleton class isn't truly a singleton or a class, but rather an elegant solution to the problem of attaching methods to a specific class in a purely object-oriented language. The article compares solutions in Python and Smalltalk, detailing Ruby's mechanism for implementing class methods using singleton classes, including three syntaxes for defining singleton class methods. Finally, it explores why Ruby chose this approach, highlighting the consistency and importance of singleton classes within Ruby's object-oriented system.

Development Singleton Class

The Stack Unwinding Conundrum in Perf

2025-01-31
The Stack Unwinding Conundrum in Perf

Perf, a powerful performance analysis tool, uses PMU counter overflow interrupts to capture thread states for profiling. However, stack unwinding presents a challenge. Modern compilers omit frame pointers by default, making stack backtracing difficult. While recompiling with -fno-omit-frame-pointer is possible, it's expensive and can lead to system library incompatibilities. DWARF offers an alternative, but its complexity and performance overhead are substantial, leading Linus Torvalds to reject its use in kernel stack unwinding. Perf thus employs a compromise: copying only the top portion of the stack to userspace for unwinding. This limits stack size (65,528 bytes) but effectively balances performance and practicality.

Go Scripting Library: script — Simplifying Sysadmin Tasks

2025-01-31
Go Scripting Library: script — Simplifying Sysadmin Tasks

The `script` library for Go provides shell-script-like capabilities for system administrators, including reading files, executing subprocesses, counting lines, matching strings, and more. It processes data streams using a pipeline approach with a clean API, making Go programming as efficient and convenient as shell scripting. `script` supports a wide range of operations, from file I/O and HTTP requests to external command execution and custom filters, significantly simplifying system administration tasks. For example, it easily replicates `grep` functionality and supports concurrent execution for improved performance.

Development Sysadmin

uscope: A Native Code Graphical Debugger for Linux

2025-01-31
uscope: A Native Code Graphical Debugger for Linux

uscope is a native code graphical debugger and introspection toolchain for Linux, currently in early development. The author plans to add features such as support for multiple programming languages (C, Zig, C++, Go, Rust, Odin, Jai, etc.), multi-threaded program debugging, code navigation, remote debugging, and more. The project aims to build a flexible, extensible debugging system with a user-friendly interface. The author also plans to build it as a library so other developers can build more interesting tools on top of it.

Development native code

VoidDB Crushes LMDB, BoltDB, LevelDB, and BadgerDB in Benchmarks

2025-01-31
VoidDB Crushes LMDB, BoltDB, LevelDB, and BadgerDB in Benchmarks

Recent benchmarks reveal VoidDB's superior performance against leading embedded databases like LMDB, BoltDB, LevelDB, and BadgerDB. VoidDB significantly outperforms the competition across Put, Get, and GetNext operations. Specifically, VoidDB's Put operation is nearly four times faster than BoltDB and almost three times faster than LevelDB. This highlights VoidDB's compelling performance in high-throughput scenarios, offering developers a highly efficient and reliable database option.

Development

MillenniumDB: A Novel Graph-Oriented Database Management System

2025-01-31
MillenniumDB: A Novel Graph-Oriented Database Management System

MillenniumDB is a graph-oriented database management system developed by the Millennium Institute for Foundational Research on Data (IMFD). It supports multiple graph models, offering fairly complete RDF/SPARQL support and a custom property graph query language. While still under active development and not yet production-ready, it provides substantial functionality and plans to add GQL support soon. Detailed installation, configuration, and usage instructions, including Docker deployment, are provided.

Linux 6.14 Kernel: KVM Virtualization Gets a Boost

2025-01-31

The upcoming Linux 6.14 kernel includes a significant number of updates to its Kernel-based Virtual Machine (KVM) subsystem. Improvements include removing redundant TLB flushes on AMD CPUs, an overhaul of the KVM x86 CPUID feature infrastructure for better vCPU capability tracking, continued work on Intel Trust Domain Extensions (TDX) VM support, refined VM-exit handling for improved VMX/SVM parity, and added Zabha, Svvptc, and Ziccrse extension support for RISC-V KVM guests. These changes promise enhanced performance and stability for virtual machines.

Development

Building Meshes with Spherical Embedding: A Novel Surface Reconstruction Approach

2025-01-31

This article explores a novel approach to 3D surface reconstruction: spherical embedding. This method projects a point cloud onto a sphere and then uses the convex hull to construct a mesh, addressing the hole problems that traditional methods may encounter when handling complex shapes and missing data. While this method shows some advantages when processing the Stanford Bunny model, especially in ensuring mesh integrity, there is still room for improvement in efficiency and accuracy. Compared to traditional methods such as Poisson surface reconstruction, it requires more iterations and parameter tuning to achieve ideal results. The article details the algorithm implementation process and demonstrates the performance of the algorithm under different parameters with code examples.

FOSDEM 2025: A Glimpse into the Open Source Mobile Track

2025-01-31
FOSDEM 2025: A Glimpse into the Open Source Mobile Track

FOSDEM, a free software developer event in Brussels, Belgium (February 1st & 2nd, 2025), will feature a dedicated 'FOSS on Mobile' track. This half-day session (February 1st, 2:55 PM - 7:00 PM) will host numerous talks on open-source mobile development. Beyond the talks, numerous project booths offer opportunities for networking and collaboration. A casual meetup is planned for Sunday, February 2nd at 2:00 PM. Don't miss the chance to connect with fellow developers and grab some stickers!

Development

GitHub Code Suggestion Application Restrictions: Issues You Might Encounter

2025-01-31
GitHub Code Suggestion Application Restrictions: Issues You Might Encounter

This snippet from GitHub documentation lists various restrictions encountered when applying code suggestions, such as no code changes, closed pull requests, viewing a subset of changes, applying only one suggestion per line, applying to deleted lines, invalid suggestions, and other temporary restrictions. These limitations aim to maintain the integrity and consistency of the codebase and ensure the effective application of suggestions.

ldump: A Lua Serializer for Complex Data Structures

2025-01-31
ldump: A Lua Serializer for Complex Data Structures

ldump is a robust Lua serializer capable of handling complex data structures, including circular references, functions (even with upvalues), metatables, coroutines, and userdata. It serializes data into executable Lua code, deserialized via `load(data)()`. ldump prioritizes functionality and flexibility over speed and size, making it ideal for scenarios requiring saving complex game states. While the output is large, modern compression algorithms can significantly reduce its size. It supports Lua 5.1 to 5.4 and LuaJIT, and has been tested extensively for edge cases.

Development

The Non-Deterministic Nightmare of React UI Testing

2025-01-31

Testing React UIs presents a unique challenge due to its asynchronous update mechanism. Unlike direct DOM manipulation, React's renderer updates the UI asynchronously, making it difficult for tests to precisely capture the timing of UI state updates. Testing utilities like `act` and `waitFor` offer workarounds, but essentially boil down to 'eventually, something will happen'. Minor UI changes (like animation delays, state update order) can easily break tests, requiring extensive modifications to existing test suites. This results in high maintenance costs for React UI testing, a common pain point for many development teams.

Ghostty 1.1.0 Released: Critical Bug Fixes and Quality of Life Improvements

2025-01-31
Ghostty 1.1.0 Released: Critical Bug Fixes and Quality of Life Improvements

Ghostty 1.1.0, a month in the making, incorporates contributions from 84 developers across 564 commits. This release focuses on critical bug fixes and quality-of-life improvements based on feedback from the initial 1.0 release. Key improvements include: fixing file descriptor leaks; adding Linux server-side decorations (SSD) for a more native look and feel across different desktop environments; massively improved IME reliability and consistency; a new `performable:` keybind prefix; macOS alpha blending improvements for more accurate colors; and significant quick terminal enhancements supporting native fullscreen windows. Future versions will remove the `gtk-adwaita` option and enforce a `libadwaita` dependency for improved stability and maintainability.

Development software release

Go's Design: A Deliberate Trade-Off

2025-01-31

This article delves into the design philosophy of the Go programming language, exploring its strengths and weaknesses. Born at Google, Go aimed to simplify writing and maintaining large-scale concurrent server code. The author analyzes Go's features – its simplified filesystem API, lack of operator overloading, explicit error handling, and interoperability with other languages – to explain the trade-offs behind its design choices. While criticized for aspects like its former lack of generics and less-than-stellar Windows support, the author argues these are conscious compromises made to achieve its primary design goals, ultimately making Go an efficient and easy-to-use language for engineering large projects.

Hydro: A High-Performance Distributed Programming Framework in Rust

2025-01-31
Hydro: A High-Performance Distributed Programming Framework in Rust

Hydro is a high-level distributed programming framework for Rust, enabling the creation of scalable and correct-by-construction distributed services. Unlike traditional actor or RPC architectures, Hydro employs choreographic APIs and a high-performance single-threaded DFIR runtime. It simplifies deployment via Hydro Deploy, supporting both local and cloud environments. Using a two-stage compilation process, it generates deployment plans locally and then compiles to DFIR binaries for each machine, deploying them to the cloud based on the plan and cloud resource specifications. Hydro has been used to build various high-performance distributed systems, including implementations of classic protocols like two-phase commit and Paxos.

Development

sixos: A Nixpkgs-based OS Replacing systemd with s6

2025-01-31
sixos: A Nixpkgs-based OS Replacing systemd with s6

Adam Joseph announced the release of sixos, a new operating system built on Nixpkgs and using s6 instead of systemd. Rejecting systemd's monolithic design, sixos employs the simpler infuse combinator for service management, mirroring Nixpkgs' package handling. It also integrates ownerboot for complete version control and secure management of firmware, eliminating the artificial distinction between firmware and software. Currently running on workstations, servers, routers, and more, sixos offers a lightweight and secure alternative.

Development

A Minimalist Ruby X11 Window Manager: rubywm

2025-01-31
A Minimalist Ruby X11 Window Manager: rubywm

Frustrated with existing window managers, the author created rubywm, a minimalist window manager written in under 1000 lines of pure Ruby (including the X11 driver). It supports tiling and floating window layouts but lacks window decorations and drag-and-resize functionality. All keyboard handling is delegated to external tools like sxhkd, and communication happens via X11 ClientMessage events. Currently, it only supports single monitors and is experimental, prone to crashing. The author's primary goal is personal use, not a large user base.

Development

Deploying the 671B Parameter DeepSeek R1 LLM Locally

2025-01-31

This post details the experience of deploying the 671B parameter DeepSeek R1 large language model locally using Ollama. The author experimented with two quantized versions: 1.73-bit and 4-bit, requiring at least 200GB and 500GB of memory respectively. On a workstation with four RTX 4090s and 384GB of DDR5 RAM, the 1.73-bit version showed slightly faster generation speed, but the 4-bit version proved more stable and less prone to generating inappropriate content. The author recommends using the model for lighter tasks, avoiding long text generation which significantly slows down the speed. Deployment involved downloading model files, installing Ollama, creating a model file, and running the model; adjusting GPU and context window parameters might be necessary to prevent out-of-memory errors.

Development Model Deployment

arXivLabs: Experimental Projects with Community Collaborators

2025-01-31
arXivLabs: Experimental Projects with Community Collaborators

arXivLabs is a framework for collaborators to develop and share new arXiv features directly on the website. Individuals and organizations involved embrace arXiv's values of openness, community, excellence, and user data privacy. arXiv only partners with those adhering to these values. Got an idea to enhance the arXiv community? Learn more about arXivLabs.

Reaktiv: A Reactive Programming Library for Python

2025-01-31
Reaktiv: A Reactive Programming Library for Python

Reaktiv is a reactive programming library for Python, inspired by Angular's reactivity model and featuring first-class async/await support. It simplifies building and managing data-dependent signals, automatically updating dependencies when data changes. With a straightforward API, Reaktiv supports both synchronous and asynchronous contexts, boasts automatic dependency tracking, zero external dependencies, and efficient memory management, significantly reducing the complexity of asynchronous programming.

Development reactive programming

Jane Street's Decade-Long Journey: From Jenga to Dune

2025-01-30
Jane Street's Decade-Long Journey: From Jenga to Dune

Jane Street initially built Jenga, an OCaml build system, but its limitations led to its limited adoption and even a reversal of its open-source status. They then created the simpler Jbuilder, which unexpectedly gained popularity due to its speed, eventually evolving into Dune. After years of effort, the Jane Street team successfully migrated their internal build system from Jenga to Dune for their 70 million lines of code, boosting build speeds and setting a strong foundation for Dune's future.

Development

Distr: Simplifying Enterprise Software Distribution

2025-01-30
Distr: Simplifying Enterprise Software Distribution

Distr simplifies distributing enterprise software to customer-controlled or shared-responsibility environments. It features an intuitive web UI for viewing deployments and agents, a white-label customer portal for customer control, an API accessible via a rich SDK, and is fully open-source and self-hostable. The Distr Hub is distributed as a Docker image with a Docker Compose example deployment. Comprehensive documentation covers self-hosting and building from source, and a JavaScript SDK is available for application integration.

Development Software Distribution

Unearthing the Oldest Lines in Your Git Repo

2025-01-30

The author shares a shell script to find the oldest lines of code in a Git repository. The script uses `git blame` along with `find` and `awk` to filter non-binary files and identify the earliest committed lines, revealing a glimpse into the project's history. While currently limited to commits after 2000, it offers a fascinating look at how the codebase has evolved.

Development Code History

Automating Customer Workflows: From Onboarding to Compliance

2025-01-30

This article outlines three automated customer workflows: customer onboarding (document collection, identity verification, account setup, welcome calls, and automated welcome materials), KYC (verifying client identity, assessing risk, collecting documentation, background checks, and maintaining compliance records), and contract review (initial draft review, legal team approval, stakeholder feedback, revision tracking, electronic signature collection, and final document storage). Automating these processes significantly improves efficiency, reduces risks, and enhances the customer experience.

Stats: A macOS Menu Bar System Monitor

2025-01-30
Stats: A macOS Menu Bar System Monitor

Stats is a macOS system monitoring application residing in your menu bar. It provides real-time information on CPU and GPU utilization, memory usage, disk I/O, network activity, battery level, and more. Compatible with macOS 10.15 (Catalina) and later, Stats also offers sensor data (temperature, voltage, power) and Bluetooth device monitoring. M1 Macs require manual HID sensor activation for sensor data. Intel-based Macs can display CPU frequency with Intel Power Gadget installed. To minimize power consumption, users can disable modules like Sensors and Bluetooth. Released under the MIT License, Stats welcomes contributions for translations and improvements.

Control Your iTerm from LLMs with iterm-mcp

2025-01-30
Control Your iTerm from LLMs with iterm-mcp

iterm-mcp is a Model Context Protocol (MCP) server providing LLM access to your iTerm session. It features efficient token usage by only reading the output the model needs; natural integration allowing LLMs to interact with iTerm, answering questions or performing tasks; and full terminal control with REPL support. Easy to install via npx and integrate with clients like Claude Desktop, it prioritizes simplicity. However, it lacks built-in safety restrictions, requiring users to monitor model activity and exercise caution.

Development

Exploring the World of APL: A Russian Literature Review

2025-01-30

This 1990 Russian-language literature review, "The World of APL Language," published in Moscow's "Computing Technique And Its Usage," by Kondrashev et al., provides an overview of the APL programming language. The paper offers insights into APL's history, applications, and characteristics and may be of interest to researchers studying APL.

Development literature review

Audiocube: A Revolutionary Standalone 3D DAW

2025-01-30
Audiocube: A Revolutionary Standalone 3D DAW

Move beyond cluttered VST plugin setups! Audiocube is a standalone 3D digital audio workstation (DAW) built with a custom audio, physics, and graphics engine, offering unparalleled depth and control. It enables immersive audio creation and exploration, providing a level of creative freedom unlike any plugin. This is the perfect solution for musicians seeking a modern approach to audio production.

LibreOffice Downloads Surpass 400 Million: A Desktop Office Suite's Comeback Story

2025-01-30
LibreOffice Downloads Surpass 400 Million: A Desktop Office Suite's Comeback Story

The LibreOffice download histogram tells a compelling story. From 2011 to 2014, despite fierce competition, downloads rapidly reached 30 million. A period of stagnation followed as desktop office suites seemed destined for obsolescence. However, a resurgence occurred as users recognized the enduring value of desktop suites alongside cloud options. In 2019, attacks on the download counter caused a temporary spike, but the growth continued. By 2024, LibreOffice surpassed 35 million downloads, accumulating over 400 million since 2011. This success is a testament to the developers, contributors, and users who have supported the project.

1 2 166 167 168 170 172 173 174 207 208