Category: Development

FreeBSD Foundation's Hired Gun Doesn't Use FreeBSD?

2025-02-01

At EuroBSDCon 2024, Kim McMahon, a marketing expert hired by the FreeBSD Foundation, gave a presentation advocating for FreeBSD, yet admitted to using a Mac and expressed disdain for Linux and Windows users. This sparked outrage within the community, accusing her of hypocrisy and being a 'false prophet'. The article criticizes large tech companies for profiting from open-source communities while simultaneously restricting freedom and violating privacy, expressing concerns about the future of open-source.

Development

Don't Roll Your Own Crypto: Why Developers Keep Failing at Encryption

2025-02-01
Don't Roll Your Own Crypto: Why Developers Keep Failing at Encryption

Developers often mistakenly believe that using lower-level cryptography libraries avoids the risks of 'rolling their own crypto.' This article argues that many developers misunderstand cryptography, and even using existing libraries doesn't guarantee security if mistakes are made in protocol design or key management. The author presents real-world examples and stresses the importance of robust key management and the need for developers to deeply understand and have expert review of their cryptographic implementations.

Development

Escape the Giants: Embracing the Freedom and Challenges of Linux

2025-02-01

This article delves into the reasons for switching from proprietary operating systems to Linux. Linux, based on open-source principles, gives users complete control over their computing environment and offers a plethora of free applications. While Linux may present challenges such as a steep learning curve and compatibility issues, its strong community support, high customizability, and protection of user privacy make it a highly attractive option. The article also introduces beginner-friendly Linux distributions (such as Ubuntu, Linux Mint, and Fedora) and some commonly used open-source software alternatives.

Development

Android 16 Linux Terminal Now Runs Graphical Linux Apps

2025-02-01
Android 16 Linux Terminal Now Runs Graphical Linux Apps

Google's ambition to transform Android into a fully-fledged PC operating system is taking a significant step forward. The Linux Terminal app in the upcoming Android 16 beta now boasts the ability to run graphical Linux applications, including Doom. This impressive feat is due to improvements in hardware acceleration and display server support. While not yet live in the latest beta, this functionality, leveraging the Android Virtualization Framework (AVF), paves the way for running more complex desktop-class programs on Android, potentially bridging the gap between Android and Chrome OS.

Why Tracebit Chose C#: A Security Startup's Tech Stack Story

2025-02-01
Why Tracebit Chose C#: A Security Startup's Tech Stack Story

Tracebit, a B2B SaaS security product, surprisingly chose C# over popular alternatives like Python or Go. The author details the reasoning behind this decision, considering factors such as productivity, open-source availability, cross-platform capabilities, popularity, memory safety, garbage collection, static typing, stability, built-in libraries, and tooling. C#'s strengths in productivity, stability, and a rich ecosystem proved crucial for Tracebit's rapid iteration and growth, especially in managing a large codebase and collaborating effectively within a team.

Mirascope MCP Server: Securely Integrating LLMs with Local Services

2025-02-01
Mirascope MCP Server: Securely Integrating LLMs with Local Services

Mirascope's MCP (Model Context Protocol) Server lets you expose resources, tools, and prompts to LLM clients via a standardized protocol. This article demonstrates building a simple book recommendation server using MCP, showing how to register tools, resources, and prompts. It details two definition styles: decorator and function-first. MCP Server supports various features, including synchronous and asynchronous functions, flexible configuration options, and compatibility with standard Mirascope tools and prompts, enabling secure and reliable integration between LLM clients and local services.

Development

Falsehoods Programmers Believe About Null Pointers

2025-02-01
Falsehoods Programmers Believe About Null Pointers

This article debunks common misconceptions about null pointers. It explores fallacies ranging from the simple (dereferencing a null pointer doesn't always crash the program immediately) to the bizarre (the null pointer's address isn't always 0). The author argues against relying on compiler optimizations or hardware specifics, highlighting the dangers of assuming consistent behavior across platforms. The article emphasizes that C should be treated as a higher-level language, not just "portable assembler," and encourages leveraging modern languages' memory safety features for more robust and portable code.

Development null pointer

Open Source Data Collection Tool RudderStack Found to Collect Passwords

2025-02-01
Open Source Data Collection Tool RudderStack Found to Collect Passwords

The open-source data collection tool RudderStack has been found to have a serious security vulnerability that, under certain circumstances, collects user passwords. The vulnerability stems from its autotrack feature, which collects all DOM attributes of elements a user clicks on. These attributes can contain sensitive information like passwords. This mirrors a similar vulnerability found in Mixpanel two years ago. While RudderStack has patched the issue partially, the fix is incomplete and potential risks remain. Users are advised to proceed with caution and monitor for updates.

Development data collection

Sparrow: A Lightweight C++ Implementation of Apache Arrow

2025-02-01
Sparrow: A Lightweight C++ Implementation of Apache Arrow

Sparrow is a new C++ library designed to simplify the integration of Apache Arrow's columnar format. Born from the needs of projects like ArcticDB, it provides a lightweight, modern C++ API focused on reading and writing Arrow data. Leveraging C++ standard library iterators, ranges, and concepts, Sparrow offers a clean and easy-to-use interface, facilitating integration with existing C++ projects. It supports various data types, including null value handling, and provides builders to simplify the creation of complex data structures.

Development Columnar Storage

Watchdog Timers: A Necessary Evil (or Essential Good)?

2025-01-31

This article explores the critical role of watchdog timers in embedded systems. Using the failure of the Clementine spacecraft mission due to a poorly implemented watchdog and the need to reboot a kitchen exhaust fan as examples, the author stresses the importance of reliable watchdog timers in preventing software failures. The article details various watchdog timer designs, including internal and external options, and offers strategies for building highly reliable watchdog timers. These include employing windowed watchdogs, external CPU-independent watchdogs, and monitoring the state of all tasks in a multitasking system. The author argues for the inclusion of watchdog timers even in simple systems, advocating for techniques like periodic data structure resets to enhance reliability.

Development watchdog timers

Running Linux in a PDF: A RISC-V Emulator in Your Browser

2025-01-31
Running Linux in a PDF: A RISC-V Emulator in Your Browser

Developer @ading2210 has achieved the remarkable feat of running a Linux system inside a PDF file. Leveraging the Javascript engine within PDFs and an asm.js compiled version of the TinyEMU RISC-V emulator, a functional Linux environment is created. Output is displayed using ASCII characters, and input is managed through a virtual keyboard. While boot times are slow (30-60 seconds), the project showcases the surprising capabilities of the PDF format. The code is open-source and supports both 32-bit and 64-bit systems.

Development

Asynchronous Programming Experiment: Integrating Lua with libuv and C Modules

2025-01-31
Asynchronous Programming Experiment: Integrating Lua with libuv and C Modules

This project explores integrating C-compiled modules into Lua scripts, leveraging the libuv library for asynchronous operations. It features a Lua interpreter, the libuv library, and custom C modules, demonstrating how to compile and load C modules into Lua, culminating in a simple HTTP server. The project boasts a clear structure, detailed setup and compilation instructions, and example code, making it ideal for learning Lua and C integration and asynchronous programming techniques.

Development

Rejection Sampling's Unexpected Triumph: A Deep Dive into Performance Testing

2025-01-31

While optimizing his ray tracer, PSRayTracing, the author delved into performance testing for algorithms generating random vectors within a unit circle/sphere. Initially, he believed an analytical solution would be more efficient than rejection sampling. However, benchmarks in Python and C++, across various compilers and hardware platforms, yielded surprising results: with compiler optimizations enabled, rejection sampling often outperformed the analytical approach. The author concludes that practical performance testing is crucial when optimizing code, avoiding reliance on theoretical assumptions, as compiler optimization strategies and hardware variations significantly impact final performance.

Development performance testing

arXivLabs: Experimental Projects with Community Collaborators

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

arXivLabs is a framework enabling 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 is committed to these values and only partners with those who share them. Have an idea to enhance the arXiv community? Learn more about arXivLabs.

Development experimental projects

arXivLabs: Experimenting with Community Collaboration

2025-01-31
arXivLabs: Experimenting with Community Collaboration

arXivLabs is a framework for collaborators to develop and share new 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 partners with those who adhere to them. Have an idea to improve the arXiv community? Learn more about arXivLabs.

Development open platform

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
1 2 172 173 174 176 178 179 180 214 215