Category: Development

GitHub Issues Major Update: Sub-issues, Issue Types, and Advanced Search

2025-01-19
GitHub Issues Major Update: Sub-issues, Issue Types, and Advanced Search

GitHub has released a major update to Issues, including sub-issues, issue types, and advanced search. Sub-issues allow breaking down problems into smaller units for better progress tracking. Issue types help teams classify and manage issues with a consistent language. Advanced search enables more complex filtering to find specific issues. The Issues UI has also been updated for improved efficiency and usability. Additionally, CodeQL Action v2 is officially retired, requiring users to upgrade to v3. Secret scanning default patterns now support more secret types, enhancing security.

Development Update

Rust: Investigating a Mysterious OOM

2025-01-19
Rust: Investigating a Mysterious OOM

Qovery's engine-gateway, a Rust service, experienced unexpected out-of-memory (OOM) crashes. Monitoring showed stable memory usage before abrupt restarts. The culprit? The anyhow library, when backtraces are enabled, captures a backtrace for every error. Symbol resolution, only triggered when printing errors in debug mode (`{:?}`), caused massive memory consumption. Setting environment variables `RUST_BACKTRACE=1` and `RUST_LIB_BACKTRACE=0` to enable backtraces only on panic solved the issue. This highlights how monitoring can be deceptive and the importance of thorough library documentation review.

Development OOM

Haskell: Surprisingly Procedural?

2025-01-19

This article challenges the common misconceptions surrounding Haskell, arguing that it excels as a procedural language. It delves into Haskell's treatment of side effects as first-class values, explaining the underlying mechanics of `do` blocks and demonstrating the use of functions like `pure`, `fmap`, and `liftA2` to manipulate them. The author showcases `sequenceA` and `traverse` for handling collections of side effects and illustrates how these features enable efficient metaprogramming. A complex example demonstrates Haskell's strengths in managing state and caching, contrasting it with other languages' limitations. The article also explores advanced concepts like the `State` monad for improved control and streaming results.

Development Side Effects

Building a Website on a Raspberry Pi: A 15-Step Guide

2025-01-19
Building a Website on a Raspberry Pi: A 15-Step Guide

This comprehensive tutorial details the author's journey of building a personal website on a Raspberry Pi. It covers everything from acquiring the necessary hardware and setting up a headless Pi to installing an Apache server, obtaining an HTTPS certificate, and registering a domain name. The author walks through HTML/CSS development, virtual host configuration, backups, SEO optimization using Google Search Console, user tracking with GoatCounter, bot protection with fail2ban, automatic updates, and monitoring CPU/RAM usage. The guide culminates with a fascinating account of stress-testing the website via Hacker News and the lessons learned from community feedback, making it a valuable resource for aspiring web developers.

Yek: A Fast Tool for Chunking Repository Files for LLMs

2025-01-19
Yek: A Fast Tool for Chunking Repository Files for LLMs

Yek is a fast Rust-based tool designed to read text-based files from a repository or directory, chunk them, and serialize them for Large Language Model (LLM) consumption. It intelligently skips unwanted files (using .gitignore rules and Git history), splits content into chunks based on token count or byte size, and offers extensive configuration options such as custom ignore patterns and file priority rules. Yek aims to streamline the data preparation process for LLMs, boosting efficiency.

Development

Forgejo: A Self-Hosted GitHub Alternative

2025-01-19
Forgejo: A Self-Hosted GitHub Alternative

Forgejo is a lightweight, self-hosted software forge, easy to install and maintain, powered by the Codeberg e.V. community. It prioritizes security, scalability, federation, and privacy, offering a familiar GitHub-like experience for a smooth transition. 100% free and open-source, Forgejo boasts low resource consumption, high performance, and a commitment to fostering collaborative software development through decentralized platforms.

Development GitHub alternative

Hologram: Elixir Makes Web Dev Simple Again

2025-01-19

Hologram simplifies web development by letting you build rich, interactive UIs entirely in Elixir. Its declarative component system intelligently transpiles your code to JavaScript, giving you modern frontend capabilities without needing any JavaScript frameworks. Say goodbye to JavaScript framework fatigue and hello to the elegance of Elixir.

Development

Unix Spell: The 64kB RAM Miracle

2025-01-19
Unix Spell: The 64kB RAM Miracle

In the 1970s, the Unix spell checker faced an incredible challenge: fitting a 250kB dictionary into a mere 64kB of RAM on a PDP-11. Douglas McIlroy's ingenious solution involved a multi-stage approach. Initially, a Bloom filter provided fast lookups, but as the dictionary grew, he developed a novel hash compression scheme. By recognizing that differences between sorted hash codes followed a geometric distribution, and employing Golomb coding, he achieved near-theoretical compression limits. Finally, partitioning the compressed data further improved lookup speed. This story is a masterclass in constrained optimization, showing how clever algorithms can overcome seemingly impossible limitations.

Development compression

BorrowChecker.jl: An Experimental Borrow Checker for Julia

2025-01-18
BorrowChecker.jl: An Experimental Borrow Checker for Julia

BorrowChecker.jl is a Julia package that simulates Rust-like ownership and borrowing semantics through a macro-based system, performing runtime checks during development and testing to flag memory safety issues. It doesn't guarantee absolute memory safety but aids in writing safer code. The library uses macros like `@own`, `@move`, `@clone` to manage object ownership and `@lifetime` blocks to manage reference lifetimes, while also offering an `@managed` block for automatic borrow checking. While not perfect, it's a valuable tool for developers aiming to improve memory safety in their Julia code.

Development

Outperforming cuBLAS: A CUDA Implementation of Single-Precision General Matrix Multiplication

2025-01-18

This article presents a CUDA implementation of single-precision general matrix multiplication (SGEMM) that outperforms cuBLAS in certain scenarios. By cleverly using PTX instructions, asynchronous memory copies, double buffering, and other optimization techniques, the author achieved efficient matrix multiplication, specifically tuned for an NVIDIA RTX 3090. The article details the algorithm design, optimization techniques, and benchmarking methodology, providing valuable experience for CUDA learners.

Development

Wasm GC Isn't Ready for Realtime Graphics

2025-01-18

David Thompson's blog post highlights significant performance issues with Wasm GC in realtime graphics. The core problem stems from the opacity of Wasm GC heap objects to the host JavaScript environment. This necessitates byte-by-byte data copying for WebGL rendering, severely impacting performance. In contrast, Wasm linear memory offers direct JavaScript access and superior efficiency. Thompson explores workarounds, finding none satisfactory. He urges the Wasm community to address these limitations to avoid hindering technologies like WebGPU.

Development Real-time Graphics

Mastering the Kalman Filter: A Comprehensive Tutorial

2025-01-18
Mastering the Kalman Filter: A Comprehensive Tutorial

This tutorial provides a thorough guide to the Kalman filter, a powerful tool for estimating and predicting system states. Starting with basic univariate filters, it progressively covers multivariate filters, non-linear filters, and practical implementation aspects like sensor fusion and outlier handling. The tutorial features numerous numerical examples and illustrations, along with Python and MATLAB code. Even without a strong math background, you can learn to design, simulate, and evaluate Kalman filter performance.

Browser UX/UI Redesign: What AI Agents Need

2025-01-18
Browser UX/UI Redesign: What AI Agents Need

The rise of AI agents demands a redesign of browser UX/UI. This article explores current limitations, including inadequate information architecture, limited accessibility, and insufficient APIs. A redesigned browser should prioritize data accessibility, automation, streamlined interfaces, and security. Key principles for AI-friendly design include context-aware interfaces, low-latency interaction, and modular, customizable designs. Case studies (Brave, Microsoft Edge, Opera) showcase successful AI integration, highlighting the need for a user-centric approach in creating browsers that seamlessly accommodate both human and AI users.

Development UX/UI Design

llmpeg: Generate FFmpeg Commands with an LLM

2025-01-18
llmpeg: Generate FFmpeg Commands with an LLM

llmpeg simplifies using FFmpeg commands via a large language model (LLM). Simply describe your desired video manipulation, and llmpeg generates the corresponding FFmpeg command. For instance, you can easily remove audio from a video. Requires FFmpeg and an OpenAI API key. This project provides a convenient AI-powered tool for video processing.

Development Video Processing

Amazon's AI Crawler DDoSing My Git Server

2025-01-18

Blogger Xe Iaso's Git server (gitea.xeserv.us) is under attack from Amazon's AI crawler, causing instability. Despite attempts to block the crawler using robots.txt and nginx configuration to filter specific user agents, the attacks continue with constantly changing IPs and spoofed user agents. As a last resort, the server was moved behind a VPN, and a proof-of-work reverse proxy is being developed for future protection. The post expresses frustration and anger at the resource consumption by the Amazon AI crawler, urging Amazon to stop the attacks or negotiate a solution.

Shapecatcher: Find Unicode Characters by Drawing!

2025-01-18

Shapecatcher is an innovative tool that lets you find Unicode characters by drawing their shape. Currently boasting 11817 glyphs, it's a convenient solution for finding characters whose names you don't know. Simply draw the character, click 'Recognize', and Shapecatcher will find the closest match. While Japanese, Korean, and Chinese characters aren't yet supported (due to font licensing), future updates plan to integrate the high-quality Noto font to address this. The project is still in beta.

Dusa: A Novel Logic Programming Language Blending Graph Exploration and Datalog

2025-01-18

Dusa, a logic programming language created by Rob Simmons and Chris Martens, marks the first implementation of finite-choice logic programming. Combining elements of Datalog and Answer Set Programming, Dusa also functions as a graph exploration language. Accessible via a web editor, command-line utility, and JavaScript API (npm), Dusa offers a smooth transition for users familiar with Datalog or ASP, while also providing an approachable entry point for newcomers through its graph exploration features.

Hilbert Curve: A Beautiful Space-Filling Curve and its Visualization

2025-01-18

This article delves into the Hilbert curve, a space-filling curve with excellent clustering properties. The author creatively visualizes it by projecting a 3D RGB color space Hilbert curve onto a 2D plane. The visualization is aesthetically pleasing and intuitively demonstrates the clustering characteristics of the Hilbert curve. The article also explains the algorithm implementation of the Hilbert curve and provides a Python project for generating and visualizing various space-filling curves.

isd: A TUI for Effortless systemd Unit Management

2025-01-18
isd: A TUI for Effortless systemd Unit Management

isd is a terminal-based user interface (TUI) designed to simplify systemd unit management. It offers fuzzy search, auto-refreshing previews, smart sudo handling, and a fully customizable interface for both power users and beginners. Frustrated with repetitive systemctl commands? isd streamlines the process, providing a unified interface showing only relevant information and commands. Installation is easy via AppImage, Nix, or uv, making it accessible across various Linux distributions. Even if you only use `systemctl status`, isd's auto-refreshing output enhances efficiency.

Development

Disabling Password Authentication for Internet-Facing SSH: Security Boost or Overkill?

2025-01-18

This article weighs the pros and cons of disabling password authentication for internet-facing SSH. While strong passwords offer protection against brute-force attacks, the author argues that disabling password authentication provides extra layers of security against stolen credentials, SSH server vulnerabilities, and attacks targeting default accounts. However, this also introduces inconvenience, such as the inability to log in without a keypair. The author suggests a careful consideration of the trade-offs based on individual circumstances.

When a Simple Concurrent Program Defies Intuition

2025-01-18

A seemingly simple concurrent program, involving two processes incrementing a variable 'n' ten times each, yielded a surprising result when analyzed with a model checker. Intuitively, the final value of 'n' should be between 10 and 20. However, an extreme interleaving of the processes resulted in 'n' being 2. While a Go program attempting to reproduce this behavior failed, highlighting the rarity of such extreme interleavings in practice, the example underscores the complexities and counter-intuitive nature of concurrent programming.

Emulating a GPU on a CPU Using Finite Field Assembly

2025-01-17
Emulating a GPU on a CPU Using Finite Field Assembly

This article introduces Finite Field Assembly (FF-asm), a novel programming language enabling GPU emulation on CPUs. FF-asm uses a recursive computing paradigm, bypassing the need for SIMD vectorization or OpenMP parallelization. It achieves massive parallel computation on a CPU by creating a custom mathematical system based on finite field theory and congruences. The article provides step-by-step code examples demonstrating addition and multiplication in FF-asm, showcasing its potential for GPU emulation.

PowerPoint in PHP: A Roundup of Open-Source Libraries

2025-01-17

Tired of struggling with PowerPoint files in your PHP projects? Several open-source PHP libraries now make creating, editing, and converting PPT and PPTX files a breeze. These libraries not only streamline the development process but also offer a wide range of features, including formatting, merging, and protecting files. Whether you need to generate stunning presentations or handle large volumes of PPT files, these libraries will meet your needs and save you considerable time and effort.

Development Open-Source Libraries

Hands-On Graphics Without X11: A NetBSD wscons Deep Dive

2025-01-17
Hands-On Graphics Without X11: A NetBSD wscons Deep Dive

This article details how to perform low-level graphics programming on NetBSD without X11 or Wayland, leveraging the wscons framework. The author demonstrates accessing and manipulating the framebuffer to draw graphics directly on the terminal and handle keyboard input. This bypasses traditional graphics systems, allowing direct hardware interaction, ideal for resource-constrained environments like embedded systems, enabling faster boot times and reduced resource consumption.

Development framebuffer

Dr.TVAM: An Inverse Rendering Framework for Tomographic Volumetric Additive Manufacturing

2025-01-17
Dr.TVAM: An Inverse Rendering Framework for Tomographic Volumetric Additive Manufacturing

Dr.TVAM is an inverse rendering framework for tomographic volumetric additive manufacturing (TVAM) built on the Mitsuba renderer. It leverages physically-based differentiable rendering to optimize patterns for TVAM, supporting scattering printing media, arbitrary vial shapes, and projector motions. An improved discretization scheme for the target shape is also included. A command-line tool and comprehensive documentation are provided for easy customization and optimization.

C to FlipJump: A Minimalist RISC-V Virtual Machine

2025-01-17
C to FlipJump: A Minimalist RISC-V Virtual Machine

The c2fj project is a compiler that translates C code into FlipJump, a minimalist instruction set virtual machine. It first compiles C code into a RISC-V ELF file, then translates RISC-V instructions into FlipJump instructions, and finally runs the resulting FlipJump program. This process cleverly leverages FlipJump's space optimization, allowing for efficient compilation even of large C codebases. c2fj supports various compilation flags and provides Makefile support for complex projects. It also includes a minimal C library implementing necessary system calls such as `exit`, `getc`, `putc`, and `sbrk`.

Development

Branchless UTF-8 Encoding: A Clever Hack

2025-01-17
Branchless UTF-8 Encoding: A Clever Hack

This article explores branchless UTF-8 encoding. The author starts with a problem: efficiently calculating the number of bytes needed for UTF-8 encoding. An initial solution using if-else statements is presented, but the author cleverly uses bit manipulation and lookup tables, leveraging Rust's features, to achieve branchless UTF-8 encoding and eliminate runtime array bounds checks. While performance isn't deeply analyzed, this article showcases a creative solution in the pursuit of elegant code, offering a fresh perspective on efficient UTF-8 encoding.

Skyvern Browser Agent 2.0: Achieving State-of-the-Art in Web Automation

2025-01-17
Skyvern Browser Agent 2.0: Achieving State-of-the-Art in Web Automation

Skyvern, an open-source no-code browser agent builder, released version 2.0. This release boasts a state-of-the-art 85.85% score on the WebVoyager benchmark, achieved by implementing a planner-actor-validator agent loop. This architecture breaks down complex instructions into smaller, manageable tasks, and a validation step ensures successful completion. Skyvern 2.0 can handle complex prompts like "Navigate to Amazon and add an iPhone 16, case, and screen protector to cart." The team's commitment to open source is further demonstrated by publicly releasing the entire evaluation results.

Development browser automation

hyveOS: Serverless Swarm Orchestration for Drones and Robots

2025-01-17

hyveOS is a decentralized system for coordinating swarms of robots and drones, eliminating the need for internet connection or central servers. Developers can install hyved on various devices (like Raspberry Pis) and use diverse SDKs (including Python, Rust, JavaScript, etc.) to build applications. Its core strength lies in its decentralized architecture, enabling flexible and reliable swarm control adaptable to complex scenarios. Sample applications are provided for easy onboarding.

Development
1 2 174 175 176 178 180 181 182 206 207