site: reviews — morningprint, Braun Collection, The Listening Museum (graduate from finds)

This commit is contained in:
2026-08-07 01:37:04 -04:00
parent f41f3f51c4
commit 6267b94a66
10 changed files with 129 additions and 0 deletions
@@ -5,6 +5,7 @@ date: 2026-08-04
shortlist: true
link: "https://www.atlasobscura.com/places/braun-collection"
linkText: "atlasobscura.com"
promotedTo: "braun-collection"
source: "Atlas Obscura"
topics: [design-and-art, travel-and-places]
tags: [industrial-design, museum, germany, braun]
@@ -5,6 +5,7 @@ date: 2026-08-07
shortlist: true
link: "https://github.com/matt-w-horn/morningprint"
linkText: "github.com"
promotedTo: "morningprint"
source: "Hacker News — Show HN"
topics: [gadgets-and-toys, design-and-art]
tags: [raspberry-pi, thermal-printer, generative-art, open-source]
@@ -5,6 +5,7 @@ date: 2026-08-04
shortlist: true
link: "https://sheets.works/data-viz/keyboard-sounds"
linkText: "sheets.works"
promotedTo: "the-listening-museum"
source: "Kottke.org"
topics: [music-and-sound, gadgets-and-toys]
tags: [keyboards, sound, mechanical-keyboards, free]
Binary file not shown.

After

Width:  |  Height:  |  Size: 830 KiB

@@ -0,0 +1,28 @@
---
name: "Braun Collection"
subtitle: "The industrial-design canon, one flight up in a Kronberg strip mall, for three euros"
date: 2026-08-07
category: places
topics: [design-and-art, travel-and-places]
tags: [industrial-design, museum, germany, braun, dieter-rams]
link: "https://www.atlasobscura.com/places/braun-collection"
linkText: "atlasobscura.com"
description: "The BraunSammlung in Kronberg im Taunus — decades of Braun design run by a volunteer association, admission €3, and the hair dryers hang from the ceiling on wires."
source: "Atlas Obscura"
fromFind: "braun-collection"
---
import { Image } from 'astro:assets';
import hero from './hero.jpg';
<Image src={hero} alt="Inside the BraunSammlung: a row of hair dryers suspended nose-first from the ceiling on thin wires, receding into the room, with decades of electric shavers mounted in a single line along a black wall behind them." />
> Half the objects in the modern design canon, kept above a suburban strip mall outside Frankfurt by a non-profit association, for three euros. The hair dryers hang from the ceiling on wires, nose-first, like a natural history museum decided to do appliances.
Westerbachstraße 23C in Kronberg im Taunus is an unremarkable commercial building around the corner from Braun's own headquarters. Up one flight is the BraunSammlung: shavers running the length of a black wall in a single unbroken line, radios in wood cabinets giving way to the white-and-grey slabs that taught everyone else what a control panel should look like, and that squadron of hair dryers overhead. Every piece carries its model number, its designer and its history, in German and English.
**The arrangement is chronological, and that is the point.** Individually these are famous objects, endlessly reproduced in slide decks about Dieter Rams. In a row, decade after decade, they stop being icons and become a working method: you can watch the buttons get fewer, the grilles get quieter, the colour drain out except where it is doing a job. A single Braun object is a photograph. Forty years of them in sequence is an argument.
The economics are the second surprise. The museum is run by the Förderkreis BraunSammlung, a volunteer association working with the company rather than a corporate brand experience — which is why admission is €3 for adults, €1.50 for children between 7 and 17, and free for anyone under six or arriving with a school group. Tuesday to Sunday, 11:00 to 17:00, closed Mondays, wheelchair accessible.
Set expectations honestly: this is small and specialised, and Kronberg is the end of the S4 line, roughly half an hour out of Frankfurt, which you have to actually want to do. But it costs less than the coffee you'd buy on the way, most of it is hung and laid out in the open rather than sealed in vitrines, and it is the one place where the objects everyone quotes stand in the order they happened.
Binary file not shown.

After

Width:  |  Height:  |  Size: 285 KiB

@@ -0,0 +1,30 @@
---
name: "morningprint"
subtitle: "A thermal receipt printer that publishes one edition a day, to an audience of one"
date: 2026-08-07
category: making
topics: [gadgets-and-toys, design-and-art]
tags: [raspberry-pi, thermal-printer, generative-art, open-source, escpos]
link: "https://github.com/matt-w-horn/morningprint"
linkText: "github.com"
description: "An Epson receipt printer wakes before its owner and prints one piece of CP437 block art and a short verse, themed to the day. MIT-licensed, and honest about the week it went wrong."
source: "Hacker News — Show HN"
fromFind: "morningprint"
---
import { Image } from 'astro:assets';
import hero from './hero.jpg';
<Image src={hero} alt="Two thermal receipts pinned to a corkboard with wooden pegs. The left, dated Friday July 3 2026, shows a single firework rocket climbing a dotted trail through a sparse starfield above a solid-black city skyline. The right, dated Saturday July 4 2026, shows the same skyline under a sky full of bursts." />
> A receipt printer in a kitchen wakes before its owner and prints one piece of block art with a verse under it — 80mm wide, one copy, no way to subscribe. When the cutter drops, the day's edition is out.
The medium is the whole argument. The canvas is 203 dpi, one bit of colour, 48 monospace columns, and a character set frozen in 1981: CP437, the original IBM PC glyphs. Tone comes from `░ ▒ ▓ █` ramps, edges from half-blocks, solid black from inverted runs where even the spaces print. The trick that makes any of it possible is line spacing — by default the printer leaves a white seam between rows, and an `ESC 3` value calibrated by hand makes the block rows fuse into continuous fields. Without that, block art is stripes.
Each morning a Google Apps Script assembles a brief — the date, the season, the weather, and a rolling archive of the last fourteen pieces with a one-line style note each — and asks Claude for one committed idea sharply unlike everything in that archive. The reply comes back not as bytes but as a declarative spec: styled text operations plus a verse. A fifty-line renderer turns that into ESC/POS and POSTs it to a Raspberry Pi Zero W, which writes it straight to the printer's character device. Only the artwork and the verse print. No title, no branding.
The pair on the corkboard above is the exception that makes the rest work. A `continues` field sits empty almost every day, but when the day itself hands over a thread — a holiday arriving after its eve — the piece may answer an earlier one and record which. July 3 sends up a single scout rocket, *testing the dark. Tomorrow, the whole sky*; July 4 answers, *the scout kept its word*. A fresh continuation raises the bar for the next, which is what keeps it a surprise rather than a tic.
The most useful section of the README is the failure. Structured output guarantees the shape of the JSON, not the size of the strings in it, and one run in July 2026 returned a valid spec with a 3,155-character title of repeated filler. The archive kept it, every later prompt replayed it, and within a week the printer was producing a page of the model talking to itself instead of artwork. Specs are now length-checked before printing and the archive is sanitised on read, so a poisoned entry is dropped once rather than fed back for a fortnight.
You will need an Epson TM-T20III or another ESC/POS printer with CP437, a Pi, and an API key; the Pi-side script isn't in the repo, though its entire contract is "write each POST body to `/dev/usb/lp0`". MIT-licensed, with the byte-level protocol fully documented. What you get for that is a daily thing with no feed, no archive to scroll and nothing to refresh — yesterday's goes on the corkboard.
Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

@@ -0,0 +1,30 @@
---
name: "The Listening Museum"
subtitle: "36 keyboards you can hear by typing on the one you already have"
date: 2026-08-07
category: sound
topics: [music-and-sound, gadgets-and-toys]
tags: [keyboards, sound, mechanical-keyboards, free, open-source-audio]
link: "https://sheets.works/data-viz/keyboard-sounds"
linkText: "sheets.works"
description: "Thirty-six mechanical keyboards sound-mapped from open-source community recordings — click a card, type on your own board, hear it in that one's voice. Explicitly not a buying guide."
source: "Kottke.org"
fromFind: "the-listening-museum"
---
import { Image } from 'astro:assets';
import hero from './hero.png';
<Image src={hero} alt="The Listening Museum title card: large serif type reading 'The Listening Museum' with 'Listening' in orange italic, the line '36 mechanical keyboards, sound-mapped. Click. Type. Listen.', and three figures — 36 keyboards, 40+ years, 500+ samples." />
> Thirty-six mechanical keyboards and switches laid out as cards. Click one, then type on your own keyboard — every key you press comes back in that board's voice. Free, no account, 500-odd samples spanning forty years and eight switch families.
The list runs from an IBM Model M of 1985 through Topre's rubber domes and Cherry MX clickies to the modern customs people call thocky. Clicking a card expands it into the anatomy — housing, stem, spring, and why those add up to the sound you just heard — which is the part that turns a novelty into something you learn from. Filters cover vintage, gaming, typewriter and the custom families; there is a dice button for when you don't know what you want.
**The methodology note is the best thing on the page, and it argues against the site's own premise.** The maker didn't record any of this: every sample comes from the open-source mechanical-keyboard community — Mechvibes, Bucklespring, Monkeytype, keyBeats, daktilo, a CC0 HHKB recording on Freesound — and the page says so up front. "We are the curator, not the field recordist." It then goes further, citing ThereminGoat's argument that sound tests are inherently limited: microphone, room, host board, keycap set, codec and your own speakers all colour what you hear. You are never hearing the keyboard. You are hearing one recording of one build through one chain.
Which forces a correction to how this got surfaced, including here. It is not a way to audition a switch before buying — the site says flatly, *treat this as a listening museum, not a buying guide*, and warns that loudness differences between paired entries are recording variance, not anything about the switch. What it is instead is a demonstration of that very point. Several switches appear twice as "alt build" entries: the same switch, a different host board and mic chain. Played back to back, you can hear how much of what people call a switch's character is actually plate, case, room and microphone.
Two details reward the pedantic. The Unicomp Classic shares its recording with the IBM Model M, because Unicomp still builds them on the original IBM tooling — a footnote that is also a small piece of manufacturing history. And some entries deliberately share audio, flagged rather than hidden.
No account, no purchase, no affiliate rail down the side. Just a page that lets you hear forty years of a thing through the board already under your fingers, and is scrupulously honest about what that is and isn't worth.