2025-02-09

Writing My Own Dithering Algorithm in Racket

An exploration of image dithering techniques demonstrates how to convert color images to black-and-white using various algorithms, including a novel approach that balances between Atkinson and Floyd-Steinberg methods. The author developed this technique while building Guten, a custom newspaper printer that requires monochrome images, showcasing practical applications of dithering in modern technology.

Original archive.is archive.ph web.archive.org

Log in to get one-click access to archived versions of this article.

read comments on news aggregators:

Related articles

Andrew Barto and Richard Sutton are the recipients of the 2024 ACM A.M. Turing Award for developing the conceptual and algorithmic foundations of reinforcement learning.

Andrew Barto and Richard Sutton received the 2024 ACM A.M. Turing Award for their pioneering work in reinforcement learning, which has become fundamental to modern AI systems. Their contributions include developing key algorithms and mathematical foundations that enabled breakthroughs like AlphaGo and ChatGPT. The award, often called the Nobel Prize in Computing, carries a $1 million prize sponsored by Google.

Solving SICP

A detailed analysis of solving the SICP problem set reveals it requires 729 hours over 8 months, involving 6 programming languages and 9 software tools, tracking time spent per exercise and difficulty distribution. The analysis provides valuable data on course workload estimation, student motivation tracking, and curriculum design improvements.

DIY "infinity contrast" TV - with 100% recycled parts

A creative DIY project demonstrates how to transform old LCD TVs and projectors into high-quality displays by using the projector as a dynamic backlight. The modification achieves OLED-like black levels and contrast by removing the projector's color wheel and applying specialized image processing, resulting in performance that rivals modern displays at a fraction of the cost.

Effective Rust

A comprehensive guide presenting 35 specific methods to enhance Rust programming practices, covering essential topics from type systems to FFI boundaries. The guide is structured into six main sections, focusing on types, traits, concepts, dependencies, tooling, and advanced Rust features. Each item provides detailed insights for writing more effective and maintainable Rust code.

Smart Pointers Can't Solve Use-After-Free

Smart pointers in C++ cannot fully prevent use-after-free vulnerabilities due to internal raw pointers in types beyond user control. Examples with std::vector, std::span, and std::lock_guard demonstrate how iterator invalidation and pointer mismanagement can still lead to memory safety issues regardless of smart pointer usage.

Generative AI with Stochastic Differential Equations - IAP 2025

A comprehensive MIT course on flow matching and diffusion models in generative AI, covering mathematical frameworks and practical implementations across various data modalities. Students learn to build image diffusion models from scratch while gaining expertise in stochastic differential equations, with hands-on experience through three practical labs.

I struggled with Git, so I'm making a game to spare others the pain

A developer created Devlands, a gamified 3D environment that makes learning Git more intuitive and accessible by allowing users to physically walk through their codebase. The project evolved from Git-Sim, incorporating voxel-based graphics and interactive tutorials to transform abstract Git concepts into tangible experiences.

Tips to debug hanging Go programs

A comprehensive guide explores debugging techniques for hanging Go programs, covering stack trace analysis with SIGQUIT, interactive debugging using Delve, and core dump collection for later analysis.

Knowing CSS is mastery to Frontend Development — Anselm Hannemann

A compelling argument for web developers to master fundamental languages like JavaScript and CSS rather than solely relying on frameworks and tools. Understanding core web technologies enables better debugging, optimization, and problem-solving capabilities, ultimately leading to more robust and maintainable applications.

The early days of Linux

A firsthand account of Linux's creation and early development by Lars Wirzenius, who witnessed Linus Torvalds' journey from writing a simple multitasking program to creating the Linux kernel in 1991. The kernel evolved from displaying alternating As and Bs on screen to becoming a global powerhouse running on billions of devices, including Mars rovers.