Några ord från Agical

Berättelsen om hur akvariet blev till

Eller; “Vaför jag valde att använda Rust och Macroquad för att utveckla en datavisualiseringsapplikation”

Att använda ett akvarium för datavisualisering är något jag har funderat över längre än jag kan minnas. Därför är jag inte helt säker på hur jag kom på idén. Men jag har alltid tyckt att statiska grafer är ganska tråkiga att titta på. Däremot är en skärmsläckare med fiskar som simmar omkring mer rofyllt.

Tidiga försök

Innan jag gjorde den här versionen har jag gjort flera andra försök som det aldrig blev något av. En gång i tiden laddade jag ner en skärmsläckare skriven i C. Tyvärr var det alldeles för krångligt att få den att ens kompilera med en modern C-kompilator, så det blev inget av det den gången.

En annan gång försökte jag lära mig att använda spelmotorn Unity, som jag varit intresserad av att prova länge.

Jag gillar dock inte att använda en IDE och klicka runt i ett komplicerat gränssnitt. Inte heller är jag speciellt intresserad av att lära mig att programmera C#. Dessutom verkade alla guider vara videos och jag föredrar att läsa mig till information.

Så jag avfärdade Unity.

Rusty Aquarium

När vi fick två stora TV-skärmar för att visa analysdata hos en kund bestämde jag mig för att ta upp akvarieidéen igen. Det är mycket roligare att jobba med analyser när slutresultatet är vackert.

Anledningen till att jag valde programmeringsspråket Rust var huvudsakligen för att jag varit intresserad av att prova det ett tag. Jag hade läst en bok om det, men aldrig riktigt kodat något i det själv. En kollega tipsade om en poddcast där Fedor Logachev intervjuades om sin spelmotor Macroquad, och det verkade passa mig.

Macroquad verkade väldigt lätt att använda. En annan fördel var möjligheten att kompilera till WebAssembly så det kan användas i en webbsida.

Spelmotorn Macroquad

Macroquad är lika simpelt som det är enkelt. Det är ett spelbibliotek som kan korskompileras till flera olika datorplattformar och till WebAssembly.

Att börja med Macroquad var väldigt enkelt. Det finns många exempel att utgå ifrån, och koden är lätt att följa.

Första versionen var en boll som studsade runt på skärmen, som baserades på ett av exemplen. Att lägga till en fiskbild var enkelt och gjorde att det såg mer ut som ett akvarium.

Att kompilera för WebAssembly var lika enkelt. Det är vara att lägga till `wasm32-unknown-unknown` som build target för Rust och kompilera. Den kompilerade WASM-filen kan sedan inkluderas i en HTML-sida tillsammans med en liten javascript-fil.

Det var otroligt inspirerande att få igång något så fort. Inom några minuter hade jag ett enkelt akvarium med fiskar som simmade runt slumpmässigt på en webbsida. Eftersom Macroquad är ett spelbibliotek så spenderade jag en del tid på grafiken och implementerade en shader. Därefter började jag arbeta med att läsa in data för att kontrollera fiskarnas rörelser.

Äntligen klar

Efter all denna tid så är det väldigt tillfredsställande att dagligen se det simulerade akvariet på en skärm på väggen på jobbet. Att se kollegor titta på fiskarna och ställa frågor om vad dom olika fiskarna betyder. Det är också roligt att höra om andra som har satt upp akvarier på deras arbetsplatser.