Oil Prices Are Trending Up


A 30-day rolling average of EIA oil price data shows a clear upward trend over the past three months, aligning with the escalation of the 2026 conflict involving the United States, Israel, and Iran. Disruptions around the Strait of Hormuz have tightened global supply and increased uncertainty in energy markets.

Iran’s use of asymmetric tactics—targeting shipping routes and regional infrastructure—has amplified these effects, adding a persistent risk premium to oil prices. Unfortunately, this trend could have broader consequences, increasing costs across the global economy and putting added pressure on food supply chains.

Do we still need axios?


Yesterday a hacker compromised the account of the lead developer of axios> — the npm package with around 100 million weekly downloads — and published two malicious versions that included a remote access Trojan targeting macOS, Windows and Linux.

The malicious code was pulled from a staged dependency called "plain-crypto-js" and was designed to self-destruct after execution. It was only live for about three hours, but that was enough: security firm Huntress reported the first infection on a monitored endpoint just 89 seconds after the compromised version was published.

According to StepSecurity, the malicious dependency was staged 18 hours in advance, three payloads were pre-built for three operating systems, and both release branches were poisoned within 39 minutes of each other. Google's security team has linked the attack to a North Korean group that targets cryptocurrency theft.

This got me thinking: do we actually still need axios? The original reason it became so popular was that it gave you a clean, consistent API for making HTTP requests that worked the same way in the browser and in Node.js. But Node.js has had native fetch since version 18 and it's been stable for a while now. The browser has had it for years. So the problem axios originally solved is basically gone.

For my typical axios usage I wrote a simple fetch wrapper called fetchios that mirrors the axios API — same .get(), .post(), .create(), interceptors and all. It works as a drop-in module so I don't have to change the code everywhere, just copy the file in utils, swap the import and remove axios from my dependencies.

Every dependency you add is a potential attack surface — and this incident is a perfect reminder of that. Maybe it's time to stop running npm install axios by inertia and check what the platform already gives you.

A walk in Basel city center


I took this picture a couple of weeks ago during one of my early morning walks through Basel's city center. I love capturing shots in the early morning or late afternoon when places are quiet and you get to enjoy the small things that make them what they are — like a gravel pétanque court scattered with pigeons, a lone person sitting quietly on a bench, a bare winter tree, and the twin spires of the Münster poking up above the rooftops in the background. The light made it impossible not to stop and take a photo.

It's one of those scenes that feels completely unhurried, which is something I really appreciate about this city.

A New Look for the Blog


If you've been here before, you'll notice things look a bit different! I rebuilt the whole design from scratch — cleaner layout, better typography and a proper dark mode. I did the same for my personal site last week and it was about time the blog got the same treatment.

The old design had been running for almost ten years on Skeleton CSS with a dark mode toggle bolted on and a lot of custom CSS piled up over the years. It worked, but it was getting messy and hard to maintain.

The site was already on Astro, so the heavy lifting was really just the design layer: I replaced all the old CSS with Tailwind CSS v3 and a proper light/dark colour token system, so switching themes is now just a single class on the html element with no annoying flash on load.

The content stays the same though — hope you enjoy the new look!

Linienstraße 206: A Defiant Relic in the Heart of Berlin-Mitte


I took this picture while walking through Berlin-Mitte on my way to get my glasses done — way cheaper than in Switzerland! Among the renovated façades, galleries, boutiques and expensive apartments, Linienstraße 206 stands out like a time capsule. Covered in graffiti, street art and banners, it's clearly not a fully modernised luxury building and that's exactly what makes it so unique.

After the Wall fell in 1989, hundreds of empty buildings across East Berlin were occupied by squatters, artists and activists. Most of those squats were eventually evicted or swallowed by gentrification, but Linienstraße 206 is still standing, still defiant. A small piece of Berlin's alternative history right in the middle of all that fancy new East Berlin.

Next page