Category: Development

Deep Dive into GPU Mipmap Level Selection

2025-05-14

This post delves into the intricate details of mipmap level selection during texture sampling on the GPU. Starting with texture aliasing, the author explains mipmapping and the role of pixel derivatives (ddx()/ddy()). By analyzing the GLES3.0 and DirectX 11.3 specifications and experimental results, the author reveals the complexities of the relationship between mipmap level selection and pixel derivatives, as well as the differences in implementation across various GPU vendors. The article further explores the impact of elliptical transformations and anisotropic filtering on mipmap level selection, providing corresponding software implementations and comparing them to hardware implementations.

Development Texture Mipmapping

IoT Device Signals Meeting Status to Family

2025-05-14

Annoyed by interruptions during work-from-home meetings? This simple IoT device, 'Tabajara,' uses an ESP32 and Arduino framework to signal meeting status. When the webcam is on, it changes the color of an LED panel at the office door (red for meeting, blue for not). A Python daemon queries Apple's API to check webcam usage and sends updates to the ESP32. A neat solution for avoiding family interruptions!

Development Home Automation

Interactive Math Proof Assistant Built with Python and SymPy

2025-05-13
Interactive Math Proof Assistant Built with Python and SymPy

A developer has built an interactive mathematical proof assistant using Python and the SymPy library. It semi-automatically proves asymptotic estimates involving scalar functions. Mimicking the Lean proof assistant, the tool supports linear and log-linear arithmetic, allowing users to guide the proof process by supplying high-level tactics. Currently running in Python's interactive mode, a graphical user interface is planned for the future. The developer intends to extend the tool to handle a broader range of mathematical tasks, such as estimating function space norms.

Development math proof SymPy

Conquering Rust: Practical Tips to Avoid Common Pitfalls

2025-05-13
Conquering Rust: Practical Tips to Avoid Common Pitfalls

This article summarizes common mistakes Rust learners make and offers practical advice. The core is shifting your mindset: treat the compiler as a collaborator, not an adversary, and actively use its error messages to learn. The author suggests starting with simple examples, gradually increasing complexity, and mastering core concepts like ownership and lifetimes. Furthermore, the article emphasizes attention to detail, reading standard library documentation, and improving skills through practice and code reviews.

Development development tips

Zig vs. Rust: A Deep Dive into Memory Safety

2025-05-13

This article delves into a detailed comparison of Zig and Rust regarding memory safety. Rust, with its powerful compile-time proof system, virtually eliminates memory safety vulnerabilities. While Zig improves upon C with features like slice types and bounds checking, it remains susceptible to memory safety issues such as use-after-free and buffer overflows. The author uses personal experience and project data to demonstrate Rust's memory safety advantage in large projects, but also suggests Zig's potential use in specific scenarios, such as within Wasm sandboxes. Zig's future success may hinge on the development of inexpensive runtime mitigations.

Development

arXivLabs: Experimental Projects with Community Collaborators

2025-05-13
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 uphold 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. Got an idea for a project that will benefit the arXiv community? Learn more about arXivLabs.

Development

From One Year to Weeks: Optimizing Program Graph Sharing in a Compiler

2025-05-13

The author spent over a year tackling a compiler's program graph serialization problem. The initial solution was messy and unmaintainable. By collaborating with others and reframing the problem as finding the Lowest Single Common Ancestor (LSCA) in the graph, they leveraged existing LCA algorithm libraries and clever lazy programming techniques. The result is an elegant, linear-time solution, a third the length of the original, effectively resolving performance bottlenecks.

Development program graph sharing

Efficiently Cleaning Up Logically Deleted Files in Object Storage: Lessons from WarpStream

2025-05-13
Efficiently Cleaning Up Logically Deleted Files in Object Storage: Lessons from WarpStream

This post details the author's experience in efficiently cleaning up logically deleted files in object storage when building distributed systems. Using bucket policies or synchronous deletion directly both have flaws: bucket policies can't handle complex systems with varying data retention needs, while synchronous deletion can lead to orphaned files. The author compares delayed queues and asynchronous reconciliation, ultimately adopting a hybrid approach: introducing an "optimistic deletion queue" in WarpStream Agents, combined with asynchronous reconciliation, for efficient and cost-effective file cleanup, effectively avoiding orphaned files. This approach leverages system characteristics and considers fault tolerance and disaster recovery.

Development data cleanup

CocoIndex: Building Knowledge Graphs with LLMs

2025-05-13
CocoIndex: Building Knowledge Graphs with LLMs

CocoIndex simplifies building and maintaining knowledge graphs with continuous source updates. This blog post demonstrates using Large Language Models (LLMs) to extract relationships from documents, building a knowledge graph with entity relationships and entity mentions, and exporting it to Neo4j. The process covers adding data sources, collecting data, extracting relationships, building the knowledge graph, and exporting and querying in Neo4j.

Development

Dusk OS: A Minimalist OS for the Post-Collapse World

2025-05-13

Dusk OS is a 32-bit Forth-based operating system designed for survival in a post-civilizational collapse scenario. It aggressively prioritizes simplicity, sacrificing some features for extreme efficiency and ease of operation. Using an 'almost C' compiler, Dusk OS easily ports existing UNIX C code and boasts an incredibly small footprint (a complete system is under 6000 lines of code). It's fully self-hosting, runs smoothly on older hardware, and possesses a remarkably high "power density," challenging conventional software culture.

Development

Google's Secret Android Desktop Mode: A DeX Competitor in the Works

2025-05-13
Google's Secret Android Desktop Mode: A DeX Competitor in the Works

Google is secretly developing a DeX-like desktop mode for Android, spotted early on a Pixel phone. This mode features a taskbar for pinned and recent apps, allowing for multiple apps in resizable, freeform windows. While unfinished and unlikely for Android 16, this adaptation of Android's tablet windowing for external displays hints at a significant improvement to the large-screen Android experience, potentially arriving with Android 17.

Material 3 Expressive: A More Expressive Android Experience

2025-05-13
Material 3 Expressive: A More Expressive Android Experience

Building upon the award-winning Material You design, Google introduces Material 3 Expressive, bringing a more personalized and expressive phone experience to Android users. It enhances everyday routines with smoother animations and more natural, springy effects. For instance, dismissing a notification subtly affects neighboring ones, coupled with satisfying haptic feedback. This makes Android feel more human, approachable, and grounded in user needs.

Development

OpenTelemetry Protocol and Apache Arrow: Phase 2 in Rust

2025-05-13
OpenTelemetry Protocol and Apache Arrow: Phase 2 in Rust

Phase 2 of the OpenTelemetry Protocol with Apache Arrow project (OTel-Arrow) is underway, focusing on building high-performance telemetry pipelines using Rust. This phase investigates a zero-copy, columnar approach from SDK to pipeline, aiming for significant efficiency gains for large telemetry streams. Integration with the existing OpenTelemetry Collector's Go ecosystem is a key goal, along with enhanced interoperability with data lake technologies like Apache DataFusion.

Development

Mill: A React-Inspired Build Tool Revolution

2025-05-13

Mill is a unique build tool that adopts core design decisions from React.js: direct-style builds and a single general-purpose language. Unlike traditional build tools relying on callbacks and multiple languages, Mill lets developers write functions that directly return the final build artifacts, with Mill automatically handling caching, parallelization, and optimization. This approach simplifies the build process, improves readability and maintainability, and enhances IDE integration.

Development

PyPI Launches Organization Accounts for Enhanced Sustainability

2025-05-13
PyPI Launches Organization Accounts for Enhanced Sustainability

The Python Package Index (PyPI) has introduced organization accounts to improve platform sustainability and user experience. This feature allows teams to create self-managed accounts with exclusive web addresses, simplifying management for large projects and companies handling multiple sub-teams and packages. Community projects can use this for free, while corporate projects incur a small fee. All revenue will be reinvested into improving PyPI's support and infrastructure. This addresses PyPI's growth in downloads and bandwidth, and allows for faster response times. The feature is entirely optional and won't affect existing users.

Development Organization Accounts

Gracefully Handling Option in Rust: Beyond unwrap()

2025-05-13
Gracefully Handling Option in Rust: Beyond unwrap()

Handling the `None` variant of `Option` in Rust is a common pain point. This article explores safer alternatives to `unwrap()`, focusing on robust `None` handling. It starts by dissecting the compilation error from using the `?` operator directly and the runtime risks of `unwrap()`. Then, it details three approaches: `ok_or()`, `match` statements, and the `let-else` expression (introduced in Rust 1.65), comparing their pros and cons. `let-else` emerges as the recommended best practice due to its conciseness, readability, and maintainability, leading to more robust and understandable code.

Development

AG-UI: A New Protocol for AI Agent-Frontend Interaction

2025-05-13
AG-UI: A New Protocol for AI Agent-Frontend Interaction

AG-UI is a lightweight, event-based, open protocol standardizing how AI agents connect to front-end applications. Supporting various event types and transport methods, it features a flexible middleware layer ensuring cross-environment compatibility. Already integrated with several popular agent frameworks, AG-UI enables real-time chat, bi-directional state syncing, generative UI, and more. With a React client library and messaging clients (in development with AWS SNS), AG-UI offers a simple yet powerful solution for building AI-powered applications.

Development frontend interaction

Google's Android Desktop Mode: A DeX Challenger?

2025-05-13
Google's Android Desktop Mode: A DeX Challenger?

Google is developing a new desktop interface for Android phones called "Desktop View," featuring a persistent taskbar and resizable, freeform windows. This represents a significant step towards offering a PC-like multitasking experience, potentially challenging Samsung DeX's dominance. While still under development, 'Desktop View' already boasts impressive features like a persistent taskbar, resizable windows, and drag-and-drop functionality, hinting at a powerful desktop experience for Android users beyond Samsung devices.

Development Multitasking

HelixDB: Blazing Fast Graph-Vector Database for RAG and AI

2025-05-13
HelixDB: Blazing Fast Graph-Vector Database for RAG and AI

HelixDB is a Rust-based, open-source graph-vector database built for Retrieval Augmented Generation (RAG) and AI applications. Leveraging LMDB for storage, it boasts impressive speed, claiming to be 1000x faster than Neo4j and 100x faster than TigerGraph, while matching Qdrant's performance for vectors. It natively supports graph and vector data types, ensures ACID compliance, and offers a user-friendly CLI and SDKs (TypeScript and Python). The team is currently focused on expanding vector capabilities, enhancing the query language, and building a comprehensive test suite. Long-term plans include developing an in-house storage engine and networking protocols.

Development

Debugging Demystified: A Comprehensive Guide to Common Coding Errors

2025-05-13
Debugging Demystified: A Comprehensive Guide to Common Coding Errors

This article delves into the various common errors programmers encounter during debugging, including typos, logic errors, unexpected initial conditions, memory leaks, memory overwrites, race conditions, design flaws, third-party library bugs, failed specifications, hard-to-reproduce bugs, and compiler bugs. It details the characteristics, causes, and debugging strategies for each error type, emphasizing the importance of using debuggers, compiler warnings, code formatters, assertions, and custom memory allocators. The author shares experiences in handling multithreading bugs, design flaws, and hard-to-reproduce bugs, suggesting statistical methods for analyzing large numbers of bug reports. Finally, the article discusses compiler bugs, noting their rarity but emphasizing the need for programmers to understand how to identify and handle them.

Development programming errors

Linus Torvalds Returns to Clicky Mechanical Keyboard

2025-05-13
Linus Torvalds Returns to Clicky Mechanical Keyboard

Linus Torvalds, the creator of the Linux kernel, has returned to his trusty clicky mechanical keyboard after a six-month experiment with a quieter, low-profile alternative. He found the audible and tactile feedback crucial to reducing typing errors. Despite working from home, he initially blamed his recent typos on the keyboard (later shifting blame to autocorrect). Meanwhile, progress on the Linux 6.15 kernel release is proceeding smoothly, with a release expected in two weeks.

Development Mechanical Keyboard

Detecting Constant Expressions in C: A Macro-Based Approach

2025-05-13

This article explores various methods for creating a C macro that checks if an expression is a compile-time constant. The author investigates approaches using C23's `constexpr` and `typeof`, GNU extensions like `__builtin_constant_p`, C11's `static_assert`, and clever tricks with `sizeof` and compound literals. Each method has its strengths and weaknesses; some require newer C standards, rely on compiler extensions, or might alter the expression's type or generate warnings. The article concludes by summarizing the pros and cons and expressing a desire for more elegant solutions.

Development compile-time constant

Java Concurrency: A Journey from Threads to Structured Concurrency

2025-05-13

This article traces the evolution of Java concurrency, from raw threads in Java 1 to structured concurrency in Java 21. Early Java concurrency involved manual thread management, leading to various issues. Java 5 introduced ExecutorService, simplifying thread lifecycle management; Java 7's ForkJoinPool optimized for CPU-bound tasks; Java 8's CompletableFuture enabled non-blocking task chaining; Java 9's Flow API supported reactive programming; and Java 21's virtual threads and structured concurrency further enhance efficiency and safety, addressing previous challenges and offering a safer, cleaner way to handle concurrent tasks.

Search Engine Adds PDF Indexing: Conquering the Challenges of Text Extraction

2025-05-13

The search engine recently gained the ability to index PDFs, a feat more complex than it seems. PDFs aren't text-based; they're graphical, representing text as glyph coordinates that may be rotated, overlapping, or disordered. This article details improvements to PDFBox's PDFTextStripper class. By statistically analyzing font sizes and line spacing, it more effectively identifies semantic information like headings and paragraphs. This enhances the accuracy and suitability of PDF text extraction, enabling effective indexing of PDF content.

Development PDF indexing

Microsoft Store Package for Windows LTSC

2025-05-13
Microsoft Store Package for Windows LTSC

This project provides a Microsoft Store package for Windows 10 LTSC 2019, 2021, and Windows 11 LTSC 2024. Note that recent LTSC 2019 versions no longer support this store; a system update might be required after installation. Simply download and double-click to install; however, for optimal performance, update to the latest version within the Store settings after installation.

Snobol4: A Surprisingly Effective "One Weird Trick" Language

2025-05-13

Snobol4 is a fascinating programming language centered around pattern matching. Unlike languages relying on loops and conditionals, Snobol4 uses pattern matching statements for all logic and control flow. This minimalist approach, while potentially less efficient for large programs, offers surprising ease of understanding for beginners and proves effective for smaller tasks. The author compares its pattern matching to Awk, but significantly more powerful, highlighting its impressive purity and demonstrating how a "one weird trick" can yield surprisingly effective programming.

Development

AI: A Crappy Consultant, but a Great Syntax Error Finder

2025-05-13

The author experimented with AI assistance for SwiftUI programming, finding AI to be more like an unreliable consultant than a good architect. Initially letting the AI directly edit code resulted in chaos. Later, switching to writing code themselves and using AI for suggestions significantly improved learning. AI excelled at finding syntax errors, quickly pinpointing problems, but was lacking in large-scale decision-making and architectural design, requiring manual checks. The author concludes: AI is suitable for repetitive tasks and finding syntax errors, but cannot be completely relied upon and needs human supervision and validation.

Development code assistance

Multiple Security Issues Found in Screen Terminal Multiplexer

2025-05-13

A security audit uncovered multiple vulnerabilities in the widely used screen terminal multiplexer. The most critical is a local root privilege escalation vulnerability (CVE-2025-23395) affecting Screen 5.0.0 running with setuid-root privileges. This allows unprivileged users to create files with root ownership in arbitrary locations. Additional vulnerabilities include TTY hijacking (CVE-2025-46802), world-writable PTYs (CVE-2025-46803), and other information leaks and race conditions. Patches have been released, and users are urged to update to the patched versions and avoid running Screen with setuid-root privileges.

Development screen

Nextcloud Accuses Google of Deliberately Crippling its Android Files App

2025-05-13
Nextcloud Accuses Google of Deliberately Crippling its Android Files App

European software vendor Nextcloud has accused Google of deliberately crippling its Android Files application, which boasts over 800,000 users. The issue centers around the 'All files access' permission, necessary for the app's file synchronization functionality. While Google offers privacy-focused alternatives, Nextcloud argues these are insufficient. Google revoked this permission in 2024, effectively breaking the app on the Play Store. Nextcloud believes this is part of a larger pattern of anti-competitive behavior by Big Tech, citing slow-moving regulatory processes and the lack of recourse for smaller companies. The app remains functional on F-Droid.

Development Anti-competitive

Dgraph Labs' Journey to Continuous Security Audits: 2000+ Security Issues Resolved

2025-05-13
Dgraph Labs' Journey to Continuous Security Audits: 2000+ Security Issues Resolved

Dgraph Labs implemented a continuous security audit system using GitHub Actions and various toolsets, resolving over 2000 security issues in just three months, significantly improving SOC2 compliance. The system covers code, binary artifacts, and Docker images, leveraging Trivy and Snyk for scanning and GitHub's security tab for issue tracking and remediation. Linters are used for static code analysis and DependaBot for automated fixes. This significantly improved visibility and faster resolution of security issues, setting an example for continuous security improvement.

1 2 89 90 91 93 95 96 97 214 215