Category: Development

AP5 Reference Manual: A Logic-Based Extension to Common Lisp

2024-12-21

AP5 is an extension to Common Lisp that allows users to "program" at a more "specitional" level, focusing on what the machine should do rather than how. It combines aspects of Lisp and the Gist specification language, incorporating compilable parts of Gist and offering annotation mechanisms for performance tuning. AP5 uses a relational model to represent data and supports a first-order logic language for data access and manipulation. Programmers define relations, rules, and constraints, optimizing performance through annotations. The manual details AP5's syntax, database operations, rules, types, equivalence, and implementation specifics, providing numerous examples and explanations.

FindMy.py: An All-in-One Python Library for Querying Apple's FindMy Network

2024-12-21

FindMy.py is a Python library providing everything needed to query Apple's FindMy network. It unifies the fragmented Find My ecosystem, offering a cross-platform solution supporting various devices (AirTags, iDevices, etc.) and authentication methods (including SMS and Trusted Device 2FA). It features both async and sync APIs. Currently in Alpha, the API may change, but core functionality is stable.

Development

MarkItDown: Free Online Markdown Converter

2024-12-21

MarkItDown is a free online tool that converts various file formats (like Word, PDF, HTML, etc.) into standard Markdown. Powered by Microsoft's open-source Markitdown project, it offers fast and reliable conversions, perfect for bloggers, note-takers, and technical writers. No downloads or installations are required; simply upload your file and get clean, organized Markdown output. It's a secure and efficient way to manage your content.

Development online tool

Technical Debt vs. Technical Assets: A Wise Investment Strategy

2024-12-21

This article explores the difference between technical debt and technical assets. Technical debt, similar to financial debt, represents code issues that must be addressed, such as bugs and poor code readability, hindering development efficiency. Technical assets, on the other hand, are proactive investments in known problems, like building high-quality SDKs, reducing future maintenance costs and increasing development freedom. The article advises prioritizing the repayment of technical debt before investing in technical assets, leveraging proven processes and technologies to avoid accumulating technical debt and ultimately achieving higher development efficiency and product quality.

Rules to Avoid Common Extended Inline Assembly Mistakes

2024-12-21

This article isn't an inline assembly tutorial, but rather a summary of six rules to avoid common mistakes. The author emphasizes that inline assembly is treacherous and should be avoided whenever possible, as modern compilers offer intrinsics and built-ins for most use cases. If unavoidable, the rules are: use the `volatile` qualifier; use a `memory` clobber if accessing memory; never modify input constraints; never call functions from inline assembly; don't define absolute assembly labels; and use the assembler's local label feature to avoid label conflicts. The article concludes by encouraging readers to practice applying these rules by reviewing online tutorials and even LLM-generated code.

NoDB: Processing Payments Without a Database

2024-12-21

Alvaro Duran's "The Payments Engineer Playbook" introduces a revolutionary approach to payment system design: processing payments without a database. He argues that the prevalence of asynchronous programming stems from the assumption of database necessity. Using event sourcing, each step in the payment process is recorded as an event, not as a persistent state. These events are temporarily stored in memory, and the system reconstructs the payment status from the event stream, eliminating the need for persistent storage. This high-performance, high-reliability approach, inspired by high-frequency trading, allows for quick recovery from outages through hot backups. The article details this concept using a payment flow example and looks toward future applications in payment systems.

@celine/bibhtml v3.0.3: A Web Components-Based Referencing System

2024-12-21

@celine/bibhtml, a Web Components-based referencing system for HTML documents, has released version 3.0.3. It aims to provide a user experience similar to LaTeX/BibTeX referencing, using Citation.js under the hood and gracefully degrading when citations and references are malformed or JavaScript is disabled. Supporting BibTeX, unstructured text, DOI, and Wikidata formats, it offers three custom elements: ``, ``, and ``, simplifying reference management in HTML.

Development Reference Management

Groundbreaking Advance: Safely Compiling C to Rust

2024-12-21

Researchers have developed a novel method for safely compiling C code into Rust. This technique utilizes static analysis and type-directed translation to avoid reliance on Rust's `unsafe` blocks, thus guaranteeing memory safety. The method has been successfully applied to code from the HACL* cryptographic library and EverParse libraries, resulting in an 80,000-line pure Rust verified modern cryptographic library—a first of its kind.

Development C compilation

Programmer Creates Pseudo-3D Game in Bash

2024-12-20

A programmer, izabera, has developed a surprisingly impressive pseudo-3D game using the Bash scripting language. This project, a homage to the classic game Wolfenstein 3D, is open-source on GitHub. The code is concise yet the result is stunning, showcasing the power of Bash and the programmer's ingenuity. The repository includes the game source code and demonstration videos. Developers interested in learning more can check it out on GitHub.

Development Game 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.

← Previous 1 3 4 5 6 7 8