Category: Development

Idiomatic Go: Supplementing the Style Guide

2025-03-09

This document supplements the official Go style guide, covering details such as consistent spelling (e.g., `marshaling` not `marshalling`), spacing between sentences, error naming conventions, capitalization of brand names, comment styles, package naming, and method receiver names. The author provides clear 'do' and 'don't' examples to help developers write more idiomatic Go code, improving readability and maintainability.

Development Coding Style

Subtle C++/WinRT Invoke Issue and its Fix

2025-03-09
Subtle C++/WinRT Invoke Issue and its Fix

A C++/WinRT pull request fixed an ambiguity in `winrt::impl::promise_base::set_completed`'s call to `invoke`, caused by Argument-dependent Lookup (ADL). The upgrade to C++20 coroutines expanded the ADL search space, unexpectedly finding `std::invoke` instead of the intended `winrt::impl::invoke`. The article details the ADL mechanism and provides a patch for older C++/WinRT versions: declaring a better-matching `invoke` function in the `winrt::Windows::Foundation` namespace to guide the compiler. This patch also includes a static assertion to ensure it's automatically removed after upgrading C++/WinRT.

Development

Fintech Startup Slashes Data Infrastructure Costs by 70%

2025-03-09

A fintech startup tackled the challenge of managing diverse data sources and high infrastructure costs. Their initial platform, relying on Hevo and BigQuery, proved unsustainable. To overcome this, they built a new ELT-based data platform leveraging cost-effective S3 storage for raw data. They utilized Airflow, Debezium, Kafka, and dbt for data processing and transformation, Trino for querying, and Metabase for visualization. The result? A 70% reduction in infrastructure costs. This case study highlights how efficient data platform design and technology choices can drastically reduce expenses and improve efficiency.

Development data platform

Graphite: Your Open-Source 2D Creative Powerhouse

2025-03-09
Graphite: Your Open-Source 2D Creative Powerhouse

Graphite is a free and open-source vector and raster graphics engine currently in alpha. It boasts a fully nondestructive workflow combining layer-based compositing with node-based generative design. Evolving beyond a simple vector editor, Graphite's game-engine-like architecture offers a comprehensive toolbox for photo editing, motion graphics, digital painting, desktop publishing, and VFX compositing. Graphics programmers and Rust developers are encouraged to contribute, and donations are welcome to support its continued development. Graphite aims to become an industry-standard art and design tool, empowering creators of all levels.

uutils: Five Years Rewriting GNU Coreutils in Rust

2025-03-09

At FOSDEM 2025, Sylvestre Ledru announced major progress on uutils, his Rust-based replacement for GNU Coreutils. Nearly five years in the making, the project, begun during the COVID lockdown, has rewritten over 100 essential Unix/Linux utilities, boasts over 530 contributors and 18,000+ GitHub stars. Aiming for safer, more performant drop-in replacements, uutils passes nearly 500 of the GNU coreutils test suite and is used by projects like Debian-based Apertis, Spectacles smartglasses, and Microsoft Visual Studio Code. Ledru's next target: expanding the Rust rewrite to other key Debian/Ubuntu packages, addressing the challenges of C maintenance and offering a modern experience for new developers.

Development

TeX Live 2025 ISO Released!

2025-03-09

The TeX Live 2025 ISO is finally available! You can obtain it via direct download (note that mirror synchronization takes time, some mirrors may not yet have it) or torrent. This marks the author's seventh year seeding the TeX Live ISO torrent, a labor of love fueled by nearly two decades of productivity and enjoyment using TeX and LaTeX for 'typesetting beautiful documents'.

Development ISO Image

Infisical Hiring: Full-Stack Engineer to Revolutionize Secret Management

2025-03-09
Infisical Hiring: Full-Stack Engineer to Revolutionize Secret Management

Infisical, the #1 open-source secret management platform, is seeking a full-stack engineer. You'll build, optimize, and maintain the core product, ensuring a great user experience and exploring AI-driven secret management. Ideal candidates possess strong full-stack skills: infrastructure management, Docker/Kubernetes, cloud-native architecture (AWS preferred), TypeScript/Go. This is a fast-growing team; within 18 months, you'll impact thousands of users and potentially own key platform components.

Development

PurrCrypt: Encrypt Your Secrets with Cat and Dog Sounds

2025-03-09
PurrCrypt: Encrypt Your Secrets with Cat and Dog Sounds

PurrCrypt is an encryption tool using elliptic curve cryptography that transforms your secret messages into adorable cat or dog sounds. Easy to install and use via the command line, it offers 'cat' and 'dog' dialect modes. While the encrypted messages look like nonsensical pet sounds, they contain cryptographically secure data decryptable only with the correct keys. Leveraging the same algorithms as Bitcoin and incorporating steganography, PurrCrypt hides the fact you're sending encrypted data, making it surprisingly secure and fun.

Development

Mako: Blazing Fast, Zero-Config Bundler Redefines Frontend Development

2025-03-09

Mako is a Rust-based frontend bundler boasting zero configuration, exceptional speed, and production-ready stability. It handles TypeScript, Less, CSS, React, and more out-of-the-box without requiring loaders or plugins. Used extensively at Ant Group and rigorously tested across thousands of projects and npm packages, Mako ensures compatibility. Features include Hot Module Replacement (HMR) with React Fast Refresh, built-in code splitting, and module concatenation for optimized performance and developer experience.

Development frontend bundler

Exploiting Constraints for Significant Performance Gains: Optimizing Even Number Counting in C++

2025-03-09

This article explores optimizing the performance of counting even numbers in a uint8_t array in C++. By comparing two approaches—using `std::count_if` and a custom counting function—the author demonstrates that the custom function, leveraging the constraint that the number of even values is between 0 and 255, significantly improves performance, achieving up to a 9.5x speedup in tests. The article analyzes the assembly code generated by both methods, explaining the performance difference, and mentions a vectorization issue in specific GCC versions.

arXivLabs: Community Collaboration on New arXiv Features

2025-03-09
arXivLabs: Community Collaboration on New arXiv Features

arXivLabs is a framework enabling collaborators to develop and share new arXiv features directly on the website. Participants share arXiv's values of openness, community, excellence, and user data privacy. Got an idea to enhance the arXiv community? Learn more about arXivLabs.

Development

Gleam 1.9.0 Released: Improved Debugging, Dependency Management, and Performance

2025-03-09
Gleam 1.9.0 Released: Improved Debugging, Dependency Management, and Performance

Gleam, a type-safe and scalable language, has released version 1.9.0 with significant improvements. Key updates include a new `echo` keyword for enhanced debugging, support for Git repository dependencies, performance boosts for bit arrays and list pattern matching in JavaScript, and expanded language server capabilities such as go-to type definition and JSON encoder code generation. Additional improvements include enhanced HexDocs search integration, custom CA certificate support, and streamlined pipeline syntax conversion. This release is a testament to the vibrant Gleam community and its many contributors.

Development

Go's Error Handling: A Blessing or a Curse?

2025-03-09

Go's error handling, characterized by the ubiquitous `if err != nil` check, has sparked considerable debate. Critics find it verbose and cumbersome, while proponents argue it's a cornerstone of Go's philosophy, treating errors as first-class citizens. This article delves into the pros and cons, comparing Go's approach to exception handling in languages like JavaScript. It highlights best practices, such as creating actionable error chains using `fmt.Errorf` and leveraging libraries like `github.com/pkg/errors` for enhanced clarity and stack traces. While not without flaws, Go's explicit error handling empowers developers with full control over program flow, emphasizing simplicity and proactive failure planning.

Development

Test-Driven Blogging: Using AI to Improve Your Writing Workflow

2025-03-09
Test-Driven Blogging: Using AI to Improve Your Writing Workflow

This post introduces unit-text, a tool leveraging GPT models to assist in blog post creation. The author emphasizes iterative writing, goal-oriented approaches, and draws parallels to Test-Driven Development (TDD) in software, proposing "Test-Driven Blogging." unit-text uses prompts and GPT feedback to help writers check for consistency, logical fallacies, and goal achievement, improving writing efficiency and quality. Currently a prototype CLI tool, future plans include interactive ideation, autonomous research, and API integration.

Spark 1.2 Released: A Major Leap in GPU Texture Compression

2025-03-09

Spark 1.2 is finally here! This real-time GPU texture compression solution boasts major optimizations, new compression formats, and expanded platform support. This release focuses on improving vectorization performance on RDNA, consoles, and Mali GPUs, and includes many unexpected features such as an improved EAC codec, new BC3-YCoCg and HDR codecs, and an ETC2 codec. The development team will focus more on long-term goals, rather than chasing feature requests from potential clients who haven't committed to a license yet. Spark 1.2 also supports Android TV and consoles, and features improved ASTC 6x6 and streaming codecs, as well as sideband data codecs, significantly improving compression quality and performance.

C++ Memory Management: A Deep Dive into RAII

2025-03-09
C++ Memory Management: A Deep Dive into RAII

This is part two of a series on memory management in C++. This post focuses on RAII (Resource Acquisition Is Initialization), a powerful technique for simplifying and securing memory handling. The author contrasts C's manual memory allocation with C++'s more sophisticated approach, covering classes, objects, constructors, destructors, and containers. RAII automatically manages resource cleanup, reducing errors. The post also touches upon move semantics and previews the next installment on smart pointers.

Development

Compiler Optimization: Improving Lemire's Nearly Divisionless Random Number Generation

2025-03-09

The author improved a nearly divisionless algorithm for generating bounded random numbers (Lemire's algorithm). A previous version reduced code bloat by inlining the fast path, but compiler optimization was limited. The author discovered that when the limit is a compile-time constant, the rejection threshold can be precomputed, and division avoidance is unnecessary. The new implementation has only one call to the random number generator, and the compiler automatically eliminates the loop when the limit is a power of two. This is more efficient than last year's version, and the author explores similar compile-time optimization techniques in Rust.

Testeranto: AI-Powered ATDD Framework for Automating Test Fixes

2025-03-09
Testeranto: AI-Powered ATDD Framework for Automating Test Fixes

Testeranto is an AI-first Acceptance Test Driven Development (ATDD) framework for TypeScript projects, currently under development. It uses a strongly-typed, Gherkin-like syntax for specifying tests and integrates with Aider.ai to automatically fix failing tests. Instead of directly testing your code, Testeranto requires wrapping your code with a semantic interface based on TS type signatures. It runs in the frontend, backend, or both, and can test anything bundlable with esbuild.

Development

Uber's H3: A Hexagonal Grid System for Geospatial Indexing

2025-03-09

H3, developed at Uber, is a discrete global grid system that indexes geographies into a hexagonal grid. Each hexagonal cell has a unique ID, allowing for fast joins across disparate datasets and aggregation at various levels of precision. H3 enables a range of grid-based algorithms and optimizations, including nearest neighbor search, shortest path calculations, gradient smoothing, and more, making it a powerful tool for geospatial data analysis.

LFortran Compiles PRIMA: A Major Milestone Towards Beta

2025-03-09

The LFortran compiler team successfully compiled and executed libprima/PRIMA, marking the eighth production-grade, third-party code compiled with bit-for-bit alignment to GFortran. This significant milestone brings LFortran closer to its goal of compiling ten such codes, a key step toward achieving beta-quality. Compiling PRIMA, a Fortran package for nonlinear optimization, presented challenges related to procedure variables, arrays with non-unit strides, and precision loss, all of which were overcome. Future efforts focus on compiling additional third-party codes, including fpm and LAPACK, to solidify LFortran's beta readiness.

Development

Becoming a Great Engineer: Beyond the Paycheck

2025-03-09

This article delves into what makes a truly excellent software engineer. It argues that passion and ambition are crucial, going beyond simply collecting a paycheck. The author emphasizes a deep understanding of computer fundamentals, continuous learning, critical thinking, and practical application of knowledge. Specific projects like building a compiler or emulator are suggested, highlighting the importance of building from foundational principles. The article also stresses self-critique and the pursuit of excellence as key elements for growth.

Development Learning

Goravel: A Laravel-inspired Go Web Framework

2025-03-09
Goravel: A Laravel-inspired Go Web Framework

Goravel is a full-featured, highly scalable Go web application framework designed to help Go developers quickly build applications. Its design philosophy mirrors Laravel's, easing the learning curve for PHP developers. The project is open-source and welcomes stars, pull requests, and issues! Goravel boasts a rich feature set including HTTP authentication and authorization, ORM, migrations, logging, caching, gRPC, Artisan console, task scheduling, queues, file storage, mail, validation, mocking, hash cryptography, Carbon package integration, development and testing tools, localization, and sessions. Documentation and example projects are available; contributions to the documentation and development are encouraged.

Development

Go vs. Rust: Backend Battle Royale of 2025

2025-03-09
Go vs. Rust: Backend Battle Royale of 2025

A crab and a gopher stroll into a server room, the crab flexing its zero-cost abstractions, the gopher showcasing its goroutines. Welcome to the backend battle of 2025! This post compares Go and Rust for high-performance production needs, acknowledging TypeScript as a strong contender for new projects but highlighting Go and Rust's dominance when ultimate speed is crucial. A real-world JSON-processing HTTP server scenario is used for comparison, although specific performance benchmarks aren't detailed, emphasizing the complexities inherent in performance metrics.

Development Backend Performance

Rediscovering Programming: Rendering a PETSCII Image on the Commodore 64

2025-03-09
Rediscovering Programming: Rendering a PETSCII Image on the Commodore 64

A seasoned CTO with 23 years in IT, facing unexpected unemployment, decided to challenge himself by delving into retro computer programming. His goal: render a PETSCII image on a Commodore 64. He meticulously documented the entire process, from using an online editor to create the image, to converting data with a Perl script, and finally displaying it on the Commodore 64 using C64 BASIC and the VICE emulator. This story highlights his enthusiasm for learning new technologies and his passion for retro computing, offering valuable insights for anyone interested in retro computer programming.

Development

Next.js Pre-rendering: How Much Traffic Can It Really Handle?

2025-03-09
Next.js Pre-rendering: How Much Traffic Can It Really Handle?

The author tested the traffic capacity of their Next.js pre-rendered site and found a VPS server could only handle around 200 concurrent requests, far lower than expected. This led to an upgrade to a dedicated server, resulting in a significant performance improvement, handling thousands of requests per second. In contrast, server-side rendering (SSR) performed significantly worse than pre-rendering, struggling under high traffic. The article also discusses the pros and cons of other solutions like Cloudflare and Vercel, ultimately opting for a dedicated server for scalability. Future tests will explore further optimizations.

Ditch the Top-Down Approach: Why Bottom-Up Code Auditing is More Efficient

2025-03-09

Security consultants often need to become experts in a codebase quickly without writing code. This article critiques the inefficient top-down approach to code auditing, likening it to trying to visualize a whole marathon from the air – discouraging and overwhelming. The author advocates a bottom-up approach: deeply understanding code details, gradually expanding scope, ultimately gaining a deeper understanding than even some developers, and finding more bugs. This method is not only more efficient but also more enjoyable.

FSF Weighs In on Neo4j's AGPLv3 License Dispute

2025-03-09

The Free Software Foundation (FSF) filed an amicus brief in the legal dispute between Neo4j, Inc. and PureThink, LLC. The core issue revolves around Neo4j adding a commercially restrictive Commons Clause to its software, incompatible with the GNU AGPLv3 license. The FSF argues that GNU licenses permit users to remove restrictions contradicting the four freedoms of software. Following a cease and desist letter in November 2023 highlighting Neo4j's violation of the AGPLv3 spirit, Neo4j removed the offending files and ceased offering its software under the GNU AGPLv3, implicitly acknowledging the FSF's position. The FSF's brief clarifies its intent in drafting the GNU licenses and underscores its commitment to safeguarding software freedom.

Development

Lightweight Pi-Hole 6: Effortlessly Block Ads on Your Home Network

2025-03-08
Lightweight Pi-Hole 6: Effortlessly Block Ads on Your Home Network

The newly released Pi-hole 6 is lighter and requires no PHP or external web server, reducing system resource demands. The article details the installation and configuration process, including choosing appropriate hardware (like a Raspberry Pi), setting a static IP address, and modifying router DHCP settings. The author successfully tested it on an old Raspberry Pi 3B, effectively blocking ads, increasing speed, and reducing data consumption. Compared to other ad-blocking methods, Pi-hole boasts simplicity, ease of use, and low system resource usage, but requires some network configuration knowledge.

Development ad blocking
1 2 142 143 144 146 148 149 150 214 215