Blogg

Hvernig ég þróa Baby Monitor Timmy með GitHub Copilot

Gervigreind hjálpar mér að vinna hraðar. Ábyrgðin á Timmy er samt áfram hjá mér.

Baby Monitor Timmy byrjaði með einfaldri hugmynd: barnapía sem virðir friðhelgi einkalífsins heima. Engar skýjaupptökur, engar óþarfa gagnaleiðir út úr barnaherberginu. Það sem margir sjá ekki er að ég þróa Timmy einn í Zürich, og GitHub Copilot er mjög fljótur forritunarfélagi minn.

Samspil manns og gervigreindar

Verkaskiptingin er skýr: Ég skilgreini eiginleika, set forgangsröðun og tek ákvarðanir um hugbúnaðarhönnun. Copilot hjálpar við útfærsluna: skrifar kóða, bætir við prófum, þrengir leitina að villum og undirbýr skref fyrir útgáfu.

Dæmigerð vinnulota hjá mér lítur nokkurn veginn svona út:

  1. Lýsing á eiginleika: Ég lýsi því sem eiginleikinn á að gera, þar á meðal jaðartilvikum og takmörkunum.
  2. Útfærsla: Copilot leggur til kóða og fylgir þeim venjum sem þegar eru í verkefninu.
  3. Prófanir: Sjálfvirk enda-til-enda-próf keyra á tveimur hermum og athuga raunverulega tengingu milli barns- og foreldratækis.
  4. Dreifing: Þegar prófin standast eru Android- og iOS-smíðar undirbúnar fyrir réttu verslanirnar og prófunarrásirnar.

Þessi hringrás endurtekur sig fyrir nýja eiginleika og villuleiðréttingar. Ég skrifa ekki hverja línu sjálfur, en ég ákveð hvað er þróað, hvers vegna það er þróað og hvort tillaga henti Timmy.

Frá hugmynd að WebRTC

Meginverkefnið tæknilega séð var skýrt frá upphafi: hljóð og mynd í rauntíma milli tveggja síma. WebRTC var augljóst val, en samþætting þess við Flutter er ekki einföld: ICE-biðlar, SDP-samningaviðræður, TURN-varaleið og DataChannel-rásir þurfa að virka saman í réttri röð.

Copilot hjálpaði mér að tengja þessa hluta saman skref fyrir skref: setja upp peer-tengingu, halda réttri röð á lykilatriðum (DataChannel á undan offer, onTrack á undan setRemoteDescription), og setja merkjasamskipti í Firebase Firestore. Hver hluti þurfti að virka á tveimur hermum áður en ég hélt áfram.

Örugg pörun með ECDH

Einn mikilvægasti eiginleikinn var öruggt pörunarkerfi. Tvö tæki þurfa að koma á gagnkvæmu trausti án þess að reiða sig á miðlægan þjón til að staðfesta auðkenni þeirra. Lausnin er ECDH P-256-lyklaskipti í gegnum Firebase ásamt sjónrænu staðfestingarnúmeri (SAS) sem greinir árásir milliliða.

Copilot hjálpaði við að útfæra dulritunarkeðjuna: lyklagerð, skipti á opinberum lyklum, afleiðslu sameiginlegs leyndarmáls, útreikning SAS og AES-256-GCM-dulkóðun allra merkjagagna sem á eftir koma. Ég sendi ekki pörunarlykilinn til bakendans; aðeins SHA-256-tætigildi hans er notað sem auðkenni Firestore-skjals.

Öryggisúttekt: Að finna og laga veikleika

Þróun með aðstoð gervigreindar snýst fyrir mig ekki bara um hraðari innslátt. Hún hjálpar líka við markvissa villuleit. Í einni einbeittri vinnulotu fyrir öryggisúttekt greindi Copilot kóðagrunninn og fann sex atriði sem ég þurfti að laga:

Öll sex atriðin voru lagfærð í sömu vinnulotunni. Hér er Copilot sterkur: að lesa margar skrár, bera saman mynstur og merkja staði sem ég þarf að skoða nánar.

Endurteknar vinnulotur: Hvernig appið þróaðist

Timmy þróaðist í hröðum en skýrt afmörkuðum vinnulotum. Nokkur áfangaskref:

Hver vinnulota fylgir sama grunnmynstri: lýsa markmiðinu, fara yfir tillögur, prófa sjálfvirkt og senda síðan til prófara.

E2E-prófanir milli tækja

Ekki er hægt að prófa barnavöktunarforrit almennilega á einu tæki. Ég þarf eitt barnatæki og eitt foreldratæki. Verkefnið hófst með tveimur Android-hermum sem keyrðu samtímis. Nú bætast við staðbundinn iOS-hermir og prófanir á raunverulegum tækjum. Sjálfvirka Android-prófunarforritið gerir enn eftirfarandi:

  1. Setur upp appið á báðum hermunum
  2. Fer í gegnum pörun á báðum tækjum
  3. Staðfestir að hljóð- og myndtengingar komist á
  4. Prófar ýta-til-að-tala-virkni, stjórnun myndavélar og aðra eiginleika

Þar sem báðir hermarnir deila sama IP-vistfangi (10.0.2.15), er bein jafningjatenging í gegnum STUN ómöguleg. Hver prófunarkeyrsla þarf að fara í gegnum Cloudflare TURN-miðlarann. Það er hvimleitt, en gagnlegt: flóknasta tengileiðin er prófuð í hvert skipti.

Það sem ég lærði

Að þróa heilsteypt app með gervigreind sem forritunarfélaga kenndi mér ýmislegt:

Fram undan

Baby Monitor Timmy heldur áfram að þróast. iOS-útgáfan er að verða tilbúin; eftir það koma fleiri skynjaraeiginleikar og áframhaldandi herðing öryggis. Verkferlið verður svipað: Ég set stefnu og mörk, Copilot hjálpar við útfærslu og yfirferð á skjótan hátt.

Öryggistengdu byggingareiningarnar eru nú afmarkaðar með skýrum mörkum í opinbera baby-monitor-timmy-core-kóðasafninu. Þar eru einnig skráðar ákvarðanir um hugbúnaðarhönnun varðandi pörun, merkjasamskipti og bakendaviðmót.


Fleiri greinar