2026 Week 07

Return to Berlin

We returned to Berlin this week, and it wasn’t as straightforward as I had imagined. It was one of those situations where you think everything is tightly planned — timing aligned, connections mapped out — and then one small shift happens and from there things slowly begin to unravel.

We had planned to leave Amsterdam for Berlin by train in the evening right after an event. Somehow we almost left the event too late, and at that point we already knew we wouldn’t make it to Amsterdam Centraal in time. Instead, we asked the taxi driver to take us to the next stop since the train would still pass through there. Luckily, we caught it, which already felt like a small win given how the evening had started.

Things became more complicated when we were approaching the station where we were supposed to change trains. We found out that our next connection simply wouldn’t be arriving. It wasn’t very clear whether it was delayed or cancelled, but it wasn’t coming. So we had to quickly rethink everything.

Most of the alternative routes would have gotten us into Berlin around 9 or 10 in the morning, which wasn’t ideal. We were already tired, and the idea of arriving that late — or trying to find somewhere random to sleep for a few hours — didn’t make much sense. I also had work the next morning, plus a company event starting on Monday, so being back in Berlin that night felt important.

We eventually selected another connection that took us onto a Nightjet train — my first time on one. It was clearly designed for overnight travel, with cabins and sleeping compartments, and a layout optimized for minimal movement. When we boarded, we asked one of the crew members whether our ticket was valid since Deutsche Bahn had allowed us to select that connection. He told us it wasn’t, and that we would need to speak with the manager — possibly paying between €200 and €500 to remain on board.

At that point I was already exhausted and slightly annoyed. I didn’t even mind getting off at the next stop if needed, but paying that amount unexpectedly didn’t sit well with me.

After finding the manager and explaining the situation, he was more understanding. Since we were only going as far as Münster — about two stops, roughly two hours — and there happened to be a free seat, he allowed us to stay without paying anything extra. That felt like a turning point in the night.

From Münster we took a regional train to Hamm, waited again for a bit, and then finally boarded the ICE to Berlin. By the time we got home it was 3:30 in the morning. We were originally supposed to arrive around midnight.

We dropped our bags and went straight to bed, knowing we both had work the same morning.

More than anything, what stayed with me from that night was how we handled it. We were tired, hungry, and carrying our bags around unfamiliar stations in the cold, but there was no blaming or snapping at each other. We just kept figuring out the next step together. Situations like that can easily create tension, but staying calm and supportive made everything feel manageable, even when it clearly wasn’t ideal.

It reminded me again that whenever you’re dealing with multiple connections and tight plans, you’re also dealing with variables you don’t control. Time buffers matter. Financial buffers matter. Emotional buffers matter. Things will shift. The question is usually how you respond when they do.


Company Event

One of the reasons I really wanted to be back in Berlin by Monday was our company event.

Interestingly, the biggest highlight for me wasn’t the talks or workshops. It was seeing colleagues in person — especially those I had only interacted with online before. There’s something different about sitting across from someone, talking beyond tickets and Slack threads, and realizing again that everyone is a full human being outside of the context of work.

There were dinners and small parties, and moments where you see colleagues dancing, laughing, or just being relaxed in a way that doesn’t always show up in day-to-day remote work. It changes the texture of how you relate to people afterwards.

I also didn’t fully realize how many people were in Contentful until everyone was gathered in one place. Organizing something like that takes serious coordination, so I genuinely appreciated the effort that went into it.

At some point during the event, I found myself informally acting as a bridge between colleagues who were experiencing some communication friction. That experience was reflective for me. It reminded me that people carry different amounts of themselves into work, and that work means different things depending on someone’s context or current circumstances.

It reinforced the idea that respect and patience matter more than we sometimes assume. And if I ever find myself on the other side of that kind of tension, I hope I remember what it feels like from a more neutral position.


Back to Helfer — Laravel Cloud Integration

After roughly two weeks away from Helfer, I finally got back to working on the Laravel Cloud deployment aspect.

Before the trip, I had been trying to unify how deployments work across Laravel Cloud and Laravel Forge, with the intention of eventually supporting something like Railway as well. It was starting to feel cumbersome, and stepping away for a bit turned out to be helpful.

This week I made meaningful progress. Laravel Cloud deployment is now working, and I’m building a unified deployment interface so the agent can expose a single deployment tool while still supporting multiple providers underneath. The idea is that you can link different providers and deploy accordingly, without the complexity leaking into the user experience.

One part that proved more challenging than expected was the UI work. I used Copilot and Codex quite a bit, especially in areas where I didn’t yet have a fully clear mental model of what the interface should look like. That’s where things became slightly frustrating. When I would simply ask for a UI for something abstract, the result often wasn’t quite what I had in mind — and refining it required more back-and-forth than I expected.

What worked better was becoming more explicit and assertive about what I wanted. Instead of leaving room for interpretation, I would specify layout decisions, interaction behavior, and structure more directly. The clearer I became, the better the results.

It made me realize that in ambiguous UI scenarios, relying entirely on an LLM’s design instincts can slow things down. There’s probably a balance — sometimes it produces surprisingly good output — but when the vision isn’t clear in your own head, it helps to step in and guide more intentionally.

I’m glad to be back in motion with Helfer. The next steps are releasing the cloud deployment feature and publishing the Laravel Cloud SDK that came out of this work.

Overall, it feels good to regain momentum.

Till next time, Bosun.