Category: Development

RubyBoy: A Game Boy Emulator in Ruby, Now with WebAssembly!

2025-02-08
RubyBoy: A Game Boy Emulator in Ruby, Now with WebAssembly!

The author built a Game Boy emulator called RubyBoy in Ruby and released it as a gem. This article details the development process, covering UI implementation, ROM loading, MBC chip support, CPU and PPU implementation, and performance optimization strategies. To boost performance, the author employed YJIT, avoided unnecessary Hash creation, optimized loop calculations, and leveraged the improvements in Ruby 3.3, resulting in significant speed improvements. Ultimately, RubyBoy successfully runs in the browser thanks to WebAssembly, enabling cross-platform execution.

Development Game Boy emulator

VS Code Remote Editing: Full-Scale Invasion or Convenient Development?

2025-02-08
VS Code Remote Editing: Full-Scale Invasion or Convenient Development?

This post discusses the security implications of VS Code's remote editing feature. While VS Code offers remote editing similar to Emacs's Tramp, it differs significantly. Instead of a lightweight connection, VS Code downloads an agent that runs a Node.js program on the remote server, granting it extensive access: filesystem navigation, file editing, shell process launching, and self-persistence. The author argues this approach is overly 'invasive' and poses security risks, especially on development or production servers. While the author's team found a workaround, the post serves as a cautionary tale about the potential vulnerabilities.

(fly.io)
Development Remote Editing

Chrome's Manifest V3: A Nightmare for Ad Blocker Developers?

2025-02-08
Chrome's Manifest V3: A Nightmare for Ad Blocker Developers?

Google's Chrome Manifest V3 (MV3) extension architecture overhaul continues to cause headaches for developers of ad blockers, content filters, and privacy tools. While Google claims MV3 aims to improve security and performance, developers like those behind AdGuard and uBlock Origin find its restrictions far more severe than anticipated, limiting or even preventing core functionality. Developers complain that MV3 increases development difficulty and accuse Google of slow responses to developer feedback, even subtly undermining extensions through UI changes. This raises questions about Google's true intentions: is it about improving security and privacy, or subtly limiting extension capabilities?

Development Chrome Extensions

LLMs Fail at Complex OCR: Why Large Language Models Struggle with PDFs

2025-02-07
LLMs Fail at Complex OCR: Why Large Language Models Struggle with PDFs

Pulse, a company aiming to extract data from spreadsheets and PDFs, discovered a critical limitation in using Large Language Models (LLMs) for OCR. While LLMs excel at text generation and summarization, they falter significantly when dealing with complex PDFs and tables. The probabilistic nature of LLMs and their abstract image processing lead to hallucinations, data loss, and misinterpretations, posing significant risks, especially with financial and medical data. Furthermore, LLMs are vulnerable to prompt injection attacks, raising security and ethical concerns. Pulse ultimately abandoned LLMs for OCR and is developing a custom solution integrating traditional computer vision algorithms and vision transformers.

Development

How AI is Changing the Tech Interview

2025-02-07
How AI is Changing the Tech Interview

AI's growing proficiency in complex tasks like coding is challenging traditional technical interview methods. The author recounts their experience, highlighting the shortcomings of LeetCode and system design interviews: overemphasis on algorithms and formulaic approaches, disconnect from real-world work. AI can now easily pass some technical interviews, forcing companies to rethink their processes. The author proposes incorporating code reviews, as they better assess candidates' ability to evaluate code quality, security, performance, etc. – crucial in the age of AI.

Development Technical Interview

ExpenseOwl: A Minimalist Expense Tracker for Your Homelab

2025-02-07
ExpenseOwl: A Minimalist Expense Tracker for Your Homelab

Tired of complex expense tracking apps? ExpenseOwl offers a minimalist solution. It uses a simple JSON file for data storage, provides a modern pie chart visualization of monthly spending, and features both command-line and web interfaces. No complicated setup or unnecessary features – just add, delete, and view expenses to easily manage your finances. ExpenseOwl also supports custom categories and currencies and deploys easily in Docker.

Development expense tracking

Emerge Tools: Example Android & iOS App Performance Testing Project

2025-02-07
Emerge Tools: Example Android & iOS App Performance Testing Project

This open-source project demonstrates how to leverage Emerge's suite of tools for size analysis, snapshot testing, dead code detection, and performance testing using Android and iOS example apps. The apps are available on the App Store and Google Play, and the repo includes comprehensive documentation and example Gradle/fastlane configurations.

Development

Zep AI: Building the Foundational Memory for Next-Gen AI Agents

2025-02-07
Zep AI: Building the Foundational Memory for Next-Gen AI Agents

Zep AI is building the foundational memory layer for next-generation AI agents. Their continuously learning knowledge graph technology allows AI systems to build rich, temporal understanding from user interactions and business data. Trusted by industry leaders like Mattel and WebMD, Zep enhances AI application personalization and accuracy. They're seeking a Staff Engineer to build scalable, innovative solutions and shape technical strategy alongside the founder, working across infrastructure, APIs, and front-end technologies. The ideal candidate will have 7+ years of hands-on software engineering experience, expertise in at least two of Python, TypeScript, or Go, and a proven track record in system architecture, production-scale software, and team leadership.

Development

20 Years of Firefox Code Signing: From Manual to Automated

2025-02-07

This article chronicles the evolution of Firefox code signing at Mozilla over the past 20 years. Initially, the process was incredibly manual, requiring physical machines, USB keys, and extensive hand-crafted steps. Through technological advancements, Mozilla automated signing, moving from improved scripts to dedicated signing servers, and finally adopting Taskcluster and the Autograph service. Today, Firefox code signing happens thousands of times a day, significantly enhancing software security.

Development

Pantograph: A Fluid and Typed Structure Editor

2025-02-07
Pantograph: A Fluid and Typed Structure Editor

Pantograph is a revolutionary structured code editor that operates directly on a typed syntax tree, unlike traditional editors that parse text and then typecheck. By introducing the concept of tree selection and "zipper editing," Pantograph simplifies editing existing programs, allowing programmers to make complex code modifications more easily while maintaining type safety. It cleverly handles type diffs and allows for the existence of some errors in the program, facilitating gradual debugging. Pantograph's design is language-generic, enabling developers to define new editors based on its framework.

The Five Hats of a Programmer: Context-Driven Coding Styles

2025-02-07

A seasoned programmer reflects on years of experience, outlining five distinct "coding hats": Captain's Hat (careful, deliberate, for critical systems), Scrappy Hat (quick prototypes, minimal ceremony), MacGyver Hat (rapid experimentation, messy code acceptable), Chef's Hat (focus on code aesthetics), and Teacher's Hat (prioritizing code clarity and understanding). The author argues that choosing the right coding style based on context is crucial, avoiding dogmatic adherence to a single "correct" way for optimal efficiency.

Three.js Dynamic LOD: A Nanite-Inspired Approach

2025-02-07
Three.js Dynamic LOD: A Nanite-Inspired Approach

This project attempts to reproduce a dynamic LOD system in Three.js, similar to Unreal Engine 5's Nanite. It starts by clustering a mesh into meshlets, grouping adjacent meshlets, merging them (shared vertices), simplifying the mesh using meshoptimizer (halving triangles, max 128), and finally splitting it (currently into 2, aiming for N/2). The project is early-stage; future work includes improving LODs, DAG cuts, and streaming geometry to the GPU. Research includes Nanite, multiresolution structures, and batched multi-triangulations.

Development

Founding Engineer: Build the AI-Powered Data Systems at PropRise

2025-02-07
Founding Engineer: Build the AI-Powered Data Systems at PropRise

PropRise, a rapidly growing real estate data platform, is seeking a senior Founding Engineer to design and build its core data architecture. You'll work with a tech stack including TypeScript, Next.js, React, Postgres, and GCP, handling millions of property records. Responsibilities include building robust data pipelines, quality assurance systems leveraging AI, and internal tools for faster outlier detection. This is a ground-up opportunity reporting directly to the CTO with significant equity, ideal for engineers passionate about solving complex problems, excited by the intersection of AI and data quality, and eager to play a key role in a fast-growing startup.

Development Data Engineering

TRRE: Transductive Regular Expressions – Beyond Classic Regex

2025-02-07
TRRE: Transductive Regular Expressions – Beyond Classic Regex

TRRE is a prototype extension of regular expressions designed for more intuitive text editing and pattern matching. Unlike traditional regex, TRRE uses the `:` symbol to define transformations, simplifying text replacement, insertion, and deletion. It provides a `grep`-like command-line tool for efficient text manipulation tasks like word substitution, character insertion/deletion, and even simple encryption/decryption. While still a prototype, TRRE shows promise, especially for complex tasks where its performance can even surpass `sed` in certain scenarios.

Development

The Rise of Personal Software: Fueled by AI

2025-02-07

After a decade of developing software for others, the author experienced a burnout. The advent of AI has made building personal software easier than ever. This led the author to embrace the concept of 'personal' or 'selfish' software – focusing on solving their own problems and open-sourcing the projects. This approach reignites passion, allows for faster iteration, and leverages AI to efficiently learn and solve problems. Even small, one-off scripts become enjoyable, fostering a renewed sense of purpose in development.

Development personal software

The Inevitable Borrow Checker in Inko: A Trade-off Between Stack Allocation and Compile-Time Checks

2025-02-07

The Inko language designer explores optimal solutions for stack allocation and borrow checking. By default, Inko types are heap-allocated, offering flexibility but incurring performance overhead. To improve performance, an `inline` modifier is introduced to support stack allocation, but this brings new challenges: how to handle borrowing and move semantics while guaranteeing memory safety. The article explores several solutions, including allowing field assignments, introducing unique types, and escape analysis, ultimately concluding that compile-time borrow checking is the best approach, but its implementation complexity is high and it won't be implemented in the short term. Currently, Inko still uses a strategy that does not allow reassignment of inline type fields.

Development

arXivLabs: Experimental Projects with Community Collaborators

2025-02-07
arXivLabs: Experimental Projects with Community Collaborators

arXivLabs is a framework enabling collaborators to develop and share new arXiv features directly on the website. Participants embrace arXiv's values of openness, community, excellence, and user data privacy. arXiv only works with partners adhering to these principles. Got an idea to enhance the arXiv community? Learn more about arXivLabs.

Development

Sub-100MB LLM Now Pip-installable: Introducing llm-smollm2

2025-02-07
Sub-100MB LLM Now Pip-installable: Introducing llm-smollm2

A new plugin, llm-smollm2, bundles a quantized SmolLM2-135M-Instruct LLM under 100MB, making it pip-installable. The author details the creation process, from finding a suitable sub-100MB model (limited by PyPI size restrictions) to suppressing verbose logging from llama-cpp-python and packaging for PyPI. While the model's capabilities are limited, it's presented as a valuable learning tool for understanding LLM technology.

Development Model Quantization

Realistic Terrain and Hydrology Generation with Particle-Based Hydraulic Erosion

2025-02-07

This article presents a particle-based hydraulic erosion simulation technique capable of generating realistic terrains with rivers, lakes, and other hydrological features. By extending a previous particle-based erosion model and introducing 'stream maps' and 'pool maps' to track water flow and accumulation, the system simulates river migration, waterfall formation, floodplains, and other geographical phenomena. The method is simple, efficient, and tightly coupled with the terrain, producing highly realistic landscapes that remain smooth even during real-time rendering.

Kubernetes: A Surprising Analogy to Entity-Component-Systems

2025-02-07

This blog post unveils a striking similarity between Kubernetes' resource management model and the Entity-Component-System (ECS) pattern commonly used in game development. Kubernetes objects mirror ECS entities, possessing unique identifiers; the `spec` and `status` fields correspond to components, representing desired and observed states respectively; while controllers, schedulers, and the Kubelet act as systems, reconciling discrepancies between desired and actual states. This architectural resemblance clarifies Kubernetes' design and offers fresh insights into its declarative nature.

Development

Linux Kernel Maintainer Hector Martin Steps Down

2025-02-07

Hector Martin, a prominent Linux kernel developer, has announced his resignation from maintaining the kernel, specifically removing himself as maintainer for the Apple/ARM platform. He cited a loss of faith in the kernel development process and community management. While he may submit patches independently in the future, his departure sparks discussion about the Linux kernel's community management.

Development Community Management

Google reCAPTCHA vs. GDPR: Privacy Risks and Solutions

2025-02-07

Google's reCAPTCHA technology, used to identify website visitors as human, clashes with the GDPR. reCAPTCHA analyzes user behavior (mouse movements, keystrokes, etc.) and collects personal data like IP addresses and browser information to assess user identity. Since explicit consent isn't obtained, website operators need to justify reCAPTCHA's use, which is difficult given Google's opaque data practices and the unquantifiable privacy risks. The article recommends using more privacy-friendly alternatives and emphasizes transparency, obtaining user consent, and data minimization.

Development

Missile Software's 'Null Garbage Collector': Memory Leaks? Not a Problem!

2025-02-07
Missile Software's 'Null Garbage Collector': Memory Leaks?  Not a Problem!

A developer recounts a clever application of a 'null garbage collector' in missile software. Because of the limited flight time and ample hardware memory, memory leaks in the program weren't a concern. Engineers calculated the potential memory leakage during flight and added double that amount of memory to ensure the program wouldn't crash before mission completion. This approach cleverly leveraged the program's runtime constraints, effectively solving the memory leak issue—a kind of 'ultimate garbage collection'.

HTML Whitespace: A Deep Dive into the Mess and Potential Solutions

2025-02-07
HTML Whitespace: A Deep Dive into the Mess and Potential Solutions

This article delves deep into the complexities of whitespace handling in HTML. Through numerous examples, the author reveals the various rules governing HTML's whitespace treatment, including the differences between inline and block elements, `

` tags, and the `white-space` CSS property, and how they lead to unpredictable rendering results.  The article also analyzes the challenges faced by automated formatters, content management systems, and minification tools when dealing with HTML whitespace.  A potential solution is proposed: using a quoting syntax to distinguish between code whitespace and user-visible whitespace, though it's acknowledged this would be a massive breaking change.  Finally, the author suggests practical tips to mitigate issues arising from HTML whitespace handling and proposes adding a new HTML entity `&ncsp;` to represent a non-collapsing space.

Development

Google's Android XR Camera Access: As Easy as on Your Phone

2025-02-07
Google's Android XR Camera Access: As Easy as on Your Phone

This article reveals Google's approach to camera access in its Android XR system. Similar to phones, developers can access camera data with user permission, utilizing standard Android Camera APIs (like CameraX) for image streams. While the front camera is accessible (showing a user avatar), the rear camera provides a reconstructed image, not the raw data stream. This mirrors Apple's Vision Pro strategy, ensuring seamless Android app porting to XR devices and maintaining consistent permission requests across phones and headsets. Android XR is currently in preview, so future changes are possible.

Development Camera Access

Stack Overflow's AI Answer Experiment: A Recipe for Disaster?

2025-02-07
Stack Overflow's AI Answer Experiment: A Recipe for Disaster?

Stack Overflow's planned experiment to incorporate AI-generated answers has sparked significant backlash from the community. The author argues that the experiment is based on a flawed premise: attempting to replace high-quality answers from human experts with AI. This will not only waste time and money but also damage the platform's core value—reliable answers from experts. The article details the potential negative impacts of the experiment, including: increased moderator workload, decreased expert participation, inability to guarantee answer accuracy, and potential user exodus. The author concludes that the experiment's potential gains are extremely low, while the risks are very high, ultimately resulting in a counterproductive outcome that harms Stack Overflow's reputation and community vitality.

Development

arXivLabs: Community Collaboration on New arXiv Features

2025-02-07
arXivLabs: Community Collaboration on New arXiv Features

arXivLabs is a framework enabling collaborators to develop and share new arXiv features directly on the arXiv website. Individuals and organizations involved share arXiv's values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners who uphold them. Got an idea for a project that will benefit the arXiv community? Learn more about arXivLabs.

Development

Memory Safety Standardization: A Path to Secure Software

2025-02-07

For decades, endemic memory-safety vulnerabilities in software trusted computing bases (TCBs) have fueled malware and devastating attacks. This article argues for memory-safety standardization as a crucial step towards universal strong memory safety. Recent advancements in memory-safe languages, hardware/software protections, formal methods, and compartmentalization offer solutions, but a lack of shared terminology hinders adoption. Standardization would improve industry best practices and address market failures preventing widespread use of these technologies, ultimately leading to more secure software for everyone.

Development Standardization

6502 Assembly Language: A Beginner's Guide to Retro Computing

2025-02-07

This tiny ebook introduces you to 6502 assembly language, a historical processor powering iconic machines like the Commodore 64 and Apple II. Learning assembly offers a deep understanding of computer architecture. The 6502, with its human-friendly design, makes it an ideal starting point. The book guides you through registers, flags, instructions, addressing modes, and the stack, culminating in a simple Snake game. An online assembler and simulator are included for hands-on learning.

Development

arXivLabs: Experimental Projects with Community Collaborators

2025-02-07
arXivLabs: Experimental Projects with Community Collaborators

arXivLabs is a framework enabling collaborators to develop and share new arXiv features directly on the website. Individuals and organizations involved uphold arXiv's values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners who share them. Have an idea to improve the arXiv community? Learn more about arXivLabs.

Development
1 2 166 167 168 170 172 173 174 214 215