Category: Development

A Programmer's Rejection of AI Coding Tools: Efficiency, Ethics, and Environment

2025-06-18

A seasoned programmer explains their refusal to use AI coding tools, not out of technological resistance, but from deep concerns about efficiency, ethics, and the environment. The author argues that the productivity gains of current AI tools are questionable and that they risk introducing more errors. Additionally, AI model training puts immense pressure on the environment, and its data sources raise ethical concerns, including intellectual property infringement. The author emphasizes the joy of "struggle and learning" in programming and the advantages of manually written code in terms of quality and maintainability. Ultimately, they choose to stick with traditional programming methods and call for stronger regulation of AI technology.

Development

Homomorphic Encryption and Local-First Software: A Trade-off?

2025-06-18
Homomorphic Encryption and Local-First Software: A Trade-off?

This article explores the challenges of using homomorphic encryption to protect private data in local-first software. While homomorphic encryption allows computation without decryption, it introduces significant performance and storage overheads. The author demonstrates the practical limitations of homomorphic encryption on CRDTs by building a homomorphically encrypted 'last-write-wins' register CRDT. The article highlights how homomorphic encryption requires operations under worst-case input assumptions, drastically increasing space and time complexity. Ultimately, the author concludes that securing local-first apps without severely degrading usability remains an open problem.

Development local-first software

A* Pathfinding Explained: From Breadth-First Search to Greedy Best-First Search

2025-06-18
A* Pathfinding Explained: From Breadth-First Search to Greedy Best-First Search

This article provides a clear explanation of the A* pathfinding algorithm. Starting with the simple Breadth-First Search (BFS), it progressively introduces Dijkstra's algorithm (handling varying movement costs), Greedy Best-First Search, and finally, the A* algorithm. Through diagrams and code examples, the article clearly shows the operation and advantages and disadvantages of different algorithms, discussing their applicability in different scenarios such as map pathfinding and game AI. A*, by incorporating a heuristic function, finds the shortest path while improving search efficiency, making it a popular pathfinding algorithm in many games.

Don't Mock What You Don't Own: A Better Way to Test Third-Party Dependencies

2025-06-18
Don't Mock What You Don't Own: A Better Way to Test Third-Party Dependencies

This article tackles a common problem in unit testing: handling third-party dependencies. Using a Docker repository client as an example, the author demonstrates the drawbacks of directly mocking third-party dependencies (like HTTP clients): tests become complex, brittle, and hard to understand. The proposed solution involves introducing a thin abstraction layer to decouple business logic from external dependencies, simplifying testing and improving code readability and maintainability. This approach not only leads to cleaner and more concise tests but also enhances the readability and maintainability of the business logic itself. While acknowledging exceptions, the author concludes that this principle helps write more elegant and maintainable tests in most cases.

List of Windows NT Native API Functions

2025-06-18

This list comprises numerous Windows NT native API functions, covering various aspects such as file systems, process management, thread management, security, and registry. These functions are core to low-level Windows operations, forming the foundation for higher-level application interfaces. Understanding them is crucial for system programmers and security researchers.

Development

Scrappy: Building Home-Grown Apps for Friends and Family

2025-06-18
Scrappy: Building Home-Grown Apps for Friends and Family

John and Pontus created Scrappy, a research prototype for making simple, personalized apps for yourself and your friends. It's a visual tool similar to Figma or Google Slides, but allows attaching behaviors to interactive objects. You drag and drop objects like buttons and text fields, and add JavaScript code to define their actions, like recording text input on a button click. Scrappy apps are multiplayer, with persistent and synced state, making collaboration with friends and family seamless. The goal is to democratize software creation, enabling more people to build apps tailored to their unique needs.

Microsoft's Open-Source CLI Text Editor: Edit – Lightweight, Fast, and VS Code-like

2025-06-18
Microsoft's Open-Source CLI Text Editor: Edit – Lightweight, Fast, and VS Code-like

Microsoft has released Edit, a lightweight, fast, and easy-to-use open-source command-line text editor. Designed with a user experience similar to VS Code, Edit aims to fill the gap in recent Windows versions which lack a built-in CLI text editor. While primarily targeted at Windows users, Edit also works on Linux and macOS. Its modeless editing, blazing-fast file opening, and minimalist feature set make it ideal for quick text edits. Though lacking advanced features like syntax highlighting, its speed and simplicity make it a compelling alternative.

Development

Incant: Add Magic Spells to Your Code

2025-06-18
Incant: Add Magic Spells to Your Code

Incant is a new library that allows developers to safely integrate language model invocations. It provides primitives like `createSelector` and `createFilter` for array operations such as picking the highest number or filtering male names. Incant reads API keys from environment variables, is easy to configure, and guarantees type safety, preventing hallucinations. However, be aware that all input data is sent to upstream inference providers, so avoid sending personal or sensitive information.

Development

Universal Rules Template for AI Coding Assistants: Supercharge Your Workflow

2025-06-18
Universal Rules Template for AI Coding Assistants: Supercharge Your Workflow

Tired of inconsistent AI behavior across different coding assistants? This template provides a robust, cross-platform framework to elevate your AI pair-programming experience. It leverages established software engineering principles and structured documentation to ensure consistent AI operation, deep project understanding, and optimal workflows across tools like Cursor, CLINE, RooCode, Windsurf, and GitHub Copilot. Move beyond simple prototypes and build sophisticated applications with AI partners that truly understand your project.

Development

lstr: Blazing Fast Directory Tree Viewer in Rust

2025-06-18
lstr: Blazing Fast Directory Tree Viewer in Rust

lstr is a blazingly fast, minimalist directory tree viewer written in Rust. Inspired by the `tree` command, lstr offers a powerful interactive mode alongside a classic view. It leverages parallel directory scanning for speed, features a clean and uncluttered interface, and provides options to display file icons, permissions, sizes, and Git status. Integration with `.gitignore`, depth control, and fuzzy finding (via fzf) are also supported. You can even integrate lstr into your shell as a visual `cd` command. Whether you prefer the classic tree-like view or the interactive TUI, lstr's efficiency and clean design will enhance your file management workflow.

Development directory tree

Rainy Day Project: A TinyBASIC to Go Compiler

2025-06-18

Over a rainy weekend, the author built a compiler that translates TinyBASIC code into Go. Leveraging Go's nex (lexer) and goyacc (parser), the project comprises three stages: lexical analysis, parsing, and code generation. The author details the grammar and code generation process, showcasing example programs and outputs. This fun, challenging project demonstrates the practical application of compiler principles.

Development

Plasma 6.4: Smoother, Friendlier, and More Powerful Desktop Experience

2025-06-17
Plasma 6.4: Smoother, Friendlier, and More Powerful Desktop Experience

KDE Plasma 6.4 is here, offering a smoother, friendlier, and more powerful desktop experience. Improvements span accessibility, color rendering, tablet support, window management, and more. Key features include customizable tile layouts per virtual desktop, an overhauled Spectacle screenshot tool, color visualization in KRunner, and enhanced support for digital artists and HDR displays. The update also refines notifications, widgets, and system monitoring. Plasma 6.4 focuses on creating a more convenient and efficient desktop environment.

Development

Faster bzip2 in Rust: Cross-Compilation Made Easy

2025-06-17
Faster bzip2 in Rust: Cross-Compilation Made Easy

The newly released bzip2 0.6.0 uses a Rust implementation (libbz2-rs-sys) by default, resulting in significant speed improvements for both compression and decompression, and simplified cross-compilation. This work addresses the continued reliance on bzip2 in many projects, with the Rust version offering solutions to longstanding compilation issues such as WebAssembly compilation and Windows/Android compatibility. Benchmark tests show that the Rust implementation generally outperforms the C implementation, and a Miri security audit ensures code reliability.

Development

Will LLMs End Programming? Lessons from Machine Translation

2025-06-17

The debate rages on: will large language models (LLMs) render programmers obsolete? This article uses machine translation as a compelling analogy. While tools like Google Translate have revolutionized translation, they haven't replaced human translators. Translation requires contextual understanding, ambiguity resolution, and cultural sensitivity—skills LLMs currently lack. Similarly, programming demands creativity and problem-solving abilities beyond the current capabilities of LLMs. The author suggests LLMs are best used as assistive tools to enhance programmer efficiency, not replace them entirely.

Development

The Grug Brained Developer: A Guide to Fighting Complexity

2025-06-17

This humorous guide to software development, written from the perspective of a "Grug" developer, offers practical strategies for combating complexity. Complexity is likened to a demonic force invading the codebase. The author advocates for saying "no" to unnecessary features and abstractions, emphasizing the 80/20 rule (delivering 80% of value with 20% of code). Key strategies include proper code factorization, strategic refactoring, effective testing, and tooling. The article is a witty and insightful read offering valuable lessons for developers of all levels.

Development Complexity

Bridging Formal and Informal: DSL Design in the Age of LLMs

2025-06-17

This post explores a novel direction at the intersection of DSLs and LLMs: designing DSLs that integrate seamlessly with LLM-based coding workflows. The author details their experience using LLMs to generate scripts, finding that LLMs excel at creating 'glue code' – filling in the boilerplate based on natural language descriptions, while leaving the complex logic to manual coding. This experience prompts a key question: how can we incorporate this LLM-assisted workflow into DSLs themselves? The ultimate goal is to bridge the gap between formal code and informal natural language specifications, potentially by automatically generating natural language specs based on DSL type analysis.

Development

Xlibre: A Modern Xorg Fork Challenges Wayland's Dominance

2025-06-17

Wayland, touted as a modern replacement for Xorg, faces criticism for its incomplete functionality and forceful adoption. It struggles in crucial areas like remote desktop, custom keyboard bindings, and legacy software support. This raises concerns within the open-source community as Wayland's shortcomings impact user experience, especially for those with disabilities. In response, Xlibre, a fork of Xorg, aims to modernize Xorg and provide a complete and stable alternative. Xlibre offers a glimmer of hope for the Linux desktop, but its success in challenging Wayland remains to be seen.

Development

I Set Up a BitTorrent Tracker and This Happened...

2025-06-17

Noticing many BitTorrent trackers were dead, the author had a curious idea: buy a defunct domain, set up a tracker, and see what happens. The result? Millions of peers flooded in! This highlighted the centralized risks of the BitTorrent protocol and the legal gray area of trackers regarding copyright. While the tracker itself might not constitute 'inducement' to infringe, the author shut it down out of caution.

Development tracker

COSIG: Open-Source Guides for Post-Publication Peer Review

2025-06-17

COSIG is an open-source project offering a collection of guides created by publication integrity experts. These guides empower anyone to participate in post-publication peer review, even without specialized knowledge. Currently hosting 28 guides categorized by field (biology, materials science, computer science, etc.), COSIG provides resources for identifying image manipulation, analyzing data, verifying citations, and more. Become a steward of scientific literature with COSIG.

(osf.io)
Development scientific literature

arXivLabs: Experimental Projects with Community Collaborators

2025-06-17
arXivLabs: Experimental Projects with Community Collaborators

arXivLabs is a framework that lets collaborators develop and share new arXiv features directly on the website. Individuals and organizations working with arXivLabs 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. Have an idea to enhance the arXiv community? Learn more about arXivLabs.

Development

Wayland's Fragmentation: A Cross-Desktop Compatibility Nightmare

2025-06-17

Wayland's design omits basic functionality enjoyed by X11, Windows, and macOS applications for decades—like window positioning and mouse cursor control. This wasn't an oversight; it was intentional. Further compounding the issue is fragmentation: GNOME, KDE, and other compositors interpret Wayland protocols differently. Application developers can't rely on consistent implementations, leading to unsustainable support burdens, especially for niche applications on already-fragmented Linux. Worse, these problems reside in Wayland protocols, window managers, and compositors—beyond the reach of application developers. We hope the Wayland ecosystem matures, but we aren't there yet.

Blazing Fast Concurrent Hash Map for Go: cmapv2

2025-06-17
Blazing Fast Concurrent Hash Map for Go: cmapv2

This article introduces cmapv2, a high-performance concurrent hash map library for Go. Leveraging the MurmurHash algorithm, it offers both regular and sharded map types for various concurrency needs. Example code demonstrates initialization, insertion, retrieval, and deletion of key-value pairs. The article also details performance testing using `go test` and `pprof` for CPU and memory profiling.

Development Concurrent HashMap

arXivLabs: Experimental Projects with Community Collaborators

2025-06-17
arXivLabs: Experimental Projects with Community Collaborators

arXivLabs is a framework that lets collaborators develop and share new arXiv features directly on our website. Individuals and organizations working with arXivLabs embrace our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners who share them. Have an idea for a project that will benefit the arXiv community? Learn more about arXivLabs.

Development

ARIA: A Powerful Tool for Web Accessibility, and Its Pitfalls

2025-06-17
ARIA: A Powerful Tool for Web Accessibility, and Its Pitfalls

This article delves into the role of ARIA (Accessible Rich Internet Applications) in web accessibility, exposing common misconceptions. ARIA isn't a silver bullet; it supplements native HTML elements, providing additional information for assistive technologies like screen readers to enhance interactivity, purpose, and state understanding. The article covers ARIA's history, usage rules, its grammatical structure (roles, states, and properties), and challenges in real-world application, such as varying assistive technology support and ARIA attribute misuse. The author advocates prioritizing semantic HTML, using ARIA judiciously, and emphasizes manual testing to ensure correctness and effectiveness. Ultimately, the article connects ARIA usage with care for disabled people, urging developers to prioritize accessibility and build a more inclusive web.

Codecov's Mandatory AI Feature Sparks User Concerns

2025-06-17
Codecov's Mandatory AI Feature Sparks User Concerns

A new AI feature in Codecov has sparked user concern due to the lack of a disable option. Users worry about Codecov illicitly training AIs on their code or inserting infringing code without permission. They demand a permanent, clear way to disable AI functionality across all their organizations and a guarantee that AI won't be used for code coverage analysis.

Development

WireGuard: 1Gbps Network Saturation Achieved

2025-06-17

The author previously assumed encryption was too slow to achieve network saturation, even on Gigabit Ethernet. However, recent testing revealed WireGuard, running on readily available servers (Xeon E-2226G), readily saturated a 1Gbps network without special tuning, exhibiting low CPU usage. This challenged the author's assumptions about encryption speed, suggesting many methods could theoretically saturate a 1Gbps link, and highlighting potential performance tuning needs for existing VPN servers.

faynoSync: Automated Client Application Update API Server

2025-06-17
faynoSync: Automated Client Application Update API Server

faynoSync is a Go-based API server for automatically updating client applications. Upload your app to S3, set the version number, and clients check for updates. If a newer version exists, the server returns an update link, prompting a client alert. It supports background and on-demand updates, with full documentation, a frontend dashboard, and example client applications. Deployment involves setting environment variables, simplified with Docker, and extensive unit tests ensure functionality.

AI Code Assistants: Blessing or Curse?

2025-06-17
AI Code Assistants: Blessing or Curse?

AI coding assistants are becoming increasingly sophisticated, generating clean and efficient code. However, this can lead to 'premature closure,' where developers are seduced by seemingly perfect solutions and overlook deeper issues. The article uses a medical analogy, comparing AI to experienced doctors who might miss a rare condition due to their experience. The author advises developers to critically evaluate AI suggestions, actively explore multiple solutions, and avoid falling into the trap of quick fixes to improve code quality and prevent accumulating technical debt.

Development

The Humble Programmer: Reflections on Software Crisis and the Future of Programming

2025-06-17

This essay is a transcript of Edsger W. Dijkstra's renowned 1972 lecture, exploring the early days of programming and the escalating software crisis. Dijkstra recounts the initial lack of recognition for programming as a profession, and how the exponential increase in computer power led to a corresponding explosion in software complexity, culminating in the software crisis. He argues that the solution lies in a paradigm shift in programming methodologies, advocating for 'intellectually manageable programs' and stressing the importance of program correctness proofs, while warning against overly complex programming languages. He expresses confidence that improved languages, more structured programming approaches, and a focus on correctness will dramatically enhance software quality and development efficiency.

Building Accessible UIs: It's Not Just Moral, It's Efficient

2025-06-17
Building Accessible UIs: It's Not Just Moral, It's Efficient

This article argues for accessible UI design not from a moral standpoint, but from a practical one. The author details several benefits: improved debuggability (semantic HTML makes code easier to understand), better naming conventions (ARIA attributes provide standardized names), enhanced testability (semantic testing is more robust), and a superior user experience, especially for keyboard users. The author contends that building accessible UIs isn't difficult and offers numerous advantages, urging developers to prioritize accessibility.

Development accessible UI
1 2 49 50 51 53 55 56 57 205 206