Category: Development

Rethinking Event-Driven Programming: A Bidirectional Observer Pattern in PHP

2025-09-01
Rethinking Event-Driven Programming: A Bidirectional Observer Pattern in PHP

Traditional observer patterns are observer-centric: events trigger passive reactions. This PHP Observer package shifts the perspective to the emitter. Emitters dispatch signals (events, plans, inquiries, commands), and observers can return counter-signals, creating a bidirectional dialogue. This allows for dynamic handling of complex workflows, such as canceling orders based on inventory or dynamically configuring libraries. The package offers seven signal types, robust error handling, and observability features, making it ideal for building responsive, emitter-driven applications.

C++20's Strongly Happens Before: Untangling the Memory Model

2025-09-01

This article delves into C++20's newly introduced "strongly happens before" relationship, which solves a tricky problem within the C++ memory model. Using a simple multithreaded program example, the author progressively explains how modification order, coherence ordering, and the "strongly happens before" relationship constrain the order of concurrent execution. The article also analyzes why certain executions seemingly violating the C++ memory model are allowed on Power architectures and explains how "strongly happens before" fixes these inconsistencies, ultimately guaranteeing a single total order for all `memory_order::seq_cst` operations.

Development

Senior Devs Embrace AI Code, But Efficiency Gains Aren't Always Smooth Sailing

2025-09-01
Senior Devs Embrace AI Code, But Efficiency Gains Aren't Always Smooth Sailing

A Fastly survey reveals senior developers are more likely to use AI-generated code than junior developers, with over half of their shipped code originating from AI. While AI can significantly boost coding speed, senior developers also spend more time fixing AI-generated errors, offsetting some time savings. The survey also uncovers the hidden costs of AI coding: high energy consumption and potential vulnerabilities. Despite this, AI still improves developer job satisfaction.

Development

Open Source's Unsung Heroes: Hobbyist Maintainers Carrying the Weight

2025-09-01
Open Source's Unsung Heroes: Hobbyist Maintainers Carrying the Weight

This podcast explores the massive disconnect between the corporate world consuming open source and the hobbyist community producing it. The conversation reveals this isn't a new problem, but a long-standing reality whose security, stability, and future software consequences we're only now confronting. Data suggests a significant portion of actively used open source code is maintained by unpaid or part-time hobbyists, a discrepancy often overlooked by corporations. The discussion emphasizes understanding the constraints and needs of these hobbyist maintainers to find effective solutions, rather than simply throwing money at the problem.

Development hobbyist contributors

One Big Server: Rethinking Microservices and the Cloud

2025-09-01
One Big Server: Rethinking Microservices and the Cloud

This article challenges the prevailing wisdom of microservices, arguing that today's powerful servers often make a single, large server architecture more cost-effective. It details the capabilities of a modern server, comparing the costs of cloud, self-hosted, and rented options. The author contends that for most web services, a high-performance server (plus a backup) suffices, unless extreme QPS or burstiness is involved. The complexities and costs of cloud-native architectures often outweigh their benefits. Vertical scaling (upgrading a server) is often more efficient than horizontal scaling (adding servers), prompting a re-evaluation of conventional wisdom.

Development server architecture

C++ Modules: A Broken Promise?

2025-09-01

This article takes a pessimistic view on the progress of C++ modules. The author argues that if C++ modules cannot demonstrate a 5x (preferably 10x) compilation speedup across multiple existing open-source codebases, they should be abandoned. The article highlights the challenging development journey, citing the tight integration required between compilers and build systems as a major hurdle. The author emphasizes that the focus should be on improving compilation speed rather than addressing relatively rare issues like macro leakage. He recounts the standardization process, pointing out underestimation of implementation difficulties. Finally, the author suggests an alternative approach – `import std` – while acknowledging its limited potential for improvement.

Spotilyrics: Code with Synced Spotify Lyrics in VS Code

2025-09-01
Spotilyrics: Code with Synced Spotify Lyrics in VS Code

Tired of juggling coding and remembering lyrics? Spotilyrics, a VS Code extension, seamlessly syncs your Spotify lyrics right into your editor. Color-themed from your album art, the lyrics appear in a smooth side panel, letting you code on one side and enjoy the music on the other. A simple one-time login with your Spotify Client ID is all it takes. Boost your coding vibe and productivity—install it now!

Development

Process Monitor for Linux (Preview) Released

2025-09-01
Process Monitor for Linux (Preview) Released

Microsoft has released a Linux version of Process Monitor (Procmon), a powerful system call tracing tool similar to the Procmon in the Sysinternals suite for Windows. It allows developers to conveniently trace syscall activity on Linux systems. The tool supports command-line options to monitor specific processes and syscalls, with the option to save results to a database file. Developers can also contribute to the project on GitHub, fixing bugs and adding new features.

Development

Ultrassembler: A Blazingly Fast RISC-V Assembler Library

2025-08-31

Ultrassembler is a super-fast RISC-V assembler library, achieving speeds over 10 times faster than GNU as and 20 times faster than llvm-mc. This incredible performance is due to a combination of optimizations: leveraging C++ exceptions (zero-overhead in ideal cases), employing efficient data structures, using pre-allocated memory pools to eliminate syscalls, and implementing value speculation, clever search algorithms, compile-time templates, and code generation. These optimizations not only improve user experience but also open possibilities for low-cost RISC-V scripting in applications like games or JIT compilers.

Development

C Legend Kernighan: Rust is a 'Pain', Unlikely to Replace C

2025-08-31
C Legend Kernighan: Rust is a 'Pain', Unlikely to Replace C

At 83, Brian Kernighan, co-author of the seminal C programming language book, shared his candid thoughts on Rust. In a recent interview, he described his single Rust program experience as 'painful', citing difficulty understanding its memory safety mechanisms and slow compilation/execution speeds. He criticized the complexity of Rust's ecosystem, including 'crates and barrels'. While acknowledging potential bias from limited experience, he doubts Rust will replace C anytime soon. The interview also covered his perspectives on Linux distributions, HolyC, the current software landscape, and advice for aspiring programmers, emphasizing passion and pursuing engaging work.

Development

Revolutionizing Kernel Programming with eBPF: A Hands-on Tutorial

2025-08-31
Revolutionizing Kernel Programming with eBPF: A Hands-on Tutorial

eBPF is a revolutionary technology that lets you run sandboxed programs within the Linux kernel without modifying the kernel source code. This tutorial uses a simple firewall example to demonstrate how to monitor and block traffic from a specific IP address using eBPF. The guide includes Python and C code examples, showing how to leverage eBPF's efficiency and capabilities for network monitoring and security. Learn how to build a packet counter and firewall using eBPF today!

Development kernel programming

Conquering ADHD: Strategies and Tactics

2025-08-31
Conquering ADHD: Strategies and Tactics

This post delves into managing ADHD, divided into 'Strategies' and 'Tactics'. 'Strategies' focus on high-level control systems such as medication, memory management, energy allocation, and introspection. 'Tactics' list micro-level improvements, including task selection, visual field management, regular project check-ins, and inbox management. The author emphasizes medication as a first-line treatment for ADHD and shares practical tips based on personal experience, guiding readers to build efficient personal growth systems and ultimately conquer ADHD.

Development

Beginner-Friendly Jujutsu Version Control Tutorial

2025-08-31

This tutorial introduces the Jujutsu version control system, requiring no prior experience with Git or other VCS. Structured into levels, it progresses from basic solo use to collaboration and advanced techniques. An example repository and reset script aid learning and progress resets. Even if you're familiar with Git, this tutorial offers an easier path to mastering Jujutsu.

Development

Senior Devs Embrace AI Coding More Than Juniors: A Fastly Survey

2025-08-31
Senior Devs Embrace AI Coding More Than Juniors: A Fastly Survey

A recent Fastly survey of 791 US developers reveals a surprising trend: senior developers (10+ years experience) are more than twice as likely to use AI code generation tools like Copilot and generate over half their code with them, compared to junior developers. This isn't due to laziness, but rather the diverse responsibilities of senior roles. AI helps them prototype faster, though more time is needed for bug fixing. While most senior devs find AI boosts efficiency and enjoyment, juniors prefer traditional coding and are less concerned with energy consumption. The survey highlights the experience advantage in spotting AI-generated errors. Overall, AI coding tools are making the job more enjoyable for over 70% of all respondents.

Development code generation tools

Can Databases Replace Caches Entirely?

2025-08-31

This post explores the possibility of databases completely replacing caches. While databases offer some caching capabilities like buffer pools and read replicas, caches excel at low-latency data access, especially for specific data subsets and pre-computed data. To replace caches, databases need to address several challenges: efficiently handling numerous read replicas, enabling partial read replicas, prioritizing specific data, and implementing efficient incremental view maintenance (IVM). The author suggests that combining IVM with partial read replicas might eventually allow databases to partially replace caches, but a gap remains.

(avi.im)
Development read replicas

AI Coding Assistants: Empowerment or Threat?

2025-08-31
AI Coding Assistants: Empowerment or Threat?

The author explores the impact of AI coding assistants through personal experience. Initially feeling disheartened about AI replacing programmers, weeks of use revealed AI assistants not only boost coding efficiency but also offer new learning opportunities and creative workflows. However, this experience also brings contradictions: control over AI code, responsibility for bugs, and anxieties about programmers' self-worth. The author concludes AI assistants aren't simply threats or boons, but complex emotional experiences ultimately enhancing the joy of coding, like a human-speaking programming partner.

Development

arXivLabs: Experimental Projects with Community Collaborators

2025-08-31
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 partners with those who share them. Got an idea for a project that will benefit the arXiv community? Learn more about arXivLabs!

Development

C++ shared_ptr's Non-Atomic Reference Counting: A Microbenchmark Surprise

2025-08-31
C++ shared_ptr's Non-Atomic Reference Counting: A Microbenchmark Surprise

A microbenchmark comparing Rust and C++ data structures revealed unexpected behavior in C++'s `shared_ptr`. In single-threaded environments, GNU libstdc++ optimizes `shared_ptr`'s reference counting to be non-atomic if `pthread_create` isn't imported. This performance optimization, while generally safe, can lead to issues in uncommon scenarios, such as when a dynamically linked library is loaded by a statically linked program. The author investigated other C++ implementations (libcxx and Visual C++) and ultimately resolved the performance discrepancy by referencing `pthread_create` in their benchmark. The discovery highlights the complexities of low-level optimizations and their potential unintended consequences.

Development

Sniffly: A Local Dashboard for Analyzing Claude Code Logs

2025-08-31
Sniffly: A Local Dashboard for Analyzing Claude Code Logs

Sniffly is a locally-run tool that analyzes your Claude Code logs to help you improve your usage. It identifies errors made by Claude Code, allowing you to learn from mistakes and share your instructions with coworkers. Sniffly features a shareable dashboard showing project stats and instructions, with customizable options like port and auto-browser settings. All data processing is local, ensuring privacy and security.

Development local tool

Manage Your Dotfiles with Just Git

2025-08-31

Tired of complex dotfile managers like chezmoi, stow, and yadm? This article shows you how to use Git to manage your dotfiles with simplicity. Create a Git repository in your home directory, ignore all files with a `.gitignore`, and then force-add the files you want to track (e.g., `~/.bashrc`). Use `git add -f` or create an alias like `track-file` for easy tracking and syncing across machines. Handle machine-specific configurations with simple hostname checks in your main dotfiles. Ditch the extra tools and manage your dotfiles efficiently with Git!

Development

Hugo: My Static Site Generator Nightmare

2025-08-31

I used to love Hugo, a static site generator, for its speed, simplicity, and ease of use. However, with continuous updates, it's become increasingly complex and has repeatedly broken backward compatibility. My recent attempt to write a blog post resulted in Hugo updates causing my site build to fail, costing me hours of troubleshooting. I don't care about Hugo's internals; I just want a working blog. Therefore, I'm abandoning Hugo, seeking alternatives, and plan to compile an older, unchanging version myself.

Bitwig Studio 6 Beta Focuses on Editing and Automation

2025-08-31
Bitwig Studio 6 Beta Focuses on Editing and Automation

Bitwig Studio 6 beta is out now, focusing on enhancing editing and automation workflows rather than AI or gimmicky features. New features include an Automation Mode, improved editing gestures, automation clips, project-wide key signatures, and a refreshed UI. This update delivers significant improvements to the editing experience, addressing long-standing requests from engineers and users.

Development Editing Automation

Saying Goodbye to Static Config Files: How Cloud Life Halved Infrastructure Delivery Times

2025-08-31
Saying Goodbye to Static Config Files: How Cloud Life Halved Infrastructure Delivery Times

Cloud Life, using System Initiative (SI), eliminated static configuration files, cutting infrastructure delivery times by over half. The article details their transition from a traditional Terraform, config repos, PR reviews, and CI/CD workflow. SI's real-time visualization and collaborative editing enabled instant feedback and testing of infrastructure changes, dramatically improving efficiency and reliability. They overcame cultural change challenges and surprisingly found SI boosted team morale, simplified onboarding, and improved governance.

Development

Qbix Q.js: A Lightweight Frontend Framework Challenging React and Vue

2025-08-31
Qbix Q.js: A Lightweight Frontend Framework Challenging React and Vue

Qbix has released Q.js, a lightweight frontend framework weighing in at only ~40KB (minified and gzipped). Despite its size, it packs components, routing, caching, internationalization, and more. It boasts a zero build step, direct DOM manipulation for speed, and supports progressive enhancement and SEO. Compared to React, Vue, and Angular, Q.js offers significant advantages in size, performance, and ease of use, making it ideal for high-performance apps and real-time dashboards.

Development frontend framework

Vlang: Go's Spicy Counterpart? A Deep Dive

2025-08-31
Vlang: Go's Spicy Counterpart? A Deep Dive

This article compares Go and V, two programming languages. V shares similarities with Go in syntax but offers additional features such as more flexible error handling, powerful structs, enums, and lambda expressions. The author showcases V's strengths through code examples but also points out the immaturity of V's ecosystem and some compilation/build issues. Despite these, the author remains optimistic about V's future and suggests it's worth exploring for Go developers.

Development

SQL Subquery Issue: A Subtle Difference Leading to Unexpected Results

2025-08-31
SQL Subquery Issue: A Subtle Difference Leading to Unexpected Results

A reader, Dave, encountered a minor issue while testing a SQL subquery example from Vadim's book using the Northwind database on W3Schools. Dave's code differed slightly from the book's example, using '<' instead of '<=' and omitting '#'. Despite this, his scalar subquery returned zero, unlike the predecessor query in the book. This raises questions about how subtle differences in SQL queries can affect results.

Development Subquery

OpenTelemetry Distributed Tracing: Unraveling App Performance with Traces and Spans

2025-08-31
OpenTelemetry Distributed Tracing: Unraveling App Performance with Traces and Spans

This guide dives deep into OpenTelemetry's core distributed tracing concepts: Traces and Spans. A Trace represents the entire journey of a single request, while Spans are individual timed steps within that journey. Using clear language and helpful diagrams, the guide explains how to structure Traces and Spans, propagate context, and implement them in Node.js/TypeScript. It also covers best practices, common anti-patterns, and correlation with metrics and logs, empowering developers to build efficient and reliable distributed systems.

Development

Efficient Datalog Querying with SQL: A Clever Environment-Relation Approach

2025-08-31
Efficient Datalog Querying with SQL: A Clever Environment-Relation Approach

This article presents a novel approach to translating Datalog programs into SQL queries. The author cleverly leverages the relational algebra capabilities of SQL, representing the variable binding environments from the Datalog program body as relations. This allows for efficient execution of Datalog queries using existing SQL engines. The method is not only clean but also allows for semi-naive evaluation using the dual number trick, further boosting performance. The article includes Python and SQL code examples, along with performance comparisons against other Datalog engines.

Development

Zellij's Web Terminal: Bringing Your Terminal to the Browser

2025-08-31
Zellij's Web Terminal: Bringing Your Terminal to the Browser

Zellij, a terminal workspace and multiplexer, recently released a built-in web client, allowing users to connect to background terminal sessions via a browser. This post details the construction of the Zellij Web Terminal, including technology choices, architecture design, and challenges faced. It uses a client/server architecture with bidirectional communication via WebSockets between the browser and the Zellij server. Built with Rust and axum, the web server prioritizes security and ease of use. Future plans for Zellij include expanding the web interface to support features like native UI component rendering and the merging of multiple terminal sessions.

37signals Ditches Docker Hub and ECR for Self-Hosted Harbor Registry

2025-08-31
37signals Ditches Docker Hub and ECR for Self-Hosted Harbor Registry

37signals, the creators of Basecamp and HEY, migrated from external container registries like Docker Hub and Amazon ECR to a self-hosted Harbor registry. Driven by cost concerns (bandwidth overages and subscription fees), performance issues (slow pull times impacting deployments), security risks, and a desire for greater independence, they chose Harbor for its ease of setup, rich feature set, and open-source nature. The article details their single-server deployment outside Kubernetes, S3 storage configuration, multi-instance setup, replication strategy, and the process of migrating images from Docker Hub. The result? Significant cost savings (around $5k/year), improved performance (15-second deployment reduction, 25-second image pull reduction), and enhanced security.

Development container registry
← Previous 1 3 4 5 6 7 8 9 198 199