Category: Development

Turning Google Sheets into Handy Web Apps: A Programmer's Tale

2024-12-31
Turning Google Sheets into Handy Web Apps: A Programmer's Tale

An Ars Technica reporter shares his journey of transforming simple Google Sheets into phone-friendly web apps using Glide. Initially created to streamline takeout ordering, the app manages local restaurant information with efficient search and filtering. He expanded his approach to create apps for recipes and pantry items, improving daily life. The article showcases the power of no-code tools and how simple solutions can solve real-world problems, highlighting ingenuity and a quest for better living.

Development

Linux Kernel Initial Commit SHA Collision Risk

2024-12-31

Kees Cook, a Linux kernel developer, discovered a kernel documentation commit whose ID shares the first 12 characters with the initial commit in the kernel's repository. This potential collision could break various tools relying on unique commit IDs. While not yet merged upstream, this commit serves as a test case to proactively address SHA collisions and prevent future widespread issues.

Development SHA collision

Lightstorm: A Minimalistic Ruby Compiler Boosts Performance with MLIR

2024-12-31

The DragonRuby team developed Lightstorm, a minimalistic Ruby compiler aimed at improving the performance of their cross-platform game engine. Leveraging MLIR, Lightstorm translates mruby VM bytecode into C code, optimizing performance by eliminating load/store and branch operations within the VM's interpreter loop. Benchmark results show performance improvements ranging from 1% to 1200%, with an average reduction of roughly 30% in execution time and cycles. While currently supporting a subset of Ruby, the project validates the feasibility of pre-compiling Ruby code for performance gains. Future plans include replacing critical C components of the engine with compiled Ruby code.

Development Ruby compiler

LineageOS 22.1 Released: 30x Faster Extraction, New Music and PDF Apps

2024-12-31

LineageOS 22.1, based on Android 15 QPR1, is now available with significant improvements. Extraction utilities are 30 times faster, and two new apps have been added: Twelve, a music player, and Camelot, a PDF reader. SeedVault, Etar, and WebView have also been updated. Versioning has been adjusted to align with Android's minor version numbers, making it easier to distinguish Android versions. The project has streamlined its codebase, added support for more devices, and encourages developers to contribute code and translations.

Development

Lightweight Sum Types and Switches for Lua: lua-match

2024-12-31
Lightweight Sum Types and Switches for Lua: lua-match

lua-match is a minimalistic Lua library providing sum types and switch functionality. It leverages a tagging function for a clean and efficient way to handle various data types and conditional branching. With a simple tagging function and a switch table, you can easily implement sum type-like behavior and pattern matching, simplifying your Lua code significantly. The library is open-source and uses the MIT license.

Development Sum Types

Developer Creates Game Boy Advance Game in Zig

2024-12-31

A developer created a Game Boy Advance game, 2048, using the emerging programming language Zig. The article highlights Zig's advantages in embedded programming, particularly its streamlined cross-compilation process, efficient memory management (including packed structs), and powerful compile-time code generation. The author contrasts the development experience using C++ versus Zig, noting Zig's ease and efficiency in handling the Game Boy Advance's peculiar memory layout and hardware registers. While Zig has some shortcomings, such as limited inline assembly and Thumb instruction support, its numerous advantages make it an ideal choice for developing games for retro consoles.

Development Embedded Development

Why Linux Still Isn't Ready for the Desktop

2024-12-30

This article delves into the deep-seated reasons why Linux hasn't achieved widespread desktop adoption. The author highlights several key issues: poor software compatibility between distributions, frequent updates leading to bugs and regressions, insufficient funding resulting in subpar software quality, inadequate hardware driver support, and challenges in communicating within the Linux community. While Linux excels in server environments, its desktop presence remains hampered by these persistent obstacles, hindering its ability to compete effectively with established operating systems like Windows.

Coding Font Tournament Crowns Source Code Pro

2024-12-30
Coding Font Tournament Crowns Source Code Pro

John Gruber of Daring Fireball highlights a fun coding font selection 'tournament' created by Typogram. Users choose their favorite from 32 free monospaced fonts. While some popular choices like Consolas are absent, and some included fonts are less appealing, it's a worthwhile exercise. Improvements since its initial launch include a JavaScript code example instead of CSS and a wider selection of fonts. Gruber recommends disabling font names to reduce bias. His consistent winner? Adobe's Source Code Pro, with IBM Plex Mono a close second.

Development coding fonts

RubyConf 2024: Cloud Native Buildpack Hackday

2024-12-30
RubyConf 2024: Cloud Native Buildpack Hackday

Richard Schneeman is hosting a Cloud Native Buildpack (CNB) hackday at RubyConf 2024 to help developers learn about and contribute to Ruby deployment tools. The event offers tasks of varying difficulty, from modifying existing buildpacks to creating new ones, catering to different skill levels. Even if you can't attend in person, you can still participate using the provided resources.

Database Mocks: More Trouble Than They're Worth?

2024-12-30
Database Mocks: More Trouble Than They're Worth?

While tempting for their speed and simplicity, the author argues that using database mocks for testing ultimately causes more problems than they solve. A user creation example highlights the differences between mocking and testing against a real database. Real database testing reveals potential issues early on, such as unique constraint violations, default value handling, and performance bottlenecks, saving debugging time and reducing production risks. As applications evolve and schemas change, real database tests better handle new validations, data type modifications, and timestamp precision changes, ensuring code aligns with the actual database. The author suggests prioritizing real database testing for data access layers, while using it at the service layer to expose business logic interactions with data. Controllers, however, can mock service calls effectively. Balancing real database tests and mocks is key to building robust applications.

Homa Network Protocol: A New Challenger to TCP/UDP

2024-12-30

Homa is a novel network transport protocol designed for data center applications, aiming to reduce the overhead of transmitting numerous small messages. Unlike traditional TCP/UDP, it eliminates connection setup, employing a unique request-response mechanism and prioritized queues to minimize latency. Currently, Homa is striving for inclusion in the Linux kernel, but its future may heavily rely on hardware acceleration within network devices.

Evaluating LLMs' Code Generation Capabilities: Introducing MultiCodeBench

2024-12-30
Evaluating LLMs' Code Generation Capabilities: Introducing MultiCodeBench

AI-powered programming assistants based on code Large Language Models (LLMs) have become increasingly prevalent, significantly boosting developer productivity. However, existing code generation benchmarks primarily focus on general-purpose scenarios, leaving the performance of LLMs in specific application domains largely unknown. This paper introduces MultiCodeBench, a new benchmark comprising 2,400 programming tasks across 12 popular software development domains and 15 programming languages. Experiments on eleven mainstream LLMs reveal their code generation performance across different domains, offering practical insights for developers in selecting LLMs and guidance for model developers to enhance domain-specific code generation capabilities.

Development Code Generation

ts_zip: Text Compression with Large Language Models

2024-12-30

Fabrice Bellard's new tool, ts_zip, leverages the RWKV 169M v4 language model to achieve significantly higher text compression ratios than traditional methods. While requiring a GPU and 4GB RAM, and slower than conventional compressors (up to 1 MB/s on an RTX 4090), ts_zip demonstrates impressive compression on English and other languages, including source code. Compression ratio is measured in bits per byte (bpb), with results showing superior performance to xz on datasets like enwik8 and enwik9. Deterministic model evaluation ensures consistent decompression across different hardware and software configurations.

Development text compression

Breakthrough in Evaluating Large Language Models for Unit Test Generation

2024-12-30
Breakthrough in Evaluating Large Language Models for Unit Test Generation

Researchers conducted a comprehensive evaluation of the potential of Large Language Models (LLMs) in automating unit test generation. They compared the performance of five open-source LLMs against the closed-source GPT-4 and the traditional tool Evosuite across 17 Java projects, investigating the impact of different prompting strategies. The study found that open-source LLMs offer advantages in data privacy and outperform in certain tasks, but also revealed limitations in LLM-based unit test generation. This research provides valuable insights to guide future applications of LLMs in this area.

Development Unit Testing

Diaspora* Internal Team Communication Notice

2024-12-30
Diaspora* Internal Team Communication Notice

This excerpt is from an internal Diaspora* team communication. It states that the website requires JavaScript to function correctly and provides instructions on how to report content, including the reporting criteria. It also links to Diaspora* project discussions and support, along with website information such as code version, pod statistics, terms of service, contact information, and a touch-optimized mode switch.

Development Website Maintenance

SQLite: The Unbelievable Database Legend

2024-12-30

SQLite, the world's most widely deployed database, is maintained by a three-person team, rejecting external contributions, yet conquering the world with its exceptional performance and stability. Born on a US warship to solve server downtime issues, it has become the cornerstone of trillions of databases. SQLite is not open source, but rather public domain software, with fewer restrictions than any open source license. Its rigorous testing process, even simulating extreme situations like operating system crashes, ensures its incredibly high reliability. However, its unique business model—generating revenue through paid support and memberships—is also noteworthy. The legend of SQLite lies not only in its technical prowess but also in the persistence and innovation behind it.

(avi.im)
Development legend

New Short Message Compression Tool: ts_sms

2024-12-30

ts_sms is a new tool for short message compression using large language models. It employs lossless compression, reducing bits by identifying and eliminating statistical redundancy without information loss. Compared to tools like brotli, ts_sms shows advantages in compressing small messages. Both Linux and Windows versions are available. Its core technology is similar to ts_zip, utilizing a specific padding system compatible with arithmetic coding, eliminating the need to explicitly encode message length.

Development

Execution Units are Often Pipelined

2024-12-30

This blog post explores the pipelining of execution units in out-of-order microarchitectures. The author initially assumed execution units remain occupied until µop completion, but using the Firestorm microarchitecture (A14 and M1) as an example, demonstrates that two integer execution units can handle multiple multiplications concurrently, each taking three cycles. By comparing dependent and independent instruction sequences, the author reveals that many execution unit/µop combinations are heavily pipelined, allowing a µop to be issued while the unit processes others. This reduces execution time for independent instructions from a predicted 6 cycles to 4. Finally, the author explains why instruction latency and bandwidth tables specify reciprocal throughput – it's equivalent to cycles/instruction.

Panel Graphic Walker: Interactive Data Exploration with HoloViz Panel

2024-12-30
Panel Graphic Walker: Interactive Data Exploration with HoloViz Panel

Panel Graphic Walker is a Python library that integrates the power of Graphic Walker into HoloViz Panel for interactive data exploration within Jupyter Notebooks and Panel applications. It offers a Tableau-like interface, allowing users to quickly create dynamic visualizations and tables with minimal code. It supports various data backends and renderers, and can handle large datasets using server-side computation. The project is in its early stages; pinning a specific version is recommended.

Zig: Safer and Faster Than Unsafe Rust?

2024-12-30
Zig: Safer and Faster Than Unsafe Rust?

This blog post compares Rust and Zig by implementing a garbage-collected bytecode interpreter. The author found unsafe Rust incredibly challenging, citing complex aliasing rules and undefined behavior as major obstacles. In contrast, Zig offered a more developer-friendly experience for memory-unsafe operations, including built-in memory leak detection and improved pointer ergonomics. The Zig implementation ultimately proved safer, faster, and easier to develop than its Rust counterpart.

Development Memory Safety

curl Gets a Major Update: Partial File Reading Support

2024-12-30
curl Gets a Major Update: Partial File Reading Support

The upcoming curl 8.12.0 release introduces exciting new functionality: partial file reading. Users can now leverage a new variable system to extract specific byte ranges from files and use them within curl command lines. This adds significant flexibility to how curl handles files, allowing for tasks like extracting the beginning of a file as a username or a section in the middle for a POST body. This significantly expands curl's capabilities, empowering users with a more robust command-line tool.

Development file handling

curl-impersonate Updated: Enhanced Browser Impersonation Capabilities

2024-12-30
curl-impersonate Updated: Enhanced Browser Impersonation Capabilities

lexiforest/curl-impersonate is an active fork of curl-impersonate, enhancing browser impersonation capabilities and supporting more versions and build targets. This project modifies curl to mimic the behavior of major browsers (Chrome, Edge, Safari, and Firefox) during TLS and HTTP handshakes, bypassing website restrictions based on fingerprinting. Updates include support for ECH, ZSTD compression, X25519Kyber768 curves, and more browser versions, offering improved command-line tools and library functions.

Development browser impersonation

86Box: A Journey Back to the x86 Era

2024-12-30
86Box: A Journey Back to the x86 Era

86Box is a powerful x86 emulator capable of running older operating systems and software designed for IBM PC compatible systems from 1981 through the PCI bus era. Featuring a user-friendly interface and high customizability, it allows users to run MS-DOS, older Windows versions, OS/2, and other vintage systems and applications. It supports a wide range of peripherals, including video cards, sound cards, and network adapters. Several manager applications simplify handling multiple virtual machines. Whether you're nostalgic or interested in retro computing, 86Box provides a fascinating glimpse into the past.

Development x86 emulator

MiceWine: Running Windows Apps and Games on Android

2024-12-30
MiceWine: Running Windows Apps and Games on Android

MiceWine aims to run Windows applications and games on Android smartphones. It uses a customized Wine build compiled for Android and Box64 for optimal performance. Currently under active development, it utilizes a Termux-X11 based XServer. Supports Android 10 and above. Adreno 7xx and 6xx GPUs are supported with Turnip/Zink, while others have partial support with native/Zink (experimental). Native Vulkan on non-Adreno GPUs is experimental and requires testing.

Development Windows applications

The Hydraulic Analogy: A Detriment to Electronics Education

2024-12-30
The Hydraulic Analogy: A Detriment to Electronics Education

Many introductory electronics textbooks use the hydraulic analogy to explain circuits, comparing electric current to water flow and batteries to pumps. However, the author argues this analogy is deeply flawed, especially when explaining semiconductor components like JFETs and MOSFETs. The analogy fails to accurately represent their characteristic curves, ultimately hindering learning. The author advocates abandoning this inaccurate analogy and instead learning electronics from more fundamental principles.

Python in 2024: Faster, More Powerful, and More Popular Than Ever

2024-12-30
Python in 2024: Faster, More Powerful, and More Popular Than Ever

2024 saw Python solidify its position as a leading programming language. Python 3.13 introduced a significant performance boost with the experimental 'no-GIL' build and a JIT compiler. The removal of obsolete modules streamlined the language, while its crucial role in AI, machine learning, and data science propelled its popularity to new heights. Python surpassed JavaScript in usage on GitHub and achieved a remarkable 18% in the Tiobe index, solidifying its place among the top three programming languages.

Development

Overloading Lambda Abstraction in Haskell: An Elegant Approach to EDSL Design

2024-12-30
Overloading Lambda Abstraction in Haskell: An Elegant Approach to EDSL Design

This article presents a novel method for overloading lambda abstraction in Haskell to build embedded domain-specific languages (EDSLs). By cleverly using a `Port` type and `encode`/`decode` functions, the author elegantly translates Haskell functions into morphisms within a custom category. This results in a concise and intuitive syntax, avoiding the complexities of Arrow abstractions and the proc notation. The approach requires minimal Haskell code and no metaprogramming or compiler plugins. A flow diagram DSL example demonstrates the method's application, along with discussions on preventing duplication and handling side effects.

Development Lambda Abstraction

Issues with Object-Oriented Programming in Guile

2024-12-30

This article explores the discrepancies between Guile Scheme's object-oriented programming system, GOOPS, and Common Lisp's Object System (CLOS), highlighting GOOPS's shortcomings. GOOPS lacks the elegance and robustness of CLOS in several key areas: setter specialization doesn't compose with inheritance, it lacks before/after/around method qualifiers, method combination algorithms are not controllable, method argument specialization is limited, keyword arguments are unsupported, and documentation strings are absent. The author suggests improvements such as mimicking CLOS behavior, adding method qualifiers, and enhancing method argument specialization to improve code elegance and reduce bugs.

Development

Building a Full Computer Emulator in C: From NAND Gate to Tetris

2024-12-30
Building a Full Computer Emulator in C: From NAND Gate to Tetris

This project aims to build a complete computer emulator in C from scratch, following the NandToTetris course. It starts with a single NAND gate and progressively builds more complex chips like multiplexers and demultiplexers, ultimately culminating in a system capable of running Tetris. Unlike other emulator projects that start at the CPU level, this one meticulously constructs the entire hardware stack. The project is in its early stages, with the author planning to implement an assembler after completing the hardware components.

1 2 185 186 187 189 191 192 193 202 203