Category: Development

Google Boosts Developer Productivity with Hybrid Semantic ML Code Completion

2025-05-15
Google Boosts Developer Productivity with Hybrid Semantic ML Code Completion

Google researchers have developed a novel Transformer-based hybrid semantic machine learning code completion system that combines machine learning (ML) and rule-based semantic engines (SEs) to significantly improve developer productivity. The system integrates ML and SEs in three ways: 1) re-ranking SE's single-token suggestions using ML; 2) applying single and multi-line completions using ML and checking correctness with the SE; and 3) using single and multi-line continuation by ML of single-token semantic suggestions. A three-month study with 10,000+ Google internal developers showed a 6% reduction in coding iteration time with single-line ML completion. Currently, over 3% of new code is generated from accepting ML completion suggestions. The system supports eight programming languages and incorporates semantic checks to ensure code correctness, significantly boosting developer trust and efficiency.

Development

A Leap Year Check in Three Instructions

2025-05-15

This article presents a surprisingly efficient algorithm to determine if a year (0 ≤ y ≤ 102499) is a leap year using only about three CPU instructions. It leverages bit manipulation and carefully chosen magic numbers to transform the complex leap year rules into a simple arithmetic operation and comparison. The author meticulously explains the algorithm's derivation, comparing it to traditional methods and highlighting its significant speed advantage. While slightly slower in edge cases, its efficiency in practical applications is impressive.

Development leap year

Is Stack Overflow Dying Thanks to LLMs?

2025-05-15

Stack Overflow, the programmer's haven, is facing an unprecedented crisis. The article reveals a steady decline in questions asked since 2014, dramatically accelerated by the advent of ChatGPT. The platform, once a lifeline for countless developers, now sees question volumes plummet to levels last seen in 2009. While stricter moderation policies and the rise of LLMs likely contributed, the rapid advancement of AI is undeniably reshaping how developers seek help.

Development

Beyond REST: Why State Synchronization is the Future of Web Apps

2025-05-15

Building web apps with React, Typescript, and a Rust/Axum REST backend, the author encountered significant challenges with REST's state transfer approach for what are essentially state synchronization problems. Using a simple text input example, the article highlights issues like race conditions from concurrent requests, inaccurate loading indicators, and inconsistencies across multiple app instances. The author argues for a shift towards state synchronization protocols, such as those based on CRDTs, to improve efficiency and eliminate common REST-related bugs.

Development State Synchronization

Curl's Dotted Disaster: Two CVEs and a Never-Ending Chase

2025-05-15
Curl's Dotted Disaster: Two CVEs and a Never-Ending Chase

The curl team has had a persistent struggle with trailing dots in hostnames within URLs. Initially ignoring them, curl later reinstated support for websites requiring trailing dots. However, this change inadvertently introduced two security vulnerabilities (CVE-2022-27779 and CVE-2022-30115) affecting cookie handling and the HSTS mechanism respectively. These vulnerabilities stemmed from improper handling of trailing dots leading to incorrect domain matching. curl 7.83.1 addresses these issues, but the author suspects this may be just the beginning of a long-running battle.

Development

Refactoring Clojure: Crafting an Elegant Markov Text Generator

2025-05-15
Refactoring Clojure: Crafting an Elegant Markov Text Generator

This article details refactoring Clojure code that generates a first-order word-level Markov text. Instead of directly modifying the original, the author starts by characterizing its behavior with comprehensive tests. The refactored code uses clearer functions and a more understandable structure, employing `reduce` and recursive function calls for efficient text generation. The result is significantly improved readability and maintainability while preserving the original functionality.

Development

Tengri Audio Software Development Log: A Glimpse into Recent Progress

2025-05-15
Tengri Audio Software Development Log: A Glimpse into Recent Progress

The open-source audio software Tengri's development team recently updated its GitHub project log, detailing activities since May. This includes a significant refactoring of the arranger, re-enabling LV2 support, improvements to the build process (such as Docker containerized builds), documentation updates, and bug fixes. The log reflects an iterative development process, actively addressing issues and showcasing the project's active development status.

Development

Beyond Scalar Select: Batching Event Streams for Efficiency

2025-05-15

The author describes the inefficiency of the scalar select anti-pattern in stateful service design, exemplified by an LSP server. Processing events one at a time leads to delays and resource waste. The proposed solution is to batch process event streams. A `batch_stream` function merges incoming events into batches, significantly improving efficiency. Under low load, it behaves like single-event processing, but under high load, it dramatically reduces overhead, boosting performance.

Development

The Surprisingly Simple Power of LLM Agent Loops with Tool Use

2025-05-15

The author and their team built an AI programming assistant called Sketch, whose core is a surprisingly simple loop: the LLM receives user input, performs actions (potentially involving tool calls like bash), and outputs results. This simple loop, combined with powerful LLMs like Claude 3.7 Sonnet, allows Sketch to efficiently handle many programming tasks such as git operations, code modifications, and error handling. The author believes this LLM agent loop approach will find widespread use in everyday automation, drastically improving efficiency.

Revitalizing TLA⁺: A Call to Arms for Tool Development

2025-05-15
Revitalizing TLA⁺: A Call to Arms for Tool Development

The 2025 TLA⁺ Community Event highlighted the current state and future direction of TLA⁺ tooling. The author argues that ease of development within the TLA⁺ ecosystem is paramount. Existing parsers, interpreters, and model checkers are reviewed, alongside challenges such as legacy code and documentation gaps. Strategies to overcome these hurdles include test-driven development, developer onboarding, and grants. Future directions include generative testing and syntax simplification, culminating in an ambitious goal: boosting TLC's throughput to 1 billion states per minute.

Development

NumPy: A Love-Hate Relationship with Python's Array Library

2025-05-15
NumPy: A Love-Hate Relationship with Python's Array Library

This article delves into the pain points of using NumPy, Python's popular array computation library, when dealing with multi-dimensional arrays. While NumPy excels with its simplicity and efficiency for lower-dimensional arrays, its broadcasting mechanism and indexing become incredibly complex and hard to understand when tackling more intricate multi-dimensional operations. The author argues that NumPy's core issue stems from its broadcasting mechanism replacing indices, resulting in limited expressiveness. The article uses multiple examples to highlight NumPy's struggles with complex array computations, comparing the pros and cons of using loops and np.einsum, ultimately expressing frustration with NumPy and a desire for a more user-friendly array language.

Demystifying Ruby Concurrency: Processes, Ractors, Threads, and Fibers

2025-05-15
Demystifying Ruby Concurrency: Processes, Ractors, Threads, and Fibers

Ruby, known for its elegance and readability, presents a concurrency model that can be initially confusing. This article delves into the four concurrency mechanisms in Ruby: processes, Ractors, threads, and fibers. Processes offer complete memory isolation, ideal for tasks requiring absolute separation; Ractors, introduced in Ruby 3, provide parallelism within a single process, employing message passing to prevent race conditions; threads, being lightweight, are limited by the GIL to concurrency, not true parallelism; and fibers, the lightest mechanism, offer cooperative multitasking through manual control yielding. Code examples and clear explanations illuminate the differences and use cases, providing a comprehensive understanding of Ruby's intricate concurrency landscape.

Development

Browser Blocking Port 6000? Cross-Protocol Scripting Vulnerability Strikes!

2025-05-15
Browser Blocking Port 6000?  Cross-Protocol Scripting Vulnerability Strikes!

While working on a Docker and Flask project, the author encountered an issue where port 6000 was inaccessible, while port 8000 functioned correctly. Investigation revealed that browsers actively block certain ports, including 6000, as a security measure against Cross-Protocol Scripting (XSS) vulnerabilities. Chrome displays an ERR_UNSAFE_PORT error, Safari shows a blank page, and Firefox provides a more informative "This address is restricted" message. The browser cancels requests to these ports before they are even sent. The author confirmed the server was functioning correctly using curl, isolating the issue to browser security policies. The article lists Firefox's blocked ports and their services, explaining how this protection works.

Development Browser Security

ARB Assembly Shaders: A Deep Dive Before GLSL

2025-05-15
ARB Assembly Shaders: A Deep Dive Before GLSL

This article delves into ARB assembly shaders, a shading language used in OpenGL before the advent of GLSL. It details ARB shader integration, language features, instruction sets, and comparisons with GLSL. While now largely obsolete, understanding ARB assembly provides valuable insight into the evolution of modern graphics programming and the underlying mechanisms of lower-level graphics technologies.

Development graphics programming

Graph Coloring Breakthrough: Near-Optimal Algorithm Achieved

2025-05-15
Graph Coloring Breakthrough: Near-Optimal Algorithm Achieved

Imagine the complexity of managing air traffic at Newark Airport. To prevent collisions, researchers model the problem as a graph coloring problem: each flight path is a line, each location a point. For decades, progress on efficient algorithms was slow. But recently, a breakthrough: a near-linear time algorithm, nearly as fast as theoretically possible, offering new possibilities for air traffic control and other applications. This solves a decades-old problem, a true milestone.

Development graph coloring

Trophy Revamps Developer Docs for a Smoother User Experience

2025-05-15
Trophy Revamps Developer Docs for a Smoother User Experience

Trophy overhauled its developer documentation to provide a richer, more intuitive experience. They chose Mintlify as their docs-as-a-service provider, appreciating its writing experience, custom React component support, and cost-effective custom domain hosting. The new docs utilize a tabbed layout, clearly segmenting platform docs, API references, tutorials, and examples. Enhanced readability comes from Mermaid diagrams and code snippets tailored to various programming languages. A feedback mechanism and GitHub integration encourage community involvement. Future plans include user-aware features, multilingual support, and LLM integration for enhanced searchability.

Fresh 2.0 Delayed: Deno's Next-Gen Web Framework Gets a Foundation Upgrade

2025-05-15
Fresh 2.0 Delayed: Deno's Next-Gen Web Framework Gets a Foundation Upgrade

The Deno team announced a delay for Fresh 2.0, their web framework built on the latest web standards, pushing the release to late Q3 2025. The delay stems from a focus on improving Deno's core platform and the JavaScript registry (JSR), addressing compatibility issues with Node.js, and ultimately building a more robust foundation for Fresh 2.0's speed, extensibility, and ease of use. Fresh 2.0 will feature Express/Hono-like APIs, true async components, and a new plugin system. It's already powering deno.com and Deno Deploy in production, with an alpha version available for developers to test, along with a migration guide for existing projects.

Development

Wavelet Trees: An Elegant Approach to Rank Queries on Sequences

2025-05-15
Wavelet Trees: An Elegant Approach to Rank Queries on Sequences

This blog post introduces the Wavelet Tree, an elegant data structure for answering rank queries on sequences over large alphabets. Achieving a time complexity of O(log₂A) (where A is the alphabet size), it organizes a string into a hierarchy of bit vectors. The post details Wavelet Tree construction and querying, highlighting optimization techniques using RRR structures or other binary rank indexes for compression and speed. An implementation in Francisco Claude's Compressed Data Structure Library (libcds) is recommended for practical application.

Development

Rust Learns from Python's Dynamic Capabilities: Reflection with Serde

2025-05-15
Rust Learns from Python's Dynamic Capabilities: Reflection with Serde

This article details how the author used Rust and the Serde library to mimic Python's dynamic attribute access (__getattr__) mechanism, creating a clean and user-friendly API for accessing system information. The article thoroughly explains the implementation process, including custom trait, Deserializer, and Visitor implementations, and how to leverage Serde's derive(Deserialize) feature to simplify the code. Ultimately, the author successfully built an efficient and user-friendly Rust library that achieves a Python-like concise API, and discusses alternative approaches and trade-offs.

Development

Open Source Contributions vs. High-Paying Jobs: LeetCode Wins?

2025-05-15

Five years after graduation, a programmer with a wealth of open-source projects under his belt found that his years of dedication hadn't translated into a high-paying job. He worked for two startups, putting in long hours for meager pay. Ultimately, he had to abandon his beloved open-source projects and grind LeetCode, resulting in a 5x salary increase but also a loss of the joy and fulfillment he once had. This article reveals a harsh reality: the job market values leetcode and FAANG experience more than real-world project contributions.

Development

llm-min.txt: Min.js-Style Compression for LLM Contexts

2025-05-15
llm-min.txt: Min.js-Style Compression for LLM Contexts

llm-min.txt tackles the knowledge cutoff problem in LLMs, where AI coding assistants lack access to recent programming library updates. It uses a min.js-like approach, leveraging another AI to distill verbose technical documentation into a super-concise, structured summary. Employing the Structured Knowledge Format (SKF), it organizes information into three core sections (Definitions, Interactions, Usage Patterns), achieving up to 97% token reduction while preserving essential information for AI assistants. llm-min.txt utilizes Google's Gemini AI model and offers command-line and Python API usage.

Development

Elixir Lua Library v0.1.0 Released: Run Lua on the BEAM VM

2025-05-15
Elixir Lua Library v0.1.0 Released: Run Lua on the BEAM VM

The first stable release of the Elixir Lua library, v0.1.0, is now available on hex.pm! This library lets you execute sandboxed Lua programs directly on the BEAM VM, not by embedding the C Lua runtime, but through a complete Lua 5.3 implementation in Erlang (powered by the Luerl library). Improvements include better error messages, comprehensive documentation, a `deflua` macro for easily exposing Elixir APIs to Lua, and a `~LUA` sigil for compile-time syntax checking. Born from the needs of TV Labs for building physical device integration tests, it's used as a compilation target for their drag-and-drop automation builder. Future plans involve merging the Elixir Lua library into Luerl for improved error messages, documentation, and sandbox features.

Development

Autumn Billing: Evolving from Publishable Keys to Encrypted Server Actions

2025-05-15
Autumn Billing: Evolving from Publishable Keys to Encrypted Server Actions

A company building a billing system explored various approaches to simplify development, ultimately tackling the challenge of secure frontend payment operations. They initially tried Publishable Keys but encountered limitations in security and functionality. Next, they adopted Next.js Server Actions, but this exposed customer IDs, creating a security vulnerability. Finally, they secured the system by encrypting customer IDs within Server Actions, but this approach depends on Server Actions and lacks framework agnosticism. Future plans involve a more general, framework-agnostic solution that simplifies backend setup.

Development payment systems

Programmer Bradford J. Rodriguez's Collection of Papers and Projects

2025-05-15

Bradford J. Rodriguez's personal website hosts a collection of papers, seminar presentations, and computer programs he's published over the years. The content spans topics including Forth kernel writing, multiprocessing systems, real-time control, object-oriented Forth, and assemblers. This includes full text of his PhD and MS dissertations, along with source code and documentation for several smaller projects. These resources provide valuable learning materials for those interested in embedded systems, the Forth language, and computer architecture.

Development Computer Architecture

1700 Underrated Movies Discovered via Wikipedia Data Mining

2025-05-15
1700 Underrated Movies Discovered via Wikipedia Data Mining

Tired of failing movie recommendation algorithms? A programmer spent 12 hours using Python to scrape 150GB of English Wikipedia data, uncovering over 1700 critically acclaimed films from 83 countries, spanning 19 genres, and dating back to the 1910s. Most of these movies are not featured on mainstream recommendation platforms, offering cinephiles a unique opportunity to discover hidden gems. The project is not a streaming service but provides a website listing these films; purchases include lifetime free updates.

LiveSplat: Realtime Gaussian Splatting Algorithm Released (Alpha)

2025-05-15
LiveSplat: Realtime Gaussian Splatting Algorithm Released (Alpha)

LiveSplat, a realtime Gaussian splatting algorithm using RGBD camera streams, has been released. Developed as part of a larger VR telerobotics system, its public release follows significant community interest. Currently in alpha, it requires Python 3.12+, Windows or Ubuntu, an Nvidia GPU, and one to four RGBD sensors. While closed-source, installation instructions and an Intel Realsense integration script are provided. The author is open to licensing opportunities.

Bitwarden's Schrödinger Registration Flow: A Security UX Fail

2025-05-15
Bitwarden's Schrödinger Registration Flow: A Security UX Fail

A security architect, “Юленька”, uncovered a logical flaw in Bitwarden's registration process. Users could start registration on Device A, but complete it (including setting the master password) on Device B, resulting in account creation failure and unusable apps. After a dismissive response from Bitwarden, “Юленька” creatively reported the issue using a humorous stand-up routine. The issue appears resolved, but Bitwarden offered no acknowledgement or changelog. This highlights the need for better UX design in security products and emphasizes the importance of clear communication in resolving security issues.

Development

ALTCHA: Lightweight, Privacy-Preserving Anti-Spam Solution

2025-05-15
ALTCHA: Lightweight, Privacy-Preserving Anti-Spam Solution

ALTCHA is a self-hosted anti-spam service for websites and APIs. It uses a proof-of-work mechanism instead of CAPTCHAs, protecting user privacy and complying with GDPR and WCAG 2.2 AA standards. ALTCHA is lightweight, cookie-free, and fully accessible, offering a SaaS API and extensive configuration options including custom requests, spam filtering, and data obfuscation. Its size is a mere 6% of reCAPTCHA.

Development proof-of-work

Taming Complex Systems: Lessons from Uber to Google

2025-05-15
Taming Complex Systems: Lessons from Uber to Google

This article details the author's experiences in software engineering at an Uber competitor and Google, differentiating between complex problems and complex systems. Complex problems follow structured, repeatable solutions, while complex systems demand adaptability and innovative approaches. The article delves into five characteristics of complex systems: emergent behavior, delayed consequences, the trap of local optimization, hysteresis, and nonlinearity. Strategies for effective operation in complex environments are shared, including prioritizing reversible decisions, defining the right metrics, embracing innovation, leveraging best practices (feature flags, canary releases, progressive rollouts, shadow testing), and emphasizing observability, simulation testing, and machine learning. Finally, the author stresses the importance of team collaboration in complex systems.

Development

Apple Issues Warnings for Apps Using External Payment Systems in the EU

2025-05-15

Apple has begun issuing warnings for apps in the EU that use external payment systems instead of in-app purchases (IAP). The warning appears prominently at the top of the App Store listing, even after an app has been installed and updated. This has raised concerns among developers, despite the EU's Digital Markets Act (DMA) prohibiting scare screens at the point of purchase. Apple defines three warning levels in macOS, and the external payments warning uses the highest 'critical' level. However, developers question how many users will notice these warnings, as apps can auto-update, adding external payment functionality without requiring users to revisit the App Store.

1 2 87 88 89 91 93 94 95 214 215