<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://garethwestern.com/</id><title>G-Web</title><subtitle>Gareth Western's blog — notes on data platforms, cloud and CI/CD.</subtitle> <updated>2026-08-18T20:43:02+02:00</updated> <author> <name>Gareth Western</name> <uri>https://garethwestern.com/</uri> </author><link rel="self" type="application/atom+xml" href="https://garethwestern.com/feed.xml"/><link rel="alternate" type="text/html" hreflang="en-GB" href="https://garethwestern.com/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Gareth Western </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Analysing three years of Norwegian grocery receipts with Databricks</title><link href="https://garethwestern.com/posts/norwegian-grocery-receipts/" rel="alternate" type="text/html" title="Analysing three years of Norwegian grocery receipts with Databricks" /><published>2026-07-17T07:59:57+02:00</published> <updated>2026-07-17T07:59:57+02:00</updated> <id>https://garethwestern.com/posts/norwegian-grocery-receipts/</id> <content type="text/html" src="https://garethwestern.com/posts/norwegian-grocery-receipts/" /> <author> <name>Gareth Western</name> </author> <category term="databricks" /> <summary>Now that the World Cup is over (it did not come home), here’s one last side project before I unplug and vanish for a few weeks. If you live in Norway, you’ll know that the grocery market is essentially a three-horse race between Norgesgruppen (Meny, Joker, and so on), REMA 1000, and Coop. Naturally, each has its own loyalty scheme and app, diligently hoarding your shopping data for their own “...</summary> </entry> <entry><title>What painting a wall has in common with the power grid</title><link href="https://garethwestern.com/posts/paint-and-grid-losses/" rel="alternate" type="text/html" title="What painting a wall has in common with the power grid" /><published>2026-07-07T08:38:01+02:00</published> <updated>2026-07-07T08:38:01+02:00</updated> <id>https://garethwestern.com/posts/paint-and-grid-losses/</id> <content type="text/html" src="https://garethwestern.com/posts/paint-and-grid-losses/" /> <author> <name>Gareth Western</name> </author> <category term="statnett" /> <summary>Let’s take a break from the World Cup for a minute to talk about watching paint dry. What do painting a wall and balancing the Norwegian electricity grid have in common? As I got to the bottom of yet another bucket of paint last weekend, my thoughts drifted back to my work with Statnett. No matter how careful you are, some of the paint never makes it onto the wall. It ends up stuck in the b...</summary> </entry> <entry><title>Rebuilding the PenguinPool commentary as an MLflow agent</title><link href="https://garethwestern.com/posts/penguinpool-mlflow-agent/" rel="alternate" type="text/html" title="Rebuilding the PenguinPool commentary as an MLflow agent" /><published>2026-07-02T01:22:21+02:00</published> <updated>2026-07-02T01:22:21+02:00</updated> <id>https://garethwestern.com/posts/penguinpool-mlflow-agent/</id> <content type="text/html" src="https://garethwestern.com/posts/penguinpool-mlflow-agent/" /> <author> <name>Gareth Western</name> </author> <category term="databricks" /> <summary>A few weeks ago I shared how I moved the Bouvet PenguinPool from Erik Stubø’s legendary Excel sheets to a fully automated commentary system on Databricks. The jobs run, the Slack messages land, the penguin fans are happy. But a nagging thought lingered: the automation was a notebook. A very good notebook, but still a script. No versioning, no API contract, no easy way to call it from anywhere ...</summary> </entry> <entry><title>Automating World Cup commentary with Databricks Genie and Model Serving</title><link href="https://garethwestern.com/posts/penguinpool-commentary-analyst/" rel="alternate" type="text/html" title="Automating World Cup commentary with Databricks Genie and Model Serving" /><published>2026-06-13T21:45:44+02:00</published> <updated>2026-06-13T21:45:44+02:00</updated> <id>https://garethwestern.com/posts/penguinpool-commentary-analyst/</id> <content type="text/html" src="https://garethwestern.com/posts/penguinpool-commentary-analyst/" /> <author> <name>Gareth Western</name> </author> <category term="databricks" /> <summary>Erik Stubø was not only a very capable CFO at Bouvet, he was also an eager football fan who faithfully took charge of running an Excel-based prediction pool for every European and World Cup tournament. The commentary that came with it was half the fun: In my previous post I shared how we’ve moved past the Excel-spreadsheet days-of-yore and transitioned to Databricks for a modern approach to ...</summary> </entry> <entry><title>Building a World Cup pool with Databricks Apps, Lakebase and Genie</title><link href="https://garethwestern.com/posts/databricks-worldcup-pool/" rel="alternate" type="text/html" title="Building a World Cup pool with Databricks Apps, Lakebase and Genie" /><published>2026-06-09T19:56:00+02:00</published> <updated>2026-06-09T19:56:00+02:00</updated> <id>https://garethwestern.com/posts/databricks-worldcup-pool/</id> <content type="text/html" src="https://garethwestern.com/posts/databricks-worldcup-pool/" /> <author> <name>Gareth Western</name> </author> <category term="databricks" /> <summary>Recently Douglas Garcia Torres shared an open-source project created by Onno van der Horst for running a World Cup pool as a Databricks App. Naturally, this gave me the perfect excuse to spend some time playing around with Databricks Apps, Lakebase, Genie, and a few of the newer platform capabilities. A couple of evenings later we have an internal football pool up and running at Bouvet. Here’s...</summary> </entry> </feed>
