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?

Artificially Inflated #1

I do not gather these links to say that Generative AI has no value or utility, only that perhaps we don’t believe the hype.

This first batch of links are entirely me going back through my Messages with Dr Kimberly Jaxon, who is dealing with Generative AI in many courses where text represents the artifact that is required to complete an assignment.

Not new, but relatively new to me. I Will Fucking Piledrive You If You Mention AI Again — Ludicity.

Simon Wardley, of Wardley Maps fame, has been absolutely on fire lately. Do you use ChatGPT for search?

Camille Fournier has entered the chat. Things I Currently Believe About AI and Tech Employment

Speaking of text-based artifacts, here’s a fun thread on a study of human success at detecting AI generated writing.

Not sure how I can not include a fart joke at ChatGPT’s expense.

What if it’s most grift and this particular grift is draining funds from the California State University? via Dr. Cat Hick.

Neal Stephenson, one of my favorite authors, when to New Zealand and said some words. Remarks on AI from NZ

I follow conversations among professional educators who all report the same phenomenon, which is that their students use ChatGPT for everything, and in consequence learn nothing. We may end up with at least one generation of people who are like the Eloi in H.G. Wells’s The Time Machine, in that they are mental weaklings utterly dependent on technologies that they don’t understand and that they could never rebuild from scratch were they to break down.

You know jwz has had enough. College student asks for her tuition fees back after catching her professor using ChatGPT

I really enjoyed Hazel Weakly’s post, Stop Building AI Tools Backwards.


How do I keep up? I don’t. This is but a fraction of a fraction of a tiny minuscule of the words and hang-wringing (including my own!) that are flying around the internet. I take advantage of Listen Later to covert long articles and PDFs into mp3 for podcast feed consumption. Yes, it uses AI…like I said, I don’t deny the utility.

Posted in AI

ExploreDDD Denver 2025

I was fortunate to attend ExploreDDD last week (April 16-17) and I have so many thoughts. First and foremost, this group was one of the most thoughtful and welcoming groups I’ve experienced in tech. It was very reminiscent of Code4Lib, which if you’re not familiar with, a group of “hackers, designers, architects, curators, catalogers, artists and instigators from around the world” that happen to fit in the Venn overlap of libraries, archives, museums, and technology. I bring up the Code4Lib conferences because they were so invigorating. I always came away with new friends, connections, ideas, and most importantly motivation. Motivation can be a hard thing to come across these days, so when you tap into it, you tend to get overwhelmed. Your brain fills up, bursts, then fills up again. You hit the pillow and don’t move until your alarm goes off in the morning and you exciting for it to happen all over again.

That’s what going to ExploreDDD felt like for me. So, yeah…highly recommended.

Domain-driven Design (DDD) is not so much a technology as it is a philosophy. It’s a way of thinking to help you make sense of a complicated world. If I could only have one takeaway from the conference is that the world is messy, your systems are messy, your people are messy and we have tools, frameworks, patterns, mental models, and processes to help. Nobody ever said it was gonna be easy. Do the work. Build the models. Map the systems. Create the Event Storm. Most importantly, share the work. Allow it to be challenged. Improve it through feedback and know now that everybody has a better understanding of the system.

I’ll give the rundown of what I attended and then make as many posts as needed to put more thoughts out into the world.

Wednesday, April 16

Thursday, April 17

  • Systems Theory And Practice Applied To System Design (Workshop) with Ruth Malan
  • Discover Your Software Architecture In A Day With The C4 Model (Workshop) with Ryan Shriver
  • Learning From Incidents As Continuous Design (Workshop) with Eric Dobbs
  • Model Rigor, You Say by Rebecca Wirfs-Brock

The workshops were 2 hours and they really were work. The good kind. I’m not new to Eventstorming, C4, systems thinking, and especially incident management, but these workshops allowed me to hone my skills with experts and other practitioners which was incredibly valuable.