Category: Development

Design Pressure: The Invisible Hand Shaping Your Code

2025-05-25
Design Pressure: The Invisible Hand Shaping Your Code

Ever feel that gut feeling something's wrong in your code but can't pinpoint it? Hynek Schlawack's PyCon US 2025 talk explores 'design pressure,' the invisible force shaping your architecture. He delves into topics like coupling types, attractive nuisances in software design, and type-driven design, highlighting trade-offs in data mapping and typestate patterns. The talk also critically examines the impact of ORMs and async primitives on code complexity.

Development code architecture

Breaking Change: List API Filter Overhaul with Nested Expressions

2025-05-25
Breaking Change: List API Filter Overhaul with Nested Expressions

The List API has undergone a significant update, now supporting nested and complex filter expressions. This is a breaking change requiring users to update their client libraries. All clients have been updated to support the new syntax and assist in constructing nested filters. For raw HTTP users, the filter format changed from col[ne]=val to filter[col][$ne]=val, following QS conventions. For example, excluding a value range [v_min, v_max]: ?filter[$or][0][col][$gt]=v_max&filter[$or][1][col][$lt]=v_min. A new Swift client implementation has been added. The release version is now shown in the admin dashboard with a link to the release page. Dependencies have also been updated.

My 34-Key Keyboard: A Programmer's Journey to Efficiency

2025-05-25

This article details the author's creation of a 34-key split-ortholinear ergonomic keyboard called Ferricy, designed for enhanced programming efficiency. Building upon a Colemak base, the keyboard leverages three custom layers and ZMK combos. These layers include a navigation layer (remapping home row keys for Vim-like navigation), a symbol layer (mirroring a numpad layout), and a number layer. Home row mods and a clever 'caps-word' function streamline special character and capitalization handling. The author prioritizes accuracy and comfort over speed, resulting in a personalized keyboard perfectly tailored for their coding workflow.

React Photo Studio: Beta Launch of an Online Photo Editor

2025-05-25
React Photo Studio: Beta Launch of an Online Photo Editor

React Photo Studio is a web-based photo editing application currently in Beta. Many features are under active development. Developer Chase Manning welcomes contributions from interested individuals; check the contribution guide for details. This independent project is unaffiliated with any other photo studio products, brands, or companies. Any similarities to other products are purely coincidental and stem from common industry practices and technologies.

The Evolution of Unix Filename Length Limits

2025-05-25

Early Unix versions had surprisingly short filename limits: initially just 8 bytes, later increasing to 14. This was tied to Unix's simple directory structure design. The article delves into the directory structures of Unix V4 and earlier, explaining the reasons behind the filename length evolution and how 16-byte directory entries better fit 512-byte disk blocks. It also touches upon the limited number of inodes in early Unix, reflecting some of the hard-coded limitations of early systems.

Development

File Format Design and ZX Spectrum Game Dev Musings

2025-05-25

The author shares ten tips for designing file formats, covering checking existing formats, readability considerations, using a chunked structure, allowing partial parsing, versioning, writing a specification document, and more. He then details the process of developing a ZX Spectrum fishing game called "Deep Fishing," from design document to code implementation, including asset conversion, pixel drawing, random function usage, and audio design. Furthermore, the author shares his thoughts on playing through the Mass Effect trilogy, and outlines his new year's resolutions, including studying math, exercising, and updating the SoLoud library.

Development file format design

GitHub Org Scraper Scripts

2025-05-25
GitHub Org Scraper Scripts

This suite of scripts scrapes GitHub for organization information, ultimately producing a TSV file containing the organization name, URL, location, and star counts of selected repositories. `get_all_orgs.sh` fetches a list of all GitHub organizations; `get_orgs_tsv.py` scrapes data for each organization and outputs a TSV; `sorry.sh` handles GitHub's rate limiting policy, requiring users to manually reset their IP address.

Development scraper

Running Windows NT 4 Server in Proxmox: A Retro Guide

2025-05-25
Running Windows NT 4 Server in Proxmox: A Retro Guide

This blog post provides a comprehensive guide on installing Windows NT 4 Server within a Proxmox virtual environment. It details crucial VM settings, including the correct CPU type, memory allocation, SCSI controller selection, and network adapter configuration. The author addresses common installation hurdles such as installing SCSI drivers, configuring mouse drivers, and enabling high-resolution display support. The step-by-step instructions, accompanied by screenshots, simplify the process. The end result is a fully functional Windows NT 4 Server virtual machine, allowing users to experience this classic OS.

Development

30x Speedup of a Pointless C++ Game on a GPU

2025-05-24
30x Speedup of a Pointless C++ Game on a GPU

The author attempted to port a C++ program for playing the card game "Beggar My Neighbour" to a GPU for acceleration. Initially, GPU performance lagged far behind the CPU. Using the Nvidia Nsight Compute tool, the author identified thread divergence and memory access speed as bottlenecks. By transforming the algorithm into a state machine structure, and optimizing with lookup tables and shared memory, a 30x performance improvement was finally achieved, reaching 100 million game plays per second. The article details the optimization process and challenges encountered, offering valuable insights into GPU programming practices.

Development

Reinventing the Wheel: A Path to Deeper Understanding

2025-05-24
Reinventing the Wheel: A Path to Deeper Understanding

This article challenges the common advice against reinventing the wheel. The author argues that building toy versions of existing tools (protocols, cryptography, web servers, etc.) is the best way to truly understand their underlying principles. Even imperfect implementations provide invaluable learning experiences, revealing flaws and limitations in established solutions. This approach, applicable beyond computer science, encourages hands-on experimentation, starting small, iterating, and ultimately leading to profound understanding and practical expertise. The key takeaway: reinvent for insight, reuse for impact.

Development

Ramoops: Persistent Logging for Embedded Systems

2025-05-24
Ramoops: Persistent Logging for Embedded Systems

Embedded systems aren't immune to crashes. To analyze and log these crashes, a persistent storage solution is crucial. Ramoops provides this by leveraging a reserved RAM area to store kernel oops messages, kernel console output, and user messages. While RAM data is lost on power loss, it offers faster write speeds and is almost always available while the CPU is running. This article details configuring and using Ramoops on a Toradex Apalis iMX8QM system, covering device tree modification, kernel compilation, and reading log files from pstore. It demonstrates logging kernel panics and user messages, aiding in diagnosing system crashes.

Development crash logging ramoops

Mysterious `runtabloid` Program: Huge Performance Discrepancy

2025-05-24
Mysterious `runtabloid` Program: Huge Performance Discrepancy

The `runtabloid` program exhibits a striking performance difference when processing different programs. Running the `prog` program yields an almost instantaneous result of 110. However, running `fibo` and `fibo2` (both calculating Fibonacci numbers) takes a significantly longer time, 27.589 seconds and 56.749 seconds respectively. What is the secret behind this disparity? Is it algorithmic inefficiency, or are there differences in program design leading to such a massive performance gap? Further analysis of the code and execution flow might reveal the answer.

Firefox 138: A Revamped Address Bar for Seamless Browsing

2025-05-24
Firefox 138: A Revamped Address Bar for Seamless Browsing

Firefox 138 boasts a significantly upgraded address bar designed for enhanced speed and ease of use. Users can now easily switch between search engines, maintain visibility of their search queries, and utilize keywords like @bookmarks, @tabs, and @history for quick access to bookmarks, tabs, and history. Directly executing commands like 'clear history' is now possible from the address bar. Simplified URLs and clearer security indicators improve clarity. This update focuses on user experience and productivity, making Firefox a more powerful and intuitive browser.

Senior Engineers Share Their LLM Workflow Hacks

2025-05-24
Senior Engineers Share Their LLM Workflow Hacks

This article compiles insights from senior engineers on practically using Large Language Models (LLMs) in their daily work. Rejecting hype, it focuses on real-world applications. Key takeaways include the "second opinion" and "throwaway debugging scripts" techniques, the importance of prompt documentation, and the need to view LLMs as helpful tools rather than magic bullets. These experienced engineers offer valuable lessons for developers looking to integrate LLMs efficiently into their workflow.

Development

arXivLabs: Experimenting with Community Collaboration

2025-05-24
arXivLabs: Experimenting with Community Collaboration

arXivLabs is a framework for 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. Have an idea to enhance the arXiv community? Learn more about arXivLabs.

Development

GitHub Copilot's Hilarious Fail: Is AI Ready to Replace Developers?

2025-05-24
GitHub Copilot's Hilarious Fail:  Is AI Ready to Replace Developers?

Reddit unearthed the funniest tech story of the week, highlighting the flaws in the AI narrative. GitHub Copilot, given access to make pull requests on Microsoft's .NET runtime, repeatedly submitted broken code, requiring human developers to constantly fix its mistakes. This comical situation underscores the reality that while AI boosts productivity, it's far from perfect. The author argues that some companies are using AI as a cover for pandemic-era over-hiring and subsequent cost-cutting, rather than admitting poor planning. The article advises developers to become AI experts, document AI's limitations, and publicly share their experiences to demonstrate the power of human-AI collaboration.

(nmn.gl)
Development

F2: Blazing Fast Command-Line Batch Renamer

2025-05-24
F2: Blazing Fast Command-Line Batch Renamer

F2 is a cross-platform command-line tool for quickly and safely batch renaming files and directories. It boasts a dry-run default for previewing changes, support for file attributes (like EXIF and ID3 tags) for flexible renaming, comprehensive options including string replacement and regular expressions, automatic conflict resolution, and undo functionality. Go developers can install with `go install github.com/ayoisaiah/f2/v2/cmd/f2@latest`; others can download pre-compiled binaries. Bug reports and feature requests are welcome!

Development batch renaming

far: Lightning-Fast Find and Replace CLI Tool

2025-05-24
far: Lightning-Fast Find and Replace CLI Tool

far (Find And Replace) is a fast and flexible command-line tool for searching and replacing text across files and folders. It targets specific files, directories, or glob patterns, and boasts smart casing support (e.g., Foo → Bar, FOO → BAR), inspired by Sublime Text's find and replace functionality. Installation is straightforward: clone the GitHub repo and build. For example, `far --find "Foo" --replace "Bar" --target "./src/**/*.rs"` replaces "Foo" with "Bar" in all .rs files within the src directory. Licensed under the Apache-2.0 License, contributions and suggestions are welcome.

RHEL 10: AI-Powered, Secure, and Developer-Friendly

2025-05-24
RHEL 10: AI-Powered, Secure, and Developer-Friendly

Red Hat's new Enterprise Linux 10 release is packed with features. It includes Lightspeed, an AI-powered assistant for streamlined system administration; enhanced security with post-quantum cryptography support; a new image mode for simplified container management; upgrades to the latest versions of popular developer tools (Python, Ruby, Node.js, etc.); and improvements to the installer and web console. RHEL 10 is a future-proof enterprise Linux distribution focused on security, ease of use, and developer productivity.

Development

Terminator: The AI Coding Assistant Guardian Angel

2025-05-24
Terminator: The AI Coding Assistant Guardian Angel

Tired of AI coding assistants like Cursor being interrupted by stuck command loops? Terminator, a powerful AppleScript-driven terminal session manager, solves this problem! It achieves process isolation by running commands in separate terminal sessions, keeping your AI assistant responsive even with hanging commands. Terminator creates and manages persistent terminal sessions, isolates command execution, intelligently interrupts busy processes, and provides reliable session state management. With simple commands, you can easily train your AI assistant to use Terminator, boosting efficiency and avoiding frustrating workflow interruptions.

DumPy: A Simpler Array Language for GPUs, Ditching the NumPy Brain Drain

2025-05-24
DumPy: A Simpler Array Language for GPUs, Ditching the NumPy Brain Drain

The author criticizes NumPy's complexity and inefficiency in handling higher-dimensional arrays, particularly its intricate broadcasting and indexing rules, forcing programmers to constantly think about array shapes and function behaviors. To address this, they propose DumPy, a simpler array language that leverages the syntax of loops and indices, secretly compiling them into vectorized operations for GPU acceleration, thereby avoiding the complexities introduced in NumPy to circumvent slow loops. DumPy's core idea is to map dimensions to labels and use JAX's `vmap` function for vectorization, simplifying code and boosting efficiency. The author provides examples comparing DumPy, NumPy, JAX, and pure loops, demonstrating DumPy's superior conciseness and performance.

Development

SuperUtilsPlus: A Superior Utility Library Beyond Lodash

2025-05-24
SuperUtilsPlus: A Superior Utility Library Beyond Lodash

SuperUtilsPlus is a powerful JavaScript utility library that surpasses Lodash in performance, TypeScript support, and developer experience. It supports ES2020+, boasts full ESM and CommonJS support, and is tree-shakable, importing only what's needed. Offering more utility functions than Lodash, SuperUtilsPlus is optimized for speed and efficiency and works seamlessly in browsers and Node.js. Its features include array manipulation (chunk, flatten, groupBy), object manipulation (get, deepClone), string manipulation (camelCase), function manipulation (debounce), and type checking, all with full TypeScript type definitions for type safety.

Development Utility Library

lnk: Effortless Git-Native Dotfile Management

2025-05-24
lnk: Effortless Git-Native Dotfile Management

lnk is a minimalist command-line tool for managing your dotfiles. It moves your dotfiles to ~/.config/lnk, creates symlinks back to their original locations, and lets you use Git for version control without the hassle of manual symlinking and conflict resolution. Install via curl, Homebrew, or manual download. Simple commands add, remove, sync, and manage your dotfiles. Import from existing Git repos, handle file moves, relative symlinks, and conflicts with ease. Make dotfile management simple and efficient.

Development

Lessons Learned: Two Years as Carta's CTO

2025-05-24
Lessons Learned: Two Years as Carta's CTO

Reflecting on his two-year tenure as Carta's CTO, the author shares key learnings in engineering strategy, LLM adoption, and organizational management. He discusses refining his leadership style to delve deeper into details, writing a book on engineering strategy, successful LLM implementation at Carta for internal workflows and new product features, and the impactful 'Navigator' program for increased senior engineer involvement. He also details strategies for managing engineering costs and effectively communicating R&D investments to boards.

Ultimate List of Text-to-Diagram Tools

2025-05-24
Ultimate List of Text-to-Diagram Tools

This is a comprehensive list of text-to-diagram tools, covering various diagram types such as flowcharts, sequence diagrams, and class diagrams. These tools require no download or installation; use them directly in your browser. The list is ordered roughly by recency and similarity, making it easy to find the right tool for your needs.

Beyond Root Cause Analysis: Resilience Engineering for Complex System Failures

2025-05-24
Beyond Root Cause Analysis: Resilience Engineering for Complex System Failures

This article critiques the limitations of Root Cause Analysis (RCA) in analyzing complex system failures, arguing that its flawed causal chain model fails to effectively address failures caused by the interaction of multiple factors in complex systems. The author proposes Resilience Engineering (RE) as an alternative. RE focuses on interactions between system components rather than single causes. RE acknowledges that systems always contain numerous latent failures; success lies in the system's adaptive capacity and fault tolerance. By understanding how the system adapts and copes with failures, rather than simply eliminating root causes, continuous improvement and increased system resilience are achieved.

Algebraic Effects: The Future of Programming Languages?

2025-05-24
Algebraic Effects: The Future of Programming Languages?

This article delves into the use of algebraic effects (effect handlers) in programming languages. Algebraic effects are a powerful mechanism that allows for implementing various language features such as exceptions, generators, and asynchronous operations as libraries, enhancing code composability. Using examples in Ante, the article demonstrates how algebraic effects can implement exception handling, generators, and coroutines, and how they can be leveraged for dependency injection, cleaner API design, and replacing global variables. Furthermore, algebraic effects can improve code purity, enhance replayability, and boost security. While efficiency concerns exist, advancements in compilation techniques suggest algebraic effects are poised to become a core feature in future programming languages.

Development algebraic effects

Mermaid.js: Diagram Creation Made Easy with Markdown

2025-05-24
Mermaid.js: Diagram Creation Made Easy with Markdown

Mermaid.js is a JavaScript-based diagramming and charting tool that uses Markdown-like text definitions to create and modify diagrams. It solves the problem of documentation falling behind development by allowing easy creation and modification of various charts including flowcharts, Gantt charts, and sequence diagrams. Even non-programmers can easily use the live editor to create complex visuals. Mermaid integrates with popular applications like GitHub and includes a sandboxed iframe for enhanced security.

Development Diagramming

VS Code's New Text Buffer: A Piece Tree Triumph

2025-05-23
VS Code's New Text Buffer: A Piece Tree Triumph

VS Code 1.21 boasts a brand-new, significantly faster and more memory-efficient text buffer implementation. The previous line-array-based approach struggled with large files, leading to out-of-memory crashes. The new implementation uses a Piece Tree—a structure combining multiple buffers and a red-black tree—resulting in greatly reduced memory usage and improved file opening and editing speeds. While random line access is slightly slower, real-world impact is minimal. This rewrite also avoids performance pitfalls encountered with a native C++ approach, highlighting the power of clever data structures and algorithms.

Development
1 2 77 78 79 81 83 84 85 214 215