A macOS 15.4 wallpaper bug
April 1, 2025 at 12:19 PM by Dr. Drang
I updated my Mac to macOS 15.4 last night and after the reboot, my desktop was white. Pure white.
Not a particularly soothing color or one that’s easy to work with.
I opened System Settings, chose Wallpaper from the list along the right edge, and saw that although my custom color was displaying properly in the little box on the right, the miniature desktop on the left was white.
If I switched to one of Apple’s photos or built-in color choices down lower on the Wallpaper pane, the desktop changed to that choice. But whenever I switched to a custom color—any custom color—the desktop reverted to white.
You know the saying about how doing something over and over and expecting different results is a sign of insanity? That doesn’t apply to computers. We all know that quitting applications or rebooting can make a computer change its behavior. There is undoubtedly a good reason behind this—something to do with clearing memory or caches or some other bullshit programmers mention when they don’t really know what’s happening—but I always feel that I’m acting irrationally. But I do it.
This time it didn’t work, and I stopped after five reboots. The five reboots weren’t the same. I tried leaving the wallpaper setting in different states, I changed between
and , and I tried out different screen resolutions. Nothing worked.I complained on Mastodon and learned that I wasn’t the only person bitten by this bug. I also heard from someone who didn’t have the problem, which always makes me wonder how deterministic computers really are. Luckily, the workaround was simple and, unlike most workarounds, made my Mac work exactly as it would if the bug weren’t there.
I made a 1×1 PNG image of my preferred desktop color (which I found in a recent screenshot), saved it to the Photos app, and chose that photo to be my wallpaper. I made sure the
option was chosen, and now my desktop looks the way it should.If only Apple’s other bugs were so easy to deal with.
Aligned Easters
March 31, 2025 at 7:19 PM by Dr. Drang
I was reading a news article today about Trump’s hope to get a ceasefire in Ukraine arranged by April 20 because it’s Easter. I thought, “Wait, that’s our Easter, but is it also Ukraine’s Easter?” Based on the Ukrainian neighborhoods in Chicago, I assumed most of Ukraine would celebrate Orthodox Easter, not the Easter set by the Western Church.
It turns out that this year they’re on the same day, something that happens more frequently than I would’ve guessed, but still less often than not.
Here are the dates of both Easters for the 50-year period starting in 2001:
Year | Western | Orthodox | Same? | Wks apart |
---|---|---|---|---|
2001 | Apr 15 | Apr 15 | Yes | 0 |
2002 | Mar 31 | May 05 | No | 5 |
2003 | Apr 20 | Apr 27 | No | 1 |
2004 | Apr 11 | Apr 11 | Yes | 0 |
2005 | Mar 27 | May 01 | No | 5 |
2006 | Apr 16 | Apr 23 | No | 1 |
2007 | Apr 08 | Apr 08 | Yes | 0 |
2008 | Mar 23 | Apr 27 | No | 5 |
2009 | Apr 12 | Apr 19 | No | 1 |
2010 | Apr 04 | Apr 04 | Yes | 0 |
2011 | Apr 24 | Apr 24 | Yes | 0 |
2012 | Apr 08 | Apr 15 | No | 1 |
2013 | Mar 31 | May 05 | No | 5 |
2014 | Apr 20 | Apr 20 | Yes | 0 |
2015 | Apr 05 | Apr 12 | No | 1 |
2016 | Mar 27 | May 01 | No | 5 |
2017 | Apr 16 | Apr 16 | Yes | 0 |
2018 | Apr 01 | Apr 08 | No | 1 |
2019 | Apr 21 | Apr 28 | No | 1 |
2020 | Apr 12 | Apr 19 | No | 1 |
2021 | Apr 04 | May 02 | No | 4 |
2022 | Apr 17 | Apr 24 | No | 1 |
2023 | Apr 09 | Apr 16 | No | 1 |
2024 | Mar 31 | May 05 | No | 5 |
2025 | Apr 20 | Apr 20 | Yes | 0 |
2026 | Apr 05 | Apr 12 | No | 1 |
2027 | Mar 28 | May 02 | No | 5 |
2028 | Apr 16 | Apr 16 | Yes | 0 |
2029 | Apr 01 | Apr 08 | No | 1 |
2030 | Apr 21 | Apr 28 | No | 1 |
2031 | Apr 13 | Apr 13 | Yes | 0 |
2032 | Mar 28 | May 02 | No | 5 |
2033 | Apr 17 | Apr 24 | No | 1 |
2034 | Apr 09 | Apr 09 | Yes | 0 |
2035 | Mar 25 | Apr 29 | No | 5 |
2036 | Apr 13 | Apr 20 | No | 1 |
2037 | Apr 05 | Apr 05 | Yes | 0 |
2038 | Apr 25 | Apr 25 | Yes | 0 |
2039 | Apr 10 | Apr 17 | No | 1 |
2040 | Apr 01 | May 06 | No | 5 |
2041 | Apr 21 | Apr 21 | Yes | 0 |
2042 | Apr 06 | Apr 13 | No | 1 |
2043 | Mar 29 | May 03 | No | 5 |
2044 | Apr 17 | Apr 24 | No | 1 |
2045 | Apr 09 | Apr 09 | Yes | 0 |
2046 | Mar 25 | Apr 29 | No | 5 |
2047 | Apr 14 | Apr 21 | No | 1 |
2048 | Apr 05 | Apr 05 | Yes | 0 |
2049 | Apr 18 | Apr 25 | No | 1 |
2050 | Apr 10 | Apr 17 | No | 1 |
There are 16 years in which the dates match. The two Easters are typically either 1 or 5 weeks apart, with the Orthodox Easter coming later. This year is the first alignment since 2017, which is the longest stretch of Nos over this period. I have no idea whether this period is in any sense typical. The calculation of Easter is complicated and the formulas don’t have any obvious period.
Here’s the Python code I used (in a Jupyter console session) to build the table:
python:
from dateutil.easter import *
for y in range(2001, 2051):
west = easter(y, EASTER_WESTERN)
east = easter(y, EASTER_ORTHODOX)
diff = (east - west).days // 7
print(f'| {y} | {west.strftime('%b %d')} | {east.strftime('%b %d')} | {"Yes" if diff==0 else " No"} | {diff} |')
The pipe characters in Line 7 are part of the MultiMarkdown table format.
The dateutil
module has an easter
submodule, which is perfect for making this comparison. The EASTER_ORTHODOX
flag gives the date for Orthodox Easter in the Gregorian calendar. There’s also an EASTER_JULIAN
flag, which gives Orthodox Easter in the Julian calendar. This is historically and culturally useful but not helpful when you want to compare it with a Gregorian date.
Using the built-in thesaurus on the Mac
March 30, 2025 at 8:21 AM by Dr. Drang
A big update to Greg Pierce’s Terminology app came out this past week, and I’m sure you’ve already read the reviews. I especially like how you can create “resources” to look up words in thesauruses, alternate dictionaries, or even on websites that are only vaguely similar to dictionaries. I used the previous versions of Terminology, so I subscribed to this new Pro version right away.
But as much as I like Terminology, I don’t use it to look up synonyms, something I do more often as I get older.1 I do almost all writing longer than a sentence or two on my Mac, where I still use the built-in context menu. It’s part of my muscle memory. In case this method of looking up synonyms has dropped out of your repertoire (or never made it in), here’s how it works.
If you’ve typed an almost-right word into a text editing field and want to look up alternatives, control-click (or right-click if you’re using a mouse) on the word in question. You don’t have to select the word first—as long as your aim is decent, the Mac will know which word you’re targeting. A context menu will pop up, and the command for looking up the word will be at the top of the menu.
(This is BBEdit, but you’ll see similar context menus in pretty much every Mac app. I can’t think of one I haven’t seen it in.)
When you choose that command, a new window will appear with brief dictionary and thesaurus entries for the word.
To see all of the word’s synonyms, click the blue more that appears at the end of the thesaurus entry. I would prefer this to be an actual button, but Apple has decided—with some justification—that we’re all so used to clicking on web links that we don’t need proper buttons anymore. Anyway, after you click more, the thesaurus entry will expand to show all the synonyms:
It would be nice if you could drag or double-click to select the synonym you want, but unfortunately this is one of those windows in which normal (or even abnormal) text selection methods aren’t enabled.2 Why not? I suspect it’s because no executive at Apple uses the dictionary this way, so it’s never been demanded. If I were an Apple executive, it’d be a higher priority than AI.
Despite the inability to select a synonym, this is a nice, and probably underused, feature of macOS/OS X. It’s so good, it probably goes back to the NeXT days.
Update 30 Mar 2025 4:58 PM
Ben Millar on Mastodon reminded me of something I had a vague memory of but never used: if the blinking cursor is within or at either end of a word, you can type ⌃⌘D to execute the command. This is a faster way to get to the thesaurus if you’ve just typed the word you want to replace. The ⌃⌘D keystroke also works if you hover the pointer over a word, but that doesn’t seem natural to me.
One problem with the keyboard-only invocation of more button to see more synonyms also requires mousework.)
is that I don’t think there’s a way to dismiss the popup window without clicking outside it. The Escape key doesn’t do it, nor does ⌘-Period. And ⌘W tries to close the entire editing window, not just the popup. So you need some mousing to close the window, which eliminates some of the keyboard-only advantage. (Clicking theUnless someone educates me on a way to dismiss the popup with a keystroke, I think I’m going to stick with control-clicking and using the context menu. If I have to move my hand to the trackpad at some point, I might as well do it right away. Still, you might find this keystroke works well for you. Either way, thanks to Ben for pointing out another piece of dictionary/thesaurus UI.
Update 31 Mar 2025 8:35 AM
Leon Cowle tells me the Escape key dismisses the popup window on Ventura, so it’s likely that its failure to work on Sequoia is a regression. I suppose I should send a bug report into the void…
-
It’s one thing to know there’s a better word for a concept but quite another to be able to pull that word out of the recesses of your brain. ↩
-
If you have TextSniper, you can avoid typing by drawing a box around the synonym you want to use, and TextSniper will put it on the clipboard for you. I don’t do this because capturing a single word this way takes more time than typing. TextSniper is great, but it’s better used on large chunks of text. ↩
Factors of safety
March 28, 2025 at 5:04 PM by Dr. Drang
In an update to the phone bending post, I used the term “factor of safety.” It’s a simple and seemingly self-explanatory phrase, but there’s a lot of depth to it. This post discusses how it’s used—and not used—by structural and mechanical engineers.
What is a factor of safety?
At it’s simplest, a factor of safety is the ratio of strength to load. Let’s say we have a wire rope with a diameter of 1″ and we use it to suspend a load of 20,000 lbs. A common rope of that size (its length doesn’t matter) has a strength of 103,400 lbs (given as 51.7 tons in this table), so its factor of safety is
Note that the load and strength values are given in the same units, so the factor of safety is a pure number. If we converted the values to SI units, the factor of safety wouldn’t change. So if you were specifying a minimum factor of safety for some mechanical or structural component, you’d use the same value whether the design is being done in SI or US customary units. We’ll talk later about how factors of safety are chosen.
A load hanging from a wire rope is an especially simple structure. There’s basically one way for it to fail, so there’s only one factor of safety we need to calculate. Most engineering systems, even those that might seem equally simple, can fail in several ways—we call these ways the modes of failure—and we have to calculate factors of safety for all of those modes.
For example, let’s say we have a horizontal beam carrying a vertical load. Here are its potential modes of failure:
- Plastic deformation. This is bending to the point where the beam doesn’t spring back when the load is removed.
- Lateral-torsional buckling. This is moving sideways and rotating, a mode of failure that is particularly significant in tall skinny beams.
- Local buckling. If certain parts of a beam are long and thin, the beam’s capacity can be limited by their buckling even though the beam as a whole doesn’t buckle.
- Connection failure. These might be end connections, where the beam attaches to columns; or they might be internal connections, where parts of the beam attach to other parts. Any of these connections could be made of bolts, welds, or a combination of bolts and welds. The bolts could break, the welds could break, the metal around the bolt holes could tear—there are lots of ways connections can fail.
All of these modes of failure have to be investigated, and they all have their own factor of safety.1
Why do we need factors of safety?
If we know that the strength of a component is greater than the load that will be applied to it, why do we need any factor of safety at all? Why specify any factor of safety greater than 1? The key is the word “know.” How can we know the maximum load that will be applied to a component over its time in service? Engineers aren’t issued crystal balls along with their diplomas. And even though it’s very nice for wire rope manufacturers to put the breaking strength of their products in a table, aren’t there tolerances on the strength of the steel and the diameters of the individual wires? Even more important, don’t wire ropes accumulate damage during service, and doesn’t that reduce their strength?
Questions like this point out the uncertainty designers have in both the strength of their designs and the loads that will be applied to them. It is this uncertainty that leads to factors of safety. Some writers refer to the factor of safety as the “factor of ignorance” to emphasize the uncertainty.
We do try to get a handle on this uncertainty. On the load side, we can sometimes make good estimates of the load through calculation. A water tank, for example, can only hold as much water as its volume will allow, and since we know the density of water quite well, we can make a pretty accurate estimate of the maximum vertical load that water tank will experience. But what about the floor loads on an office? Should we assume that it’s crammed with people? Or stacked with paper from floor to ceiling? The latter would lead us to design floor beams that never break, but no one would pay to build such a building.
It turns out that these things have been studied, and there are ways to choose appropriate design loads for different situations. The American Society of Civil Engineers publishes a standard, ASCE 7, Minimum Design Loads and Associated Criteria for Buildings and Other Structures, that provides guidance (guidance that’s commonly mandated in building codes) on the loading you should use when designing various building components. Here’s an excerpt from the table that covers floor loading:
This doesn’t mean that you’ll never find an office with a load of more than 50 pounds per square foot. It means that that’s a good value to use when combined with other recommendations (which we’ll talk about later) in the standard.
On the strength side, we’ve already discussed how manufacturing tolerances lead to uncertainty. There’s also uncertainty that comes from us. Determining the strength of a component is usually not as simple as just looking up a number in a table. Most of the time, we have to create a mathematical model of the component’s behavior to calculate its strength. These models necessarily simplify the behavior and therefore have some uncertainty in them. Some models are quite accurate; others less so.
Conceptually, the uncertainty on the load and strength sides can be thought of like this:
These curves are the probability density functions of the strength and load. They plot the relative likelihood of the component having a certain value of strength and being subjected to a certain value of load. The chance that load will exceed the strength is related to the amount of overlap between these two curves.
The more uncertainty there is in the strength or the load, the broader the associated curve will be.2 To keep the overlap low when the curves are broad, we need to push them further apart. That’s what leads to larger factors of safety.
Typically, there’s less uncertainty in the strength than the load, which is why I’ve drawn the black curve tighter than the blue curve. But if you think about the water tank example, that’s a situation where small uncertainty in the maximum load would make the blue curve pretty narrow. And if the strength curve is the same as it would be for any other structure, we could lower the factor of safety, i.e., scoot the two narrow curves closer to one another, and still achieve an acceptable level of safety.
How do we choose factors of safety?
For most of history, the answer to this question was “experience.” Many people would add “engineering judgment,” but judgment comes with experience, so I don’t see the need to clutter things up.
Sometimes the experience is successful. “We’ve been doing it this way for years, and it’s worked” is a pretty good argument for sticking with the factor of safety you’ve been using. On the other hand, sometimes success leads people to think that past designs have been too conservative—maybe we can shave the factor of safety down a bit and maintain the success we’ve been having. The people who write codes and standards are always weighing these opposing views.
Unsuccessful experience is more memorable, especially when modes of failure that were previously unknown take over. The Tacoma Narrows bridge collapse is perhaps the most famous example of engineers missing a mode of failure because they didn’t understand the load. The brittle fracture of Liberty ships is a prime example of a mode of failure that took over because engineers didn’t understand a certain type of strength. These were not failures of particular engineers; they were failures of the entire profession as new types of structure were being built.
Starting in the 60s, and with increasing speed in the 70s and 80s, structural engineers began making explicit the ideas that are implicit in the graph of the overlapping probability density functions. If they could measure the uncertainties in the loads and strengths, they could estimate the probabilities of various modes of failure3 and put the choice of factors of safety on a more rational basis. To me, this is very much like the way the formal calculation of stress via analysis overtook the use of rules of thumb in setting the sizes of structural components.
An important consequence of this approach to design was that factors of safety were split in two. Structural engineers now use “load factors,” which are based on the uncertainty in the applied loading (the width of the blue curve); and “resistance factors,” which are based on the uncertainties in the structural properties that govern strength (the width of the black curve). This split makes sense because load and strength are independent of one another. It’s more reasonable to use factors aligned to each type of uncertainty.
The ASCE 7 standard mentioned above includes not only the design values for various types of loading (like office floor loads), it also include the load factors that are meant to be used along with them. So floor loads, which are classified as live loads because they can change, are typically multiplied by a load factor of 1.6. By contrast, the weight of the structure itself—along with nonstructural components like drywall and floor tiling—is classified as a dead load because it doesn’t change, and it’s typically multiplied by a load factor of 1.2. This difference is due to the smaller uncertainty associated with dead loads compared to live loads.
The resistance factors are specified in other standards, standards that focus on the calculation of strengths. For steel structures, the American Institute of Steel Construction publishes AISC 360, the Specification for Structural Steel Buildings. In AISC 360, you’ll find that the basic resistance factor for bending is 0.90.
Note that this value is closer to 1 than the load factors. This is an example of what I said earlier; we tend to have less uncertainty about strengths than we do about loads.
Despite this advance by the structural engineering profession, the simpler idea of factor of safety hasn’t died. Mechanical engineers still tend to use factors of safety, probably because they have to deal with much more varied types of loading, loading for which the uncertainty is harder to measure. (Mechanical engineers do have the advantage that they can run extensive tests on prototypes of their designs. You don’t often see a prototype building being constructed and tested to destruction before erecting the “real” building.)
Is there any more?
Of course there is. In addition to the probability of failure, engineers also have to consider the consequences of failure. For example, it’s considered acceptable for the leads in mechanical pencils to break under reasonably foreseeable circumstances. Everyone who uses mechanical pencils has broken a lead by extending it too far or pressing too hard. We accept this because the consequences are minimal. We don’t allow automobile tires to burst with same probability that pencil leads break because the consequences are far more serious.
Risk is the combination of failure probability with failure consequences. The mathematics of risk is interesting, but I don’t think it has a lot of practical use right now. In particular, it’s hard to measure consequences. Economic losses are one thing, but injuries and deaths are quite different. It’s true that insurance companies and juries in product liability court cases put dollar values on injury and death, but no one likes it.
Finally
My Ph.D. research was on methods of calculating structural reliability, so I may have gone a little overboard here. But consider yourself lucky. The post I’ve been writing in my head over the past week was way longer.
-
Building codes typically have provisions that allow the designer to ignore certain modes of failure when the dimensions (the thickness of a flange, for example) meet some set of criteria. But even in these situations, factors of safety have been calculated; it’s just that the calculations have been done by the code writers, who have established that certain modes of failure are no longer possible if the criteria are met. ↩
-
I’ve drawn these as bell-shaped curves because people are used to seeing that kind of density function. In practice, they might have quite a different shape. ↩
-
To truly calculate the probability of failure requires more information on the PDFs of the load and strength than is typically available. But some measure of the failure probability can be estimated using the mean and variance of both the load and strength. ↩