<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>And now it’s all this</title>
	<atom:link href="https://leancrew.com/all-this/feed/" rel="self" type="application/rss+xml" />
	<link>https://leancrew.com/all-this/</link>
	<description>I just said what I said and it was wrong. Or was taken wrong.</description>
	<lastBuildDate>Mon, 11 May 2026 19:17:44 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0</generator>
  <atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/>
  <atom:link rel="hub" href="http://aniat.superfeedr.com"/>

<item>
<title>Unsound</title>
<link>https://leancrew.com/all-this/2026/05/unsound/</link>
<pubDate>Mon, 11 May 2026 19:17:44 +0000</pubDate>
<dc:creator>
  <![CDATA[Dr. Drang]]>
</dc:creator>
<guid>https://leancrew.com/all-this/2026/05/unsound/</guid>
<description>
  <![CDATA[I mentioned <a href="https://leancrew.com/all-this/2026/05/a-key-followup/">last week</a> that some wording in a news article struck me as odd. A similar thing happened when I read <a href="https://apple.news/AzzG6M-HTQQCxqzp-q6H_Mw">this <em>Scientific American</em> piece</a> (that’s an Apple News link—I don’t have a <em>SciAm</em> subscription). In this case, I didn’t even have to read the article; the oddity is right there in the headline: “A SpaceX rocket booster is on track to hit the Moon at several times the speed of sound.”]]>
</description>
<content:encoded>
  <![CDATA[<p>I mentioned <a href="https://leancrew.com/all-this/2026/05/a-key-followup/">last week</a> that some wording in a news article struck me as odd. A similar thing happened when I read <a href="https://apple.news/AzzG6M-HTQQCxqzp-q6H_Mw">this <em>Scientific American</em> piece</a> (that’s an Apple News link—I don’t have a <em>SciAm</em> subscription). In this case, I didn’t even have to read the article; the oddity is right there in the headline: “A SpaceX rocket booster is on track to hit the Moon at several times the speed of sound.”</p>
<p>I know what the writer means, of course. He’s telling us that the SpaceX debris will hit the Moon at several thousand feet per second, 1,000 fps being about the speed of sound we’re used to here on Earth. But the Moon isn’t the Earth, so it’s kind of a weird comparison, don’t you think? It’s not as if the booster is going to create a sonic boom. I’d find this less odd if the story were in a normal newspaper or magazine instead of <em>Scientific American</em>.</p>
<p>Again, I realize that the writer is just giving his readers a point of comparison, but is the speed of sound (on Earth) really something most people have an intuitive feel for? I remember learning as a kid to count off the seconds between a lightning flash and the resulting thunder to get the distance to the lightning strike in thousands of feet, but that doesn’t mean I have a strong sense of the speed of sound. Other than “really fast,” which isn’t all that helpful.</p>
<p>It’s mentioned in the body of the article that the speed of the booster at impact, which will be on August 5, is estimated to be about 5,400 mph. That’s about 100 times the posted speed limit on a two-lane highway, which is something most Americans <em>do</em> have a feel for.</p>
<p>By the way, if you have any interest in the problem of space debris coming back and striking the Earth (where the speed of sound might be relevant), you should follow <a href="https://mastodon.social/@sundogplanets">Sam Lawler on Mastodon</a>. She’s a professor of astronomy at the <a href="https://uregina.ca/~slb861/about.html">University of Regina</a> and also has a keen interest in the clogging of near-Earth orbital space by the huge number of satellites launched in recent years. Her Mastodon feed is also a great source of farm animal photos, most recently a crop of baby goats.</p>]]>
</content:encoded>
</item>

<item>
<title>A Key followup</title>
<link>https://leancrew.com/all-this/2026/05/a-key-followup/</link>
<pubDate>Sat, 09 May 2026 01:26:52 +0000</pubDate>
<dc:creator>
  <![CDATA[Dr. Drang]]>
</dc:creator>
<guid>https://leancrew.com/all-this/2026/05/a-key-followup/</guid>
<description>
  <![CDATA[Earlier this week, I saw <a href="https://apple.news/AeQT3EO0dRge4PzywjuP4sw">this article in Apple News</a>. It’s from the <em>San Francisco Chronicle</em> and discusses a recent report on the safety of the Golden Gate Bridge. The report is one of several reports spurred by the <a href="https://leancrew.com/all-this/2024/04/structural-continuity-and-the-francis-scott-key-bridge/">Francis Scott Key Bridge collapse</a> a couple of years ago.]]>
</description>
<content:encoded>
  <![CDATA[<p>[Equations in this post may not look right (or appear at all) in your RSS reader. Go to <a href="https://leancrew.com/all-this/2026/05/a-key-followup/">the original article</a> to see them rendered properly.]</p>
  <hr />
  <p>Earlier this week, I saw <a href="https://apple.news/AeQT3EO0dRge4PzywjuP4sw">this article in Apple News</a>. It’s from the <em>San Francisco Chronicle</em> and discusses a recent report on the safety of the Golden Gate Bridge. The report is one of several reports spurred by the <a href="https://leancrew.com/all-this/2024/04/structural-continuity-and-the-francis-scott-key-bridge/">Francis Scott Key Bridge collapse</a> a couple of years ago.</p>
<p><img alt="Golden Gate Bridge from Wikipedia" class="ss" src="https://leancrew.com/all-this/images2026/20260508-Golden%20Gate%20Bridge%20from%20Wikipedia.jpg" title="Golden Gate Bridge from Wikipedia" width="100%"/></p>
<p class="caption">Image from <a href="https://en.wikipedia.org/wiki/Golden_Gate_Bridge">Wikipedia</a>.</p>
<p>Spoiler: the report finds the Golden Gate Bridge safe—quite unlikely to suffer damage from the impact of a ship. This has to do with the Golden Gate’s two towers:</p>
<ul>
<li>The south tower (in the foreground) is surrounded by a reinforced concrete protective structure that a ship would have to strike and destroy before coming in contact with the tower and affecting the bridge’s integrity. We discussed <a href="https://leancrew.com/all-this/2024/04/structural-continuity-and-the-francis-scott-key-bridge/">the lack of protective structures</a> around the piers of the Key Bridge.</li>
<li>The north tower is right up against the Marin County shoreline, where the water is shallow. A large vessel would run aground before striking the tower, scrubbing away most, if not all, of its kinetic energy. A ship that wouldn’t run aground before hitting the tower would be too light to bring it down.</li>
</ul>
<p>A striking omission from the <em>Chronicle</em> story is a link to the report itself. But that appears to be the fault of Apple News. I can’t read <a href="https://www.sfchronicle.com/sf/article/golden-gate-bridge-22228358.php">the story on the <em>Chronicle</em>’s website</a> because I’m not a subscriber, but <a href="https://www.yahoo.com/news/articles/major-report-golden-gate-bridges-182559798.html">this reprint on Yahoo! News</a> includes the report embedded as a PDF and available to download. So it looks like Apple removed the report itself, which is pretty poor form.</p>
<p>The nice thing about finding the actual report, written by <a href="https://www.hdrinc.com/">HDR, Inc.</a>, is that it confirmed some suspicions I had regarding this paragraph in the <em>Chronicle</em> story:</p>
<blockquote>
<p>The resilience of the Golden Gate Bridge partly comes from sheer strength. The south tower, on the San Francisco side, is described in the report as a “robust structural feature like no other” and is surrounded by a reinforced concrete protective shell up to 28 feet thick. It can withstand about 50,000 kips of force, or roughly 25,000 tons. In many cases, engineers found, a ship would crumple and absorb its own impact energy before it could seriously damage the structure.</p>
</blockquote>
<p>First, it’s not “sheer strength,” it’s “shear strength.” HDR calculated the strength of the protective structure around the south tower to be at least 50,000 kips when that force is attempting to shear through the reinforced concrete wall. They specifically mention shearing capacity, shearing interfaces, and shearing area when discussing this calculation on pp. 59–60 of the report. While it’s true that engineers tend to be crummy writers, we definitely know the difference between “shear” and “sheer.”</p>
<p>Second, I suspect the writer, Brooke Park, doesn’t know what a kip is. When writing for a general audience<sup id="fnref:kip"><a href="#fn:kip" rel="footnote">1</a></sup> most people wouldn’t use the word “kip” without saying it’s short for “kilopound.” Which is to say,</p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mn>1</mn><mspace width="0.278em"></mspace><mrow><mi mathvariant="normal">k</mi><mi mathvariant="normal">i</mi><mi mathvariant="normal">p</mi></mrow><mo>=</mo><mn>1000</mn><mspace width="0.278em"></mspace><mrow><mi mathvariant="normal">l</mi><mi mathvariant="normal">b</mi><mi mathvariant="normal">s</mi></mrow><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.278em"></mspace><mrow><mi mathvariant="normal">t</mi><mi mathvariant="normal">o</mi><mi mathvariant="normal">n</mi></mrow></mrow></math>
<p>There’s no “roughly” about it.<sup id="fnref:generous"><a href="#fn:generous" rel="footnote">2</a></sup></p>
<p>Still, this oddball paragraph doesn’t affect the overall story and provides the engineers who read it some amusement. Too bad about Apple’s redaction of a link to the report itself, though. That’s sheer incompetence.</p>
<div class="footnotes">
<hr/>
<ol>
<li id="fn:kip">
<p>Which HDR isn’t, so I don’t blame them for using structural engineering terms without further explanation. <a href="#fnref:kip" rev="footnote">↩</a></p>
</li>
<li id="fn:generous">
<p>You could argue that Park’s “roughly” was meant to parallel the “about” in the previous clause. I think that’s an overly generous interpretation. Also, don’t write to me about long tons or metric tonnes—there’s no way Park was talking about those. <a href="#fnref:generous" rev="footnote">↩</a></p>
</li>
</ol>
</div>
  ]]>
</content:encoded>
</item>

<item>
<title>Blocking sender addresses from list view</title>
<link>https://leancrew.com/all-this/2026/05/blocking-sender-addresses-from-list-view/</link>
<pubDate>Mon, 04 May 2026 16:54:37 +0000</pubDate>
<dc:creator>
  <![CDATA[Dr. Drang]]>
</dc:creator>
<guid>https://leancrew.com/all-this/2026/05/blocking-sender-addresses-from-list-view/</guid>
<description>
  <![CDATA[After <a href="https://leancrew.com/all-this/2026/05/blockheaded/">yesterday’s post</a>, I got an email from reader Ron Sprague outlining two ways to block sender addresses from the list view in iOS Mail. Both of these methods are efficient, and neither starts with choosing a command with a stupid name like View Contact Card. I knew about one of these methods but not the other; this post will describe both.]]>
</description>
<content:encoded>
  <![CDATA[<p>After <a href="https://leancrew.com/all-this/2026/05/blockheaded/">yesterday’s post</a>, I got an email from reader Ron Sprague outlining two ways to block sender addresses from the list view in iOS Mail. Both of these methods are efficient, and neither starts with choosing a command with a stupid name like View Contact Card. I knew about one of these methods but not the other; this post will describe both.</p>
<p>(My first thought was that this would be an update to yesterday’s post, but I soon realized it was going to be too long for that.)</p>
<p>The first method starts with a swipe to the left on the message whose sender you want to block. This brings up three options:</p>
<p><img alt="Mail list options" class="ss" src="https://leancrew.com/all-this/images2026/20260504-Mail%20list%20options.png" title="Mail list options" width="50%"/></p>
<p>The options are</p>
<ul>
<li>Trash, which deletes the message.</li>
<li>Move…, which lets you file the message in a folder.</li>
<li>More, which brings up the following set of commands:</li>
</ul>
<p><img alt="Mail More commands" class="ss" src="https://leancrew.com/all-this/images2026/20260504-Mail%20More%20commands.png" title="Mail More commands" width="50%"/></p>
<p>You may need to swipe up to see the whole list.</p>
<div class="update">
<p><strong>Update 4 May 2026 2:48 PM</strong><br/>
I am reminded by Leon Cowle that the buttons you see when swiping left may not be what my screenshot shows. The possibilities for the middle button are given in Settings→Apps→Mail→Swipe Options as None, Mark as Read, Flag, and Move Message. I have it set to the latter, even though I have no memory of doing so.</p>
</div>
<p>Two of these commands repeat what was in the previous screenshot, but a little redundancy never hurt anyone. What we’re interested in is the Block Contact command at the bottom, which does exactly what we want.<sup id="fnref:confirm"><a href="#fn:confirm" rel="footnote">1</a></sup></p>
<p>This is a pretty efficient way to block the sender if you’re in list view and can tell that that’s what you want to do from just the first couple of lines of the message. The next method, which I didn’t know about before Ron’s email, gives you a chance to see more of the message before deciding to block.</p>
<p>Starting again in list mode, long press on the message whose sender you think you want to block. This will bring up two windows, a larger one with a more complete view of the message and a small one with a list of commands.</p>
<p><img alt="Mail list long press pair 1" class="ss" src="https://leancrew.com/all-this/images2026/20260504-Mail%20list%20long%20press%20pair%201.png" title="Mail list long press pair 1" width="50%"/></p>
<p>If you were unsure whether to block the sender from the list view’s abbreviation, you’ll probably decide after seeing this. Tapping on the small list of commands makes it bigger and reveals the Block Contact command.</p>
<p><img alt="Mail list long press pair 2" class="ss" src="https://leancrew.com/all-this/images2026/20260504-Mail%20list%20long%20press%20pair%202.png" title="Mail list long press pair 2" width="50%"/></p>
<p>Why Block Contact is red in this command list and not in the others is one of the wonderful mysteries of Apple interface design.</p>
<p>These blocking methods (thanks again, Ron!) prove that Apple can make reasonably efficient interfaces when it wants to. Too bad it didn’t put the same effort into the blocking method you have to use from message view.</p>
<div class="footnotes">
<hr/>
<ol>
<li id="fn:confirm">
<p>Yes, there’s a confirmation dialog after you choose Block Contact. There’s a similar dialog after the Block Contact command described in yesterday’s post. <a href="#fnref:confirm" rev="footnote">↩</a></p>
</li>
</ol>
</div>]]>
</content:encoded>
</item>

<item>
<title>Blockheaded</title>
<link>https://leancrew.com/all-this/2026/05/blockheaded/</link>
<pubDate>Sun, 03 May 2026 16:59:24 +0000</pubDate>
<dc:creator>
  <![CDATA[Dr. Drang]]>
</dc:creator>
<guid>https://leancrew.com/all-this/2026/05/blockheaded/</guid>
<description>
  <![CDATA[Complaints about Apple’s design choices usually involve transparency, color, and other legibility concerns. These criticisms are legitimate, but the poor design choices that usually set me off are the ones involving the mechanics of commands—what I have to do to get something done. I think of these as the “design is how it works” mistakes.]]>
</description>
<content:encoded>
  <![CDATA[<p>Complaints about Apple’s design choices usually involve transparency, color, and other legibility concerns. These criticisms are legitimate, but the poor design choices that usually set me off are the ones involving the mechanics of commands—what I have to do to get something done. I think of these as the “design is how it works” mistakes.</p>
<p>Yesterday, for example, I was going through my mail on my iPhone and came upon a piece of spam. I put it in the Junk folder with the hope that future emails like it would stay out of my inbox, but I also wanted to do something stronger. I wanted to block all future emails from that sender. I’ve done this with other senders many times before, so I know the steps to take, but I decided this time to document the process because it’s so stupid.</p>
<p>Tapping anywhere in the header turns the various fields blue, suggesting that a further tap on any of them will perform some other action. I’m not sure why these fields aren’t blue to start with, but that’s not my real complaint, so we’ll pass over that.</p>
<p><img alt="Sender context menu" class="ss" src="https://leancrew.com/all-this/images2026/20260503-Sender%20context%20menu.png" title="Sender context menu" width="50%"/></p>
<p>Since I want to block the sender, the natural thing is to tap on the From field. Indeed, a menu pops up with a set of commands associated with that person/address. You might think that one of them would start a new message (as opposed to a reply), but no, which I find kind of weird. More to the current point, though, is that a command named Block Contact or Block Address is also missing.</p>
<p>I know perfectly well that I can block contacts from my phone, so how do I do it? The Copy and Search commands are clearly wrong, and View Contact Card seems even more wrong, as I have no contact card for this person. Nor do I want one—he’s a spammer. But because I once tapped View Contact Card, possibly by mistake, I now know that that’s the choice to make because this is what appears:</p>
<p><img alt="Contact card maker" class="ss" src="https://leancrew.com/all-this/images2026/20260503-Contact%20card%20maker.png" title="Contact card maker" width="50%"/></p>
<p>It doesn’t show an existing contact card for the sender; it shows a <em>potential</em> contact card, one that I could add to my Contacts app. But also included in the list of things I can do with this potential contact is block him. Which is what I did.</p>
<p>But this process makes no sense. View Contact Card should not be the path you need to take to block someone you have no intention of turning into one of your contacts. It’s not just an extra step (like tapping the header to turn all the fields blue), it’s a step in the wrong direction. No reasonable person who has not already gone through this process would think that View Contact Card is the command you choose to ensure that you never see an email from this spammer again.</p>
<p>The natural place—the correct place—for a Block Contact or Block Address command is on the popup menu you see when you tap the From field. There’s plenty of room for it. Hiding it behind a command whose primary purpose is something else isn’t a matter of taste, it’s an error.</p>
<p>Apple used to think about things like this and put commands where they made sense. I know that Apple has many more products than it used to, but it also has many many more employees and much much much more money. Simple things like this shouldn’t be falling through the cracks.</p>
<div class="update">
<p><strong>Update 4 May 2026 11:57 AM</strong><br/>
See <a href="https://leancrew.com/all-this/2026/05/blocking-sender-addresses-from-list-view/">the following post</a> for more efficient ways to block senders if you’re in iOS Mail’s list view.</p>
</div>]]>
</content:encoded>
</item>

<item>
<title>My favorite Apple accessory</title>
<link>https://leancrew.com/all-this/2026/04/my-favorite-apple-accessory/</link>
<pubDate>Mon, 27 Apr 2026 16:42:53 +0000</pubDate>
<dc:creator>
  <![CDATA[Dr. Drang]]>
</dc:creator>
<guid>https://leancrew.com/all-this/2026/04/my-favorite-apple-accessory/</guid>
<description>
  <![CDATA[I meant to write this last week, shortly after I finished listening to <a href="https://www.relay.fm/upgrade/612">Episode 612 of Upgrade</a>. But things didn’t work out the way I hoped, so now I’m rushing to finish these few paragraphs before this week’s episode comes out (they’re recording as I type). I have nothing to say about the Tim Cook/John Ternus news that hasn’t already been said. I want to focus on Jason and Myke’s choices—made and unmade—in their Apple at 50 Draft.]]>
</description>
<content:encoded>
  <![CDATA[<p>I meant to write this last week, shortly after I finished listening to <a href="https://www.relay.fm/upgrade/612">Episode 612 of Upgrade</a>. But things didn’t work out the way I hoped, so now I’m rushing to finish these few paragraphs before this week’s episode comes out (they’re recording as I type). I have nothing to say about the Tim Cook/John Ternus news that hasn’t already been said. I want to focus on Jason and Myke’s choices—made and unmade—in their Apple at 50 Draft.</p>
<p>My favorite picks were the oddballs, the products that weren’t Macs, iPhones, iPads, iPods, or Apple IIs. In other words: the accessories. I was particularly pleased with Jason’s picks of the LaserWriter, the Apple Disk II, the Apple Watch Sport Band, and the second generation Apple Pencil. I confess I was a little disappointed in Myke’s choice of the first generation Pencil, but he more than made up for it by later choosing the Magic Trackpad.</p>
<p>Those of you who weren’t around in the 80s and 90s may think Jason went overboard in putting the LaserWriter in as his third pick, but you’d be wrong. It was both a great product and incredibly important to Apple. Similar comments apply to the Apple Disk II. I never had one—I never owned an Apple II—but I did have its successor, the <a href="https://en.wikipedia.org/wiki/Integrated_Woz_Machine">Integrated Woz Machine</a>, in all of my early Macs.</p>
<p>My oddball entry would have been the <a href="https://en.wikipedia.org/wiki/AirPort_Express">AirPort Express</a>. This is not in the “I can’t believe you didn’t pick” category<sup id="fnref:wrath"><a href="#fn:wrath" rel="footnote">1</a></sup> because it’s an oddball even among oddballs, but for a short period of time for a specific subset of users, it was a great accessory.</p>
<p><img alt="Airport Express" class="ss" src="https://leancrew.com/all-this/images2026/20260427-AirPort%20Express.jpg" title="Airport Express" width="70%"/></p>
<p>If you were a business traveler during those few years in the mid-00s when hotels had wired internet access in their rooms but hadn’t yet outfitted themselves with WiFi, the first generation AirPort Express was one of the best things you could pack. It was about the same size as the wall wart power supply that came with your Apple notebook, and it set up a little WiFi network that gave you the freedom to work (or play) anywhere in your room. Even after hotel WiFi became common, I still packed my AirPort Express because it gave me a faster and more reliable wireless network.</p>
<p>I should also mention that “AirPort” was one of Apple’s best product names. Too bad they don’t have any reason to bring it back.</p>
<div class="footnotes">
<hr/>
<ol>
<li id="fn:wrath">
<p>I’m trying to avoid Jason’s wrath here. <a href="#fnref:wrath" rev="footnote">↩</a></p>
</li>
</ol>
</div>]]>
</content:encoded>
</item>

<item>
<title>Krugman, Taylor, and Maclaurin</title>
<link>https://leancrew.com/all-this/2026/04/krugman-and-maclaurin/</link>
<pubDate>Mon, 20 Apr 2026 23:53:06 +0000</pubDate>
<dc:creator>
  <![CDATA[Dr. Drang]]>
</dc:creator>
<guid>https://leancrew.com/all-this/2026/04/krugman-and-maclaurin/</guid>
<description>
  <![CDATA[In <a href="https://paulkrugman.substack.com/p/the-harm-from-hormuz">this morning’s blog/newsletter</a>,<sup id="fnref:blog"><a href="#fn:blog" rel="footnote">1</a></sup> Paul Krugman included a couple of unusual graphs that I want to talk about. It took me a little while—longer than it should have—to figure out what he was doing and why, and I’m still not sure I agree with his plotting choices. Let’s go through them and you can decide for yourselves.]]>
</description>
<content:encoded>
  <![CDATA[<p>[Equations in this post may not look right (or appear at all) in your RSS reader. Go to <a href="https://leancrew.com/all-this/2026/04/krugman-and-maclaurin/">the original article</a> to see them rendered properly.]</p>
  <hr />
  <p>In <a href="https://paulkrugman.substack.com/p/the-harm-from-hormuz">this morning’s blog/newsletter</a>,<sup id="fnref:blog"><a href="#fn:blog" rel="footnote">1</a></sup> Paul Krugman included a couple of unusual graphs that I want to talk about. It took me a little while—longer than it should have—to figure out what he was doing and why, and I’m still not sure I agree with his plotting choices. Let’s go through them and you can decide for yourselves.</p>
<p>The two graphs of interest are made the same way, so we’ll focus on the first one. He introduces it this way:</p>
<blockquote>
<p>The closest parallel I know to the Hormuz crisis is the oil shock that followed the 1973 Yom Kippur War. (The 1979 Iran crisis was more complex, involving a lot of speculative price changes.) World oil supply fell only moderately after 1973, but it had been on a rapidly rising trend until then, so there was a large shortfall relative to that trend. In the chart below I show the natural log of world oil consumption with 1965 as the base year:</p>
</blockquote>
<p>And here’s the graph itself:</p>
<p><img alt="Krugman oil supply plot" class="ss" src="https://leancrew.com/all-this/images2026/20260420-Krugman%20oil%20supply%20plot.jpg" title="Krugman oil supply plot" width="100%"/></p>
<p>Krugman usually apologizes in advance for the “wonky” parts of his posts, so I was surprised that he just breezed through the “natural log” and “base year” parts of his explanation. What he’s doing here is taking the oil consumption of a given year, dividing it by the consumption in 1965 (that’s the “base year” part), and then plotting the natural logarithm of that ratio against the year. The ratio for 1965 itself is, of course, one, which is why its log is zero.</p>
<p>Using logarithms to plot exponential growth is common because you end up with a straight line. What isn’t common is plotting the logarithm (<a href="https://mathworld.wolfram.com/NaturalLogarithm.html">natural</a> or <a href="https://mathworld.wolfram.com/CommonLogarithm.html">common</a>) of the values on a linear scale, as Krugman does here. Plotting software typically (always?) offers you the option of plotting the actual values on a logarithmic scale. The advantage of taking that option is that although the ticks will be unevenly spread, the tick <em>labels</em> will represent those actual values, not their hard-to-interpret logarithms.</p>
<p>The interior of the plot would look the same if Krugman had used a log scale for the vertical axis. We’d still see the straight line showing exponential growth from 1965 through 1973, and then the very slight decay after that. The only difference would be the spacing and labeling of the horizontal grid lines.</p>
<p>So why did Krugman make the plot the way he did? I guess the answer lies in the paragraph after the plot:</p>
<blockquote>
<p>The percentage difference between two numbers is approximately the difference in their natural logs times 100. So this chart shows that the world was burning approximately 17.5 percent less oil in 1975 than it would have under the pre-1973 trend — a supply shock not too different from what we will see now if the Strait remains closed.</p>
</blockquote>
<p>The first sentence of this paragraph is what took me a while to understand. Then I remembered a <a href="https://mathworld.wolfram.com/TaylorSeries.html">Taylor series</a>—actually a specialized Taylor series called a <a href="https://mathworld.wolfram.com/MaclaurinSeries.html">Maclaurin series</a>—that I haven’t seen in quite a while.</p>
<p>Consider exponential growth at a yearly rate of <math xmlns="http://www.w3.org/1998/Math/MathML"><mi>α</mi></math>. After <em>t</em> years, the value, relative to starting value, will be</p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>y</mi><mo>=</mo><msup><mrow><mo form="prefix" stretchy="true">(</mo><mn>1</mn><mo>+</mo><mi>α</mi><mo form="postfix" stretchy="true">)</mo></mrow><mi>t</mi></msup></mrow></math>
<p>(Note that <math xmlns="http://www.w3.org/1998/Math/MathML"><mi>α</mi></math> is expressed as a decimal value. If the yearly growth is <math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mn>10</mn><mi>%</mi></mrow></math>, <math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>α</mi><mo>=</mo><mn>0.10</mn></mrow></math>.)</p>
<p>Taking the natural log of both sides of this equation, and using the properties of logarithms and exponents, gives us</p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mrow><mi mathvariant="normal">ln</mi><mo>⁡</mo></mrow><mspace width="0.167em"></mspace><mi>y</mi><mo>=</mo><mrow><mi mathvariant="normal">ln</mi><mo>⁡</mo></mrow><mrow><mo form="prefix" stretchy="true">[</mo><msup><mrow><mo form="prefix" stretchy="true">(</mo><mn>1</mn><mo>+</mo><mi>α</mi><mo form="postfix" stretchy="true">)</mo></mrow><mi>t</mi></msup><mo form="postfix" stretchy="true">]</mo></mrow><mo>=</mo><mi>m</mi><mspace width="0.167em"></mspace><mi>t</mi></mrow></math>
<p>where</p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>m</mi><mo>=</mo><mrow><mi mathvariant="normal">ln</mi><mo>⁡</mo></mrow><mrow><mo form="prefix" stretchy="true">(</mo><mn>1</mn><mo>+</mo><mi>α</mi><mo form="postfix" stretchy="true">)</mo></mrow></mrow></math>
<p>(I should mention here that because I’m an engineer instead of a mathematician or programmer, I use <math xmlns="http://www.w3.org/1998/Math/MathML"><mi mathvariant="normal">ln</mi></math> for the natural logarithm instead of <math xmlns="http://www.w3.org/1998/Math/MathML"><mi mathvariant="normal">log</mi></math>. I use <math xmlns="http://www.w3.org/1998/Math/MathML"><mi mathvariant="normal">log</mi></math> for common [base 10] logarithms.)</p>
<p>This means that <math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mrow><mi mathvariant="normal">ln</mi><mo>⁡</mo></mrow><mo form="prefix" stretchy="false">(</mo><mn>1</mn><mo>+</mo><mi>α</mi><mo form="postfix" stretchy="false">)</mo></mrow></math> is the slope of the exponential growth portion of Krugman’s plot.</p>
<p>This is where the series expansion comes into play. As I nearly forgot, we can <a href="https://www.wolframalpha.com/input?i2d=true&amp;i=maclaurin+series+of+ln%5C%2840%291+%2B+%CE%B1%5C%2841%29">express this logarithmic term as</a></p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mrow><mi mathvariant="normal">ln</mi><mo>⁡</mo></mrow><mo form="prefix" stretchy="false">(</mo><mn>1</mn><mo>+</mo><mi>α</mi><mo form="postfix" stretchy="false">)</mo><mo>=</mo><mi>α</mi><mo>−</mo><mfrac><msup><mi>α</mi><mn>2</mn></msup><mn>2</mn></mfrac><mo>+</mo><mfrac><msup><mi>α</mi><mn>3</mn></msup><mn>3</mn></mfrac><mo>−</mo><mfrac><msup><mi>α</mi><mn>4</mn></msup><mn>4</mn></mfrac><mo>+</mo><mi>…</mi></mrow></math>
<p>and if <math xmlns="http://www.w3.org/1998/Math/MathML"><mi>α</mi></math> is small, the higher-order terms are very small, and</p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>m</mi><mo>=</mo><mrow><mi mathvariant="normal">ln</mi><mo>⁡</mo></mrow><mo form="prefix" stretchy="false">(</mo><mn>1</mn><mo>+</mo><mi>α</mi><mo form="postfix" stretchy="false">)</mo><mo>≈</mo><mi>α</mi></mrow></math>
<p>so the growth rate (as a decimal) will be about equal to the slope of Krugman’s graph. To get the growth rate as a percentage, multiply by 100.</p>
<p>Is <math xmlns="http://www.w3.org/1998/Math/MathML"><mi>α</mi></math> small? Yes. For the eight-year period from 1965 to 1973, we see that the natural log of oil consumption goes up about <math xmlns="http://www.w3.org/1998/Math/MathML"><mn>0.60</mn></math>. So the slope of that portion of the graph is</p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>m</mi><mo>=</mo><mfrac><mn>0.60</mn><mn>8</mn></mfrac><mo>=</mo><mn>0.075</mn><mo>≈</mo><mi>α</mi></mrow></math>
<p>which is pretty small.</p>
<p>The thing is, I’m pretty sure that whole “take the difference of the natural logs and multiply by 100” thing seemed like hand-waving to most of Krugman’s readers. If he’d just used a log scale on the vertical axis, he could’ve said that the lost oil consumption was about <math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mn>17.5</mn><mi>%</mi></mrow></math>, and it wouldn’t have seemed so magical because we’d all be able to see it in the graph.</p>
<p>Unless his purpose was to entertain people like me. In that case, good job!</p>
<div class="footnotes">
<hr/>
<ol>
<li id="fn:blog">
<p>I’m pretty sure Krugman thinks of it as a newsletter because it’s hosted on Substack. I think of it as a blog because I read it through RSS. <a href="#fnref:blog" rev="footnote">↩</a></p>
</li>
</ol>
</div>
  ]]>
</content:encoded>
</item>

<item>
<title>Keyboard Maestro launchers</title>
<link>https://leancrew.com/all-this/2026/04/keyboard-maestro-launchers/</link>
<pubDate>Sun, 19 Apr 2026 14:41:22 +0000</pubDate>
<dc:creator>
  <![CDATA[Dr. Drang]]>
</dc:creator>
<guid>https://leancrew.com/all-this/2026/04/keyboard-maestro-launchers/</guid>
<description>
  <![CDATA[During <a href="https://leancrew.com/all-this/2026/04/launchers-and-me/">my seven-week Spotlight trial</a>, I was reminded of how easy it is to make file and folder launchers in <a href="https://www.keyboardmaestro.com/">Keyboard Maestro</a>. In case you’ve also forgotten, here’s a short post on how to do it.]]>
</description>
<content:encoded>
  <![CDATA[<p>During <a href="https://leancrew.com/all-this/2026/04/launchers-and-me/">my seven-week Spotlight trial</a>, I was reminded of how easy it is to make file and folder launchers in <a href="https://www.keyboardmaestro.com/">Keyboard Maestro</a>. In case you’ve also forgotten, here’s a short post on how to do it.</p>
<p>There are three items that I open quite often and that Spotlight was slow to find:</p>
<ul>
<li>My <code>blog-stuff</code> directory, which is where I keep all the text files, scripts, images, and other components that go into making blog posts. Each post, or set of posts, gets its own subdirectory in <code>blog-stuff</code>.</li>
<li>My notebook index file, which is where I keep a list of all the entries in <a href="https://leancrew.com/all-this/2023/10/one-notebook/">my paper notebooks</a>.</li>
<li>My <code>calendrical</code> directory, which is where I keep the code and support files for my current programming project: a Python module implementing the functions described in Reingold &amp; Dershowitz’s <a href="https://lccn.loc.gov/2017024295"><em>Calendrical Calculations</em></a>. This folder differs from the items above in that I won’t always need quick access to it, but I will until the project is finished.</li>
</ul>
<p>The key to making a Keyboard Maestro macro to instantly launch a file or folder is the <span class="menu">Open a File, Folder or Application</span> action in the <span class="menu">Open</span> category. Here’s where you’ll find it in the Actions panel.</p>
<p><img alt="20260419-KM Open actions" class="ss" src="https://leancrew.com/all-this/images2026/20260419-20260419-KM%20Open%20actions.png" title="20260419-KM Open actions" width="60%"/></p>
<p>The macros for opening the <code>blog-stuff</code> and <code>calendrical</code> folders in the Finder are one-step macros that look like this:</p>
<p><img alt="KM Blog-stuff folder" class="ss" src="https://leancrew.com/all-this/images2026/20260419-KM%20Blog-stuff%20folder.png" title="KM Blog-stuff folder" width="80%"/></p>
<p>The path to the <code>blog-stuff</code> folder is</p>
<pre><code>~/Library/Mobile Documents/com~apple~CloudDocs/blog-stuff
</code></pre>
<p>The <code>calendrical</code> macro looks the same, except it uses the keyboard shortcut ⌃⌥⇧⌘C and opens</p>
<pre><code>~/Library/Mobile Documents/com~apple~CloudDocs/programming/calendrical
</code></pre>
<p>(These keyboard shortcuts have the sort of complicated chording I’d never use if I weren’t running <a href="https://karabiner-elements.pqrs.org/">Karabiner Elements</a> to turn Caps Lock into a “Hyper” key that mimics pressing ⌃⌥⇧⌘ simultaneously. If you read <a href="https://brettterpstra.com/">Brett Terpstra</a>, you’ll recognize the Hyper key.)</p>
<p>The macro for opening the notebook index file is only slightly more complicated:</p>
<p><img alt="KM Notebook index" class="ss" src="https://leancrew.com/all-this/images2026/20260419-KM%20Notebook%20index.png" title="KM Notebook index" width="80%"/></p>
<p>The path to the file is</p>
<pre><code>~/Library/Mobile Documents/com~apple~CloudDocs/personal/Notebook index.txt
</code></pre>
<p>and the second step puts the cursor at the bottom of the file, which is usually where I want it, as I’m typically opening the index to add a new entry.</p>
<p>Even though I’m back with LaunchBar, and I can use it to get to these files and folders quickly, I’m keeping the macros. They’re not <em>that</em> much faster than ⌘-Space and typing a few characters, but they’re more accurate. There’s no risk of typing “cla” instead of “cal” when I want to open the <code>calendrical</code> folder.</p>]]>
</content:encoded>
</item>

<item>
<title>Launchers and me</title>
<link>https://leancrew.com/all-this/2026/04/launchers-and-me/</link>
<pubDate>Sat, 18 Apr 2026 16:13:43 +0000</pubDate>
<dc:creator>
  <![CDATA[Dr. Drang]]>
</dc:creator>
<guid>https://leancrew.com/all-this/2026/04/launchers-and-me/</guid>
<description>
  <![CDATA[I started using launchers shortly after returning to the Mac (from Linux) in 2005. The first one I used was the great <a href="https://en.wikipedia.org/wiki/Quicksilver_(software)">Quicksilver</a>. I’m sure I learned about it from Merlin Mann, who was Quicksilver’s biggest advocate, but I can’t point to which of his <a href="https://www.43folders.com/topics/quicksilver">many posts on QS</a> got me started.]]>
</description>
<content:encoded>
  <![CDATA[<p>I started using launchers shortly after returning to the Mac (from Linux) in 2005. The first one I used was the great <a href="https://en.wikipedia.org/wiki/Quicksilver_(software)">Quicksilver</a>. I’m sure I learned about it from Merlin Mann, who was Quicksilver’s biggest advocate, but I can’t point to which of his <a href="https://www.43folders.com/topics/quicksilver">many posts on QS</a> got me started.</p>
<p>When Nicholas Jitkoff (Alcor) stopped developing Quicksilver in 2007 or so, <a href="https://leancrew.com/all-this/2008/02/from-quicksilver-to-launchbar/">I switched</a> to <a href="https://obdev.at/products/launchbar/index.html">LaunchBar</a>, and that’s been my main launcher ever since.<sup id="fnref:qs"><a href="#fn:qs" rel="footnote">1</a></sup> I gave <a href="https://www.alfredapp.com/">Alfred</a> a workout for a few months—inspired, I think, by <a href="https://www.relay.fm/mpu/497">this episode of Mac Power Users</a>—and I’ve tried Spotlight a few times, but I’ve always returned to LaunchBar.</p>
<p>My most recent trial of Spotlight began in late February and ended yesterday. I’d been hearing about the new and improved Spotlight since the introduction of macOS 26/Tahoe, and <a href="https://www.relay.fm/upgrade/604">this episode of Upgrade</a> inspired me to give it another shot. You may recall that as the episode in which Jason and Myke reviewed the results of Jason’s annual <a href="https://sixcolors.com/post/2026/02/2025reportcard/">Apple Report Card</a>, and they talked about Spotlight as being one of Tahoe’s significant improvements.</p>
<div class="sidebar">
<p><strong>Aside</strong><br/>
Another improvement they talked about was the new <a href="https://support.apple.com/guide/mac-help/search-your-clipboard-history-mchl40d5b86b/mac">clipboard history</a>. I haven’t turned Tahoe’s clipboard history on and probably won’t, as I use the one that comes with <a href="https://www.keyboardmaestro.com/main/">Keyboard Maestro</a>. Yes, LaunchBar also has a clipboard history, but I use KM’s because it’s always active. Keyboard Maestro has many clipboard manipulation actions, and you can’t turn its history off. I figure one clipboard history is enough.</p>
</div>
<p>So I turned off LaunchBar and began using Spotlight exclusively. It sucked. I hung on that long only because I kept thinking, “Surely it’s going to improve as it learns my habits.” It didn’t. It was unbearably slow when I started using it, and it was still unbearably slow when I finally decided to pull the plug on it yesterday.</p>
<p>How slow? Finding files and folders—even files and folders that I had been searching for and opening for a few days—typically took several seconds (yes, s…e…v…e…r…a…l seconds). Finding and launching apps with Spotlight was much faster, but even that had a noticeable delay. You may remember that Quicksilver was so-named because it was <em>quick</em>—so are LaunchBar and Alfred. Spotlight, despite being a system feature, is not.</p>
<p>So I’m back to LaunchBar. A <a href="https://obdev.at/products/launchbar/releasenotes.html">new release</a> came out during my Spotlight experiment, which was heartening, as I’ve been worried about LaunchBar’s continued viability as a product. I upgraded and reindexed my system (which took only a few seconds), and it feels like I’m back at my Mac again.</p>
<p>One last thing: If you feel compelled to tell me the Good News about <a href="https://www.raycast.com/">Raycast</a>, please restrain yourself. I know about Raycast, and I know that it seems like just the thing for someone who does as much scripting and automation as I do. And maybe it is. But it seems like a project I don’t want to take on right now. If I change my mind, I’ll let you know.</p>
<div class="update">
<p><strong>Update 18 Apr 2026 1:07 PM</strong><br/>
It’s possible that Spotlight would work at a reasonable speed if I reindexed it. Myke Hurley has mentioned (not in the above-linked episode, but in others) that he’s needed to reindex Spotlight a couple of times. If that’s what I need to do to get it to work properly, count me out. Yes, I did reindex LaunchBar yesterday, but that was because it hadn’t run in seven weeks, and I wanted it up to date right away—I’ve never had to reindex it regularly.</p>
</div>
<div class="footnotes">
<hr/>
<ol>
<li id="fn:qs">
<p>I’ve never tried the <a href="https://qsapp.com/">reconstituted Quicksilver</a>. It may be fine, but I just don’t think it has enough momentum behind it. <a href="#fnref:qs" rev="footnote">↩</a></p>
</li>
</ol>
</div>]]>
</content:encoded>
</item>

<item>
<title>Easter in Mathematica</title>
<link>https://leancrew.com/all-this/2026/04/easter-in-mathematica/</link>
<pubDate>Mon, 06 Apr 2026 00:42:45 +0000</pubDate>
<dc:creator>
  <![CDATA[Dr. Drang]]>
</dc:creator>
<guid>https://leancrew.com/all-this/2026/04/easter-in-mathematica/</guid>
<description>
  <![CDATA[<a href="https://leancrew.com/all-this/2026/04/scientific-americans-easter/">Yesterday’s post</a> included some behind-the-scenes calculations that I figured were worth talking about. They were all done in Mathematica, and here’s the notebook I used:]]>
</description>
<content:encoded>
  <![CDATA[<p><a href="https://leancrew.com/all-this/2026/04/scientific-americans-easter/">Yesterday’s post</a> included some behind-the-scenes calculations that I figured were worth talking about. They were all done in Mathematica, and here’s the notebook I used:</p>
<iframe height="600" src="https://www.wolframcloud.com/obj/mark80/Published/easter-dates.nb?_embed=iframe" width="100%"></iframe>
<p>The first calculation works out the days of the vernal equinox in every year from 1961 through 2026. The key function for this is <a href="http://reference.wolfram.com/language/ref/FindAstroEvent.html"><code>FindAstroEvent</code></a>, a fairly new function that returns the date and time of the first occurrence of a given event after the given date. I asked for the first <code>MarchEquinox</code> after January 1 of each year, and I wanted the time to be given in Greenwich Mean Time. Since I only cared about the day of the month, I used the <a href="http://reference.wolfram.com/language/ref/DateList.html"><code>DateList</code> function</a> to convert the <code>DateObject</code> returned by <code>FindAstroEvent</code> into a list of year, month, day, hour, minute, and second and pulled out just the third item of that list.</p>
<p>With <code>equinoxes</code> set to a list of 19s, 20s, and 21s, I used the <a href="http://reference.wolfram.com/language/ref/Tally.html"><code>Tally</code> function</a> to count the occurrences of each day number. As you can see, there were 58 20s in the list of 66 equinoxes, so I included that result in the post to show that March 20 is the most common date of the vernal equinox.</p>
<p>The remaining calculations were done to compare the algorithmic date of Easter with the date that Easter would be if it were determined by the actual date of the first full moon after the vernal equinox. So I used <code>FindAstroEvent</code> again, this time setting the event to <code>FullMoon</code> and the date to the equinox dates calculated earlier. That list of <code>DateObject</code>s was saved to the variable <code>fullMoons</code>.</p>
<p>I needed to compare these dates to the dates of Easter for the years of interest. Oddly, Mathematica doesn’t seem to have a built-in function for calculating Easter, but it does have a <a href="http://reference.wolfram.com/language/ref/ResourceFunction.html"><code>ResourceFunction</code></a>. The function is called <a href="https://resources.wolframcloud.com/FunctionRepository/resources/EasterSunday"><code>EasterSunday</code></a>, and it calculates the date for the given year.</p>
<p>With the lists of <code>easters</code> and <code>fullMoons</code> in hand, I subtracted the latter from the former. If the difference is more than a week, the algorithmic and astronomical Easters aren’t in agreement. As you can see, there are two instances in which Easter is 31 days after the full moon: first in 1962 (which I didn’t mention in the post) and then again in 2019 (which I did). The final calculation was just a repeat of one of the calculations in <code>equinoxes</code>; I did it again so I wouldn’t have to hunt down the 2019 equinox date.</p>
<p>I’m not sure when I learned of the <code>FindAstroEvent</code> function, but it really came in handy yesterday. I’m pretty sure there are functions in <a href="https://lccn.loc.gov/2017024295"><em>Calendrical Calculations</em></a> that deal with equinoxes and full moons, but I haven’t gotten that far in the book yet.</p>]]>
</content:encoded>
</item>

<item>
<title>Scientific American’s Easter</title>
<link>https://leancrew.com/all-this/2026/04/scientific-americans-easter/</link>
<pubDate>Sun, 05 Apr 2026 04:12:31 +0000</pubDate>
<dc:creator>
  <![CDATA[Dr. Drang]]>
</dc:creator>
<guid>https://leancrew.com/all-this/2026/04/scientific-americans-easter/</guid>
<description>
  <![CDATA[In its continuing attempt to teach us how calendars work, <em>Scientific American</em> has <a href="https://www.scientificamerican.com/article/the-mathematical-formula-that-reveals-when-easter-is-every-year/">an article</a> (<a href="https://apple.news/A8aMtxwNRRFa9rJIYdWMbMA">Apple News link</a>) up today that goes through <a href="https://en.wikipedia.org/wiki/Date_of_Easter#Gauss's_Easter_algorithm">Gauss’s algorithm</a> for calculating the date of Easter. The article was written by Manon Bischoff, who also wrote <a href="https://www.scientificamerican.com/article/why-friday-the-13th-is-a-mathematical-inevitability/">the Friday the 13th article</a> I covered <a href="https://leancrew.com/all-this/2026/03/scientific-american-and-friday-the-13th/">a few weeks ago</a>.]]>
</description>
<content:encoded>
  <![CDATA[<p>[Equations in this post may not look right (or appear at all) in your RSS reader. Go to <a href="https://leancrew.com/all-this/2026/04/scientific-americans-easter/">the original article</a> to see them rendered properly.]</p>
  <hr />
  <p>In its continuing attempt to teach us how calendars work, <em>Scientific American</em> has <a href="https://www.scientificamerican.com/article/the-mathematical-formula-that-reveals-when-easter-is-every-year/">an article</a> (<a href="https://apple.news/A8aMtxwNRRFa9rJIYdWMbMA">Apple News link</a>) up today that goes through <a href="https://en.wikipedia.org/wiki/Date_of_Easter#Gauss's_Easter_algorithm">Gauss’s algorithm</a> for calculating the date of Easter. The article was written by Manon Bischoff, who also wrote <a href="https://www.scientificamerican.com/article/why-friday-the-13th-is-a-mathematical-inevitability/">the Friday the 13th article</a> I covered <a href="https://leancrew.com/all-this/2026/03/scientific-american-and-friday-the-13th/">a few weeks ago</a>.</p>
<p>There are a few small mistakes in the article: one computational and two definitional. Let’s take a look at them.</p>
<p>The computational error comes in the calculation of the intermediate value <em>p</em>. The article says</p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>p</mi><mo>=</mo><mrow><mo form="prefix" stretchy="true">⌊</mo><mfrac><mi>k</mi><mn>3</mn></mfrac><mo form="postfix" stretchy="true">⌋</mo></mrow></mrow></math>
<p>where the topless brackets mean the <a href="https://mathworld.wolfram.com/FloorFunction.html">floor function</a>, the integer less than or equal to what’s inside the brackets. The correct equation is</p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>p</mi><mo>=</mo><mrow><mo form="prefix" stretchy="true">⌊</mo><mfrac><mrow><mn>13</mn><mo>+</mo><mn>8</mn><mi>k</mi></mrow><mn>25</mn></mfrac><mo form="postfix" stretchy="true">⌋</mo></mrow></mrow></math>
<p>In both equations, <em>k</em> is</p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>k</mi><mo>=</mo><mrow><mo form="prefix" stretchy="true">⌊</mo><mfrac><mi>y</mi><mn>100</mn></mfrac><mo form="postfix" stretchy="true">⌋</mo></mrow></mrow></math>
<p>i.e., the first two digits of the year (at least until we get to the year 10,000).</p>
<p>In giving the wrong equation for <em>p</em>, Bischoff is following Gauss himself. In the original presentation of his Easter algorithm, Gauss gave the same simple formula as Bischoff, but he corrected it several years later. Why Bischoff is still using the wrong equation two centuries later is anyone’s guess.</p>
<p>Actually, I <em>can</em> guess. Maybe Bischoff’s using the wrong formula for <em>p</em> because it’s simpler and the error won’t manifest itself until the year 4200 (!). Here’s a quick Python script to see the centuries, starting in the 1600s, for which the simpler formula is wrong:</p>
<pre><code>python:
for k in range(16, 60):
  if k//3 != (13 + 8*k)//25:
    print(f'Century {k*100} gives the wrong value')
</code></pre>
<p>The output is</p>
<pre><code>Century 4200 gives the wrong value
Century 4500 gives the wrong value
Century 4800 gives the wrong value
Century 5100 gives the wrong value
Century 5400 gives the wrong value
Century 5700 gives the wrong value
</code></pre>
<p>I think we can live with a mistake that won’t rear its head for over 2000 years.</p>
<p>I’m less inclined to overlook the definitional errors in the article’s early paragraphs. This one:</p>
<blockquote>
<p>For those who celebrate it, tracking what day the holiday Easter takes place on can be a challenge. According to Christian religious traditions, Easter Sunday falls on the first Sunday following the first full moon after the vernal equinox.</p>
</blockquote>
<p>And this one:</p>
<blockquote>
<p>[T]he vernal equinox, or start of spring, is fixed as March 21. If a full moon occurs on that exact day, March 22 becomes the earliest possible calendar date for Easter Sunday. According to the lunar calendar, the latest possible date for a full moon after March 21 is April 18. That means Easter Sunday never falls later than April 25.</p>
</blockquote>
<p>While it’s true that the idea behind the date of Easter is to be “on the first Sunday following the first full moon after the vernal equinox,” when it comes to determining Easter, both the equinox and the lunar cycle are estimated—they aren’t based on accurate astronomical calculations or observations.</p>
<p>First, let’s look at the vernal equinox.<sup id="fnref:spring"><a href="#fn:spring" rel="footnote">1</a></sup> One need only think back a couple of weeks to realize that it isn’t “fixed as March 21.” The most recent equinox was on March 20, as were 58 of the 66 vernal equinoxes I’ve lived through. March 20 is by far the most common date for the true vernal equinox. The Church fathers who set the date of Easter used March 21 as an approximation because it made the calculation simple and resulted in Easters more or less when they thought they should be.</p>
<p>Similarly, they used the <a href="https://en.wikipedia.org/wiki/Metonic_cycle">Metonic cycle</a>—with some occasional adjustments—to estimate when full moons would occur. There are almost exactly 235 lunar months in 19 years, a fact you can use to calculate a good estimate of when full moons occur.<sup id="fnref:19"><a href="#fn:19" rel="footnote">2</a></sup> But this is an average, and because lunar months vary in length, the date of a calculated full moon doesn’t always fall on the date of an actual full moon. (There’s also a slow drift that has to be accounted for.)</p>
<p>So although the date of Easter is <em>guided</em> by astronomical events, it isn’t <em>determined</em> by them. As it happens, this year the vernal equinox was, as we said, on Friday, March 20, and the following full moon was on Wednesday, April 1. So having Easter Sunday on April 5 works out both astronomically and algorithmically. But in 2019, that wasn’t the case. The vernal equinox was on Wednesday, March 20; the following full moon was on Thursday, March 21; but Easter Sunday was celebrated on April 21, not March 24.</p>
<div class="footnotes">
<hr/>
<ol>
<li id="fn:spring">
<p>My apologies to those of you in the Southern Hemisphere. I’m talking about the equinox in March, which was vernal to the people who decided when Easter should be celebrated. <a href="#fnref:spring" rev="footnote">↩</a></p>
</li>
<li id="fn:19">
<p>If you go through the calculations Bischoff presents, you’ll see a division by 19. That’s the Metonic cycle in action. <a href="#fnref:19" rev="footnote">↩</a></p>
</li>
</ol>
</div>
  ]]>
</content:encoded>
</item>

<item>
<title>A less complicated complication</title>
<link>https://leancrew.com/all-this/2026/03/a-less-complicated-complication/</link>
<pubDate>Sun, 29 Mar 2026 15:42:04 +0000</pubDate>
<dc:creator>
  <![CDATA[Dr. Drang]]>
</dc:creator>
<guid>https://leancrew.com/all-this/2026/03/a-less-complicated-complication/</guid>
<description>
  <![CDATA[Back in January, <a href="https://leancrew.com/all-this/2026/01/a-complication-thats-one-step-too-complicated/">I complained</a> about the Apple Watch’s Timer complication being too complicated. A couple of days ago, Dan Moren told me <a href="https://zeppelin.flights/@dmoren/116303829086040884">on Mastodon</a> that my complaint had been addressed in <a href="https://support.apple.com/en-us/123002">watchOS 26.4</a>, which was released earlier this week. After a surprisingly quick update of my watch (I had already updated every other device to 26.4 but somehow forgot to do the watch), I added a 3-minute timer as the bottom center complication and, miracle of miracles, it worked exactly as it should.]]>
</description>
<content:encoded>
  <![CDATA[<p>Back in January, <a href="https://leancrew.com/all-this/2026/01/a-complication-thats-one-step-too-complicated/">I complained</a> about the Apple Watch’s Timer complication being too complicated. A couple of days ago, Dan Moren told me <a href="https://zeppelin.flights/@dmoren/116303829086040884">on Mastodon</a> that my complaint had been addressed in <a href="https://support.apple.com/en-us/123002">watchOS 26.4</a>, which was released earlier this week. After a surprisingly quick update of my watch (I had already updated every other device to 26.4 but somehow forgot to do the watch), I added a 3-minute timer as the bottom center complication and, miracle of miracles, it worked exactly as it should.</p>
<p><img alt="Apple Watch with 3-minute timer complication" class="ss" src="https://leancrew.com/all-this/images2026/20260329-Apple%20Watch%20with%203-minute%20timer%20complication.png" title="Apple Watch with 3-minute timer complication" width="40%"/></p>
<p>To recap, my January complaint was that although I could create a complication that looked like it would start a 30-second timer when tapped, that complication actually required a second tap on a smaller button to start it—a stupid way to implement the feature. As of 26.4, the stupidity has been removed. Now the timer starts immediately when you tap the complication.</p>
<p>If you’d like a quick way to set a specific timer on your watch, press and hold on your watch’s home screen, tap the Edit button, and then swipe (if necessary) to get to the complications screen. Tap the complication you want to change to a Timer, scroll through the list, and choose Timers. At this point, you will be given the option to choose either a generic timer complication—one that just opens the Timers app—or one set to one of the specific times you’ve created in the Timers app.</p>
<p><img alt="Apple Watch complication setting" class="ss" src="https://leancrew.com/all-this/images2026/20260329-Apple%20Watch%20complication%20setting.png" title="Apple Watch complication setting" width="40%"/></p>
<p>Choose the one you want and go back to your home screen. Now you have a specific timer complication that works the way it should.</p>
<p>(Aside: I wanted a 30-second timer in January because I was doing physical therapy stretching exercises then that were supposed to be held for 30 seconds. I’m not doing those exercises anymore, so I made a 3-minute timer for tea.)</p>
<p>Thanks to Dan for telling me about this. I had given up on this type of complication and wouldn’t have thought to look for the improvement.</p>
<hr/>
<p>Another improvement in 26.4—one that’s sort of mentioned in the <a href="https://support.apple.com/en-us/123002">release notes</a>—is that you no longer have to tap the small arrow button to start a workout. You can also tap anywhere in the big area around the exercise icon above the three bottom buttons on the Workouts screen. And you don’t have to wait for the arrow button to slowly animate into view.</p>
<p><img alt="Watch Workouts screen" class="ss" src="https://leancrew.com/all-this/images2026/20260329-Watch%20Workouts%20screen.png" title="Watch Workouts screen" width="40%"/></p>
<p>I bitched about the previous behavior—prompted by a <a href="https://mastodon.social/@agiletortoise/115741664171965520">Greg Pierce complaint</a>—<a href="https://leancrew.com/all-this/2025/12/watch-workout-widget-worse/">in December</a>. It’s almost as if Apple is listening now.</p>]]>
</content:encoded>
</item>

<item>
<title>Are you a mod or a rocker?</title>
<link>https://leancrew.com/all-this/2026/03/are-you-a-mod-or-a-rocker/</link>
<pubDate>Fri, 27 Mar 2026 23:07:06 +0000</pubDate>
<dc:creator>
  <![CDATA[Dr. Drang]]>
</dc:creator>
<guid>https://leancrew.com/all-this/2026/03/are-you-a-mod-or-a-rocker/</guid>
<description>
  <![CDATA[I’ve been working my way slowly through <a href="https://lccn.loc.gov/2017024295">Reingold and Dershowitz’s <em>Calendrical Calculations</em></a>. This week I hit Chapter 11 on the Mayan and Aztec calendars and came across a notation for modulo arithmetic that wasn’t familiar to me.<sup id="fnref:one"><a href="#fn:one" rel="footnote">1</a></sup> I figured I’d write about it here on the off-chance that any of you would find it interesting. Also, to make it stick in my head a little better.]]>
</description>
<content:encoded>
  <![CDATA[<p>[Equations in this post may not look right (or appear at all) in your RSS reader. Go to <a href="https://leancrew.com/all-this/2026/03/are-you-a-mod-or-a-rocker/">the original article</a> to see them rendered properly.]</p>
  <hr />
  <p>I’ve been working my way slowly through <a href="https://lccn.loc.gov/2017024295">Reingold and Dershowitz’s <em>Calendrical Calculations</em></a>. This week I hit Chapter 11 on the Mayan and Aztec calendars and came across a notation for modulo arithmetic that wasn’t familiar to me.<sup id="fnref:one"><a href="#fn:one" rel="footnote">1</a></sup> I figured I’d write about it here on the off-chance that any of you would find it interesting. Also, to make it stick in my head a little better.</p>
<p>The notation came up in the section on the <a href="https://www.mayan-calendar.com/ancient_haab.html">Haab calendar</a>, a sort of solar calendar that the Mayans used along with the <a href="https://www.mayan-calendar.com/ancient_tzolkin.html">Tzolk’in</a> and <a href="https://www.mayan-calendar.com/ancient_longcount.html">Long Count</a> calendars. The Haab calendar has 18 months of 20 days each and then a 19th sort-of-month with just 5 days. There’s no year number in the Haab calendar, so there’s no way to convert directly from the Haab calendar to other calendars. But there is a way to get a date in another calendar that’s on or nearest before a given Haab date.</p>
<p>Reingold and Dershowitz use a “fixed” or “RD” calendar as their way station between all the calendars. It’s a single day number that counts up from what would have been January 1 of the Year 1 in the Gregorian calendar if the Gregorian calendar had existed back then. In this system, 0001-01-01 is Day 1 and today, 2026-03-27, is Day 739,702.</p>
<p>The function that finds the closest given Haab date on or before a given fixed date is called <code>mayan-haab-on-or-before</code>, and it’s defined this way in the text:</p>
<p><img alt="Mayan Haab date function" class="ss" src="https://leancrew.com/all-this/images2026/20260327-Mayan%20Haab%20date%20function.jpg" title="Mayan Haab date function" width="100%"/></p>
<p>What’s odd about the modulo notation in this definition is that the thing after “mod” isn’t a divisor, it’s an interval: the half-open interval between <em>date</em> (inclusive) and <em>date</em> – 365 (exclusive).</p>
<p>Here’s how R&amp;D define this interval modulus, both in Chapter 1 of <em>Calendrical Calculations</em> and in <a href="https://dl.acm.org/doi/abs/10.1145/2421096.2421112">this ACM paper</a>:</p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>n</mi><mrow><mspace width="0.444em"></mspace><mrow><mi mathvariant="normal">mod</mi><mo>⁡</mo></mrow><mspace width="0.222em"></mspace><mo form="prefix" stretchy="false">[</mo></mrow><mn>a</mn><mspace width="0.167em"></mspace><mi>.</mi><mspace width="0.167em"></mspace><mi>.</mi><mspace width="0.167em"></mspace><mi>b</mi><mo form="postfix" stretchy="false">)</mo><mspace width="0.167em"></mspace><mover><mo>=</mo><mrow><mi mathvariant="normal">d</mi><mi mathvariant="normal">e</mi><mi mathvariant="normal">f</mi></mrow></mover><mspace width="0.167em"></mspace><mrow><mo form="prefix" stretchy="true">{</mo><mtable><mtr><mtd columnalign="left" style="text-align: left"><mi>a</mi><mo>+</mo><mo form="prefix" stretchy="false">(</mo><mi>n</mi><mo>−</mo><mi>a</mi><mo form="postfix" stretchy="false">)</mo><mrow><mspace width="0.444em"></mspace><mrow><mi mathvariant="normal">mod</mi><mo>⁡</mo></mrow><mspace width="0.222em"></mspace><mo form="prefix" stretchy="false">(</mo></mrow><mi>b</mi><mo>−</mo><mi>a</mi><mo form="postfix" stretchy="false">)</mo></mtd><mtd columnalign="left" style="text-align: left"><mspace width="0.222em"></mspace></mtd><mtd columnalign="left" style="text-align: left"><mrow><mtext mathvariant="normal">if </mtext><mspace width="0.333em"></mspace></mrow><mi>a</mi><mo>≠</mo><mi>b</mi></mtd></mtr><mtr><mtd columnalign="left" style="text-align: left"><mi>n</mi></mtd><mtd columnalign="left" style="text-align: left"><mspace width="0.222em"></mspace></mtd><mtd columnalign="left" style="text-align: left"><mrow><mtext mathvariant="normal">if </mtext><mspace width="0.333em"></mspace></mrow><mi>a</mi><mo>=</mo><mi>b</mi></mtd></mtr></mtable></mrow></mrow></math>
<p>As long as the two ends of the interval aren’t identical, the answer will lie in the range <math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mo form="prefix" stretchy="false">[</mo><mi>a</mi><mspace width="0.167em"></mspace><mi>.</mi><mspace width="0.167em"></mspace><mi>.</mi><mspace width="0.167em"></mspace><mi>b</mi><mo form="postfix" stretchy="false">)</mo></mrow></math>. This notation is helpful in shifted modulo operations like the one in <code>mayan-haab-on-or-before</code> because it explicitly tells you the range of answers you’ll get. The idea is that the resulting fixed date will be anywhere from 0 (inclusive) to 365 (exclusive) days before the given date.</p>
<p>(The normal modulo notation, <math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>n</mi><mrow><mspace width="0.444em"></mspace><mrow><mi mathvariant="normal">mod</mi><mo>⁡</mo></mrow><mspace width="0.222em"></mspace><mi>m</mi></mrow></mrow></math>, could be written as <math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mi>n</mi><mrow><mspace width="0.444em"></mspace><mrow><mi mathvariant="normal">mod</mi><mo>⁡</mo></mrow><mspace width="0.222em"></mspace><mo form="prefix" stretchy="false">[</mo></mrow><mn>0</mn><mspace width="0.167em"></mspace><mi>.</mi><mspace width="0.167em"></mspace><mi>.</mi><mspace width="0.167em"></mspace><mi>m</mi><mo form="postfix" stretchy="false">)</mo></mrow></math>, although this doesn’t seem particularly helpful.)</p>
<p>Note that in <code>mayan-haab-on-or-before</code>, the interval goes backward, which means the divisor in the standard mod function is a negative number: –365. If you’re implementing this function in a programming language, you have to make sure that using a negative divisor in your language’s <code>mod</code> will give you a negative answer. This means that <code>mod</code> must have a <a href="https://en.wikipedia.org/wiki/Modulo#Variants_of_the_definition"><em>floored</em> definition</a>. The <code>mod</code> function in Lisp, which R&amp;D are using, and the <code>%</code> operator in Python, which I’m using as I reimplement R&amp;D, both use the floored definition.</p>
<p>I mentioned earlier that the 19th month of the Haab calendar is an oddball because it has only 5 days. As it happens, today is smack in the middle of that 19th month, which is called Wayeb or Uayeb, depending on whose transliteration you use.</p>
<p>Another odd thing about the Haab calendar—something that computer programmers must love—is that the day numbers within a month start at 0, not 1. So Monday, which is the start of the next Haab cycle, will be 0 Pop, Pop being the name of the first Haab month.</p>
<div class="footnotes">
<hr/>
<ol>
<li id="fn:one">
<p>It would have been familiar if I’d read Chapter 1 carefully instead of skimming, but I was eager to get past the preliminaries quickly and figured I could always go back to Chapter 1 if necessary. Which it was. <a href="#fnref:one" rev="footnote">↩</a></p>
</li>
</ol>
</div>
  ]]>
</content:encoded>
</item>

</channel>
</rss>

