Category: Development

Defuddle: A Powerful Webpage Content Cleaner

2025-05-22
Defuddle: A Powerful Webpage Content Cleaner

Defuddle is a robust tool for cleaning up webpage content. It removes unnecessary elements like comments, sidebars, headers, footers, and other clutter, leaving only the core content and generating clean, readable HTML documents. It handles various formats including footnotes, math equations, and code blocks, and extracts metadata such as schema.org data. Defuddle works well with Obsidian Web Clipper and serves as an alternative to Mozilla Readability. It's available as a browser version and a Node.js version, the latter supporting Markdown conversion.

Development webpage cleaning

Windows 11 App Update: Paint, Snipping Tool, and Notepad Get AI Boost

2025-05-22
Windows 11 App Update: Paint, Snipping Tool, and Notepad Get AI Boost

Microsoft is rolling out updates to Paint, Snipping Tool, and Notepad for Windows Insiders in the Canary and Dev Channels on Windows 11. Paint now features an AI sticker generator, a smart object selection tool, and a new welcome experience; Snipping Tool adds perfect screenshot and color picker capabilities; and Notepad introduces an AI writing feature for quick text drafting. Most of these new features require a Copilot+ PC and Microsoft account login, with some requiring a Microsoft 365 subscription.

Development App Update

Floating-Point Hell: Why Your R Multivariate Normal Sampling Isn't Reproducible

2025-05-22
Floating-Point Hell: Why Your R Multivariate Normal Sampling Isn't Reproducible

This post details the author's debugging journey helping colleagues resolve a reproducibility issue in their R code involving multivariate normal distribution sampling. The problem stemmed not from bugs in R or the MASS package, but from the inherent quirks of floating-point arithmetic. Despite using `set.seed()` to control the random number generator (RNG), the same code produced different results on different machines due to floating-point rounding errors in `MASS::mvrnorm()`. A deep dive revealed that `MASS::mvrnorm()`, using eigendecomposition, is highly sensitive to tiny input perturbations, potentially flipping eigenvector signs and breaking reproducibility. `mvtnorm::rmvnorm()`, employing Cholesky decomposition, proves more robust. The author recommends using `mvtnorm::rmvnorm()` with `method = "chol"` for improved reproducibility.

Development

Rust Async Programming: Mastering Pin and Pin-Project

2025-05-22

This article delves into the intricacies of using Pin and the pin-project crate in Rust's async programming paradigm. Starting with associated types and type inference in Futures, the author builds up to the necessity of Pin to address memory safety issues arising from mutable borrows and moves within the state machine implementation of async functions. The article thoroughly explains Pin's function, usage, and how pin-project simplifies code, ultimately resulting in a safe and robust asynchronous state machine. It also highlights subtle considerations when employing pin-project.

Development

Glitch to Shut Down App Hosting in July 2025

2025-05-22
Glitch to Shut Down App Hosting in July 2025

Glitch, a popular app development platform, announced it will shut down its app hosting service on July 8, 2025. This decision comes due to high maintenance costs and the emergence of numerous superior alternative platforms in recent years. The Glitch team stated they will fully assist users in migrating their projects, offering code downloads, subdomain redirects, and other services to ensure data safety and project continuity. While a bittersweet decision, it marks a significant step for Glitch in adapting to the evolving developer landscape.

rtcollector: A Lightweight, RedisTimeSeries-Native Observability Agent

2025-05-22
rtcollector: A Lightweight, RedisTimeSeries-Native Observability Agent

rtcollector is a lightweight, plugin-based agent for collecting system and application metrics and pushing them to RedisTimeSeries. Designed for the Redis Stack ecosystem, it offers a modular, YAML-configurable approach, enabling developers to easily collect and manage metrics without the bloat of larger solutions. Currently supporting Linux and macOS systems, with Docker integration and planned support for ClickHouse, MQTT, and HTTP POST outputs, rtcollector provides a flexible and efficient way to monitor your systems.

Development monitoring agent

Poireau: A Lightweight Heap Allocation Debugger

2025-05-22
Poireau: A Lightweight Heap Allocation Debugger

Poireau is a lightweight library for debugging memory allocation issues. It generates a statistically representative overview of an application's heap footprint by intercepting a small fraction of calls to malloc/calloc, etc., with minimal performance impact. Poireau uses Linux perf for tracing and an external script for analysis, pinpointing memory leaks and other problems. Its advantages include low invasiveness, ease of auditing, and suitability for production use, even providing information after a crash.

Development memory debugging

Graphical Debugging of the Hilbert Curve: A Visual Programming Journey

2025-05-22

The author advocates for a minimalist programming style and uses Lua and LÖVE to graphically debug a recursive function for computing the Hilbert curve. Through iterative visualization improvements, including a text log, replay log, surface drawing, and an 'exploding view' drawing, the author clarifies the algorithm's complexities. The process culminates in a sophisticated debugging UI, offering valuable insights and reusable patterns for future debugging tasks.

Development graphical debugging

Tackling High Memory Consumption When Parsing Large JSON Files with Pydantic

2025-05-22
Tackling High Memory Consumption When Parsing Large JSON Files with Pydantic

High memory consumption is a common problem when using Pydantic to process large JSON files. This article analyzes the reasons for high memory usage with Pydantic's default JSON loading and proposes two solutions: using the ijson library for incremental JSON parsing to reduce memory usage during parsing, and converting Pydantic models to dataclasses with `slots` to reduce object memory consumption. Experimental results show that combining these two methods can reduce memory usage to one-fourth of the original, effectively solving the memory bottleneck of processing large JSON files.

Beyond Sorting: Deep Learning for Order-Independent Transparency

2025-05-22
Beyond Sorting: Deep Learning for Order-Independent Transparency

Traditional transparency rendering relies on depth sorting, which can lead to artifacts in complex scenes. This Eurographics 2025 paper explores Order-Independent Transparency (OIT), a technique that accurately renders transparent objects without depth sorting. It covers traditional OIT approaches (exact, approximate, and hybrid) and deep learning methods, analyzing their scope, performance, and accuracy for more realistic transparency in games, simulations, and film visual effects.

Is Your Authorization System About to Explode? Five Warning Signs

2025-05-22
Is Your Authorization System About to Explode? Five Warning Signs

This article outlines five signs indicating potential problems with your application authorization system: permissions are a simple dictionary; updating role permissions requires changes in many places; inability to clearly answer 'what can an admin do?'; future need for custom roles and permissions; plans to break up the monolith into microservices. The article suggests using a declarative authorization model, centralizing authorization logic into a single service, and choosing an authorization platform designed for scalability and distributed systems, such as Oso, to address these issues.

Development

Critique of Misleading Benchmarks in Formal Methods

2025-05-22
Critique of Misleading Benchmarks in Formal Methods

A paper uses misleading statistics when applying formal methods to verify operating system code. The author criticizes the flawed methodology of simply comparing "proof-to-code ratios", as it ignores the completeness and complexity of specifications. The article points out that proof size has an approximately quadratic relationship with specification size, and specification complexity is far more important than code size. By analyzing multiple verified systems, the author presents more comprehensive data, including code size, specification size, and proof size, and highlights the role of modularity in reducing verification costs, but also notes that complex systems like seL4 are difficult to modularize. Ultimately, the author calls on the research community to stop using the meaningless "proof-to-code ratio" metric.

Development

DockFlow: One-Click Dock Layout Switching for macOS

2025-05-22
DockFlow: One-Click Dock Layout Switching for macOS

Frustrated by constantly rearranging his macOS Dock for different workflows, a developer created DockFlow. This productivity app lets you switch between pre-configured Dock layouts (design, coding, writing, meetings, etc.) with a single click. No more hunting for apps or dragging icons—DockFlow streamlines your workflow, boosting focus and productivity.

Development

Winamp 2.9 Reimagined in Godot: A Cross-Platform Nostalgia Trip

2025-05-22
Winamp 2.9 Reimagined in Godot: A Cross-Platform Nostalgia Trip

A developer has recreated the classic music player Winamp 2.9 using the Godot engine, achieving full cross-platform compatibility. Initially a submission for Tool Jam 5, this project is evolving into a customizable player that captures the old internet aesthetic while leveraging modern tools for any platform. It boasts basic playback controls, playlist functionality, a working 10-band equalizer, and visualizers. The developer emphasizes this is a free, non-commercial project; all rights belong to their respective owners.

Development

Python Package Installation Failures: aiohttp, cryptography, grpcio, and s3fs

2025-05-22
Python Package Installation Failures: aiohttp, cryptography, grpcio, and s3fs

During a Python package installation, four packages, aiohttp, cryptography, grpcio, and s3fs, failed to install. aiohttp failed due to a compiler error involving an unknown type name '__pyx_vectorcallfunc', likely related to compiler or Cython version incompatibility. cryptography failed because its dependency, the asn1 package, requires rustc 1.65.0 or higher, while the current version is 1.63.0. grpcio failed because of a C++ compiler error, preventing extension compilation. s3fs showed the same error as aiohttp, also pointing towards compiler or Cython version compatibility issues. Other packages, such as boto3 and requests, installed successfully.

Development compilation errors

Whenish: Plan Events Directly in iMessage

2025-05-22
Whenish: Plan Events Directly in iMessage

Whenish streamlines event planning by integrating directly into iMessage. Users create date polls, select their availability, and receive real-time responses all within the chat. No more endless text chains or app-switching; simply tap the Whenish icon, pick your dates, and send. Perfect for coordinating group dinners, weekend getaways, family events, or work meetings.

Development event planning

DIY iOS Music Player: A Developer's Revolt Against Apple's Lock-in

2025-05-22

Frustrated with Apple Music's limitations and subscription model, a developer built their own iOS music player from scratch. The player boasts local file playback, iCloud sync, and full-text search, cleverly leveraging SQLite's FTS5 for efficient fuzzy search. The development journey saw a shift from React Native to SwiftUI, employing a backend-like architecture for streamlined data flow and concurrency. While the final product fulfills the developer's needs, the experience highlights Apple's restrictive developer tools and app distribution policies, hindering personal app development in stark contrast to the ease of software creation in the AI era.

Development Music Player

Ruby 3.5: Six Times Faster Object Allocation via Class#new Inlining

2025-05-22
Ruby 3.5: Six Times Faster Object Allocation via Class#new Inlining

Ruby 3.5 achieves a significant speedup in object allocation, up to six times faster, by inlining the `Class#new` method. The article details this optimization, showcasing benchmark results, analyzing performance bottlenecks, and explaining the inlining technique. By eliminating method call overhead, reducing parameter copying, and improving inline cache hit rates, this optimization effectively addresses performance issues in Ruby object allocation, though it introduces minor backward compatibility concerns.

Development

Revisiting the Bug Council: Fixing GitHub Issues' Shortcomings

2025-05-22

The author recounts their experience using BugSplat for project management in early Silicon Valley, adhering to four key principles: all tasks are recorded as bugs, bugs have a unified and detailed schema, each bug is assigned to only one person, and flexible query functionality. The author finds that today's systems like GitHub Issues fall far short of BugSplat's efficiency, lacking a comprehensive schema, having diffuse responsibility, and limited query capabilities. The article concludes by describing how the author's team is improving the open-source project Gitea to address these shortcomings, ultimately achieving the ability to sort bug lists by priority.

Development

Hacking Symbolic Algebra with Anthropic's MCP: A Wild West Adventure

2025-05-22

This post details an experiment using Anthropic's Model Context Protocol (MCP) to overcome LLMs' limitations in symbolic math. MCP lets LLMs call external tools. The author integrated an LLM with SymPy, a computer algebra system, to solve a damped harmonic oscillator equation. While the MCP ecosystem is rough around the edges and presents security risks (running locally!), the successful integration of these components highlights the potential of this approach. Combining LLMs with specialized tools like SymPy could revolutionize how we interact with complex mathematical computations.

Development

SQLite-JS: Supercharge SQLite with JavaScript

2025-05-22
SQLite-JS: Supercharge SQLite with JavaScript

SQLite-JS is a powerful extension that lets you create custom SQLite functions, aggregates, window functions, and collations using JavaScript. This allows for flexible and powerful data manipulation directly within your SQLite database. It supports scalar functions (processing individual rows), aggregate functions (processing multiple rows), window functions (accessing the full dataset), and custom collations (defining sort orders). Create functions to perform calculations, text manipulation, and data transformations with simple SQL statements. Examples include calculating age, median, moving averages, and more. Direct JavaScript code evaluation is also supported for complex tasks. When used with sqlite-sync, custom functions are automatically replicated across a SQLite Cloud cluster.

Development Database Extension

Forge: A Scalable, Secure GitHub Actions Runner Platform on AWS

2025-05-22
Forge: A Scalable, Secure GitHub Actions Runner Platform on AWS

Forge is a scalable, secure, and fully automated multi-tenant platform for running ephemeral GitHub Actions runners on AWS. Designed by platform engineers for platform teams, Forge simplifies the deployment and management of GitHub Actions. It automates the provisioning and lifecycle management of ephemeral GitHub Actions runners across EC2 and EKS, offering multi-tenant isolation, drift remediation, and built-in observability. Supporting various OS, GitHub Cloud and GHES, Forge boasts cost-aware scheduling, flexible infrastructure, and multi-runner deployments. A comprehensive getting started guide helps users quickly deploy and configure Forge to their needs.

Development Multi-tenant

4D Rotation Curved Space Shader with three.js

2025-05-22
4D Rotation Curved Space Shader with three.js

A GLSL shader built with three.js that simulates curved space by projecting 3D models onto a 4D unit sphere using 4D rotation and stereographic projection. Originally written in HLSL for the Unity game Sfera, this shader allows users to zoom, rotate, and control the camera perspective to experience animated models moving within a curved space. An online demo and video tutorial are available. Models are loaded at runtime from the three.js repository.

Development 4D Graphics

Optimizing a Rust AV1 Decoder: Avoiding Unnecessary Zeroing and Optimizing Struct Comparisons

2025-05-22
Optimizing a Rust AV1 Decoder: Avoiding Unnecessary Zeroing and Optimizing Struct Comparisons

By comparing the performance of the Rust-based AV1 decoder rav1d and the C-based dav1d, the author, using a sampling profiler, identified two performance bottlenecks. The first was unnecessary zeroing of a buffer in rav1d on ARM architecture, leading to performance degradation. The second was an inefficient implementation of struct comparisons in rav1d. By using `MaybeUninit` to avoid unnecessary zeroing and optimizing struct comparisons, the author improved rav1d's performance by almost 2%.

Development AV1 Decoder

OpenAI's o3 Model Finds Linux Kernel Zero-Day

2025-05-22
OpenAI's o3 Model Finds Linux Kernel Zero-Day

This post details how the author discovered a zero-day vulnerability (CVE-2025-37899) in the Linux kernel using OpenAI's o3 model. Auditing ksmbd, the author leveraged o3 to analyze the code, successfully identifying a use-after-free vulnerability in the SMB 'logoff' command handler. o3 understood the complex logic of concurrent connections and object sharing, pinpointing the flaw. Furthermore, o3 rediscovered another vulnerability, CVE-2025-37778. The author argues o3 represents a significant leap in code reasoning capabilities, offering vulnerability researchers a powerful new tool to drastically increase efficiency.

Development Zero-day

OCR for Code: Turning Screenshots into Code

2025-05-22
OCR for Code: Turning Screenshots into Code

Pieces has refined OCR technology to accurately recognize code from screenshots. Building on the Tesseract engine, they've added pre- and post-processing steps to handle various programming environments (light/dark mode), noisy backgrounds, and low-resolution images. Image preprocessing, including dark mode inversion, noise reduction, and resolution enhancement, along with post-processing to restore code indentation, significantly improves accuracy. They use Levenshtein distance to evaluate model performance and experimentally selected efficient image upsampling. This technology allows developers to easily convert code screenshots into editable code, boosting development efficiency.

Development code recognition

From 14 Engineers to a Highly Effective Team: A Tale of Specialization vs. Generalization

2025-05-22
From 14 Engineers to a Highly Effective Team: A Tale of Specialization vs. Generalization

A 14-person engineering team struggled with poor communication and low efficiency. They tried various solutions, including asynchronous stand-ups and team splitting, but failed to address the root cause. Finally, they abandoned specialization and adopted a generalist model, empowering team members to master multiple skills and share responsibility across all aspects of the product. This shift yielded unexpected positive results: smoother collaboration, significantly improved efficiency, faster delivery, higher quality, and optimized resource utilization. However, the generalist model also presented challenges, such as some members leaving and increased workload. The author argues there's no one-size-fits-all best practice; what works for your team is best, and continuous improvement and experimentation are key.

Development generalist

Java's Compact Object Headers Graduate to Product Feature

2025-05-22

JEP 519 promotes the experimental 'Compact Object Headers' feature to a full product feature in Java. Initially introduced in JDK 24 to optimize object header layout and improve performance, it has undergone extensive testing at Oracle and Amazon, proving its stability and performance gains. The `-XX:+UnlockExperimentalVMOptions` flag is no longer needed for activation. Future expansion for more object header bits is planned for, with Project Valhalla and Lilliput providing solutions.

Development

Hotspot: A slick GUI for Linux perf performance analysis

2025-05-22
Hotspot: A slick GUI for Linux perf performance analysis

KDAB has developed Hotspot, a standalone GUI for performance data analysis, initially focusing on visualizing Linux perf data in a KCachegrind-like interface. It offers graphical visualization, timeline filtering, and the ability to launch perf to profile applications. Available as an AppImage for easy cross-distribution use, or via package managers (AUR, Debian, Ubuntu, Fedora), Hotspot allows users to analyze on-CPU and off-CPU time, exporting data for sharing. While not yet feature-complete, Hotspot simplifies Linux performance analysis.

Development

Dijkstra's Scathing Reviews of the Ada Language Proposals

2025-05-22
Dijkstra's Scathing Reviews of the Ada Language Proposals

Edsger Dijkstra, Turing Award winner, reviewed four proposals for the Ada programming language (red, green, blue, and yellow). He called the red proposal 'both advanced and backward in such an incongruous manner that I am baffled'. The green proposal was deemed to show 'technical incompetence, probably enhanced by dishonesty'. The blue proposal was 'unacceptably complex', with documentation described as an 'inextricable mixture of technical documentation and sales talk'. Ultimately, Dijkstra famously worried about Western security relying on the winning green proposal, even suggesting he'd feel safer if the Soviet Red Army adopted it instead. This anecdote highlights Dijkstra's unwavering commitment to rigorous technical standards and clear design in software engineering.

Development
1 2 79 80 81 83 85 86 87 214 215