Tworzenie narzędzi AI między kursami Ubera: Jak zamieniłem martwy czas w programistyczne złoto
Cześć, mam na imię Chris. Jestem byłym rzemieślnikiem, który został kierowcą ridesharingu w Vancouver, i trafiłem na coś naprawdę niesamowitego. W ciągu półtorej godziny, które średnio spędzam między kursami każdego dnia, nauczyłem się tworzyć aplikacje oparte na AI na swoim telefonie. To, co osiągnąłem w tych rozproszonych chwilach wolnego czasu, jest, szczerze mówiąc, zaskakujące – nawet dla mnie.
Nie odszedłem z rzemiosła z wyboru. Piła tarczowa zabrała mi większość kciuka i tak się to skończyło. Ponad dwadzieścia lat jako malarz, hydraulik i stolarz – jeden zły moment położył temu kres. Nie będę udawał, że nie byłem przez chwilę rozgoryczony. Ale rzecz w byciu rzemieślnikiem jest taka – nawet gdy zmieniają się narzędzia, nastawienie do rozwiązywania problemów pozostaje. Gdy napotykasz przeszkodę, nie czekasz, aż ktoś inny ją usunie. Budujesz rozwiązanie.
To nastawienie doskonale przełożyło się na programowanie, choć przyznaję, że wiąże się z kompromisami. Za każdym razem, gdy napotykam przeszkodę w mojej drodze programistycznej – a uwierz mi, zdarza się to regularnie – buduję narzędzie wokół problemu. To tak, jakbym trafił na rzekę, której nie mogę przekroczyć, po prostu buduję most. I to podejście jest absolutnie wyzwalające, nawet jeśli czasem miesięczna subskrypcja mogłaby rozwiązać ten sam problem bardziej efektywnie.
Nastawienie rzemieślnika: rozwiązywanie problemów w kodzie
Podobieństwa między pracą rzemieślniczą a programowaniem są głębsze, niż można by się spodziewać. W stolarstwie, gdy brakuje ci konkretnego szablonu, robisz go z odpadków drewna. W hydraulice, gdy nie możesz znaleźć odpowiedniej przejściówki, tworzysz tymczasowe złącze. Ten rodzaj bricolage'u – wykorzystywanie dostępnych materiałów do tworzenia obejść – staje się drugą naturą.
Ale programowanie dodaje warstwy złożoności, których nie mają rzemiosła fizyczne. Gdy stolarz robi szablon, albo działa, albo nie. Jeśli się zepsuje, jest to oczywiste. Gdy tworzę niestandardową aplikację, sposoby awarii są bardziej podstępne. Nieobsłużony przypadek brzegowy może po cichu zerwać połączenie, zależność może mieć lukę, która pozostanie niezauważona przez miesiące, a sam kod staje się zobowiązaniem wymagającym ciągłej uwagi.
Romans tworzenia własnych narzędzi jest jednak prawdziwy. Jest coś głęboko satysfakcjonującego w tworzeniu rozwiązania dopasowanego do twojego dokładnego przepływu pracy, zoptymalizowanego pod twoje specyficzne potrzeby, a nie pod założenia menedżera produktu o tym, czego chcą użytkownicy. Pytanie, z którym ciągle się zmagam, brzmi: kiedy to podejście służy produktywności, a kiedy staje się nadmiernym inżynierowaniem przebranym za rozwiązywanie problemów?
Pierwszy most: niestandardowy klient SSH
Moim flagowym dziełem jest aplikacja na iOS, którą nazwałem Terms – obecnie w czwartej iteracji. Ten klient SSH ewoluował przez lata rzeczywistego użytkowania w tych rozproszonych chwilach między kursami i stał się idealnie dopasowany do mojego unikalnego przepływu pracy: kopiuj-wklej, zamiana mowy na tekst, programowanie wspomagane AI.
Aplikacja używa uwierzytelniania biometrycznego – konkretnie Face ID. Gdy ją otwieram, system uwierzytelnia moją twarz i przenosi mnie bezpośrednio do mojego środowiska hostingowego VPS, prosto do wiersza poleceń. Technologia stojąca za Face ID jest fascynująca: system kamer TrueDepth od Apple wyświetla ponad 30 000 niewidzialnych kropek, aby stworzyć precyzyjną mapę głębi twojej twarzy, wykorzystując obrazowanie w podczerwieni do działania nawet w ciemności.
Możliwość wygodnego siedzenia na telefonie, tworzenia narzędzi z prawdziwym potencjałem, przy ciągłym poprawianiu błędów i optymalizacji – to prawdziwa radość. Gorąco polecam. I tak, jest coś cicho satysfakcjonującego w tym, że te same ręce, które kiedyś stawiały ściany szkieletowe i lutowały miedziane rury, teraz wdrażają Pythona na serwer Linux z parkingu w Vancouver.
Jedna z moich ulubionych funkcji rozwiązuje częsty problem w mobilnych środowiskach programistycznych. Gdy napotkam błąd lub traceback, który zawiesza terminal, po prostu przesuwam palcem w górę, by zamknąć aplikację, otwieram ją ponownie, pozwalam Face ID ponownie mnie uwierzytelnić i natychmiast wracam do wiersza poleceń, gotowy do kontynuacji. Ten płynny proces odzyskiwania oszczędził mi niezliczonych godzin frustracji i utrzymuje moje tempo w tych cennych sesjach programowania między kursami.
Implementacja techniczna opiera się na przechowywaniu zaszyfrowanych kluczy SSH w pęku kluczy iOS, co zapewnia bezpieczeństwo sprzętowe na urządzeniach z Secure Enclave. Zarządzanie stanem połączenia było jedną z najtrudniejszych części do dopracowania – obsługa przejść sieciowych podczas przemieszczania się między różnymi stacjami bazowymi komórkowymi i hotspotami WiFi w mieście. Zaimplementowałem warstwę trwałości połączenia, która potrafi wykryć zmiany sieci i automatycznie ponownie połączyć się z sesją zdalną, często tak płynnie, że nawet nie zauważam, że nastąpiło przejście.
Czy mógłbym osiągnąć podobną funkcjonalność za pomocą istniejących klientów SSH? Oczywiście. Ale te aplikacje są zoptymalizowane pod ogólne przypadki użycia, podczas gdy moja jest skupiona jak laser na moim konkretnym przepływie pracy. Niestandardowe skróty klawiszowe, integracja z zamianą mowy na tekst w iOS do programowania głosem i specjalistyczne zarządzanie schowkiem do przenoszenia fragmentów kodu między telefonem a serwerem – te funkcje istnieją, ponieważ zbudowałem je dla dokładnie moich potrzeb.
Most wideo-audio: rozwiązywanie tarcia w przepływie tworzenia treści
Drugie główne narzędzie, które opracowałem, powstało z konkretnego punktu tarcia w moim przepływie tworzenia treści. Potrzebowałem niezawodnego sposobu na transkrypcję filmów i choć istnieją usługi internetowe, które to obsługują, potrzebowałem czegoś bardziej elastycznego dla mojej osobistej biblioteki treści.
Moje podejście polegało na najpierw konwersji wideo na audio – znacznie lżejszy proces niż przesyłanie dużych plików wideo. Przez lata polegałem w tym celu na aplikacji innej firmy, ale gdy aktualizacje iOS ją psuły lub potrzebowałem konkretnych formatów audio, okazywało się, że utknąłem. Więc zbudowałem własny konwerter.
Podstawowa technologia opiera się na FFmpeg, potężnym narzędziu open-source, które
Get new posts
Subscribe in your language
New posts delivered to your inbox. Unsubscribe anytime.
Receive in: