Hi, I'm Eric.
I’m an avid world traveler, photographer, software developer, and digital storyteller.
I help implement the Content Authenticity Initiative at Adobe.
Hi, I'm Eric.
I’m an avid world traveler, photographer, software developer, and digital storyteller.
I help implement the Content Authenticity Initiative at Adobe.
via Assaf 🌴 (@assaf@mas.to): Attached: 1 image
Badgey turns your iPhone into a conference name badge that stays upright whether you’re wearing it on a lanyard (upside down) or carrying it in your pocket. You can keep multiple badges for different occasions and flip one over to share a QR code. A delightfully specific little app.
via Kent Lew (@kentlew@typo.social): Well, friends, now I’ve gone and done it. I’ve launched my own foundry and website.
Kent Lew has been designing typefaces since 2001 — including the lovely Whitman family — and has now launched his own foundry to sell them directly. His tagline, “crafting extraordinarily ordinary typefaces,” is a perfect description of type that’s meant to be read rather than noticed, and his journal entries on slow fonts and becoming a foundry are worth a read.
via Clearleft (@Clearleft@mastodon.social): Attached: 1 video
Clearleft’s “This hue shall pass” builds a matrix of every colour combination in your brand palette and flags which pass WCAG AA or AAA contrast. What sets it apart from other contrast checkers is the wand button: it nudges a near-miss combination’s Oklch lightness just enough to pass, preserving the hue (and thus the brand personality) while you watch the whole grid update.
via Assaf 🌴 (@assaf@mas.to): Attached: 1 image
A tiny office suite — word processor, outliner, spreadsheet, drawing tool, calendar and more — where the document is the URL. No accounts, no servers storing your work: everything lives in the link itself, and there’s even an llms.txt explaining how agents can author documents as links.
Rust’s error story forces an awkward choice: precise enums that demand boilerplate, or opaque anyhow-style errors that hide what can actually fail. Dillon McMahon argues error types should compose as easily as the functions that return them, and shows how the eros crate expresses a function’s failure modes as an ad-hoc “error set” without declaring a new type.
via leyrer (@leyrer@23.social): Attached: 1 image
A beautifully-presented data visualization that puts hard numbers behind the famous xkcd “Dependency” comic: the team pulled a year of commit history from 23 projects that Android, iOS, browsers, and servers all rely on, and found that 11 of them are kept running by just one or two people. The profile of Paul Eggert, who maintains the time zone database in his spare time for four billion phones, is worth the visit on its own.
via kottke.org (@kottke@mastodon.social): You can destroy kottke.org if you want. Or any other site! https://destroy.spritefusion.com?url=kottke.org
Type in any URL and this browser game loads the page as a destructible 2D platformer level, letting you run, fly, and shoot your way through the actual DOM until the site is rubble. It’s a delightfully silly use of web tech — and there’s a multiplayer mode and an embed snippet if you want visitors demolishing your own site.
via Matthias Endler (@mre@mastodon.social): Forgot to share this here: https://corrode.dev/blog/named-arguments-at-home/
Responding to Steve Klabnik’s post on named and optional arguments, Matthias Endler argues Rust already has most of what you’d want — without new language features. Argument structs, builders, and newtypes get you 80% of the ergonomics while keeping the names attached to types rather than to every function’s calling convention.
via Bob 🇨🇦🇲🇽🇺🇦 (@bielsubob@infosec.exchange): Canada built 44 bridges and tunnels across a single stretch of highway so that animals could cross without dying, and collisions with wildlife there have fallen by more than 80%, with grizzly mothers now teaching their cubs to use the crossings like a route the family has always known
Banff National Park’s 44 wildlife crossings — six vegetated overpasses and 38 underpasses, paired with fencing along the Trans-Canada Highway — have cut wildlife-vehicle collisions by more than 80% (96% for elk and deer). What I find most interesting is the multi-decade feedback loop: 250,000+ camera-logged crossings show animals learning the routes and passing that knowledge to their offspring, so the infrastructure gets more effective over time.
Anshu Chimala, who led engineering and design teams at Apple for 12 years, argues that AI models aren’t bad at design — we’re just prompting them into design-by-committee. Because LLMs predict the most likely next token, they default to the blandest possible choices; this piece lays out an end-to-end process for pushing past that toward genuinely distinctive work.
via JA Westenberg (@Daojoan@mastodon.social): Stop trying to build for “the algorithm.”
JA Westenberg lays out five rules for making work that actually lands with people instead of blending into the noise. It’s a short, opinionated read about caring enough to be specific, taking a real position, and accepting that work worth remembering won’t please everyone.
via naz (@nazhamid@mastodon.social): 2.5 years in the making, and Aphera 1.0 is now live and available to download and trial (no cc required), or purchase (50% off for the next two weeks).
Aphera is a native Apple Silicon RAW photo editor for Mac, built around a from-scratch imaging pipeline, film-inspired color science, and a keyboard-driven workflow that stays responsive even on 100MP files. It’s positioned less as a Lightroom clone and more as a fast, project-based tool for photographers who want a signature look applied with one keystroke. Free 14-day trial, requires macOS 15+.
Weather Spark presents historical climate averages for any location on Earth — temperature, precipitation, cloud cover, and daylight — as beautiful year-round charts. Not a forecast tool, but exactly what you want when picking dates for a trip or wondering what a place is actually like in March.
via Hacker News 100 (@hn100@social.lansky.name): How’s Linear so fast? A technical breakdown
Dennis Brotzky reverse-engineers the architectural decisions that make Linear feel instantaneous: a real database (IndexedDB) in the browser, local-first mutations that render synchronously, and a sync engine that pushes deltas over WebSockets in the background. It’s a good tour of the local-first playbook — the core insight being that the fastest network request is the one you never make.
An interactive explainer on the physics behind GPS, covering how satellite signals, timing, and relativity all come together to pinpoint your location. A beautifully crafted piece that makes complex physics accessible and engaging.
via Niléane (@nileane@nileane.fr): Attached: 1 image
Unread, long a favorite RSS client on iOS and iPadOS, has finally landed on the Mac with version 4.0 — a fully native AppKit/SwiftUI app that’s fast, customizable, and supports Feedbin and other sync services. Nice to see continued investment in native Mac RSS readers as the open web and fediverse feeds keep growing.
via Thomas (@wheezle@hachyderm.io): Been writing code in the sans-IO style for a while now and really enjoying it so I wrote up a blog post about it! #rustlang
Firezone’s Thomas Eizinger explains the sans-IO pattern: implementing network protocols as pure state machines that never touch a socket or call Instant::now themselves, leaving all IO and timing to the caller. The payoff is fast, exhaustive, deterministic tests and a way to sidestep the “function colouring” problem — async ends up confined to a thin outer layer instead of infecting the whole stack.
via yosh (is out of office) (@yosh@toot.yosh.is): New blog post: Ergonomic Self-Referential Types for Rust
Yosh Wuyts sketches what it would take to make self-referential types in Rust genuinely ergonomic: 'self lifetimes, in-place construction, an !Move marker in the type system, and safe phased initialization without the option-dance. It’s an early exploration rather than a finished design, but it’s a useful map of how several proposed features could combine to replace the awkwardness of Pin.
Linear is repositioning itself as “the product development system for teams and agents” — issue tracking, planning, and triage built around workflows shared by humans and AI agents. Worth a look if you’re thinking about how coding agents fit into an existing project management practice (and, as always, the design and performance polish of the product itself is exemplary).
Industrial Logic frames code quality as a set of seven “virtues” — qualities like clarity, simplicity, and testability — rather than a checklist of rules. It’s a useful vocabulary for code review conversations, giving teams shared language for why a change feels better or worse beyond “I don’t like it.”
Eli Bendersky walks through why the “obvious” approach to parent pointers in a Rust tree fights the borrow checker, then works through the practical alternatives: Rc/Weak pairs, RefCell for interior mutability, and arena allocation with index-based links. A good reference for the moment you hit this wall in your own code.
Roman Kashitsyn lays out a set of goals for designing error types in Rust libraries: prefer specific enums over catch-all types, reserve panics for genuine bugs, lift input validation out of fallible calls, and embed rather than wrap underlying errors. The unifying theme is empathy — design the error type you’d want to handle as a caller.
via Kevin Stewart (@kstewart@hachyderm.io): Why is building a UI in Rust so hard? | Warp
The Warp team explains why Rust’s ownership model — great for systems code — fights against the shared, mutable, deeply-linked object graphs that traditional UI frameworks depend on. Their answer was to go functional: an immediate-mode, state-driven UI architecture that plays to Rust’s strengths instead of against them.
via Federico Viticci :ticciseal: (@viticci@macstories.net): Attached: 1 image
Greg Pierce (of Drafts fame) has released Simple Scan, an iPhone and iPad app that does exactly one thing: scan a document to PDF or image and send it where you want. No cloud accounts, no expense report workflows, no ads — just a couple of options and a big Scan Document button, which is precisely right for those of us who scan a receipt once a month.
via Rust Weekly 🦀 (@rust_discussions@mastodon.social): Wrote a blog (and benchmark) different type of builder patterns in rust
A small benchmark repo comparing different ways to implement the builder pattern in Rust — owned self, &mut self, typestate, and friends. Handy data if you’ve ever wondered whether your builder’s ergonomics come at a runtime cost.
Jon Reid revisits the Single Responsibility Principle and argues that the usual “a class should do one thing” shorthand misses the point — the real test is how many different reasons (and stakeholders) could force a change. A useful reframing for anyone who has watched SOLID discussions devolve into arguments about how small a class should be.
via Rust Weekly 🦀 (@rust_discussions@mastodon.social): jj init: What if we actually could replace Git?
Chris Krycho makes a thorough, well-argued case for Jujutsu, the new Git-compatible version control system out of Google. His critique of Git’s incoherent mental model is worth the read on its own, but the real payoff is seeing how jj rethinks the working copy, revisions, and conflicts into something you can actually reason about.
A browser-based editor for building realistic US highway guide signs — panels, shields, control cities, arrows, and all — with the ability to save the result as an image. Ooh, this could be dangerous!
via Stefan Judis (@stefan@front-end.social): A clear visual demonstration of why oklch() should replace hsl() for CSS color palettes: when you rotate the hue angle, oklch() maintains consistent perceived lightness while hsl() can shift dramatically. The interactive examples make the difference immediately obvious.
via Esther Schindler: Experience Flying Toasters, After Dark’s most popular Mac screensaver of the 1990s, reinterpreted using modern CSS.
via Zach Leatherman: A few weeks ago I asked y’all what blog posts were most influential to how you build for the web. I had a lot of fun building a little micro-site for these links and it’s now available:
Design concept for an icon to easily identify AI-generated concept.
via Ethan Marcotte: 🦊 Sometimes a thing happens where you can’t spend any more time on the website you spent fifteen literal years on, and maybe that’s okay.
via Rust Weekly: Unsafe: on Rust still being helpful even with a lot of unsafe
via kottke.org: Sweden Sans is the national typeface of Sweden and is available to download (not sure about the usage rights tho).
Tim Bray asked for and found help bringing his home-grown CSS into the modern/mobile era.
via Kevin Stewart:
via Daring Fireball: Hoefler’s Proof for Testing Fonts
via kottke.org: Some notes on the design of the alphabet. "Love the spacing between vowels!"
Interesting and perhaps controversial idea: Lead with the CTA and social media posts.
via Rust Daily: Safety and Soundness in Rust:
I ran across this article on the hot mess that is YAML recently and enjoyed it for many reasons.
Tantek Çelik: 11 years ago today, Ryan Barrett launched Bridgy to copy #socialmedia replies as comments on original blog posts. This meant those of us building #IndieWeb sites could use a service for that functionality, instead of having to write code ourselves, for each proprietary API.
Subscribe to my free and occasional (never more than weekly) e-mail newsletter with my latest travel and other stories:
Or follow me on one or more of the socials: