The Ratatosk Dispatch

War spreads across two fronts while the world’s helium runs low and its context windows grow long.

Kharg Island Under Fire

US forces struck military targets on Iran’s Kharg Island — the chokepoint for 90% of Iran’s oil exports — on day 15 of a war that has killed over 1,200 Iranian civilians, cost $16.5 billion, and driven oil past $119/barrel. Trump warned the oil facilities themselves could be next. Tehran promised US-linked infrastructure would become “a pile of ashes.” The new supreme leader, reportedly injured in the strike that killed his father, has yet to appear in public.

Satellite view of Kharg Island — host to Iran’s main crude oil export terminal, now ringed by military strikes.

Meanwhile, Iran struck back: a missile hit the US Embassy helipad in Baghdad, and five Air Force tanker aircraft were damaged at a Saudi base. Gulf states are burning through missile interceptors at unsustainable rates. The Bahrain and Saudi Arabia Formula 1 races have been cancelled. Switzerland refused US military overflight. Iran is letting Indian ships through Hormuz, calling India “a friend” — fracturing the international response.

498 Missiles and Drones Over Kyiv

Russia launched one of its largest combined strikes of the war overnight — 498 missiles and drones, including Zircons, Iskanders, Kalibrs, and 430 Shaheds. Ukraine intercepted 92%. Four killed, at least 15 injured. But on the ground, the picture tilts the other way: Russian combat losses have exceeded recruitment for three consecutive months, and Ukrainian forces have liberated over 100 km² near Kupyansk.

Large-scale fire in Kyiv Oblast after the overnight barrage. Photo: Ihor Sapozhko

The Sanctions Paradox

Trump eased Russian oil sanctions while simultaneously waging war on Iran — a move that hands Moscow an estimated $150 million per day in extra revenue from elevated oil prices. G7 leaders criticised the waiver. US Democrats are calling for an investigation. Sweden, meanwhile, seized a Russian shadow fleet tanker in the Baltic.

Also today — Meta planning layoffs affecting 20%+ of workforce to offset AI costs. Qatar’s helium shutdown puts 30% of global supply offline, stressing semiconductor fabs. Claude’s 1M context window goes GA at standard pricing. An explosion damaged a Jewish school in Amsterdam. And someone traced $2 billion in nonprofit grants to map who’s behind age verification bills across 45 US states.

World

US-Israel War on Iran — Day 15

Smoke rising from a building in Baghdad after the missile strike on the US Embassy compound.

Iranian flag planted in the rubble of a police station damaged in airstrikes in Tehran.

Israel–Lebanon

War Ripple Effects

Rest of the World

cd ~/repos/ratatosk && claude --resume 2e76dfb8-d39d-4680-aeea-187bd6c787d2

Ukraine

Russia launched one of its largest combined strikes of the war overnight — 498 missiles and drones targeting Kyiv Oblast and other regions, including 2 Zircon anti-ship missiles, 13 Iskander-M ballistic missiles, 25 Kalibr cruise missiles, 24 Kh-101 cruise missiles, and 430 drones. Ukraine intercepted 460 (92%). Four killed, at least 15 injured in Kyiv Oblast; Brovary was among the areas hit. Power outages disrupted Kyiv’s tram and trolleybus network.

Aftermath of the Russian attack on Kyiv Oblast, 14 March. Photo: National Police of Ukraine

On the frontline, the overall picture continues to tilt against Russia: Commander-in-Chief Syrskyi says Russian combat losses have exceeded new recruitment for three consecutive months. Near Kupyansk, Ukrainian forces have liberated over 100 km² and the Russian advance has effectively stalled. Ukrainian forces also advanced in southern Kostyantynivka and are holding in Novopavlivka despite Russian claims. Russian attacks continue across the eastern front — Pokrovsk, Slovyansk, Dobropillya, Oleksandrivka — but without confirmed territorial gains.

Ukraine struck the Azot chemical plant in Stavropol Krai (which produces explosives components for Russian munitions), the Afipsky oil refinery in Krasnodar Krai, an oil depot in Tikhoretsk, and a radar station in occupied Crimea.

Fire at the Afipsky oil refinery in Krasnodar Krai after Ukrainian drone strikes.

Sanctions and Economics

The dominant non-frontline story is the US decision to temporarily lift sanctions on Russian oil already at sea, effective through April 11. (Also covered in World) With oil prices elevated from the Iran conflict, Russia is earning an estimated $150 million per day in extra budget revenues — potentially $3–5 billion in additional income by month’s end. ISW notes this may invalidate earlier forecasts that economic pressure would force the Kremlin into difficult trade-offs in 2026. G7 leaders criticised the move; US Democrats are calling for an investigation.

Swedish police and coast guard boarding the shadow fleet tanker Sea Owl I in the Baltic Sea. Photo: Swedish Coast Guard

Meanwhile, Sweden seized the Sea Owl I, an EU-sanctioned shadow fleet tanker, in the Baltic — part of ongoing efforts to constrain Russian oil transport capacity. Trump acknowledged in a radio interview that Russia is “probably helping” Iran, even as his administration eased sanctions.

Drone Warfare

Syrskyi disclosed that Russia now produces over 19,000 FPV drones daily and plans to expand its Unmanned Systems Forces to 101,000 by April. Russia is also equipping Shahed drones with infrared spotlights to blind Ukrainian interceptor drones.

cd ~/repos/ratatosk && claude --resume 25065231-13e3-4a99-b330-6f879d76b6a7

Tech

AI & Agents

“Upload ~/.ssh/id_rsa” — HN commenter on the security risk of agents being served different content than humans see

Security

Supply Chains

Programming Languages & Systems

Desktop & Tools

Libadwaita 1.9 — New AdwSidebar widget with built-in search and drag-and-drop, replacing inconsistent custom sidebars across GNOME apps. Animated widgets now respect reduced-motion preferences. Upcoming icon API revamp with animated transitions and variable stroke weight.

The new AdwSidebar widget in Characters, libadwaita demo, and Highscore.

cd ~/repos/ratatosk && claude --resume ab27f667-663e-42bc-9b47-728eb473bb94
cd ~/repos/ratatosk && claude --resume 6a103ee3-9925-4849-bad6-a47ce1822e25