Category: Development

The Messy State of TOTP: A Test Suite is Born

2025-03-02
The Messy State of TOTP: A Test Suite is Born

The current TOTP specification is riddled with inconsistencies. Major implementations by Google, Apple, and Yubico subtly disagree on its implementation, leading to idiosyncratic variants in various MFA apps. The official RFC is frustratingly vague. The author built a test suite to check if your favorite app correctly implements the TOTP standard, highlighting ambiguities in digit count, hash algorithm, time step, secret length, and labeling. The author calls for improved specifications to prevent future issues.

Development

Command-line VPN Tool: Parameter Breakdown

2025-03-02
Command-line VPN Tool: Parameter Breakdown

This is a command-line driven VPN tool. Users can specify the private network destination (-d), global routing (-g), local address (-l), remote server address (-s), server mode (-srv), client and server TUN device IPs (-tc, -ts), and TUN device name (-tname). Crucially, the server must be able to reach the private network; otherwise, packets will be lost.

Development

Devlands: Learn Git by Walking Through Your Codebase

2025-03-02
Devlands: Learn Git by Walking Through Your Codebase

Two years ago, the author released Git-Sim, a free and open-source tool to visualize Git commands. While successful, it only helped those already familiar with Git. This led to the creation of Devlands, a more immersive experience. Devlands transforms your Git repository into a voxel world where branches are hallways, commits are rooms, and you can explore your codebase by walking through it. It features a guided tutorial, and even includes an AI-powered code explainer, aiming to make learning and using Git accessible to everyone.

Development Git visualization

Firefox Alternatives? A Long-Time User's Dilemma

2025-03-02
Firefox Alternatives? A Long-Time User's Dilemma

A long-time Firefox user (20 years!), concerned by Mozilla's recent shifts towards advertising and AI, seeks a viable alternative browser. LibreWolf is considered but its reliance on Firefox is a concern. Debian's Firefox repository offers a potentially safer, albeit older, version, but requires constant setting checks. Standalone apps, Tor Browser, and the terminal-based browser 'links' are explored but fall short of complete needs. Ultimately, the user decides to stick with Firefox for now, monitoring its future direction.

Development

Robyn: A Rust-Powered Python Framework Promises Performance Breakthrough

2025-03-02
Robyn: A Rust-Powered Python Framework Promises Performance Breakthrough

After over a year working with a Rust-based open-source search engine, an engineer strongly advocates for rewriting software in Rust to boost performance. He praises Robyn, a Rust-powered Python framework, highlighting its impressive performance thanks to a multithreaded runtime built in Rust. He's confident Robyn will deliver significant performance gains for high-throughput applications and is excited to be an early supporter.

punktf: Cross-Platform Dotfiles Manager for Seamless Configuration

2025-03-02
punktf: Cross-Platform Dotfiles Manager for Seamless Configuration

Tired of managing different dotfiles for different systems? punktf solves this problem! This cross-platform dotfile manager works on Windows, Linux, and macOS, letting you compile and deploy dotfiles across multiple targets with a single command. It uses a Handlebar-like syntax for conditional compilation and variable insertion, and allows for pre/post-hooks to customize behavior. One configuration, consistent developer experience across all your machines!

Development dotfile manager

Beyond Frameworks: Mastering Frontend Development Requires Understanding the Fundamentals

2025-03-02
Beyond Frameworks: Mastering Frontend Development Requires Understanding the Fundamentals

Numerous articles advise developers against over-reliance on frameworks, advocating for a deep understanding of underlying languages. However, the real reason isn't the fleeting nature of frameworks; it's this: you can't master frontend development without understanding the underlying mechanisms. Modern frontend stacks often involve frameworks like React and numerous intermediary layers, with CSS applied indirectly via JavaScript tools. While these tools offer convenience, understanding the browser ecosystem makes debugging JavaScript and CSS errors, writing custom CSS, and understanding client-side browser errors significantly easier. The author shares anecdotes illustrating how seemingly complex frontend issues—multicolored footers, custom icons, and webfont optimization—are easily resolved with solid CSS and JavaScript knowledge, avoiding bloated npm dependencies. While most developers write excellent React and TypeScript code, few can judge CSS code quality, impacting website performance. Mastering browser and network fundamentals is crucial for building robust, maintainable applications and rapidly resolving incidents. Ultimately, deep language proficiency is key to becoming a senior frontend engineer.

Development frontend development

AlgoMIDI: A Musical Studio Powered by Cellular Automata and Graph Traversal

2025-03-02
AlgoMIDI: A Musical Studio Powered by Cellular Automata and Graph Traversal

AlgoMIDI is a virtual music studio built as a spiritual successor to Cellular Minimata. Instead of just visualizing cellular automata, each 'living' cell triggers a musical note. Using Vue 3, Vite, TypeScript, Web Audio API (via Tone.js), p5.js, and Cytoscape.js, AlgoMIDI lets you create music using Conway's Game of Life, graph traversal algorithms (BFS/DFS), and custom rules. Features include adjustable playback speed (60-240 BPM), a virtual piano displaying generated notes, and various layout options for visual representation. It's a unique approach to music composition.

Development

Browser Font Size Preferences: Debunking the 16px == 1em Myth

2025-03-02
Browser Font Size Preferences: Debunking the 16px == 1em Myth

This article explores the limitations of browser font size preferences and how to better achieve responsive typography. The author points out that the browser's default font size isn't always 16px, and simple pixel calculations based on em and rem units don't adapt to all user preferences. The article suggests abandoning pixel-based font size calculations, using the browser's default font size directly, and using the `clamp()` function with viewport units for responsive adjustments to provide the best reading experience on different screen sizes. A custom element-based solution is also proposed, allowing users to set personalized font sizes for different websites.

A 20-Year Programmer's Quest for Full-Stack Mastery

2025-03-02

A seasoned front-end engineer with two decades of experience, having journeyed through GW-BASIC, HTML, JavaScript, jQuery, EmberJS, and Angular, has yet to build a complete enterprise-level full-stack application. Now, seizing the opportunity presented by his company's shift to Blazor, he's embarking on a journey to learn C# and .NET, planning to systematically study enterprise application architecture, legacy code handling, and other relevant knowledge. His ultimate goal is to finally achieve his dream of full-stack development. This post documents his learning journey and shares his learning resources and methods.

Quitting Microsoft: Ethics Over Six Figures

2025-03-02

A software engineer who worked on Microsoft's Viva Insights, an employee monitoring tool, quit due to ethical concerns. Despite the high salary and prestige of working at a big tech company, he prioritized his values over income, choosing to live off dividend income and pursue his own IT startup, Fourplex. He'd rather work a less lucrative job or even flip burgers than participate in developing surveillance technology, highlighting a strong commitment to personal ethics over financial gain.

Development career choice

Python Pitfalls: A Java/C++ Programmer's Perspective

2025-03-01

This talk explores potential pitfalls in Python for programmers coming from Java or C++. The speaker highlights that Python's dynamic nature, runtime errors, and subtle differences in syntax and behavior compared to Java/C++ can lead to misunderstandings. For example, Python decorators are far more powerful than Java annotations; class body assignments create class variables, not instance variables; and Python has function scope, not block scope. The speaker suggests improving understanding of Python by learning other languages, listening to questions, and writing clearer, more straightforward code to avoid these pitfalls.

Development

A Robust and Efficient JSON Parser in Pure C

2025-03-01

This article details a JSON parser implemented entirely in C. Employing an object-oriented approach with functions attached to structs, it boasts improved readability and maintainability. Prioritizing safety, it avoids common memory leaks and segmentation faults. A clean, ergonomic API is provided, along with compilation instructions, usage examples, and best practices for C development, including compiler flags for robust code. The author demonstrates the use of variadic macros for inline JSON generation and efficient memory management techniques.

Development JSON Parsing

arXivLabs: Experimental Projects with Community Collaborators

2025-03-01
arXivLabs: Experimental Projects with Community Collaborators

arXivLabs is a framework enabling collaborators to develop and share new arXiv features directly on the website. Individuals and organizations involved embrace arXiv's values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners who adhere to them. Have an idea to enhance the arXiv community? Learn more about arXivLabs.

Development

Xcode's Constant Phone Home: A Privacy and Performance Nightmare

2025-03-01

Developer Jeff Johnson discovered that Xcode frequently connects to Apple servers during project builds, causing slowdowns. Using Little Snitch, he identified `developerservices2.apple.com` as the culprit; disabling connections to this domain dramatically improved build times. Further investigation revealed that Xcode also connects to other Apple servers, such as `devimages-cdn.apple.com` and `appstoreconnect.apple.com`, upon launch and project opening. These connections appear unnecessary and may involve the collection of developer data. Johnson argues that this behavior compromises developer privacy and recommends disabling unnecessary network connections.

Development

CPANSec Becomes a CVE Numbering Authority: Boosting Perl Ecosystem Security

2025-03-01

After years of development, the Perl ecosystem security group CPANSec has officially become a CVE Numbering Authority (CNA). This means CPANSec can now assign CVE identifiers to vulnerabilities in Perl and CPAN modules, enabling better tracking and management of security issues and further enhancing the security of the Perl ecosystem. This milestone marks a significant step forward for the Perl community in security.

Development Perl Security

Servo: A Lightweight, High-Performance Web Rendering Engine in Rust

2025-03-01
Servo: A Lightweight, High-Performance Web Rendering Engine in Rust

Servo is a high-performance web rendering engine written in Rust, supporting WebGL and WebGPU, adaptable to desktop, mobile, and embedded applications. Created by Mozilla Research in 2012, it aims to be a lightweight alternative for embedding web technologies and contributes to web standards. In 2020, Mozilla transferred stewardship to the Linux Foundation, and in 2023, Igalia joined and moved it to the Linux Foundation Europe. Funding will first cover infrastructure costs ensuring engine releases and Web Platform Tests integration, with any surplus allocated to further improvements and development, guided by the Servo Technical Steering Committee.

Development Web Rendering Engine

The Magic of the Text Editor Cursor: You Always Type Out of Range

2025-03-01
The Magic of the Text Editor Cursor: You Always Type Out of Range

Have you ever wondered why, in a text editor, the cursor always seems to sit at the end of a word, allowing you to add characters seamlessly? This is actually a clever illusion. This article explores the subtle relationship between cursor position and string ranges in text editors, using the metaphor of a 'rake and its prongs' to explain why you always type 'out of range'. It also provides an improved `NSRange` extension for more accurate handling of cursor insertion points.

Development

ChatGPT Hallucinates Non-Existent Rails Syntax

2025-03-01

A programmer sought help from ChatGPT for dynamically preloading associations in Rails. ChatGPT confidently suggested invalid syntax – a syntax the programmer himself had proposed (and dismissed) two years prior on a Rails forum. This humorous incident highlights how even powerful LLMs can 'hallucinate' when dealing with niche topics and insufficient context, behaving much like a junior developer blindly copying and pasting code.

Development

The AI Code Review Disconnect: Author Tools vs. Reviewer Tools

2025-03-01

Many engineering teams buy AI code review tools hoping to speed up the process, but often find they're not solving the core problem: senior engineers spending too much time reviewing pull requests. While these tools excel at improving code quality *before* review, they don't fundamentally change the reviewer's experience. The author argues that most tools are author-focused, not reviewer-focused. The ideal solution involves a combination of both: author-focused tools for pre-review improvements and reviewer-focused tools to streamline the actual review process itself.

Emacs Tree-sitter Syntax Highlighting: Semantic Code Coloring

2025-03-01
Emacs Tree-sitter Syntax Highlighting: Semantic Code Coloring

This blog post details an enhancement to Emacs's Tree-sitter syntax highlighting, moving beyond basic keyword coloring. The author demonstrates how to leverage Tree-sitter mode to achieve semantic-based highlighting of variable names, differentiating control flow keywords, type aliases, and import statements. By customizing the `treesit-font-lock-rules` function and utilizing the `treesit-inspect-mode` tool, precise control over highlighting rules is achieved, resulting in more intelligent and expressive code coloration. A follow-up post will explore heuristic highlighting based on commonly used variable names.

Development Syntax Highlighting

Servo: The Rust-based Web Rendering Engine Gets a New Lease on Life

2025-03-01
Servo: The Rust-based Web Rendering Engine Gets a New Lease on Life

Servo, a high-performance web rendering engine written in Rust, originally developed by Mozilla, has been transferred to the Linux Foundation Europe. Servo supports WebGL and WebGPU and is adaptable to desktop, mobile, and embedded applications. Its development has contributed to W3C and WHATWG standards. This donation will fund Servo's continued operation and development, covering infrastructure costs and future improvements.

Development Web rendering engine

A Decade of JavaScript Frameworks: From Chaos to Consolidation?

2025-03-01
A Decade of JavaScript Frameworks: From Chaos to Consolidation?

A decade on, JavaScript frameworks have evolved from small, lightweight options to large, feature-rich ecosystems. The rise of server-side rendering and improvements in browser APIs have enabled code sharing between client and server, leading to the emergence of 'meta-frameworks'. This post explores the strengths and weaknesses of popular frameworks like Next.js and React Router, advocating for simple, maintainable technology choices like a traditional React SPA with an Express API backend, or carefully chosen combinations depending on project needs (e.g., Fastify or NestJS for backend APIs, coupled with meta-frameworks for the UI). While framework choice remains abundant, the author suggests that recent improvements in the JavaScript ecosystem have significantly improved the developer experience.

Maestro: A Simple and Effective UI Testing Framework for Mobile and Web

2025-03-01
Maestro: A Simple and Effective UI Testing Framework for Mobile and Web

Maestro is a simple and effective UI testing framework for mobile and web applications. Built upon the lessons learned from Appium, Espresso, UIAutomator, and XCTest, Maestro boasts built-in tolerance for flakiness (handling unstable UI elements and taps) and delays (automatically waiting for content to load without `sleep()` calls). Its interpreted nature allows for blazing fast iteration, while its declarative YAML syntax simplifies test definition. A single binary makes setup a breeze. Check out docs.maestro.dev to get started.

Development testing framework

Rendering 1 Million Spheres with OpenGL and WASM: A Debugging Journey

2025-03-01

The author tackled a hiring challenge: rendering one million spheres using OpenGL. The project was then ported to WASM and WebGL to improve performance and accessibility. The article details two crucial mistakes: incorrectly mapping texture coordinates resulting in flattened spheres, and reusing VAOs causing rendering anomalies. The author successfully rendered the spheres and shares lessons learned and resource links.

Development

Tackling Dependency Management Challenges in Common Lisp's Metaobject Protocol

2025-03-01

This article details the author's experience tackling dependency management challenges while working on a Common Lisp library utilizing the Metaobject Protocol (MOP). Through a monitored-class example, the author demonstrates how to elegantly leverage CLOS's Dependent Maintenance Protocol to ensure that subclass monitoring functionality remains consistent even when superclasses are redefined. The article thoroughly explains the use of dependency wrappers and update-dependent methods to guarantee subclasses always inherit the latest monitoring capabilities, even after superclass redefinitions. This is a practical case study of efficient interactive development in Common Lisp, showcasing the language's powerful metaprogramming capabilities and its robust support for interactive development.

Development Metaobject Protocol

Vibe Coding: Build Apps Without Writing Code

2025-03-01
Vibe Coding: Build Apps Without Writing Code

Say goodbye to complex programming languages! This article explores 'vibe coding,' a revolutionary approach to software development powered by AI. Creators with minimal technical skills can build functional apps, websites, and tools in hours, not months. By simply describing the desired app, AI tools generate the code, debug issues, and iterate based on feedback. The article compares traditional coding, low-code platforms, and vibe coding, detailing the process and showcasing successful examples. Several AI-powered platforms are reviewed, along with limitations and strategies to overcome them. The article concludes by emphasizing the potential for creators to transform their businesses by building and selling tools directly to their audience.

Development no-code development

System76's COSMIC Alpha 6: A Polished Rust Desktop Environment

2025-03-01
System76's COSMIC Alpha 6: A Polished Rust Desktop Environment

System76 released COSMIC Alpha 6, a significant update to its Rust-based desktop environment. New features include Desktop Zoom for easy scaling, improved workspace management with intuitive window switching and dragging, and enhancements to the file manager, media player, and text editor. Numerous bug fixes boost performance and stability. Alpha 6 also optimizes fonts, memory management, and CPU usage for a smoother experience.

Development

From 'Magic' to 'Duh': A Developer's Journey

2025-03-01

The author shares their programming journey, comparing the initial bewilderment of facing complex technologies to the helplessness of staring at a grand building. Initially, compilers and operating systems seemed mystical, but with accumulated experience, the author gradually understood the underlying principles, such as the implementation of compile-time computation in Go. By exploring Go's compile-time computation feature, the author understood its ingenious implementation mechanism and even contributed to it, although they later discovered some features were unnecessary. The article encourages developers to delve deeper, unveil the mystique of technology, and continuously improve their abilities.

Online Dictionary of Affixes: 1250+ Entries

2025-03-01
Online Dictionary of Affixes: 1250+ Entries

This online dictionary boasts over 1250 entries, each illustrated with roughly 10,000 examples and clear definitions. It's based on the book *Ologies and Isms: Word Beginnings and Endings*, originally published by Oxford University Press in 2002. The book went out of print in 2008, prompting the author to make it freely available online. The site is currently undergoing revisions and updates.

Development dictionary affixes
1 2 148 149 150 152 154 155 156 214 215