MilaCorp - 2 min read

GW4 - Peptroleum Leviosa

# 🏆 Milabowl Gameweek Summary ## 🚀 Headlines Well, well, well
 after four painful gameweeks of pure desperation (and two literal bomb explosions), **Agil Krakk Rotasjon** finally manages to throw away his oblong object of doom. It wasn’t pretty, it wasn’t elegant, but hey — the drought is over. The man can still *throw*. Meanwhile, **Peptroleum Guardiola** fires up the engines and storms the round with a juicy **10.2 points**. That’s enough to rocket him up **four full spots**, landing safely in second place. Rumor has it he owes it all to a mix of *Black Widow magic* and *dreamlike timing*. Whatever it was, it worked. At the very top, we’ve got a new sheriff in town. **censoredcocoecompany** climbs **two steps** thanks to the **Head Bros connection** and some timely gameweek positioning. Just like that, cocoa sits on the Milabowl throne. Sweet, dark, and slightly bitter for everyone else. But not everyone’s smiling. Both **Milas Krakk** *and* **Sels Sarr Salaht** take a synchronized nose-dive, dropping **three places each**. Like a bad slapstick routine — two slips, one punchline, zero points. And down at the bottom of the table
 it’s the usual suspect. **LastMinToiletTrader** still hasn’t managed to leave the porcelain throne, but at least this week he reduced the gap after bagging a solid **4 points**. Progress is progress, even if it smells funny. đŸšœ ## 📜 Rulebook If you’re confused (and let’s be honest, you probably are), the Milabowl rules explain everything
 sort of. 👉 [Milabowl Rules](https://milabowl.com/rules/) --- That’s the roundup, folks. One week you’re on the throne, the next you’re on the floor — that’s the Milabowl way. Let’s see who blows up, slips up, or flushes out next gameweek.
GW Summary
MilaCorp - 2 min read

Milabowl GW1–GW2 - Krakk ’n’ Roll đŸ€č‍♂

As all other tech companies the Mila Data Refinement team of MilaCorp are trying out LLMs. This summary is bought to you by GPT-5 đŸ€–! Two weeks in and the bowl is already boiling. Chaos rules? Absolutely. Logic? Optional. Puns? Mandatory. Let’s speed-run the funniest (and real!) bits from the opening fortnight. ## Gameweek 1 — “New krakk, who dis?” 🧯 Winner: **Med Kunis pĂ„ krakken** climbed straight onto the, uh, krakken, topping the week. Also nabbed a **HeadBros** handshake for **+2.69** and somehow juggled 3 yellow cards and a small BenchFail without falling off. - Kunis? More like Win-is. A tidy start plus that HeadBros +2.69 sparkle set the tone. - Yellow fever! **Med Kunis** banked +3 from YellowCards, then still smiled for the podium photo. - Following the crowd hurts. **Krakk Under Pressure** paid the TrendyBitch tax (-2) for joining the Isak-in, Foden-out parade. Ouch. Wooden spoon: **Agil Krakk Rotasjon** mis-homed the missile—CapFailScore (-1) with a low-scoring Palmer armband and the week’s basement spot. ## Gameweek 2 — “Agil gonna Agil” 🌀 Winner: **Agil Krakk Rotasjon** did some very lean rotations indeed—wins the round while tanking a Dynamite bomb (-2) like a champ. - Boom? Still zoom. **Agil ate Bomb: Dynamite (-2)** and still finished GW2 #1. Peak Milabowl energy. - **Free Pass, no chill**. Free Pass & Chill kept things squeaky with TightButthole +2.1 (fewest goals conceded)
 but also captained Justin Kluivert for 0 (CapFail -1). Comedy is about timing. - Cocoa with spice. **CensoredCocoaCompany** stirred in a UniqueCap +2 and ladled out 3rd place for the week. - Sarr today, sorry tomorrow. **Sels Sarr Salaht** slid to 8th (2.19 pts) with nothing trendy or unique to cling to this time. **Wooden spoon**: Milas krakk hit the floor at 9th—CapFail (-1) with a 0-pointer captain and a BenchFail (-1) to match. We’ve all been there. ## Closing krakks 📉📈 - **Early pace:** Med Kunis set the table in GW1; Agil flipped it in GW2. - **Uni-vibes:** Lone captains paid off more than once; trends kept handing out parking tickets. Same time next week—bring snacks, diffusal kits, and maybe
 fewer yellow cards? 💛
GW Summary
MilaCorp - 2 min read

New Avatars for 25/26!

import { Image } from 'astro:assets'; import Anders from '../../../assets/anders_kristiansen.webp'; import Eivind from '../../../assets/eivind_kristoffersen.webp'; import Henrik from '../../../assets/henrik_granum.webp'; import Malte from '../../../assets/malte_loller-andersen.webp'; import Markus from '../../../assets/markus_andersson.webp'; import Martin from '../../../assets/martin_kloster.webp'; import Mikkel from '../../../assets/mikkel_treu_os.webp'; import Samson from '../../../assets/samson_svendsen.webp'; import Simen from '../../../assets/simen_aakhus.webp'; The arena lights flicker... the crowd goes quiet... and then—BOOM! ✹ New challengers have evolved and entered the Milabowl. Who’s leveling up, and who’s getting nuked? Meet the contenders—optimized, sharpened, and ready to throw hands (and explosives). Choose your fighter! 🧱⚡ ### Peptroleum Guardiolja <Image src={Anders} alt="Peptroleum Guardiolja's avatar" width={160} height={160} widths={[160, 240, 320]} sizes="160px" format="avif" class="mx-auto rounded-full" /> ### CencoredCocoaCompany <Image src={Eivind} alt="CencoredCocoaCompany's avatar" width={160} height={160} widths={[160, 240, 320]} sizes="160px" format="avif" class="mx-auto rounded-full" /> ### Free Pass & Chill <Image src={Henrik} alt="Free Pass & Chill's avatar" width={160} height={160} widths={[160, 240, 320]} sizes="160px" format="avif" class="mx-auto rounded-full" /> ### Agil Krakk Rotasjon <Image src={Malte} alt="Agil Krakk Rotasjon's avatar" width={160} height={160} widths={[160, 240, 320]} sizes="160px" format="avif" class="mx-auto rounded-full" /> ### Milas Krakk <Image src={Markus} alt="Milas Krakk's avatar" width={160} height={160} widths={[160, 240, 320]} sizes="160px" format="avif" class="mx-auto rounded-full" /> ### Sels Sarr Salaht <Image src={Martin} alt="Sels Sarr Salaht's avatar" width={160} height={160} widths={[160, 240, 320]} sizes="160px" format="avif" class="mx-auto rounded-full" /> ### KrakkUnderPressure <Image src={Mikkel} alt="KrakkUnderPressure's avatar" width={160} height={160} widths={[160, 240, 320]} sizes="160px" format="avif" class="mx-auto rounded-full" /> ### LastMinToiletTrader <Image src={Samson} alt="LastMinToiletTrader's avatar" width={160} height={160} widths={[160, 240, 320]} sizes="160px" format="avif" class="mx-auto rounded-full" /> ### No Krakk, No Cry <Image src={Simen} alt="No Krakk, No Cry's avatar" width={160} height={160} widths={[160, 240, 320]} sizes="160px" format="avif" class="mx-auto rounded-full" />
Announcement
Mikkel - 2 min read

Hidden Treasures in the Digital Bowl đŸ•”ïžâ€â™‚ïž

Greetings, fellow Milabowl enthusiasts! 🎼 As we continue to evolve our digital playground, I've been reflecting on the art of discovery. You know, there's something magical about stumbling upon hidden features, secret passages, and Easter eggs in the digital world. Remember the old arcade days when developers would hide special modes, secret characters, or mysterious messages for the truly dedicated explorers? ## The Art of the Hidden The best secrets aren't handed to you on a silver platter. They require curiosity, persistence, and sometimes a bit of creative thinking. They reward those who dare to venture beyond the obvious, who aren't satisfied with just the surface experience. 💡I've always admired Anders' dedication to the game - the way he approaches challenges with methodical precision, especially when he's in his favorite working position: turning the world on its head, fingers tightly gripping, and finding that perfect rhythm. ## The Power of Sequence In programming, as in music, sequence matters. A few well-placed keystrokes can unlock worlds of possibility. Sometimes it's about knowing the right combination, the right pattern, the right... _stroke_ of genius that reveals what's been hiding in plain sight all along. The most elegant secrets are those that feel natural once discovered, almost like they were meant to be found by those patient enough to seek them out. They don't announce themselves with flashy banners or obvious hints - they simply exist, waiting for the right moment, the right person, the right sequence of actions. ## A Challenge Emerges Which brings me to an interesting question that's been bouncing around in my head lately: **Does anyone care to give Mila what she's looking for?** I won't say more than that. Sometimes the best discoveries come from following your instincts, from trying things that feel right, from experimenting with the tools at your disposal. The digital realm has its own language, its own patterns, its own secrets. To those who enjoy a good mystery: keep your eyes open, your fingers ready, and your mind curious. The most rewarding treasures are often found by those who know where to look... and more importantly, how to look. Happy hunting! The answer lies within this blog post, going head on from the start (page) --- _P.S. - The ancient art of the Konami Code lives on in spirit, though modern secrets require their own unique signatures..._
Announcement
Tech
Sam - 2 min read

Tech improvements and quality of life updates ⚡

# New season, new improvements! 🚀 The holiday break has been productive for the Mila Data Refinement team. Here's what's been cooking in the development kitchen: ## Build pipeline with actual standards đŸ—ïž Finally implemented proper CI/CD with automated testing for the new and improved MilaRules engine. The .NET backend now runs tests on every commit and breaks the build on warnings - no more "it works on my machine" moments! CSharpier formatting ensures the code stays pretty, and successful merges automatically deploy to production. Because apparently we're a real software company now đŸ’Œ ## Frontend gets the professional treatment ✹ Prettier and ESLint are now enforced in the pipeline because consistent code formatting is apparently important (who knew?). The dashboard also got a shiny new row expander that shows you exactly where your points came from - or in most cases, where they didn't come from. Click that little chevron icon to see your beautiful rule breakdown and contemplate your life choices 📊 ## Live feature updates 📡 The biggest addition is live gameweek updates! No more waiting until Tuesday morning to see if your captain hauled or blanked spectacularly. The game state can now be updated mid-gameweek for those sweet, sweet live stats. Perfect for watching your rank plummet in real-time as your differential picks a yellow card 📉 ## Visual glory for the worthy 👑 Added visual enhancements to highlight the top three players because if you're not winning, you might as well admire those who are. Glory to the best players and all that. Also made dark mode even darker because some of us prefer to suffer in style 🌚 ## What's next? More improvements are always brewing. The goal is to make Milabowl so smooth that the only thing you have to worry about is your actual FPL team performance. _May your arrows be green and your rank be rising_ 📈
Tech
Sam - 4 min read

Mini-mila awards

# Mini mila awards With the 23/24 FPL season concluded, I have compiled some "fun fact" stats in these tables. I have not included categories which can easily be viewed in the overview table. Also, these numbers are derived from the file with correct bomb and powerup states. ### Most points in chip rounds | Team | Score | | ----------------------- | ----- | | SplitteMilaBramseil | 497 | | MilaysianBucketBoys | 420 | | Milady’s Cmilax | 403 | | Mast69urbinho | 399 | | $jeik og betalt | 392 | | AC Mila | 390 | | Henriks H&#229;ndjagere | 384 | | The KaneSaw Massacre | 360 | | Skodad Octavia | 325 | ### Most points in non chip rounds | Team | Score | | ----------------------- | ----- | | AC Mila | 2202 | | MilaysianBucketBoys | 2096 | | $jeik og betalt | 2066 | | Mast69urbinho | 2060 | | Milady’s Cmilax | 2032 | | Henriks H&#229;ndjagere | 2022 | | Skodad Octavia | 1996 | | SplitteMilaBramseil | 1924 | | The KaneSaw Massacre | 1785 | ### Best tripple captains | Team | Score | | ----------------------- | ----- | | The KaneSaw Massacre | 127 | | Mast69urbinho | 122 | | SplitteMilaBramseil | 103 | | Skodad Octavia | 95 | | MilaysianBucketBoys | 91 | | $jeik og betalt | 91 | | AC Mila | 90 | | Milady’s Cmilax | 79 | | Henriks H&#229;ndjagere | 76 | ### Best wildcarders | Team | Score | | ----------------------- | ----- | | MilaysianBucketBoys | 168 | | $jeik og betalt | 158 | | Henriks H&#229;ndjagere | 148 | | Mast69urbinho | 144 | | AC Mila | 142 | | SplitteMilaBramseil | 140 | | Milady’s Cmilax | 114 | | The KaneSaw Massacre | 111 | | Skodad Octavia | 72 | ### Best bench boosters | Team | Score | | ----------------------- | ----- | | MilaysianBucketBoys | 146 | | AC Mila | 143 | | Henriks H&#229;ndjagere | 142 | | $jeik og betalt | 127 | | Mast69urbinho | 117 | | Skodad Octavia | 111 | | The KaneSaw Massacre | 104 | | SplitteMilaBramseil | 100 | | Milady’s Cmilax | 56 | ### Best free hitters | Team | Score | | ----------------------- | ----- | | Milady’s Cmilax | 154 | | SplitteMilaBramseil | 154 | | Skodad Octavia | 47 | | The KaneSaw Massacre | 18 | | Henriks H&#229;ndjagere | 18 | | Mast69urbinho | 16 | | $jeik og betalt | 16 | | AC Mila | 15 | | MilaysianBucketBoys | 15 | ### Max mila score in a game week | Team | Score | | ----------------------- | ----- | | Mast69urbinho | 16.00 | | The KaneSaw Massacre | 15.00 | | MilaysianBucketBoys | 12.78 | | SplitteMilaBramseil | 12.40 | | AC Mila | 11.00 | | Henriks H&#229;ndjagere | 11.00 | | $jeik og betalt | 9.40 | | Milady’s Cmilax | 7.00 | | Skodad Octavia | 6.19 | ### Most mila points from powerups | Team | Score | | ----------------------- | ------ | | The KaneSaw Massacre | 4.50 | | Milady’s Cmilax | 1.00 | | Henriks H&#229;ndjagere | -0.50 | | AC Mila | -2.00 | | SplitteMilaBramseil | -3.50 | | Mast69urbinho | -4.00 | | MilaysianBucketBoys | -4.50 | | $jeik og betalt | -10.00 | | Skodad Octavia | -12.00 | ### Most unique players in lineup during season | Team | # | | ----------------------- | --- | | Henriks H&#229;ndjagere | 80 | | AC Mila | 70 | | Mast69urbinho | 69 | | Milady’s Cmilax | 65 | | MilaysianBucketBoys | 65 | | SplitteMilaBramseil | 63 | | The KaneSaw Massacre | 61 | | $jeik og betalt | 59 | | Skodad Octavia | 54 | ### Most unique teams in lineup during season | Team | # | | ----------------------- | --- | | Henriks H&#229;ndjagere | 20 | | AC Mila | 19 | | MilaysianBucketBoys | 19 | | SplitteMilaBramseil | 19 | | The KaneSaw Massacre | 19 | | Skodad Octavia | 18 | | $jeik og betalt | 18 | | Mast69urbinho | 18 | | Milady’s Cmilax | 18 |
Awards
Sam - 2 min read

Tech update - omskriving av rules engine đŸ€–

Backend prosesseringen til Milabowl bĂŠrer mye preg av teknsik gjeld og dĂ„rlig struktur som fĂžlge av mange snarveier nĂ„r man gikk fra live applikasjon i Azure til Github Pages. En omfattende omskrivning nĂŠrmer seg nĂ„ slutten. Hovedfokuset er Ă„ senke terskelen for Ă„ legge til nye regler. Dette blir gjort ved Ă„ ta i bruk en helt ny rules engine, "MilaEngine"đŸ§™đŸŒâ€â™‚ïž. Det eneste man trenger for Ă„ legge til en ny regel er Ă„ implementere `IMilaRule` interfacet, deretter skjer alt automagisk: ```csharp public record MilaRuleResult(string RuleName, string RuleShortName, decimal Points); public interface IMilaRule { MilaRuleResult Calculate(MilaGameWeekState userGameWeek); } ``` Alle implementasjoner vil automatisk bli plukket opp av .NET sin DI container, og automatisk kalkulert og lagt inn i game_state.json. Frontendend vil ogsĂ„ bli oppdatert til Ă„ automatisk plukke opp alle nye regler, og rendre nye regler. For Ă„ forenkle enda mer kan man implementere den abstrakte klassen `MilaRule`. Man mĂ„ da sette et ShortName (som vil dukke opp i tabellene i front end), og en metode for Ă„ beregne poeng. Regelen vil dukke opp med samme navn som klassen i JSON resultatet. ```csharp public abstract class MilaRule : IMilaRule { protected abstract string ShortName { get; } protected abstract decimal CalculatePoints(MilaGameWeekState userGameWeek); public MilaRuleResult Calculate(MilaGameWeekState userGameWeek) { return new MilaRuleResult(GetType().Name, ShortName, CalculatePoints(userGameWeek)); } } ``` For Ă„ vise hvor enkelt det blir Ă„ legge til en ny regel kan vi se pĂ„ implementasjonen av regelen for gult kort: ```csharp public class YellowCards : MilaRule { protected override string ShortName => "YC"; protected override decimal CalculatePoints(MilaGameWeekState userGameWeek) { return userGameWeek.User.Lineup .Where(pe => pe.YellowCards == 1) .Sum(pe => pe.Multiplier); } } ``` For Ă„ sikre at nye regler fungerer som tenkt vil byggen feile ❌ om man ikke har lagt til minst en test pr. regel. I tillegg til Ă„ gjĂžre det enklere Ă„ legge til nye regler, vil prosesseringene gĂ„ mye raskere og favhengigheten til SQL databasen i bunn blir fjernet. Planen er Ă„ ta nĂ„vĂŠrende lĂžsning for import av data til SQL, lage et eget prosjekt og rename det til Milalytics, sĂ„ man fortsatt har mulighet Ă„ analysere FPL / Mila data med SQL (spesielt handy rundt MilaAwards). NB: Navn pĂ„ klasser og interfaces er fortsatt i endring
Tech
Anders - 4 min read

Hyttetur og beste lagnavn

I naturskjĂžnne omgivelser i Krokskogen i Nordmarka var det duket for historiens fĂžrste avstemning av beste lagnavn _fĂžr_ sesongen begynner! Dette ble selvfĂžlgelig innfĂžrt for Ă„ hindre taktisk stemming pĂ„ slutten av sesongen, som kan eller ikke kan ha vĂŠrt et problem tidligere Ă„r. Vi ankom hytta pĂ„ fredag ettermiddag og kveld, fĂžrst var Markus, Simen, Martin og Eivind (med bil lol), deretter kom Henrik og Anders pĂ„ sykkel đŸ’Ș. Bilgutta disket opp med sĂ„rt trengt fransk pasta Ă  la SĂŻmĂ©n đŸ‘šâ€đŸłđŸ‡«đŸ‡·, noe som ble meget godt mottatt, spesielt av litt underernĂŠrte syklister. ### - Valg mĂ„ tas PĂ„ kvelden ble det Secret Hitler, der de liberale nok fikk en alt for enkel jobb med Ă„ skjĂžnne at Hitler var helt borte vekk begge ganger pĂ„ rad. Valg mĂ„tte tas, og Eivind valgte Ă„ dra hjem đŸ„ž (han hadde sikkert en god grunn) LĂžrdagen startet dĂ„rlig med tap for Japan i fotball-VM, med en meget svak prestasjon av de norske damene đŸ˜„ VĂŠret var rimelig dĂ„rlig sĂ„ istedenfor Ă„ gĂ„ ut pĂ„ tur, klinte vi til med Markus sin evige vĂ„te drĂžm - poker.\ Resultat: Markus 📈, resten 📉 ### My precious Heldigvis letta vĂŠret sĂ„ vi kunne ta turen ned til vannet og bade. Badeturen ble stort sett preget ev Ă©n ting, nemlig Martins 360 sidespin no-scope backflip fra stupebrettet. Dette imponerte Henrik sĂ„ mye at han bestemte seg for Ă„ sparke av Anders sin giftering med tĂŠrne sine, i vannet. Det var kanskje ikke med vilje, men det var jo litt kjipt forsĂ„vidt sĂ„ vi prĂžvde Ă„ finne ringen da. Med grumsete, vanskelige grunnforhold, og etter _timesvis_ med leting og god hjelp fra alle, inkludert Damtjerns store sĂžnn, Atle, fant Markus utrolig nok ringen i et siste Hail-Mary-forsĂžk (bilde nederst)! Anders ble glad - sĂ„ glad faktisk at han ga Markus hele 1.69 Milapoeng. Hvordan dette medregnes i totalsummen pĂ„ slutten av sesongen, mĂ„ nesten vĂŠre opp til sekretĂŠriatet âœđŸ» ### Avstemning: Beste lagnavn Men sĂ„ til helgens stĂžrste event: Avstemning av beste lagnavn 🏆 PĂ„ dette tidspunket hadde ogsĂ„ Malte joinet gjengen pĂ„ hytta via buss, da sjĂ„fĂžr Sam hadde blitt syk. PĂ„ tide Ă„ fĂ„ seg lappen, Malte? đŸŽïž Markus og Simen hadde laget i stand et valglokale der Ă©n og Ă©n ble presentert med alle lagnavn, uten Ă„ vite hvem de hĂžrte til. Deretter skulle vi rangere dem fra best til verst, samtidig som vi filmet oss selv (đŸ€€) for Ă„ fange opp fĂžrsteinntrykket vĂ„rt. Lykke til med redigeringsjobben, noen! 😃 (Det var ogsĂ„ visstnok en shot i lokalet, men hvem vet). ### Resultatet Det var bred enighet om at Ă„rets deltakere hadde rekordsterke lagnavn, og etter en nervepirrende opptelling, kunne valget erklĂŠres gyldig! **Vinneren ble Simen med sine "Milaysian bucket boys", og hanker dermed inn hele 5 Milapoeng! Gratulerer! đŸ‡ČđŸ‡ŸđŸȘŁđŸ‘ŠđŸ»** PĂ„ andre plass finner vi Sam med hans "$jeik og betalt", og pĂ„ tredje har vi Maltes "The KaneSaw Massacre". De tar med seg henholdsvis 3 og 1 poeng inn i sesongen. PĂ„ de tre siste plassene finner vi Martins "AC Mila" pĂ„ 7., Henriks "Masturbinho" pĂ„ 8. og Mikkels "Milady's Cmilax", aka "Semilaksen", pĂ„ 9. Det er mye man kan si om de ulike navnene, men at Henriks HĂ„ndjagere skulle tilhĂžre en annen enn Henrik, og Skodad Octavia skulle tilhĂžre en annen enn Octavia-pappaene - det var overraskende. At Milady's Cmilax gjorde det sĂ„pass svakt var ingen overraskelse for hyttedeltakerne der og da, men navnet har muligens vokst pĂ„ oss i ettertid? SĂ„ som alle store kunstnere kan kanskje ikke heller Mikkel hĂžste anerkjennelse i sin tid. Et annet notat undertegnede gjĂžr seg er at 6 av 9 spillere i ligaen har fornavn pĂ„ 6 bokstaver, og de 3 resterende har fĂŠrre bokstaver og havnet samtidig pĂ„ de 3 Ăžverste plassene.. Collusion?!? đŸ€” VAR?!?⚠ Her er tabell, nĂ„ tar jeg kveld. | Plassering | Playah | Lagnavn | Milapoeng | | :--------- | :----- | :-------------------- | :-------- | | 1 👑 | Simen | Milaysian bucket boys | 5 | | 2 | Sam | $jeik og betalt | 3 | | 3 | Malte | The KaneSaw Massacre | 1 | | 4 | Anders | SplitteMilaBramseil | 0 | | 5 | Eivind | Henriks HĂ„ndjagere | 0 | | 5 | Markus | Skodad Octavia | 0 | | 7 | Martin | AC Mila | -1 | | 8 | Henrik | Masturbinho | -2 | | 9 đŸ’© | Mikkel | Milady's Cmilax | -3 | ![My precious](../../../assets/my-precious.jpg)
Awards
Home Standings Team Blog