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

Markov Chains explained visually

Markov chains are mathematical systems that model transitions between different states with associated probabilities, represented through transition matrices or diagrams. The concept finds practical applications in various fields, from weather prediction to Google's PageRank algorithm, with the ability to simulate real-world phenomena by incorporating probabilistic state transitions.

Postgres as a Graph Database: (Ab)using pgRouting

pgRouting, a Postgres extension typically used for geospatial routing, offers versatile graph functionality beyond GIS applications. The extension can handle task scheduling, resource allocation in distributed systems, and power recommendation engines, making it a lightweight alternative to specialized graph databases.

Iterated log coding

A novel encoding format for real numbers on computers is presented, using a sequence of sign bits to represent values through iterative logarithms. The format efficiently handles both very large and very small numbers, utilizing a Gray code pattern and lexicographic ordering.

Sublinear Time Algorithms

Sublinear time algorithms represent a paradigm shift in computational efficiency, allowing processing of extremely large datasets by reading only a fraction of the input. While exact deterministic sublinear algorithms exist for some problems, most solutions require randomization and approximation techniques, with applications spanning optimization, property testing, and distribution analysis.

asm-lessons/lesson_01/index.md at main ยท FFmpeg/asm-lessons

A comprehensive guide to FFmpeg assembly language programming, focusing on SIMD operations and vector processing for multimedia optimization. The lesson covers basic concepts, register types, and instruction syntax while explaining how hand-written assembly can achieve significant performance improvements over compiler optimizations.

Do You Really Want to be Doing This When You're 50?

A former programmer reflects on the frustrations of modern software development, highlighting challenges like incomplete domain knowledge, complex APIs, and constant technological evolution. The author expresses preference for small, manageable programming projects while suggesting that high-pressure development may be better suited for younger developers.

TinyCompiler: a compiler in a week-end

A developer shares their experience building a minimalist compiler called TinyCompiler for a custom programming language 'wend' over a weekend. The project aims to translate 'wend' code into GNU assembly while maintaining a codebase of around 500 lines of Python, serving as an educational exploration of compiler theory.

Announcing Rust 1.85.0 and Rust 2024 | Rust Blog

Rust 1.85.0 introduces the Rust 2024 Edition, featuring significant language changes and improvements including async closures support and expanded tuple operations. The release includes extensive updates to the standard library, Cargo package manager, and development tools like Rustdoc and Rustfmt.