Skip links
Swift Alps konferencen

Swift Alps konferencen

Swift Alps. Som navnet antyder, er det en konference, der handler om alt, der er Swift-relateret, og som prikket over i’et finder den sted i de schweiziske alper – nærmere bestemt Crans-Montana området.

Dét, der gør denne konference anderledes, er formatet.

Frem for det traditionelle format, hvor talere præsenterer foran et publikum, fokuserer Swift Alps på workshops. Workshopsne har en mødeleder og et begrænset antal deltagere, der parvis arbejder og lærer sammen. Hver workshop tager 2 timer, og man kan deltage i 3 workshops pr. dag.

Emnerne for 2018 strækker sig fra accessibility til ARkit og reverse engineering – blot for at nævne et par stykker.

Swift Alps afholdes for tredje gang i 2018, og det er første gang, Nodes deltager. Læs også om Nodes og danske virksomheder på MWC her.

Chris and Peter deltog i konferencen den 29. Og 30. November. Her får du en kort opsummering fra vores Swift oplevelser i de schweiziske alper.

Torsdag…

vågnede vores hold op til den her udsigt

goodmorning 1024x768 1024x768 - Swift Alps konferencen

Kort tid efter var vi på vej ned til konferencen for at registrere os.

Efter registrering fulgte store mængder koffein og adgang til wifi samt en kort introduktion til de forskellige workshops. Og så var vi klar til at gå i gang.

Tordagens workshop inkluderede:

  • New generation networking with Swift-NIO by Florent Pillet
  • Level Up Your Debugging Skills by Carola Nitz
  • n “Intents” Guide to Custom Siri Shortcuts by Alexsander Akers
  • Reverse Engineering by Guilherme Rambo

Men den triste nyhed var, at man kun kunne vælge 3 ud af de 4 emner.

Ny networking generation med Swift-NIO

Jeg deltog i den workshop, der fokuserede på Swift NIO (som blev introduceret på dette års try! Swift Tokyo) og Network.framework (introduceret af Apple på dette års WWDC).

Formålet var at bygge videre på Florents iOS chat client med network.framework eller macOS chat server ved at bruge Swift NIO. Min partner og jeg valgte efter mange overvejelser at starte med client app’en.

På min arbejdsplads sætter man normalt networking-arbejdet op i starten af et projekt. Typisk ved at kopiere en kode, man er tilfreds med fra et tidligere projekt. Herefter er det blot at oversætte JSON til model objekter, som derefter kan bruges til dit “rigtige” arbejde.

Det var derfor sjovt og meget udfordrende at arbejde med at implementere en chat client fra bunden af. Vi startede med at lave en forbindelse ( og skulle beslutte, om vi ville gå med en TCP eller UDP), for herefter at se forbindelsen gå igennem de forskellige stadier, før den – forhåbentlig – blev etableret og sendte den rigtige data over netværket.

Apples nye Network.framework var godt at arbejde med, og det var gnidningsfrit med de forskellige handler closures og enums med associated values.

En interessant feature i Network.framework er NWPath og NWPathMonitor som man kan bruge til at overvåge forbindelsen og agere, hvis den ændrer sig – eller helt forsvinder. Det er meget interessant, når man f.eks. Koder en netværk monitor.

I det store hele var det en god workshop af Florent.

En inten(t)s guide til custom Siri shortcuts

Siri shortcuts var en af de helt store afsløringer på WWDC 2018. Der snakkes meget om de stærke powerflows, man kan føje til ens app for at gøre brugeroplevelsen bedre for både hardcorebrugere og de, der åbner appen lejlighedsvis. I Aleksanders workshop lærte vi om Siri shortcuts, og vi fokuserede på, hvordan intents framework virker, og hvordan man implementerer det i eksisterende apps.
Vi fandt hurtigt ud af, at der findes to vigtige elementer, når man udvikler Siri Shortcuts.

  1. At udvikle en ny shortcut er simpelt. Du skal bare lave en ny intent shortcut, fortælle den hvad den kan forvente af data, hvad den skal registrere, og hvilken action der kræves (voice call, madlevering, musikafspilning etc.). Byg den og kør. Den burde kommunikere med appen med det samme.
  2. At strukturere sin app, så den kan klare opgaver med den data, den modtager fra Siri er yderst komplekst. Da intent selv er en extension, har den ikke adgang til resten af din kodebase. Du skal opdele din kode i moduler, så logik placeres i forskellige services, som herefter kan importeres til den samme extension. Det kan være en kæmpe opgave at strukturere, hvis din app ikke allerede er sat op på denne måde.

Vi brugte omkring 20 minutter på at sætte intent op, og få Siri til at interagere med vores app. Den efterfølgende time blev brugt på at genskabe den eksisterende app, så den rigtige kode blev tilgængelig for Siri intent. Alt i alt var det en god øvelse, og det kastede lys over, hvad man kan forvente, når man udvikler en Siri shortcut.

Opgradér dine debugging evner

Indrømmet, jeg kan godt lide at debugge, det gør jeg faktisk. Det giver mig en fornemmelse af et programs flow, jeg kan se variablers værdi i et loop. Det er generelt et godt værktøj i min hverdag.

Og når vi nu hiver skeletterne ud af skabet, kan jeg afsløre, at mit debugging arbejde i Xcode normalt omhandler:

  • place a breakpoint
  • po interesting object
  • step
  • continue

Og det er det! Ja, jeg synes, at Advanced Debugging var mindblowing, og det førte også til et mindre nedbrud dagene efter, men det var hurtigt overstået.

Så der var helt klart muligheder for, at jeg kunne opgradere mine debugging evner.

Carola havde lavet en form for skattejagt, der introducerede os til forskellige features i lldb, mens vi var i lufthavnsterminalen. Vi lærte, at debugger skulle vente indtil en proces var igangsat, hvordan man sætter et breakpoint, mens vi stod i terminalen, hvordan man bruge repl til at eksekvere en ny kode, mens ens “ægte” kode var sat på pause. Det sidste trick, vi lærte, var, hvordan man opdaterer appens UI med hjælp fra debugger.

llbd veteraner rullede med al sandsynlighed øjnene, når denne her idiot opdagede åbenlyse ting, men det var ekstremt lærende at tvinges til at bruge disse features. Nu skal jeg bare integrere de mere avancerede llbd features in i mit almindelige work flow.

En stor tak til Carola for en rigtig god workshop.

Reverse Engineering

Den sidste workshop om torsdagen var en sand fornøjelse. Vi blev introduceret til det private framework i iOS simulatoren. Mødelederen på workshoppen var ingen ringere end Guilherme Rambo, der b.la. af 9to5mac beskrives som

En Mac og iOS udvikler baseret i Brasilien. Han er kendt for at opdage Apples hemmeligheder og analysere leaks

Ved at bruge værktøjet class-dump var det muligt at lokalisere interessante ViewControllers i Apples private framework og forsøge at kopiere dem i vores egne apps.

Hvis dette skulle blive en succes, skulle vi bruge gode gamle Objective C, da sproget – som var mere dynamisk i sin natur – gør det nemmere at loade private frameworks dynamisk, end linker gør.

At kode Objective C var en smule deprimerende. Ikke pga. Af sproget (jeg kunne virkelig godt lide Objective C) men fordi jeg fandt ud af, hvor rusten jeg var. For fire år siden var jeg ekspert på området – nu sad jeg og kiggede efter manglende semikolon… tiderne skifter godt nok hurtigt.

Vi formåede at få et test-projekt op og køre, der kunne loade PencilView, som normalt bruges i Apples Notes app. Det var ikke smukt men sjovt.

Senere fik jeg jeg en anden test til at fungere sammen FUFlightViewController. Den kunne tracke vores returfly via Paris.

flight 584x1024 - Swift Alps konferencenDet var en sjov session, og det var interessant at se, hvordan man kan få adgang til nogle af de gemte frameworks, der findes i ens simulator.

Fredag

Fredagens program så ud som følgende:

  • Swift Design Patterns by Paul Hudson
  • Better Developer Tooling by writing your own Mac Apps with Cocoa Bindings by Benedikt Terhechte
  • Accessibility on iOS by Monika Mścichowska
  • ARKit – from basics to advance by Kateryna Gridina

Igen var det svært at vælge.

ARKit – fra det simple til det avancerede

Først på dagsordenen var en introduktion til ARKit. Vi har allerede brugt ARKit på forskellige projekter her hos Nodes, så jeg var naturligvis ekstra spændt på temaet.

Kate hjalp os med en række eksempler i starten. Vi startede med plane detection, hvor vi loadede en SpriteKit med simple elements scene fra en a .sks fil, der byggede ens egen Sprite scene for til sidst at tilføje en “ægte” 3D model til en anden Spritekit scene, som fungerede ordentligt.

arapple 576x1024 1 576x1024 - Swift Alps konferencen

ARKit er stadig et relativt ungt framework, og i min optik har det stadig elementer af “Black Magic”, så det var fedt at have rigeligt med tid og en workshopleder, der hjalp én med at forstå, hvad der sker, når ARKit begynder at tracke omverdenen gennem kameraer.

Swift Design Patterns

Vi kender og elsker alle design patterns, ikke?

De giver os udviklere et fælles sprog, mens vi samtidig kan lave sætninger, der indeholder tilsyneladende almindelige ord, men så snart de udtales ikke giver mening for personer, der ikke arbejder med it-udvikling.

“Ja, jeg tror, jeg ville gå med dependency injection her, men hvis du vil gå med en singleton, så gør du bare det”

Poul Hudsons workshop var en serie af design pattern eksempler, som kunne bruges til en eksisterende app. Design patterns var rangeret efter kompleksitet, og det gik fra det mere simple MVC op til Coordinators (som er kendt fra Soroush Khanlou) men man kunne mikse frem og tilbage, som man ønskede.

Det var – endnu en gang – en meget interessant workshop, og få ting er bedre, end at forstå design patterns, tilføje det til ens kodebase og herefter slette overflødig kode linje efter linje.

Accessibility på iOS

Når folk tænker på accessibility i forhold til app udvikling, tænker de tit på… ja, de tænker egentlig ikke på det. For at være helt ærlig, så er mange af vores apps her hos Nodes ikke brugervenlige over for folk med handicap. Denne workshop viste en anden side af brugeroplevelsen.

Vi begyndte med at sætte vores smartphones på voice-over mode. Det er en feature, der oplæser de forskellige elementer på skærmen, og den bruges ofte af personer med synsbesvær. Du skal foretage en masse underlige valg for at navigere mellem de forskellige UI elementer og finde de rette actions. Hvis du blot har telefonen på voice-over mode i mere end 5 minutter, forstår du, hvorfor det er så vigtigt at gøre det til en god oplevelse.

Efterfølgende overtog vi en lille testapp, som indeholde en simpel liste med opskrifter. Når man trykkede på en af opskrifterne, fik man flere detaljer. Vi fandt ud af, at det var meget besværligt at bruge testappen med voice-over, så vi tilføjede nogle nemt tilgængelige features som element grouping, custom actions og bedre accessability mærkater.

Apple har på det seneste presset hård på for at fremme accessability, og jeg tror, accessability bliver et højt prioriteret område for appudviklingsvirksomheder i den nærmeste fremtid.

Bedre udviklingsværktøjer ved at kode din egen Mac Apps med Cocoa bindings

Mange af os er iOS udviklere, og det betyder, at vi bruger (og elsker) en Mac i vores daglige arbejde.

Men hvor mange af os har egentlig kodet en macOS app?

Det har Benedikt, og han fortalte os om glæden ved at bruge bindings.

Bindings i brede termer – giver dig mulighed for hurtigt at forbinde din model og UI kode. Dermed reduceres den mængde af kode, du ellers skulle bruge til at opdatere dit model object, når en bruger trykker på en knap.

Det er en gammel teknologi ( i hvert fald i teknologiens verden) men kraftfuld teknologi, der også er svær at debugge, og derfor bør du ikke være for afhængig af dem, når du koder apps.

Vi arbejdede os igennem en række eksempler, og vi fik lavet flere apps med mange funktionaliteter og relativt få koder.

Bindings er interessante på flere måder. Man kan komme langt med få koder, men laver du en tastefejl, popper “interessante” fejlmeddelelser op. Nogle gange behøver du ikke en gang selv lave en fejl, da Interface Builder selv indeholder fejl, man bør kende til. Man får samtidig fornemmelsen af, at frameworket har et par år på bagen. Antallet af muligheder er massive, men nogle er gemt væk og sparsomt dokumenteret.

Jeg tror, mange af os forlod workshoppen med en lyst til at kode macOS apps frem for “normale” shell scripts. Så Benedikt gjorde det fremragende.

Game Over

Og det var det! To interessante dage, der var overstået, før det hele kom i gang. Nu er vi tilbage i kolde og regnfulde Danmark med en masse nye tricks i ærmet.

Det var en fantastisk god oplevelse at møde ligesindede udviklere, der elsker iOS platformen så meget, som vi gør, og lære, hvordan de håndterer de samme udfordringer, som vi selv tit står over for.

Konceptet om at arbejde sammen med en fremmed på workshoppene fungerer godt, og man er nærmest “tvunget” til at lære de andre konferencedeltagere at kende, hvilket bidrager til et godt socialt miljø.

Skal jeg tage afsted?

Og nu til det helt store spørgsmål: skal jeg tage til Swift næste år?

Vi håber, det ovenstående blogindlæg viser, at vi klart anbefaler konferencen. Både for de faglige indspark men så sandelig også for det sociale fællesskab.

Til Swift Alps’ medarbejdere og deltagere: tusind tak for to fantastiske dage. Vi håber, vi ses næste år.

Call Now Button