Home Menu ↓

Blog

Reading — Prints 2.9

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.

Reply via email

Projects — Prints 2.8

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.

Pattern 005
Pattern 005. Bricks overgrown by vegetation, loosely.
Pattern 006
Pattern 006. A slightly stained glass kind of feel.
Pattern 007
Pattern 007. Going for a less saturated look here.
Pattern 008
Pattern 008. My favorite, even with the imperfections at the bottom.

Reply via email

Links — Prints 2.8

Mary Holstege on the metaphors we code by. Fascinating analysis.

Uri Bram on happiness and unhappiness. A useful take, I think.

Stephen Doyle’s book sculptures. Love these.

Dave Rupert on the madness of frontend web development. Seems like this is only useful where you have enough people to be able to specialize.

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.

Eliot Peper on what writers do. A useful way of thinking about it.

Austin Kleon on breaking out of writer’s block by transcribing yourself thinking out loud. Need to try this sometime.

Ari Lamm on the tower of Babel. Loved this — it makes way more sense to me now. (And seems even more applicable to today.)

Unicode confusables. Use this for good, not evil. Ha.

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.

Riley Goodside on GPT-3 interpreting long instructions. Crazy.

VisiData, a terminal-based spreadsheet tool.

Luke Plant on “Everything is an X” in system design. This was good.

Luke Plant again, this time with his recommendations on writing Django views. I haven’t been doing as much Django lately, but I was pleased to see function-based views recommended. (I much prefer them to class-based views.)

Adam Mastroianni on good conversations having lots of doorknobs. An interesting way to think about it.

Eric Barker on Michaeleen Doucleff’s parenting advice. Both of these suggestions are great.

Jen Simmons on what you can do with the new :has selector in CSS. So glad to see this.

Suketu Mehta on India’s unraveling democracy. Yikes.

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.

Hillel Wayne on path objects in Python. I didn’t know this!

Nick Morgan’s Easy 6502 tutorial. Only partway through this (for fun) but it’s a good tutorial.

Mike Crittenden on stay interviews (the opposite of exit interviews). Interesting.

Nathaniel on websites under 14kb. Little performance hack.

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.

Mary Fetzer on a new material Penn State researchers have developed. Sounds cool.

Scott Galloway on TikTok. Yup.

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.)

Josh Comeau on why React re-renders. Helpful.

Hillel Wayne on why arrays start at 0, though not with a definitive answer.

Carlin Eng on a critique of SQL from 1983. Interesting to see where it was and where it is now.

Christof Damian on the thinking behind his Friday link posts. I’ve been subscribed to his blog ever since we met via Lunchclub a couple years ago, but I hadn’t seen this page till now.


Reply via email

Reading — Prints 2.8

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.

Reply via email

Links — Prints 2.7

Dan Davison’s delta, a Git differ. Started using this a couple weeks ago and it’s great.

Jeremy Keith on defaulting to a search interface.

Marco Heine on just hitting publish (on one’s blog).

Randall Munroe with a long thread of DALL•E Pokemon. The more historical ones are incredible.

Kathryn Hymes on the psychology of naming inanimate objects and how it’s the opposite of thoughtless consumption.

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.

Dreamworks is open sourcing Moonray, their rendering engine. Cool.

GitLab is changing their repo size quotas, for free-tier accounts.

Arne Babenhauserheide’s Wisp, a Lisp using whitespace instead of parentheses.

Patrick Wyatt on building Starcraft. Enjoyed this, along with his first and second posts on building Warcraft.

Adrian Holovaty on websites framebusting out of native apps.

Soundslice’s responsive music player. Nice to see something happening with the responsive sheet music idea.

Lynn Cherny’s Things I Think Are Awesome newsletter. Enjoyed this.

Mathieu Jacomy on drawing maps with Disco Diffusion. Loved these, particularly all the tilt-shift maps along the way.

Douwe Osinga on using DALL•E to create infinite zoom videos. Cool.

Stable Diffusion appears to be quite good at generating faces. This AI art stuff is improving at a startling pace.

BBB3viz with scenes from Piranesi as generated by Midjourney. Haunting.

Anders Brams’ svg-path-morph library. The project video is quite cool.

Piter Pasma’s Skulptuur generative art project. (I’ll mention here, by the way, that it’s annoying how NFTs have taken over generative art. I get why, but it’s still irritating.)

Tissue, a tessellation addon for Blender.

Sverchok, a parametric CAD addon for Blender.

λ-2D, Lingdong Huang’s visual programming language. It’s especially interesting to watch the flow of computation.


Reply via email

Reading — Prints 2.7

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.

Reply via email

Projects — Prints 2.6

We’ll group the projects together today.

Family pedigrees

An old-yet-new chart type: family pedigrees.

https://cdn.bencrowder.net/blog/2022/07/family-pedigrees-3-gen.png

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:

https://cdn.bencrowder.net/blog/2022/07/family-pedigrees-4-gen.png

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.

https://cdn.bencrowder.net/blog/2022/07/timeline-chart.png

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):

https://cdn.bencrowder.net/blog/2022/07/family-sheet-changes.png

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:

https://cdn.bencrowder.net/blog/2022/07/tabular-pedigree-7-gen.png

Comparison to the six-generation chart:

https://cdn.bencrowder.net/blog/2022/06/tabular-pedigree.png

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.


Reply via email

Links — Prints 2.6

An interesting Hacker News thread about how to prepare for blindness as a software engineer.

Ryan Holiday on swarming to learn things. I like this idea but haven’t managed to do it yet. My interest keeps flitting around.

Bryan Braun on Scratch. Cool.

Steven Johnson on walking as a way to think. Agreed.

Jordan Eldredge on bugs caught by the newish no-constant-binary-expression rule in eslint.

Jeremy Keith’s In and Out of Style talk from CSS Day. Liked this a lot.

Josh Dzieza on writing fiction with AI. Interesting to see how some people have used it. For me, writing the words myself is most of the fun.

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.

Wikipedia page on the etymology of London. Quite liked this.

Alex Chan on taking more screenshots. Something I need to do more often.

Google’s new Carbon language. I basically never write C++ anymore so I would never actually use this, but it’s interesting.

Robin Rendle’s essay in praise of shadows. Love the implementation here.

Robin Sloan on Miyazaki and plots animated by kindness.

Shepherd, a new thing for discovering books.

Axle that allows for 80-degree steering. The video was cool.

Daniel Kao on ArchieML. I’ve switched over to ArchieML for my genealogy charts and generally it’s been good.

Vaskange’s near-infinite zoom. It just keeps going!

The Cube Rule of food identification. Loved this.

David Stern on text rendering.

Olushuyi Olutimilehin on article vs. section in HTML.

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.

Topi Tjukanov’s map of notable people. I’m in love with the way the labels fade in from behind the sphere.

My friend Matt Haggard on a cool wordprint visualization technique.

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.

Forrest Allison on Bun.

Giant leafcutter ant nest in Brazil. Whew, that thing is huge.

Cozy fantasy subreddit discussion on what cozy fantasy is. In my experience it’s a refreshing change of pace.

Thomas Bevan on kicking the news consumption habit. Once in a while I check the news but by and large I don’t (ditto social media) and it does feel better.

Scott Jenson on files. Also his followup. I like files.

Reddit thread on writing advice. Some helpful things.

Aaron Gustafson on equality vs. equity in the context of building software. Great points.

Jennifer Chu on MIT’s new ultrasound stickers. Looking forward to see what this enables.

Elisia Guerena on Angélique Schmeinck’s hot-air balloon restaurant. Great idea. I’m terrified of heights enough that I don’t think I’d ever want to eat at a place like this, though.


Reply via email

Reading — Prints 2.6

Recent nonfiction reads

  • 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

Guess whose book I’ve been reading and loving.


Reply via email

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:

https://cdn.bencrowder.net/blog/2022/07/na-0003.png

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:

https://cdn.bencrowder.net/blog/2022/07/se-c-0001.png

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:

/Applications/Google Chrome.app/Contents/MacOS/Google Chrome \
  --headless \
  --disable-gpu \
  --print-to-pdf \
  --print-to-pdf-no-header \
  http://local.test/family-sheets/html/FILENAME.html

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.)


Reply via email