Category: Development

ImPlot3D: A High-Performance Immediate Mode 3D Plotting Library Based on Dear ImGui

2024-12-18

ImPlot3D is an open-source library built on top of Dear ImGui, offering developers an easy-to-use, high-performance way to create 3D plots. Independent of ImPlot, ImPlot3D supports various 3D plot types, including line plots, scatter plots, surface plots, and mesh plots, with interactive rotation, panning, and zooming. Its intuitive API, similar to Dear ImGui and ImPlot, allows for quick integration and customization of markers, lines, surfaces, and mesh styles, with options for built-in or custom colormaps. A comprehensive demo application aids users in learning and utilizing its features.

Development 3D plotting

Python Meta-Circular Interpreter: Implementing a Python Interpreter in Python

2024-12-18

This article demonstrates how to create a Python meta-circular interpreter (MCI) using Python itself. An MCI is an interpreter written in the language it interprets, allowing implementation of a subset or superset of the host language. The author details the MCI's implementation, covering parsing Python source code, building an Abstract Syntax Tree (AST), traversing the AST and executing statements, and crucial concepts like scoping, symbol tables, and handling control flow statements (e.g., while loops and if statements). This example provides a deep understanding of interpreter mechanics and showcases how to leverage Python's AST module and built-in functions to build more complex interpreters.

Jupyter Notebooks: E2E Testing and Documentation in One

2024-12-18

While developing a quantum computing library, the author leveraged Jupyter Notebooks as both user guides and end-to-end tests. By reading environment variables (like SERVER_URL) within the notebooks, they achieved parameterization, allowing execution by users and automated CI/CD pipelines. Two methods for running notebooks were explored: nbclient for simplicity, and nbconvert/jq for more control but increased complexity. The author opted for nbclient's ease of use, effectively integrating documentation maintenance and code testing, ensuring the integrity of both with every merge request.

Development E2E testing

Taming the Chaos: Centralizing and Structuring Error Handling in Go

2024-12-18

This article details the author's journey in tackling escalating error handling issues in a growing Go project. Initially, the simple approach to error handling devolved into chaos with confusing logs and untraceable errors. To solve this, a new error handling framework was designed and implemented. This framework employs a centralized, structured system using namespace codes to make errors meaningful and traceable. The core is a centralized declaration of error codes; each service layer returns only its own namespace codes, enriched with context information. The article thoroughly explains the design decisions, implementation, lessons learned, and migration strategy, offering valuable practical experience.

Ergo: A Modern Go-Based IRC Server Released

2024-12-18

Ergo is a modern IRC server written in Go, designed for ease of setup and use. It combines the features of an ircd, services framework, and bouncer (integrated account management, history storage, and bouncer functionality). It boasts bleeding-edge IRCv3 support and is highly customizable via a rehashable YAML config. Key features include integrated services (NickServ, ChanServ, HostServ), native TLS/SSL support, SASL authentication, LDAP support, and advanced security and privacy features.

Development IRC server

Open-Source 5-Band Equalizer a5eq.lv2 Released

2024-12-18

ashafq has released a5eq.lv2, an open-source 5-band equalizer LV2 plugin. This plugin features a low shelf, three peaking filters, and a high shelf, designed for precise audio sculpting by both amateur and professional audio engineers. It boasts high-precision filter coefficients, stereo processing, and a user-friendly interface. Compatible with any LV2-supporting host software such as Ardour and Audacity, it's easily installed and used via command line. Users can submit issues or contribute code via GitHub.

Adaptable Text Editor 'ad': Blending Vim and Acme

2024-12-18

ad is a novel text editor that combines the modal editing interface of Vim and Kakoune with the extensibility approach of Plan9's Acme. ad allows users to execute text and serves as a playground for experimenting with implementing various text editor features. Currently, ad is stable enough and feature-complete enough to try out, though documentation is sparse and bugs may exist. ad's design philosophy blends Vim's modal editing, Emacs's mini-buffer, and Acme's editing commands and extensibility, aiming for a comfortable editing environment that supports direct interaction with external tools and programs.

Quick Texture Generation: An XOR Texture Tutorial

2024-12-18

This tutorial explains how to generate an XOR texture, a simple texture created by XORing the x and y coordinates of each pixel. While not ideal for games or art, it's perfect for testing texture mappers. The article details the XOR operation, discusses the effect of texture size on color brightness, and shows how to generate similar textures using AND and OR operators. A 3D texture example using XOR is also presented.

dLine: A Terminal-Based Calendar Tool for Efficient Schedule Management

2024-12-18

dLine is a command-line tool that presents important data in a calendar format directly within your terminal. It monitors critical dates, simplifies event addition via APIs, and calculates timespans for various event types. Designed for developers, dLine streamlines event management and schedule navigation without leaving the terminal. It features dynamic and static views, an event calculator, and robust data management capabilities including adding, deleting, viewing, and cleaning events. dLine also supports custom color schemes, user translations, and integration with Google Calendar.

OpenAuth: A Universal, Self-Hosted OAuth 2.0 Server

2024-12-17

OpenAuth is a universal, standards-based, open-source authentication provider. Deployable as a standalone service or embedded within existing applications, it's framework-agnostic and runs on Node.js, Bun, AWS Lambda, or Cloudflare Workers. Adhering to OAuth 2.0, OpenAuth offers a customizable, themeable UI. Unlike most open-source auth solutions which are libraries, OpenAuth is a centralized server designed for easy self-hosting on your infrastructure. It intentionally omits user management, instead providing callbacks for custom user lookup/creation. Data storage is minimal (refresh tokens, etc.) using a simple KV store (Cloudflare KV, DynamoDB). A pre-built UI is available, but you can easily customize or replace it entirely. Created by the SST team, OpenAuth simplifies authentication for your applications.

IncludeOS: Run Applications in the Cloud with Zero Overhead

2024-12-17

IncludeOS is a lightweight operating system that lets you run your application in the cloud without a traditional OS. It integrates OS functionality directly into your application, creating high-performance, secure, and resource-efficient virtual machines. IncludeOS applications boot in tens of milliseconds and require only a few megabytes of disk and memory. Simple command-line tools facilitate building and deployment, and ample examples and documentation help developers get started quickly.

SeleniumBase: A Powerful Web Automation Framework

2024-12-17

SeleniumBase is a robust Python framework for web automation, testing, and bypassing bot detection. Built on Selenium WebDriver and integrating with test runners like pytest, it offers a clean syntax and extensive features such as automatic waits for page elements, test report generation, a dashboard, and support for multiple browsers and operating systems. SeleniumBase also includes modes like UC Mode and CDP Mode for enhanced stealth and reliability, along with comprehensive examples and documentation for quick adoption.

Development web automation testing

Cerbos Leverages CRDTs for Collaborative Playground

2024-12-17

Cerbos built a collaborative IDE and testing environment, the "Playground," to simplify complex authorization logic. To enable seamless collaboration, they utilize Conflict-Free Replicated Data Types (CRDTs), which automatically resolve conflicts in distributed systems. The article explores CRDTs, comparing popular libraries like Yjs and Automerge, and discusses the challenges and possibilities of building a custom CRDT. Cerbos integrates CRDTs with a backend-for-frontend (BFF) architecture, using WebSockets for data transfer and IndexedDB for local persistence, creating a robust collaborative platform. The challenges of global collaboration and data persistence are also addressed.

Making Unsafe Rust Safer: Verification Tools for Unsafe Code

2024-12-17

Rust's popularity stems from its ability to eliminate memory and concurrency errors at compile time, but its `unsafe` code blocks can bypass these checks. This article explores tools for verifying unsafe Rust code, including code called from C or C++ libraries. It introduces runtime error detection tools—sanitizers—and Miri, an interpreter that deterministically finds undefined behavior. Sanitizers detect out-of-bounds memory access, data races, and more, while Miri provides more precise error reporting with code snippets. However, Miri currently doesn't support code called via FFI from C/C++, necessitating the use of C/C++ compiler sanitizers in such cases. These tools enhance the safety and reliability of Rust code, even when dealing with `unsafe` code or interacting with C/C++ libraries.

Development Safety Memory Errors

BYOJS: Embrace Native JavaScript for Web Development

2024-12-17

The BYOJS project champions building web applications with core JavaScript, rather than relying on heavy frameworks. While frameworks and languages like TypeScript are popular, BYOJS argues that building efficient web apps using the core JS language is a lost art. It encourages using loosely-coupled libraries instead of tightly-coupled frameworks, advocating for choosing the least powerful tool that gets the job done and prioritizing concise code. The project provides helpful utilities such as a simple key-value storage API, an asynchronous event emitter, a modal wrapper, and more. All code is MIT licensed.

Network Security Breakthrough: Trapping Intruders in a 'Network from Hell'

2024-12-17

Researchers at the University of Oulu's SensorFu team have developed a novel network security defense system inspired by the LaBrea tarpit technique. The system intercepts ARP requests and delays SYN-ACK responses, creating a multitude of virtual devices on the network to confuse intruders. This forces attackers to waste significant time identifying real devices, providing administrators with crucial time to patch vulnerabilities. Tests showed the system extends scan times to hours, drastically reducing attack success rates. Lightweight, efficient, and easy to deploy, this system offers robust network protection for organizations of all sizes.

Surfer Protocol: Open-Source Framework for Personal Data Control

2024-12-17

Surfer Protocol is an open-source framework that empowers users to export and build applications based on their personal data. Addressing the issue of data siloed across numerous platforms, Surfer Protocol offers a solution. It comprises a desktop application for exporting data from various apps and services, and a Python SDK for building applications using this data. Users can leverage Surfer Protocol to create personalized AI models, reclaim control of their data from big tech, or leave a digital legacy.

Hooklistener: Visual Webhook Debugging & Testing Tool

2024-12-17

Hooklistener is an online tool for visualizing, debugging, and testing webhooks. It offers real-time payload inspection, local testing capabilities, custom scheduling, actionable alerts, and team collaboration features. Users can easily set up endpoints, receive and analyze webhooks, and automate workflows with scheduled tasks. Hooklistener provides free and paid plans to cater to various needs, empowering developers to manage and debug webhooks more efficiently.

Development Debugging Testing

OCR Challenge: Digitizing Saint-Simon's Memoirs

2024-12-17

The author spent several weeks using OCR to digitize a late 19th-century edition of the 18th-century French memoirs, *Les Mémoires de Saint-Simon*. This 45-volume behemoth, containing over 3 million words, is available online as images, but is difficult to read. The goal was to create a readable, searchable, and copyable text version. Challenges included poor image quality and parsing different page zones (headers, main text, margin comments, footnotes, etc.). Google Vision API was used for OCR, with a Python program processing the results to identify and separate text from different areas. While LLMs failed to reliably handle footnote references, the author improved the program and incorporated manual review, resulting in the release of the first volume.

Lightweight Self-Hosted Proxy PipeGate: A 'Poor Man's ngrok'

2024-12-17

PipeGate is a lightweight, self-hosted proxy built with FastAPI, designed as a "poor man's ngrok." It lets you expose your local servers to the internet, providing a simple way to create tunnels from your local machine to the external world. It's excellent for developers wanting to understand how tunneling services like ngrok work internally or needing a customizable alternative hosted on their own infrastructure. Key features include self-hosting, unique connections, customizability, lightweight design, and ease of learning. Installation is straightforward via git clone or pip.

Bruin: Build Data Pipelines with SQL and Python

2024-12-17

Bruin is a powerful data pipeline tool that combines data ingestion, data transformation with SQL and Python, and data quality checks into a single framework. It works with major data platforms and runs on your local machine, an EC2 instance, or GitHub Actions. Key features include data ingestion, SQL & Python transformations, data quality checks, Jinja templating, end-to-end validation, and support for multiple environments. Pipelines are easily defined using a simple pipeline.yml file.

Development data pipeline

SpiceNice: An Open-Source Culinary Spice Database Launches

2024-12-17

SpiceNice is a new open-source website offering a comprehensive database of culinary spices. It provides detailed information on each spice, including its botanical name, culinary uses, and origin, along with details about the corresponding plant. Built using Strapi (backend), PostgreSQL (database), and Astro (frontend), SpiceNice aims to become a central resource for cooks, biologists, farmers, and spice enthusiasts. Future plans include a web API, multilingual support, and a community forum.

Development spices

Discourse Celebrates a Decade of Fostering Online Communities

2024-12-17

Discourse, the open-source forum software, celebrated its 10th anniversary on August 26th, 2024. Launched with a vision of raising the standard of online discourse, it has grown from a small team of four to over 100 employees across 25 countries. The platform boasts over 20,000 communities, 107 million topics, and nearly 1.65 billion posts. Continuous development has included the addition of 49 plugins, chat features, and AI-powered tools for moderation and user experience enhancement. This success is a testament to its open-source nature, commitment to user feedback, and the dedication of its team.

Langfuse: Open-Source LLM Engineering Platform Streamlines Development

2024-12-17

Langfuse is an open-source LLM engineering platform designed to simplify the development and deployment of large language model (LLM) applications. It offers features such as LLM observability, metrics, evaluations, prompt management, a playground, and datasets, integrating seamlessly with tools like LlamaIndex, Langchain, OpenAI SDK, and LiteLLM. Developers can use Langfuse to monitor LLM performance, manage prompts, evaluate model effectiveness, and ultimately accelerate LLM application development.

Development Development Platform

Open Source Firmware: Necessity and Strategic Choices

2024-12-17

This article explores the necessity of open-source firmware. The author argues that firmware, as software controlling hardware, should adhere to free software principles. This is not only about freedom itself but also directly related to users' practical interests. Non-free firmware can restrict hardware functionality, hide security vulnerabilities, and even prevent users from fixing security issues. The article analyzes two viewpoints: one considers open-source firmware desirable but not necessary; the other advocates that all system software should be open-source. The author leans towards the former, believing that prioritizing the freedom of the operating system kernel is more important, but simultaneously emphasizes the benefits of open-source firmware and discusses how to promote it through strategic means.

Development firmware free software

One Woman Dev Team Reaches Two Million Users

2024-12-17

Nadia Odunayo, a software engineer, built The StoryGraph, a reading community app with over a million users, as a solo developer. The StoryGraph helps users track their reading and recommends books based on mood and preferences. This inspiring story highlights Odunayo's grit, technical skills, and the 'one-person framework' she used to achieve this impressive feat. It offers valuable insights for aspiring solo developers.

Linear Algebra Powers Interactive Diagramming Editor

2024-12-17

Ivan Shubin, in developing his interactive diagramming editor Schemio, cleverly used matrix operations from linear algebra to solve a series of challenging problems. Initially, Schemio only supported simple shape creation and manipulation. However, when a hierarchical structure was introduced, coordinate transformations became complex. The author initially used a recursive approach but encountered issues with scaling and pivot points. Ultimately, Shubin leveraged matrices to represent transformations (translation, rotation, scaling), using matrix multiplication for coordinate conversion and ingeniously employing matrix inversion to solve the world-to-local coordinate conversion problem. Furthermore, matrix operations addressed the precise adjustment of an object's position and rotation when moving within the hierarchy, preventing unexpected jumps. Schemio's source code is open-source and available on GitHub.

Tig: A Text-Mode Interface for Git

2024-12-17

Tig is an ncurses-based text-mode interface for Git, primarily functioning as a Git repository browser. It also aids in staging changes for commit at the chunk level and acts as a pager for various Git command outputs. Installation instructions, release notes detailing new features and bug fixes, and resources like the homepage, manual, and Q&A section on Stack Overflow are readily available. Bug reports and feature requests can be submitted through the issue tracker or via email.

Programmers Craft a Whimsical Programming Game: Droste's Lair

2024-12-17

Two programmers spent two weeks developing Droste's Lair, a whimsical programming environment game. Players build and count mathematical structures through intuitive drag-and-drop interactions, using an "amb" mechanism for branching execution and recursion. The game, themed around swords and sorcery, presents challenges such as reversing list elements, generating all face card combinations, and counting ways to cover a checkerboard with dominoes. Droste's Lair cleverly blends programming and game elements, offering a novel and engaging way to learn programming and mathematical concepts.

Valhalla: Java's Epic Refactor Nears Completion

2024-12-17

After a decade-long journey, Project Valhalla, Java's ambitious refactor, is nearing completion. Aiming to bridge the gap between classes and primitives, Valhalla introduces value classes that offer the coding convenience of classes with the performance of primitives, resulting in a flat and compact memory layout. At Devoxx 2024, Java Language Architect Brian Goetz provided a comprehensive update, highlighting key features such as value classes, null-restricted types, enhanced definite assignment analysis, and strict initialization.

Development Value Classes
1 2 4 6 7 8