Fra og til

I slutning af forrige uge blev jeg færdig (ahem, "færdig") med forbedringer til blinde brugere. Det sendte jeg afsted til afprøvning af nogle rigtige blinde brugere og resultatet var klart: det fungerer ikke super godt. Eller, det fungerer fint når jeg bruger app'en på min test maskine men anderledes og ringere når jeg gør det på min egen telefon og når mine test personer bruger den. Suk.

Samtidig viser det sig at det ikke kun er seende brugere der lige skal vænne sig til den måde man søger efter ruter men også blinde. Problemet er specielt at det er det allerførste nye brugere skal så det skal altså bare køre som smurt i olie. Og det gør det ikke. Så jeg er resigneret til at jeg kommer til at lave det om igen-igen, det bliver altså tredje forsøg. Jeg har i god ide om hvordan jeg gerne vil lave om og det burde forenkle det både i koden, for seende brugere og for blinde. Det er bare noget der kommer til at sluge noget tid.

Efter jeg var blevet "færdig" med forbedringerne forrige uge men før jeg vidste at det ikke fungerede var jeg hoppet med begge ben ud i nogle ret omfattende ændringer og dem har jeg arbejdet videre på indtil nu. Det er lidt langhåret at forklare hvad de består i men kort fortalt skrev jeg lang det meste af app'en om fra at være specifikt til android til at være lavet i C++ så det kunne bruges både på android og iOS. Der er dog stadig nogle få lommer af kode tilbage til android og en af dem er den kode der arbejder med bogmærker, hvilket betyder at C++ koden ikke kan få adgang til dem – de lever udenfor dens verden. Til noget af det næste jeg skal lave har C++ koden brug for at have den adgang så jeg har skullet flytte bogmærkerne fra android til C++. Det har så trukket forskellige andre ting med sig som har gjort strukturen meget enklere og mere generel, hvilket er super, men det har bare taget lidt tid. Det nærmer sig enden nu dog.

En ting der pludselig blev nem at lave var at vise hvor på en tur fra og til stoppene lå. Jeg har nu lavet det sådan at det bliver tegnet når man ser en tur, det er markeret hvor man skal stå på og af. Jeg ved ikke om det var det allervigtigste jeg kunne have lavet men når informationen nu var grydeklar alligevel tog det ikke lang tid at lave.

Jeg er lidt i tvivl om hvad det næste bliver jeg tager hul på men det kunne godt blive den nye måde at søge efter ruter.

Hvor langt er du?

Jeg arbejder stadig det meste af tiden med at gøre app'en nemmere at bruge for blinde men er langsomt begyndt at kigge lidt fremad på nogle nye ideer. En af de ting jeg tænker måske at kigge på lidt senere på året er at få app'en til at kunne følge med i hvor langt du er på en rejse.

Jeg er ved den absolutte begyndelse af at finde ud af hvordan det skal fungere og der hvor jeg er startet er med at kigge på: hvis jeg kender din position og ved hvor en rute går hvordan finder jeg så ud af hvor på ruten det svarer til? Den tilgang jeg har forsøgt mig med i dag virker okay lovende. Jeg deler ruten ind i linjer mellem hvert par af stop der kommer efter hinanden og du finder ud af hvilke stop du er mellem ved at finde det linjesegment der er tættest på dig og så tage stoppene i hver ende.

Jeg har afprøvet det ved lave et lille program der kan tage et billede hvor der er indtegnet nogle linjesegmenter i forskellige farver og så tegner den de områder der hører til hver segment.

Der er lang vej igen men det ligner et sted at starte. Næste trin er at finde ud af: okay du er mellem de her to stop – men hvor meget af vejen mellem dem har du tilbagelagt?

Nærmeste færdig

Bare en kort opfølgning: det er med i næste opdatering at man får vist de nærmeste transportformer først når man søger på ruter. Her er hvordan rækkefølgen er i Kastrup, Aarhus C, Frederikshavn og Ystad:

Nærheden mellemregninger

Jeg blev færdig med koden til at kunne finde hvilke trafikselskaber og transportformer der er i nærheden i sidste uge. Jeg mangler stadig at binde det ind i brugergrænsefladen, det gør jeg i dag, men nu er funktionaliteten der i hvert fald sådan at hvis man giver et punkt og en radius kan man få en liste tilbage af hvilke trafikselskaber og transportformer er der i det område. De er sorteret efter omtrent afstand hvor omtrent betyder i værste tilfælde op til +/- 10 km.

For at checke om resultaterne ser rimelige ud har jeg prøvet lidt forskellige steder rundt i Danmark og er blevet overrasket et par gange. Her er et par eksempler.

Aakirkeby:
$ atb query_grid --type agencies --radius 50 55.070895 14.920060
+----+---------+------------------+
| id | dist_km | name             |
+----+---------+------------------+
| 0  | 0       | Bornholms Trafik |
| 28 | 0       | Rute700          |
| 9  | 15      | Mols-Linien      |
+----+---------+------------------+
$ atb query_grid --type route_types --radius 50 55.070895 14.920060
+----+---------+-------+
| id | dist_km | name  |
+----+---------+-------+
| 3  | 0       | BUS   |
| 4  | 15      | FERRY |
+----+---------+-------+
Mols-Linien på Bornholm? Det viser sig at den er god nok -- Rønne-Ystad er teknisk set Mols-Linien.

Skagen:
$ atb query_grid --type agencies --radius 50 57.724226 10.598802
+----+---------+------+
| id | dist_km | name |
+----+---------+------+
| 3  | 0       | NT   |
+----+---------+------+
$ atb query_grid --type route_types --radius 50 57.724226 10.598802
+----+---------+-------+
| id | dist_km | name  |
+----+---------+-------+
| 2  | 0       | TRAIN |
| 3  | 0       | BUS   |
| 4  | 35.3553 | FERRY |
+----+---------+-------+
Kun et trafikselskab men tre transportformer? Den er osse god nok, NT har både busser, tog, og færger.

Aarhus C:
$ atb query_grid --type agencies --radius 50 56.154194 10.214894
+----+---------+-------------+
| id | dist_km | name        |
+----+---------+-------------+
| 1  | 0       | DSB         |
| 3  | 0       | NT          |
| 7  | 0       | Midttrafik  |
| 10 | 0       | Arriva tog  |
| 6  | 29.1548 | Rejseplanen |
| 25 | 32.0156 | Samsø Bus   |
| 19 | 50      | Sydtrafik   |
+----+---------+-------------+
$ atb query_grid --type route_types --radius 50 56.154194 10.214894
+----+---------+-------+
| id | dist_km | name  |
+----+---------+-------+
| 2  | 0       | TRAIN |
| 3  | 0       | BUS   |
| 5  | 0       | TRAM  |
| 4  | 29.1548 | FERRY |
+----+---------+-------+
Ikke de store overraskelser der andet måske end at Samsø er tættere på Århus i lige linje end jeg ville have troet -- kun 30 km.

Frederiksberg:
$ atb query_grid --type agencies --radius 50 55.673477 12.521350
+----+---------+-------------------------------+
| id | dist_km | name                          |
+----+---------+-------------------------------+
| 1  | 0       | DSB                           |
| 4  | 0       | Movia                         |
| 13 | 0       | DSB S-tog                     |
| 14 | 0       | Metroselskabet                |
| 28 | 5       | Rute700                       |
| 17 | 5       | Gråhundbus                    |
| 12 | 10      | Movia                         |
| 23 | 28.2843 | Öresundståg                   |
| 22 | 40.3113 | Sporvejsmuseet Skjoldenæsholm |
| 6  | 41.2311 | Rejseplanen                   |
+----+---------+-------------------------------+
$ atb query_grid --type route_types --radius 50 55.673477 12.521350
+----+---------+---------+
| id | dist_km | name    |
+----+---------+---------+
| 1  | 0       | METRO   |
| 2  | 0       | TRAIN   |
| 3  | 0       | BUS     |
| 6  | 0       | S_TRAIN |
| 4  | 5       | FERRY   |
+----+---------+---------+ 

Nærheden

Denne uge har jeg arbejdet på at gøre A til B nemmere at bruge for blinde. Det lyder måske langhåret men jeg fik en masse feedback sidste uge jeg går ud fra og det der skal laves om er ikke så omfattende som jeg havde frygtet. Det der er langhåret ved det er at selv hvis du ved hvordan du gerne vil have din app til at fungere er TalkBack på android uhyggeligt tungt at danse med.

Som en afveksling når jeg bliver frustreret er jeg begyndt at arbejde på noget jeg længe gerne har villet lave. Der er flere steder jeg viser lister af ting hvor det der er relevant afhænger af hvor du befinder dig i landet. F.eks transportformer: hvis du er i København er det typisk relevant at se metro, det er det ikke hvis du er i Århus. Tilsvarende er det typisk relevant at se letbanen hvis du er i Århus men ikke i København. Tilsvarende med trafikselskaber: hvis du er i Aalborg er det typisk mere relevant at se NT end Fynbus. Og så videre. Så jeg vil gerne kunne ordne listerne baseret på hvor du er.

For at kunne det har jeg brug for at vide hvad der er relevant forskellige steder i landet og kunne slå op, givet et bestemt sted brugeren befinder sig: hvad er relevant lige her. Min løsning er i store træk at lave nogle små, meget grove, kort som giver hvad der findes forskellige steder. Her er kortene for hvilke transportformer der findes, der er et for hver type:

De er, i rækkefølge, metro, tog, bus, færge, letbane, og s-tog. Tilsvarende gemmer jeg kort der giver hvilke trafikselskaber der er i hvilke dele af landet, her er et udsnit:

De er Samsø Bus, Arriva, Sydtrafik, DSB, og Movia.

Hvis jeg kan finde ud af at få det til at spille i forhold til at bede om den nuværende position (det er altid langhåret på grund af tilladelser og den slags) vil transportformer blive vist i rækkefølge i forhold til hvor man befinder sig. Trafikselskaberne bliver ikke brugt endnu men det kommer på længere sigt.