Category: Development

Canva Engineering Cuts CI Build Times from Hours to Under 30 Minutes

2024-12-18

Canva's engineering team dramatically reduced their continuous integration (CI) build times, from an average of 80 minutes to under 30 minutes, sometimes as low as 15. This was achieved through a multifaceted approach. They identified and resolved Bazel caching issues, optimized pipeline structures, improved Git repository checkouts and caching, and leveraged Bazel Remote Build Execution (RBE). Extensive experimentation, including testing different instance types and adjusting Bazel configurations, played a crucial role. A series of incremental improvements significantly increased CI efficiency, reduced costs, and enhanced the developer experience.

GitHub Project ted: A Turing Machine-based File Editor

2024-12-18

ted is a command-line tool written in Go that allows users to edit files according to the rules of a provided Turing machine. Inspired by the author's need to process log files, ted uses state machines to precisely extract the desired information. It supports various operations, including regular expression matching, sed command execution, variable assignment, capture and output control, and offers features such as multi-line capture, regex capture groups, and file head/tail movement.

Homescreen App: Redefining Your Home Screen Experience

2024-12-18

Homescreen is an app designed to revolutionize the home screen experience on your phone. Breaking free from the limitations of traditional phone desktops, it offers users a more personalized, efficient, and convenient way to interact with their devices. Users can customize widgets, themes, and layouts to create a unique home screen, boosting productivity and enjoyment. Homescreen isn't just a simple desktop replacement; it's a refreshing approach to how we use our phones.

Reclaiming Sensor Data: Breaking Free from the Cloud

2024-12-18

This article details how an embedded software engineer regained control of data from a cloud-connected radon sensor by bypassing the manufacturer's servers. By analyzing network traffic, the engineer discovered a vulnerability where the sensor didn't properly validate server certificates. Leveraging a local DNS server and a custom Python web server, the engineer successfully intercepted and read the raw sensor data. This grants programmatic access and ensures continued functionality even if the manufacturer's servers go down. The article highlights the importance of network security and the privacy risks associated with DNS traffic.

Browser Extension 'refoorest' Accused of Fraudulent Tree-Planting Scheme

2024-12-18

An investigation into Colibri Hero's browser extension, refoorest, and its Impact Hero SDK reveals a deceptive affiliate marketing scheme disguised as a tree-planting initiative. The extension misrepresents the number of trees planted, exploits user data through incentivized reviews and sharing, and the SDK gains excessive user permissions without proper disclosure, violating Chrome Web Store policies. The article exposes a pattern of opaque practices, including fake testimonials, financial secrecy, and data security vulnerabilities, casting serious doubt on the company's claims of environmental responsibility.

Optimizing Ruby's JSON: Part 1

2024-12-18

This blog post details how the author optimized Ruby's `json` gem to become one of the fastest JSON parsers and generators. Instead of complex techniques, simple optimizations were applied based on profiling, such as avoiding redundant checks, prioritizing cheaper conditions, reducing setup costs, and using lookup tables. These improvements apply to both C and Ruby code. The optimizations significantly boosted the `json` gem's performance, making it competitive with alternatives like `oj`, reducing the need for monkey patching, and addressing stability and compatibility issues associated with `oj`.

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.

1 2 4 6 7 8 9