Category: Development

Protocol Buffers: An Amateur Disaster?

2025-09-05

This article criticizes the design flaws of Protocol Buffers (protobuf), arguing that its type system is poor, its design is ad-hoc, and that it leads to a series of problems that permeate the code. The many restrictions of protobuf stem from its poor solutions to already-solved problems, lacking compositionality. Examples include the inability to repeat oneof fields, and various map field limitations. The article also criticizes protobuf's claims of hassle-free backwards and forwards compatibility, and how it pollutes codebases, making code difficult to write and maintain. The author argues that protobuf is only suitable for large companies like Google, not for most companies, and advises developers to abandon the use of protobuf.

Development

Sub-Second Queries on Billions of Rows: Real-Time Analytics with ClickHouse

2025-09-05
Sub-Second Queries on Billions of Rows: Real-Time Analytics with ClickHouse

This guide demonstrates building real-time analytics applications with ClickHouse, achieving sub-200-millisecond query responses on billions of weather records. It covers data ingestion, advanced techniques like statistical sampling and pre-aggregation, and showcases a complete workflow using Rill, ingesting NOAA weather data from S3 and visualizing it. ClickHouse's columnar storage, advanced compression, and vectorized query execution deliver blazing-fast performance, making it ideal for real-time analytics. The article explores the trade-off between data freshness and accuracy, detailing ClickHouse modeling strategies (denormalization, dictionaries, incremental materialized views). A practical example using ClickHouse, S3, and Rill for real-time weather data analysis is presented.

Development

Unpacking the Mach-O Mystery: A Deep Dive into Apple's Binary Format

2025-09-05
Unpacking the Mach-O Mystery: A Deep Dive into Apple's Binary Format

This article delves into the intricacies of Mach-O, the binary format underpinning Apple's operating systems for executables, libraries, and object code. It meticulously dissects Mach-O's structure, encompassing the header, load commands, segments, and sections, alongside universal binaries. Furthermore, the article illuminates Mach-O's role in code signing integrity and Pointer Authentication Codes (PACs) on ARM64e systems. The mechanisms of code signing and PAC operation are explained in detail. Understanding Mach-O provides crucial insight into Apple's security measures and code execution processes.

Mojo: Chris Lattner's Next Big Swing at Revolutionizing Machine Learning Programming

2025-09-05
Mojo: Chris Lattner's Next Big Swing at Revolutionizing Machine Learning Programming

Chris Lattner, creator of LLVM and Swift, discusses his new language, Mojo, with Ron. Mojo aims to make harnessing the full power of modern GPUs productive and fun. The design focuses on making a language easy to use while providing the control needed for state-of-the-art kernel writing. A key concept is requiring programmers to understand hardware details, but making that manageable and shareable through type-safe metaprogramming. The goal is to support specialization for both the computation and the hardware platform. Lattner argues this is necessary to prevent single vendors from dominating the AI computing ecosystem.

Development

Saying Goodbye to the Docker Daemon: The Rise of Podman

2025-09-05
Saying Goodbye to the Docker Daemon: The Rise of Podman

This article reflects on the rise and security concerns of Docker container technology, introducing Podman, a daemonless container runtime. Podman addresses the security and stability issues of the Docker daemon through its streamlined architecture, enhanced security (rootless operation), and seamless integration with systemd and Kubernetes. A practical guide to migrating a FastAPI application from Docker to Podman is provided, showcasing the ease of migration and the advantages Podman offers, such as improved resource utilization and a more secure production environment.

Development

Escaping the Nested SQL Query Hell: Building Movie Page Data with a Single Query

2025-09-05

This article discusses the challenges of building movie page data using relational databases. Traditional methods require multiple SQL queries to fetch information such as directors, actors, and genres, and manually assemble the results into the desired hierarchical structure, which is inefficient and prone to errors. The author uses functions such as `jsonb_agg` to directly generate JSON-formatted structured data in a single SQL query, effectively solving the "object-relational impedance mismatch" problem, improving efficiency, and avoiding multiple network requests and data inconsistencies. This demonstrates the evolution of SQL and the importance of adapting to new data needs.

Development

HTTPX Fiber Concurrency Plugin: Seamlessly Share Connections Across Fibers

2025-09-05

The HTTPX :fiber_concurrency plugin allows a single session's connections to be used across fibers managed by a fiber scheduler, ideal for long-lived connections. It's required by default when using the :persistent plugin. Example code shows launching multiple fibers within a thread, each concurrently using `http.get()` to access a URL. This plugin is essential for programs using fiber schedulers, such as those built with the async gem.

Development

Rendering Chrome in a Terminal: The Carbonyl Browser Project

2025-09-05

The Carbonyl project attempts to render web pages within a terminal. The author cleverly uses terminal characters and escape sequences, combined with Rust and C++, to achieve basic web rendering. The article details how to simulate pixels using Unicode characters, handle text drawing, mouse input, and inter-process communication with Chrome, while tackling rendering efficiency and layout issues. While still early-stage, Carbonyl demonstrates the feasibility of rendering web pages in a terminal environment, offering developers a novel area of exploration.

Development terminal rendering

Adobe Premiere Hits iPhone: Pro-Level Mobile Video Editing, Free!

2025-09-05
Adobe Premiere Hits iPhone: Pro-Level Mobile Video Editing, Free!

Adobe is bringing its professional video editor, Premiere, to iPhones, offering free, pro-level mobile video editing. Launching later this month, the app boasts a multi-track timeline supporting unlimited video, audio, and text layers. Features include automatic captioning, 4K HDR support, and one-tap export to TikTok, YouTube Shorts, and Instagram with automatic resizing. While the app is free, Adobe will charge for cloud storage and generative AI features. It leverages Adobe's generative sound effects, AI-powered speech enhancement, and Firefly assets. Free Adobe fonts, images, sounds, and videos are also available for those avoiding AI content. Unlike the simplified Premiere Rush, this new Premiere aims to bring the power of Premiere Pro to mobile, offering professional control without the complexity.

Development Mobile Video Editing

Bye Spotify: Building My Own Music Streaming Stack

2025-09-05
Bye Spotify: Building My Own Music Streaming Stack

Tired of Spotify's paltry artist payouts, fake artists, and creepy age verification? This author built a self-hosted music streaming solution offering superior sound quality, full ownership of their music, and enhanced privacy. The core components include the Navidrome music server, Lidarr for library management, and Last.fm/ListenBrainz for discovery. This setup not only improves the listening experience but also allows for more direct support of artists.

Development

Action!: A Retro IDE for the Atari 8-bit

2025-09-05
Action!: A Retro IDE for the Atari 8-bit

This article revisits Action!, a compiled language for the Atari 8-bit computer. Created by Clinton Parker, Action! was optimized for the 6502 CPU and featured an integrated development environment (IDE) including a monitor, compiler, text editor, and debugger—a rarity for 8-bit systems. While less advanced than C or Pascal, its speed, innovative editor (with features like scrolling and split-screen), and tight integration made it stand out. The author recounts their experience acquiring and using Action!, discussing its limitations and how add-ons like Action! RunTime and Action! ToolKit partially addressed them. Action! primarily saw use in hobbyist and magazine software.

Development

Poisoning LLMs: A Writer's Fight Back Against Data Scraping

2025-09-05
Poisoning LLMs: A Writer's Fight Back Against Data Scraping

Large Language Models (LLMs) train on vast amounts of data, much of it scraped from the open web without author consent. One author is fighting back by creating intentionally nonsensical mirror articles linked via nofollow tags. The hope is that LLMs, which may ignore nofollow, will ingest this gibberish, degrading their output. While not a perfect solution, the author aims to raise awareness about unauthorized data scraping and the ethical implications for content creators.

Development

Type-Safe Error Handling in Swift 6: A Layered Approach

2025-09-05

Swift 6 introduces typed throws, making error handling more type-safe. This post details a user-friendly layered error model using a custom `SystemError` protocol. This protocol includes properties like `logMessage`, `userFriendlyMessage`, and `underlyingErrors`, and provides recursive functions for looking up error types and generating error stacks. The article demonstrates defining custom error objects using structs and enums, handling Foundation errors, and decoding errors. Examples showcase leveraging typed throws and custom error handling to improve the reliability of Swift projects.

Development

Blazing Fast UR5 Inverse Kinematics Solver using IK-Geo

2025-09-05

This article presents a high-performance inverse kinematics (IK) solver for the UR5 robot arm, leveraging the IK-Geo library. Utilizing subproblem decomposition, it solves three canonical geometric subproblems to achieve speeds over 40x faster than IKFast, with accuracy reaching machine precision (10⁻¹⁶). Returning all solutions and gracefully handling singularities, it offers significant advantages for real-time control, path planning, and simulation, unlocking new capabilities in robotics.

Development Inverse Kinematics

What if OpenDocument Used SQLite?

2025-09-05

This article explores a thought experiment: what if the OpenDocument file format, specifically ODP (OpenDocument Presentation), were built around SQLite? The author argues this would yield significant advantages, including smaller file sizes, faster file saving and startup times, reduced memory usage, built-in versioning, and an improved user experience. The limitations of the current ZIP-based approach are detailed, such as difficulties with incremental updates, slow startup, high memory consumption, crash recovery issues, and limited content accessibility. The author proposes replacing ZIP with SQLite and further suggests splitting content into smaller units within database tables for incremental updates and faster startup. Version control via SQLite is also discussed, allowing for the retention of historical versions and simplifying crash recovery. In essence, the article posits that using SQLite as an application file format can dramatically enhance user experience and performance for applications like OpenOffice.

Development File Format

Hypr MCP Gateway: Simplifying OAuth2 Authentication for Your MCP Servers

2025-09-05

The Hypr MCP team built an MCP Server Gateway, a reverse proxy that simplifies adding OAuth2 authentication to LLM-based workflows. This gateway addresses shortcomings in existing Identity Provider (IdP) software's support for the MCP specification's authorization framework, such as lack of support for Dynamic Client Registration (DCR) and Authorization Server Metadata (ASM). The article details the gateway's implementation, including using Dex as an IdP, handling CORS, and building OAuth2 middleware. It also discusses challenges encountered, like inconsistencies in client handling of dynamic client registration and error responses. The Hypr MCP Gateway offers an easy-to-use, robust solution for securely connecting internal applications to LLM workflows. Check out their open-sourced project on Github.

Development

Rasterizer: A Decade-Long Journey to a GPU-Accelerated Vector Graphics Engine

2025-09-05
Rasterizer: A Decade-Long Journey to a GPU-Accelerated Vector Graphics Engine

Inspired by Adobe Flash, the author spent ten years developing Rasterizer, a GPU-accelerated 2D vector graphics engine. Up to 60x faster than CPU-based rendering, it's ideal for vector-animated UIs. Built using C++11 and Metal for macOS (with an iOS port in the pipeline), Rasterizer supports SVG and PDF files. It features innovative anti-aliasing techniques and efficient rendering strategies, including GPU-based quadratic Bézier curve solving and batch parallelism.

Development 2D engine

Fil-C's FUGC: A Parallel, Concurrent, and Accurate Garbage Collector

2025-09-05

Fil-C employs FUGC (Fil's Unbelievable Garbage Collector), a parallel concurrent on-the-fly grey-stack Dijkstra accurate non-moving garbage collector. FUGC boasts multi-threaded concurrent marking and sweeping, avoiding stop-the-world pauses through 'soft handshakes' for non-blocking interaction with mutator threads. Its grey-stack approach eliminates load barriers, requiring only a simple store barrier, while Dijkstra barriers ensure accurate marking. FUGC is non-moving, simplifying concurrent implementation and supporting C, Java, and JavaScript-style memory management including finalizers, weak references, and weak maps, drastically improving Fil-C's memory management efficiency and safety.

Development garbage collector

Experimenting with and Abandoning a Terminal UI Library

2025-09-04
Experimenting with and Abandoning a Terminal UI Library

While developing the game Kartoffels, the author attempted to create a high-performance terminal UI library, Kruci, to replace the existing Ratatui library. Kruci uses a declarative UI design and attempts to improve performance by avoiding pixel-by-pixel diffing calculations. However, Kruci encountered many challenges in handling events, state management, and Z-stacking. Ultimately, the author decided to abandon the project, concluding that optimizing Ratatui or focusing on game development would be more efficient.

(pwy.io)
Development

Efficient Font Caching with Service Workers

2025-09-04

This code snippet demonstrates how a service worker efficiently caches font resources. It uses `CacheStorage` to cache fonts and includes a versioning mechanism to prevent stale caches from interfering. When a font is requested, the service worker first checks the cache; if a hit occurs, it returns the font directly; otherwise, it fetches the font from the network and adds it to the cache, handling network request errors along the way. The code cleverly uses the `clone()` method to prevent resource consumption issues.

Development Fonts

Thunk: Enabling Your Rust Programs to Run on Ancient Windows

2025-09-04
Thunk: Enabling Your Rust Programs to Run on Ancient Windows

Thunk is a Rust tool that leverages VC-LTL5 and YY-Thunks libraries to enable your Rust programs to run on older Windows systems, even Windows XP. It achieves compatibility by adding VC-LTL to the library search path and using YY-Thunks to compensate for missing APIs in older systems. Thunk offers both command-line tool and library usage, simplifying the process of building programs and shared libraries compatible with older Windows versions. Note: Thunk doesn't guarantee perfect compatibility on older systems; use at your own risk.

Development

Building a High-Performance Map with Go: A Vector Tile Implementation

2025-09-04
Building a High-Performance Map with Go: A Vector Tile Implementation

While building a website that maps live urban activity, the author sought a more efficient way to render the map, opting for vector tiles to optimize loading speed. The article details the process of generating Mapbox Vector Tiles (MVT) from GeoJSON data, covering coordinate transformations, tile identification, geometry construction, and property addition. Implemented in Go, the resulting MVT tiles significantly reduced page size and improved map rendering speed and overall performance.

Development Map Optimization

Breaking Math.random(): An Improved Algorithm for Inverting Xorshift128+

2025-09-04
Breaking Math.random(): An Improved Algorithm for Inverting Xorshift128+

The recent vulnerability CVE-2025-7783 exploits an edge case in the Node.js ecosystem, affecting applications using axios or the deprecated request library. The attack requires five consecutive outputs of JavaScript's Math.random(), allowing prediction of future outputs using the z3 solver. This blog post presents a more efficient approach. The author demonstrates a 226-operation algorithm to invert the Xorshift128+ algorithm used by Math.random(), requiring only two full 64-bit outputs. By analyzing Xorshift128+, knowing only the least significant 26 bits of R1 allows determining the remaining bits of L1 and R2. The post also discusses adapting this to the full Math.random() function, highlighting challenges due to bit truncation and proposing a solution using three outputs. Finally, the author shares their experience using ChatGPT for research, noting its potential while acknowledging current limitations.

Development

hledger 1.50 Released: Robust Transaction Balancing and More

2025-09-04
hledger 1.50 Released: Robust Transaction Balancing and More

hledger 1.50 is released, featuring significantly improved transaction balancing using only local precisions for greater accuracy and robustness. This release also includes numerous enhancements such as CSV data commands, import archiving, timeclock improvements, and bug fixes. Timeclock syntax and parsing are more robust, concurrent sessions are fully supported, and glob patterns in the include directive are enhanced for more powerful matching.

Development financial software

From SixthSense to Physics Research: A College Student's Tech Odyssey

2025-09-04
From SixthSense to Physics Research: A College Student's Tech Odyssey

A college student, starting with a reflection on human-computer interaction, attempts to replicate the SixthSense project, which launches his journey into Computer Science and Engineering. During his studies, he discovers a stronger interest in software engineering, particularly in building practical applications and solving real-world problems. He gets involved in physics research, using Docker to streamline software installation, and employing CNNs and Transformers for electron identification, ultimately shifting his major to Computer Science and Physics. This experience showcases his journey of exploring different technological fields, finding his interests and direction, and improving his skills through hands-on experience.

Development physics research

Polars Cloud GA: Bridging the DataFrame Scale Gap

2025-09-04
Polars Cloud GA: Bridging the DataFrame Scale Gap

Polars Cloud is now generally available on AWS, along with the open beta launch of its novel distributed engine. This platform aims to bridge the gap between the ease of use of local pandas and the scalability of remote PySpark, offering a single API that seamlessly scales from laptop to cloud. Its distributed engine leverages Polars' innovative streaming architecture, enabling horizontal, vertical, and diagonal scaling strategies, significantly reducing cost, complexity, and improving performance. Future plans include on-premise support, a live cluster dashboard, task orchestration, autoscaling, catalog support, and multi-region deployment.

Development

Reliable Data Sending with JavaScript's Beacon API: Ditching Unreliable `beforeunload`

2025-09-04
Reliable Data Sending with JavaScript's Beacon API: Ditching Unreliable `beforeunload`

Sending data reliably to servers when a user leaves a website has always been a challenge. Traditional methods using the `beforeunload` event with `fetch` or `XMLHttpRequest` are unreliable, as browsers may cancel requests for a better user experience. JavaScript's Beacon API offers a 'fire-and-forget' solution; the browser doesn't wait for a response, ensuring data is sent reliably. While the Beacon API limits data size and only supports POST requests, it's perfect for sending small, critical data like analytics or page leave events. It's also great for any scenario requiring reliable asynchronous data sending, such as real-time data synchronization.

Development data sending

Poor Man's Bitemporal Database: Time Travel with SQLite

2025-09-04

This article details the author's journey building a simplified bitemporal database using SQLite for their indie B2B SaaS project. It delves into the nature of temporal data, the truthiness of facts, and the simulation of time travel. Detailed Clojure code examples demonstrate using SQLite, HoneySQL, and UUIDv7 to create an efficient and maintainable bitemporal database. The author stresses the importance of system simplicity, scalability, and data sovereignty, sharing experiences and challenges in architectural design and code implementation.

Development temporal database

FreeBSD Says No to LLM-Generated Code

2025-09-04
FreeBSD Says No to LLM-Generated Code

The FreeBSD Project's latest quarterly report reveals a new policy in the works: a ban on code and documentation generated by large language models (LLMs). This aligns with similar stances taken by NetBSD and Gentoo Linux, reflecting concerns about the reliability and security of AI-generated code. The report also details other FreeBSD projects underway, including improvements to Wi-Fi, graphics, sound, and power management; restructuring the OS into pkg packages; and developing a web-based GUI for virtualization. Despite competition from Linux, FreeBSD remains actively developed, continuously improving its features and user experience.

Development

The AI Coding Lie: Productivity Hype or Bust?

2025-09-04
The AI Coding Lie:  Productivity Hype or Bust?

A seasoned programmer with 28 years of experience challenges the claims of AI coding tools, revealing a six-week experiment that showed no significant productivity gains, and potentially even a slowdown. The author argues that the industry's hype around AI-driven productivity increases is vastly overblown, unsupported by real-world data. Using extensive data, the article demonstrates the lack of an expected surge in software development output, debunking the myth of the '10x engineer'. The author urges developers to approach AI tools critically, avoid blind adoption, and resist unrealistic marketing claims.

Development
← Previous 1 3 4 5 6 7 8 9 201 202