Category: Development

Swift's New Forked Framework Simplifies Shared Data Management

2024-12-17

Developer Drew McCormack launched Forked, a new Swift framework for simplifying shared data management across single and multiple devices. Inspired by Git's merge mechanism, Forked supports branching and merging within a single file, achieving eventual consistency. It doesn't require a complete change history, only enough versions for three-way merging. Forked uses structs instead of classes, supports Codable, and seamlessly integrates with cloud services like iCloud. It even tackles race conditions from concurrent access and supports custom merge logic or built-in CRDT algorithms. CloudKit sync is achieved with just a few lines of code.

CHICKEN Scheme's New Compiler: CRUNCH – A Statically Typed Scheme Compiler

2024-12-17

This article introduces CRUNCH, a new compiler for a statically typed subset of the Scheme programming language. Built on top of the CHICKEN Scheme system, it compiles Scheme code into portable C99 code. CRUNCH aims to provide a high-performance, lightweight Scheme compiler, addressing shortcomings in existing Scheme systems regarding performance and portability. It's particularly well-suited for game development, virtual machine creation, and embedded systems programming. While CRUNCH has limitations in supported Scheme features, it achieves efficient code generation through type inference and various optimizations, seamlessly integrating with the CHICKEN Scheme ecosystem.

Development Statically Typed

Microsoft Open Sources Multilspy: Simplifying Language Server Client Development

2024-12-17

Microsoft has open-sourced Multilspy, a Python library designed to simplify building applications around language servers. Supporting Java, Rust, C#, and Python, Multilspy automates downloading server binaries, setup/teardown, and provides a simple API. It interacts with language servers to obtain static analysis results like code completion, symbol definitions, and references—crucial for AI-assisted code generation techniques such as Monitor-Guided Decoding.

Best Practices for Representing Inheritance in SQL Server Databases

2024-12-17

This article explores best practices for representing inheritance relationships in SQL Server databases. Three common approaches are presented: single table inheritance, concrete table inheritance, and class table inheritance. The advantages and disadvantages of each are detailed. Single table inheritance is simple but has scalability and data integrity issues; concrete table inheritance solves these but suffers from inefficient queries; class table inheritance balances simplicity and efficiency, making it the preferred choice in most scenarios. Alternative approaches using JSON for subtype-specific fields and normalized database design are also discussed.

Make Your QEMU 10 Times Faster: A Weird Trick

2024-12-17

While debugging NixOS tests, Linus Heckemann discovered painfully slow data copying times (over 2 hours) in a QEMU virtual machine. Performance analysis with `perf` revealed that QEMU's 9p server used an inefficient linked list (O(n) complexity) for file lookups. By switching to a hash table provided by glib (O(1) complexity), he reduced the test time to 7 minutes and successfully contributed the optimization to the QEMU project.

Development 9p protocol

Advent of Code on the Nintendo DS: A Rust Programming Challenge on an Embedded System

2024-12-16

The author tackled Advent of Code 2024 using Rust on a Nintendo DS. This detailed account chronicles the journey, from setting up a cross-compilation environment and writing Rust code for a runtime-less embedded system to overcoming challenges in memory management, interrupts, and screen output. The author successfully displays the Advent of Code solution on the DS screen. The article showcases strong programming skills and deep understanding of embedded systems, highlighting the techniques and enjoyment of programming in resource-constrained environments.

Development Nintendo DS

Principles of Educational Programming Language Design: Why the Lack of Consensus?

2024-12-16

This paper explores the evolution of principles in educational programming language design over several decades. While the work of Wirth and others emphasized principles like simplicity and modularity, disagreement persists among educators regarding suitable languages for novice programmers. The article analyzes how the interpretation of these principles shifts in the context of current technologies and why a common, globally used educational programming language hasn't emerged. The authors discuss the relative merits of pedagogical versus industry languages and argue that each generation of learners needs its own language.

OpenAI Outage: Unexpected Load from New Telemetry Service Causes Major Disruption

2024-12-16

OpenAI experienced a major service disruption on December 11th, stemming from a newly deployed telemetry service. Intended to improve reliability, this service unexpectedly generated massive Kubernetes API server load, saturating the servers and causing the Kubernetes control plane to fail in most large clusters. This led to the breakdown of DNS-based service discovery. The incident highlights the unpredictable interactions within complex systems and the challenges of testing for failure modes that only appear under full load. OpenAI restored service by scaling down clusters, blocking network access to Kubernetes admin APIs, and scaling up API servers.

Go Protobuf's New Opaque API Improves Performance and Safety

2024-12-16

The Go team released a new Opaque API for Go Protobuf, coexisting with the existing Open Struct API. This new API decouples generated code from its underlying memory representation, leading to performance improvements, reduced memory allocations, and enabling optimizations like lazy decoding. By hiding struct fields and accessing them only through accessor methods, it prevents pointer-related bugs and accidental sharing. Migration involves enabling the Hybrid API, using the `open2opaque` tool, and then switching to the Opaque API. The existing Open Struct API remains supported.

(go.dev)
Development

Backward-Incompatible GRUB2 Change Causes BIOS Boot Loop

2024-12-16

The author's Debian and Kali Linux systems experienced boot loops after a GRUB2 update added the command `fwsetup --is-supported`. Older GRUB versions didn't recognize this parameter. The issue stemmed from an older `efifwsetup.mod` module, leftover from a system backup restoration, causing a conflict between the new GRUB configuration and the old module. Installing the `grub-efi-amd64-bin` package resolved the problem. This highlights the importance of backward compatibility in software updates and the need to consider potential side effects when making partial changes in complex software like GRUB2.

Development boot loop

Ruby Conference Roundup: A Global Overview

2024-12-16

Ruby Video Talks is a website that aggregates information on Ruby developer conferences worldwide. From major events like RubyConf 2024 (70 talks) and Rails World 2024 (46 talks) to smaller regional meetups, the site provides a comprehensive calendar. It highlights key speakers like Matz and offers search functionality by date, location, and topic, making it easy to find relevant events. Upcoming conferences in 2025, such as Balkan Ruby and Friendly.rb, are also listed, promising even more opportunities for the Ruby community.

Guile-powered Emacs: A Bold Rewrite Project

2024-12-16

Emacs, renowned for its extensibility, faces performance and expressiveness limitations with its core language, Emacs Lisp (Elisp). To address this, the Guile-Emacs project aims to replace Elisp in Emacs with Guile Lisp. After years of development and dormancy, Guile-Emacs has been revived by developers Robin Templeton and Larry Valkama. The project aims to leverage Guile's compiler and performance advantages to improve Emacs' speed and extensibility while maintaining Elisp compatibility. The ultimate goal is to rewrite a significant portion of Emacs's C code in Lisp, significantly enhancing its customizability. While facing technical and political challenges, the project presents exciting possibilities for the future of Emacs.

Development

Rust-based SQLite Rewrite Achieves 100x Tail Latency Reduction

2024-12-16

Researchers from the University of Helsinki and Cambridge have rewritten SQLite in Rust, creating Limbo, a project leveraging asynchronous I/O and io_uring to drastically improve performance. By utilizing asynchronous I/O and storage disaggregation, Limbo achieves up to a 100x reduction in tail latency, particularly beneficial in multi-tenant serverless environments. The key improvement comes from replacing synchronous bytecode instructions with asynchronous counterparts, eliminating blocking and enhancing concurrency. While improvements are most pronounced at high percentiles, this makes Limbo ideal for applications demanding high reliability.

(avi.im)
Development Asynchronous I/O

Converge Hiring Senior Full-Stack Engineer: Build a Million-Dollar Marketing Measurement Platform

2024-12-16

Converge, a Y Combinator-backed company with over $1M in ARR, is hiring a senior full-stack engineer. The small team (only 4 people) serves 180+ customers, processing billions of dollars in annual sales and billions of events per month. You'll build a unified marketing measurement stack, including customer data collection, identity resolution, and marketing attribution, with direct customer interaction and significant ownership. The company values action-orientedness, continuous learning, positive attitudes, and simplicity. Requires extensive full-stack experience, proficiency in React and backend development, and knowledge of production software deployment and scaling.

Xiaomi Home Assistant Integration Component Officially Launched

2024-12-16

Xiaomi officially released the Xiaomi Home Assistant integration component, enabling users to integrate their Xiaomi IoT smart devices into Home Assistant. The component supports various installation methods, including Git clone, HACS, and manual installation. Users need to log in with their Xiaomi account; multiple accounts and region selection are supported. The component supports most Xiaomi smart home devices but currently excludes Bluetooth, infrared, and virtual devices. Control methods include cloud control and local control (requiring a Xiaomi central gateway or devices with built-in gateway functionality). It maps MIoT-Spec-V2 to Home Assistant entities. The component also supports multiple languages and a debug mode, prioritizing user privacy and security, but requires careful storage of configuration files.

Coder's Million-Dollar Mistake: A Bug with a Dramatic Twist

2024-12-16

Trey, a programmer working for a 3G telecom startup, wrote an automated payment testing program intended for small test transactions. Three bugs in the code, however, caused the program to credit his test account with $100 every five minutes. A lack of liveness check meant that when one gateway failed, the program continued running for hours, accumulating a substantial sum. The next morning, Trey faced questioning from the security team until his department head explained the situation, but the test account balance was reset to zero.

Modelica Association: Efficiently Modeling Complex Systems

2024-12-16

The Modelica Association promotes the Modelica language and its associated tools. Modelica is an object-oriented language for modeling and simulating complex cyber-physical systems, particularly adept at acausal modeling of reusable components governed by mathematical equations. The association provides language specifications, tools, libraries, and community support to enable users to efficiently model systems.

Minimalist NAS: frood, an Alpine initramfs System

2024-12-16

The author introduces frood, a NAS system built as a single, large initramfs image containing a complete Alpine Linux system. This design results in fast boot times and reduced wear on storage devices. Configuration is straightforward; files reside directly in the image, eliminating complex DSLs or configuration tools. The system state is tracked with Git, and each boot is effectively a fresh start, preventing configuration clutter. The article details the system's build process, including the use of the alpine-make-rootfs script, installation of essential packages, and writing startup scripts. QEMU testing and the system image update procedure are also described. In essence, frood is a lightweight, easily maintainable, and deployable NAS system whose simple design philosophy is worth emulating.

Development

HTTP/3's Current State: Challenges and Opportunities on the Path to Adoption

2024-12-16

The HTTP/3 specifications are complete but await final publication. Server-side support is surprisingly high, particularly among top websites. Major players like Cloudflare have enabled HTTP/3, and browsers widely support it. However, client-side support, such as in curl, remains incomplete, largely due to the lagging development of QUIC-enabled TLS libraries. OpenSSL's QUIC support has been delayed, while alternatives like BoringSSL and quictls have limitations. While HTTP/3 promises speed improvements, real-world benefits depend on network conditions. Widespread adoption hinges on specification release and mature TLS libraries.

Development

Rust's Vec::drain: Leveraging Drop for Safety

2024-12-16

This article delves into Rust's Vec::drain method and its Drop implementation, showcasing how ownership prevents subtle bugs—memory-related and otherwise. Vec::drain optimizes performance by maintaining a mutable reference to the original vector and only reading/updating the original storage. The key lies in the Drain struct's Drop implementation, which uses a DropGuard to ensure that even if the iterator is dropped prematurely, remaining elements are safely moved back into the original vector, guaranteeing memory safety. The article thoroughly explains the implementation details of Drain and DropGuard, addressing special cases like zero-sized types and pointer provenance.

Development

GNU Make's New --shuffle Mode: Uncovering Hidden Bugs in Parallel Builds

2024-12-16

For eleven years, elusive bugs plagued parallel builds in GNU Make. Inspired by this, a new `--shuffle` mode was developed to randomly reorder Makefile targets, simulating non-deterministic build order. This effectively revealed hidden bugs in over 30 packages, including gcc, vim, and ghc. Now part of GNU Make 4.4, this mode is accessible via `make --shuffle` or the `GNUMAKEFLAGS=--shuffle` environment variable. This powerful feature helps developers identify and resolve parallel build issues, highlighting the continuous improvement of software development tools.

Google's New Load Balancer, PReQuaL: Beyond CPU Load Balancing

2024-12-16

Google Research presented PReQuaL (Probing to Reduce Queuing and Latency), a novel load balancer, at NSDI 2024. Unlike traditional CPU load balancing, PReQuaL actively probes server latency and active requests to select servers, dramatically reducing tail latency, error rates, and resource consumption in systems like YouTube. Deployed in YouTube for over a year, PReQuaL has significantly improved system utilization. This innovative approach challenges conventional wisdom and offers a new paradigm for high-performance distributed systems.

Development load balancing

A Software Engineer's CAD and 3D Printing Journey: An Overengineered Webcam Raiser

2024-12-16

A seasoned software engineer, tired of the virtual world of coding, yearned to create in the real world. He acquired a Bambu Lab X1C 3D printer and quickly mastered 3D printing. He then started learning Fusion 360 CAD software, surprisingly finding its constraint concepts similar to iOS UI constraints, and parametric CAD design echoing functional programming. His first project: an overengineered webcam raiser to solve the issue of the webcam obstructing his screen. This project not only provided him with the joy of 3D printing and CAD design but also a deep understanding of the manufacturing, material, and other details that need to be considered during the design phase.

Adélie Linux 1.0-BETA6 Released: Enhanced Compatibility and Richer Features

2024-12-16

Adélie Linux has released its 1.0-BETA6, supporting 32-bit and 64-bit ARM, POWER, and x86 architectures, spanning smartphones, game consoles, and supercomputers. This release boasts over 35 new packages, updates to GCC 13, LLVM 18, Rust 1.80, and Linux kernel 6.6 LTS, along with improved GRUB and Wayland support. Numerous bugs have been squashed, and the user experience has been enhanced. While some known issues remain, the Adélie team is actively working on solutions and welcomes bug reports and feedback.

Development Linux distribution

Cyphernetes: Automating Cloud-Native Kubernetes Cluster Management

2024-12-16

Cyphernetes is a project that automates the management of cloud-native Kubernetes clusters. It significantly reduces operational complexity by simplifying deployment, upgrades, and management processes. Imagine effortlessly scaling your cluster to handle surges in traffic, automatically repairing failures, and ensuring service stability—all without manual intervention. Cyphernetes acts like an expert Kubernetes cluster administrator, safeguarding your applications 24/7, allowing you to focus on innovation.

Development Automated Operations

Dillo Browser: 25 Years of History, a Resurrection Story

2024-12-16

The Dillo web browser, born in 1999, has weathered 25 years of development. It has stalled several times but persevered. Initially led by Jorge Arellano Cid, it went through major GTK and FLTK phases, with key developers changing hands and the project experiencing ups and downs. In 2024, Rodrigo Arias Mallo took over, and with community help, released version 3.1.1, bringing this veteran browser back into the spotlight. Dillo's story exemplifies the spirit of open source and is a legendary tale of technological legacy and innovation.

Development open-source browser

Hyperbola GNU/Linux-libre: A Lightweight OS Committed to Freedom and Long-Term Support

2024-12-15

Hyperbola GNU/Linux-libre is a community-driven operating system project aiming to provide a fully free, stable, secure, simple, and lightweight long-term support distribution. It leverages Arch Linux's package management and Debian's security patches, adhering to the GNU Free System Distribution Guidelines. Supporting i686 and x86_64 architectures, Hyperbola plans to release a BSD-based system, HyperbolaBSD. Recent news includes continued support for 32-bit systems, discontinuation of Debian patchsets beyond version 12, and concerns expressed regarding the Free Software Foundation's statement on machine learning.

GitHub Project Map: Visualizing 400,000+ Projects

2024-12-15

Developer Anvaka created an interactive map visualizing over 400,000 GitHub projects using publicly available data. The project uses Jaccard similarity to calculate relationships between projects and the Leiden algorithm for clustering. The result is a visually stunning representation of the GitHub ecosystem, allowing users to search and explore connections between projects, revealing its complexity and richness.

Development project relationships

Vercel Launches ƒun: A Local Serverless Function Runtime

2024-12-15

Vercel has released ƒun, a local development runtime for serverless functions, enabling developers to emulate the AWS Lambda environment locally. Supporting various runtimes like Node.js and Python, ƒun allows for quick testing and debugging of serverless functions without cloud deployment. While striving for a close approximation of the real Lambda environment, ƒun has some key differences, notably in process sandboxing and user permissions.

Drag and Drop Images into Bevy 0.15 on the Web

2024-12-15

This post demonstrates integrating web native APIs via WASM with Bevy 0.15 to enable drag-and-drop image functionality in a web browser. It details using wasm-bindgen, gloo, and bevy_channel_trigger to handle DOM events in Rust, extract file data, and pass it to the Bevy engine for image loading and rendering. The process mirrors JavaScript implementation but leverages Rust's capabilities, addressing error handling and event listener memory leaks. The result is a Bevy web application capable of loading and displaying dropped PNG images.

Development Web Development
1 2 3 5 7 8