Ben Crowder


New artwork: If Ye Give Place.

If Ye Give Place

Reply via email or office hours

Links #70

Ian G. McDowell on laying out a book with CSS. Covers a lot of the foundation.

John H. Meyer on AI speaking in Steve Jobs’ voice, saying words written by ChatGPT.

Mike Crittenden on the best stuff and the worst stuff. Not caring about stuff does seem ideal.

Typst, a new markup-based typesetting system that wants to take on LaTeX. I don’t know that it’ll be as useful for the kinds of things I typeset, but still interesting.

Matt Webb’s ChatGPT e-ink clock. Cool.

Felt is now a flagship sustaining member of QGIS. Glad to hear. I’ve been playing around with QGIS more lately and it’s pretty powerful.

Jason Kehe’s fairly mean article on Brandon Sanderson and Brandon’s response.

Clive Thompson on ChatGPT not replacing programmers just yet. Also see Paul Kedrosky and Eric Norlin on AI eating software for a different viewpoint. I don’t know what I think.

textra, a macOS command-line app to extract text from images, PDFs, and audio. Cool.

Neil Clarke of Clarkesworld has opened submissions again. But for how long, who knows.

Paul Butler on the WebAssembly rift between WASI and the web platform.

Rich Harris on SvelteKit moving to JS from TS. Intriguing.

Laurence Tratt on how big a programming language should be. Here’s to small languages.

Robin Rendle on reading being messy. I like this. Feels more human.

Steven Heller with a little typographic trivia about a full stop in the New York Times nameplate.

James Cook makes art with typewriters. Wow.

Stanko’s Rayven, a line-hatched 3D renderer. I really like this aesthetic. Also Michael Fogleman’s ln, another line-based 3D renderer, and Piter Pasma on rayhatching.

Tyler Cowen on AI and Americans living in a sort of bubble outside history for the past few decades. Sans the AI part, this is something I’ve often thought about — how Americans have had it atypically nice for a while (when compared to the rest of the world and the rest of history), and how this most likely won’t last.

luckbeaweirdo on curing their asthma by self-infecting with hookworm. Whew.

Matthew Butterick on AI obliterating the rule of law. Cogent points. AIs being above the law doesn’t seem like a great outcome.

Reply via email or office hours

Links #69

Grandstander (Open Font License) would be fun to typeset a children’s book with.

Tiro Typeworks’ Castoro typeface (designed by John Hudson, Paul Hanslow, and Kaja Słojewska) looks lovely. Excited to use it.

Noah Read on AI tools. Agreed. Maybe there are multiplying effects from outsourcing our thinking, but I don’t know, it seems fraught. Plus, I like thinking. And writing, and coding, and making things.

Jancee Dunn on eight-minute phone calls to friends. I like this and need to do it more often. Texting is fine, but the catch-up calls I’ve had with friends have been even better. (Speaking of which: I love making new friends, so feel free to email me to say hi.)

Simone Silvestroni on de-branding your online life.

Tim Bray on LLMs. His conclusions seemed level-headed to me.

Sinclair Target on learning BASIC like it’s 1983. I didn’t grow up with a Commodore 64, but I did start out as a kid with BASIC — BASICA, GW-BASIC, and QBasic. Ah, nostalgia. I remember typing up BASIC programs from library books and running into dialectal differences (particularly with the graphics commands, if I recall correctly).

Hacker News thread on what your personal website/blog has done for you. As for me, I’ve met lots of interesting people (hi, y’all!) and have had several projects come out of it too. Supremely rewarding, 10/10 would do again.

Becca Inglis on, uh, tiny fairy-like robots that could replace dying bumblebees. Not entirely sure how the laser-guided direction would work with millions of these, but a very interesting idea.

MFEKglif, a new typeface editor by a former FontForge maintainer. Interesting.

Michael Eisenstein on using AI to design de novo proteins.

Jack Clark on GPT-4. The part about GPT-4 being political power was particularly interesting and worth reading.

Dave Karpf on phantom citations thanks to AI. It does seem like this is going to become more and more common, sadly.

John Herrman on the nightmare of AI-powered Gmail. Agreed. Using AI to write emails that the receiver isn’t actually going to read but is instead going to summarize via AI seems…superfluous.

Borna Izadpanah on Persian Naskh type design. Mmm.

Richard Rutter with some progress on typographic paragraph widows on the web. Promising! Also see the CSSWG thread.

Josh Comeau on AI and the end of frontend development. I think he’s probably right, and that the situation isn’t as dire as some think.

Geoffrey Litt with some interesting ideas on how LLMs could lead to more end-user programming. I hope so! That seems like a win for humanity.

Andy Wingo on WebAssembly for garbage-collected languages. Interesting (even if a good chunk of it went over my head).

Adam Chalmers on using Rust on the backend. I need to try Serde and Diesel out.

Reply via email or office hours

Booknotes 2.1

I haven’t done a great job at consistency in titling these reading posts, which isn’t the end of the world but I do want them to be titled henceforth, so we’re going to leave the unnumbered masses behind us and resurrect the Booknotes series, starting season 2. I’ll be using the #recent-reads tag as the throughline for all of these types of posts, though.


  • Chatter, by Ethan Kross. This was a useful read. I’ve been using the distanced self-talk idea since reading the book and it does seem like it works, for what it’s worth. Apparently we talk to ourselves at rates as high as 4,000 wpm. (If I could harness that and redirect its output to my laptop or phone, I could write a novel in…half an hour. Ha. Back in reality, answering what I imagine would be the next question: no, I have no interest in using AI to write fiction. Or in reading fiction written by AI for that matter.) the author says we spend a third to a half of our waking life mentally not in the present, which seemed startling at first but upon reflection made sense. Frequent time travelers, us lot.
  • Red Famine, by Anne Applebaum, about the 1930s Holodomor in Ukraine. The last third is where it gets especially bleak and so, so tragic. Now I understand why doing genealogy in certain parts of Ukraine is basically impossible. The book is horrifying, too — especially the parts about adults cannibalizing their own children. It’s an important book and I’m glad I read it because I didn’t know anything about the famine beforehand, but goodness, make sure you read something happy after this.


  • The Player of Games, by Iain M. Banks. Interesting ideas (the post-scarcity culture, the games, the central conceit), good writing. One gross part. That twist at the very end, though!
  • A Prayer for the Crown-Shy, by Becky Chambers. Cozy and philosophical. Some parts I could have done without (true of almost all contemporary novels I read), but overall I liked it.

Reply via email or office hours

Links #68

Cat Valente on AI replacing jobs. “Because you know, at least here in the good old US of Garbage, they’d rather eat their own eyeballs than even consider something like UBI any time before the actual apocalypse. Even then, it would be $5 in CompanyBux and half an infected hot dog.” Ha. This point felt spot on to me and has stuck with me ever since: “We are not an idle species. We like to feel useful. We like to make things. We like to do things. We aren’t going to stop.”

Chloe Xiang on researchers using AI to generate images based on people’s brain activity. A bit freaky, thinking about how this could be abused.

Herbert Lui on blogging every day for a year. Something I want to get back into the habit of doing.

Carly Ayres interiews Marcin Wichary about Shift Happens.

Marcin Wichary’s typewriter simulation. Fun.

Richard Rutter on text-wrap: balance. Inching closer to getting better typesetting controls on the web. (And how far we’ve already come!)

Prashant Palikhe with some tips on using Chrome DevTools. I somehow hadn’t heard of console.table() until now.

Justus Romijn on removing “should” from unit test descriptions. This seems reasonable to me.

Charles Q. Choi on electronic bandages. Intriguing.

Antonio Scandurra on rendering UIs at 120 fps for Zed, a new text editor from the folks who made Atom and Tree-sitter.

Max Mudie’s fungi photos. Fascinating.

Jim Nielsen on deadlines as technology. I like this a lot and plan to start using it more consciously.

Hannah Devlin on scientists who have created mice with two fathers after making eggs from male cells. Lots of interesting developments in biology (and other branches of research) lately.

B. David Zarley on scientists who have successfully done pre-emptive heart attack therapy on mice.

Ink & Switch’s Upwelling, real-time collaboration + version control for writers. Some interesting ideas here. Agreed on not wanting changes to be visible until I’m done making them.

Prathyush Pramod’s catalog of programming languages for enthusiasts. So cool. Catala especially caught my eye, though Dark and IRCIS (which reminds me of Orca) and Wasp and Battlestar are also interesting.

Prathyush Pramod’s catalog of open typefaces. Stumbled upon this after looking through the programming language catalog and ooh, lots of goodies here.

Charles Q. Choi on super-high-res ultrathin metasurface displays. Looks promising.

Simon Kuestenmacher on the seven countries bordering Türkiye. I had no idea!

Jason Godesky on JavaScript failing more often than you might think. Yep.

Ben Parr on Google Workspace’s new AI tools. And Microsoft Office is doing the same thing. It’s a weird/interesting world we’re quickly moving into. (The rate of change here is exciting and alarming.)

Dan Klammer’s modern font stacks site. Every once in a while I think about moving my site to a system font stack. Maybe someday.

Carl Bugeja on making a PCB motor. Very cool.

Nat Friedman’s Vesuvius challenge, to read some old scrolls from Herculaneum using computer vision and machine learning. Interesting.

Matt Webb on the singularity. “GPT-4 is capable of inventing and purchasing synthesised versions of new molecules, potentially dangerous ones, by conducting lit review, using chemistry tools, and contacting suppliers.”

Ethan Marcotte on AI tools. “These utilities are being created in a country that has minimal regulatory oversight, few privacy safeguards, and even fewer labor protections.” Which isn’t great.

Maggie Appleton on the expanding dark forest and generative AI. “After the forest expands, we will become deeply sceptical of one another’s realness. Every time you find a new favourite blog or Twitter account or Tiktok personality online, you’ll have to ask: Is this really a whole human with a rich and complex life like mine? Is there a being on the other end of this web interface I can form a relationship with?” Very relevant. I promise I’m human.

Elizabeth Weil’s profile of Emily Bender about AI chatbots. Worth reading.

Daniel Rosenwasser on the TypeScript 5.0 release.

DreamWorks has open sourced MoonRay.

James Bridle on the stupidity of AI. “The belief in this kind of AI as actually knowledgeable or meaningful is actively dangerous.” Also worth reading.

Reply via email or office hours

Learning WebAssembly, part 2

Continuing on with the AssemblyScript concepts chapter.


No any or undefined — interesting. And good, I think. But no union types yet? A little sad.

Okay, so module imports and exports are the main way (possibly the only way) the host communicates with the Wasm script. I knew about exports but didn’t know about declare and module imports. Nice.

The tree-shaking approach to compiling is interesting — dead code doesn’t get type checked, for example.


Not as much type inference as TypeScript. Good to know.

Oh, interesting: WebAssembly has distinct operations for signed and unsigned comparisons. (gt_s vs. gt_u, for example.) Also, == === ===. (Couldn’t resist. But yes, given that the basic types aren’t nullable etc., makes sense that == is also doing strict equality.)

Standard library

I think the reason I like reading through standard library docs is the same reason I like reading through dictionaries — both open up a world of possibilities. And each time I go exploring, I find something new. Need to do more of both.

I like that the low-level WebAssembly instructions are available to AssemblyScript.

Nice, there’s manual memory management when you need it.

StaticArrays for C-like arrays with better performance, got it.

The string considerations section was interesting.

Implementation status

Some drama with WASI and the component model. I don’t know enough about the situation to comment, but I hope things get sorted out in a way that’s good for standards and the web platform.

Ah, there aren’t closures, Promises, exceptions, or rest parameters in AssemblyScript. That’s very good to know.

Using the runtime

A few different runtime options, including support for a custom runtime. Interesting.

Reading about the memory layout was fun. Reminds me of writing C twenty-some years ago. I need to come up with a low-level project to work on sometime.

And that’s a wrap on the documentation. I’ve decided that my learning project for AssemblyScript will be a small convex hull implementation. Notes on that coming soon!

Reply via email or office hours

Book of Mormon parallel edition

Pleased to announce a new project: parallel language editions of the Book of Mormon, available as free PDF downloads. Here’s what they look like:

Thai–English side-by-side edition
Portuguese–Spanish side-by-side edition

We’re starting out with the following editions, but I have more in the works. (Requests welcome!)

  • Dutch–English
  • French–English
  • German–Dutch
  • German–English
  • Italian–English
  • Lao–English
  • Lao–Thai
  • Portuguese–English
  • Portuguese–Spanish
  • Spanish–English
  • Spanish–Italian
  • Thai–English

Implementation/design notes

  • Chrome has a weird Skia bug where text in exported PDFs isn’t searchable/copyable, which was a dealbreaker since these editions are meant to be digital-only.
  • Firefox does handle searching and copying just fine, but (sadly) it isn’t able to break the two-columned text correctly across page breaks. This means every part of a verse has to be on the same page (as opposed to half at the bottom of one and half at the top of the next), with the result that some pages have more whitespace at the bottom than is economical.
  • Firefox also doesn’t respect break-after: avoid, so I had to add page breaks before each chapter heading (which adds even more extra whitespace) (which can be a valid design decision, to be clear, but my original intent was to stream the chapters with no breaks so that the page count wouldn’t balloon). There’s a potential workaround that I’m looking into in the meantime.
  • There are no page numbers, because Firefox and Chrome don’t yet support the CSS paged media rules for that, and Paged.js choked and died on these files.
  • Browsers still aren’t great at paragraph layout, so there are going to be occasional widows and orphans.
  • I originally started on these several years ago using LaTeX, but I ran into issues getting the page layout to work the way I wanted it to. Layout-wise, things were so, so much easier with HTML and CSS.
  • If/when some of these browser issues get fixed (or I find workarounds), I’ll post updated files.

Reply via email or office hours

Two new pieces:

The Keys of This Dispensation:

The Keys of This Dispensation

The Mount of Transfiguration:

The Mount of Transfiguration

Reply via email or office hours

A fun little bit of etymological exploration (and note that all of this assumes that Wiktionary is accurate):

battle comes from the Latin battuo, battuere, to beat (whence combat, to beat with). But battle is also a word in Scottish dialect that in its adjectival form means improving, nutritious, or fruitful, and the verb can mean to feed or nourish. (So the next time someone says, “I’ll battle you,” hopefully this is what they mean.) This second sense is related to batten, which means to improve or to thrive and (as you might guess) is related to better. And of course batten also means the long strips of wood or metal used to batten down the hatches.

Speaking of which, I didn’t realize that this kind of hatch comes from the word for hedge and also has to do with gates in said hedges. The other kind of hatching, where a bird pecks its way out of an egg (for example), is related to the verb hack through a Proto-Indo-European root that has to do with sharpness. And, of course, this kind of hacking is an unfortunate feature in battles.

Reply via email or office hours

My friend Lindsay sent me a link to this podcast episode where Blair Hodges interviews John Swinton about time and disability and theology. It’s a great interview, highly recommended.

I loved this reframing:

What’s the problem with having Down Syndrome? The answer is nothing. Unless you live in a society that values intellect, and reason, and speed, and quick thinking over relationships, community, friendship, and love.

And this (which I’ve compressed a bit from the original):

If you’ve ever spent any time with somebody with a profound intellectual disability, or somebody with advanced dementia, then you know that you can’t go quickly, you need to slow down, and you need to take time for those things that the time of the world just can’t even see. In a world that passes people by, somebody needs to slow down and spend time with those who God adores.

And, last but not least, this:

The thing that marks the body of Christ is diversity, not uniformity.

Looking forward to reading John’s book Becoming Friends of Time, which seems like it might pair well with In Praise of Slowness. (And his other books, too.)

Reply via email or office hours