codebuddy.tech

building in public from Vancouver

AI-tools bouwen tussen Uber-ritten: hoe ik dode tijd omzette in goud voor ontwikkeling

Hallo, mijn naam is Chris. Ik ben een voormalig vakman die nu als rideshare-chauffeur in Vancouver werkt, en ik ben op iets behoorlijk bijzonders gestuit. In de gemiddeld anderhalf uur die ik dagelijks tussen ritten over heb, leer ik mezelf om AI-gestuurde applicaties te bouwen op mijn telefoon. Wat ik in deze verspreide momenten van stilstand heb bereikt, is ronduit verrassend – zelfs voor mezelf.

Ik heb de bouw niet uit vrije wil verlaten. Een Skil-zaag nam het grootste deel van mijn duim mee, en dat was dat. Meer dan twintig jaar als schilder, loodgieter en timmerman, en één slecht moment maakte er een einde aan. Ik zal niet doen alsof ik daar niet een tijdje bitter over was. Maar het bijzondere aan een vakman zijn is dit: zelfs als het gereedschap verandert, verdwijnt de probleemoplossende mentaliteit niet. Wanneer je op een obstakel stuit, wacht je niet tot iemand anders het oplost. Je bouwt een oplossing.

Die mentaliteit heeft zich perfect vertaald naar softwareontwikkeling, al geef ik toe dat het nadelen met zich meebrengt. Telkens wanneer ik in mijn codeerreis op een blokkade stuit – en geloof me, dat gebeurt regelmatig – bouw ik een tool om het probleem heen. Het is alsof ik bij een rivier kom die ik niet kan oversteken, en ik gewoon een brug bouw. En die aanpak is absoluut bevrijdend, ook al had een maandelijkse abonnement hetzelfde probleem soms efficiënter kunnen oplossen.

De vakmansmentaliteit: problemen oplossen in code

De parallellen tussen vakwerk en softwareontwikkeling gaan dieper dan je zou verwachten. In de timmerwerk bouw je, als je een specifieke mal mist, er een van afvalhout. In de loodgieterij maak je, als je de juiste adapter niet kunt vinden, een tijdelijke koppeling. Dit soort bricolage – het gebruiken van beschikbare materialen om workarounds te creëren – wordt vanzelfsprekend.

Maar softwareontwikkeling voegt lagen van complexiteit toe die fysieke beroepen niet hebben. Wanneer een timmerman een mal bouwt, werkt die of niet. Als hij breekt, is dat duidelijk. Wanneer ik een op maat gemaakte applicatie bouw, zijn de faalwijzen verraderlijker. Een niet-afgehandelde randgeval kan stilletjes een verbinding verbreken, een afhankelijkheid kan een kwetsbaarheid hebben die maandenlang onopgemerkt blijft, en de code zelf wordt een aansprakelijkheid die voortdurende aandacht vereist.

De romantiek van het bouwen van je eigen gereedschap is echter echt. Er is iets diep bevredigends aan het maken van een oplossing die perfect past bij jouw specifieke workflow, geoptimaliseerd voor jouw specifieke behoeften in plaats van voor de aannames van een productmanager over wat gebruikers willen. De vraag waar ik constant mee worstel is: wanneer dient deze aanpak de productiviteit, en wanneer wordt het over-engineering vermomd als probleemoplossing?

De eerste brug: mijn eigen SSH-client

Mijn vlaggenschipcreatie is een iOS-app die ik Terms noem – momenteel in z'n vierde iteratie. Deze SSH-client is geëvolueerd door jarenlang gebruik in de echte wereld, tijdens die verspreide momenten tussen ritten, en is perfect afgestemd op mijn unieke kopieer-plak-, spraak-naar-tekst- en AI-gestuurde codeerworkflow.

De app gebruikt biometrische authenticatie – specifiek Face ID. Wanneer ik hem open, authenticeert het systeem mijn gezicht en brengt me direct naar mijn VPS-hostomgeving, rechtstreeks bij de opdrachtregel. De technologie achter Face ID is fascinerend: het TrueDepth-camerasysteem van Apple projecteert meer dan 30.000 onzichtbare stippen om een nauwkeurige dieptekaart van je gezicht te maken, met infraroodbeeldvorming om zelfs in het donker te werken.

Het vermogen om comfortabel op mijn telefoon te zitten, tools te bouwen met echt potentieel terwijl ik constant bugs repareer en optimaliseer – het is een oprecht genot. Ik beveel het van harte aan. En ja, er is iets stil bevredigends aan het feit dat dezelfde handen die ooit muren timmerden en koperen leidingen soldeerden, nu Python naar een Linux-server deployen vanaf een parkeerterrein in Vancouver.

Een van mijn favoriete functies pakt een veelvoorkomende frustratie in mobiele ontwikkelomgevingen aan. Wanneer ik een bug of een traceback tegenkom die de terminal laat vastlopen, veeg ik simpelweg omhoog om de app te sluiten, open hem opnieuw, laat Face ID me opnieuw authenticeren, en ik ben direct weer bij de opdrachtregel, klaar om verder te gaan. Dit naadloze herstelproces heeft me talloze uren frustratie bespaard en houdt mijn momentum vast tijdens die kostbare codeersessies tussen ritten.

De technische implementatie vertrouwt op het opslaan van versleutelde SSH-sleutels in de iOS Keychain, die hardwarematige beveiliging biedt op apparaten met een Secure Enclave. Het beheer van de verbindingsstatus was een van de lastigste onderdelen om goed te krijgen – het afhandelen van netwerkovergangen terwijl ik me door de stad verplaats tussen verschillende zendmasten en wifi-hotspots. Ik implementeerde een persistentielaag voor verbindingen die netwerkveranderingen kan detecteren en automatisch opnieuw verbinding kan maken met de externe sessie, vaak zo naadloos dat ik niet eens merk dat de overgang heeft plaatsgevonden.

Had ik vergelijkbare functionaliteit kunnen bereiken met bestaande SSH-clients? Absoluut. Maar die apps zijn geoptimaliseerd voor algemene gebruiksscenario's, terwijl de mijne zich volledig richt op mijn specifieke workflow. De aangepaste sneltoetsen, de integratie met iOS's spraak-naar-tekst voor coderen met spraak, en het gespecialiseerde klembordbeheer voor het heen en weer verplaatsen van codefragmenten tussen mijn telefoon en server – deze functies bestaan omdat ik ze heb gebouwd voor mijn exacte behoeften.

De video-naar-audio-brug: het oplossen van wrijving in contentworkflow

De tweede belangrijke tool die ik ontwikkelde, ontstond uit een specifiek wrijvingspunt in mijn contentcreatieworkflow. Ik had een betrouwbare manier nodig om video's te transcriberen, en hoewel er webservices zijn die dit afhandelen, had ik iets flexibelers nodig voor mijn persoonlijke contentbibliotheek.

Mijn aanpak was om video's eerst naar audio om te zetten – een veel lichter proces dan het uploaden van grote videobestanden. Jarenlang vertrouwde ik op een app van derden hiervoor, maar wanneer iOS-updates die app braken of ik specifieke audioformaten nodig had, zat ik vast. Dus bouwde ik mijn eigen converter.

De onderliggende technologie vertrouwt op FFmpeg, een krachtige open-source

Get new posts

Subscribe in your language

New posts delivered to your inbox. Unsubscribe anytime.

Receive in: