Category: Development

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

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.

1 2 3 5 7 8 9