Fra et trestykke til App Store
For omtrent tjue år siden dro jeg og romkameraten min fra universitetet et trestykke ut av en container, tegnet et rutenett på det med en linjal, kjøpte noen glasssteiner fra en kunst- og håndverksbutikk for omtrent tre pund og begynte å spille Go. Jeg ante ikke hva jeg drev med. Det gjør jeg fortsatt ikke, egentlig. Men noe med spillet grep meg umiddelbart – måten noe så tilsynelatende enkelt kunne være så umulig dypt. Et 19×19 rutenett. Svarte og hvite steiner. Regler du kan lære på fem minutter. Og likevel, på den tiden, kunne ikke de kraftigste datamaskinene på jorden slå en sterk menneskelig spiller. Det fascinerte meg.
En tidlig besettelse
Den fascinasjonen var dyp nok til at mitt sisteårsprosjekt ved Kingston University handlet om datasyn – jeg håndkodet en algoritme for å lese tilstanden til et Go-brett fra et fotografi, og oppnådde en nøyaktighet på over 87 %. Tidlig på 2000-tallet, før eksplosjonen av dyp læring, var jeg stille og rolig stolt av det.
Rundt samme tid besøkte jeg Japan i to uker, spesielt for å oppleve Go-kulturen på nært hold og spille mot lokale spillere. Jeg tapte hver eneste kamp. Én kamp skiller seg ut: en ung mann, sannsynligvis på dan-nivå, veldig sjenert, med påfallende lange negler, i følge med faren sin. Jeg var fullstendig knust før jeg i det hele tatt skjønte hva som hadde skjedd – det tok en stund før jeg merket at jeg måtte gi meg.
Alle Go-salongene jeg besøkte var så tykke av sigarettrøyk at det var nesten umulig å komme seg gjennom en kamp uten frisk luft – og jeg er selv røyker. Spillerne var nesten utelukkende eldre. Go virket som en tidsfordriv for de i gullalderen, noe som forvirret meg gitt Japans rykte for teknologi og innovasjon. Ingen så ut til å koble Go til databehandling. Ikke ennå, i hvert fall.
Det lange gapet
Livet gikk videre. Jeg jobbet som Java-utvikler, tilbrakte et år hos Accenture under universitetet (hvor alt håret mitt falt av på grunn av stress), og endte til slutt opp med å bli arbeidsledig i en lengre periode på grunn av helseproblemer. Java-ferdighetene mine ble stadig mer irrelevante etter hvert som bransjen gikk videre uten meg. Jeg prøvde å ta igjen det tapte, men gapet hadde blitt for stort – og oppdaget at lønningene i den delen av bransjen faktisk hadde gått ned. Det var ikke verdt det.
Gjennom alt dette fortsatte jeg å spille Go. Ikke seriøst – jeg har gått på Exeter Go Club av og på i omtrent femten år, og jeg er en gjennomsnittlig spiller i beste fall. Men spillet slapp meg aldri.
Alt klikket på én gang
Så, over en bemerkelsesverdig kort periode, skjedde det flere ting samtidig.
COVID-nedstengningen slo til. Jeg klatret på veggene uten noe å gjøre, men jeg var så heldig å ha tre Apple-enheter – gaver fra familie og partneren min. Jeg så AlphaGo-dokumentaren og ble elektrifisert. Det jeg hadde vært fascinert av på universitetet – umuligheten av en maskin som mestret Go – var løst. Og AI-revolusjonen den startet var akkurat i startfasen. ChatGPT kom. Så Claude. Så annonserte Apple Vision Pro.
Jeg begynte å leke med KataGo og la merke til at det ikke hadde et skikkelig App Store®-grensesnitt. Jeg så på Go-appene som var tilgjengelige for iPhone® og iPad®, og de var ... fine. Funksjonelle. Men ingen av dem hadde noen tilgjengelighetsfunksjoner. Ikke en eneste Go-app i hele App Store erklærte støtte for VoiceOver, talekontroll, dynamisk type eller noen av Apples tilgjengelighetsstandarder. Ikke én.
For et spill som har blitt spilt av blinde i flere tiår – ved bruk av taktile brett med hevede linjer i Japan, hos det franske Go-føderasjonen og i Korea – føltes det fullstendige fraværet av en digitalt tilgjengelig versjon som et gap som ikke burde eksistere. Blind Go-spillere hadde blitt fullstendig utestengt fra appens økosystem.
Alt konspirerte på en gang og bare klikket på plass. Jeg ville lære meg selv iOS-utvikling fra bunnen av, ved å bruke AI-verktøy for å akselerere læringen, og jeg ville bygge en Go-app som alle kunne spille – seende eller ikke.
Starter fra null
1. juli 2024 opprettet jeg et tomt Xcode-prosjekt kalt «RenderedGoApp» – ikke et særlig inspirerende navn. Jeg visste ingenting om Swift, SwiftUI, RealityKit eller noen av Apples utviklingsteknologier. Jeg lærte meg selv alt gjennom Apples offisielle dokumentasjon og gratis WWDC-økter, uten formell opplæring, bootcamps eller utviklerarrangementer.
To uker senere, 17. juli, ga jeg den navnet «Goban3D». En goban er det tradisjonelle japanske navnet på det tykke trebrettet med bein som Go spilles på. Navnet føltes riktig – det samsvarte med Apples navnestandarder og sa nøyaktig hva appen var.
Jeg fikk dysleksistøtte fra barneskolen og gjennom hele universitetet. Jeg vet hvordan det er når verktøy ikke er laget med deg i tankene. Så helt fra første kodelinje var ikke tilgjengelighet en ettertanke – det var grunnen til at prosjektet eksisterte.
SceneKit-katastrofen
Et av de vanskeligste øyeblikkene kom da Apple avviklet SceneKit – 3D-rammeverket jeg hadde bygget hele brettscenen i. Jeg hadde blitt god på det. Scenen hadde en sommerfugl som flagret rundt, gress som svaiet og fysisk basert belysning. Det kjørte utmerket med minimal CPU. Så annonserte Apple at det ble erstattet av RealityKit.
Jeg var rasende. Men med en forpliktelse til å levere noe banebrytende, og nulltoleranse for teknisk gjeld, visste jeg at hver linje med SceneKit måtte rives ut og erstattes. Sommerfuglen overlevde ikke. RealityKit er Apples nye plakatbarn, men det er et mye mer sultent beist enn forgjengeren – noe jeg gjerne skulle diskutert med en Apple-ingeniør en dag.
Hvor ting står
I dag er Goban3D i ekstern betaversjon på App Store for iOS og macOS. Den har 100 % tilgjengelighetsdekning på tvers av alle syv av Apples tilgjengelighetskategorier – VoiceOver, Dynamisk tekst, Stemmekontroll, Reduser bevegelse, Reduser gjennomsiktighet, Tilstrekkelig kontrast og Differensier uten farge. Den kjører på alle iPhones fra 3,5" SE til 6,9" Pro Max, alle iPads fra 9,7" til 13", og direkte på Mac® via Catalyst. 3D-brettet gjengis i RealityKit med fysisk baserte materialer som fanger opp lys, som ekte tre og stein. Det finnes også en ren 2D-modus for når du ønsker enkelhet eller batterilevetid.
Ingen utenfor utviklingsprosessen vet at det eksisterer ennå. Ingen pressedekning, ingen bevissthet i lokalsamfunnet, ingen eksterne betatestere. Dette blogginnlegget er på en måte første gang jeg forteller noen om det offentlig.
Hva skjer nå?
Den største prioriteten er å finne betatestere med reelle tilgjengelighetsbehov – blinde spillere, personer med svaksyn, motoriske funksjonshemminger. Appen er bygget etter Apples standarder, men standarder er bare begynnelsen. Jeg trenger ekte mennesker som kan fortelle meg hva som fungerer, hva som ikke fungerer, og hva jeg ikke har tenkt på. Å finne dem vil være som å finne en enhjørning, men jeg gir ikke opp. Alle bør inkluderes.
Hvis du har lyst til å prøve Goban3D, eller kjenner noen som ville ha nytte av en tilgjengelig Go-app, vil jeg gjerne høre fra deg. Send en e-post til support@goban3d.com med emnefeltet «Beta-tester» og Apple-ID-en for iPhone, iPad eller Mac. Du vil motta en TestFlight®-invitasjon kort tid etter.
Dette har vært det vanskeligste og mest givende jeg noensinne har gjort. Fra et trestykke i en universitetsleilighet til App Store – det tok tjue år, men vi kom hit.