Dynamo hubs, USB converters, power banks, and phones

My bike has a SONdelux dynamo hub and I recommend it to anyone interested in distance riding, especially when self-sufficiency is important. I also ride with a power bank, and use my iPhone in lieu of a bike computer. A lot of cyclists dismiss using phones rather than dedicated head units, citing battery-life problems. If you use your phone exactly as you would use a head unit, battery life would be a problem, but you can use a phone differently, in a way that gives good battery life: leave the screen dark and rely on periodic spoken status announcements. For the kind of riding I do, this is fine. Both the Ride with GPS app and the Cyclemeter app can do this, possibly others. Even so, in a multi-day self-supported event, you still need to optimize your phone charging.

I have tried a few different mounting systems for my phone, and Quadlock, which makes the mount I am using currently, does offer a mount with a built-in Qi charger. I’ve tried it, it does work, but the mount is huge and charges less efficiently than the charging port. If you use one of these, you will end your ride with less charge than you started with. If you plug into the charging port, you can keep the phone at 100% charge.

You can charge the phone from the dyno via a USB rectifier (I have this, which is part of a kit with a dyno-powered headlight), or you can hook up a power bank in series and charge your phone and other electronics using pass-through charging. I’ve tried two different power banks at this point: the Nitecore and this Anker model. They both have the same capacity: 10k mAh. The Nitecore, attractively, is the smallest and lightest power bank with that capacity, but the Anker has a couple useful features. One is that it has a Qi charger on its body. This could be important if your phone’s charging port gets wet (this has happened to me on a long ride–it can take a long time for that port to dry out once wet): you can’t charge via the port when it’s wet, but with a Qi charger, you can still charge wirelessly. I also found that my bone-conduction headset draws so little power when it’s charging that the Nitecore pretends it’s not there, but the Anker recognizes it, and even has a special trickle mode. Note: I’ve got an older Nitecore. It looks like the new model also has trickle charging.

Both of these power banks do support pass-through charging, but they behave differently when receiving power from a dyno hub. If you are charging your phone via pass-through charging with the Nitecore, power is available from a very low speed–maybe 4 mph. The Anker requires a higher threshold to pass through the charge–maybe 9 mph–and on one day, I found that my speed was hovering around that threshold for a long time, so the phone was constantly entering and exiting a charging state. This is annoying if nothing else, and probably not great for the phone.

I also found that one of the iPhone cables I was carrying (I had a few) was fussy about its power source–it would not charge my phone when plugged into the USB rectifier, but it would charge from the power bank.

A smart setup might be to get two 5k mAh chargers (perhaps this), with one strictly receiving a charge from the dyno and the other discharging to power your other electronics, swapping the two as needed. This is slightly less efficient, but offers some redundancy.

Here’s a visual breakdown of the various charging schemes I discuss.

Ride report: Ontario, OR

I got off to a reasonably early start after sleeping like the dead. The weather was cloudy and cool, which was a nice change from the day before.

The first part of the day was riding along a dam reservoir on the Snake River. That was flat at least. Kind to my knees and easy for me to manage with my reduced power, although just the climb out of the river valley, starting at the Idaho border, was a challenge. This was followed immediately by a more serious climb that was just a slog. At the summit, traffic was stopped. There was a vehicle fire about a quarter of a mile down the road. I chatted with a couple of old-timers while we waited for emergency services to make the scene safe, which took the better part of an hour. No one was hurt, as far as I know.

Descended into the small town of Cambridge, ID. Rode around it a little to see what my dining options were–weirdly, the only restaurant on the map was a Chinese restaurant, but I found a coffee-and-sandwich place and stopped there to eat and assess.

Looking at my planning spreadsheet, I would be hitting one of the toughest climbs of the race, Lolo Pass, in a day or two. I didn’t think my knees could take it, and even if my knees weren’t a problem, my power output was so diminished I was worried about getting up it. I was already using my lowest gear on climbs that were hard but not that hard. I didn’t know how I’d get up Lolo Pass. Cambridge also looked like my best bailout option for a very long time, since I was pretty close to Boise.

I talked to Gwen about it for a while, but in the back of my mind, I knew it was over. One piece of advice I read for prospective racers was that you need to be really clear with yourself about why you’re doing this, because you will need that focus to sustain you through some very hard parts. I think that’s true, and I think my own reasons were nebulous. I’ll add to that: you need to really believe that what you’ll get out of it is worth what you put into it. Because you will put a lot into it. The juice needs to be worth the squeeze, and I realized right then that for me, it wasn’t. So I didn’t get what I wanted out of the race, but I did get something: knowledge of self.

Janie Hayes, who finished the TABR twice with fast times, wrote about scratching in the Tour Divide. I read that when I was preparing for TABR 2021, and was a bit mystified by it at the time, but it makes more sense to me now.

When I reentered cellular coverage in Cambridge, I also learned that a racer I had spent a fair amount of time around had since been diagnosed with Covid. I had no obvious symptoms, but it was concerning. I wondered if I had a mild case that was just bad enough to blunt my performance.

I did some checking and found a town with an Enterprise rent-a-car agency in Ontario, OR, roughly halfway to Boise, and without further ado, decided to ride there, rent a car from them, and road-trip home. Fortunately, that leg of the ride was mostly downhill–I was going fast enough to fool myself into thinking I was riding strongly, all of a sudden, and regretted my decision to scratch, but as soon as I hit even a bit of a climb, my regret went away. I incidentally saw the truck that had caught fire on the summit before Cambridge, being hauled on a flatbed. I stopped in the town of Weiser to get a snack and e-mail Nathan, the race director, word that I was scratching.

My first stop in Ontario was at a drugstore to get a home Covid test. I rented a hotel room and took the test: negative–I have to admit it would be nice to be able to blame scratching on it.

Next, arranging a car rental. Turned out not to be as simple as I thought. Enterprise seems to be the only car-rental agency with locations away from airports, but what I was quickly learning is that only the airport locations (for any rental agency) offer one-way rentals, which I needed. What I also learned is that even many of those airport locations would not offer a one-way rental, but Avis would. I booked the reservation online. I resolved to get an early start the next day, ride to Boise’s airport, and pick up a car. I had a plan. I was looking forward to taking a little road trip at this point, and made arrangements to see a couple friends along the way.

While this is going on, dot-watchers on the TABR facebook group have noticed I’m off course. From my hotel room, I checked in on the group and let them know I had scratched. Cody, a dot-watcher in Boise, offered to help me out, and we arranged for him to meet me partway between Ontario and Boise–I really didn’t relish riding my bike into the airport, which are generally not bike-friendly places.

So the next day I start riding toward his house and he texts me the location of an intercept point where we meet. He also took me to buy street clothes, let me shower, and then delivered me and my stuff to the airport. A real mensch.

At the Avis desk, I learned that I could not rent a car on a one-way rental from them without a physical credit card in hand that they could swipe. I was not carrying a credit card. I had the info for a credit card saved on my phone, and I had a debit card, but that wasn’t good enough. There was nothing I could say that would change their mind. They told me that all the other rental agencies had the same policy.

Time for a new plan. I need to fly home.

I get in touch with Cody again and we strategize. I book a flight departing that evening. He meets me at the airport, takes me and my bike to a bike shop (Bauer Haus, a real candy-store of a bike shop) that will pack and ship it. I took Cody and his daughter to lunch (meager compensation for their trouble), then they delivered me back to the airport. I had a connection in Denver and walked in my front door at 1:30 AM.

Ride report: Halfway, OR

The big push into Baker City took a lot out of me.

I was staying at the Churchill School bike hostel, and rolled out late because I did laundry there. I stopped in town for breakfast and discovered how weird my appetite has gotten. I was beyond hungry. I was at a nice restaurant having food I liked. And I still had to force myself to finish it. I don’t understand.

I planned on making the day’s ride shorter, but between the late departure and my low speed, it wound up being really short. It’s known that your peak heart rate and power go down when you’re exhausted. Two days ago, I couldn’t get my HR over 120 bpm. In the ride into Halfway, I could barely get it over 100.

Much of the day’s riding was through Hell’s Canyon, and the name is apt. It was hot and humid, and no trees, no shade. Nowhere to stop and take a break until the town of Richland, about 40 miles in, and the only shade there was the awning in front of the grocery store.

When I got to Halfway, I had an early dinner and went to bed. I slept long and hard, and I’m hoping I’ve pushed a reset button.

I will admit that I am feeling discouraged about this undertaking. Part of the reason I wanted to do this was to find out how I would be changed by the experience at the end. But I also have to admit that I romanticized the suffering. I am at the point where the suffering has lost whatever romance it may have had, and I am asking myself whether what I will get out of this will be worth what I put in. I didn’t enjoy being on the bike yesterday–it was just a slog.

My goal for today is to see if I can at least enjoy being on the bike, and forget my mileage targets.

Ride report: Baker City, OR

I am writing this post the day after the ride–technically, my ride ended after midnight, so arguably it is the same day.

I reached Mitchell–home of the Spoke’n Hostel–pretty early and had their spaghetti for breakfast, although the 30-mile climb out of Prineville meant I wasn’t too early. Mitchell is in a valley, so after that long climb, you give up all that altitude, and then climb it again to get out. By the time I left, the day has heated up.

Most of the rest of the day is a blur. The three big climbs after Mitchell were all late in the ride, well after the halfway point. By the time I finished the second of them, it was chilly enough that I needed my jacket for the descent. After the third, it was cold enough that I needed to add more warm clothes, and my sweat-soaked jersey was chilling me, so I needed to take that off. Finding a place I could even lean my bike took a while, and then I was working in complete darkness. I was exhausted enough that I knew to be concerned about dumb mistakes, and tried to be very methodical. Even so, I rode off without my bone-conduction headset on, but it was hooked around my handlebars, so no loss there.

One minute after I passed the Baker City City limit sign, the sky opened up. I was only in the rain for about 10 minutes but got soaked.

I had set the goal of reaching Baker City because there’s a bike hostel there. I knew it would be a big push.

It was too long. 195 miles with 5 major climbs. My appetite has been hit-or-miss, and my last solid food of the day wasn’t sufficient.

Ride report: Prineville, OR

Slept well and woke up at 5:30. Got rolling about 45 minutes later. Not great efficiency. Rode to Lewisburg and stopped at a greasy spoon for breakfast.

At some point while riding along the McKenzie River, I pulled over to strip off my warm clothes, and was passed by another racer, Richard. We rode together for a bit and stopped at a convenience store shortly before the turnoff for McKenzie Pass, the day’s main event. As we pulled in, another racer was pulling out and yelled his recommendation for the chicken tenders.

I rolled out a little before Richard and reached the turnoff. A couple of guys from Portland were getting their bikes ready; we chatted for a bit about whether the road was really closed due to a recent rockslide that needed to be cleaned up. We all agreed it was worth chancing it. I rode in ahead, knowing they’d pass me quickly.

The pass is at an altitude of about 5200 feet; the base is at about 1000 feet. As you ascend, you pass altitude markers every 1000 feet. At about 3500 feet, I had to take a break–I was whipped, my back hurts, and I ran across a rail I could use as a bench and prop for my bike. Before reaching 4000 feet, I came upon the Portland guys. I assumed they had already reached the top and were coming down. Nope. They were taking their time, I guess. There were a lot of cyclists on the climb–it’s a well known destination, especially right now when it is closed to motor traffic. There are gates at the east and west sides partway up that cyclists and peds can bypass.

I ran across a couple more racers, Mike and another guy whose name I didn’t catch. Mike and I rode together for a bit; I learned he’d read my blog entries about the 2021 race.

The top of the mountain is like Mount Doom–no life, just broken lava rock everywhere.

On the way down, I chatted with a rider going the other way, and later, at the eastern gate, there was another rider coming the other way. We chatted for a bit too. Something seemed familiar about him, and after he asked my name, I told him and said “and you’re Evan Deutsch, aren’t you?” He was. He’s won the TABR and has some very high placements when he didn’t. Nice guy, very down-to-earth.

I made it to the next town of Sisters, a very cute town blessed with two bike shops, which is pretty rare. Only one was open, so I went there. Blazin Saddles. My shifting has been off, and I hadn’t been able to fix it myself, so I suspected the derailleur hanger was out of alignment. It was. They dropped everything and got me fixed right up. Another racer was in there buying spares.

As long as I was making a stop in Sisters, I decided to eat. I found a food truck serving Mexican food and ordered a taco plate. Weirdly enough, I had to force myself to eat it–i just don’t have much of an appetite. This is a problem. There’s only so far I can go on stored fat.

My original goal for today has been Mitchell OR. What I realized was that I’d be arriving after nightfall, and the descent into town is scary enough in the daylight. I wound up stopping 40 miles short, in Prineville.

Ride report: Springfield, OR

A big day on the bike. We had a strong tailwind almost all day, and it’s clear many of the racers are making hay while the sun shines. The guys at the pointy end are all around 300 miles for the day, and probably not stopping.

A lot of climbing too, including a couple of very long, steep grades. I saw one racers going up the first of these on foot. Somehow, much later, I saw he had beat me to a road–but was on the wrong side of it. There was another racers I kept swapping positions with. I rode faster than him, but stopped more often.

My goal has been to average 180 miles/day, and it’s nice to start off with some extra miles in the bank.

I stopped in Tillamook for an early lunch at the Safeway, where I encountered my first dot-watcher, had a few snacks along the way, and stopped in Corvallis for dinner at a semi-fancy pasta place called Pastini. It was nice pretending to be civilized. I pushed on another 40 or so miles to Coburg, and am actually a little off course at a Motel 6 in Eugene. The place reeks of despair.

I’m going to sleep until I’m done sleeping.

Packed and ready

Take to the Sky, ready to go

Apart from a handful of small items I’ll need between now and tomorrow morning, my bike is ready for the Trans Am Bike Race.

My self, that’s another matter.

TABR gear list

Here’s my packing list for the Trans Am Bike Race 2023.

Tools, gadgets, and spares

Left to right, top to bottom (more or less)

  • Short length of gorilla tape
  • Zip tipes
  • Paracord
  • Derailleur cable
  • Fiberfix spoke
  • Disc brake pads
  • Extra length of chain
  • Chain tool
  • Extra spokes
  • Extra master links
  • Sugru
  • Thread locker
  • Extra SPD cleat
  • Random small screws
  • Derailleur hanger
  • CR2032 battery (for heart-rate monitor)
  • Spare dynaplug plugs
  • 2 innertubes
  • Tire boots
  • Pump
  • Tyre key
  • Shokz headset
  • Multi-head USB cable
  • Wolf Tooth 8-bit tool
  • USB converter for dynamo
  • Gerber Dime multitool
  • Dynaplug
  • Power bank
  • Wall charger
  • Patch kit
  • Extra valve cores
  • Taillights: Lezyne Strip × 2 plus Cygolite Hypershot 350
  • Secondary headlight: Magicshine ZX Pro (main headlight is on bikes).

This stuff will be stored in my Camelbak pocket, top-tube bag, and Tailfin bag, based on how likely I am to need it. It all packs down pretty small, and I will depackage the stuff that needs it. I’ll probably cut that paracord shorter. Everything in this picture weighs 1325 g.

My wheels are set up tubeless, but I do need to be able to fall back to tubes if necessary. I am debating bringing a spare tire.

Not shown:

  • Chain lube: I will be bringing 2 oz of Silca liquid wax lube.
  • Garmin InReach Messenger satellite tracker


  • Smartwool undershirt
  • Spatzwear undershirt
  • Gore leg warmers
  • Running shorts (in case I can wash all my stuff and need to stay decent)
  • Galibier jacket (doesn’t seem to be currently listed on their website)
  • Stolen goat jerseys × 2
  • Castelli shorts × 2
  • Galibier shoe covers
  • Gore Wear cool-weather cloves
  • Specialized cold-weather gloves
  • Reflectoes socks × 2
  • Specialized Grail gloves
  • Beanie

All this weighs 2103 g. Some of it will be on my body at any given time.

Not shown:

  • Lake cycling shoes
  • Wool cold-weather socks

Personal care

  • Minimal first-aid kit
  • Hibiclens
  • Electrolyte caps
  • Toothpaste
  • Toothbrush
  • Cutemol
  • Pill case for prescriptions
  • Sunblock

I had trouble with saddle sores in 2021, and am packing the Hibiclens and Cutemol in the hopes of preventing that. All this weighs 690 g.

Not shown:

  • Lip balm

Sleep setup

  • Sea to Summit Spark SP1 sleeping bag
  • Klymit Inertia 0 sleeping pad
  • SOL Escape Light emergency bivvy

I will probably sleep in hotels mostly, but don’t feel right not having something to sleep outdoors in. Weight of all this stuff: 870 g.

Total weight: 4,988 g. Plus the bags I’ll be carrying this stuff in.

The bags I’ll be using are:

Blister clear

I got involved in Burning Flipside and burns in general through firedancing. At the time I got started in firedancing there was a weekly firedancing get-together at Pato’s Tacos (RIP), and most of the people I met there were involved in Flipside.

My first Flipside was in 2004. Even before that, I got roped into coordinating the fire conclave. I overthought it and ran myself ragged during the event finding fire performers to take part. It turned out pretty good.

I skipped Flipside 2005, but returned to coordinating the conclave after that and continued doing it. One year some hoopers who were not using fire asked if they could be in it. I asked Pat, then a board member, and he left the decision to me. This was a small thing, but it taught me an important lesson about how Flipside works.

Over the years I continued to improve the way that I ran the conclave, and I took on other related responsibilities. I took over as a theme-camp lead. I helped run the informal secondary market for tickets. I joined Flipside’s advisory body. I helped organize a major art project.

It was in April 2012, during a work day for that art project, The Hive Project, that I got a call from Sparky, a then-serving board member, inviting me to go on a ride-along with a board member during the event, and to consider joining the board. I crumpled up on the floor but said OK. My reaction was both “why me?” and “if not me, who?”. I couldn’t expect other people to do it if I wasn’t willing to. I still argued that I felt I was contributing to Flipside without being a member of the board. I forget exactly what psychological aikido move Thomas used on me to counter that argument, but it worked. In the tradition of the microscopic culture that is Flipside’s board, two other invitees, Princes and Izzi, and I sat down with the board for beers at Scholz Beer Garden, to discuss joining them as provisional members. We all said yes.

The ride-along shift itself, with Beth, was uneventful and did not scare me off.

I had a severe case of imposter syndrome about the whole thing, but I also made a conscious decision that I was going to dedicate a big chunk of my life, my time, and my thoughts to my new role.

I continued serving as a provisional member until September or October 2012, when I signed the paperwork to become a full member.

Flipside 2013 would be my first event as a board member, which kicked my imposter syndrome up to a new level. I lost a huge amount of sleep in the month or so before the event, lying in bed and mentally working through scenarios. During the event, on the afternoon before burn night (when we’re all busy with burn-night prep), a massive pecan tree fell, while I was on shift. It didn’t hurt anyone, amazingly, and luckily there were experienced safety volunteers to manage that incident because I was not ready to (a tree collapse was not a scenario I had mentally rehearsed).

Over time my imposter syndrome ebbed, and I saw possibilities for improving the event that my role made possible. I focused in particular on improving documentation for the event. Old board members retired, new ones joined. Eventually no one who had been on the board when I joined, or who joined when I did, was left on the board.

Right at the beginning of 2020, I resolved to compete in the Trans Am Bike Race, and to focus on that, I would need to resign from Flipside’s board. We all know how that went. The TABR was cancelled in 2020. Flipside was cancelled in both 2020 and ’21. Because of those cancellations, I did not feel that the board could do an adequate job bringing new people on (no ride-alongs), and if I quit with no successors lined up, that would leave four on the board, which is not enough. So I stayed on. I did start TABR ’21, but had to abandon. But with Flipside 2022 in the books, we had four people lined up who were interested in joining the board. I wanted to take another stab at the TABR. And it was time to give other people a turn at the wheel. I gave plenty of notice and documented the things I did as a board member to smooth the transition. I set today as my last possible day.

On the Slack workspace that the organization uses for board members and senior managers, I announced that today was my last day as a board member. I had some powerful and complicated feelings after I sent that message. I’ve been doing this thing for over ten years, and it has taken over a big chunk of my life. I am glad I have something else to focus on, but it will be a strange feeling with nothing planned for Monday nights. Joining Flipside’s board has turned out to be one of the best things I’ve done with my life.


I thought about when I moved back to the U.S. from Japan. I had somewhat similar feelings then. For one thing, I had put a lot of work into figuring out how to live in Tokyo, and I felt like I was throwing that investment away. I’m not feeling that way now. But being an American living abroad, being a Japan hand, had become part of my identity, and I felt like I was giving that up too, and I am feeling some of that this time. Being a board member for Flipside has become a significant part of my identity.

I also thought about something I’ve observed in some other volunteers that I call the Death Grip. You hold on to a role, not because you enjoy it, but because you’ve convinced yourself the role needs you–no one else can do it. I’ll admit I felt a pang of that, but I am letting go.

And of course, there’s the camaraderie that develops among board members. We spend a lot of time with each other. We have bonding through shared hardship.

PS: What’s up with cryptic title? My callsign on comms is “Blister”; “clear” is what you say when you’re ending a communication on comms.

Reflections on my anniversary

Gwen and I celebrated our 19th wedding anniversary with a weekend trip to Dallas. Nerd that I am, I reflected on an episode of Star Trek: The Next Generation that featured a character, Kamala, who became whatever the man around her wanted her to be. If she spent enough time in the presence of one man, she’d imprint on him, and would permanently be what that man wanted in a woman. One of the ideas suggested–but never spelled out–by this episode is that the way she expressed her own individuality is in the man she chose to imprint on.

And I thought about how, in marriage or any long-term relationship, we are changed by the person we are with. One partner will bring out one side of us, a different partner would bring out a different side. We consciously choose who we want to be with, but what I never thought about before is the fact that in doing so, we are also choosing who we want to be.

I did well on both counts.

Accessory mounting plates for aerobars

Updated–see end of post

I’ve written before about different options for mounting gadgets on aerobars. None of them really address the needs of bikepacking cyclists, who may want to have two sets of lights, two computers, and possibly other stuff out front, so I’m taking matters into my own hands and having a couple of designs fabbed up by SendCutSend.

Both designs use four lateral slots with P-clamps to attach to the aerobars with some positioning flexibility. I’ve found a source for high-quality, dimensionally precise P-clamps with silicone coating for a little vibration damping. Both designs require straight sections of aerobars to clamp to, and will work better on “J-bend” bars than “S-bend.”

Each design has its pros and cons.

The first one (“New York Style”) is being produced out of thin 6061 aluminum, but could be made of carbon fiber. It gives a little more room for different attachments, and might be a better basis for a single do-it-all mounting base.

The second (“Chicago Style”) is being produced out of .25″ 6061 aluminum (could get it as thick as 0.5″). This is thick enough to tap the holes, which obviates the need for separate nuts (or other fixtures). There are some limits on what SendCutSend can do–for instance, it can’t tap an M3 hole in a thicker plate than this. Because of the material’s inherent rigidity, the fore and aft slots can be closer together. This lets it fit on bars where there’s a relatively short straight section, which might make it feasible on S-bend bars.

Both designs provide a bunch of mounting holes for specific purposes. I’ve got one set of AMPS holes for installing a Quadlock mount. The New York Style plate has a few Garmin/Wahoo combo hole patterns, holes for mounting a bottle cage, and holes for GoPro bases–these serve as a sort of universal adapter for lots of gadgets. Many kinds of headlights can be used with a GoPro adapter; there are also Garmin/GoPro adapters, which give you control over the viewing angle. This particular iteration of the Chicago Style plate has fewer mounting options.


I’ve received my first “New York style” prototype, mounted it, and taken it for a good test ride. The plate is 0.125″ 6061 aluminum and it feels much more solid in the hand than I expected. The plate by itself is 89 grams; with bar clamps, a Garmin mounting “biscuit” and a couple of GoPro mounts, 195 g. On a “grams per gadget” basis, this works out heavier than most out-front mounts, but not by a big factor. I’ve also received but not used my “Chicago style” prototype, and despite being twice as thick, the smaller footprint means it’s about 10 g lighter. A slightly longer center section would make it more functional.

The plate itself is a little rough around the edges, literally. The fabrication service I used doesn’t offer edge-chamfering. If they did, I’d use it. That said, unless you plan to spend a lot of time stroking its perimeter, this won’t be a problem.

It was absolutely solid and silent on my ride. Having received it and used it, I can see some ways to optimize it. It’s definitely overbuilt.

Interested in getting one of these? I am soliciting input for a small production batch..

A prototype of a plate for mounting accessories between aerobars

Shown with 2 headlights, a Quadlock phone mount, and a Garmin mount,

Shown with 2 headlights, a Quadlock phone mount, and a Garmin mount,

Shown with 2 headlights, a Quadlock phone mount, and a Garmin mount,

Finally, I’ve developed a variation on the “Chicago style” plate above that you might call “Chicago style with everything” — this has room for two Garmin 830s, a headlight, and a water bottle. Or skip the water bottle and add an undermount headlight. Or skip the Garmins and add a phone. This measures slightly less than 100 × 200 mm. This is realistically about as much will fit.

A design for an accessory mounting plate

Mastodon & moderation

I’m on the board of a regional burn, Burning Flipside. We have to deal with banning people and it’s the hardest, most time-consuming thing we do. There are some analogies to Mastodon bans and defederations that might be useful.

One illuminating difference is that our ban list is private: we treat it as very secret. But there are frequent suggestions that we should share our ban list with other regionals and accept ban lists from other regionals. And in fact, there’s at least one regional that proactively shares its banning decisions.

There’s a certain logic to this, because the populations of regional burns overlap a lot. People from one regional often go to others, including bad actors, and sometimes when a bad actor gets “run out of town,” he (it’s usually a he) moves on to another. So I understand why people would want shared ban lists.

But being notified of another org’s banning decision puts us in an awkward place: it creates pressure on us to respond to it somehow. But our own policies require firsthand reports, which one of these outside-org reports would not be, unless a member of that board is a firsthand reporter. And we might come to a different conclusion than the other org, which could be difficult to explain.

Why do we keep our ban decisions secret? Partly it’s out of liability concerns. We don’t want to be accused of libeling/slandering someone. Also, our decisions don’t always make sense out of context: we once had to “ban” a toddler who was at the center of a custody fight between two parents. Sometimes knowing who has been banned would convey information about who made the report to us in the first place, which we would want to avoid at all costs. Every decision is made in a unique context, and it would be impossible to apply standardized actions consistently.

There’s a difference in the kinds of problems Flipside needs to deal with vs a social-media content moderator. The interactions being reported often happen in private, and even if not, they don’t generally leave an objective record on the Internet. This is tough for me to think through. Speech acts are acts, and the Internet is part of real life. But still, there’s a big difference between being threatened online and being threatened in person, never mind being physically assaulted. The Flipside organization does have a policy not to tolerate “any form of expression that serves to demean, intimidate, or ostracize,” and we have seen some problematic forms of expression in the past, but we haven’t received reports about them since that policy has been in effect. The problems we’re dealing with are more immediate. In any case, I’m not sure how the differences in problems should inform differences in the ways they’re handled. It deserves some thought.

On Flipside’s board, we like to say “we don’t have a lot of options for dealing with problematic participants, and most of them look like hammers.” The Mastodon software offers a number of moderation features, some of which are more subtle than a hammer. As far as I can tell, Mastodon instances don’t publish lists of users under moderation, but in some cases, those users themselves will use another forum to announce that they’re under some kind of moderation.

Then there’s defederation, a way of one instance’s mods saying to another’s “if you won’t moderate your users, we will.” Best as I can tell, defederation is public. Perhaps necessarily so. The instance my first account is on shows which servers it has filtered/silenced/suspended—which is equivalent to applying that moderation to everyone on that instance, remotely.

Right now, it seems like a lot of defederation—or at least chatter about defederation—is happening either because an instance’s moderators have been too hasty or too relaxed about applying moderation. If an instance really has devolved into a hive of scum and villainy, then that’s fair. It’s the healthy thing for the fediverse to do. If it’s a few bad actors on a large instance, it strikes me as procrustean.

This is another way in which the difference between regional burns and Mastodon instances is illuminating. It would be impossible and undesirable for one regional burn to ban everyone from another regional burn.

I’ve got some ideas.

  • Fediverse mods need to have a running group chat, so that mods for Instance A can say to the mods at Instance B “I’ve noticed a pattern of problematic posts staying up/unproblematic posts being removed,” and they can talk it out before anyone needs to make a defederation decision. Maybe this already exists.
  • It seems likely that Mastodon admins are going to subscribe to external services that make moderation decisions for them. Keeping the lights on is hard enough, dealing with moderation decisions as well is a whole ‘nother ballgame. If this happens, then knowing what moderation service a Mastodon instance subscribes to will tell you something about what kind of place it is.
  • Sharing ban lists of individuals between instances, as an alternative to external moderation services, might remove some pressure to defederate, although this might be opening up a bigger can of worms.

Identity is going to be an important aspect of this, because it is possible to change instances, or use multiple instances at the same time. Mastodon provides an easy method to verify your identity, although it requires a bit of nerdiness. This can solve the problem of a public figure who wants to be identifiable but is an asshole. It doesn’t solve the problem of a committed troll, who can easily spool up multiple identities with multiple verifications.

Note: I’ve referred to Mastodon throughout this, but the same idea applies to any service in the fediverse.

Portugal 2022

Portugal 2022

Gwen and I had been talking about visiting Portugal for some time, and the time finally seemed right, so we booked tickets. We started language lessons in Duolingo, but A. Duolingo only teaches Brazilian Portuguese, and B. we didn’t realize how different the Brazilian dialect is from the European one. We watched some Youtube videos for European Portuguese instruction that were rather rude eye-openers as to how different. Still, the written language isn’t that different—certainly not at the rudimentary level that we’re at—and I do feel that I got some use out of those lessons.

I think that for lots of Americans (certainly lots of people in Texas), there’s a modicum of familiarity with how to sound out Spanish, just from familiarity with place names and Mexican-restaurant menus. In its written form, Portuguese looks a lot like Spanish, but those appearances will deceive you as soon as you speak it. Some things are the same, or near enough. Por favor. Ola. But we were in one neighborhood called Belém—based on a little knowledge of Spanish, you might expect that to be pronounced “bell-EM.” Nope. It sounds exactly like the English word “blame.” In English, we have silent Es at the end of words. In European Portuguese (not Brazilian), it seems any unaccented E is silent. I got self-conscious about using the Brazilian pronunciations that I had been learning. I was told while we were there “it’s OK, everyone will understand it.” The real problem is that I won’t understand the European pronunciations without a lot more practice. Anyhow, enough language talk. On to Portugal.


Landed in Lisboa and took a cab to Estação Oriente. We probably could have walked there faster when accounting for the line to get into a cab—it was quite close. Or we could have taken the subway. But we were tired and not trusting ourselves to navigate on foot or to figure out how to deal with the metro.

Bought our train tickets to Porto, after a French tourist cut in front of us to complain to the ticket agent that he needed to cash out his ticket. The ticket agent rolled his eyes and patiently shooed him to the side while he took care of us.

We had a bit of a wait for our train, so we wandered around the area near the station, eventually winding up on the waterfront and just sitting. All the sidewalks in Lisbon and Porto are cobbled, so dragging a rolly bag is not super-fun.

The train ride was uneventful. Took another cab (our last of the trip) from the Campanha train station to our Airbnb in the Ribeira area. Ribeira is an old part of town, with very narrow streets and buildings overhanging, which impairs GPS performance. Our driver wound up on the wrong street, and couldn’t quite figure out how to get us to where we belonged, but we managed. The driving was very treacherous—neither Gwen nor I could imagine driving in that part of town at all.

The Airbnb was pretty nice. It was in a very old building that seemingly had been completely gutted and rebuilt—new floors and everything. Our unit had a sleek, small system kitchen and fancy fixtures. The original stone walls were exposed, and the windows set deep into them, showing how thick they are—about 18″.

Once we got settled, it was time to think about dinner. We wound up at a place just down the street, Mariage a Trois. This was not really a place to go for a hot meal—it was mostly wine and charcuterie boards. But the owner was interesting, and had interesting wines to offer for €4-5. It wound up being a good time. I’ll tell you what, when you order an adult beverage in Portugal, you do not get a short pour. On a later occasion, we stopped in a place selling shots of ginjinha (cherry liqueur), and the glass was so full it was only surface tension keeping it all in.

Tuesday, 27 Sep 2022: Porto

This was a huge walking day. Too much walking. (Gwen messed up her IT band for the rest of the trip.) It was good to get the lay of the land.

The old part of Porto is extremely hilly and twisty and turny. Especially down by the riverfront, it feels like you could get lost in an area the size of a large vegetable garden. Some of the streets are probably at a 20% grade, and they’re all cobbled. Many of the smaller ones had access limited by motorized bollards that you need a special pass to retract.

The old part of town inevitably has a layer of grime over everything. If Porto collectively powerwashed itself, it would be breathtaking.

Breakfast: Com Cuore. GF bakery. Not bad for GF.

We had been told by friends that you barely need cash in Portugal—that everything is done on plastic. Yes and no. This place only took cash, and there were quite a few like that in Porto (signs often say “No multibanco” or “No ATM”). We had changed a fair amount of currency before the trip, and it was a good thing. In Lisboa, though, we found a lot of places that could not or would not take €50 notes, and we wound up bringing home more cash than was ideal. Almost every place we went had the same little handheld payment terminals, and for the first time on this trip, I embraced the Apple Pay feature on my watch. Super-fast, super-convenient. The only drawback is that I have two cards registered to Apple Pay that are indistinguishable except for the account numbers, and I have not bothered to memorize which is which. I decided to go with whichever card it was defaulting to and fix it after the fact.

Highlights: Livraria Lello. This place bills itself as “the world’s most beautiful bookstore,” and it’s a credible claim. They charge admission (applied toward book purchases) just to get in, and there’s a line. We were lucky to go on a weekday—the line on Saturday was ludicrous. Buy your tickets online before you get there.

We walked to the printing museum—which was a long hike along the waterfront—only to discover that it was closed indefinitely [sad trombone].

Dinner: Adega Mercearia Bebe Se Mal (“bebe se mal” means “drinking is bad,” but we drank anyhow). This was a traditional Portuguese place, meaning fish and potatoes without fancy preparation. The fish is the real deal. They had a whole section of cod dishes. Gwen had salt-crusted grilled sardines and was quite satisfied with the meal.

  • Distance walked: 11 miles
  • Flights climbed: 76

Wednesday, 28 Sep 2022: Porto

We had breakfast at Floresta Cafe, in the heart of the touristy area. Oh my god, so much food. I had their “Brunch #1” and didn’t eat for the rest of the day. Porto restaurants in general seem to take an idea and run with it beyond all reason—my breakfast was a reasonable approximation of a Full English breakfast, but with a salad added. And yogurt with granola.

Our first stop of the day was Igreja de São Francisco, which Atlas Obscura referred to as a “baroque orgy.” Accurate enough. Your eyes would fall out trying to take in all the detail, most of it covered in gold leaf.

After that, because it was threatening rain, we went next door to the Palácio da Bolsa—the old stock exchange. One could only visit as part of a scheduled tour (it’s still a functioning workplace), but fortunately they had an English-language tour starting a few minutes after we arrived. It was a pretty amazing building and I’m glad we had the excuse to visit—I probably wouldn’t have gone otherwise.

I noticed that Porto has designated mandatory parking spots for rental scooters. I wish that Austin (and every other city) would follow this example. It’s not technologically difficult, and it could be a source of revenue for the city.

The public-transit systems in Porto and Lisboa both are not hard to navigate. You buy a fare card, and can either add a certain monetary value to it or make it a day pass (you can also just put a single ride on it, but that seems inefficient). Once you’ve done that, it’s good for subways, trams, buses, and trains (although a Porto pass will not work in Lisboa or vice-versa). I was a little surprised that, on the Lisboa subway, you need to tap in and tap out. Porto was interesting for being very laissez-faire: on the subway, there are tap-in pillars, but there’s nothing restricting access to the platforms. Perhaps they reason that the barriers cost more money than the additional fare capture would bring in. Although the buses and subways in Porto both have electronic signs showing what stop is next, the trams do not, so you need to watch your progress on your phone or count stops carefully.

Both Google Maps and Apple Maps give public-transit routing for Lisboa, but only Google does for Porto; interestingly, they don’t always agree with each other. For walking directions, I found that I liked Apple Maps better: the map is easier to read on the phone, and seems to show your heading based on the phone’s internal compass, while Google Maps seems to show your heading based on the direction you’ve been walking in, so it can take a few seconds to catch up with changes in direction. On the streets over there, that makes a big difference. Also, if you have an Apple Watch (I do), Apple Maps will tap your wrist to indicate when it’s time to turn left or right, so don’t need to walk with your phone out like a damned tourist. I’m surprised the Google Maps watch app doesn’t do anything like that—it is useless.

One thing neither one did well is guide you on foot to your public-transit stop, or from a stop to your destination. They assume that you’ll know the area well enough, which is not a safe assumption.

  • Distance walked: 8 miles
  • Flights climbed: 35

Thursday, 29 Sep 2002: Porto

Our first stop of the day was in Gaia on the other side of the Douro river, so we crossed over there and found a breakfast place, 7G Roaster. This place incidentally also has short-term rentals for €83/day, which is not bad. The breakfast kept with the “massive overkill” theme of Porto restaurants: I had a bagel with lox, to which they had added a poached egg and a big scoop of guacamole. It wasn’t an authentic bagel—more like a ring-shaped bun. But it was pretty good! Gwen had eggs florentine on a hashbrown patty, again not authentic but tasty.

That first stop was a tour of a small port vintner, Quinta dos Corvus. Small enough that they don’t export. All the port vintners run these tours, and of course, the best part is the tasting room at the end. They served us a white port and a tawny for the price of our ticket, and we bought a glass of vintage ’96. I like port.

We made our way back to the Porto side and visited a couple of graveyards: Lapa cemetery and Cemitério do Prado do Repouso. We didn’t have enough time to really take in the second one (which is huge). We noticed that the cemeteries had signs indicating that there were feral cat colonies living in them, and that the cats had all been fixed and an ear clipped to indicate that.

We had dinner with our ex-Austin friend Echo and her husband João. João took us to Taberna do São Pedro, an old-school fish restaurant in Gaia, and after that we walked along the waterfront for a while. It was great to see Echo again, and to meet João. Initially they tried to take us to a place that Echo just referred to as “the meat place,” but they were booked solid with reservations. Gwen and I made a note of its name and location and resolved to try again—it smelled amazing.

  • Distance walked: 8 miles
  • Flights climbed: 18

Friday, 30 Sep 2022: Matosinhos

For breakfast, we went to Swallow Decadent Brunch. Who could pass up a place with a name like that? Gwen said it was overpriced, but I thought it was a decent value. Good food, and another overkill breakfast. Pancakes, eggs, bacon, potatoes, fruit.

We took a streetcar to the nearby beach town of Matosinhos to spend the day. Walked along the beach for a while. I know that Portugal is supposed to have good surfing, and indeed, we did see some guys taking a surfing lesson there. We stopped in a market and made the rounds, picking up a croissant and a loaf of bread, and a few pieces of fruit. The greengrocer had huge, red persimmons. We bought one and ate it just outside, and then had to go back in to clean ourselves up because it was so messy. But good. After a lot of reading about people with gluten intolerance Gwen decided it was time to experiment and enjoyed her first bit of croissant in 11+ years. Then we walked down the main drag, which felt a bit old and frumpy, before returning to Porto.

For dinner, we had reservations at A Despensa. This was a bit of a splurge, but it was worth it. Excellent food.

It was Friday night, and for the first time we saw that Porto does seem to have some nightlife (not that Gwen and I are party-all-night clubgoers). I also noted with interest that even young women dressed for a night on the town mostly wear very practical shoes—Chuck Taylors seem to be a favorite. I wonder if the rubber compound on the sole grips cobbles especially well. Considering how treacherous the streets are, this is probably just a basic survival adaptation, but practicality doesn’t always get in the way of fashion. I kept half an eye out after this and saw very few women in heels, and not preposterous ones at that.

  • Distance walked: 8.5 miles
  • Flights climbed: 32

Saturday, 1 Oct 2022: Porto

For lunch, we made our way back to the “meat place”, Stramuntana, and discovered that they were fully booked with reservations even just for lunch. But upon learning that we were from the U.S., the maitre-d moved some things around and seated us. The place seems like it’s mostly popular with locals—only one English-speaking waiter—and it’s one of the few places we went that had the kind of service we’d read is typical in Portugal, where they just start bringing food and you send back what you don’t want. The place had a single menu, written on a small chalkboard, that the waiter brought around. We had entrecôte of beef for two, served with soupy rice and homemade potato chips. Appetizers were olives, cheese, bread, a simmered pork dish called rojões that was amazing (we looked up recipes, and we don’t think this was a typical preparation), and some kind of codfish fritter. A memorable meal. We were seated on the balcony and a little tortoiseshell cat came around—the only friendly cat we encountered in Portugal—begging for table scraps. There was also a small animal pen just over the balcony wall with a tiny goat, a muscovy duck, and possibly other livestock.

We also visited the Cemitério de Agramonte. And took in “the world’s most beautiful McDonalds.”

  • Distance walked: 8 miles
  • Flights climbed: 22

Sunday, 2 Oct 2022: Transit

We took the train back from Porto to Lisboa. When we arrived at the train station in Porto, there was a get-together for the local air-cooled VW enthusiasts, and we had a few spare minutes to ogle their cars. Two or three were old enough that they used semaphore turning signals, and they all seemed to be in great shape—not garage queens, but regularly used and carefully maintained.

Our train wound up being delayed en route by a jumper on the line. Our Airbnb host in Lisboa had to hand off the keys in person, and I suspect this threw a wrench in his own plans, but he was nothing but gracious and friendly when we arrived.

The place we were staying was…kind of weird. Very small, very low ceilings, weirdly chopped-up spaces. I halfway suspect that it had been an outdoor area that was recently enclosed. The neighborhood was rough and did not show Lisboa in its best light. A lot of trash. The most direct route to the apartment took us up a staircase, which would obviously be a hard place to collect trash, and indeed, there was a lot of trash on it. Even at designated collection points, there was a lot of trash not getting picked up. Cigarette butts and dogshit everywhere.

But there was also a public square nearby with a few restaurants, and we wound up eating at three of them and enjoying all of them. On this day, we went to a place that seemingly had only outdoor seating called Joana’s. Nothing special.

We went to the neighborhood grocery store and picked up a few things to have in the apartment. Going to grocery stores in foreign countries is always interesting, and this was no exception. It was a small store—maybe 2000 sqft. One of the things we found (and that Gwen bought) was tiny tins of sardine paste.

  • Distance walked: 4 miles
  • Flights climbed: 16

Monday, 3 Oct 2022: Lisboa

We hit the Castelo São Jorge, a massive, ancient complex looking out over the city. In its vicinity, we also stopped in an antique store that had a lot of old Catholic kitsch, but Gwen was especially taken with tiny clay figures that resemble some netsuke I’ve inherited. We made a note of the place’s location.

For dinner, Gwen wanted pizza. She’s been gluten-free for about 11 years, but there’s anecdotal evidence that a lot of Americans with non-celiac gluten sensitivity are not reacting to gluten per se, but to something else, and whatever that something else is, it isn’t present in European wheat. So these people can consume gluten in Europe. With that in mind, Gwen experimented with eating wheat on this trip, and when that worked out ok, she dove in.

Unfortunately, we were thwarted our attempts at finding pizza. One place we tried was no longer a pizzaria. Another was just a take-out place. And so on. Eventually we wound up at a neighborhood place, Maria Food Hub, that was pretty good but nothing special. No pizza.

  • Distance walked: 8.5 miles
  • Flights climbed: 19

Tuesday, 4 Oct 2022: Lisboa

We started with the flea market, which is held Tuesdays and Saturdays. It’s huge. It just…keeps…going. There’s a lot of crap, as one might expect. Probably six vendors all selling the same hippie wear made in Guatemala and India. But there were a few interesting vendors. I got a kick out of one guy selling lobby cards for 70s-era porno films. Gwen found a pair of square hoop earrings, something she’s been seeking for about twenty years in case she loses the pair she’s been wearing…for twenty years.

We went out to LX Factory, a funky commercial development in a disused industrial sector, where we found a record store called Jazz Messengers in what had been a printing press (the press equipment was still present, clearly more expensive to move than it was worth). It happened to be the 40th anniversary of the sale of the first compact disc, so to commemorate, I bought a few.

Our next stop was the National Coach Museum. This is a museum of horse-drawn carriages. Fancy ones used by royalty in particular. I’ve decided these were the original art cars. They were pretty amazing: as nerdy as this sounds, it was a lot to take in.

For a late lunch, we stopped at Time Out Market, a giant food court, where we finally got that pizza, as well as some pastries. For dinner, we went to a place on the neighborhood square, Josephine’s, where I had a ridiculous cheeseburger with a fried egg on it.

  • Distance walked: 8 miles
  • Flights climbed: 34

Wednesday, 5 Oct 2022: Lisboa

We started with the Decorative Arts Museum today. This was another museum you can only see by guided tour, which was a little odd, because it was clearly set up for free-range visitors. When we got there, we were informed that a tour had started six minutes before, but we could join it. But there were no other visitors in the museum at all, so we hadn’t missed anything. We kind of felt hustled through this place—we could have easily spent more time there.

Everyone said we should check out the Santa Justa lift for its incredible neo-Gothic architecture. It was a really gorgeous structure, though the line to go up was ridiculously long. We walked up the hill to the top, great view of the city. Cafe Brasilero was in the neighborhood so we peeked in but didn’t feel like joining the throngs there.

At some point we found ourselves back at that antique place, so we stopped in and Gwen bought those clay figures.

Next, to the Calouste Gulbenkian Museum. This is situated in an extensive park with a meandering path through it—we actually had a hard time finding the entrance because we were approaching from the wrong direction. But there’s so little greenery in the cores of either Porto or Lisboa that without realizing it, I was really missing it, and spending just a little time in that environment recharged my batteries. The way that park is laid out, there are numerous little semi-private diverticulations with benches along the path, so numerous people could have small get-togethers and feel like they’ve got a bit of park to themselves. There are also broad open areas that were getting a lot of use. The whole place seems like an important asset for city-dwellers.

There are two exhibition spaces on the grounds (and it looks like they’re building a third), one for modern art and one for not; we went to see the not modern art. It was an idiosyncratic collection of ancient devotional Christian and Islamic art, Chinese porcelain, Japanese inro, Baroque-era paintings and sculpture, a large decorative-arts section, and a really stunning Lalique exhibition.

Both of these museums started out as a rich guy’s art collection, sort of like the Barnes Collection in Philadelphia.

The train stop for the Gulbenkian was right across from a place Gwen had wanted to try called Rice Me Deli, as well as an El Corte Ingles department store, so we after the Gulbenkian, we stopped for a snack at Rice Me, and then to Corte Ingles to explore a bit. Gwen tried on some shoes, and we went to the basement grocery store which was big and full of stuff. Picked up a few things to bring home.

For dinner, we went to a semi-fancy place on the neighborhood square called Infame. It was really good. We had a duck and rice dish and felt like the Portugese while known for their fish most definitely know how to cook meat!

  • Distance walked: 7.5 miles
  • Flights climbed: 25

Thursday, 6 Oct 2022: Sintra

Sintra is about half an hour outside Lisboa, and has the feeling of a mountain town originally developed as a playground for the rich. That said, it has been inhabited since your ancestors’ knuckles were dragging, and was recognized by Caesar around 49 B.C., so there’s some history there. It’s difficult to visit except as part of an organized tour, so that’s what we did, despite our general suspicion of such things. The town is now very tourism-oriented and very full of tourists, even during the off-season.

The tour we went on took us to two locations: Palácio Nacional de Pena and Quinta da Regaleira. Pena Palace was a retreat for the monarch, and Quinta da Regaleira was built at the beginning of the 20th century by a rich guy. In both cases, the builders didn’t miss any opportunity for ornament. Both places were kind of whimsical and weird, and although we didn’t get a chance to visit any other places in Sintra, from what we saw in passing, there were more examples of the same. I had not been especially interested in going to Sintra beforehand, but was really glad we did.

For our last night in Lisbon, we found a random typical Portuguese place. Gwen had grilled sardines again (these are much bigger than the sardines you’re imagining), I had some kind of pork dish. This was one of the few places we had to interact using only our limited Portuguese.

  • Distance walked: 9 miles
  • Flights climbed: 20

Friday, 7 Oct 2022: Transit

The advice to travellers that we found told us we should get to Lisboa’s airport four hours before our flight, which sounds crazy, but we didn’t want to risk anything, so we did. Once we got there, we found that it was noisy and hectic but pretty efficient, and in fact four hours was way more time than we needed. International travel is all about herding passengers through a series of controls, and those controls are different in different countries. This being our first time departing Portugal, we didn’t really know what to expect. In this case, we went through a ticket check fairly early, and then were perplexed when it wasn’t obvious where we should go next—the next thing in our path was a huge duty-free shop. Eventually we realized we had to run the DFS gauntlet to continue. I’ve never seen retailing quite so aggressive as that.

We made it to passport control, and there were separate lines for passports with embedded RFID chips (basically any new-ish passport), which are much shorter.

Once we located our gate, we worked our way back to a restaurant and had coffee. We found ourselves seated next to a couple of Spanish guys who were totally fucking plowed and having a great time. This was at about 10 AM, mind you. On our way back to the gate, we walked by the airport outlet of O Mundo Fantástico das Conservas Portugesa. This is a chain of tinned-sardine shops that have a carnival theme—you’d expect them to be selling candy based on appearances. They had an instagram-bait throne, so of course I took Gwen’s picture on it.

After we got seated near the gate, they shooed us all out of the gate area, put up a cordon, and had us go through another passport check in order to get back into the gate area. I’m guessing this was a US government requirement.


Bubka and Masha

Gwen and I adopted Bubka (left) and her sister Masha in November 2008, when they were about three months old. When Gwen and I got together, she had two cats and I had one; by the time we adopted the girls, old age had taken two of our old cats and the surviving cat, Kevin, was lonely.

On our way to the cat-rescue place, Gwen said, “I don’t want to get a kitten.” We wound up with two. They were both so easygoing and affectionate it seems inevitable in hindsight. We named Bubka after the famous Ukrainian pole-vaulter, Sergey Bubka, because she was such an energetic jumper when she was little. She grew out of that eventually and became mostly placid.

Bubka took to Kevin immediately. He was initially stand-offish toward both the new kids, but she wore him down after just a few days, and her companionship made his remaining years much happier.

Because they looked so much alike, it was hard to tell them apart at a glance, and we took to calling both Masha and Bubka “kitten,” especially when they were being naughty. And because they were separated from their mother before they were weaned, they continued to exhibit kittenish behavior all their lives. We never stopped calling either of them “kitten.”

Gwen insists I was Bubka’s favorite person, and she’s probably right. She would jump up on the bed in the morning and swat at my nose or bite my ear to get my attention. Once I was up, she would insist on being carried around for a few minutes. If Gwen and I were watching TV from the couch, she’d often be perched on the back cushion behind my head.

Bubka had been diagnosed with kidney disease years ago, but her condition had been stable up until about March, when she had a health crisis. She spent a few days at the vet and we learned that her kidney function had declined suddenly. We managed her health aggressively with drugs and subcutaneous fluids we administered at home, but we knew her condition was only going to get worse. For a while, it seemed she was getting worse very gradually, but by the time it was ready for us to go to Flipside, we could tell her decline was accelerating. On the Saturday of Flipside, Gwen came home, and the day after, I returned for the day so that we could euthanize her. It was clear the moment I saw her that it was time. She was very weak—she couldn’t walk more than a few steps at once. She had no interest in food. Her meow was all wrong. Her life wasn’t as long as it should have been, but it was the best possible version of her life.

Masha and Bubka were inseparable, cuddling together or tussling in what we called “pillow fights” due to their well-cushioned physiques. I have no idea how Masha will cope with her sister’s absence, but she had been avoiding Bubka as she declined over the past couple of months, perhaps out of some instinct to avoid disease.

Gwen and I are both wrecked. We’ve had a fair amount of practice with this. It never gets easier. I’ve been thinking about grief a lot, and why it is that we feel it so intensely with the death of a pet. I don’t know that I have the answer, but maybe it’s this: we’re responsible for everything in the lives of our pets. We make all the decisions, and want all of those decisions to be in their best interests. In this respect, they’re like children. But unlike children, we generally outlive them, and when the time comes to make the last decision—to euthanize them—there is no option that doesn’t feel like a betrayal. They’re constant presences in our lives for a long time, and love us uncritically, and when the end comes, there’s nothing we can do for them.

Universal follow-up

I recently read The Case for ‘Mark as Unread’ in Messages at Daring Fireball. It seems like a reasonable idea, but doesn’t go far enough.

I have used “mark as unread” in Mail as a signal to come back to a message for further attention, but I prefer not to. I want unread status to indicate that something is, you know, unread. I do use the intensely nerdy Smallcubed Mailsuite, which lets me tag messages for future action, and Mail natively has flags. Either of those seem like a better option than “mark as unread.”

But also, we use a lot of different messaging-type apps in this modern world, and we need a way to remind ourselves to follow up on messages in all of them.

So here’s an idea: a universal follow-up queue. Apps would give you a command for sending a message to your follow-up queue. I imagine this would be implemented as a special view in the Reminders app. Here’s my idea of what it would look like:

Universal follow-up queue screenshot

The list gives a few sorting options seen at the top.

Each card shows the name, avatar, subject line/channel/conversation name (as appropriate), source app, the time added to the queue, and some preview body text. A red dog-ear in the corner indicates that a “time due” has been set.

Hovering over a card shows actions that can be taken. From left to right:

  • Set a time due (shows time due if already set).
  • Send to a different follow-up queue. This may be excessively fussy, but lots of people manage multiple to-do lists.
  • View the original message in the source app.
  • Share the original message.
  • Respond to the original message.

David Rice, 1935–2022

David Rice at wedding

My dad died yesterday. He’d had a number of health problems over the past year or so, and had declined considerably. The last 10 days of his life were spent in hospice, doped up and dreaming restlessly. It is not how he wanted to go, and I’ve been very upset about that. I had time to grieve him while he was still alive, and now his death is more of a relief.

I always had a good relationship with him, but in some ways I feel like I didn’t know him very well. He never spoke about his interior life. He occasionally revealed tidbits about his life as a child and young man, but these paint a very fragmentary picture.

But I do feel like I knew him on an intuitive level—what was important to him, how he’d react to things. And I know that in a thousand ways I’m not even conscious of myself, I am a lot like him. Gwen sometimes stops me when I say something and tells me that what I just said was exactly what he would say, as he would say it.

In the last few days of my dad’s mother’s life, I said something like “she can’t die, she’s a force of nature,” and he agreed. I’m feeling that way again—it’s as if I’ve had a view of a mountain out my window every day of my life, and that mountain has disappeared. It’s disorienting. It affronts my sense of how the world works. I’ll have to get used to it.

I’ll revisit this post and fill it in as ideas come to me.

Pace Bend Ultra 2022

On February 5–6, I competed in the Pace Bend Ultra. There were a number of divisions: 6-hour, 12-hour, 24-hour, solo and teams, men, women, and mixed (for teams). The idea is you ride around a loop as many times as you can until you reach your time limit. I competed in the 24-hour solo division. This was my first attempt at anything like this.

This would have been difficult under ideal conditions, and the conditions were not ideal. The overnight low was forecast to be 25°F; I had the temperature displayed on my bike-computer app, and when it was showing 31°F, I heard that the actual temperature measured on the course was 27°F. That’s really cold. I’ve commuted at roughly that temperature, but my bike commute takes 22 minutes each way. I was very anxious about the cold in the days before the race, and I wasn’t sure if my preparations would be adequate.

The course is a 6.2-mile loop inside Pace Bend Park, about an hour’s drive outside of Austin. Apparently the course used to be notorious for it’s “meteor impact” pavement, but a couple of years ago it was resurfaced, and is currently pretty nice.

The race started at noon on Saturday, with all the 12-hour and 24-hour riders departing together. This being a time trial, drafting is not allowed, but because of the relatively crowded mass start, we had a pass for the first lap.

My first two laps I was running hot—the trick with distance riding is to keep your level of exertion in a limited range—not too high, so you don’t burn all your matches prematurely. I was a little worried about that, but by the third lap, I was able to get it under control. I later heard from another racer who felt the same.

I had looked at the course elevation profile beforehand, and was not too concerned about the hills: 312 feet of climbing per lap, or about 50 feet per mile. No big deal. What I didn’t realize until I was a few laps into it is that while none of the hills are particularly difficult, you’re never not on a hill. You never have a chance to hunker down and motor. I was constantly finding I was in the wrong gear.

My fueling strategy worked pretty well. I spent a fair amount of time researching that, and while I learned a lot, I ultimately went with my gut (sorry). I made up a batch of big oatmeal-raisin cookies, and a bunch of small chicken-salad tacos. Every 2nd and 4th lap, I would eat a cookie, and every 6th lap I would eat a taco. I would need to pull into my pit station to eat the taco, which was fine—on the advice of a more experienced ultra rider, I planned on taking a pit stop every six laps anyhow; I’d refill the cookies I was carrying when I did that. Eating the cookies while riding was a little more difficult to manage than I anticipated, but I’m sure I could solve that problem. My hunger went up and down—there were points when I was really hungry, and then later, not too hungry. I was able to stick to this eating schedule pretty closely for all my time on the bike, but once it got dark, I decided it would be better to stop to eat my cookies than to eat them on the fly. I thought about using liquid fuel, and ultimately decided against. During training, I experimented with some liquid options, and they didn’t sit well in my stomach. I also tend to under-hydrate, so even on a hot ride, I wouldn’t get a lot of calories that way. According to the Training Peaks estimate (I don’t have a power meter on my bike), I burned 10,500 calories, which sounds about right. About half of that probably came from stored fat (which would be less than 2 lb).

At 6 hours, I felt like there was a turning point in the event. It was getting dark and cold, everyone had burned off the last shred of nervous energy, and we were all settling into the pace that we’d maintain for the rest of the race. It was at about this point that I started adding layers for warmth. I started out wearing a high-tech base layer, a jacket, cold-weather shorts, leg warmers, cool-weather gloves, insulating wool socks, and lightweight booties. At around this point, I added a beanie under my helmet and a wool base layer. Later I would add a fleece neck buff, my rain jacket, and a pair of running tights; I also swapped my gloves for warmer ones.

At 11 hours, I discovered the warming tent. It was not especially warm—I could see my breath in there—but it was warmer. It wasn’t provided by the event organizers, but by a team: there were some people helping their teammates providing de-facto neutral support, and they gave me soup and hot chocolate in addition to a warm place to sit and socialize with other racers taking breaks.

At 12 hours, I had all my extra layers on and still couldn’t get warm—I was shivering uncontrollably in my core. One of the guys in the warming tent who was there in a support capacity lent me his jacket (which was big enough to fit over the 4 layers I was already wearing) and it made a huge difference.

At 13 hours, I was riding a little erratically on the road, and I was really worried about my ability to ride through the coldest part of the night. When I stopped in the warming tent, I realized I could take a nap and just sleep through that part, and I gave myself permission to do that. My attitude and riding improved immediately.

At 15 hours, I decided to take that nap in the warming tent, where there was a cot. I had a sleeping bag with me, but I never really got comfortable enough to sleep. It was miserable. At some point I moved from the cot to a reclining folding chair, and while I didn’t sleep there either, I found it more restful.

At 20 hours, just before 8 AM, I ended my pretend-nap, at which point the sun was out and the temperature had risen to the freezing point. I was not very refreshed, but I was riding a lot better than when I had stopped for my so-called nap.

At 21 hours, the 6-hour division started. While there were obviously some hardcore time-trialists in the 12- and 24-hour divisions, the 6-hour division had a higher percentage—I think that was the only division where people were using disk wheels. They would rocket past me on their TT bikes like I was standing still. There was also one hapless guy in the 6-hour division who must have seen an ad for the event and thought “that sounds like fun.” He was riding a hybrid, wearing basketball shorts and knee socks. It was clear he was not an experienced rider. I think he rode two or three laps and packed it in. I can only imagine how he felt lining up at the start with guys who looked like they were riding spaceships.

Gwen also showed up around this time with food. She crammed a homemade biscuit with gravy in my mouth. I was glad to see her.

At 23 hours and 15 minutes, I packed it in. At that point, my lap time was about 30 minutes (partial laps are not counted), so I could have squeezed in one more lap, but I was starting to ride erratically, and decided it wasn’t worth it.

At the end of the race, I learned that I was one of only two competitors who didn’t have a car to warm up in. I think that made a difference. There’s no telling how I would have fared if I had been able to warm up every few laps, or if I had been better insulated, but if I had ridden through that five-hour pretend nap at my last-lap pace, my distance would have been right around 300 miles, which I had predicted to be my “realistic-optimistic” distance.

I knew, but kind of forgot, that my body cannot regulate its temperature when I’m exhausted: if it’s the slightest bit cold, it’s hard for me to warm up. I definitely experienced that in the race. Part of the problem is that as I get worn out, I can’t push myself as hard and can’t raise my heart rate, so I’m generating less heat, but there’s something else at work too. I’ll need to be careful to be better insulated if I do anything like this again.

Final results: 241.8 miles, 39 laps. 2nd place in the men’s solo 24-hour upright-bike division (out of five), first in my age group. My actual time in motion was 15:34.

Get Out

A couple of days ago, Democrats attempted to pass voting-rights legislation. They failed. They failed because Joe Manchin and Kirsten Sinema hate freedom, and because the GOP has become an openly anti-democratic party. During GWB’s administration, the party openly defied their own president and doubled down on racism as a party position. It’s only gotten worse since then. They know that demography makes it impossible for them to win in democratic elections, so democracy must go. And with trump, the party has gone from merely evil to evil and crazy.

Thanks to widespread efforts in state legislatures, we can expect that future elections will not represent the will of the people in those states. The 2022 midterm elections will be a trial run to see how far these new election-subversion laws can go, and depending on the outcome, more states may pursue these measures, and existing measures may be pushed further. The current Supreme Court has shown it is not overly concerned with defending voting rights. The 2024 election will be the big show. What happens then?

Timothy Snyder, a scholar who studies tyranny, writes that the USA will collapse into civil war. Another scholar, writing for Canada’s Globe and Mail, warns Canada to be ready for its southern neighbor to slide into full-blown fascism. This, to my mind, seems like a more likely scenario.

In either case, I won’t stick around to see it happen. I’ve obtained Irish citizenship, thanks to a grandparent having been born there. I’ve started researching the practical details of moving there (or somewhere else in the EU), with an eye toward being ready to leave by 20 Jan 2024.

I was raised with the Holocaust looming like a distant mountain visible in the rearview mirror. I imagine this is true for most Jewish people my age.

The car is turning around now.

I know I am lucky to have the escape option that I do and the means to make use of it. Not all of my friends do. But I urge all my friends to think about whatever escape plans might work for them.

I have been thinking about this for a while and have been putting off setting these words down because that makes it more real, and that has upset me too much. But it is time.

Experiments mounting a phone to clip-on bars

I’ve been playing around with the best way to mount my phone and headlight on the aerobars of my distance bike. This is a weird setup: most cyclists use bike computers that are considerably smaller than my iPhone 11, most don’t also have a bike light hanging from the same mount, and most definitely don’t have both of those mounted to clip-on bars instead of their regular handlebars.

I started with this bridge-style mount I found on AliExpress. It’s a mixed bag. The aluminum parts—the bridge, the computer-mount base, and the GoPro mount—are well made. The plastic parts—the bar clamps and Garmin mounting “biscuit”—are worthless: both the Garmin base and clamps quickly cracked. I like the bridge design, and thought it might give me more flexibility to mount other stuff, but in reality, it gets pretty crowded on the bars, and having two clamping points just makes it harder to adjust the clip-on bars.

I wound up getting Kevin Brown to machine a couple of very skookum aluminum clamps to replace the original plastic clamps, and I used the business end of a QuadLock intended for a motorcycle to replace the original mounting base; this is reinforced with some Sugru to stabilize it on the bridge.

This works. This is the setup I used in my abbreviated attempt at TABR 2021, and it didn’t give me any trouble. It is absolutely stable, but it is kind of heavy for what it is: 124 g.

The QuadLock mounting mechanism is excellent. I tried using the QuadLock mount by itself, but couldn’t quite get the phone positioned right, and in any case that didn’t give me a way to mount my headlight. There’s an articulated arm between the Quadlock mechanism and the bar clamp with toothed interfaces at each end, so that the angles between parts are stepped; the arm also has a little rise to it. The mount is all injection-molded plastic, and is probably adequate but nothing special. In hindsight, it looks like using a QuadLock out front mount pro sideways on a clip-on bar might work.

I then tried out this mount from 76 Projects. This is all 3D-printed and shot-peened plastic (a manufacturing method I’ve never heard of before), except for the screws that hold it together. It clocks in at 47 g. It uses velcro straps to mount to the bars, and comes with a set of spacer tubes to make up the space between the central mount and the strap blocks. Getting the spacers exactly right is fiddly, but you only need to do it once. The spacers and central mount fit together with toothed interfaces, and this is the only clip-on bar setup I’ve seen that lets you adjust the angle at which the phone faces you.

The 76 Projects mount is made of a much higher grade of plastic than came with my AliExpress mount (I also ordered a Garmin stick-on adapter for my phone from 76 Projects, which is similar): despite also using a Garmin mount, I haven’t had any problems with that. The problem I do have with this mount is that it it’s not rigid: either the velcro straps have a little play, or the stacks of spacers do, so the whole assembly wobbles a bit, probably exacerbated by the weight I’ve got on it. This is more of an issue for me because I have a headlight hanging from the GoPro mount on the bottom, cantilevered on a short extension, and it’s distracting to have the beam wobble up and down.

I backed a Kickstarter project from Peak Design and wound up with their out front mount. This clocks in at 101 g with the GoPro attachment. Normally I wouldn’t use an out front mount with clip-on bars: it would need to be located between a clip-on bar and the stem; this would force the bars to be moved outboard, which I don’t want to do. This one, however, comes with 7/8″ shims (which fit clip-on bars); the mounting surface works when rotated 90°; and by a stroke of luck, when mounted to my clip-on bars, this almost perfectly centers the mount: my clip-on bars are spaced 124 mm OC, and the Peak Design’s mounting surface winds up being 65 mm inboard. That 3-mm deviation from center doesn’t trigger OCD for me; for anyone who wanted to use this system on bars spaced much differently, their motorcycle bar mount puts the mounting surface on an articulated arm (somewhat like the QuadLock one), so it should be possible to center. The out front mount is pretty beefy, and the motorcycle mount is heavier still.

This mount is nicely made and well thought out, with all the major parts being aluminum. Everything feels very precise and substantial; the GoPro mount fits in place of a little conical washer and snugs up just so. The attachment mechanism is clever: magnets snap the phone to the mounting surface in exactly the right position, and two spring-loaded claws click into recesses in the phone case/adapter. It’s very satisfying and easy to clip the phone on. Two buttons on the underside of the mount retract the claws for removing the phone (only one claw really needs to be retracted). I found that the release buttons were easy to operate with thin gloves on, but might be a problem with more heavily insulated gloves.

I did find that without having the clamp really tight, the mount did rotate slightly after riding on rough roads. It would probably be a good idea to put a strip of helicopter tape on the bar to provide a little traction, especially if you’re using carbon bars that shouldn’t have too much clamping force applied.

This is the first one-sided mount I’ve really used on this bike, and once I got it set up, I realized that my clip-on bars are splayed out slightly, so in addition to being slightly off-center, my phone winds up being angled parallel to one bar. This will be easy to fix, but using a bridge design sidesteps the problem. I really like this attachment mechanism and will probably wind up tinkering to see if I can improve the connection to the bars.

None of these weights include the cases/adapters that goes on the phone, but those weights are minimal.

For a while, I have been noodling over the idea of an accessory mounting plate that would secure to the clip-on bars at four corners. All of the loads could be attached inboard of the corners rather than cantilevered, so each attachment point could be lighter—perhaps just a velcro strap and rubber bumper. Bikepacking racers frequently have a bunch of stuff on their bars—some combination of two headlights, two bike computers, a water bottle, a Spot tracker, a GoPro camera. If you could get even half of that stuff on a single plate, you’d be ahead of the game.

New Mac adventures

I recently bought one of the new Macbook Pros. This is the first time I’ve bought a new computer that I knew was way more computer than I needed. But I tend to hang onto computers for a while, and by the time I replace this, it will probably be showing its age. I realized when I bought this that Apple has now been through 4 processor families (Motorola 68K, PowerPC, Intel, and now Apple Silicon), and I’ve had two daily-driver computers in each of the previous families (plus a couple of laptops that were secondary computers), starting with the original 128 KB Mac.

I had been waiting on the announcement of the new series of Macbook Pros, and ordered one as soon as it was announced. There was a considerable delivery delay (it travelled from Shanghai to another city in China, waited there for about a week, then in rapid succession to Incheon, Anchorage, Louisville, Austin, San Antonio, and Austin again), so I had plenty of time to prepare for the transition, and had a document where I gathered notes.


I made the decision not to use Apple’s Migration Assistant. It’s excellent, but I had years of cruft on my old drive and wanted to be more deliberate about what ended up on my new drive. In the end, this worked pretty well, but did take some work.

This post on using a shell script with Homebrew was very useful and saved me a bunch of time with setup. I’d already been using Homebrew, mostly for command-line programs, but I am happy to use Homebrew to manage desktop apps too. I did need to go through the list of desktop apps that can be installed with Homebrew, and make my own list of apps that I wanted to install.

One thing that didn’t work for me is inheriting my old Time Machine backup. I followed these instructions, but the process failed. I’ve still got the old Time Machine database and can navigate it in the Finder, and I have a lot of room on that drive, so I’m using it for the new Time Machine database. This is less than ideal, but I’ve nuked old Time Machine backups before without losing sleep.

One thing I overlooked in the migration process was some of the fonts. I have most of my (non-system) fonts managed by Rightfont, but there were a few third-party fonts that were installed with my system fonts, and I still need to recover those.

Other than that, I manually copied over everything in my home folder, except that I intentionally did not copy of the Library folder. I did copy a few specific items inside it.


One weird problem I had was with my trackpad. I have been using one of Apple’s older freestanding trackpads for a long time, and I think there was an incompatibility between the old trackpad and the new trackpad software (which enables “force clicks”), possibly exacerbated by the excellent BetterTouchTool: I was seeing a lot of “ghost clicks,” which was not something I could live with. I replaced my old trackpad with a new one and the problem disappeared.

As a test, I tried plugging in the Mac to a third-party USB-C charger with a third-party cable while it was running. This charger nominally supplies slightly less wattage than the factory original (60 W vs 67 W), but the laptop seemed to be staying at 100% charge. I need to do more testing, but this seemed to trigger a weird and seemingly unrelated problem: files I downloaded after plugging into that charger could not be opened or deleted. Plugging in the stock charger and rebooting solved the problem.

The new Macbook Pro has a fingerprint sensor. In theory, this is great, but in practice, sometimes it doesn’t want to read. I haven’t figured out what causes this.

Notifications stopped unexpectedly. Apparently this is a fairly common problem. Killing the NotificationCenter process via Activity Monitor seems to fix it.


Two days ago, the new machine had a major freakout, showing the same symptoms described in this article: the screen would flash pink, then it would reboot; it continued rebooting at roughly 1-minute intervals. I managed to boot it into the recovery partition and ran Disk First Aid. No problem there. Tried doing all the finger-gymnastics to zap PRAM and reset the SMC. Initially this didn’t seem to help, but after a few more reboots, it seemed normal. This happened around noon. The problem flared up again around 7 PM. I couldn’t fix it, called Apple support, and the tech on the line couldn’t either. One of the problems with the Mac in this state was that it couldn’t see any networks or Bluetooth, so Internet Recovery was not possible.

Went to the Apple store the next day; of course it booted up fine, but we did a nuke-and-pave on the spot (which took longer than expected). If this doesn’t fix it, it’s probably a hardware fault.

Other observations

This thing feels like a tank, at least as Apple products go. It weighs half a pound more than the “Touch Bar” Macbook Pros (3.5 lb vs 3 lb, which feels like a bigger difference than it sounds like), and is very slightly heavier than the 2013-vintage machine it is replacing.

I haven’t gotten used to the Globe key–which also acts as the Function key. An unexpected consequence of it is that the Function key on my external keyboard also acts as the Globe key. I do need to toggle between Japanese and English inputs sometimes, so I can see the benefit of it, but command-space is hardwired into my fingers, so I don’t imagine using it. In playing around, I discovered that I can make a quick tap on the Caps Lock key toggle keyboards–again, I probably wouldn’t prefer that, but it might be a handy option for some.