Category: Development

Google URL Shortener Shutdown Announced

2025-07-25
Google URL Shortener Shutdown Announced

Google is shutting down its URL shortening service, goo.gl, on August 25th, 2025. Starting August 23rd, 2024, some goo.gl links will display a notification page warning users of the impending shutdown. Developers are urged to migrate to alternative URL shortening services. goo.gl links generated through Google apps will continue to function.

Development

tsbro: TypeScript in the Browser, No Build Steps Needed

2025-07-25
tsbro: TypeScript in the Browser, No Build Steps Needed

tsbro is a new library that simplifies using TypeScript in the browser. It bypasses the browser's import system, using synchronous XHR to fetch TypeScript code, transpiling it to JavaScript with swc wasm, and converting it to CJS for synchronous require. This allows developers to run TypeScript code directly in the browser without build steps, and use external libraries like Preact, ideal for quick prototyping or PoCs. Current limitations include difficult-to-read stack traces and the need for manual ambient declaration files.

Development

mwm: A Window Manager for Minimalists

2025-07-25
mwm: A Window Manager for Minimalists

mwm is a minimalist window manager written in a mere 20 lines of code. It eschews all bells and whistles, including mouse control, virtual desktops, and configuration files. Its core functionality is limited to launching applications, switching between windows, and closing windows. The author argues that modern software is bloated, and mwm aims to be hackable, fun, small, and easily understandable – a true testament to free software's potential.

Development

Alto: Turn Your Apple Notes into a Website in One Click

2025-07-25

Alto is a macOS app that transforms your Apple Notes into a fully functional website or blog. With one click, your notes (including text, images, audio, and video) become individual pages on your site. Focus on writing, not website building tools. Alto offers a simple process, comprehensive documentation, and suggestions for integration with other services like Recuremail for newsletters.

arXivLabs: Experimenting with Community Collaboration

2025-07-25
arXivLabs: Experimenting with Community Collaboration

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

Development

vet: Securely Run Remote Scripts

2025-07-25
vet: Securely Run Remote Scripts

Vet is a command-line tool designed to safely execute `curl | bash` commands, mitigating risks from malicious scripts or network errors. It downloads the script to a temporary location, compares version differences, uses `shellcheck` for code analysis, and prompts for user confirmation before execution. Installation is recommended via Homebrew, with manual steps also provided. Vet emphasizes security and rejects blind trust; even its own installation process follows this principle.

Development

SQLite's WAL Mode Checksum Issue: Silent Data Loss

2025-07-25

This post delves into a flaw in SQLite's checksum mechanism within its Write-Ahead Logging (WAL) mode. When a checksum mismatch occurs in a WAL frame, SQLite silently discards the faulty frame and all subsequent frames, even if they are not corrupt. This design, while intentional, leads to potential data loss. The author analyzes the underlying reasons and proposes that SQLite should throw an error upon corruption detection instead of silently discarding data, thus improving data integrity. The discussion also touches upon the context of SQLite's usage in embedded systems and mobile devices, where corruption is more prevalent.

(avi.im)
Development

Prevent Common Go Bugs with Custom Types

2025-07-25
Prevent Common Go Bugs with Custom Types

In Go development, mixing up integers, strings, or UUIDs representing different things leads to subtle bugs. This post introduces a simple yet effective technique: define distinct types for different meanings. For instance, use AccountID and UserID for account and user IDs respectively; the compiler will catch type mismatches, preventing errors. The author demonstrates this in their libwx weather library, avoiding errors from using generic types like float64. This simple yet often overlooked technique is worth adopting.

Development Coding Best Practices

Zig Compiler Makes Strides: AArch64 Backend and Performance Boosts

2025-07-25

The Zig compiler team made significant progress in 2025. They completed the AArch64 backend, which outperforms the x86 backend, resulting in substantial speed improvements and a smaller compiler executable size. Furthermore, parallelization of the x86_64 backend drastically improved compilation speed, with some test cases showing up to a 50% increase. These improvements mark the Zig compiler's best performance yet.

Development

Go's Memory Safety: The Hidden Danger of Thread Unsafety

2025-07-25

This article challenges the common understanding of memory safety in Go. The author argues that simple memory safety (e.g., preventing out-of-bounds access) isn't sufficient for robust programs; true safety lies in avoiding undefined behavior (UB). A Go program example demonstrates how data races can lead to UB and crashes, even without using `unsafe` operations. The author contends that Go's handling of data races is not strict enough, contradicting its claims of memory safety, making Go programs more vulnerable to security exploits. The conclusion emphasizes that language safety isn't binary but understanding a language's safety guarantees and trade-offs is crucial.

Development Data Race

MDN's Birthday: Cakes, Collaboration, and Community

2025-07-25
MDN's Birthday: Cakes, Collaboration, and Community

In the web world, exchanging cakes to mark milestones is a cherished tradition among browser makers. Microsoft famously sent cakes to Mozilla for Firefox releases, and now web.dev has gifted MDN a birthday cake, acknowledging MDN's significant contribution to the global developer community. Reaching millions of developers monthly and boasting over 100,000 contributors, MDN expresses gratitude to its passionate community, looking forward to 20 more years of empowering developers and building a better web together.

Development

JVM Optimization: A VarInt Tale of Unexpected Results

2025-07-25

While optimizing Java code in a massive distributed data processing platform, the author identified VarInt encoding as a potential optimization target. He wrote a highly optimized VarInt encoder using SIMD instructions, achieving a 4x speedup in benchmarks. However, surprisingly, the optimization yielded no improvement in production. The culprit? The benchmark used random numbers, while real-world numbers tend to be much smaller, rendering the algorithm's worst-case performance irrelevant in practice. The change was ultimately reverted, but the experience served as valuable proof-of-concept for developing and productionizing custom JIT optimizations.

Development Java Optimization

Positron: A Next-Gen Data Science IDE

2025-07-25

Posit PBC introduces Positron, a free, next-generation data science IDE. This extensible, polyglot tool allows for code writing and data exploration within a familiar, reproducible authoring and publishing environment. Built on Code OSS, Positron leverages VS Code's functionality and offers user guides and FAQs for quick onboarding. Users can share feedback and report bugs via GitHub Discussions. Positron is licensed under the Elastic License 2.0.

Development

GrapheneOS: A Privacy-Focused Android Rebuilt

2025-07-25

GrapheneOS is an open-source project aiming to bolster Android's security and privacy. Based on the Android Open Source Project, it removes substantial code and adds numerous security features, including a hardened malloc() library and control-flow integrity enhancements. While support is limited to select Google Pixel devices, GrapheneOS leverages hardware memory tagging for robust OS protection. A firsthand installation experience reveals a more secure and private Android, albeit with an initial setup time investment. The author highlights its strong privacy features but acknowledges the ongoing challenge of balancing functionality with a complete rejection of proprietary apps.

Development

Python Classes: When to Avoid Them

2025-07-24

Python's renowned for its simplicity and readability, and classes are a powerful feature for object-oriented programming. However, they aren't always the best solution. This article explores scenarios where Python's built-in types, functions, and standard library modules offer simpler alternatives. Examples include using namedtuples or dataclasses instead of simple data containers; functions instead of stateless utility classes; modules for grouping constants; dictionaries or lists for simple state management; lambdas or comprehensions for one-off operations; and leveraging Python's extensive standard library. The article emphasizes considering simpler, more efficient alternatives before resorting to classes, keeping code clean and concise—sometimes meaning skipping classes entirely.

Development

Debian Trixie (v13) Arrives: A Sysadmin's Upgrade Guide

2025-07-24

Debian 13 (codename Trixie) is scheduled for release on August 9th, 2025. This post details the author's experience preparing clients for the upgrade, focusing on server systems from a sysadmin perspective. It covers updated package versions, including significant changes in apt 3.0, systemd, and the Linux kernel 6.12, highlighting potential issues like VirtualBox and Vagrant compatibility. Configuration management tools like Puppet and Ansible, and virtualization technologies, are also discussed.

Development

HyperPB: A Blazing-Fast Go Protobuf Parser Outperforming UPB

2025-07-24
HyperPB: A Blazing-Fast Go Protobuf Parser Outperforming UPB

This article introduces HyperPB, a remarkably fast Protobuf parser written in Go. Building upon the strengths of UPB (one of the fastest Protobuf runtimes), HyperPB leverages Go's register ABI and lack of undefined behavior for significant optimizations. Employing JIT compilation and online PGO, it surpasses both Protobuf Go's generated code and vtprotobuf in benchmark tests. At its core is a table-driven interpreter, enhanced with clever optimizations like zero-copy techniques, hot/cold data splitting, and arena reuse.

Development

The Promised LAN: A 24/7 Always-On Private Network

2025-07-24

The Promised LAN is a closed, membership-only network operating a 24/7 LAN party since 2021. Its sophisticated architecture connects independent nodes via IPSec, using BGP for routing. A custom TLD (.tpl) powers its DNS, employing distributed root servers and recursive resolvers for high availability. For streamlined TLS certificate management, they've built an internal PKI system leveraging DNS records and SSH for certificate issuance, bypassing external services like ACME. This article details the system's architecture and security policies, showcasing its elegant design and commitment to security.

Development

From Report Page to SQL Injection as a Service: A Decade of Code Decay

2025-07-23
From Report Page to SQL Injection as a Service: A Decade of Code Decay

A website managing logs for millions of devices worldwide evolved from a standard reporting page to a wide-open SQL injection service over a decade. Initially, simple reporting functionality sufficed, but incremental changes accumulated technical debt, culminating in an unmaintainable 'SQL Injection as a Service'. A new engineer attempted a fix, causing a system crash by deleting data, resulting in their dismissal. The story serves as a cautionary tale: the accumulation of technical debt and security vulnerabilities can lead to catastrophic consequences.

Development code evolution

Depot: Revolutionizing Software Builds, Seeking Technical Content Writer

2025-07-23
Depot: Revolutionizing Software Builds, Seeking Technical Content Writer

Rapidly growing software build platform Depot is seeking a technical content writer to help tell the story of how it accelerates build times and improves developer productivity. Depot has redefined how teams build software locally and in CI, making speed a first-class feature. The ideal candidate will be a strong technical writer capable of producing long-form technical blog posts, guides, benchmarks, and product explainers, working closely with engineers to translate technical details into easily digestible content. This is a unique opportunity to shape the company's technical content strategy and is perfect for technical writers looking to make a significant impact in a fast-paced startup environment.

Development software build

Atkinson Hyperlegible Mono: A Font Review for Programmers

2025-07-23

This article provides an in-depth review of the Atkinson Hyperlegible Mono font, comparing it to established programming fonts like JetBrains Mono and Fira Code. Designed by the Braille Institute for enhanced character distinction, particularly focusing on easily confused characters (like 0 and O, l and I), Atkinson Hyperlegible Mono demonstrates superior performance in distinguishing single-character homoglyphs and mirror image glyphs. However, it shows some weaknesses in differentiating certain programming symbols. The author details the installation process and provides a link to the GitHub repository.

A Tiny CSS Animation Caused 60% CPU and 25% GPU Usage on My M2 MacBook

2025-07-23
A Tiny CSS Animation Caused 60% CPU and 25% GPU Usage on My M2 MacBook

A seemingly insignificant CSS animation was mysteriously consuming 60% CPU and 25% GPU on my M2 MacBook. This post details the debugging process using Chrome DevTools' performance profiling tools to pinpoint the culprit: animating the `height` property. The author explains the browser's rendering pipeline and demonstrates how switching to the cheaper `transform` property (using a clever workaround to avoid visual artifacts) dramatically reduced resource consumption to under 6% CPU and 1% GPU.

Development browser rendering

Gemini CLI Hallucinates, Deletes Files: A Catastrophic AI Failure

2025-07-23

A product manager's experiment with Google's Gemini CLI ended in catastrophic data loss. Attempting to rename a folder and move files, Gemini incorrectly reported successful directory creation, then moved files to a non-existent location, resulting in complete data loss. The incident highlights serious flaws in Gemini CLI's error handling and file system operations, underscoring the potential risks of AI models in real-world applications.

Development

Swift Interop with Erlang's Distributed Actors: A Seamless Solution

2025-07-23
Swift Interop with Erlang's Distributed Actors: A Seamless Solution

A new actor system, `swift-erlang-actor-system`, enables Swift programs to seamlessly integrate with Erlang's distributed clusters. By wrapping Erlang's C node functionality, developers can use Swift's distributed actors to communicate with Erlang nodes. The system cleverly uses the @StableNames macro to address name mangling issues in cross-language remote calls and supports custom transport protocols. This provides an elegant solution for Swift and Erlang interoperability and paves the way for running Elixir applications on iOS and other Apple platforms.

Development Distributed Actors

WebAssembly and DOM Support: The Future of Glue Code

2025-07-23

The question of whether WebAssembly (Wasm) is truly production-ready for web applications, given its need to integrate with web pages and APIs like the DOM, is addressed. The article argues that direct DOM access in Wasm isn't necessary; existing JavaScript APIs and compiler-generated glue code provide seamless integration. While a mechanism for directly calling web APIs might be added in the future, it would require significant effort. Currently, Wasm leverages JavaScript function imports (e.g., `console.log`) and cleverly uses JavaScript object array indices to manage object references, enabling flexible interaction with JavaScript. This approach, while not purely Wasm, effectively boosts performance. Ongoing improvements in exception handling, blocking I/O, and garbage collection are further optimizing Wasm-JavaScript integration efficiency. The author concludes that Wasm's focus should be on improving program performance, not eliminating JavaScript entirely. The future of WebAssembly involves refining the component model and toolchains to enhance interoperability with JavaScript without sacrificing performance or code size.

Development

Taking Control of Your EFI Secure Boot Keys: A Deep Dive

2025-07-23

This article provides a comprehensive guide to taking full control of your computer's EFI Secure Boot keys. It details the four Secure Boot key types (Database Key, Forbidden Signature Key, Key Exchange Key, Platform Key) and the role of Machine Owner Keys, outlining steps for generating custom keys, signing EFI binaries, and deploying keys on single or multiple machines. The article covers using KeyTool and LockDown tools, managing keys from Linux, and updating the dbx to address security vulnerabilities like Boot Hole. While complex, this process significantly enhances system security.

Development

Building a Game Boy Cartridge from Scratch: A Deep Dive into Hardware and Software

2025-07-23

Allison Parrish's multi-year journey to build a Game Boy cartridge from scratch is documented in this comprehensive article. It details the inner workings of Game Boy cartridges, explaining concepts like memory mapping, Memory Bank Controllers (MBCs), chip select, and buses. The article dives deep into the specifics of various MBCs, particularly the MBC5, and addresses challenges like using flash memory instead of ROM and resolving conflicts between flash and MBC protocols. Hardware aspects such as battery-backed SRAM persistence and voltage conversion are also explored. This in-depth technical guide is perfect for anyone interested in Game Boy hardware and software development.

Development

AI-Powered Polyglot Programming: From Ruby-Only Dev to Multi-Lingual in Under a Year

2025-07-23
AI-Powered Polyglot Programming: From Ruby-Only Dev to Multi-Lingual in Under a Year

A decade-long Ruby-only developer shares their journey of mastering multiple languages—C++, C, and Rust—in less than a year, thanks to AI coding tools like Cursor and Claude Code. The author details how AI assistance overcame the challenges of learning system programming languages, enabling efficient contributions to projects like Sorbet, RBS, and ZJIT. AI acted not as a code writer, but as a pair programmer with complementary skills, clarifying syntax, patterns, and answering questions, dramatically reducing the learning curve and enabling meaningful contributions from day one. While AI accelerates learning, human expertise remains crucial for course correction. The author believes AI-assisted programming is the future of software development.

Development polyglot programming

From Java Skeptic to Advocate: 25 Years of Java Development

2025-07-23
From Java Skeptic to Advocate: 25 Years of Java Development

This article recounts a 25-year journey with Java, transforming from initial skepticism to ardent advocacy. The author details Java's evolution, highlighting how new features reduce development complexity and improve code readability and maintainability. The supportive Java community, and Java's importance in the age of AI and cloud-native development, are also emphasized. The author encourages readers to learn Java and provides a learning roadmap.

Development

Running Fennel from Emacs: A Powerful Extension

2025-07-23
Running Fennel from Emacs: A Powerful Extension

This article introduces `require-fennel.el`, an Emacs extension that enables running Fennel (a Lua dialect) within Emacs. It achieves this by communicating with a Fennel REPL, allowing data conversion and function calls between Emacs Lisp and Fennel. The author demonstrates loading Fennel modules, calling Fennel functions, and using Fennel data structures in Emacs Lisp. Furthermore, the extension supports calling Emacs Lisp functions from Fennel, enabling two-way interaction. This allows developers to leverage Fennel's conciseness and Emacs's power for a more robust Emacs environment.

Development
1 2 36 37 38 40 42 43 44 214 215