Wake up, little sunshine
I prompted ChatGPT with: “Write a song I can sing to my son to get him awake and moving to get ready for school.”
It replied with:
Verse 1
Wake up, little sunshine
There’s a new day dawning
You’ve got a big adventure
It’s time to get movingChorus
Rise and shine, let’s go to school
Time to learn, time to grow
Put on your shoes, grab your bag
You’re ready to goVerse 2
Stretch out your arms and legs
Take a deep breath and smile
You’ll make new friends today
And learn so much in a whileChorus
Rise and shine, let’s go to school
Time to learn, time to grow
Put on your shoes, grab your bag
You’re ready to goBridge
The world is waiting for you
To see all that you can do
So let’s start this day together
And make it great, no matter the weatherChorus
Rise and shine, let’s go to school
Time to learn, time to grow
Put on your shoes, grab your bag
You’re ready to goOutro
Wake up, little sunshine
It’s time to start your day
With a bright new adventure
You’ll find your own way.
Said son, who is 15, seemed to appreciate me waking him up by belting this out in full operatic tenor. I’m almost sure of it, despite any shouting to the contrary.
The Internet is a rough neighborhood
This week I stood up a new firewall in front of my home network. This one has much better logging than the old one, and I’ve been watching the block reports.
![A screenshot of blocked inbound connection attempts, originating from all over the world.](https://cdn.uploads.micro.blog/763/2024/blocked-inbound-connections.png)
Real talk, friends: DO. NOT. expose a machine to the open Internet unless you’re 100% confident it’s bulletproof.
“I run my service on a custom port!” Doesn’t matter.
“I use IPv6!” Doesn’t matter.
“I’m just a nobody!” Doesn’t matter.
Practice safer networking, every time, all the time.
Fox News fired Tucker Carlson
However it’s spun, Fox News fired Tucker Carlson. Carlson had the most popular cable news show by a wide margin, and it’s inconceivable that Fox would simply “part ways” with their highest earner, with zero notice, without cause.
Hint: it’s never good to cost your employer a billion dollars — not that Carlson is the only miscreant at Fox.
Integrate Things with Focus
I use the Things task manager to keep track of what I need to do. I use the Focus pomodoro timer to help myself focus on a task that I’m actively working on.
Focus integrates well with another task manager, OmniFocus: you can drag an action from OmniFocus into Focus to create a task to work on, and that task will have a button that links back to the original OmniFocus action. Super convenient! It doesn’t play well with Things, though. If you try the same process, you’ll end up with multiple separate actions for each of the Things to-do’s various properties.
For example, this to-do has the title, note, checklist, tags, when, and deadline options filled in:
![A Things to-do with lots of options set](https://cdn.uploads.micro.blog/763/2024/things-to-do.png)
Dragging it to Focus creates a whole mess of random tasks:
![Focus with 8 unrelated tasks](https://cdn.uploads.micro.blog/763/2024/cluttered-focus.png)
That’s not helpful. We can do better.
First, I wrote a shortcut using Things’s shiny new Shortcuts actions. For each to-do currently selected in Things, it uses Focus’s URL scheme to create a Focus task with the item’s title, notes, and due date, and a link back to the item in Things.
Second, I made a Keyboard Maestro hot key macro, available only in Things, that executes my shortcut. When I select the to-do item above and press “option-F”, I get one single task with all the details set:
![Focus with 1 well-configured task](https://cdn.uploads.micro.blog/763/2024/clean-focus.png)
If I click the link icon next to the task’s title, Things opens with that to-do selected.
Ta-da! The workflow is slightly different than with OmniFocus, but only a little bit, and the result is just as useful.
Apple won't totally block unwanted emails
Apple’s email apps and services don’t allow users to completely block senders. If someone is sending you messages you don’t want to receive, tough. You’re going to get them.
The iCloud.com website’s Mail app doesn’t have a sender block mechanism. Instead, it offers a way to create rules based on each message’s attributes, such as its sender. Rules support these actions:
- Move to Folder
- Move to Trash
- Forward to
- Mark as Read
- Move to Folder and Mark as Read
- Move to Trash and Mark as Read
- Forward to an Email Address and Mark as Read
None of those actions are the same as bouncing or silently discarding an email. At most, you can have the email sent to your Trash folder.
Mail.app on a Mac allows you to mark senders as “blocked”. You can configure Mail.app’s junk mail filters to either “Mark [their message] as blocked mail, but leave it in my Inbox” or “Move it to the Trash”. Again, you can’t bounce or discard it.
I tried to be clever and write an AppleScript program to delete messages from my Mac’s Trash folder. That was a dead end because AppleScript’s idea of deleting an email is moving it to Trash, even if it’s already in there. Neither does it offer a way to automatically empty the trash.
Apple, this is disappointing. If I’m blocking someone, I don’t want to hear from them at all, ever. It’s not enough to send their messages to the Trash folder. I don’t want them to be in my email account at all.
Upgrade your Raspberry Pi with an SSD
I upgraded my Raspberry Pi to use an external SSD drive instead of its built-in SD card reader. If you use your little computer for anything non-trivial, so should you.
For boring old dd
sequential reads, the SSD is several times faster than the SD card:
A Boston Terrier Married a Cat
I prompted ChatGPT: “Write a Shakespearean sonnet about a Boston terrier marrying a cat.”
It replied:
“Oh, wondrous sight! A terrier and cat
In love, declaring bonds that none can break
Though some may scoff, and others may bark flat
Their love is true, not just a mere mistakeThe terrier, bold and loyal as can be
Protects his feline bride with all his might
And she, with purrs and nuzzles, shows with glee
That this odd couple won’t give up the fightThey nap together, groom each other’s fur
And playfully chase one another around
To some, their pairing might seem quite absurd
But their love for each other knows no boundSo let them wed, and let their love be strong
For true love, no matter who, can’t be wrong”
Our inevitable robot overlords can write delightful poetry. We’re in trouble.
Easily copy file contents with ForkLift
I use the ForkLift 3 file manager on my Mac. Part of my job involves copying-and-pasting the contents of various files into web forms. I made a trivial little shell script so ForkLift can help me:
#!/bin/sh
if [ ${#@} -ne 1 ]; then
echo "Expected exactly 1 filename."
exit -1
fi
pbcopy < $1
Then I created a new “Tool” called “Contents to Clipboard” that calls the script with the name of the selected file.
/Users/me/bin/copy_contents.sh $SOURCE_SELECTION_PATHS
Now I can select a file, select the Commands > Contents to Clipboard menu, and voila! The file’s contents are ready to be pasted into another app.
Recovering a Raspberry Pi password on an M1 Mac
I would never accidentally change my Raspberry Pi’s account password before clicking “save” in my password manager, therefore locking myself out. But let’s say, hypothetically, that I did. How would I get back into my account?
The process would look like:
- Power off the Raspberry Pi.
- Eject its SD card.
- Put the SD card in my M1 Mac.
- Magically replace the Pi’s
/etc/shadow
file with the previous/etc/shadow-
version, undoing the password change. - Put the SD card back in my Pi.
- Power up, log in, and pat myself on the back.
Hypothetically, that magic bit could be a pain in the neck.
False start #1: ext4fuse
The relevant part of the Pi’s SD card is formatted with the ext4 filesystem. macOS doesn’t natively support ext4, and I’d need to install software so that I could access and edit the files on the card.
First, I’d install the open source ext4fuse program and navigate to the Pi’s /etc
directory. Only then would I realize that ext4fuse is a read-only filesystem and doesn’t support writing at all.
False start #2: extFS for Mac
If the open source option didn’t work, I’d try the paid extFS for Mac filesystem and use its trial offer to do the work.
After installation, I’d discover that something in the way that the Pi formats its SD card prevents extFS from mounting it.
False start #3: run Debian in a VirtualBox VM
I bet by then I’d give up on mounting the filesystem inside macOS, and accept that it’d be easier to do the work inside a Linux VM. I’d likely hold my nose and download Oracle’s VirtualBox. Bummer that it doesn’t work well on M1 Macs yet, which I’d learn would cause the Debian installer to reboot every couple of minutes.
Success at last: Parallels Desktop
After trying and ruling out everything else, I’d probably try the trial version of Parallels Desktop. I’d use it to install Debian, then go to the Devices > USB & Bluetooth > Apple SDXC Reader Media (disk6) menu to mount the Pi’s SD card inside the VM. Then I’d open the VM’s Terminal app and run:
cd /media/parallels/root/etc
sudo mv shadow shadow.bak
sudo cp shadow- shadow
Finally, I’d go into the VM’s Files app and unmount the “boot”, “root”, and “SETTINGS” disks.
Crossing my fingers
After all that, I’d pop the card out, stick it back in the Raspberry Pi, boot it, log in via SSH, and run sudo -s
. At the password prompt, I’d type my original password (as stored in my password manager), then exhale in relief as I was once again able to log in.
That is, if I were to lock myself out in the first place. Which I never would. Because I’m a professional.
I watched the Tyre Nichols video
I watched the Tyre Nichols video. I didn’t want to because I knew what it was going to contain and dreaded the idea of seeing it, but I felt obligated to. A man died at the hands of the authorities, and as a citizen, I should witness what our government is doing. Even if — especially if — that government is accused of committing horrible acts.
I’m not glad I saw it. I wish I could un-see it. I don’t resent anyone else who doesn’t want to see it. There’s no lesser way to describe it: Demetrius Haley, Tadarrius Bean, Emmitt Martin III, Desmond Mills Jr., and Justin Smith murdered Nichols. Yes, he initially ran from the traffic stop. He should not have done that. But running from a traffic stop is not and should not be a capital offense that warrants the death penalty. After the officers had him safely detained, they proceeded to tase, pepper spray, kick, punch, and use a baton to beat him to death while he called for his mom. Anyone who claims to have seen that video and says that he deserved it or defends the officers’ actions in any way is either lying about seeing it, an irredeemable bootlicker, or a sociopath.
I grew up with the privilege of not fearing the police. Sure, I didn’t want them around if I was getting up to mischief, but I believed the worst that could happen was that they’d catch me and a court would punish me for it. Nichols didn’t have that privilege. He was right to be afraid of his police, and although it’s easy for me to say that he shouldn’t have run from them, it turned out that his fears were justified.
My travel project template
In an older post, I talked about making a project template for trip planning. The goal is to build a comprehensive list of everything I might want to prepare, pack, or do before, during, or after a business or vacation trip. Before I made this template, I was more anxious: Did I forget to do anything? Do I have everything I need? What am I missing? Now I can relax and concentrate on the fun times ahead.
Friends have asked me for my list to use as a starting point for their own, and this is that lightly annotated list. Regrets from past adventures inspired every item. The moment I’ve booked a trip, I copy this template into my to-do app, then delete everything that doesn’t apply this time. For instance, if I’m going to visit family, I can use their pillow instead of packing my own. If I’m going to Chicago in winter, I don’t need swimming trunks. If I’m traveling for personal reasons, I may not take my work laptop. It’s much easier to remove items I don’t need than to scramble to remember the things I do need.
As always, the “update the travel template” action near the bottom is the critical feedback loop that makes this all work. Every time I’ve wished I’d done or packed something, I made a reminder to add it to the list for the next time. If I were to start over with a new template having that as the only item, after a few trips that template would look a lot like this one.
As soon as travel is planned
- Schedule time off at work 1
- Call the vet to make pet boarding arrangements
Three weeks before travel
- Ensure airline has TSA Pre✓ info
One week before travel
- Notify the bank about travel 2
- Buy travel toothpaste
- Buy disposable razors
- Buy travel shaving cream
Two days before travel
- Get passports from safe
- Check in to flight
- Get $40 from an ATM 3
- Download reading material 4
- Stop eating spicy food 5
Day before travel
- Charge the USB battery 6
- Pack pants
- Pack shirts
- Pack undershirts
- Pack underwear
- Pack socks
- Pack shoes
- Pack jacket
- Pack sandals
- Pack shorts
- Pack belts
- Pack a wearing-around hat 7
- Pack swim trunks
- Pack a sun hat
- Pack a sun shirt
- Pack gaffers tape 8
- Pack water bottle
- Download podcasts and meditations 9
- Pack dopp kit 10
- Pack first aid kit
Night before travel
- Put passport card in bag
- Put backup credit card in bag 15
- Set wake-up alarm
- Charge laptop
- Charge iPhone
- Charge iPad
- Charge Apple Watch
- Charge AirPods
- Charge Switch
- Remove TSA-unfriendly stuff from bag 16
- Pack USB battery
- Pack passport book in suitcase 15
- Pack handkerchief
- Pack food bar
- Pack AirPods
- Pack Switch
- Pack magazine for plane 4
- Pack boarding passes
- Pack sunglasses
- Pack journal
Day of travel
- Wear my Apple Watch
- Turn on Fog of World 17
- Set the thermostat to vacation mode 18
- Pack laptop charger
- Pack iPhone charging cable
- Pack iPad charging cable
- Pack Apple Watch charging cable
- Pack USB charger’s charging cable
- Pack AirPods charging cable
- Pack multi-device charger
- Pack laptop
- Pack iPhone
- Pack iPad
- Pack pillow
- Buy airport stickers 19
The day before return
- Check in to return flight
The day of return
- Buy airport stickers
- Set the thermostat to normal mode
- Put away passports
- Update the travel template 20
After return
-
This seems obvious but I always forget. ↩︎
-
If you don’t do this, your bank may see transactions from an unusual location and freeze your debit or credit card. ↩︎
-
I’ve never regretted having walking around money while traveling. ↩︎
-
If I didn’t have something to read on a flight, I’d lose my mind. ↩︎ ↩︎
-
Yes, the Thai curry native-extra-hot is delicious. Do you really want to be trapped in a plane while your stomach tries to digest it? ↩︎
-
I take a plug-in charging block and a portable USB battery. If my phone is running low in the middle of a long flight, I can still charge it with the battery. ↩︎
-
It’s vacation. I want to throw on a hat to step out for coffee or breakfast. ↩︎
-
Ideal for covering obnoxiously bright power LEDs in hotel rooms, blocking light under the door, etc. ↩︎
-
If it’s too bumpy to read, it’s nice to have something fun or relaxing to listen to. ↩︎
-
See “Building the Perfect Dopp Kit”. ↩︎
-
Hotel curtains never seem to close all the way. Bend them to your will. ↩︎
-
Ever been rained on, had to walk around a lot in wet pants, and gotten chafed from it? Yeah, me neither. ↩︎
-
“Ow, these new shoes are killing my feet and I’m walking way more than usual.” ↩︎
-
Jet lag. Strange hotel. Travel excitement. These add up to difficulty sleeping. ↩︎
-
Carry at least 2 forms of ID and 2 forms of payment in 2 separate places. If 1 set gets stolen, you still have the other to get home. ↩︎ ↩︎
-
I have a tiny multi-tool in my EDC bag, and I don’t want the TSA to confiscate it. ↩︎
-
This is a fun little app that records everywhere you’ve been. ↩︎
-
Save money not heating or cooling your house as much while you’re away from it. ↩︎
-
I collect them for my carryon suitcase. This is in here twice in case I have a different layover on the way home. ↩︎
-
I take notes of things I wish I’d done or packed. When I get home I immediately update the list so that I won’t forget next time. ↩︎
-
Do it while you still have all the receipts in one place. ↩︎
-
Once the office has reimbursed me, the trip is officially done. ↩︎
Muradin wallet doesn't block RFID
My wife bought me a cool Muradin RFID-blocking wallet for Christmas. I like it a lot, except for the fact that it doesn’t actually block RFID if you use it as advertised.
The wallet has a roomy inside “cage” for storing cards, and an external pocket for storing your “frequently used card”:
![The wallet with a credit card in the outside pocket.](https://cdn.uploads.micro.blog/763/2024/9515b87f0d.jpg)
That’s not just my interpretation of the photo. The site goes on to explicitly say that the outside pocket is for your card:
![A credit card in the "FUC (frequently used card) exterior pocket"](https://cdn.uploads.micro.blog/763/2024/d794cb0588.jpg)
But what does our handy dandy Flipper Zero think of the wallet’s claim? Not much. It had no trouble reading the numbers off my debit card in the “FUC exterior pocket”:
![A Flipper Zero showing redacted credit card info.](https://cdn.uploads.micro.blog/763/2024/7acc6959f9.jpg)
To see if orientation mattered, I rotated my card 180º and tried again. It didn’t matter:
![A Flipper Zero showing more redacted credit card info.](https://cdn.uploads.micro.blog/763/2024/a7c6b067e0.jpg)
I went on to test with single cards inside the inner compartment. If the card was against the back of the wallet, as far as possible from the protective flap, the Flipper Zero couldn’t detect it.
If the card was on top of some non-RFID contents, like a few folded dollar bills, so that it was about halfway down inside the inner compartment, I could tell with about 90% reliability whether the card was a Visa or American Express:
![A Visa card is inside the wallet.](https://cdn.uploads.micro.blog/763/2024/8871ede2d0.jpg)
![Now an American Express card is inside the wallet.](https://cdn.uploads.micro.blog/763/2024/b1f978df84.jpg)
If the card was on top of several pieces of non-RFID content, and pushed up to the top of the inner compartment, I could scan its number through the “RFID-blocking” wallet about 50% of the time, depending on the card.
This wallet doesn’t work. Its RFID-blocking claim is somewhere between misleading and an outright lie. Don’t buy it.
Happy 2023!
2022 was a whirlwind of disasters, plagues, wars, elections, recession, inflation, and other stressors. It was a challenging year. If it had a theme, it would be “oh, now what?” However, we survived it, even if bruised and scarred.
This year is going to be better. I know it.
Happy 2023!
SteerMouse makes my Logitech mouse better
I bought a Logitech MX Vertical Wireless Mouse last year. The mouse itself remains delightful and my carpal tunnel aches have disappeared. I’m a fan.
Logitech’s “Options” (and newer “Options+”) driver software isn’t as lovely. Besides its odd issues, such as old versions being incompatible with FileVault, it’s a “large” app for something that mainly maps button presses to actions. It has a jarring, non-Mac-like interface, and supports a lot of features I’ll never use.
Enter SteerMouse. Let’s get the price out of the way: yes, I’m talking about a $20 app to replace the free one that comes with my mouse. It’s worth it. SteerMouse only configures the mouse speed, button-to-action mapping things, and other directly mouse-related settings, and it does it well. It’s installed as a System Settings pane, looking and feeling almost like it shipped with the computer. Unlike Options, it doesn’t like to call home to its maker (thanks, Little Snitch!), and it lets me map the top button to a helpful action (instead of using it to switch between 2 speed settings, which I never once did).
In short, buy it. It’s better, lighter, more native, and more private than Logitech’s software. Even at $20, I recommend it.
Audrey Auden's "The Voice in All"
I read Audrey Auden’s new book, “The Voice in All”, the first in her new “The Artifex and the Muse” series. Auden creates a lush, complex world filled with interesting, multifaceted residents. Tantalizing glimpses of science fiction sneak into the fantasy setting, hinting at a rich universe for the rest of the series. “The Voice in All” packs a surprising amount of development and story into a quick, fun book. Auden’s piqued my interest and I’m looking forward to the next installments.
Easily delete your Twitter account the hard way
The folks at Conscious Digital have a nifty website, yourdigitalrights.org, that makes it easy to file a CCPA or GDPR request asking a website to remove all of your data.
In particular, they make it easy to delete all your Twitter data.
Delete your account, regain your privacy, and cause someone an administrative hassle with a single click. It’s perfect!
Of course dogs smile
![Keeva heard a funny joke](https://cdn.uploads.micro.blog/763/2024/e02672fb52.jpg)
I hang out on parts of the Internet where people often post pictures of happy animals. All too often, someone will share a photo of their smiling pooch, and a viewer who wants to sound smart will feel obligated to add a comment like “dogs can’t smile.” Their arguments reduce to one of several claims:
Statement: They’re not smiling. They’re using the muscles in their face to pull the corners of their lips up.
Rebuttal: Yes, that’s how smiling works. You’ve just described the physical act of smiling.
Statement: Dogs do that to show fear or nervousness.
Rebuttal: Perhaps it can also mean that, but when my dog snuggles up against me and I gently pat her head, she’s not exactly terrified.
Statement: That’s an automatic response to scratching or patting them in specific places.
Rebuttal: When I scratch those spots, it feels good and they smile. Got it.
To most dog owners, the notion that a dog can’t smile is as laughable as telling a cat owner that their fuzzy pets can’t purr. They can. Lots of happy dogs do this all the time. And while cats can be notoriously finicky, dogs can be thrilled when you say their name or look at them. We’ve bred them for thousands of years to be friendly and sociable. The smile-doubters have somehow never managed to make a dog — a dog! — happy to have them around.
I pity those people but also distrust them. What does every dog in their life know about them that we don’t?
California 2022 Midterms Voting Guide
These are my recommendations for the November 8, 2022 midterm election in California.
Propositions
Direct democracy looks like a great idea on paper. In practice, we end up with awful laws like Prop 8. Because it’s so hard to remove bad propositions once they’re approved, it’s better to vote “no” on ballot propositions you’re unsure about. If it’s a great idea — or even a bad one, in the case of Prop 29’s predecessors — the proposers can try again in a later election. You can always choose to approve it next time.
Proposition 1 — Reproductive Freedom
Yes. Explicitly protect abortion rights at the state constitution level.
Proposition 26 — Casino Sports Betting
No. This isn’t so important that we need to write it into law.
Proposition 27 — Online Sports Betting
No. This isn’t so important that we need to write it into law. Note that some advertising makes it sound like you have to pick one of Prop 26 or Prop 27. That’s untrue, and you can vote “no” or “yes” to either, both, or neither, as you wish.
Proposition 28 — School Arts
Yes. California has decent support for STEM education. We should also support creative arts. We have a record budget surplus and should invest in all our students.
Proposition 29 — Dialysis Clinics
No, and stop asking. This terrible idea keeps arising every couple of years. We’ve said repeatedly that we don’t want to enshrine this mistake into the California constitution, and we still don’t.
Proposition 30 — Electric Vehicle Subsidies
No. I’m ambivalent. When in doubt, say “no”.
Proposition 31 — Enforce the Flavored Tobacco Bans
Yes. The tobacco industry worked to block enacting a widely supported law that would make it harder for them to market “fun” vape flavors to kids. California has already chosen this legislation. Now let’s defeat Tobacco’s efforts to stop it.
Winding down
I knew the conversation wouldn’t be easy when the veterinarian asked if this was a good time to talk.
I still think of her as a puppy, even though she hasn’t been one for many years. People are surprised to find that this tiny little dog is a full-grown adult. Although she’s shaped like a miniature version of the real thing, it’s hard to wrap your brain around something that small being anything other than a baby.
The years don’t care about her appearance, or that she sometimes sleeps on my pillow next to my head, or that I remember how frisky she use to be. Even little bits wear out and start to fail. As her vet translated the numbers from the lab results into things I could understand, I began to realize what they meant: my wife and I will have to make difficult decisions soon.
It’s hard to know what’s best for her, and harder yet to separate that from what’s easiest for us. Those aren’t at all the same things. If I could throw the finite resources available to us at the problem and put it off forever, I would. But that’s not how time works. We can delay things, but only for so long. And the delay has its costs. The analytical part of my brain imagines that she has a fixed amount of happiness left. Do we let her spend it all and then lay down for a last nap, or do we spread it over years (or maybe just months, who can tell) of uncomfortable treatments and procedures? I don’t know. And not deciding is the same as deciding: time won’t give us the luxury of pausing until we can choose what’s right.
My heart knows that this is tougher because of how much we love her. If these sorts of decisions were easy, that would be sad in a different way. Many years ago, we came to care so much about our little puppy that it made the inevitable so painful, but I wouldn’t change that even if I could. And until then, I’m going to make her remaining time as happy as I can.
Surprise eero hardware end-of-life
Amazon is ending software support for 1st generation eero devices at the end of September 2022. That’s fine. You can’t support old hardware forever, and five years is a decent run.
But it’s not OK that I got less than a month’s notice that it was happening, and no email or app notifications. I happened to open the eero app for unrelated reasons and saw a banner telling me my hardware will be obsolete later this month. That’s unacceptably short notice that the hardware is all but dead. Sure, it may keep working for a while, but without security updates or routine bug fixes, it’s not anything I’d want to depend on. If I’d received any other notice whatsoever, I would have been investigating hardware upgrades, reading the various sale emails they’d sent me, and otherwise preparing for the day. Now I have to scramble to fix something that I didn’t know needed fixed, and I don’t appreciate it.
To the folks at eero: this is a managed system. You have my contact information and know what hardware I’m using. This would have been an excellent opportunity for you to let me know about this a few months ago. You could have suggested appropriate hardware upgrades and turned it into a sales opportunity. As your customer, I would have liked that.
![eero death notice](https://cdn.uploads.micro.blog/763/2024/0e6b3e7751.jpg)