As anticipated in issue 2.4, Kobo announced the Clara 2E, with a Carta 1200 screen. I haven’t been reading as much on my Kobo lately, though, so I don’t know if I’ll get one.
Recent nonfiction reads
In the Land of Invented Languages, by Akira Okrent. Enjoyed this. Conlangs don’t actually interest me all that much — there are so many natural languages to learn instead — but they’re still fun to read about. The bit about thesaurus organization was fascinating. Quite interesting throughout.
The Infiltrator, by Robert Mazur. Whew. This was perhaps a bit more intense than I wanted, though thankfully not really violent at all. So, so glad that I did not a choose a career path that led to going undercover for anything.
Recent fiction reads
Foundryside, by Robert Jackson Bennett. While there were some earthy bits I could have done without, in general I liked this. The magic system reminded me of writing software, which I liked, and things definitely got interesting at the end.
The Castle of Otranto, by Horace Walpole. A bit silly, and sadly not scary at all. (Which apparently is what I wanted from it.)
Northanger Abbey, by Jane Austen. Delightfully funny at first — loved the satire — but then there wasn’t nearly as much humor in the second half. Or if there was, I missed it. I did, however, come across the word rhodomontade for the first time.
New story: Unlocked. About fifteen pages long, fantasy.
Also, some new generative art. For these, the fundamental idea was to lay out horizontal bands, where each band was composed of rectangles of random widths, rotations, and color variations on a base hue for the band. I wrote some JavaScript to generative the patterns as SVGs and rendered them to 4500px-wide PNGs via headless Inkscape. I painted textures on them in Procreate on my iPad, mostly using MattyB’s canvas brushes. I upscaled them 2x via Real-ESRGAN on the command line, added noise in Affinity Photo (12% monochrome), and scaled them down to 7500px wide. Real-ESRGAN was a brand-new addition to my workflow but it turned out quite well, I think.
Tim Bray on slow travel. Yes. Hard to pull off, but yes. Also, I’m not sure I’d use this myself, but the decade part of the URL (/202x/2022/08/16/...) sparked some joy for me.
James Brown’s Lego brick computer. Delightful. This reminded me of my master’s thesis, where I built lots of little widgets out of Raspberry Pi Zeros. One was a screen widget similar to this — though nowhere near as cool.
Ben Eater’s tutorials. I haven’t actually gone through any of these, but they look great.
KiCad, an open source tool for schematic design and PCB layout. Every few months I get the itch to make something physical and electronic — design the PCB, get it printed on demand, 3D print some housing, the works. Haven’t yet figured out what I want to build, though.
Wokwi, a tool to simulate IoT projects in the browser. This is so cool! (See the Arduino calculator, for example.)
Flux. Figma for circuit design and simulation, basically. Very cool.
Physically Based, a database of real-world values for rendering physically based materials. Part of me is adamant that the colors are less useful because real-world materials vary so much, but it’s still a nice project.
Graham Nelson on upcoming changes to Inform (for writing interactive fiction). IF was a huge part of my childhood but I haven’t done much with it since. Hoping to at least play through one whole game sometime.
Stable Diffusion’s public release. Very interesting, especially after I found that apparently this is what’s powering Midjourney. Haven’t actually tried it, though.
Oven, Jarred Sumner’s new company for developing Bun. I tried Bun with my family sheets project but it didn’t work with the yaml library at the time. Need to try it again sometime. (The built-in TypeScript and NPM install speed are very intriguing.)
A good month for reading — pretty sure I’ll hit 5,000 pages by the end, at the rate I’m going. (Not that quantity matters more than quality, to be clear.)
Recent nonfiction reads
Clementine, by Sofia Purnell. A biography of Clementine Churchill, Winston’s wife. This was a somewhat draining book — sad family life perpetuated across three generations (so much bad parenting and dysfunctional marriage and adultery!), not to mention the weight of two world wars — but I’m glad I read it. Before this, for example, I don’t think I’d read much WWII history from the British perspective. Eye-opening. Also, I came across “rumbustious” for the first time ever. What a lovely word.
Here Is Real Magic, by Nate Staniforth. Quite liked this. I didn’t expect half the book to be a bit of an India travelogue, but it turned out to be a nice surprise. (India and Brazil have been in my mind a lot lately as places I’d like to travel to someday.)
Recent fiction reads
The Hands of the Emperor, by Victoria Goddard. I initially heard about this via Alexandra Rowland’s post and figured I’d give it a try. Ended up loving it, enough so that I immediately bought all of Goddard’s other books. It’s cozy fantasy — more calm, less action — and I initially thought it was going to be too relaxed for me, but the stellar character work sucked me in before long. There’s also enough magic to make it interesting to me (I struggle with completely mundane fiction), though the magic is not at all the point of the book. Reading about Cliopher kept reminding me (in some ways) of my time as ward executive secretary and ward clerk over the years. Fond memories. Looking forward to reading the rest of the books (of which there are many, and they’re multiplying quickly!).
A Practical Guide to Conquering the World, by K. J. Parker. Final installment in the Siege trilogy. This one didn’t click as much for me as the others did, sadly. Not entirely sure why, but I suspect I had trouble suspending disbelief with the central conceit. (Which confuses me a little, because it’s basically the same conceit as in the first two books.) The archery nerdery was fun, though.
Lj Miranda on thinking with pen and paper. After reading this I thought about getting back into notebooks, but I don’t know, I think I’m beginning to realize that I’m digital forevermore.
More reading this time round, because yours truly finally picked up Covid nine days ago. (We weren’t sure it was Covid at first, though, because we tested negative early on. For a while it seemed like just an obnoxious cold after all, but then on Friday I started getting waves of metallic-tasting nausea and that was weird enough to get me to test again.) We’re doing fine — my wife and kids have all fully recovered, and I just have some lingering fatigue along with the occasional metallic taste.
I don’t know that I’ve ever mentioned this, by the way, but I try to be pretty non-spoilery in these reviews (if you can even call them that — they’re more microreactions, at least in my mind). Thus the typical dearth of detail about any given book.
Recent nonfiction reads
Attention Factory, by Matthew Brennan. I might not have been the audience for this one. Mild anthropological curiosity led me to it (I don’t use TikTok and what I’ve seen of it is so not me), but it turned out to not be all that interesting. The writing, too, was a bit too lackluster and dull for my taste. Given how little I care for social media and surveillance capitalism, I have no idea why I finished the book.
The Sixth Extinction, by Elizabeth Kolbert. Loved this book. So good. The core message was of course more on the depressing side (what kind of starkly different world will our grandchildren inherit?), but pretty much every chapter was riveting to me. I seriously love reading about the history of science.
The Plantagenets, by Dan Jones. Also really good. I admittedly abandoned it for months because I was having trouble keeping track of all the names, but serializing my nonfiction reading (back down to one book at a time) worked, as did slowing down and subvocalizing. This book is quite readable and I very much enjoyed it. Though the endless wars did get a bit tiresome. (For me, peacetime is much more interesting to read about.) Anyway, looking forward to reading Jones’ book on the Tudors.
On Reading, by Nick Parker. Super short, and maybe not expanded as much from his blog post as I’d prefer, but overall I liked it. The paper museum idea is intriguing. And the typesetting of the interior made me happy.
The Case Against the Sexual Revolution, by Louise Perry. An uncomfortable book that describes some atrocious, awful, heartbreaking things. But an important book nonetheless, I think. I found it interesting to read a secular take on the subject — one that doesn’t fully line up with the law of chastity we have in the Church, but a little more aligned than the sexual revolution itself is (which is admittedly not hard to do). The last chapter is less dismal, but I’d still make sure to read something happy after this.
Recent fiction reads
Ninth House, by Leigh Bardugo. Dark and rough and creepy, with some super uncomfortable parts. But overall, ignoring those bits, I liked the book.
As you can see, it’s a little different from the initial design. This modern incarnation admittedly isn’t as pretty in some ways, but it’s a heck of a lot easier to lay out programmatically.
New things: It shows which child the line comes through, I added the lifespan right after each parent’s name, and I added indicators for the children showing how many kids they had (the dot) and how many marriages (the slash, though if they were married only once and had children, I left the marriage indicator off).
It also supports four generations, admittedly with less space and smaller type:
I tried it without the table borders, by the way. While it was more readable than I expected, it felt a little too loose and unmoored.
The input uses ArchieML and currently looks like this:
[families]
family: 1.1
marriage: 30 Dec 1829 in Polanco
father: José Antonio Fuentevilla Fuentevilla // 1809-1878
mother: Manuela Gándara Cobo // 1811-1879
[.children]
name: ? // 1830-1831
name: Josefa // 1832-1834
name: Francisca Maria // 1835-1843
name: Maria Remedios // 1838-1898
children: 6
name: Maria Luisa // 1841-1916
marriages: 1
name: Manuel // 1845-
name: < Maria Isabel // 1848-1928
children: 9
name: Maria Dolores // 1853-1853
name: José Maria // 1858-1858
[]
# --------------------------------------
family: 2.1
marriage: 29 Feb 1808 in Polanco
father: José Fuentevilla Piñera // 1779-1855
mother: Vicenta Manuela Fuentevilla Ruiz // 1787-1828
[.children]
name: < José Antonio // 1809-1878
children: 9
...etc.
[]
...etc.
Right now the family numbering is table-based (column, row), but eventually I think I probably want to make it hierarchical (somehow) so it’s easier to know which cell to put things in.
Timeline charts
Another new chart of sorts: timelines. I’ve been sorting through my Cuban lines and realized I needed some way to map out everybody so I could see the bigger picture.
The input is an ArchieML file that just lists events with dates and optional places:
title: Cuba timeline
[timeline]
event: Antonio Sánchez Rodríguez Díaz marries Ana Josefa Muñoz y Martínez Machado, possibly in El Calvario
daterange: 1790s-1800s
event: Agustin Sánchez Muñoz marries Ana Josefa Montoro, who then dies before 7 Feb 1835
daterange: 1790s-1830s
event: Rafaela Crispina Sánchez Muñoz born to Antonio Sánchez Rodríguez Díaz and Ana Josefa Muñoz y Martínez Machado
date: 1805 Oct 25
place: Matanzas City
event: Domingo Sánchez Muñoz born to Antonio Sánchez Rodríguez Díaz and Ana Josefa Muñoz y Martínez Machado
date: 1807 May 12
place: Matanzas City
event: Antonia Crispina Vargas Hernández is born to José Vargas and Gertrudis Hernández
daterange: 1800s
place: Güira de Melena, Mayabeque
...etc.
If the date is a range, it’s italicized to show that it’s broader than a specific date.
(I originally was just going to use Google Docs for this, by the way, and made an initial prototype there. Having to do all the formatting manually got old, though, so I scripted it. Now I can just focus on the content.)
Family sheets update
I’ve got almost all the family sheet functionality ported to Node/JavaScript and cleaned up. (The sparklines code now uses tracks and markers in a way that is much more extensible and easier to work with.) In the process, I also revised the resolution (before, it just keyed off the year, but now it uses the month and day if present as well, so spacing is more accurate), added dotted-line support for date ranges (for birth and death), and added a marker for divorce (a skinny X):
Still have a number of bugs to fix, but it’s getting close.
Tabular pedigrees update
I ported the tabular pedigrees to Node/JavaScript and added support for seven-generation charts:
Comparison to the six-generation chart:
The shaded cells, by the way, indicate that I haven’t yet verified those people. Basically a TODO comment for myself.
Can’t wait till Chrome supports border stroke widths smaller than 1pt.
Quick links
Last and sort of least, I’m slowly putting together a page with quick links to the various Torre de’ Passeri civil registration scans on FamilySearch, to save myself some time. Planning to do this for the other localities I do research in as well.
Chromium issue 1130512, a bug that vexes my chartmaking. It’s not the end of the world, but I do look forward to when it’s fixed and I can get 0.25pt lines out of Chrome.
British Summer Time, something I’d never heard of until now. I guess I’d just assumed that Daylight Saving Time was only an American thing and the rest of the world didn’t change times (sort of like imperial vs. metric).
Meta adds Rust to allowed server-side languages. I’m beginning to suspect I might like the idea of Rust more than Rust itself, but I also haven’t really written any Rust in almost two years. Need to change that.
Vim undo trick. I’ve been using Vim for twenty-six years and never knew about this.
Vim ranges. This past week one of my goals has been to train myself to use Vim’s Ex commands for moving ranges (e.g., :15,20m41). This is something I do often enough (and clumsily enough right now, with row-wise visual select — a lot of js in a row — followed by yank and paste) that I want to learn how to do it super fast. This way is less likely to cause RSI as well.
A New Foreign Policy, by Jeffrey D. Sachs. A bit dry at times, but I learned a decent amount and agreed with the majority of what he says. I’m all for global cooperation as opposed to insidious American exceptionalism. Also, I hadn’t realized how much regime change we’ve forced on the world, how many wars we’ve started for no good reason. America is a troubled country in a lot of ways. (This is something I’ve been gradually realizing over the past few years as I’ve begun reading more history.)
The Wizard of Lies, by Diana B. Henriques. I came into this not knowing really anything about Bernie Madoff or even about the 2008 financial crisis (I wasn’t paying any attention to either when they happened). Initially the financial stuff was near incomprehensible and I came quite close to shelving the book, but I stuck with it and it ended up being fine in the end. A sad story, though.
Recent fiction reads
Prosper’s Demon, by K. J. Parker. Novella. Good. Didn’t see the end coming. Someday I’ll try Parker’s Tom Holt novels and see if they’re my style, because his Parker work really does suit me. Looking forward to reading A Practical Guide to Conquering the World to finish off the Siege trilogy.
The Left-Handed Booksellers of London, by Garth Nix. Enjoyed it a lot. I still haven’t read his Old Kingdom series yet, need to add it to my ever-long TBR list.
Books purchased since last post
To Ride Hell’s Chasm — Janny Wurts
Good Omens — Neil Gaiman & Terry Pratchett
Zero Fail: The Rise and Fall of the Secret Service — Carol Leonnig
Holding the Line: Inside Trump’s Pentagon with Secretary Mattis — Guy Snodgrass
Iron Truth — S. A. Tholin
The Metaverse: And How it Will Revolutionize Everything — Matthew Ball
Risen — Benedict Jacka
Travels with George: In Search of Washington and His Legacy — Nathaniel Philbrick
The Last Viking: The True Story of King Harald Hardrada — Don Hollway
Rocket Billionaires: Elon Musk, Jeff Bezos, and the New Space Race — Tim Fernholz
The Return of Fitzroy Angursell — Victoria Goddard
The Redoubtable Pali Avramapul — Victoria Goddard
Petty Treasons — Victoria Goddard
Portrait of a Wide Seas Islander — Victoria Goddard
Terec and the Wild — Victoria Goddard
The Tower at the Edge of the World — Victoria Goddard
Aurelius (to be called) Magnus — Victoria Goddard
Anno Dracula — Kim Newman
1812: The Navy’s War — George C Daughan
If By Sea: The Forging of the American Navy—from the Revolution to the War of 1812 — George C Daughan
The Dawn’s Early Light: The War of 1812 — Walter Lord
Belladonna Nights and Other Stories — Alastair Reynolds
The Wizard’s Butler — Nathan Lowell
The Bride of the Blue Wind — Victoria Goddard
The Warrior of the Third Veil — Victoria Goddard
Stargazy Pie — Victoria Goddard
Bee Sting Cake — Victoria Goddard
Whiskeyjack — Victoria Goddard
Blackcurrant Fool — Victoria Goddard
Love-in-a-Mist — Victoria Goddard
Plum Duff — Victoria Goddard
Putin Country: A Journey into the Real Russia — Anne Garrels
The Aeneid — Vergil, translated by Shadi Bartsch
Babel: Around the World in Twenty Languages — Gaston Dorren
A City So Grand: The Rise of an American Metropolis: Boston 1850–1900 — Stephen Puleo
Dune Omnibus: Books 1–3 — Frank Herbert
Hooked: Food, Free Will, and How the Food Giants Exploit Our Addictions — Michael Moss
Building the New American Economy: Smart, Fair, & Sustainable — Jeffrey D. Sachs
Karachi Vice: Life and Death in a Divided City — Samira Shackle
Attention Factory: The Story of TikTok and China’s ByteDance — Matthew Brennan
14 — Peter Clines
Till Human Voices Wake Us — Victoria Goddard
In the Company of Gentlemen — Victoria Goddard
Stone Speaks to Stone — Victoria Goddard
In the Realms of Gold — Victoria Goddard
The Seven Brides-to-Be of Generalissimo Vlad — Victoria Goddard
I’ve been doing a lot of genealogy lately, and as part of that I’ve been refining the family sheets I mentioned last time:
Ancestor line chart
The main new thing is the ancestor line chart in the upper right, showing where the family is on my line in relation to me, with fathers on the left and mothers on the right. (So this family is my mother’s mother’s mother’s father’s father’s parents.) Each person’s initial is in the circle.
For collateral lines, it looks like this:
If the family sheet were for Agustin’s grandchildren or great-grandchildren, the collateral line would extend further downward (with each collateral line generation lining up with its parallel main line generation).
The syntax for both ancestor line charts:
line: -T -J -A A- E- LF
line: -T J- A- -I -M -J PA > A-
I went through a whole bunch of iterations on the syntax before landing on this, which I really like. It’s concise and reads easily to me, and it also happens to be very, very easy to parse.
Family sparklines
I’ve changed the family sparklines to show whether children are sons (hollow diamonds) or daughters (filled circles), and the marriages are now slightly thicker and longer vertical lines. (So in the second screenshot, you can see that Agustin married three times. And yes, he had a couple children when he was in his sixties!)
Though these don’t show it, I’ve also added support for twins and other multiple births.
Next up, I’m planning to add dotted lines for date ranges (“died between X and Y”) and markers for divorce and for the death of a spouse. Also working toward making this month-level granular instead of just year-level. (Right now, if someone is born in January of one year and their next sibling is born December of the next year, the sparklines make it look like they’re only one year apart even though in reality they’re almost two apart.)
Other changes
The layout has changed a bit, mostly to give more horizontal room for the sparklines, and to set the husband and wife side by side (which saves vertical space and also creates a spatial analogue to the ancestor line chart).
I’m no longer manually (and laboriously) loading these in the browser to export the PDFs. Instead, I call Chrome in headless mode as part of my script:
Last (and also least), I’ve switched the font from EB Garamond to Clifford Pro. Mmm.
The code
Right now the code is a bit of a mess. Now that the prototype has served its purpose, I’m about to rearchitect it all and port it to Node, possibly Bun, possibly with ArchieML. (It’s currently Python with Jinja2 and YAML. For years I’ve used Python for writing almost all my command-line tools, but lately I find that I’d rather write JavaScript. Time for an ecosystem shift.)