Home Menu ↓

Blog

A short followup to what I wrote last year about Press, my abandoned typesetting engine project: I’m now fully convinced that the web platform is where I want to do typesetting. It’s open, programmatic, and capable. Source files are plain text, easy to version control, and fairly future-proof. And even though it’s not WYSIWYG — at least not the way I’m using it — it’s much more comfortable for me as a working environment.

For non-book work (charts, some kinds of documents), I’ve found that browsers already support everything I need (like @page). That’s how I’ve done all my recent genealogy design work, and it’s how I’ll do any language charts I make going forward. And for things like books where browser support isn’t quite there yet, Paged.js works well (and will presumably be phased out once browser support gets better).

Not to mention how nice it is for both print and digital workflows (EPUB, web) to all use the same technologies. I also love that the web is cross-platform. Something I ran into when I was making charts with PlotDevice (which is Mac-only) was that people on Windows couldn’t modify the charts even when I gave them the source. That’s not a problem with the web.

I’ve even started using the web platform for less webby things like making wallpaper for my phone:

Dark cloudy background with the text of Matthew 11:28 at the center.

Here’s the HTML (the 375×812px size is the CSS resolution of my iPhone 12 Mini — RIP — and also keep in mind that this was for a one-off never to see the light of day, so I took the liberty of cutting a few corners):

<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
  <link rel="stylesheet" href="style.css" />
</head>
<body>
  <div class="background">
    <svg id="darknoise" viewBox="0 0 375 812" xmlns="http://www.w3.org/2000/svg">
      <filter id="noiseFilter">
        <feTurbulence baseFrequency="0.5" numOctaves="8" />
      </filter>
      <rect width="100%" height="100%" filter="url(#noiseFilter)" />
    </svg>

    <svg id="lightnoise" viewBox="0 0 375 812" xmlns="http://www.w3.org/2000/svg">
      <filter id="noiseFilter2">
        <feTurbulence seed="485" baseFrequency="0.005" numOctaves="12" />
      </filter>
      <rect width="100%" height="100%" filter="url(#noiseFilter2)" />
    </svg>
  </div>

  <div class="quote">Come unto me, all ye that labour and are heavy laden, and I will give you rest.</div>

  <div class="reference">Matthew 11:28</div>
</body>
</html>

The CSS (with the font purchased from FontShop):

* {
  box-sizing: border-box;
  font-family: Clifford Pro;
}

html {
  height: 100%;
}

body {
  color: #777;
  font-size: 1.6rem;
  margin: 0;
  text-align: center;
}

.background {
  background: radial-gradient(circle at 50% 90%, #222, #111);
  bottom: 0;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
  z-index: -1;
}

.background svg#darknoise {
  bottom: 0;
  filter: saturate(0);
  left: 0;
  mix-blend-mode: multiply;
  opacity: 0.9;
  position: absolute;
  right: 0;
  top: 0;
}

.background svg#lightnoise {
  bottom: 0;
  filter: saturate(0);
  left: 0;
  mix-blend-mode: soft-light;
  opacity: 0.4;
  position: absolute;
  right: 0;
  top: 0;
}

.quote {
  line-height: 1.4;
  margin: 25rem 1.5rem 0;
}

.reference {
  color: hsl(0 40% 32%);
  font-size: 1.3rem;
  font-style: italic;
  margin-top: 1rem;
}

I then used headless Chrome to export the PNG (Firefox would probably have worked as well, though I haven’t yet tested it for this):

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --headless --disable-gpu --screenshot --window-size=375x812 index.html

It’s not the world’s most amazing wallpaper or anything, but I’m still pleased that I was able to make something I’m reasonably happy with using technologies I love. (I could have also used WebGL shaders or Canvas. Lots of options!)

Here’s to the open web.


Reply via email

My ill-timed return to Twitter has ended. I’ve thought about moving to Mastodon (supporting the federated model and all), but honestly I’m content just blogging here, even if it means a smaller audience.


Reply via email

After linking to Felt not too long ago, I actually tried it out and goodness, it’s a delight. Easy to use, beautiful (I like the graphic design so much more than what Google Maps has), and the tools are great.

I made a family history map showing the towns where my Spanish and Cuban ancestors lived and shared it with my siblings:

Map of part of northern Spain
Map of part of Cuba

Though I haven’t done these things in this particular map, being able to call out specific buildings and add text labels and custom polygons are all features that make Felt compelling to me. For example, I’m making another map showing where my dad’s family is from. I know my great-grandmother had a bakery on a certain street, but I don’t know exactly where it was on that street. Rather than choosing some arbitrary point along the street for a misleading pin, I’m able to mark the whole street with a custom polygon.

It feels like Google Docs for maps. Love it.


Reply via email

New artwork: Lamb of God.

Lamb of God

Reply via email

Links #51

David Wolpe on a Mondrian painting that’s been hanging upside down for 75 years. I feel like this is something that could easily happen to my art as well.

R. K. Duncan on SFF’s fatphobia. Something I hope to do better at.

Tyler Boswell’s September set of generative art. Love these.

Tyler Boswell on grouping styles in generative art. Good idea.

Aerographene, which seems too amazing to be real.

Oh My Git, a game for learning Git.

Matthias Ott on not having to like your work.

Simon Collison on building for the web. Hear, hear.

Manuel Matusovic on learning modern CSS. Keeping an eye on this.

Fontshare, free fonts from the Indian Type Foundry.

Kent Dodds on MPAs, SPAs, Remix, and more.

Felt, a web app for making maps.

Keith Peters on building a raytracer. Made me a bit nostalgic for the small raytracer I worked on for classes during my master’s.

Iain Anderson on Adobe and the Pantone licensing change. Sheesh, I really don’t like capitalism sometimes.

Cameron Owens on how surgeon drill bits work — specifically, how they avoid drilling into your brain after they get through the skull bone. Comforting!

Evan Prodromou on ending frequent flyer programs to help fix the climate. Or at least not destroy it as quickly.

Austin Kleon on 30-day challenges. This was good.

Dave Karpf on how Kevin Kelly’s one thousand true fans idea maybe isn’t so great. Agreed, things haven’t turned out the way we might have hoped.


Reply via email

Recent nonfiction reads

  • Karachi Vice, by Samira Shackle, about contemporary Pakistan. Really good, liked it a lot. It’s frustrating that villages there still don’t have good access to water, and that the rich continue to tread upon the poor.
  • How the Word Is Passed, by Clint Smith, about slavery. Really, really good. Strongly recommended. I haven’t read many books about slavery (yet), but this one very much opened my eyes — not only to what happened in the past but also to what’s still happening even now (like in Angola, the prison in Louisiana). Heartbreaking. This was also the book that woke me up to the fact that several of my ancestors from Virginia and North Carolina were slave owners. I’d been aware of that before (one of them is buried at Blandford Cemetery, which one of the book’s chapters is about), but back then it didn’t hold any emotional meaning for me. Now it does. I’m still coming to terms with it — with knowing some of my ancestors were complicit in an enormous crime against humanity. This’ll take some time to process.

Recent fiction reads

  • Babel, by R. F. Kuang. Liked it a lot! More dark academia, please. The way the book addressed British colonization, too, was direct and pervasive and I really liked it. Also enjoyed the magic system and the linguistics.
  • The Paper Menagerie, by Ken Liu. This paired well with Babel. Lots of tragic Asian history interwoven throughout. Some stories were better than others, as is always the case. There was one story that had a father committing suicide that was a little bit harder to read. (That said, fictional depictions of parents dying don’t seem to affect me nearly as much as film depictions.)
  • Nona the Ninth, by Tamsyn Muir. What a bonkers book. I didn’t know what was happening most of the time, but I also didn’t particularly mind because I liked the voice so much. (After finishing the book, I found an explanation on Reddit that made everything make a lot more sense. In hindsight, it would have helped if I’d read summaries of Gideon and Harrow before starting on Nona.) Looking forward to Alecto.

Reply via email

New artwork: Their Work and Glory V. I wanted to do a warmer, more subtle version of TW&G IV with (I believe) better composition. The colors ended up pairing with New and Everlasting III and Peace Be unto Thy Soul.

Their Work and Glory V

Reply via email

Links #50

Finally catching up on these almost a month later.

Diffusion Bee lets you install Stable Diffusion locally on an M1 Mac. Haven’t actually tried it yet, though.

Jacob Kaplan-Moss on software quality being systemic and not as dependent on individual performance. I think I agree.

Tom Warren on Adobe buying Figma. Dang it. It was nice while it lasted.

Walt Hickey on the percentage of Congress over the age of 70 over time. Whew.

The Center for Latter-day Saints has a new online magazine, The Season. I’ve been enjoying it so far.

Jonty Wareing on the Cyrillic multiocular “o” in Unicode 15. Ha.

Baldur Bjarnason on the danger of reasoning from first principles.

Jennifer Ouellette on fire ant rafts and the Cheerios effect.

Terence Eden on modern tech being a bit rubbish. I sort of agree but also think a lot of modern tech is amazing compared to what I grew up with in the 1990s.

Forecast Advisor. See who has the most accurate weather in your location.

Daniel Eckler on Stable Diffusion. Things are moving fast.

David Crawshaw on software he’s thankful for. A good practice.

James Stanley on FreeCAD vs. SolveSpace. I haven’t done anything with either (or CAD in general, really), but now I want to.

Klint Finley on the future of the command line. And a fair amount about Charm.

Warp, a new terminal written in Rust. I’ve been meaning to try this out to see if I like it more than Kitty.

Wikipedia on farang, the Thai word for foreigner. I didn’t realize it referred to the Franks (the tribe).

NASA’s DART mission hits asteroid. Cool!

Matteo Mazzarolo on named element IDs being available as JavaScript globals. I had no idea. Not sure if I’d ever use it, but cool.

Enryu on lookism in TikTok. Interesting.

Neale Van Felet on the design of Audio Hijack 4. Enjoyed this retro.

Infinite Canvas, a catalog of apps with infinite canvases (which make me happy).

Chuan on an interesting new syntax for writing SVG.

Kottke on ten hours of walking in NYC as a woman. From 2014 but either way, whew.

DreamFusion, text to 3D. Things are getting interesting.

Joey Camacho’s Raw & Rendered, daily 3D renders. Beautiful.

summarize.tech does AI-powered summaries of YouTube videos.

Nathan Raw’s Stable Diffusion morph videos.

Stable Diffusion Conceptualizer. A style library, kind of.

Daniel Eckler with a thread on AI art. And a second thread.

Felix Kreuk on textually guided audio generation. Intrigued to see what all of these AI tools mean for things like filmmaking, especially given another ten or twenty years of progress.

Theatre.js, motion design in the browser.

David Hoang’s arrows. Love those shadows!

Hyperlinks in handwriting.

Eliot Peper on writing being a tool for making new ideas.

Herbert Lui on writing as a way of thinking, in a similar vein.

Edward Slingerland on his method for writing nonfiction books.

James Stanley on alternative revolutions (CAD-wise).

CHARL-E Stable Diffusion package for Mac. Haven’t tried this one either.

Ben Myers on semantic selectors in CSS.

Jay Alammar’s illustrated Stable Diffusion, explaining how it works.

Andy Heriaud on how bad the Mexican week episode of The Great British Bake is. Wow.

DALL-E-Bot, diffusion meets robotics. Cool!

Kim Zarins on aphantasia and science fiction and fantasy.

Oliver Burkeman on how to get out of a rut, a different take on GTD next actions.

WebVM, a WebAssembly VM with networking.

Creating holograms with your phone. Old but intriguing. I need to try this.

Amanda Petrusich on Steve Keene, prolific painter.

Surma on transpiling JavaScript to C++ for WebAssembly. Agreed on it maybe not being the best take, but interesting nonetheless.

Massimo with a video of the Taipei 101 skyscraper’s damper during an earthquake. Whoa!

Q&A with Fiona Hill on Putin. Worthwhile.

Matthew Butterick’s legal investigation into GitHub Copilot.

The Give Up GitHub movement. I’ve been planning to move off it, still need to set aside some time for that. (Thinking of just hosting my code locally on my server.)

Manohar Vanga on fifteen ways to draw a line. I especially love the convex hull method. Planning to borrow that!

Manohar Vanga again, this time on generative overlay textures. Thinking about incorporating something like this into my art.

Léonie Watson on why we need CSS Speech. Hoping this happens!

Brad Frost on breaking up with CSS-in-JS.

Alix E. Harrow on writing and bodies. I think about this a lot in my own writing. I default to the Le Guin side but I’m trying to move more to the middle.

Jonn Elledge on London station names. Naming is hard.

Dan Hollick with an explainer on blending modes.

Bayt Al Fann with some beautiful examples of Arabic calligraphy. Love these.

Oliver Darkshire on small bookstores and capitalism. Agree, agree.

Martha Wells on getting unstuck with discovery writing. Good. I keep wishing I were an outliner.

Maggie Appleton on programming portals, her name for GUIs that bring up CLIs.

Pushing the Needle comparing the timelines for the space race vs. building a bike lane in Seattle.

Brad Heitmann on Mike Lee’s unsavory ties to Russia. Oh how I hope Lee gets voted out.


Reply via email

Family source list WIP part 1

In the interest of working more with the garage door up, I’m going to write this as I work on this project, starting at the beginning. (Rather than just posting about it when it’s done.)

The idea is to have some kind of list (chart isn’t the right word) where I can put what I know about a family (genealogy-wise) and how I know it (which sources provide evidence). I want the output format to be PDF so it’s easily printable/archivable.

At this point I have a rough picture in my head of what it might look like:

  • Headings (one for each person, probably some more general groups too), and then under each heading a list of facts (birth date, place, marriage, kids, etc.) with the sources for each.
  • Some sources are used more than once, so having some way to simplify that (a table of sources, maybe) would be good.
  • Also, some way to mark a fact as less sure (more of a supposition). This makes me think that “fact” is probably the wrong word to use here. “Assertion” makes sense but also feels a bit much. “Point,” maybe? This is almost certainly only going to be used internally (I’m not planning to put the word on the list itself), but I try to get the nomenclature right for my own sake. A person has a list of points? “Attribute” feels more correct but also too technical.
  • As far as the supposition aspect goes, I don’t know yet if I want a binary (unproven, proven) or a gradient (0% sure, 50% sure, 100% sure, for example). Probably going to start with a binary to keep things simpler.

While it’s very tempting right now to get the code environment set up and start mocking things up directly in HTML (since that’s what I’m using to go to PDF), I’m going to make myself write some mocks by hand first instead. And then maybe do a quick iteration in Google Docs.

Okay, I ended up going straight to Google Docs, which worked out well since I went through seven or eight iterations and I’m still not there yet. Current status (keeping in mind that this is more about sussing out how to lay out the information and is far from a finished design):

https://cdn.bencrowder.net/blog/2022/10/family-source-list-01.png

Notes:

  • The format right now for each line is “fact/supposition/point — sources — reasoning”.
  • If there’s more than one source, we apply the abcde etc. naming so we can easily and succinctly distinguish between them in the reasoning section.
  • The reasoning section is optional if it’s straightforward based on the source
  • I initially had a table of sources included at the end but it felt like overkill. At the point/line level, it seems better to have the actual source description (“1850 census”) rather than some cryptic reference to the table like “[12]”. Then the user doesn’t have to keep going back and forth to figure out what the sources are.
  • I’m thinking of grouping things better when I do the final design, but I’m not worrying about that any more for now.
  • I haven’t yet gotten to the suppositions/assertions.

Also, I’ve decided to call this a family source list. More to come!


Reply via email

New artwork: When Our Heavenly Parents We Meet III.

When Our Heavenly Parents We Meet III

Reply via email