Home / Blog Menu ↓

Blog: #cast

Prints 1.1

Welcome to Prints volume 1, issue 1.

Table of contents: Introduction • Reading • Projects • Work • Personal • Links • Miscellanea


In my recent (failed) attempts to get back into blogging, I’ve been aiming for a frequent stream of small blog posts. It hasn’t worked.

Enter an experiment from stage left, one that will veer in the other direction: longer, less frequent posts. More specifically, I’m taking the weeknotes idea and fleshing it out even more, effectively turning this blog into a cozy little magazine. (How is this different from weeknotes? For me, in this model all posts are part of the zine, rather than having other posts alongside the weeknotes. Does this matter to anyone but me? No.)

I anticipate issues going out every couple weeks, but let’s leave that open and flexible. The name, Prints, is an allusion to both printing/publishing and footprints/tracks. It all feels a bit pretentious, to be honest, but I’m doing it anyway.


I recently got a Kobo Libra 2, to explore the ereader ecosystem outside of Kindle. It’s…a lot better. Better typography, better page turns, better lighting. I much prefer the Libra to my Paperwhite. (That said, I still do almost all my reading on my phone. Hoping to branch out a bit, though, because I can get larger fonts on the Libra and that’s nicer on my aging eyes.)

The quest to read more old books continues. I’m a third of the way through Bede’s Ecclesiastical History and it’s taken me two months to get this far. I’m not giving up!

Lately I’ve started making time to read from dictionaries, and I love it. So delightful. So many good words. (I’ve also started making time to study maps.)

Recent reads

Nonfiction: I ate up Robert A. Caro’s Working and can’t wait to read both The Power Broker and his LBJ series. David Grann’s Killers of the Flower Moon was sad and riveting. It was fascinating reading about Aldrich Ames and Robert Hanssen from the KGB side in Victor Cherkashin’s Spy Handler.

Fiction: K. J. Parker’s Siege series really clicks with me and How to Rule an Empire and Get Away With It was a delight. Also enjoying the Murderbot books. Sam Hughes’ There Is No Antimemetics Division was mind-bending but ultimately not particularly enjoyable for me. I did like Naomi Novik’s The Last Graduate, though, along with Orson Scott Card’s Duplex.

This year’s reading stats

92 books finished. 55% of those were nonfiction (51 books) and 45% were fiction (41 books). 19 books abandoned mercilessly.

37,634 pages read (103 pages per day on average). By page (which includes abandoned books), 44% of my reading was nonfiction, 34% was fantasy, 19% was science fiction, and 3% was other.

Of the fiction, 14 books were standalone, 9 were the first book in a series, and 18 were subsequent books in a series.


My interest in different types of projects tends to rotate on a near-daily basis. I used to trim my list of current projects each time that happened (convinced that this is the time that I really do focus just on writing forevermore), but lately I’ve realized that it’s better to just leave everything in place for when my interests change once again.

Also, I feel like I haven’t really been great at finishing projects lately. Not sure why. (Could be my back issues, or the pandemic, or switching jobs. Or maybe I’m just losing my touch.)

Current projects

Salviana (working title): A story I’ve been working on for a couple months. Thirty pages written (discovery written, I should say) and the first draft is very close to done. Figuring out revisions and hoping that helps with figuring out the ending.

Retzi (working title): A story I’m outlining, in the hope that I can make myself into an outliner and become at least a little more prolific with my fiction. I got an initial high-level outline finished and then decided I want to take the story in a different direction.

Bane: A programming language I’m designing, mostly just to play around in that space and see if it’s something I want to spend more time on. I don’t know yet if I’ll actually build a compiler/interpreter for it. Some silly and unorganized sample code (all subject to change):

export printName
import lookup from utils

fn add x:i16 y:i16 -> i16 = x + y

fn printName name:str {
  print "{name}"

// conditionals
x > 5 {
  printName "Bob"
  y = add 42 x
  z = fn count:i32 -> str { count.str }
} else {
  print "Too small."

person = lookup "Jane Doe"
match person {
  firstName.length > 10 {
    print "{firstName} is too long!"
  firstName./^Ro/ {
    // regex match
    print "Probably Robert or Roger"
  firstName./^Sa(?<rest>.+?)/ {
    // regex match with named capturing group
    print "Hello, Sa{rest}"
  phone[:3] == "801" {
    // slice
    print "Utah"

// basic loops
loop 0..10 step 2 {
  print "Counting by twos"

loop until x == 0 {
  x -= 1

loop while x < 10 {
  x += 1

// loop through a list
loop names as index, value {
  print "Name {index}: {value}"

// loop through regex capture groups
loop nameString./Name: (?<name>.+?)/ {
  print "Found name: {name}"

// error handling
  // .. some code ..
}.trap error {
  log error

I’m sure there are inconsistencies there and things that aren’t well thought out yet. It’s a rough draft.

Marks: A VM for generative art that I’ve been planning, though I’m beginning to think it may turn from a VM into a DSL. Either way, the idea is to establish some primitives that make it easier to make some kinds of generative art. Is this better than just making a good library for an existing language, though? That’s the question.

Bend: An exploration of what a UI for editing curves entirely via the keyboard might look like. (Vim for Illustrator, I guess?) I’ve got a basic prototype built that can do straight lines; now I’m figuring out how the editing language should work for curves, selection, all that. (With this project, the design appears to be the hardest part.)

Cast: The engine for this site. I got most of the way done building Cast as a static site generator but then stalled out, and in the past couple days I’ve realized that it’s almost certainly because I don’t really want to use it. So I’m pivoting it to something I hope will fit me better (probably integrating it with Slash, my blog engine).

Religious art: After taking a break for several months, I did another abstract religious piece. I’m not sure if I’m back in the saddle there or if it was a one-off, though. (Up until this last piece, I’d tried several times to come up with new ideas but the well was dry.)

Generative art: Back in October I played around with forming lines out of small circles, for a marker-like effect:


Recently I took that code and used it to make some random-walk art (textured afterwards in Affinity Photo, which I realize could be considered cheating but it is what it is):


I’m hoping to play around with Blender’s new geometry nodes soon.

Charts: I’m thinking about making a Braille alphabet chart and maybe more Latin charts. I’m particularly intrigued by the idea of doing them in HTML and CSS or in SVG (and thus being far easier for other people to modify, since PlotDevice is Mac-only).


I’ve started going through Josh Comeau’s CSS course, and so far it’s good. Still planning to dive deep into the actual CSS specs, though. (When I get time. Ha. There is so, so, so much to study and learn, and so little time to do it in. But baby steps make a real if small difference.)

In our engineering team book club we’ve been reading Martin Fowler’s Refactoring and I’m liking it a lot more than I expected to. Haven’t yet adopted the overt refactoring steps, but I plan to try it out.


Since the last weeknotes I posted back in March: my wife and I have gotten fully vaccinated and boosted, and our three oldest kids have also had their second shots. We’d hoped our youngest would be able to get vaccinated soon but it’s looking like it’ll take at least several more months. Because of that we’re still not hanging out with people or going back to church or into restaurants or movie theaters, but we’ve started doing in-person grocery shopping again.

As far as my back goes, it hasn’t gotten better, even with physical therapy. So that’s fun.

Liz Stinson’s oral history of Processing. Enjoyed this even though I’ve barely used Processing itself.

Mary Soon Lee on The Sign of the Dragon, her novel made from 300+ poems. Intriguing — particularly the way the poems are all self-contained and yet combine together into a larger story. Maybe it technically isn’t a novel, but either way, it has hooked my interest.

Alvar Carto lets you make phone wallpaper from maps. My lockscreen is currently a view on York, England.

Justin Etheredge on twenty things he’s learned in twenty years as a software engineer. Some good points.

Matt Mikalatos on the problem of Susan in the Chronicles of Narnia. Loved this.

Natalie Wolchover on why the Webb telescope matters so much. I actually hadn’t heard about it at all until a few days ago, which is mildly embarrassing.

Parimal Satyal on rediscovering the small web. Nostalgia!

Oliver Burkeman on treating your to-read list like a river, not a bucket. A decent strategy for those of us where we’re adding to the list faster than we’re finishing books.

Ahmad Shadeed on defensive CSS techniques. Some good suggestions.

Dave Rupert’s RSS club. Posts that only show up in RSS readers. Intriguing.

Alex Chinneck’s art installations. Love these so much.

East Asian age reckoning is something which I a) didn’t know about till recently and b) found startling, in a good way.

Bruno Simon’s homepage. I love the 3D take on a homepage along with the aesthetic.

Lynne Olver’s food history timeline is fascinating.

Paul Salopek’s 24,000-mile walk from Africa to South America is also fascinating.

Vertiwalk, an invention for moving between floors without needing to use stairs.

Bartosz Ciechanowski does it again with an interactive tutorial on curves and surfaces.

Aram Drevekenin on the anatomy of a terminal emulator. Love the aesthetic here, too.


iOS 15 has been more miss than hit for me. Particularly the Reminders app (it takes five to ten seconds for items to update once I’ve checked them off, and they frequently come back even after that) and PWAs (when I tap on a textarea, the keyboard comes up except all the keys are missing, so I have to force-kill and restart the app, and if I switch to another app and then switch back, the keyboard disappears again; it’s bothersome especially because I use a handful of personal PWAs extensively).

We enjoyed watching the Hawkeye miniseries.

I switched the font on my site to self-hosted (used to be Google Fonts), which brings the third-party tracking down to nothing, finally. Also moved to an IM Fell font for more of an old-book vibe.

Reply via email

A couple quick updates:

Today was my last day at Cedar (formerly OODA Health before the acquisition), and on Monday I start a new job at Hologram.

I’m finally getting around to writing Cast, the new backend engine for this site. The plan is to go full static and deploy via Render. Also planning to move my personal apps over. While I’m still probably a couple months away from having everything migrated, I’m so, so looking forward to not maintaining a personal server anymore. (It’s fun, sure, and I’ve learned a lot, but it’s stressful — yesterday’s Let’s Encrypt root certificate expiration bit me thanks to an old OpenSSL version, for example — and it’s no longer something I want to spend time on for personal projects.)

Reply via email

Brief and no doubt boring update on internal tooling:

As of a few days ago, I’m planning to take Vinci (logs), Arc (notes), Storybook (fiction writing), and possibly Slash (blog) and smush them all together into a new, streamlined Django app called Writ. (Fundamentally, they’re all tools for writing, and there’s enough overlap among them that keeping them split out isn’t worth it to me.) Still in the initial design/planning stage. Looking forward to simplifying things a bit.

I’m no longer intent on using plain text as the data store for my apps. The main reasons I wanted to do this in the first place: a) archival durability and b) rampant minimalism. For the first, I’ll instead have all my apps export everything to plain text whenever there’s a change. It won’t be canonical, but it will be a redundant copy of the data so it’s even more archivally durable. As for the minimalism, well, sometimes one can go too far.

Lastly, I’m looking into hosting my site statically via Linode Object Storage (ala S3). Still exploring ramifications — redirects, etc. Main goal with this is to make my site more resilient, and even if the object storage part doesn’t work out, I’ll still move the site over to a new static engine (which I’m naming Cast, and I plan to write it in Go).

Reply via email