MLS Soccer 2026 Schedule Shenanigans

The 2026 MLS Schedule has been released! That's the good news. If you want to see the entire season, it seems like you have to go to a team and then view the entire schedule from there. That's fine, but I wanted it in a Google Sheet, so I had Claude work on a solution.

I present to you the mls-schedule-generator. Is it "vibe coded"? Yeah, mostly. Is this good code? Probably not. Does it work? Yeah. You can see the results in this sheet.

AI is Biased and Doesn’t Share Your Values

I guess if the crypto traders say it, it’s real?

“It’s hard to say how much we can take away from this,” Azhang said. “One thing that we do know is that there are patterns in the models and they’re clearly biased and have preferences.

“For example, Claude almost always goes long and refuses to go short. It’s like an eternal optimist whereas Gemini is happy to short,” Azhang said. “They clearly have these inductive biases when it comes to trading.”

Simon Wardley on LinkedIn:

GPTs are a non kinetic form of warfare designed to embed the values of a small number of people into much wider communities by capturing the process of decision making. The delivery mechanism is the appearance of helpfulness i.e. coherent and authoritative arguments. The payload is helplessness and the creation of a new theocracy.

Simon Wardley on Medium:

By controlling the tools available to an individual, one can shape the type and quality of information they access. For example, limiting access to specific scientific instruments or technologies can constrain a person’s ability to gather empirical evidence and engage in scientific reasoning. Conversely, providing access to biased or misleading tools can lead individuals to draw erroneous conclusions or develop skewed perspectives about the world.

Simon Wardley on LinkedIn:

Do remember, LLMs are a non kinetic form of warfare. By controlling the language, medium and tools then they influence how you reason about any space. If the hypothesis holds then over time, your values and hence your behaviour will become altered by your exposure. This is no different to how we have used art to change societies.

Micorsoft’s AI chief Mustafa Suleyman in the Wall Street Journal (Apple News link)

AI “is going to become more humanlike, but it won’t have the property of experiencing suffering or pain itself, and therefore we shouldn’t over-empathize with it,” Suleyman said in an interview. “We want to create types of systems that are aligned to human values by default. That means they are not designed to exceed and escape human control.”

Which human values to do you think he means?

Posted in AI

To Malmö and Back Again

To Malmö and Back Again

I travelled to Malmö Sweden for the Øredev developers conference, where I was giving a presentation (subject of the next post). It was a whirlwind trip and I went solo, as Kat had no interest in doing a European long haul trip that was only for seven days. I flew out of SFO on November 3rd to Copenhagen and then back on the 9th. The flight there was a red-eye, so I didn’t land until Tuesday the 4th.

Sky view

The flight there was, thankfully, completely uneventful. I took the train from Copenhagen Airport to Malmö, and that was also really easy and quick. Before I went I checked on YouTube to see if there was a video showing how to get to the train and of course there was. I know they’re mostly ad-bait, they’re still pretty helpful if you haven’t been to a particular airport before. The body of water between Copenhagen and Malmö is referred to as The Sound, but it’s part of the Baltic Sea. Malmö is also in the south, so I was still very far away from the Arctic Circle.

How to get to Malmö

I didn’t have anything planned, other than getting to my hotel and unpacking. I did that, and then struck out to explore the area. I hadn’t slept much on the plane but the common practice is to just get on local time immediately, so that’s what I did. Luckily that night the conference organizers had arranged a dinner and nordic sauna for the speakers. That night we all piled into a couple of buses and headed to the Ribersborgs Kallbadhus. I will say that it was a traditional sauna and if you know, you know.

Wednesday was the opening day of the conference, so I was mostly indoors, but that night the city hosted us for a dinner at the Malmö Rådhus. You might be thinking that dinner at a city hall building is odd, except that this building was originally constructed in 1547. It was nice that the city appreciated how the conference puts Malmö “on the map” in terms of the technology scene in Europe. Also, it was just a magnificent building!

Radhus!

Thursday was the day of my talk, but also the football club from Malmö was playing a Europa League match, so of course I went. Did I get scarf? Do you even know me? Of course I did! I went early enough to hang out in the stadium bar and talked to as many locals as would put up with somebody that didn’t speak more than two words of Swedish. Everybody was lovely and many had even been to California, so we had a lot to talk about. They were very interested in what was going on in the US, and the best I could offer is that we’re in a phase and that there will undoubtedly be an adjustment. Sadly, Malmö lost the match.

Scarf

Friday was the final day of the conference. My talk was behind me, so I was in full enjoy the conference mode. During the conference I was lucky to make the acquaintance of Joshua Kerievsky, founder of Industrial Logic and champion of Modern Agile. We decided to explore the more urban parts of Malmö after the conference concluded and had dinner at Ruths. Other than a little mix up on what we were ordering, the dinner was exquisite.

Saturday was a break day. I didn’t fly out until Sunday, so after visiting the largest IKEA in the world, I made my way to Copenhagen via the train to do all the touristy stuff I could cram into six hours. Nyhavn for lunch, The Little Mermaid, and a stroll around Kastellet was just the ticket. Getting back to Malmö was trickier than I wanted it to be as there was maintenance happening on the tracks. They were running buses, but it wasn’t clear at the train station what bus one should get on to get back to Sweden, but I got there eventually.

Copenhagen 2025

Sunday at last and it’s time to fly home. Joshua and I are on the same flight, so we travel together to Copenhagen airport for our flight back to SFO. We have a little “fun” trying to get into the SAS Lounge and then come closer than I was comfortable with to missing our flight because there were only two people working passport control and there were hundreds of people in line. For reference, there were eight lanes, but only were staffed. Our plane ended up being held for 30 minutes to allow people to get through, so we lost our takeoff position, and left 50 minutes late. But, I was on the plane and at that point it was the only thing I cared about.

Running Injury Update #2

Previously, I had gone through my calf injury and my intentionally slow recovery. I was poking around in Strava and these two views I thought were worth sharing, to show how dramatic the pivot away from running to walking was.

Graph showing that running miles go to zero

Now walking miles for the same period:

Graphing showing walking miles increasing dramatically.

Today, a Saturday, was long run day and I did manage to go 10mi without reinjuring myself. Yay.

Maybe next Saturday I'll get to 13.1mi so I can continue my streak of half-marthons every month.

The Latest Running Injury

If you run, you will get injured. It's not an if, it's a when. The severtity is the real wild card. A long time ago I had issues with my calves. Nothing too serious, just nagging little muscle pulls and cramps and the like. I started wearing compression socks and that seemed to clear those minor injuries up. Putting compression socks on, while certainly not the most difficult thing in the world, is harder than putting on low-cuts.

I got lazy and started wearing low-cuts on my 5mi runs. I can't prove this is why I got a calf strain, but I'll settle for correlation. This happened on Wednesday, July 30, 2025 during a 5mi run. I was on my way back, as I always just do an out and back, and something just started feeling wrong in my right calf. I took the next three days off from running and I was thinking I could still get a decent Saturday long run in with the rest.

I was so very, very wrong. I made the injury worse and so I started to break out all the remedies, including no more running until I was more confident I wasn't going to hurt myself further. I know remedies for running injuring are hotly debated, so I'm not pushing these, they are just what I used.

I started icing a few times a day. I broke out the foam roller. I even gave PEMF a try. Luckily, through True Kneads I have easy access to one of these contraptions. I started wearing compression socks on my walks, which replaced any planned runs.

Finally, on Saturday, August 16, I felt like I could try a slow (11min/mi pace) jog. It went pretty well. I made sure to ice aftwards, but in general the run did not make things worse. That was almost two weeks off and it didn't feel great, but again, I didn't want to make it worse by being stupid.

Today, Sunday the 18th, I figured I would try and get back on the normal 5mi schedule, but keep the slower pace. Right now a 10min/mi pace is the limit. Anything faster than that and I can start to feel the calf complain. Again, it went relatively well and I didn't make things worse. I'll keep the ice and rolling going until I can get back to normal pace. I'm not sure what I'll do about the Saturday long run...I'll burn that bridge when I come to it.

The Regular Schedule:

  • Mon - 5mi run
  • Tue - 4.5mi walk
  • Wed - 5mi run
  • Thu - 5mi run
  • Fri - 4.5mi walk
  • Sat - 10+mi run
  • Sun - 4.5-6.5mi hike

Russian Lit Majors and Expert Generalists

Many years ago I read an article by Michael Lopp, Russian History, that resonated with me so deeply, I started sending it to my managers, to help explain why I was in a technical organization with no technical degree. This article details an archetype, the Russian Lit Major, who can understand and sympathize with multiple domains, and then be able to translate between these domains. This has been the essence of my career, even before I stopped being a programmer as my day job.

If you’re in a start-up, you need them because, very soon you won’t be able to figure out everything by walking the hallway. There are too many people. If you’re in a big company, you need them for the same reason; there is simply not enough time in the day to regularly take the pulse of the company and that is what your Russian Lit Major is going to do. They’re going to make sure that whatever relevant shenanigans are going on outside of your team are going to cross your table. They’re going to eliminate surprises and they’re going to do this the best when they know that they are an essential part of the team.

Yup. That’s me. My degree was not Russian History. I did not study Russian literature. My degree was Biological Sciences with a side of teaching credential. It’s not that I lucked into technical jobs, well…that’s not entirely true but it’s a story for another day, I spent a few extra semesters taking enough CSCI classes to become an extremely mediocre developer.

Recently, I read another article, Expert Generalists, that felt not exactly like a sequel to Russian History, but definitely adjacent. If Russian History focuses on communication and translation, Expert Generalists focuses on having a learning mindset. Russian History emphasizes understanding the entire company, while Expert Generalists emphasizes understanding the entire technical stack. The Russian Lit Major will help you know “whether or not my Sr. VP is going to kill the whole project”, while the Expert Generalist will help you see a potential dependency in a seemingly unrelated area that will bring your application down. Among other things...

The Expert Generalist, currently has six identified characteristics: Curiosity, Collaborativeness, Customer Focus, Favor Fundamental Knowledge, Blend of Generalist and Specialist Skills, and Sympathy for Related Domains. I’d score myself 5/6 on this rubric. I’ve been in roles where I do so many random things for so long, I don’t know what my specialist skills really are anymore. I doubt being able to instantly recall almost any line of dialogue from Ghostbusters (1984) or The Hunt for Red October counts. If you know of a job where those are key skills, please do get in touch! The overlap I see between the two archetypes is essentially complete, there may be a sliver on each side of the Venn diagram, but it’s probably a rounding error. Again, it’s just that the focus may be in opposite directions.

While Russian History is a fun story, the Expert Generalists article is a rigorous exploration of how to spot these people, how to effectively place them in teams, and how to help them grow. It’s less a sequel and more how to optimize organizations with these types of people. I don't think I would send Expert Generalists to any new boss though (too long for most managers today), I'll stick with Russian History as I will always be that Russian Lit Major at heart.

The Thoughtworks Technology Podcast recently has a nice discussion about this article and it’s well worth the listen.

Datadog Incidents and Slack Channel Workflow Automation Tip

tl;dr how to invite users to incident Slack channels created by Datadog

  1. Use an incident trigger and reference it via Incident Notifications
  2. When getting the Slack channel use {{ Source.incident.id }}
  3. When inviting users, the channel is ${ Steps.Get_incident_Slack_channel.channel_name }

If you use both Datadog and Slack, I hope you have explored how Datadog can create incident channels. At work, we have found this incredibly useful and allowed us to replace a custom workflow.

Recently our SRE team had refactored some of the chatops tools that we used through Slack commands to do things like restart services and page people/teams. We needed their newly created bot automatically added to newly created incident channels. There are many ways to accomplish this, so really...how hard could it be? Well...I'm writing this post, so it was non-trivial.

This is specific to using Datadog Workflow Automation and some of the bumps in the road I ran into (over?). The first bump, which is technically in the documentation, but I didn't understand it when I read it, was to trigger off incident creation automatically you need to use the incident notifications to do the triggering. I was under the impression that "trigger automatically" just meant that it would trigger, but the language is actually "trigger automatically via". My bad. Do not that in the notification settings there is an option for Declared or Declared or incident attributes are updated and for our purposes we chose only Declared as we don't need to invite the same user again.

So, now that we know how to trigger the incident via the notifications settings in Incidents, the next step was to get the Slack channel, which has a handy action named Get incident Slack channel. Claude and ChatGPT were of little help here, giving me nothing by wrong answers. It was a Datadog employee in the public Slack that gave me the right incantation of {{Source.incident.id}}. Once you see it, it's obvious, but I had a heck of time getting there.

I didn't get stuck on the next step, but since I'm documenting all this, it was to use the Invite users to channel action. The only thing that might be confusing is the channel is ${ Steps.Get_incident_Slack_channel.channel_name }. The user and workspace will be unique to your setup.

Again, once you see it all, it's not complicated and super easy, barely an inconvenience. If you're here though, I hope this helps.

Side rant: I feel like this was harder because of No Code interface and probably because for reasons I don't fully understand I wasn't able to get to the Datadog docs that require authentication. I have no doubt that the answers to my problems are available. Also, why do docs require authentication?