
TL;DR
A technical deep dive into AM halftoning with ImageMagick hit the HN front page at 195 points. We break down the technique, the HN debate on dithering vs halftoning, and why this matters for developers.
A personal blog post about simulating printed halftone patterns in digital images climbed to the top of Hacker News on July 25. Authored by Johanna-Mathilda Langenhan (Jo), the post walks through several iterations of using ImageMagick to recreate the look of amplitude-modulated (AM) halftone screens -- the dot patterns you see in newspapers and offset printing.
The post racked up 195 points and 70 comments, with HN readers weighing in on the technical merits, terminology, and practical applications of the technique.
Jo's goal was to make digital images look like they came off a printing press. The core technique uses ImageMagick's convert to split an image into CMYK channels, apply rotated dot screens (at 0, 15, 45, and 75 degrees per the DIN 16547 standard), and recombine them into a halftoned result.
The post is unusually transparent about its limitations. Jo explicitly states they "don't know much about dithering" and documents three generations of the approach:
-colors 2 per channel before recombination. Produces properly varying dot sizes and a more authentic print feel. The author admits this was an "obvious in hindsight" fix.-remap with a custom palette to get multiple shades of pink while keeping the AM grid structure.The shell script at the bottom of the post processes all images in a directory through the CMYK AM pipeline, outputting 64-color halftoned versions. Jo notes it takes about 10 seconds per large image on an 11-year-old CPU and warns bluntly: "If you value your time or care about actually reducing an image's size do not do this."
Newsletter
Get the weekly deep dive
Tutorials on Claude Code, AI agents, and dev tools, delivered free every week.
From the archive
Jul 25, 2026 • 8 min read
Jul 25, 2026 • 6 min read
Jul 24, 2026 • 8 min read
Jul 24, 2026 • 7 min read
The HN discussion centered on a few themes:
Dithering vs halftoning: Several commenters pushed back on the terminology. Retr0id kicked off the thread: "I suppose it is a type of dithering, but really this is Halftoning." ValdikSS was more direct: "This is halftoning, not dithering." Jo added an edit responding to the debate, citing Wikipedia's note that the terms are sometimes used interchangeably in digital printing contexts.
The technical craft: AndrewStephens appreciated the aesthetic: "Very nice results, I really like the way it looks like a printed page. Image processing is addictive - once you start playing around it is hard to stop." trentor, a former rotogravure printer, shared a nostalgic perspective: "In intaglio printing you usually don't see these patterns because the electrostatic assist pulls the ink out of the cells."
Practical applications: rahimnathwani connected the technique to DTF (direct to film) t-shirt printing. ipunchghosts wondered why dithering isnt used more as a data augmentation method for training deep networks: "It would allow the networks to learn invariants that align with humans."
File size skepticism: ReactiveJelly pushed back on the claim that dithering reduces file size: "If you're compressing photos, you should use JPEG or WebP. Anecdotally, JPEG usually beats dithering, and WebP always does." Jo had already addressed this in the post, noting the technique is for aesthetics, not optimization.
This post hit the front page for a few reasons that reflect what HN values in 2026.
First, the technical depth is real. Jo shares the exact ImageMagick commands, explains the reasoning behind each flag, and shows before/after comparisons. This is rare on the modern web, where most image-processing content is abstract or locked behind APIs. A developer in 2026 can run the exact same commands on their machine and get reproducible results.
Second, the post models good engineering documentation. Each iteration is clearly motivated: what changed, why it changed, and what the output looks like. The "Edit: The perfect route to CMYK" section is a textbook example of sleeping on a problem and arriving at a cleaner solution.
Third, the technical nuance (AM vs FM halftoning, Moire patterns, the 4-color rotation standard) surfaces real image-processing knowledge that most web developers never touch. Understanding how printers reproduce continuous-tone images is one of those pieces of foundational CS knowledge that keeps resurfacing.
If you work with images at scale -- whether you are optimizing assets for web performance, building AI image generation pipelines, or just want your personal blog to look like a printed zine -- understanding halftoning and dithering fundamentals gives you a tool most developers do not have.
Read next
A new project proposes a graphical shell layer for SSH that turns remote servers into browsable desktops. The HN discussion digs into architecture choices, the terminology debate, and whether this solves a real problem.
8 min readThe HashiCorp co-founder explains why he chose Zig over Rust for Ghostty, the technical challenges of terminal emulator development, and what systems programming looks like in 2026.
7 min readThe Gleam programming language has migrated to Tangled, a new ATProto-based code hosting platform. Here's what this means for developers and the future of decentralized forges.
6 min readTechnical content at the intersection of AI and development. Building with AI agents, Claude Code, and modern dev tools - then showing you exactly how it works.
Change your lights without leaving the terminal. `hue dim` just works.
View AppUnlock pro skills and share private collections with your team.
View AppRun any MCP server without running infra. Private endpoints, no DevOps.
View AppInstall the dd CLI and scaffold your first AI-powered app in under a minute.
Getting StartedReal-time prompt loop with history, completions, and multiline input.
Claude CodeA complete, citation-backed Claude Code course with setup, prompting systems, MCP, CI, security, cost controls, and capstone workflows.
ai-development
Try Chat2DB for free: https://bit.ly/4hEyHq4 #AI #SQL #DataScience #opensource Chat2DB AI: Latest Features Unveiled Hey everyone! In this video, I'll walk you through the latest updates...

In this video, I'm taking a quick look at Lepton Search, an open source project Built in TypeScript/Javascript and Python . It's a interesting tool that lets users fork and build their own...

#LLAMA-2 #Meta #AI In this video I show you LLAMA 2, Meta AI's newest open source model that can be used for commercial use (so long as you have less than 700 million active users). In this...

The Gleam programming language has migrated to Tangled, a new ATProto-based code hosting platform. Here's what this mean...

The HashiCorp co-founder explains why he chose Zig over Rust for Ghostty, the technical challenges of terminal emulator...

Mistral releases Leanstral 1.5, an Apache-2.0 licensed 119B parameter model (6B active) for Lean 4 theorem proving that...

The Godot Foundation has established a policy banning autonomous AI agent code and substantial AI-generated contribution...

A new project proposes a graphical shell layer for SSH that turns remote servers into browsable desktops. The HN discuss...

A developer used OpenAI Codex to build a fully open-source WYSIWYG editor for TikZ figures. The technical approach and r...

New tutorials, open-source projects, and deep dives on coding agents - delivered weekly.