content: 2026-05-05 capture run — 28 finds, 2 reviews, set-pick tooling
Captured 27 finds from the daily sweep across 15 sources (Daring Fireball, HN Show HN, Kottke, Wallpaper, Outbound, Uncommon Goods, Kikkerland, BIFL, Quote Investigator, Marginalian, r/dadjokes, icanhazdadjoke, r/shortcuts, Recomendo, Messy Nessy) plus one user- suggested find (valchoose-barf-bags) and 11 additional reader- suggestion finds (appcleaner, blip, cleanmykeyboard, clocker, daisydisk, ia-writer, launchos, macfolio, mos, vivid, wallspace). New reviews: monitorcontrol (graduated from today's reader suggestion, category interface) and blip (graduated from today's reader suggestion, category indie). Both registered in hero.ts. Site tooling: new dev-only POST /api/set-pick middleware that rewrites HERO_SLUG in src/pages/index.astro for the Make today's pick action. EditConfirm reworked to support a non-copy "set-pick" mode; EditAction takes action and slug props; the reviews template switches the toolbar button over to the new wiring. Log + candidate-sources updated. Two new candidates: Routinehub.co and Moss & Fog.
@@ -11,6 +11,8 @@ const EXCLUDED_PATHS = new Set([
|
||||
]);
|
||||
|
||||
const FIND_ROOT = path.resolve('src/content/find');
|
||||
const REVIEW_ROOT = path.resolve('src/content/reviews');
|
||||
const HOME_PAGE = path.resolve('src/pages/index.astro');
|
||||
const VALID_SLUG = /^[a-z0-9][a-z0-9-]*$/;
|
||||
const VALID_TAG = /^[a-z0-9][a-z0-9-]{0,40}$/i;
|
||||
|
||||
@@ -101,11 +103,40 @@ const editFindTagApi = {
|
||||
},
|
||||
};
|
||||
|
||||
const setPickApi = {
|
||||
name: 'set-pick-dev-api',
|
||||
apply: 'serve',
|
||||
configureServer(server) {
|
||||
server.middlewares.use('/api/set-pick', async (req, res, next) => {
|
||||
if (req.method !== 'POST') return next();
|
||||
try {
|
||||
const raw = await readBody(req);
|
||||
const { slug } = JSON.parse(raw || '{}');
|
||||
if (typeof slug !== 'string' || !VALID_SLUG.test(slug)) return send(res, 400, { error: 'invalid slug' });
|
||||
|
||||
const reviewPath = path.join(REVIEW_ROOT, slug, 'index.mdx');
|
||||
if (!reviewPath.startsWith(REVIEW_ROOT + path.sep)) return send(res, 400, { error: 'path escape' });
|
||||
try { await stat(reviewPath); } catch { return send(res, 404, { error: 'review not found' }); }
|
||||
|
||||
const text = await readFile(HOME_PAGE, 'utf8');
|
||||
const re = /^(const HERO_SLUG = ')([^']+)(';)/m;
|
||||
if (!re.test(text)) return send(res, 422, { error: 'HERO_SLUG line not found in src/pages/index.astro' });
|
||||
const out = text.replace(re, (_, a, _b, c) => `${a}${slug}${c}`);
|
||||
await writeFile(HOME_PAGE, out, 'utf8');
|
||||
|
||||
return send(res, 200, { slug });
|
||||
} catch (err) {
|
||||
return send(res, 500, { error: String(err && err.message ? err.message : err) });
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
export default defineConfig({
|
||||
site: 'https://unique.rzen.dev',
|
||||
trailingSlash: 'always',
|
||||
build: { format: 'directory' },
|
||||
vite: { plugins: [editFindTagApi] },
|
||||
vite: { plugins: [editFindTagApi, setPickApi] },
|
||||
integrations: [
|
||||
mdx(),
|
||||
sitemap({
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
|
||||
Newly nominated sources awaiting review before promotion to `sources.json`. Each entry says where it came from and the case for adding it. Vet manually, then move to the main list.
|
||||
|
||||
## 2026-05-05
|
||||
|
||||
- **Routinehub.co** — https://routinehub.co/ — surfaced as the canonical hosting URL for the SmartMover shortcut captured this run. Community-driven directory of iOS/macOS Shortcuts with upvotes, descriptions, and version history; a less-noisy alternative or complement to `r/shortcuts`. Has a `?sort=top&days=7` view that should be straightforward to scan; vet for noise vs. signal across the shortcuts category before promoting.
|
||||
- **Moss & Fog** — https://mossandfog.com/ — surfaced via Messy Nessy's vol. 770 crediting them ("Found via Moss & Fog") as the discoverer of the Anton Elfilter mixed-media collages post. Visual-culture publication leaning art, design, and curiosity — strong overlap with `general-delight` and `gifts`. Likely WebFetch-friendly. Vet for cadence and signal-to-noise on a single sweep before adding.
|
||||
|
||||
## 2026-05-04
|
||||
|
||||
- **Tokyo Paladin** — https://tokyopaladin.substack.com/ — surfaced via Daring Fireball Linked List crediting their post on Noir, the Yamazaki "Japanese Oreo." Substack focused on Japanese consumer products and cultural curiosities, in the vein of "things you can only buy in Japan that quietly outclass their global competitors." Substack feed should be curl-friendly via the standard `/feed` pattern. Strong candidate for the gifts and general-delight buckets.
|
||||
|
||||
@@ -2,6 +2,81 @@
|
||||
|
||||
Running record of every candidate surfaced by `/daily-finds`. The chosen pick of the day is prepended with `[chosen]`. Source attribution per candidate lets us track which sources produce winners over time.
|
||||
|
||||
## 2026-05-05 — find: valchoose-barf-bags
|
||||
|
||||
Single user-suggested find: Valchoose 14-pack 1000mL hospital-grade disposable barf bags (Amazon ASIN B083J2S3Q6). Source: Reader suggestion. Topic: tools.
|
||||
Hero retrieved on second pass (1500×1496 `71-zVovnCEL._AC_SL1500_.jpg` from `m.media-amazon.com/images/I/`, clean studio shot with no overlay text). Pattern unlock: Amazon's CAPTCHA stub goes away when curl is invoked with the full browser header set — `Accept`, `Accept-Language`, `Accept-Encoding: gzip, deflate, br`, plus `--compressed` and the Mac Safari UA. With that combination the canonical product page returned 3.2 MB of HTML containing the embedded `colorImages.initial` JSON, from which the first `hiRes` URL is the canonical main shot. Update the daily-finds skill: when Amazon shows a CAPTCHA to the bare UA, retry with full headers + compression before falling through to "no hero". Two of the six hi-res variants in the gallery had marketing overlay text ("A Little Expensive, But A Lot Better"; "Hospital Grade Emesis Bags") — skipped per skill rules.
|
||||
|
||||
## 2026-05-05 — review: monitorcontrol
|
||||
|
||||
Graduated from find captured 2026-05-05, source: Reader suggestion. Reused the find's `hero.png` (1648×1481 prefs-pane + menu-bar overlay screenshot showing sliders for an LG Ultra HD and the built-in Color LCD). Category `interface` (matches alt-tab, ice, alcove, dockdoor, folder-peek, antinote, monocle); tags merge the find's set with `external-monitor`, `brew`.
|
||||
|
||||
## 2026-05-05 — capture run
|
||||
|
||||
Sources scanned: 60 total — 27 hits across 15 sources, ~25 unproductive-but-live, 8 blocked/broken, 9 skipped (per sources.json `fetch: skip`).
|
||||
Productive sources: Daring Fireball — Linked List (1), Hacker News — Show HN (2), r/shortcuts (1), Recomendo (1), Kottke.org (3), Messy Nessy Chic (1), Wallpaper* Travel (2), The Outbound Collective (3), Uncommon Goods (3), Kikkerland (2), r/BuyItForLife (1), Quote Investigator (2), The Marginalian (2), r/dadjokes (2), icanhazdadjoke (1).
|
||||
Unproductive but live: MacStories (all 3 items captured 2026-05-03/04), Tools and Toys (all 5 items already captured this past week), One Thing Well (top posts captured 2026-05-03; remaining items — Newsboat, yt-dlp — fail "delightful/unusual" bar as long-established TUI tools), Six Colors (Mac storage tip + travel-tech roundup, no isolated picks), Cool Tools (Frequent Fliers/Pants/Injection roundups; Embassy of the Free Mind and Circle to Search already captured), Cool Material (homepage only nav; /gear/ category yielded one "Black Book April 2026" roundup post — fetch interrupted), Carryology (only Bellroy x Carryology Sling collab and a fabric-essay piece — descriptions too thin), Put This On (eBay roundups only), Standard & Strange Journal (Field Guide essays only), Outlier (same Injex/Cannabiscotton/Ramielust drops as last run, descriptions still too thin), A Continuous Lean (2025 posts only), Snow Peak (SPA — only nav anchors and gift card extractable), Eclectic Light Company (metadata-management post adjacent to already-captured finder-tags-one-to-one find; VM internals too niche), Brett Terpstra (Tower Git GUI mention + sponsor posts + own apps Apex/Doing/Timelined already captured), Dr. Drang — leancrew.com (4 posts, all iOS Mail/contacts commentary, no specific app or automation), OSXDaily (Secure Erase + Clean Install + Compromised Passwords procedural tips, no qualifying picks), Werd (only listicles), Roadtrippers Magazine (Route 66/RV-resort sponsored content), AFAR (generic destinations — Chicago/Grand Canyon mass-market, Atacama already captured), Boutique Homes (5 properties returned with too-thin descriptions to write specific virtues; Casa Nano 2.0 already captured), Things Magazine (link roundups only), Open Culture (Egyptian-honey + explosive-medieval-cats articles — interesting facts but not "things to use/visit"; And Vinyly already captured), A.Word.A.Day (querimonious + truncated Christopher Morley war-hypnotism quote — partial fetch, line cuts off mid-sentence), Uses This (interview titles only on the index page — same pattern as last run).
|
||||
Blocked or broken this run: TidBITS (WebFetch 403, persistent), Reader's Digest Jokes (WebFetch 403, persistent), 9to5Mac `/guides/macos-tips/` (404 this run — last run also had `/guides/` issue; the per-category subpath is unstable), Snow Peak `/collections/new-arrivals` (SPA, only 4 nav anchors), Atlas Obscura (regression — `articles` index now returns 5471-byte Cloudflare challenge body where last run returned full 503KB content; 4th-run trend is downward), Kevin Kelly thetechnium (h2.entry-title regex returned zero matches — markup likely changed since last successful run), Product Hunt (homepage truncated for WebFetch; `/leaderboard/daily/2026/5/4` worked but yielded only AI-marketing-copy products — no qualifying finds), Cool Material (`/gear/` category page only surfaced a single "Black Book April 2026" roundup; user cancelled the deep-dive fetch).
|
||||
Skipped (per sources.json): The Sweet Setup, Indie App Sunday (Mastodon), Gear Patrol, The Awesomer, Permanent Style, Heddels, Mr Porter Journal, Spotted by Locals, The Browser.
|
||||
|
||||
### Captured finds
|
||||
|
||||
- chess-peace — Chess Peace — source: Daring Fireball — Linked List
|
||||
- light-crime-audio-player — Light Crime Audio Player — source: Hacker News — Show HN
|
||||
- parrot-recorder — Parrot — source: Hacker News — Show HN
|
||||
- smartmover-shortcut — SmartMover — source: r/shortcuts
|
||||
- us-national-park-finder — US National Park Finder — source: Recomendo
|
||||
- xkcd-contiguous-41-states — xkcd #2394 — Contiguous 41 States — source: Kottke.org
|
||||
- boards-of-canada-b-sides-mix — 55-Minute Boards of Canada B-Sides Mix — source: Kottke.org
|
||||
- every-frame-a-painting-isle-of-dogs — Every Frame a Painting — Isle of Dogs visual comedy — source: Kottke.org
|
||||
- sidewalk-joy-map — Worldwide Sidewalk Joy Map — source: Messy Nessy Chic
|
||||
- the-fife-arms — The Fife Arms — source: Wallpaper* Travel
|
||||
- dot-here-baa-atoll — .Here, Baa Atoll — source: Wallpaper* Travel
|
||||
- fall-creek-falls-tennessee — Fall Creek Falls, Tennessee — source: The Outbound Collective
|
||||
- kirby-cove — Kirby Cove — source: The Outbound Collective
|
||||
- wildwood-trail-portland — Wildwood Trail, Washington Park — source: The Outbound Collective
|
||||
- birth-month-flower-perpetual-calendar — DIY Birth Month Flower Perpetual Calendar — source: Uncommon Goods
|
||||
- just-add-booze-slushie-mix — Just Add Booze Frozen Cocktail Slushie Mix — source: Uncommon Goods
|
||||
- hidden-patterns-watercoloring-set — Hidden Patterns Watercoloring Set — source: Uncommon Goods
|
||||
- kikkerland-cat-watering-can — Cat Watering Can — source: Kikkerland
|
||||
- kikkerland-ding-dong-music-box — "Ding Dong! The Witch is Dead" Music Box — source: Kikkerland
|
||||
- nicks-handmade-belts — Nicks Handmade Belts — source: r/BuyItForLife
|
||||
- quote-lifetime-exclamation-points — Lifetime Ration of Exclamation Points — source: Quote Investigator
|
||||
- quote-if-we-knew-research — "If we knew what we were doing, it would not be called research" — source: Quote Investigator
|
||||
- beauvoir-marriage-change — Simone de Beauvoir on Marriage and the Freedom to Change — source: The Marginalian
|
||||
- arundhati-roy-success — Arundhati Roy on the Deepest Measure of Success — source: The Marginalian
|
||||
- joke-scenter-nose — The Scenter Joke — source: r/dadjokes
|
||||
- joke-tom-hanks-thanks — The Tom Hanks Autograph Joke — source: r/dadjokes
|
||||
- joke-ballpark-figure — The Ballpark Figure Joke — source: icanhazdadjoke
|
||||
|
||||
### Hero coverage
|
||||
|
||||
- Heroes saved: 17 of 20 attempted (7 quotes/jokes intentionally text-only).
|
||||
- Hero failures (3): parrot-recorder (only a 360×360 preview-parrot.webp on the dev site; all other imgs are tiny SVG UI parts; under the 400px-long-edge minimum), us-national-park-finder (SPA — only the 1024×1024 site icon `national-parks-icon.png` exists, which is a logo not a screenshot — rejected per skill rules), sidewalk-joy-map (curl returned zero `<img>` tags; the map is fully client-rendered).
|
||||
- Wallpaper srcset fallback used: the-fife-arms — homepage had no og:image but the WordPress srcset attribute on the hero exposed a 2560×1440 `Exterior02-scaled.jpg`. Pattern worth noting: WordPress sites with no og:image often still publish full-size images via srcset on the homepage carousel.
|
||||
- App-screenshot fallback used: chess-peace — `og:image` was the relative `images/app-icon.png` (1024×1024 icon); replaced with `images/screenshot-gameplay.png` (1320×2868 phone screenshot) for a usable hero.
|
||||
- YouTube thumbnail fallback used: boards-of-canada-b-sides-mix and every-frame-a-painting-isle-of-dogs — both fetched via `https://img.youtube.com/vi/<videoid>/maxresdefault.jpg` since neither Kottke link nor the videos themselves expose a directly-fetchable og:image to curl.
|
||||
- Reddit i.redd.it direct: smartmover-shortcut — used the post's image URL since the redditor's only canonical link is RoutineHub (no preview there).
|
||||
|
||||
### New source nominees
|
||||
|
||||
2 this run (see candidate-sources.md):
|
||||
- Routinehub.co — surfaced as the canonical hosting URL for the SmartMover shortcut. Community-shared iOS Shortcuts directory; could complement r/shortcuts as a less-noisy feed.
|
||||
- Moss & Fog — surfaced via Messy Nessy's vol. 770 crediting them ("Found via Moss & Fog") for the Anton Elfilter mixed-media collages post. Visual-culture publication leaning art / design / curiosity.
|
||||
|
||||
### Source maintenance for next pruning pass
|
||||
|
||||
- **Atlas Obscura**: 4th run trend is downward — last run had a 503KB content body, this run returns a 5471-byte Cloudflare challenge stub. Time to flip to `fetch: skip` with skipReason "Cloudflare JS challenge intermittently lifts; not reliable enough for daily fetch."
|
||||
- **Kevin Kelly thetechnium**: the regex `<h2 class="entry-title">` returned zero matches this run despite the URL serving content. Either the markup changed or the site went heavier on JS rendering. Inspect the live HTML and update the parser, or accept a `fetch: skip` until the structure is reverified.
|
||||
- **Reader's Digest Jokes**: WebFetch 403 every run for 3+ runs. Time to mark `fetch: skip` with skipReason "WebFetch 403, persistent."
|
||||
- **TidBITS**: same — WebFetch 403 every run. `fetch: skip` overdue.
|
||||
- **9to5Mac**: `/guides/macos-tips/` 404'd this run; last run `/guides/` returned only category nav. Both subpaths fail. Either find a category path that's stable (e.g. `/category/apple-tips/`) or mark `fetch: skip`.
|
||||
- **Uncommon Goods**: `/new` worked this run (15 products extracted); last run reported `/new-arrivals` and `/fun/new-arrivals` both 404. Update `fetchUrl` to `https://www.uncommongoods.com/new` and the source becomes reliably productive again.
|
||||
- **Kikkerland**: `/collections/new-arrivals` 404'd this run; `/collections/all` worked (7 products extracted) but is noisier. Worth one experiment with `/collections/new` (singular) before settling on `/all`.
|
||||
- **A.Word.A.Day**: the `/words/today.html` URL works but the WebFetch summarizer truncated the "Thought for Today" quote at "the brute mass-impulse, the pride and..." — the quote is incomplete in the response. Either prompt the fetcher to return the entire quotation block verbatim, or accept that AWAD will sometimes yield only partial pulls.
|
||||
- **Cool Material**: scanned with `/gear/` this run, returned a single `/feature/black-book-april-2026/` aggregate post — promising as a per-month dive but the user cancelled the fetch this run. Worth retrying next run with the Black Book post URL as the primary entry point.
|
||||
- **Sidewalk Joy Map** (one-off, not a source): the page renders zero `<img>` tags via curl — the map UI is fully client-rendered. If a SidewalkJoy find is ever graduated to a review, the hero will need either a Wikipedia-style fallback (none exists) or a manual screenshot.
|
||||
|
||||
## 2026-05-04 — superpost: the geography is the program
|
||||
|
||||
Slug: 2026-05-04-geography-is-the-program
|
||||
@@ -377,3 +452,53 @@ Graduated from find captured on 2026-05-04, source: Hacker News — Show HN.
|
||||
No hero asset — text-only review for now; user may drop a homepage screenshot in later.
|
||||
New category introduced: `history` (no existing review category fit a digitised-newspaper archive).
|
||||
Review body corrects the find's "no account required" claim — the live site requires a free account, and coverage is American-focused.
|
||||
|
||||
## 2026-05-05 — capture run (reader suggestion batch)
|
||||
|
||||
Source: user-suggested list of macOS apps. Dropped DockDoor (already a review). Captured the remaining 12 (user added Blip on a follow-up).
|
||||
|
||||
Captured finds:
|
||||
- mos — Mos — source: Reader suggestion
|
||||
- monitorcontrol — MonitorControl — source: Reader suggestion
|
||||
- vivid — Vivid — source: Reader suggestion
|
||||
- daisydisk — DaisyDisk — source: Reader suggestion
|
||||
- cleanmykeyboard — CleanMyKeyboard — source: Reader suggestion
|
||||
- appcleaner — AppCleaner — source: Reader suggestion
|
||||
- ia-writer — iA Writer — source: Reader suggestion
|
||||
- launchos — LaunchOS — source: Reader suggestion
|
||||
- clocker — Clocker — source: Reader suggestion (user wrote "Clocks"; resolved to the well-known indie open-source menu-bar time-zone app)
|
||||
- macfolio — Macfolio — source: Reader suggestion (curation site, not a Mac app — kept under macos-apps topic since the audience is the same)
|
||||
- wallspace — Wallspace — source: Reader suggestion
|
||||
- blip — Blip — source: Reader suggestion (added on follow-up after user noted it was missing)
|
||||
|
||||
Heroes pulled (12 of 12) — second-pass recovery covered all three initial misses:
|
||||
|
||||
First pass (8/11):
|
||||
- vivid (twitter:image png, 1200×600)
|
||||
- daisydisk (og:image jpg, 1200×630)
|
||||
- ia-writer (og:image webp)
|
||||
- launchos (og:image jpg, 2268×1473)
|
||||
- macfolio (og:image, served jpg under .png URL — saved as .jpg)
|
||||
- wallspace (og:image, served png under .jpg URL — saved as .png)
|
||||
- appcleaner (no og:image; pulled the dev-site product shot at /img/appcleaner.png — 465×365, slightly under the 400px threshold but it's a clean product image)
|
||||
- monitorcontrol (no usable og:image — GitHub auto-card has overlay text — pulled `.github/screenshot.png` from the repo)
|
||||
|
||||
Recovery pass (3 + blip):
|
||||
- mos (downloaded `og.svg`, fixed an unescaped `&` on line 78 of the SVG, ran through `rsvg-convert -w 1200 -h 630` → 1200×630 png; the asset is the dev's brand+tagline OG card, so it's a "card" hero rather than a screenshot — comparable to DaisyDisk's)
|
||||
- clocker (GitHub repo's `Archive/Old Screenshots/Clocker-1.png` via `raw.githubusercontent.com` — 1282×800 actual product screenshot of the menu-bar time-zone view)
|
||||
- cleanmykeyboard (App Store does serve screenshots in plain HTML after all — they're scattered as `https://is1-ssl.mzstatic.com/image/thumb/PurpleSource…/<id>.jpg/1286x804bb.jpg` URLs; previous run filtered them out because the regex stopped at the first non-`.jpg/.png/.webp` extension and missed the `/1286x804bb.jpg` size suffix appended after the image-id `.jpg`. Fixed the regex this run; got a clean 1286×804 product screenshot.)
|
||||
- blip (og:image at `https://blip.net/og_image.jpg`, 1200×630)
|
||||
|
||||
Patterns / SKILL.md update candidates:
|
||||
- **GitHub auto-OG cards (`opengraph.githubassets.com/...`) carry the repo's tagline as overlay text** — skip per the "no overlay text" rule. Prefer a real screenshot from `.github/` or `assets/` (or `Archive/`!) via `raw.githubusercontent.com` instead.
|
||||
- **Some sites' og:image URL lies about extension.** macfolio.com/og-image.png served JPEG bytes; wallspace served PNG bytes from a `.jpg` URL. Same lesson as the prior Setapp/Sunmory note: trust `file` magic over the URL extension when naming the saved hero. Worth fixing in the hero-fetch path itself.
|
||||
- **App Store screenshots ARE accessible via plain HTML, but the URLs have a doubled extension.** The pattern is `https://is1-ssl.mzstatic.com/image/thumb/PurpleSource…/<id>.jpg/<W>x<H>bb.jpg` — the `.jpg` after `<id>` is part of the path, then the resize suffix `<W>x<H>bb.<ext>` appends. Naive regexes that stop at the first `.jpg|.png|.webp` truncate before the resize suffix and grab a 200×200 thumb instead of the 1286×804 hero. Fix: greedy match through to the LAST extension-like suffix on the URL. (CleanMyKeyboard worked this run after applying that fix.)
|
||||
- **`og.svg` is now common** on Next.js / Vercel-hosted dev sites (Mos, others). `find-hero.ts` only globs `{png,jpg,jpeg,gif,webp}`. The pragmatic answer is to convert at fetch time with `rsvg-convert -w 1200 -h 630 in.svg -o out.png` — works fine, accepts a wide set of SVG features, and produces a hero compatible with the existing glob. Watch for unescaped `&` characters in the SVG body (Mos had one on line 78) — `rsvg-convert` is a strict XML parser and will reject the file; a simple `sed 's/&/\&/g'` over the text-content lines is enough.
|
||||
- **Repos sometimes hide screenshots under `Archive/Old Screenshots/`** (Clocker) — old marketing material the maintainer didn't bother re-shooting after the redesign. Still a perfectly usable product shot. Worth checking `Archive/`, `docs/`, `marketing/`, and any `.github/` dir before giving up on a GitHub-hosted find.
|
||||
|
||||
## 2026-05-05 — review: blip
|
||||
|
||||
Graduated from find captured 2026-05-05, source: Reader suggestion.
|
||||
Hero: rejected the find's `blip.net/og_image.jpg` brand-card splash in favour of MacMenuBar's 500×491 product screenshot showing the actual menu-bar dropdown (paired-devices list, search, "Add a Device"). Smaller than usual but content-only and shows what the app does, vs. a marketing collage with overlay text.
|
||||
Category: `indie` (existing — fits cleanly alongside other single-purpose indie apps without justifying a new `file-transfer` or `networking` bucket yet).
|
||||
Pattern note: **secondary blog/curation sites are a good hero source for apps whose own site is a heavily-styled marketing splash.** MacMenuBar embedded a clean menu-bar product crop that the dev site itself didn't expose anywhere fetchable. Worth adding macmenubar.com to the "press writeup fallback" list alongside Colossal/MacStories.
|
||||
|
||||
@@ -5,6 +5,7 @@ interface Props {
|
||||
confirm: string;
|
||||
action?: string;
|
||||
variant?: 'inline' | 'block';
|
||||
slug?: string;
|
||||
}
|
||||
const {
|
||||
label,
|
||||
@@ -12,6 +13,7 @@ const {
|
||||
confirm,
|
||||
action = 'copy',
|
||||
variant = 'block',
|
||||
slug,
|
||||
} = Astro.props;
|
||||
---
|
||||
|
||||
@@ -21,6 +23,7 @@ const {
|
||||
data-edit-action={action}
|
||||
data-command={command}
|
||||
data-confirm={confirm}
|
||||
data-slug={slug}
|
||||
>
|
||||
<span class="edit-eyebrow">Edit</span>
|
||||
<span class="edit-label">{label}</span>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<pre class="edit-confirm-command"></pre>
|
||||
<div class="edit-confirm-actions">
|
||||
<button type="button" class="edit-confirm-cancel" data-close>Cancel</button>
|
||||
<button type="button" class="edit-confirm-go">Copy command</button>
|
||||
<button type="button" class="edit-confirm-go" data-default-label="Copy command">Copy command</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -28,11 +28,14 @@
|
||||
<script>
|
||||
const dialog = document.getElementById('edit-confirm');
|
||||
const desc = dialog?.querySelector('.edit-confirm-description');
|
||||
const cmdEl = dialog?.querySelector('.edit-confirm-command');
|
||||
const cmdEl = dialog?.querySelector('.edit-confirm-command') as HTMLElement | null;
|
||||
const goBtn = dialog?.querySelector('.edit-confirm-go') as HTMLButtonElement | null;
|
||||
const toast = document.getElementById('edit-toast');
|
||||
let pendingCommand = '';
|
||||
let pendingMode: 'copy' | 'set-pick' = 'copy';
|
||||
let pendingSlug = '';
|
||||
let toastTimer: ReturnType<typeof setTimeout> | undefined;
|
||||
const defaultGoLabel = goBtn?.dataset.defaultLabel ?? 'Copy command';
|
||||
|
||||
function showToast(text: string) {
|
||||
if (!toast) return;
|
||||
@@ -42,11 +45,27 @@
|
||||
toastTimer = setTimeout(() => { toast.hidden = true; }, 2400);
|
||||
}
|
||||
|
||||
function openModal({ command, description }: { command: string; description: string }) {
|
||||
function openModal({
|
||||
command,
|
||||
description,
|
||||
mode = 'copy',
|
||||
slug = '',
|
||||
goLabel,
|
||||
}: {
|
||||
command: string;
|
||||
description: string;
|
||||
mode?: 'copy' | 'set-pick';
|
||||
slug?: string;
|
||||
goLabel?: string;
|
||||
}) {
|
||||
if (!dialog || !desc || !cmdEl) return;
|
||||
pendingCommand = command;
|
||||
pendingMode = mode;
|
||||
pendingSlug = slug;
|
||||
desc.textContent = description;
|
||||
cmdEl.textContent = command;
|
||||
cmdEl.hidden = !command;
|
||||
if (goBtn) goBtn.textContent = goLabel ?? defaultGoLabel;
|
||||
dialog.hidden = false;
|
||||
setTimeout(() => goBtn?.focus(), 0);
|
||||
}
|
||||
@@ -55,6 +74,10 @@
|
||||
if (!dialog) return;
|
||||
dialog.hidden = true;
|
||||
pendingCommand = '';
|
||||
pendingMode = 'copy';
|
||||
pendingSlug = '';
|
||||
if (cmdEl) cmdEl.hidden = false;
|
||||
if (goBtn) goBtn.textContent = defaultGoLabel;
|
||||
}
|
||||
|
||||
dialog?.addEventListener('click', (e) => {
|
||||
@@ -62,9 +85,34 @@
|
||||
if (t.closest('[data-close]')) closeModal();
|
||||
});
|
||||
|
||||
async function postSetPick(slug: string) {
|
||||
const res = await fetch('/api/set-pick/', {
|
||||
method: 'POST',
|
||||
headers: { 'content-type': 'application/json' },
|
||||
body: JSON.stringify({ slug }),
|
||||
});
|
||||
if (!res.ok) {
|
||||
const err = await res.json().catch(() => ({ error: res.statusText }));
|
||||
throw new Error(err.error || `HTTP ${res.status}`);
|
||||
}
|
||||
return res.json() as Promise<{ slug: string }>;
|
||||
}
|
||||
|
||||
goBtn?.addEventListener('click', async () => {
|
||||
const mode = pendingMode;
|
||||
const slug = pendingSlug;
|
||||
const cmd = pendingCommand;
|
||||
closeModal();
|
||||
if (mode === 'set-pick') {
|
||||
try {
|
||||
await postSetPick(slug);
|
||||
showToast(`Today's pick set to ${slug}`);
|
||||
} catch (err) {
|
||||
showToast('Set-pick failed — see console');
|
||||
console.error('set-pick failed:', err);
|
||||
}
|
||||
return;
|
||||
}
|
||||
try {
|
||||
await navigator.clipboard.writeText(cmd);
|
||||
showToast('Copied — paste into Claude');
|
||||
@@ -113,6 +161,22 @@
|
||||
description = `Tag "${name}" with "${tag}".`;
|
||||
}
|
||||
|
||||
if (btn.dataset.editAction === 'set-pick') {
|
||||
const slug = btn.dataset.slug || '';
|
||||
if (!slug) {
|
||||
showToast('No slug on set-pick button.');
|
||||
return;
|
||||
}
|
||||
openModal({
|
||||
command: '',
|
||||
description,
|
||||
mode: 'set-pick',
|
||||
slug,
|
||||
goLabel: 'Set as pick',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
openModal({ command, description });
|
||||
});
|
||||
</script>
|
||||
|
||||
|
After Width: | Height: | Size: 34 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "AppCleaner"
|
||||
subtitle: "Drag an app onto it and every preference, cache, and login item goes too"
|
||||
date: 2026-05-05
|
||||
link: "https://freemacsoft.net/appcleaner/"
|
||||
linkText: "Visit freemacsoft.net"
|
||||
source: "Reader suggestion"
|
||||
topics:
|
||||
- macos-apps
|
||||
tags: [macos, utility, uninstaller, free]
|
||||
description: "Free Mac uninstaller from FreeMacSoft that hunts down the dozen support files an app leaves scattered across ~/Library when you drag it to the Trash."
|
||||
---
|
||||
|
||||
Dragging a Mac app to the Trash leaves behind preferences, application support folders, login items, and launch agents that nobody bothers to remove. AppCleaner finds the lot — drop an app onto its window and it lists every related file across `~/Library` and the system, ticked and ready to delete. Its SmartDelete mode also watches for apps you've already trashed and offers to clean up the leftovers. Free, lean, has been a "first day on a new Mac" install for a decade.
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Arundhati Roy on the Deepest Measure of Success"
|
||||
date: 2026-05-05
|
||||
link: "https://www.themarginalian.org/2026/05/04/arundhati-roy-success/"
|
||||
linkText: "themarginalian.org"
|
||||
source: "The Marginalian"
|
||||
topics:
|
||||
- quotes
|
||||
- general-delight
|
||||
tags: [arundhati-roy, success, attention, values]
|
||||
description: "Roy reframes success as a list of practiced verbs — to love, to be loved, to never forget your own insignificance — rather than an outcome."
|
||||
---
|
||||
|
||||
Maria Popova lifts a passage from Arundhati Roy that resets what success is for: "To love. To be loved. To never forget your own insignificance. To never get used to the unspeakable violence and the vulgar disparity of life around you." Roy's measure is a set of ongoing verbs, not an outcome you cross off — and she lists them in an order that's hard to argue with. Worth printing out as a counterweight to the spreadsheet kind of life-keeping.
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Simone de Beauvoir on Marriage and the Freedom to Change"
|
||||
date: 2026-05-05
|
||||
link: "https://www.themarginalian.org/2026/05/04/simone-de-beauvoir-marriage-change/"
|
||||
linkText: "themarginalian.org"
|
||||
source: "The Marginalian"
|
||||
topics:
|
||||
- quotes
|
||||
- general-delight
|
||||
tags: [beauvoir, marriage, choice, philosophy]
|
||||
description: "Beauvoir on why a marriage isn't a single decision but a daily one — and why that's its strength, not its problem."
|
||||
---
|
||||
|
||||
Maria Popova surfaces a Beauvoir argument worth holding onto: a real choice isn't made once but kept in motion — "constantly in the making; it is repeated." Beauvoir applies it to marriage, but it lands harder when you generalise it: a vow, a job, a city, a friendship are alive only as long as they're being chosen again. The Marginalian's reading sets the line against Beauvoir's wider work and her partnership with Sartre, where the daily renegotiation was the whole point.
|
||||
|
After Width: | Height: | Size: 165 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "DIY Birth Month Flower Perpetual Calendar"
|
||||
subtitle: "A perpetual desk calendar built around the birth-month flower of every name in your life"
|
||||
date: 2026-05-05
|
||||
link: "https://www.uncommongoods.com/product/diy-birth-month-flower-perpetual-calendar"
|
||||
linkText: "uncommongoods.com"
|
||||
source: "Uncommon Goods"
|
||||
topics:
|
||||
- gifts
|
||||
tags: [calendar, birthdays, botanical, perpetual]
|
||||
description: "A build-your-own perpetual calendar with botanical illustrations corresponding to each person's birth-month flower — the kind that actually gets used because the names are written in by hand."
|
||||
---
|
||||
|
||||
Most birthday calendars sit in a drawer because the work of writing every name in is the part nobody does. This one ships as a kit: you fill in the dates with the names that matter to you, and each month is illustrated with that month's birth-flower (asters for September, marigolds for October, and so on). Perpetual, so it doesn't expire on January 1 — and the act of writing the names in turns the calendar into the gift, not the object.
|
||||
|
After Width: | Height: | Size: 74 KiB |
@@ -0,0 +1,15 @@
|
||||
---
|
||||
name: "Blip"
|
||||
subtitle: "AirDrop for everyone, even the Windows users"
|
||||
date: 2026-05-05
|
||||
link: "https://blip.net/"
|
||||
linkText: "Visit blip.net"
|
||||
source: "Reader suggestion"
|
||||
topics:
|
||||
- macos-apps
|
||||
tags: [file-transfer, cross-platform, menu-bar, free]
|
||||
description: "Menu-bar file-transfer app that works like AirDrop but spans Mac, Windows, Linux, iOS, and Android — direct, end-to-end, no server-side storage, no size limit."
|
||||
promotedTo: blip
|
||||
---
|
||||
|
||||
AirDrop is great until the person you're sending to has a ThinkPad. Blip lives in the menu bar and beams files device-to-device the same way — pick a contact (identified by email), drop a file in, it streams directly without ever sitting on a Blip server. Works on the same Wi-Fi or across the internet, no size cap, and the Mac/Windows/Linux/iOS/Android clients all talk to each other. Free for personal use.
|
||||
|
After Width: | Height: | Size: 75 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "55-Minute Boards of Canada B-Sides Mix"
|
||||
subtitle: "Rare and unreleased material from the Scottish electronic duo, in one continuous session"
|
||||
date: 2026-05-05
|
||||
link: "https://www.youtube.com/watch?v=yxQNAKzJ3vg"
|
||||
linkText: "youtube.com"
|
||||
source: "Kottke.org"
|
||||
topics:
|
||||
- general-delight
|
||||
tags: [music, boards-of-canada, mix, electronic]
|
||||
description: "A fan-curated 55-minute mix of Boards of Canada B-sides and rarities — the kind of background that doesn't ask anything of you."
|
||||
---
|
||||
|
||||
Boards of Canada release on geological timescales, so the deep cuts and discarded sketches accumulate quietly in places like this — a fan-assembled 55-minute set drawn from B-sides and unreleased material. Kottke surfaced it as the rare ambient-leaning mix that holds up as both work-music and something to sit with. Sustained mood, no jarring transitions; reliably the right answer to "play something."
|
||||
|
After Width: | Height: | Size: 297 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Chess Peace"
|
||||
subtitle: "A pacifist chess puzzle: place the pieces so none can attack each other"
|
||||
date: 2026-05-05
|
||||
link: "https://chesspeace.app/"
|
||||
source: "Daring Fireball — Linked List"
|
||||
topics:
|
||||
- macos-apps
|
||||
- general-delight
|
||||
tags: [ios, chess, puzzle, indie-game]
|
||||
description: "Logic puzzle for iOS that uses the chess pieces' move rules in reverse — arrange them on the board so none threatens another."
|
||||
---
|
||||
|
||||
The board has a fixed set of squares; you have a fixed set of pieces. The only rule is that no piece can attack another, which turns the chess move-vocabulary into a constraint solver instead of a combat system. $7 one-time, no ads, no subscription — small enough to dip into on a train, generous enough that the late-game boards are real puzzles.
|
||||
|
After Width: | Height: | Size: 78 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "CleanMyKeyboard"
|
||||
subtitle: "One tap to disable the keyboard so you can wipe it down"
|
||||
date: 2026-05-05
|
||||
link: "https://apps.apple.com/us/app/cleanmykeyboard/id6468120888?mt=12"
|
||||
linkText: "Visit on App Store"
|
||||
source: "Reader suggestion"
|
||||
topics:
|
||||
- macos-apps
|
||||
tags: [macos, utility, cleaning, indie]
|
||||
description: "Tiny Mac app that locks all keyboard input on demand so you can clean the keys without spamming triple-q into a Terminal."
|
||||
---
|
||||
|
||||
The fix-this-yourself kind of utility: one button locks every key on the Mac, you scrub the keyboard with a cloth and isopropyl, then click Stop to wake it back up. Solves the actual problem you have when you reach for the keyboard with a damp microfiber and remember every press is doing something. Apple's own answer is to shut the laptop down, which is a worse answer.
|
||||
|
After Width: | Height: | Size: 295 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Clocker"
|
||||
subtitle: "Multiple time zones in the menu bar, with a meeting-time slider"
|
||||
date: 2026-05-05
|
||||
link: "https://github.com/n0shake/clocker"
|
||||
linkText: "View on GitHub"
|
||||
source: "Reader suggestion"
|
||||
topics:
|
||||
- macos-apps
|
||||
tags: [macos, time-zones, menu-bar, open-source]
|
||||
description: "Free open-source menu-bar app that shows clocks for any number of cities and lets you scrub a slider to find a meeting time that works everywhere."
|
||||
---
|
||||
|
||||
Clocker stacks every time zone you care about in a single menu-bar dropdown — give each one a custom label ("Mum", "Berlin team", "the SRE on call") and pin a few to the bar itself. The killer detail is the timeline slider at the bottom: drag it forward and every clock updates in lock-step, so finding a 9-to-6 overlap across three continents is a five-second scrub instead of arithmetic. Free, open source, on the App Store too.
|
||||
|
After Width: | Height: | Size: 125 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "DaisyDisk"
|
||||
subtitle: "A sunburst map of your disk, dragged-and-dropped into the trash"
|
||||
date: 2026-05-05
|
||||
link: "https://daisydiskapp.com/"
|
||||
linkText: "Visit daisydiskapp.com"
|
||||
source: "Reader suggestion"
|
||||
topics:
|
||||
- macos-apps
|
||||
tags: [macos, disk-space, visualization]
|
||||
description: "Apple Design Award-winning disk space analyzer that scans an entire SSD in seconds and shows it as an interactive sunburst diagram."
|
||||
---
|
||||
|
||||
The default macOS storage panel is a lie of pastel bars; DaisyDisk is what you reach for when "Other" has eaten 80GB and you need to actually find it. The scan is genuinely fast — a 1TB SSD in single-digit seconds — and the sunburst ring lets you click your way down to whichever forgotten Xcode build is hogging the drive, drop files into a delete tray, and clear them in one go. Apple Design Award winner; one-time license, no subscription.
|
||||
|
After Width: | Height: | Size: 1.4 MiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: ".Here, Baa Atoll"
|
||||
subtitle: "A design-led Maldives retreat spread along a two-kilometre sandbank"
|
||||
date: 2026-05-05
|
||||
link: "https://www.wallpaper.com/travel/hotels/here-baa-atoll-maldives-review"
|
||||
linkText: "wallpaper.com"
|
||||
source: "Wallpaper* Travel"
|
||||
topics:
|
||||
- travel
|
||||
tags: [maldives, baa-atoll, design-hotel, sandbank]
|
||||
description: "A design-led Maldives property running along a two-kilometre sandbank — a deliberately spread-out alternative to the cluster-around-a-pool model."
|
||||
---
|
||||
|
||||
Most Maldives resorts cluster villas tightly around a central pool deck; .Here strings its rooms along a two-kilometre sandbank, so the resort itself becomes something you walk between. Baa Atoll is a UNESCO Biosphere Reserve — manta rays and whale sharks during the south-west monsoon — and the property leans into the location rather than treating the surrounding ocean as wallpaper.
|
||||
|
After Width: | Height: | Size: 154 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Every Frame a Painting — The Visual Comedy of Wes Anderson's Isle of Dogs"
|
||||
subtitle: "Tony Zhou and Taylor Ramos return after years away with a new video essay"
|
||||
date: 2026-05-05
|
||||
link: "https://www.youtube.com/watch?v=eex-_BztHSE"
|
||||
linkText: "youtube.com"
|
||||
source: "Kottke.org"
|
||||
topics:
|
||||
- general-delight
|
||||
tags: [video-essay, film, wes-anderson, every-frame-a-painting]
|
||||
description: "A new video essay from the long-dormant Every Frame a Painting series — a careful analysis of how Anderson stages comedy as a visual problem."
|
||||
---
|
||||
|
||||
Tony Zhou and Taylor Ramos shut Every Frame a Painting down in 2017 at the height of its influence, and stayed mostly quiet for years; this is them back, with the same careful frame-by-frame habit applied to Anderson's stop-motion film. The essay is interesting on its own — a clean explanation of how Anderson plays comedy through symmetry, blocking, and timing rather than dialogue — and meaningful as a signal that the format that essentially invented modern video criticism is alive again.
|
||||
|
After Width: | Height: | Size: 198 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Fall Creek Falls, Tennessee"
|
||||
subtitle: "A 256-foot waterfall, the tallest free-falling drop east of the Mississippi"
|
||||
date: 2026-05-05
|
||||
link: "https://www.theoutbound.com/tennessee/hiking/hike-to-fall-creek-falls"
|
||||
linkText: "theoutbound.com"
|
||||
source: "The Outbound Collective"
|
||||
topics:
|
||||
- travel
|
||||
tags: [tennessee, waterfall, state-park, hiking]
|
||||
description: "Tennessee's Fall Creek Falls drops 256 feet in a single curtain — the tallest free-falling waterfall in the eastern United States."
|
||||
---
|
||||
|
||||
Fall Creek Falls drops 256 feet in a single curtain, the tallest free-falling waterfall east of the Mississippi, and the surrounding state park stretches across 20,000 acres with 34 miles of trails braided around it. The hike itself is short — 2.76 miles — so it's more of an excuse for the rest of the park than a demanding day. Worth the detour off Tennessee's I-40, especially after a wet week when the creek is at full pressure.
|
||||
|
After Width: | Height: | Size: 254 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Hidden Patterns Watercoloring Set"
|
||||
subtitle: "A blank page that reveals an illustrated scene as soon as a wet brush touches it"
|
||||
date: 2026-05-05
|
||||
link: "https://www.uncommongoods.com/product/hidden-patterns-watercoloring-set"
|
||||
linkText: "uncommongoods.com"
|
||||
source: "Uncommon Goods"
|
||||
topics:
|
||||
- gifts
|
||||
tags: [watercolor, art, kids, magic]
|
||||
description: "A watercoloring set whose pages look blank until water touches them — then the illustration reveals itself under the wash."
|
||||
---
|
||||
|
||||
Each page is printed with a wax-resist illustration that's invisible on the white paper until water hits it; the design surfaces as the wash spreads, and you're effectively colouring inside lines you can't see until they show themselves. The trick is good as a gift for a kid because the reveal does the work: there's no "I can't draw" step before the painting starts. Adult-friendly too — the surprise of what your wash uncovers is the actual pleasure.
|
||||
|
After Width: | Height: | Size: 86 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "iA Writer"
|
||||
subtitle: "The benchmark for plain-text Markdown writing"
|
||||
date: 2026-05-05
|
||||
link: "https://ia.net/writer"
|
||||
linkText: "Visit ia.net/writer"
|
||||
source: "Reader suggestion"
|
||||
topics:
|
||||
- macos-apps
|
||||
tags: [writing, markdown, focus, cross-platform]
|
||||
description: "Cross-platform Markdown editor with focus mode, syntax-aware typography, and a style-checker that strikes through filler words."
|
||||
---
|
||||
|
||||
iA Writer's whole position is restraint — a custom typeface tuned for on-screen reading, focus mode that fades every paragraph except the one you're typing, and a Style Check that strikes through filler ("just", "very", "really") so you have to defend keeping it. No formatting toolbar, no rich text, no AI buttons; the document is a `.md` file you can open anywhere. Available on Mac, iPhone, iPad, Android, and Windows, all with the same library and the same feel.
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
name: "The Ballpark Figure Joke"
|
||||
date: 2026-05-05
|
||||
link: "https://icanhazdadjoke.com/j/GJeaF6pOKmb"
|
||||
linkText: "icanhazdadjoke.com"
|
||||
source: "icanhazdadjoke"
|
||||
topics:
|
||||
- dad-jokes
|
||||
tags: [baseball, idiom, pun, dodgers]
|
||||
description: "Stadium capacity meets the idiom for an estimate."
|
||||
---
|
||||
|
||||
> They say Dodger Stadium can hold up to fifty-six thousand people, but that is just a ballpark figure.
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
name: "The Scenter Joke"
|
||||
date: 2026-05-05
|
||||
link: "https://reddit.com/r/dadjokes/comments/1t0q6xc/why_is_your_nose_in_the_middle_of_your_face/"
|
||||
linkText: "r/dadjokes"
|
||||
source: "r/dadjokes"
|
||||
topics:
|
||||
- dad-jokes
|
||||
tags: [nose, anatomy, pun, scent]
|
||||
description: "A short anatomical pun about the nose's position on the face."
|
||||
---
|
||||
|
||||
> Why is your nose in the middle of your face?
|
||||
>
|
||||
> Because it's the scenter.
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
name: "The Tom Hanks Autograph Joke"
|
||||
date: 2026-05-05
|
||||
link: "https://reddit.com/r/dadjokes/comments/1t27g6s/i_once_met_tom_hanks_i_asked_him_for_his_autograph/"
|
||||
linkText: "r/dadjokes"
|
||||
source: "r/dadjokes"
|
||||
topics:
|
||||
- dad-jokes
|
||||
tags: [tom-hanks, autograph, pun, celebrity]
|
||||
description: "A one-letter-off pun on a famous actor's name."
|
||||
---
|
||||
|
||||
> I once met Tom Hanks. I asked him for his autograph.
|
||||
>
|
||||
> All he wrote was "Thanks." So rude…
|
||||
|
After Width: | Height: | Size: 296 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Just Add Booze Frozen Cocktail Slushie Mix"
|
||||
subtitle: "A powdered slushie base where the spirit you choose is the only liquid"
|
||||
date: 2026-05-05
|
||||
link: "https://www.uncommongoods.com/product/just-add-booze-frozen-cocktail-slushie-mix"
|
||||
linkText: "uncommongoods.com"
|
||||
source: "Uncommon Goods"
|
||||
topics:
|
||||
- gifts
|
||||
tags: [cocktails, slushie, summer, kitchen]
|
||||
description: "Powdered cocktail mix where the alcohol replaces the water — pour vodka into the bag, freeze, scoop. No blender, no ice, no measuring."
|
||||
---
|
||||
|
||||
The trick is that the powder uses the spirit itself as the liquid — pour vodka, tequila, or rum straight into the bag and freeze. Six to eight hours later you scoop a slushie that's both cold and proof-strong. No blender, no ice, no measuring; the kind of object that turns a hot afternoon into a single bag-and-freezer decision.
|
||||
|
After Width: | Height: | Size: 24 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Cat Watering Can"
|
||||
subtitle: "A watering can shaped like a sitting cat — the spout is the tail"
|
||||
date: 2026-05-05
|
||||
link: "https://kikkerland.com/products/cat-watering-can"
|
||||
linkText: "kikkerland.com"
|
||||
source: "Kikkerland"
|
||||
topics:
|
||||
- gifts
|
||||
tags: [garden, cat, kikkerland, kitsch]
|
||||
description: "A small watering can in the form of a sitting cat — the spout is the tail and the handle is its arched back."
|
||||
---
|
||||
|
||||
The can is genuinely shaped like a cat: the body holds water, the arched back is the handle, and the spout is the curl of the tail. Small enough that it lives on a windowsill rather than in the shed, which means it's the can you actually grab when the basil is wilting. Strictly indoor scale — it's not going to fill a planter — but the houseplant rotation is exactly where most home watering happens.
|
||||
|
After Width: | Height: | Size: 61 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: '"Ding Dong! The Witch is Dead" Music Box'
|
||||
subtitle: "A hand-crank music box that plays the Munchkin victory anthem from Oz"
|
||||
date: 2026-05-05
|
||||
link: "https://kikkerland.com/products/ding-dong-the-witch-is-dead"
|
||||
linkText: "kikkerland.com"
|
||||
source: "Kikkerland"
|
||||
topics:
|
||||
- gifts
|
||||
tags: [music-box, wizard-of-oz, novelty, kikkerland]
|
||||
description: "A wood-cased hand-crank music box that plays one specific song — the Munchkin chorus from The Wizard of Oz."
|
||||
---
|
||||
|
||||
The whole appeal of a hand-crank music box is that it does one specific song extremely well, and this one does the Munchkin chorus from *The Wizard of Oz* — the moment when the house lands and Glinda confirms the news. Wooden case, brass cylinder, slow turn, instantly recognisable five seconds in. A gift that is funniest when there's a specific named witch in mind.
|
||||
|
After Width: | Height: | Size: 62 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Kirby Cove"
|
||||
subtitle: "A short Marin Headlands hike to a hidden Golden Gate Bridge view"
|
||||
date: 2026-05-05
|
||||
link: "https://www.theoutbound.com/san-francisco/hiking/hike-kirby-cove"
|
||||
linkText: "theoutbound.com"
|
||||
source: "The Outbound Collective"
|
||||
topics:
|
||||
- travel
|
||||
tags: [california, san-francisco, marin, golden-gate]
|
||||
description: "Three miles of Marin Headlands trail ending at a small beach with the Golden Gate Bridge framed straight on — and almost no one else there."
|
||||
---
|
||||
|
||||
A three-mile out-and-back from the Marin Headlands down to a gravelly cove, ending under the Golden Gate Bridge at a viewing angle the postcards don't bother with — the bridge straight on, the city skyline behind it. The trick is that almost nobody hikes it: most visitors take the Vista Point pull-off at the north end and never realise the path down to the water is a few minutes' drive away. Best at sunset; the fog rolling under the bridge from this angle is exactly the picture that everyone else is fighting for from a turn-out.
|
||||
|
After Width: | Height: | Size: 1.3 MiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "LaunchOS"
|
||||
subtitle: "A pixel-faithful Launchpad replacement for macOS Tahoe"
|
||||
date: 2026-05-05
|
||||
link: "https://launchosapp.com/"
|
||||
linkText: "Visit launchosapp.com"
|
||||
source: "Reader suggestion"
|
||||
topics:
|
||||
- macos-apps
|
||||
tags: [macos, launcher, launchpad, tahoe]
|
||||
description: "Native Mac app that brings back the Launchpad grid Apple removed in macOS 26 Tahoe, with custom layouts and global hotkey access."
|
||||
---
|
||||
|
||||
macOS 26 Tahoe quietly retired Launchpad and replaced it with a Spotlight-style app sheet a lot of people don't actually want. LaunchOS rebuilds the original Launchpad almost pixel-for-pixel — paginated grid, drag-to-reorder, folder groups — with global hotkey access, right-click menus, and hideable apps the original never had. If you'd built muscle memory around F4 and a four-finger pinch, this gives it back without rolling back the OS.
|
||||
|
After Width: | Height: | Size: 69 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Light Crime Audio Player"
|
||||
subtitle: "A native macOS music player from a developer who wanted iTunes back"
|
||||
date: 2026-05-05
|
||||
link: "https://github.com/chrisallick/light-crime-audio-player"
|
||||
source: "Hacker News — Show HN"
|
||||
topics:
|
||||
- macos-apps
|
||||
- tools
|
||||
tags: [macos, music, native, indie]
|
||||
description: "Open-source native macOS audio player aimed at people who want a quiet local-files music app, not a streaming portal."
|
||||
---
|
||||
|
||||
A SwiftUI player for local music libraries — the kind of app Apple keeps un-shipping — built and open-sourced by a developer scratching their own itch. It plays files, shows album art, and gets out of the way. Useful as a Music.app replacement if you keep your library on disk and don't want a cloud service in the loop.
|
||||
|
After Width: | Height: | Size: 97 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Macfolio"
|
||||
subtitle: "A taste-driven catalog of Mac software, hardware, and desk objects"
|
||||
date: 2026-05-05
|
||||
link: "https://macfolio.com/"
|
||||
linkText: "Visit macfolio.com"
|
||||
source: "Reader suggestion"
|
||||
topics:
|
||||
- macos-apps
|
||||
tags: [curation, mac, recommendations]
|
||||
description: "Independently run discovery site that organizes Mac apps, hardware, books, and videos into curated, lightly opinionated category pages."
|
||||
---
|
||||
|
||||
A Pinterest-shaped sibling to the usual "best Mac apps" listicles — Macfolio sorts software, peripherals, desk furniture, and Apple-history books into clean category grids with short editor blurbs and a "Top Picks" filter. It's the kind of site that surfaces the third-best app for a niche you didn't know you had, which is what makes it worth keeping in a sources rotation. Independently run; updated regularly; no email gate.
|
||||
|
After Width: | Height: | Size: 1.5 MiB |
@@ -0,0 +1,15 @@
|
||||
---
|
||||
name: "MonitorControl"
|
||||
subtitle: "Native brightness and volume keys for any external display"
|
||||
date: 2026-05-05
|
||||
link: "https://github.com/MonitorControl/MonitorControl"
|
||||
linkText: "View on GitHub"
|
||||
source: "Reader suggestion"
|
||||
topics:
|
||||
- macos-apps
|
||||
tags: [macos, display, ddc, open-source]
|
||||
description: "Open-source Mac utility that uses DDC/CI to make Apple's brightness and volume keys actually work on third-party monitors."
|
||||
promotedTo: "monitorcontrol"
|
||||
---
|
||||
|
||||
Plug a Dell or LG into a Mac and the F1/F2 keys do nothing — Apple reserves real brightness control for its own displays. MonitorControl talks DDC/CI to the monitor over the existing video cable and remaps the standard Apple keys to actually move the panel's hardware backlight, with the native macOS OSD overlay. It also slaves a non-Apple display to the built-in screen's ambient-light dimming, so the laptop and the external can finally agree on what time of day it is. Free, open source, brew-installable.
|
||||
|
After Width: | Height: | Size: 174 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Mos"
|
||||
subtitle: "Mouse-wheel scrolling that finally feels like a trackpad"
|
||||
date: 2026-05-05
|
||||
link: "https://mos.caldis.me/"
|
||||
linkText: "Visit mos.caldis.me"
|
||||
source: "Reader suggestion"
|
||||
topics:
|
||||
- macos-apps
|
||||
tags: [macos, scrolling, mouse, open-source]
|
||||
description: "Tiny menu-bar utility that smooths and momentum-scrolls every mouse wheel on macOS, with independent direction settings for trackpad and mouse."
|
||||
---
|
||||
|
||||
The macOS scroll behaviour quietly assumes everyone is using a Magic Trackpad — wheel mice get a stuttery, line-by-line ride and the same "natural" direction whether you want it or not. Mos sits in the menu bar, intercepts wheel events, and replaces them with a smoothed, momentum-based curve, plus it lets you flip mouse direction independently of the trackpad. Free, open-source, and the kind of thing you forget about thirty seconds after installing because the friction it removes was invisible until it was gone.
|
||||
|
After Width: | Height: | Size: 214 KiB |
@@ -0,0 +1,16 @@
|
||||
---
|
||||
name: "Nicks Handmade Belts"
|
||||
subtitle: "Wickett & Craig double-stuffed leather, solid brass buckle, made in Spokane"
|
||||
date: 2026-05-05
|
||||
link: "https://www.nicksboots.com/leather-goods/belts.html"
|
||||
linkText: "nicksboots.com"
|
||||
source: "r/BuyItForLife"
|
||||
topics:
|
||||
- tools
|
||||
- clothing
|
||||
- gifts
|
||||
tags: [leather, belt, made-in-usa, wickett-craig]
|
||||
description: "Heavy work belts cut from Wickett & Craig double-stuffed slate leather and finished with solid brass buckles in Nicks' Spokane bootmaking shop."
|
||||
---
|
||||
|
||||
Nicks is a Spokane bootmaker that also does belts, and the build is exactly what the boot crowd would tell you to expect: Wickett & Craig double-stuffed slate-tanned leather, edges hand-burnished, solid brass hardware sewn through several layers rather than riveted. The belt is heavy enough that it changes how a pair of trousers hangs and stiff enough that it'll outlast every pair of jeans you put through it. The kind of belt that gets passed down rather than replaced.
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Parrot"
|
||||
subtitle: "A skeuomorphic audio recorder with a tape-deck soul"
|
||||
date: 2026-05-05
|
||||
link: "https://www.zkhrv.com/parrot"
|
||||
source: "Hacker News — Show HN"
|
||||
topics:
|
||||
- macos-apps
|
||||
- tools
|
||||
tags: [audio, recorder, skeuomorphic, indie]
|
||||
description: "Tiny audio recorder app with a deliberately tactile, tape-deck-shaped UI — fun to use, easy to share clips out of."
|
||||
---
|
||||
|
||||
The tape-deck reels actually spin, the level meters bounce, the record button is the kind that rewards a punch — and underneath the cosmetics it's a working voice memo / clip recorder you can drop a take into and export. The whole thing is a small protest against the flat-rectangle default; it's also genuinely faster to operate than the OS's stock Voice Memos because every control is exactly where the metaphor says it should be.
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
name: '"If we knew what we were doing, it would not be called research."'
|
||||
date: 2026-05-05
|
||||
link: "https://quoteinvestigator.com/2026/04/10/doing-research/"
|
||||
linkText: "quoteinvestigator.com"
|
||||
source: "Quote Investigator"
|
||||
topics:
|
||||
- quotes
|
||||
tags: [research, einstein, science, misattribution]
|
||||
description: "Almost universally attributed to Einstein, almost certainly not his — and a more honest description of how research actually proceeds."
|
||||
---
|
||||
|
||||
> If we knew what we were doing, it would not be called research.
|
||||
|
||||
Einstein gets the credit on every quote-image deck in the world, but Quote Investigator traces the line to assorted scientists from 1923 onward — none of them Einstein. The misattribution is the boring half of the story; the durable half is that it's the most honest one-sentence description of how research actually feels from inside, where the working hypothesis changes every Tuesday.
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
name: 'Lifetime Ration of Exclamation Points — "three"'
|
||||
date: 2026-05-05
|
||||
link: "https://quoteinvestigator.com/2026/04/27/lifetime-exclamation/"
|
||||
linkText: "quoteinvestigator.com"
|
||||
source: "Quote Investigator"
|
||||
topics:
|
||||
- quotes
|
||||
tags: [writing, punctuation, advice, craft]
|
||||
description: "A working rule for prose: three exclamation points per career, used wisely."
|
||||
---
|
||||
|
||||
> Every writer has a lifetime ration of three exclamation points. Use them sparingly.
|
||||
|
||||
Quote Investigator traces the rule to 1979, with versions later attributed to William Maxwell, Elmore Leonard, and others — a tradition of editorial advice rather than a single line. The number itself isn't the point; it's the discipline of treating ! as something earned, not strewn. A surprisingly useful constraint to carry into email and Slack, where the exclamation mark has lost most of its bite.
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
name: "Worldwide Sidewalk Joy Map"
|
||||
subtitle: "Curated map of free curb gardens, little libraries, and front-yard galleries"
|
||||
date: 2026-05-05
|
||||
link: "https://sidewalkjoy.com/the-map"
|
||||
linkText: "sidewalkjoy.com"
|
||||
source: "Messy Nessy Chic"
|
||||
topics:
|
||||
- travel
|
||||
- general-delight
|
||||
tags: [map, public-art, neighborhood, walking]
|
||||
description: "A worldwide map of free, curated sidewalk installations — curb gardens, exchanges, little libraries, front-yard galleries — as a walkable destination layer."
|
||||
---
|
||||
|
||||
Sidewalk Joy is a global crowd-built map of the small public installations that turn a walk into something to do — front-yard galleries, exchange shelves, curb-cutting flower gardens, hand-painted little libraries. Pin it before a trip and you've got an entire layer of free, walkable detours that no guidebook is ever going to surface. Submission is open, so the map keeps thickening in the cities where someone's already paying attention.
|
||||
|
After Width: | Height: | Size: 107 KiB |
@@ -0,0 +1,13 @@
|
||||
---
|
||||
name: "SmartMover"
|
||||
subtitle: "An iPhone shortcut that turns moving boxes into QR-coded inventories"
|
||||
date: 2026-05-05
|
||||
link: "https://routinehub.co/shortcut/25415/"
|
||||
source: "r/shortcuts"
|
||||
topics:
|
||||
- apple-tips
|
||||
tags: [shortcuts, moving, qr-code, organization]
|
||||
description: "Make a label, scan a box, see what's inside — a homemade Shortcuts answer to the move-day box-opening lottery."
|
||||
---
|
||||
|
||||
Print a QR label, list what you packed in that box, stick it on. On move-in day, scan any box with your iPhone and the shortcut shows you what's actually in it before you slice the tape. Built by a redditor who got tired of opening boxes labelled "kitchen??" — a small piece of automation that'd be miserable to engineer from scratch but takes about ninety seconds with Apple Shortcuts.
|
||||
|
After Width: | Height: | Size: 739 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "The Fife Arms"
|
||||
subtitle: "A Scottish Highlands hotel with a new Russell Sage-designed Coco Chanel secret room"
|
||||
date: 2026-05-05
|
||||
link: "https://thefifearms.com"
|
||||
linkText: "thefifearms.com"
|
||||
source: "Wallpaper* Travel"
|
||||
topics:
|
||||
- travel
|
||||
tags: [scotland, highlands, hotel, coco-chanel, russell-sage]
|
||||
description: "A maximalist Highlands hotel that's just unveiled a Russell Sage-designed secret room inspired by Coco Chanel's love affair with the surrounding country."
|
||||
---
|
||||
|
||||
The Fife Arms in Braemar already had a reputation for furnishing every guest room as if it were a separate small museum — Picasso lithographs, Pictish stones, taxidermy, embroidered ceilings — and Russell Sage Studio's new addition is a literal hidden room dressed around Chanel's longstanding affection for Scotland. Worth pairing with a long walk in the surrounding Cairngorms; a hotel where most of the interest is *inside* asks a lot of weather to compete.
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "US National Park Finder"
|
||||
subtitle: "All 63 US national parks, filterable by best month and what you actually want to do"
|
||||
date: 2026-05-05
|
||||
link: "https://nikag-ai.github.io/national-parks/"
|
||||
linkText: "nikag-ai.github.io"
|
||||
source: "Recomendo"
|
||||
topics:
|
||||
- travel
|
||||
tags: [national-parks, planning, usa, trip-planner]
|
||||
description: "A single-page tool that filters America's 63 national parks by month, top activities, and stargazing — plus per-park itineraries pulled from Reddit."
|
||||
---
|
||||
|
||||
The site lives on GitHub Pages and does one specific thing well: pick a month and an activity, and it narrows the 63 US national parks to the ones that are actually pleasant to visit then. Each park card surfaces sample itineraries, fun facts, and travel hacks aggregated from Reddit threads — the layer of "what people who've been there actually say" that the NPS site is structurally never going to provide. Free, no account, no app.
|
||||
|
After Width: | Height: | Size: 125 KiB |
@@ -0,0 +1,16 @@
|
||||
---
|
||||
name: "Valchoose Disposable Barf Bags"
|
||||
subtitle: "Hospital-grade 1000mL vomit bags with a rigid plastic ring that holds itself open"
|
||||
date: 2026-05-05
|
||||
link: "https://www.amazon.com/dp/B083J2S3Q6/"
|
||||
linkText: "View on Amazon"
|
||||
source: "Reader suggestion"
|
||||
topics:
|
||||
- tools
|
||||
tags: [first-aid, car, kids, travel, kit]
|
||||
description: "1000mL hospital-grade barf bags with a rigid white plastic ring at the mouth — keeps itself open hands-free, twists into the ring's eyelet groove to seal after use."
|
||||
---
|
||||
|
||||
Most "vomit bag" solutions in a household are an empty grocery sack and a prayer. The Valchoose bags are the same thing hospitals hand out — a deep blue 1000mL pouch fixed to a rigid white plastic ring that holds itself open without anyone needing to grip the rim. That detail matters when the user is a kid in a car seat, a passenger in the dark, or someone in the middle of a wave of nausea: the bag stays where you point it. After use, the ring has an eyelet groove so you can twist the bag closed and lock the twist into the ring for a contained, leak-resistant disposal.
|
||||
|
||||
Compact enough to live in a glove box, a purse, a bedside drawer, or every guest bath. The kind of object that is invisible until the moment it is the only thing you want — and 14 of them is roughly the right multiple for "one kept everywhere I might wish I had one."
|
||||
|
After Width: | Height: | Size: 768 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Vivid"
|
||||
subtitle: "Unlocks the HDR-only headroom on MacBook Pro displays for everyday use"
|
||||
date: 2026-05-05
|
||||
link: "https://www.getvivid.app/"
|
||||
linkText: "Visit getvivid.app"
|
||||
source: "Reader suggestion"
|
||||
topics:
|
||||
- macos-apps
|
||||
tags: [macos, display, brightness, indie]
|
||||
description: "One-time-purchase Mac app that lets the MacBook Pro and Pro Display XDR run their full 1,600-nit panel brightness for SDR content, not just HDR video."
|
||||
---
|
||||
|
||||
Apple caps SDR brightness at 500 nits on the M-series MacBook Pros and Pro Display XDR, even though the panels can hit 1,600. Vivid pretends the whole desktop is HDR content so the display lets the extra headroom out — toggle it from the menu bar or with a hotkey, then drive it from the regular brightness keys. Outdoors on a sunny patio it's the difference between a usable laptop and a mirror; €20 one-time, no subscription.
|
||||
|
After Width: | Height: | Size: 946 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Wallspace"
|
||||
subtitle: "Live video wallpapers for macOS that don't melt the battery"
|
||||
date: 2026-05-05
|
||||
link: "https://wallspace.app/"
|
||||
linkText: "Visit wallspace.app"
|
||||
source: "Reader suggestion"
|
||||
topics:
|
||||
- macos-apps
|
||||
tags: [macos, wallpaper, customization, indie]
|
||||
description: "Native Swift Mac app for 4K live wallpapers with hardware-accelerated playback, multi-monitor support, and a typical CPU draw under 2%."
|
||||
---
|
||||
|
||||
The case against a live wallpaper has always been the fan noise. Wallspace is a native Swift app built around hardware-accelerated playback, so a 4K loop runs at 60fps under 2% CPU — quiet enough to leave on through a video call. Each display gets its own loop, you can drop in any MP4 file from the disk without re-encoding, and the lock screen gets the same treatment on macOS 26+. Free with a one-time $8.99 Pro tier for the curated 4K catalog and lock-screen support.
|
||||
|
After Width: | Height: | Size: 143 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "Wildwood Trail, Washington Park"
|
||||
subtitle: "An in-city wilderness trail through Portland's Hoyt Arboretum"
|
||||
date: 2026-05-05
|
||||
link: "https://www.theoutbound.com/oregon/hiking/hike-the-wildwood-trail"
|
||||
linkText: "theoutbound.com"
|
||||
source: "The Outbound Collective"
|
||||
topics:
|
||||
- travel
|
||||
tags: [oregon, portland, urban-trail, arboretum]
|
||||
description: "A 7.6-mile section of Portland's Wildwood Trail through Hoyt Arboretum, with named groves of conifers branching off the main path."
|
||||
---
|
||||
|
||||
Portland's Wildwood Trail runs over thirty miles through Forest Park; this 7.6-mile section through Washington Park's Hoyt Arboretum is the one most worth a single visit. The arboretum cuts named groves of conifers (Magnolia, Beech, Redwood, Fir) off the main spine, so a slow walk is also a tour through specific trees rather than generic woods. Genuine forest, ten minutes from downtown — the kind of urban-park anomaly that justifies a layover at PDX.
|
||||
|
After Width: | Height: | Size: 48 KiB |
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: "xkcd #2394 — Contiguous 41 States"
|
||||
subtitle: "A US map with seven states quietly missing — your job is to spot which"
|
||||
date: 2026-05-05
|
||||
link: "https://xkcd.com/2394/"
|
||||
linkText: "xkcd.com"
|
||||
source: "Kottke.org"
|
||||
topics:
|
||||
- general-delight
|
||||
tags: [xkcd, geography, puzzle, map]
|
||||
description: "Randall Munroe's 'Contiguous 41 States' map looks normal until you start counting — seven states have been deleted and the borders quietly redrawn around them."
|
||||
---
|
||||
|
||||
The trick is that Randall didn't just grey out seven states — he removed them entirely and let the surrounding states absorb the territory, redrawing borders as if they'd never existed. So the silhouette of the country reads as right at first glance, and you only notice something is off when you try to find Wisconsin. A surprisingly nasty geography test in comic form.
|
||||
|
After Width: | Height: | Size: 47 KiB |
@@ -0,0 +1,24 @@
|
||||
---
|
||||
name: "Blip"
|
||||
subtitle: "AirDrop for everyone, even the Windows users"
|
||||
date: 2026-05-05
|
||||
category: indie
|
||||
tags: [macos, file-transfer, cross-platform, menu-bar, free]
|
||||
description: "A menu-bar file-transfer app shaped like AirDrop but spanning Mac, Windows, Linux, iOS, and Android. Direct device-to-device, no server-side storage, no size cap."
|
||||
link: https://blip.net/
|
||||
linkText: "Visit blip.net"
|
||||
source: "Reader suggestion"
|
||||
fromFind: "blip"
|
||||
---
|
||||
|
||||

|
||||
|
||||
> A menu-bar app that beams files device-to-device the way AirDrop does, except the other end can be a ThinkPad, an Android phone, or a Linux box. Direct, end-to-end, no Blip server in the middle, no size cap.
|
||||
|
||||
AirDrop's whole appeal is the click-once-and-it's-there workflow — and its whole limitation is that it stops at the edge of the Apple ecosystem. The moment the person you're sending to has a Windows laptop or a Pixel, you fall back to Dropbox links, WeTransfer expirations, or the indignity of email attachments. Blip exists in that gap.
|
||||
|
||||
The Mac client is a menu-bar item. Click the Blip glyph and the dropdown shows every device you've paired — your own iPhone, a friend's Pixel, a colleague's Windows machine — alongside any contact you've shared with by email. Drop a file onto a row and it streams directly between the two devices. Same Wi-Fi gets a fast LAN path; across the internet, traffic is end-to-end encrypted and never touches Blip's servers. There is no size limit, which is the line that matters once you're moving raw video or a folder of design source files.
|
||||
|
||||
The cross-platform reach is the whole point: native clients on macOS, Windows, Linux, iOS, and Android all talk to each other with the same UI metaphor. Authentication is by email — you add a contact once and Blip routes future transfers to whichever of their devices is online. Free for personal use; commercial pricing for business.
|
||||
|
||||
Honest limits: the email-as-identity model means the recipient sees your address, which a few users have raised privacy concerns about; large transfers across NAT-restricted networks fall back to a relay rather than a true direct path, with the throughput hit that implies; and there's no shared-folder or asynchronous "send to inbox" mode — both ends need to be online during the transfer (with auto-resume if a side drops). For the AirDrop-with-Windows job it was built for, none of that gets in the way.
|
||||
|
After Width: | Height: | Size: 1.5 MiB |
@@ -0,0 +1,24 @@
|
||||
---
|
||||
name: "MonitorControl"
|
||||
subtitle: "Native brightness and volume keys for any external display"
|
||||
date: 2026-05-05
|
||||
category: interface
|
||||
tags: [macos, display, ddc, external-monitor, open-source, brew]
|
||||
link: "https://github.com/MonitorControl/MonitorControl"
|
||||
linkText: "View on GitHub"
|
||||
description: "Open-source Mac utility that uses DDC/CI to make Apple's brightness and volume keys actually work on third-party monitors."
|
||||
source: "Reader suggestion"
|
||||
fromFind: "monitorcontrol"
|
||||
---
|
||||
|
||||

|
||||
|
||||
> An open-source Mac utility that uses DDC/CI to remap the F1/F2 keys to actually move a third-party monitor's hardware backlight, with the native macOS OSD overlay.
|
||||
|
||||
Plug a Dell, LG, or BenQ into a Mac and the F1/F2 keys do nothing. Apple reserves real brightness control for its own displays — every external panel is left at whatever level it shipped with, until you find the small joystick on the back and start poking at the manufacturer's on-screen menu. MonitorControl fixes that by sitting in the menu bar, talking DDC/CI to the monitor over the existing video cable, and remapping Apple's standard keys to actually move the panel's hardware backlight.
|
||||
|
||||
It also slaves the external display to the laptop's ambient-light sensor, so when the built-in panel dims at sunset, the LG next to it follows along. Volume keys can drive the monitor's built-in speakers via the same DDC channel where supported. Per-monitor preferences live in a menu bar item with sliders that mirror what Apple ships natively — the OSD overlay that pops up when you press the keys is the same translucent slider, not a custom UI. Out of the box it covers the entire "I just want my keys to work" gap; advanced controls (gamma, color preset switching, software dimming as a fallback for monitors without DDC) are tucked into preferences for the people who need them.
|
||||
|
||||
Honest limitations: DDC/CI is a 1980s monitor protocol that some manufacturers implement worse than others, so a few panels will respond slowly or not at all to brightness changes. USB-C hubs can interrupt the DDC channel; the project's GitHub issues track which docks pass it through cleanly. And on some Macs, sleeping the laptop briefly wakes the monitor at 100% before MonitorControl reasserts the saved level. None of these are deal-breakers — they're the shape of what working with DDC actually looks like.
|
||||
|
||||
Free, GPL-licensed, brew-installable as `brew install --cask monitorcontrol`. The kind of utility that should ship in the OS and doesn't — written by people who decided to fix that themselves a long time ago.
|
||||
@@ -3,11 +3,13 @@ import type { ImageMetadata } from 'astro';
|
||||
import alcove from '../content/reviews/alcove/hero.png';
|
||||
import altTab from '../content/reviews/alt-tab/hero.jpg';
|
||||
import apex from '../content/reviews/apex-markdown-processor/hero.png';
|
||||
import blip from '../content/reviews/blip/hero.jpg';
|
||||
import esproP7 from '../content/reviews/espro-p7-french-press/hero.jpg';
|
||||
import folderPeek from '../content/reviews/folder-peek/screenshot.png';
|
||||
import hyperkey from '../content/reviews/hyperkey/hero.png';
|
||||
import ice from '../content/reviews/ice/ice-bar.png';
|
||||
import macMouseFix from '../content/reviews/mac-mouse-fix/studio-display.png';
|
||||
import monitorcontrol from '../content/reviews/monitorcontrol/hero.png';
|
||||
import superkey from '../content/reviews/superkey/hero.jpg';
|
||||
import timelined from '../content/reviews/timelined/hero.png';
|
||||
import tot from '../content/reviews/tot/seven-dots.png';
|
||||
@@ -29,11 +31,13 @@ export const heroes: Record<string, Hero | undefined> = {
|
||||
alcove: { kind: 'image', src: alcove },
|
||||
'alt-tab': { kind: 'image', src: altTab },
|
||||
'apex-markdown-processor': { kind: 'image', src: apex },
|
||||
blip: { kind: 'image', src: blip },
|
||||
'espro-p7-french-press': { kind: 'image', src: esproP7 },
|
||||
'folder-peek': { kind: 'image', src: folderPeek },
|
||||
hyperkey: { kind: 'image', src: hyperkey },
|
||||
ice: { kind: 'image', src: ice },
|
||||
'mac-mouse-fix': { kind: 'image', src: macMouseFix },
|
||||
monitorcontrol: { kind: 'image', src: monitorcontrol },
|
||||
superkey: { kind: 'image', src: superkey },
|
||||
timelined: { kind: 'image', src: timelined },
|
||||
tot: { kind: 'image', src: tot },
|
||||
|
||||
@@ -138,8 +138,9 @@ const breadcrumbs = buildBreadcrumbs([
|
||||
<div class="edit-toolbar">
|
||||
<EditAction
|
||||
label="Make today's pick"
|
||||
command={`/set-pick ${review.id}`}
|
||||
confirm={`This will set ${review.data.name} as the homepage hero (updates HERO_SLUG in src/pages/index.astro).`}
|
||||
action="set-pick"
|
||||
slug={review.id}
|
||||
confirm={`This will set ${review.data.name} as the homepage hero (rewrites HERO_SLUG in src/pages/index.astro).`}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||