evanp

His life and times

I asked ChatGPT for an almond flour pancake recipe and this is what it gave me. They turned out great!

This almond flour pancake recipe is a delicious and nutritious alternative to traditional pancakes. It's gluten-free, low carb, and packed with protein, making it perfect for a healthy breakfast or brunch.

Ingredients:

  • 2 cups almond flour
  • ½ teaspoon baking soda
  • ¼ teaspoon salt
  • 2 tablespoons granulated sweetener of choice (such as erythritol, monk fruit sweetener, or coconut sugar for a non-keto option)
  • 4 large eggs
  • ¼ cup unsweetened almond milk (or other milk of choice)
  • 2 tablespoons melted unsalted butter or coconut oil, plus extra for cooking
  • 1 teaspoon vanilla extract
  • Optional: ½ cup blueberries, chocolate chips, or chopped nuts

Instructions:

  1. In a large mixing bowl, whisk together the almond flour, baking soda, salt, and sweetener until well combined.

  2. In a separate bowl, beat the eggs, almond milk, melted butter or coconut oil, and vanilla extract until smooth.

  3. Pour the wet ingredients into the dry ingredients and mix well, until you have a smooth batter. If desired, fold in any optional add-ins, such as blueberries, chocolate chips, or chopped nuts.

  4. Preheat a non-stick skillet or griddle over medium heat. Lightly grease the surface with butter or coconut oil.

  5. Pour about ¼ cup of batter onto the skillet for each pancake. Allow the pancakes to cook until bubbles form on the surface and the edges start to look set, approximately 2-3 minutes. Carefully flip the pancakes and cook for an additional 2-3 minutes on the other side, until they are golden brown and cooked through.

  6. Transfer cooked pancakes to a plate and keep them warm. Repeat the process with the remaining batter, adding more butter or coconut oil to the skillet as needed.

  7. Serve the almond flour pancakes with your favorite toppings, such as fresh fruit, whipped cream, yogurt, or sugar-free maple syrup. Enjoy!

One of the hard things about delivering activities in a social network is making it seem like the subscriber receives the published object (image, video, text, like) almost immediately after the publisher posts it. You can only get two out of three of these things:

  • Near-realtime delivery
  • Large audience lists
  • Low server resources

I call this Prodromou’s Triangle, although it probably already has a name.

The important thing for people writing ActivityPub software is that you don’t really need near-realtime delivery. Most people aren’t on their Mastodon client 24x7x365; they check once every few hours, daily, or less frequently. So, busting your ass to deliver to everyone in under a few seconds is a waste of your effort.

If delivery is going to take a non-trivial amount of time, you should focus on delivering to the people who are going to notice first. So, don’t loop through your addressee list in alphabetical order from aaaaaatowing@aaronsville.example down to zztop@zebra.example. Don’t just take addresses in the random order your database gives them to you. Order them from most likely to notice and complain to least likely.

Here’s a rough ordering of who’s going to notice any delivery delays:

  1. The author. Get it to their inbox and profile ASAP.

  2. Connected addressees. Are any of the addressees currently connected? Send to them next.

  3. Unconnected addressees. Catch up the other addressees next.

  4. Connected local subscribers. They’re more likely to see it, anyway.

  5. Local public timelines. Local and federated, hashtag and search.

  6. Connected remote subscribers. If they’re online, they’re going to notice, so get it to them next.

  7. Public timeline feeds. If you provide remote subscription for your public timeline(s), push now.

  8. Unconnected local subscribers. They’ll get it next time they log in.

  9. Unconnected remote subscribers. They’ll read it some other time.

How can you tell the difference between “connected” and “unconnected” addresses?

  • If they’re local, you can use WebSocket connection status as a sign that they’re connected. If you don’t support WebSockets, you can use last API call, or last Web hit as a proxy.
  • If they’re remote, it’s harder, but you can use last-seen-activity as a proxy. Someone who just liked a photo a few seconds ago is probably still online. Someone who last commented in 2019 probably doesn’t need sub-10-second delivery.

The nice part of this ranking is that it handles direct-messaging pretty nicely. DMs usually go out to a small (<10) group of people, so just delivering to the author and addressees should be quite quick.

I’m happy to hear of other tricks for getting things delivered fast with AP.

We're traveling to the Gulf of Saint Lawrence for a few days to see the ocean and chase whales.

First stop: a Quebecois tradition, the casse-croute.

I got new Vans in the mail today. The old ones have holes in the soles.

This podcast episode from This American Life from last Saturday was eye-opening. It's about the millions of people who stayed on the job during the pandemic.

I think we've had a fundamental shift in how we think about work in North America.

I just finished a rail trip from Paris to Stockholm for Wikimania 2019. I'm trying to do a few things to lower my climate footprint. In particular, I've decided to shift my regional intercity travel to rail, and reserve air travel for intercontinental or transcontinental travel. Air travel has about 10x the carbon load of rail travel. Air travel is responsible for about 27% of greenhouse gas generation, so cutting down air travel can be a big help.

My rough rule of thumb has been that rail trips that are less than about 12 hours are probably OK. They offset air trips that take about that much time anyway; the travel time by air will be much less, but the requirements to get out to an airport well before flight time can push the door-to-door time of air travel really high.

For our trip to Europe this summer, we've done all our travel (except getting here) by rail. Most of the legs of our trips have been on the order of 200-400km, so pretty tractable for trips of 4 to 6 hours. Our longest leg, from Marseilles to Paris, was almost 800km, but the TGV train got us there in less than 4 hours. High-speed rail ftw!

Getting from Paris to Stockholm was a lot harder, though. First, it was almost 1900km from Paris to Stockholm by rail (much shorter by air). With a total of 24 hours of travel time (!), this was much longer than my rule of thumb.

I'd followed Greta Thunberg, the Swedish climate activist who only travels by rail, in her travel around Europe. I'd seen her do this trip before, and I figured it couldn't be that bad. I had the romantic notion that European rail was much easier, faster and more efficient than in North America. Although generally true, this hit a snag just on the complexity of the trip.

I crossed 5 different national borders and used 3 different national rail systems. I wasn't able to find an integrated Web service that could clarify those junctures well, so I had to resolve them manually.

I resolved the problem by taking multiple breaks and spreading the travel over several days. I concentrated on legs of the trip that could be completed by a single national rail line, crossing at most 2 national borders. So my first leg went from Paris to Amsterdam, and was short and simple. I spent the night in Amsterdam and started the next leg the next day.

The leg from Amsterdam to Copenhagen was harder. It was about 14 hours, and had two late-night transfers.

I spent a day in Copenhagen and got another leg from Copenhagen to Stockholm. This was one of the worst; there was a major outage due to a fire between Malmo and Stockholm on the rail lines, so my train was cancelled and I had to take a night train through a much longer route.

Overall, the trip was more time than I wanted to spend, and just a lot more sitting in train seats than I'd normally want to do. I'm going to try to keep my future rail travel under about 500km for conventional rail, and 1000km for high-speed rail.

The learning experience was great, though. I think splitting up the trip into multiple legs and spending an overnight in each city worked well. I'd like to try it for bigger trips in North America, maybe doing a cross-continental trip with 2-4 city stops between Montreal and San Francisco.

I feel like the net outcome was worth it, and I'm proud of giving it a try. I hope that my effort gives my friends and colleagues some ideas for shifting their own air travel to rail. The more of us that do it, the more likely that the infrastructure shifts to make it easier and faster for everyone.

I had a talk with my daughter AJ yesterday about travel as we walked on the streets of Paris.

I was telling her how much international travel had mattered to her mother and me. How we had found a purpose and a perspective through travel, and how it guided our life choices since we first left our home country. We've prioritised being abroad over other goals, and although we've missed some opportunities because of that, we did so with intent.

I told her that one point of taking trips while she and her brother are young is to offer this same experience to them. We want them to know what the world is like and that it's available to them to explore.

But I'm not sure that opportunity is as open to them as it was to us. We came of age after airline deregulation in the US drove prices down so that young middle class people could aspire to international travel. The end of the Cold War and confirmation of the US as a solo superpower made it easier to explore more of the world than ever before.

My grandfather kept a bag in his back pocket where he carefully stored all his coins. He used those savings for a trip to Europe in his seventies — his first ever. In contrast, I went to Europe in 1990 for the first time and I count my visits in the dozens in the subsequent years.

I'm not sure if my kids will have the same opportunity. Climate change has made air travel less acceptable to young people of my daughter's generation. Without some major technological advance, social and economic pressures are going to make air travel much less common in the coming decades.

A rise in nationalism and a decline in cosmopolitan globalism may increase the friction of crossing borders. Tariffs, visas, and restrictions are a cheap win for national demagogues, and there are few organizations advocating for travelers.

I hope that some of the economic surplus that comes in the next few decades from automation is devoted to comparatively longer and slower travel. My kids may take more train rides for regional travel, with airplanes reserved for going between or across continents.

They may also do more travel by sea. I've only done a few days by ferry or cruise ship here and there in the Baltic or Mediterranean. I think my kids are likely to take at least one Transatlantic trip on the water.

I want for my kids to enjoy the world's treasures first-hand the way I have. I hope that the next generation has the chance to weave together a global culture and economy the way my generation has.

I had a talk with my daughter AJ yesterday about travel as we walked on the streets of Paris.

I was telling her how much international travel had mattered to her mother and me. How we had found a purpose and a perspective through travel, and how it guided our life choices since we first left our home country. We've prioritised being abroad over other goals, and although we've missed some opportunities because of that, we did so with intent.

I told her that one point of taking trips while she and her brother are young is to offer this same experience to them. We want them to know what the world is like and that it's available to them to explore.

But I'm not sure that opportunity is as open to them as it was to us. We came of age after airline deregulation in the US drove prices down so that young middle class people could aspire to international travel. The end of the Cold War and confirmation of the US as a solo superpower made it easier to explore more of the world than ever before.

My grandfather kept a bag in his back pocket where he carefully stored all his coins. He used those savings for a trip to Europe in his seventies — his first ever. In contrast, I went to Europe in 1990 for the first time and I count my visits in the dozens in the subsequent years.

I'm not sure if my kids will have the same opportunity. Climate change has made air travel less acceptable to young people of my daughter's generation. Without some major technological advance, social and economic pressures are going to make air travel much less common in the coming decades.

A rise in nationalism and a decline in cosmopolitan globalism may increase the friction of crossing borders. Tariffs, visas, and restrictions are a cheap win for national demagogues, and there are few organizations advocating for travelers.

I hope that some of the economic surplus that comes in the next few decades from automation is devoted to comparatively longer and slower travel. My kids may take more train rides for regional travel, with airplanes reserved for going between or across continents.

They may also do more travel by sea. I've only done a few days by ferry or cruise ship here and there in the Baltic or Mediterranean. I think my kids are likely to take at least one Transatlantic trip on the water.

I want for my kids to enjoy the world's treasures first-hand the way I have. I hope that the next generation has the chance to weave together a global culture and economy the way my generation has.

I've been really interested in the Fridays for the Future school strikes happening in Europe and North America. My 13-year-old daughter is participating this week for the second Friday in a row. Protesting in Montreal in -15C temperatures is a real feat of commitment.

I am simultaneously excited and horrified by this effort as well as US students advocating for a Green New Deal. Excited, because for once people are discussing full solutions that address scientific consensus on climate change. Horrified, because I'm the type of person they are protesting against.

My generation has known about the importance of environmental issues since childhood in the 1960s and 1970s, but we have not put effort into solving climate change. We've run up against a brick wall of climate denial and government inaction, and we've allowed those impediments to let us fall back into comforting apathy, sardonic pessimism and inexcusable inaction.

The student strikers are sick of our bullshit, and rightly so. To someone like me, born in 1968, dates like 2050 or 2100 seem like infinity many years away. Surely some superior Future People will figure this climate thing out? Or else they'll live in cool dome cities on the surface of a burning earth. Escape to space. Retreat into virtual reality.

My kids (born 2005 and 2008 respectively) are going to be in the prime of life in 2050. They will be having children of their own, if they choose to. They are pretty great, but they are not sci-fi superheroes. They don't have magic wands or proposed super-technology.

They will be living in a world made by my own actions or lack thereof. They do not like their prospects right now, and they rightly claim that their life and lifestyle in 2050 depends on our decisions in 1980, 2000, and 2020.

The adults of the present with even a modicum of power — money, votes, and social capital — need to wake up, listen to these kids, and do what it takes to stop climate change. The worst thing to do is cheer these kids on from the sidelines. They are importuning us to get to work, not asking for our applause and support.