Category: Development

Monorepo Build Tools: Scaling Your Codebase

2024-12-20

Traditional build tools struggle with large codebases (100-10,000 active developers). Monorepo build tools like Bazel and Mill offer solutions by supporting multiple languages, custom build tasks, automatic caching and parallelization, remote caching and execution, drastically improving build speed and efficiency. They also feature dependency-based test selection and build task sandboxing, reducing testing time and non-determinism. While these features might seem unnecessary for small projects, they are crucial for large-scale collaboration and continuous integration in larger projects, preventing build times from becoming a bottleneck.

Development build tools scalability

DOS APPEND Command: Bridging the Gap Between Old and New

2024-12-20

While reconstructing the DOS 2.11 source code, the author encountered a challenge: the ancient MASM 1.25 assembler lacked directory support, clashing with modern file organization using a tree structure. To avoid a monolithic directory, the author cleverly employed the DOS APPEND command. APPEND is a TSR (Terminate and Stay Resident) program that intercepts system calls like file opening and searches a predefined path list if the file isn't found in the current directory. This allowed MASM 1.25 to locate files within the hierarchical structure, resolving the incompatibility and highlighting APPEND's surprising utility in specific scenarios.

Development

io_uring Gains New Process Creation Functionality

2024-12-20

LWN.net reports on the development of a new process creation feature for the io_uring subsystem. This functionality is implemented via two new io_uring operations: IORING_OP_CLONE, which creates a new process, and IORING_OP_EXEC, which performs an execveat() system call to load a new program. This promises increased efficiency and allows for more complex logic, such as path searching, to be executed asynchronously within the kernel. However, the feature is still in its early stages and has limitations, such as requiring synchronous execution of io_uring operations within the new process. Future development aims to increase flexibility and eventually merge the feature into the mainline Linux kernel.

Grayjay App: Follow Creators, Not Platforms

2024-12-20

Grayjay is a multi-platform video player that aggregates content from YouTube, PeerTube, Twitch, and more, eliminating the need to switch between different platforms. Prioritizing user privacy, it stores watch history locally and offers data import/export and auto-backup. Features include a personalized content feed, screen casting, and Harbor integration for connecting with audiences and monetizing content.

Google's Gemini Code Assist Adds Third-Party Tool Integration

2024-12-20

Google announced support for third-party tools in Gemini Code Assist, its enterprise-focused AI code completion service. This allows integration with tools like Jira, GitHub, and Sentry via plugins, reducing context switching and boosting developer productivity. Currently in private preview for Google Cloud partners, this feature directly competes with GitHub's Copilot Enterprise, though Google highlights advantages like on-premises codebase support. The addition of tools aims to streamline workflows and enhance efficiency for developers.

Sovereign Tech Fund Invests in OpenStreetMap

2024-12-20

The OpenStreetMap Foundation received a €384,000 grant from the Sovereign Tech Agency to ensure the stability, growth, and modernization of its core software. This funding will be used to update code, improve documentation and testing infrastructure, and enhance core infrastructure, including addressing vandalism and exploring new data interaction methods. Two new roles will be created, including an OSM Core Software Development Facilitator to coordinate developer efforts and foster community contributions.

Development Sovereign Tech Fund

Rerun 0.21 Update: Graph View, Drag & Drop, and Undo

2024-12-20

Rerun 0.21 introduces a highly anticipated Graph view, along with drag-and-drop functionality and undo capabilities. The new view, built using GraphNodes and GraphEdges archetypes, visualizes various graph structures like ROS graphs and semantic scene graphs. This release also implements time-travel-based undo and features a new force-based graph layout engine, Fjädra, significantly enhancing user experience.

Development Graph View

Open-Source Game Engine boardgame.io Simplifies Turn-Based Game Development

2024-12-20

boardgame.io is an open-source JavaScript game engine designed to simplify the development of turn-based games. By automatically handling complex aspects like state management, multiplayer networking, and AI opponents, developers can focus on writing game logic. The engine supports multiple game phases, lobbies for matchmaking, prototyping capabilities, and various view layer technologies (such as React and React Native). Its powerful plugin system and traceable game logs further enhance development efficiency and player experience.

Development turn-based game

WordPress.org Pauses Services for Holiday Break

2024-12-20

To give volunteers a holiday break, WordPress.org is temporarily pausing several free services: new account registrations, new plugin/theme submissions, and new photo directory submissions. Forums and localization remain open. Founder Matt Mullenweg explains that legal battles with WP Engine are consuming significant time and resources, hindering his work on WordPress improvements. He urges support for WordPress.org and suggests using alternative web hosts not involved in the litigation.

Visualizing Concurrency: A Guide to Understanding Program State Space

2024-12-20

Concurrent programming is notoriously complex due to the difficulty of enumerating all possible states. This article uses visualization to explain how to understand the mechanics of concurrent program execution. It begins by introducing the concept of program state, which is a combination of variable values and instruction location, and then demonstrates the transition process of program states and the generation of state space using a simple C-like program example. The article then introduces concurrent programs, and, using two concurrently executing programs, P and Q, it explains how to represent the state of a concurrent program and the construction of the state space. Finally, the article explores how to use the model checking tool SPIN and the LTL language to verify the correctness of concurrent programs, highlighting the important role of model checking in ensuring the correctness of concurrent programs.

How Browsers Interpret 'chucknorris' as a Color

2024-12-20

This article explores how browsers handle invalid color values in HTML, such as interpreting 'chucknorris' as red. The author explains the browser's tolerance in parsing HTML, attempting to convert invalid values into valid ones. The process of how browsers parse invalid color values is described, with a CodePen link provided demonstrating the process. The author argues that this browser tolerance is a charm of the web, allowing even invalid code to run, showcasing the web's resilience.

Python Weekly Roundup: Markitdown Released, Conda Package Management Debate Heats Up

2024-12-20

This week's Python news includes the release of Microsoft's Markitdown (a tool for converting files to Markdown), PDFMathTranslate (a scientific paper translation tool), and docling (a document preparation tool). Additionally, PEP 768 proposes adding a safe external debugger interface to CPython for real-time debugging. A heated discussion erupted regarding the complexities of Conda package management, analyzing its issues such as version conflicts, virtual environment management, and interactions with pip and setuptools. Finally, Markdown usage sparked a debate highlighting compatibility problems due to differences between various Markdown parsers.

Development

GribStream: A Fast and Efficient Historical Weather Forecast API

2024-12-20

GribStream is a fast, efficient, and easy-to-use historical weather forecast API leveraging the National Blend of Models (NBM) and the Global Forecast System (GFS). It provides access to massive historical weather data; a single HTTP request can retrieve tens of thousands of hourly data points for months in seconds. The API supports various output formats (CSV, Parquet, JSON, etc.) and location queries. Its cost-effective pricing and powerful features allow developers to easily access the data they need without downloading and archiving.

Development historical data

Introducing NDEF: The Language of NFC

2024-12-19

This chapter introduces the Near Field Communication (NFC) Data Exchange Format (NDEF), the common language for NFC devices and tags. NDEF is a binary format structured in messages, each containing several records. Each record comprises a header (metadata) and a payload (content). The chapter details the structure of NDEF records, including Type Name Format, Payload Type, Payload Identifier, and Payload, and shows how to write and read NDEF-formatted messages using Android apps. It also covers NDEF message size limits and record chunking for larger payloads. Finally, a sample application demonstrates creating a simple NFC tag writer app using the PhoneGap-NFC plugin, writing NDEF messages to tags to launch the Foursquare app.

Development

Type-Driven Development: How Types Simplify Complex Programming

2024-12-19

This article explores the concept of "Type-Driven Development," where the author, drawing from experience with the large-scale Heartbeat Typescript project (300k+ lines), demonstrates how Typescript's type system simplifies complex programming problems. The core idea is that by leveraging the type system effectively, allowing types to flow freely across all application layers, starting new features with type definitions, making illegal states unrepresentable, parsing instead of validating data, and maintaining code honesty and specificity, bugs are drastically reduced and development efficiency is improved. The author also shares techniques for using pure functions as type bridges and the type system as an introspection tool, while acknowledging the occasional need to bypass type system constraints.

Clay: A Robust UI Layout Library

2024-12-19

Clay is a lightweight UI layout library for building responsive and accessible user interfaces. Its clean and intuitive API allows developers to easily create complex layouts while maintaining code maintainability and readability. Clay prioritizes performance and accessibility, ensuring fast loading times and user-friendliness through streamlined code and a well-architected design. Whether building simple page layouts or complex interactive applications, Clay empowers developers to build high-quality UIs efficiently.

CCState: A Lightweight and Flexible State Management Library

2024-12-19

CCState is a lightweight, semantically clear, and flexible state management library designed for medium to large single-page applications with complex state management needs. It's built on three basic data types: computed, command, and state, offering a simple and intuitive API with 100% test coverage. Framework-agnostic, CCState works seamlessly with React, Vanilla JS, and other UI frameworks, boasting blazing-fast performance, outperforming Jotai in various scenarios. The core APIs – `state`, `computed`, and `command` – handle basic value units, derived computations, and side effects respectively. React Hooks like `useGet`, `useSet`, `useLoadable`, and `useResolved` simplify data access and Promise handling. CCState also offers subscription capabilities for reactive updates.

Quick Start with TideCloak: Secure React App in 10 Minutes

2024-12-19

TideCloak is an easy-to-use identity and access management system based on Keycloak and secured by Tide's Cybersecurity Fabric. This guide shows you how to build a secure single-page React application with TideCloak in under 10 minutes. First, install Docker and NPM, then run the TideCloak-Dev Docker container. After activating a free developer license, create your React project, install dependencies, and run the application. Users can log in, register, and view customized content based on predefined roles, all managed by TideCloak and secured by Tide's Cybersecurity Fabric.

Development Identity Management

mizu.js: A Lightweight HTML Templating Library for Any-Side Rendering

2024-12-19

mizu.js is a lightweight HTML templating library supporting both client-side and server-side rendering. Its simple syntax, close to vanilla JavaScript and HTML, offers a gentle learning curve. Featuring a rich set of directives for conditional rendering, loops, data binding, and HTTP requests, mizu.js allows building various web applications—single-page apps, static sites, and dynamic pages—without complex build processes. Its flexibility and simplicity make it ideal for both small and large projects.

WebGPU Sponza Demo: A Stunning Browser Graphics Showcase

2024-12-19

Georgi Nikolov's WebGPU Sponza demo showcases the impressive graphical capabilities of the WebGPU API. Users can navigate the scene using keyboard and mouse controls. However, this demo requires a modern browser with WebGPU support. Currently, Chrome 113+, the latest Firefox Nightly builds, and Safari Technology Preview support WebGPU. Update your browser to the latest version if you want to experience this visually impressive demo.

Proxmox Datacenter Manager Alpha Release Announced

2024-12-19

Proxmox has released an alpha preview of its Datacenter Manager. This software centralizes management of all nodes and clusters, offering basic features like virtual machine migration without requiring a cluster network. Developed entirely in Rust, from the backend API to the new frontend, it boasts a modern web UI for improved speed and compatibility. This alpha release aims to gather user feedback, test core features, and foster collaboration. While some features are incomplete and bugs are expected, it's already capable of managing thousands of remotes and virtual machines.

Programmer Turns Movie Frames into AI Art

2024-12-19

A programmer used Python, OpenCV, and PIL libraries to transform movie frames into unique pieces of art. Extracting frames from videos, compressing colors, and generating barcode and circular "iris" images, the project, 'Movie Iris,' visualizes the evolution of a film's color themes. The open-sourced code can process any video, turning everyday moments into art.

Development image processing AI art

Nullboard: A Minimalist Kanban Board for Offline Use

2024-12-19

Nullboard is a minimalist kanban board prioritizing compactness and readability. A single-page web app, it stores all data locally, enabling offline use with JSON import/export functionality. Featuring drag-and-drop, autosave, and undo/redo, Nullboard offers efficient task management. Born from the developer's frustration with existing tools, it's a self-built solution now shared open-source.

Retis: Tracing Packets in the Linux Networking Stack

2024-12-19

Retis is a powerful tool that uses eBPF probes to trace packets within the Linux networking stack. It interacts with control and data paths like Open vSwitch and Netfilter, making it invaluable for debugging network issues, exploring the Linux networking stack, or testing network features. Retis offers packet filtering and tracking, retrieving metadata and contextual information beyond the packet itself. No compilation on the target system is required, and post-processing capabilities, such as reconstructing a packet's journey, are included. User-friendly with pre-built profiles and support for custom probes and filters, Retis provides flexibility and ease of use.

Botan: A Modern C++ Cryptography Toolkit

2024-12-19

Botan is a powerful, open-source C++ cryptography library released under the permissive Simplified BSD license. It aims to be the best option for cryptography in C++, offering tools for implementing various systems like TLS, X.509 certificates, modern AEAD ciphers, PKCS#11 and TPM hardware support, password hashing, and post-quantum crypto schemes. A Python binding is included, with other language bindings available. A feature-rich command-line interface is also provided. Botan 3.6.1 is the latest release and is available through many distributions including Fedora, Debian, Arch, and Homebrew.

Development Cryptography

Trofaf: A Super Simple Live Static Blog Generator in Go

2024-12-19

Trofaf is a super-simple live static blog generator written in Go. Requiring only three directories (posts, public, templates), it generates a static website from markdown files and front matter, automatically updating whenever changes are detected. It offers command-line options for customization and prioritizes simplicity over extensive features, making it ideal for users seeking a straightforward blogging solution.

Fish Shell 4.0 Released: Rewritten in Rust for Enhanced Performance

2024-12-19

Fish shell, a command-line shell known for its user-friendliness and smart features, has released version 4.0. The biggest change is a complete rewrite of the codebase from C++ to Rust, resulting in improved modern computing efficiency. Version 4.0 also boasts many new features, such as more natural keybindings and enhanced history search, designed to make the command line experience easier and more enjoyable. To ensure stability, the project has released a public beta inviting all users to participate in testing.

Development

A Senior Developer's Concerns: Growing Disconnect with Younger Generation

2024-12-19

A veteran developer with 25 years of experience expresses a growing disconnect with younger web developers. He observes a lack of understanding regarding traditional web development methods (non-single-page applications) and confusion between JavaScript frameworks and vanilla JavaScript. This prompts reflection on the evolving abstraction levels in programming education and the focus on specific skills. Using a developer game show as an example, he points out that some 'computer science' questions overly emphasize JavaScript specifics, neglecting broader computational principles. This isn't a criticism of younger developers, but an observation and concern about industry trends, and a reflection on the increasing specialization within the programming field.

Development generational gap

University Revamps Programming Curriculum: Emphasizing Explicit, Systematic Design

2024-12-19

Northeastern University's computer science department has developed a unique programming curriculum that emphasizes explicit and systematic program design, rather than focusing on trendy programming languages. The curriculum starts with a simple teaching language, gradually introducing students to design principles before applying them to industrial languages. This approach cultivates logical reasoning and problem-solving skills for large, complex software. The curriculum also highlights the social aspects of programming, encouraging pair programming to improve communication and collaboration. This method not only enhances students' job prospects but also lays a solid foundation for their future careers.

Archaeological Find Unveils 14 Memory Safety Approaches, Revolutionizing Programming

2024-12-19

A software engineer unearthed an ancient text in a Mayan city, revealing 14 astonishing memory safety approaches far beyond current programming language understanding. These methods include traditional techniques like borrow checking, reference counting, and garbage collection, alongside unprecedented innovations such as region-based memory management, generational references, and linear reference counting. This discovery not only broadens our comprehension of memory safety but also foreshadows the future direction of programming languages, potentially revolutionizing software development.

2 4 5 6 7 8