Ai-utmaningar med Halite under höstkonferensen

Förra veckan arrangerades den årliga höstkonferensen där anställda från LearningWells alla kontor samlas. Den här gången blev det två dagar med ai-utmaningar på Engsholms slott, strax utanför Södertälje.

Fokus i år var en programmeringsutmaning i Halite, ett opensource-baserat system för artificiell intelligens. I grunden är det ett spel där du med valfritt programmeringsspråk ska styra dina pixlar till att ta över spelplanen och utplåna övriga motståndare.

Göran Larsson var en av dem som arrangerade dagarna. Han säger att det blev en otroligt lyckad konferens, även om det var en del tekniskt strul innan matcherna kom igång.

”Det blev en skön teambuilding som hjälper oss att sprida kulturen på LearningWell, istället för att jobba utifrån en massa styrdokument.”

Göran Larsson visar den pixelbaserade spelplanen för Halite.
Göran Larsson visar den pixelbaserade spelplanen för Halite.


Från Fortran till C sharp

Alla personer delades in i grupper baserat på vilka programmeringsspråk de kände sig bekväma med. Här fanns kodare som höll på med allt från C sharp till Java och Python. Sedan fanns det även några stycken som aldrig tidigare hade programmerat. De fick ett kuvert med mutor som de kunde använda för att ta hjälp från övriga lag.

Några som innan tävlingen var självsäkra var Peter Karlsson och Claes-Erik Frölund, två av LearningWells grundare.

”Men vi valde dumt nog Fortran”, säger Claes-Erik en timme in i tävlingen. Han ler och erkänner motvilligt att ”det verkar ha hänt en hel del i programmeringsspråket sedan vi sist använde det i slutet av 70-talet. Vi borde kanske ha gjort som de andra och valt ett modernare språk.”

Storslam med NaughtyBot

Lagen möttes i ett antal divisioner och kvalade genom gruppspel sig vidare till finalen. Trots uppförsbacken och utmaningen att lära sig det nygamla programmeringsspråket lyckades Fortran-gänget ändå vinna sin division. Sedan tog det stopp.

De som kammade hem finalsegern blev till slut Staffan Palm, David Åberg och Erik Ytterberg. När tävlingen drog igång sa arrangörerna att deltagarna skulle ”döpa sina botar till nåt. Därför hette vår bot Notbot från början. Sedan döpte vi den till NaughtyBot när den blev allt bättre på att attackera.”

”Vi såg tävlingen som ett utmärkt tillfälle att lära oss ett nytt programmeringsspråk, men det blev för mycket”, erkänner Staffan. Till slut valde de att ge upp Googles språk Go och istället satsa på Python, som flera av dem använt tidigare.

Det var intressant att se hur det som började med en lek snart gick över till något mer seriöst. Vissa av kollegorna tog dagarna främst som ett bra tillfälle att snacka med de andra. Samtidigt fanns det ett fokuserat gäng som framåt kvällen fortfarande tyckte att bot-matcher var intressantare än vm-kvalmatchen Sverige-Italien.

Flera av grupperna passade på att fräscha upp sina färdigheter eller lära sig helt nya programmeringsspråk.
Flera av grupperna passade på att fräscha upp sina färdigheter eller lära sig helt nya programmeringsspråk.

Agil spelutmaning

När jag börjar samtalet med Staffan tror jag fortfarande att vi pratar om ett spel. Någonting avslappnat som bara kan ses som ett roligt tidsfördriv. Men ju längre diskussionen fortsätter desto mer förstår jag hur mycket spelet går att jämföra med jobblivet utanför Engsholms slott.

”Det var verkligen en agil utmaning”, säger Staffan. ”Ofta kände vi oss frestade att fortsätta förbättra redan befintliga funktioner, medan det i praktiken antagligen skulle ge mer värde att implementera en ny funktion innan det var dags för nästa match. Det som avgjorde att vi vann tävlingen var att vi hade en strategi för vad som hände när man stötte på andra motståndarbottar. Då blev vår bot väldigt aggressiv och försökte maximera möjligheterna att göra skada på flera fiendeenheter samtidigt. Så vi vann på ren brutalitet.”

Staffan berättar att metoden antagligen inte skulle fungera mot mer avancerade och smartare motståndare. Samtidigt var just det lösningen som ”under rådande förutsättningar fungerade bäst”.

Även om de inte tänkte på det under tiden så har de i efterhand dragit paralleller till agila arbetssätt och scrum-metoder. ”Det handlar om att prioritera det som ger mest nytta för stunden och kunden, istället för att gräva ner sig i detaljer. Finslipa kan man göra senare när det har blivit viktigare.”

Staffan beskriver hur de testade sin nya logik och kod mot tidigare versioner. Även om de gjorde små förändringar kunde det få stor genomslagskraft om beteendet upprepades många gånger. Åter igen ett agilt arbetssätt.

Sugen på Halite?

De två dagarna verkar enbart ha gett mersmak. Veckan efter konferensen dök ett meddelande upp på ett av företagets Slack-kanaler. ”För alla som inte kan få nog av Halite efter höstkonferensen tänker vi nu dra igång matchspel varje vecka. Tanken är att matcher spelas varje måndag och resultaten meddelas på Slack. Joina #topic-halite om ni är intresserade!”

Vill du läsa mer om Halite kan du göra det på 2016.halite.io.