← Tilbage til bloggen

Fra et stykke træ til App Store

For cirka tyve år siden trak min studiekammerat og jeg et stykke træ ud af en container, tegnede et gitter på det med en lineal, købte nogle glassten fra en kunst- og håndværksbutik for en snes kroner og begyndte at spille go. Jeg anede ikke, hvad jeg lavede. Det gør jeg egentlig stadig ikke. Men noget ved spillet greb mig med det samme — den måde noget tilsyneladende så enkelt kan være så umuligt dybt på. Et 19×19-gitter. Sorte og hvide sten. Regler, man kan lære på fem minutter. Og alligevel kunne verdens kraftigste computere på det tidspunkt ikke slå en stærk menneskelig spiller. Det fascinerede mig.

En tidlig besættelse

Den fascination gik dybt nok til, at mit afsluttende projekt på Kingston University handlede om computersyn — jeg håndkodede en algoritme til at aflæse tilstanden på et go-bræt fra et fotografi med over 87% nøjagtighed. For begyndelsen af 2000'erne, før det store gennembrud inden for deep learning, var jeg stille og roligt stolt af det.

Omtrent på samme tid besøgte jeg Japan i to uger specielt for at opleve go-kulturen på nærmeste hold og spille mod lokale spillere. Jeg tabte hvert eneste parti. Et parti skiller sig ud: en ung mand, sandsynligvis på dan-niveau, meget genert, med iøjnefaldende lange negle, ledsaget af sin far. Jeg blev fuldstændig knust, inden jeg overhovedet forstod, hvad der var sket — det tog mig et stykke tid at indse, at jeg var nødt til at opgive.

Hver go-salon, jeg besøgte, var så tyk af cigaretrøg, at det næsten var umuligt at gennemføre et parti uden frisk luft — og jeg er selv ryger. Spillerne var næsten udelukkende ældre. Go syntes at være en fritidsbeskæftigelse for dem i de gyldne år, hvilket forundrede mig i betragtning af Japans ry for teknologi og innovation. Ingen syntes at forbinde go med databehandling. Ikke endnu, i hvert fald.

Det lange hul

Livet gik videre. Jeg arbejdede som Java-udvikler, tilbragte et år hos Accenture under studietiden (i løbet af hvilket alt mit hår faldt ud af stress) og endte til sidst med at være arbejdsløs i lang tid efter helbredsproblemer. Mine Java-færdigheder blev stadigt mere irrelevante, efterhånden som branchen bevægede sig videre uden mig. Jeg forsøgte at indhente det forsømte, men kløften var vokset for stor — og opdagede, at lønningerne i den del af branchen faktisk var gået ned. Det var ikke besværet værd.

Gennem det hele blev jeg ved med at spille go. Ikke seriøst — jeg har gået til Exeter Go Club på og af i ca. femten år, og jeg er en gennemsnitlig spiller i bedste fald. Men spillet slap aldrig sit tag i mig.

Det hele faldt på plads på én gang

Så skete der på bemærkelsesværdigt kort tid flere ting på én gang.

COVID-nedlukningen ramte. Jeg var ved at gå op ad væggene af kedsomhed, men var heldig nok til at have tre Apple-enheder — gaver fra familie og min partner. Jeg så AlphaGo-dokumentaren og blev elektrificeret. Det, jeg havde været fascineret af på universitetet — umuligheden af at en maskine mestrer go — var blevet løst. Og den AI-revolution, det satte i gang, var lige begyndt. ChatGPT kom. Så Claude. Derefter annoncerede Apple Vision Pro.

Jeg begyndte at lege med KataGo og bemærkede, at det ikke havde en ordentlig App Store®-grænseflade. Jeg kiggede på de go-apps, der var tilgængelige til iPhone® og iPad®, og de var... fine. Funktionelle. Men ingen af dem havde nogen tilgængelighedsfunktioner. Ikke én eneste go-app i hele App Store erklærede support for VoiceOver, Voice Control, Dynamic Type eller nogen af Apples tilgængelighedsstandarder. Ikke én.

For et spil, der har været spillet af blinde mennesker i årtier — med hævede taktile brætter i Japan, hos Det Franske Go-forbund, i Korea — føltes den totale mangel på en digitalt tilgængelig version som en kløft, der ikke burde eksistere. Blinde go-spillere var fuldstændig låst ude af app-økosystemet.

Det hele konspirerede på én gang og faldt på plads. Jeg ville lære iOS-udvikling fra bunden, bruge AI-værktøjer til at accelerere læringen og bygge en go-app, som alle kunne spille — seende eller ej.

At starte fra nul

Den 1. juli 2024 oprettede jeg et tomt Xcode-projekt kaldet "RenderedGoApp" — ikke et særlig inspirerende navn. Jeg vidste ingenting om Swift, SwiftUI, RealityKit eller nogen af Apples udviklingsplatforme. Jeg lærte alt selv gennem Apples officielle dokumentation og gratis WWDC-sessioner, uden formel uddannelse, bootcamps eller udviklerevenements.

To uger senere, den 17. juli, omdøbte jeg det til "Goban3D". En goban er det traditionelle japanske navn for det tykke træbræt med ben, som go spilles på. Navnet føltes rigtigt — det var i overensstemmelse med Apples navngivningsstandarder og sagde præcis, hvad appen var.

Jeg modtog dysleksistøtte fra folkeskolen helt op til gymnasiet. Jeg ved, hvordan det er, når værktøjer ikke er bygget med dig i tankerne. Så fra den allerførste kodelinje var tilgængelighed ikke en eftertanke — det var grunden til, at projektet overhovedet eksisterede.

SceneKit-katastrofen

Et af de sværeste øjeblikke kom, da Apple forældet SceneKit — det 3D-framework, jeg havde bygget hele brætscenen i. Jeg var blevet god til det. Scenen havde en sommerfugl, der flagrede rundt, græs, der bølgede, og fysikbaseret belysning. Det kørte smukt med minimal CPU-brug. Så annoncerede Apple, at det ville blive erstattet af RealityKit.

Jeg var rasende. Men med et engagement i at levere noget banebrydende og nul tolerance over for teknisk gæld vidste jeg, at hver eneste linje SceneKit skulle rives ud og erstattes. Sommerfuglen overlevede ikke. RealityKit er Apples nye flagskib, men det er et langt mere sultent udyr end sin forgænger — noget, jeg gerne ville diskutere med en Apple-ingeniør en dag.

Hvor vi er nu

I dag er Goban3D i ekstern beta på App Store til iOS og macOS. Den har 100% tilgængelighedsdækning på tværs af alle syv af Apples tilgængelighedskategorier — VoiceOver, Dynamic Type, Voice Control, Reduce Motion, Reduce Transparency, Sufficient Contrast og Differentiate Without Color. Den kører på alle iPhones fra 3,5"-SE til 6,9"-Pro Max, alle iPads fra 9,7" til 13", og native på Mac® via Catalyst. Det 3D-bræt er renderet i RealityKit med fysikbaserede materialer, der fanger lyset som rigtigt træ og sten. Der er også en ren 2D-tilstand, når man vil have enkelhed eller spare batteri.

Ingen uden for udviklingsprocessen ved, at den eksisterer endnu. Ingen pressedækning, ingen bevidsthed i fællesskabet, ingen eksterne betatestere. Dette blogindlæg er på en måde første gang, jeg fortæller nogen om det offentligt.

Hvad er det næste

Den absolut vigtigste prioritet er at finde betatestere med reelle tilgængeligheds­behov — blinde spillere, mennesker med nedsat syn, motoriske funktionsnedsættelser. Appen er bygget efter Apples standarder, men standarder er kun begyndelsen. Jeg har brug for rigtige mennesker til at fortælle mig, hvad der virker, hvad der ikke gør, og hvad jeg ikke har tænkt på. At finde dem vil være som at finde en enhjørning, men jeg giver ikke op. Alle skal med.

Hvis du har lyst til at prøve Goban3D, eller kender nogen, der ville have gavn af en tilgængelig go-app, hører jeg meget gerne fra dig. Send en e-mail til support@goban3d.com med emnelinjen "Beta Tester" og den Apple ID-e-mailadresse, du bruger til din iPhone, iPad eller Mac. Du vil modtage en TestFlight®-invitation kort tid efter.

Dette har været det sværeste og mest givende, jeg nogensinde har gjort. Fra et stykke træ i en universitetshybel til App Store — det tog tyve år, men vi kom i mål.