Zbudowaliśmy maskotkę, która kilka minut przed spotkaniem przelatuje przez ekran. Dajemy ją bezpłatnie wraz z kodem źródłowym.
Zbudowaliśmy maskotkę, która kilka minut przed spotkaniem przelatuje przez ekran. Dajemy ją bezpłatnie wraz z kodem źródłowym. Ta część jest o tym, co wszystko trzeba było zrobić między „u mnie działa” a „mogę to dać obcym ludziom na komputer”.

Zanim zacznę, jedna rzecz z góry. AI i Vibe Coding naprawdę lubimy, nie jako frazes marketingowy. Pracujemy z AI codziennie, robi nam siedemdziesiąt do osiemdziesięciu procent pracy. Mamy za sobą tysiące i tysiące godzin na różnych modelach, mnóstwo ślepych uliczek i miliony euro tylko na testowanie, próbowanie, próby i błędy. Płaciliśmy za nie my, żeby nie musieli płacić nasi klienci.
Ten artykuł nie jest więc o tym, że Vibe Coding to zły pomysł. Jest dokładnie odwrotnie. Pokazujemy go publicznie dlatego, że chcemy, żeby było widać, co wszystko kryje się za jedną prostą apką. Ta szybkość to prawdziwa zaleta, nie iluzja. Tylko niesie ze sobą odpowiedzialność, o której w entuzjazmie rzadko się mówi.

Na ten pokaz wybraliśmy celowo oprogramowanie, apkę, która instaluje się na komputerze. Nie stronę, nie aplikację webową. Pokazy cudów AI, które widuje się w sieci, to prawie zawsze strony. To najwdzięczniejsza dyscyplina do prezentowania, bo gdy demo strony nie działa, użytkownikowi nic się nie psuje, po prostu zamyka kartę. Oprogramowanie na cudzym komputerze to inna liga.

Piszę o tym także dlatego, że przez te lata sparzyłem się częściej, niż chciałbym liczyć. W wieku siedemnastu lat miałem pomysł na osobisty projekt. Na polecenie wynająłem firmę developerską i projektanta. Obiecywali, nie dostarczali. Skończyło się to ćwierć miliona euro na minusie. To były wszystkie pieniądze, które odkładałem od dzieciństwa. Gotowa była tylko jedna trzecia tego, co obiecali. I właśnie dlatego w tym artykule pokazuję niewidzialną pracę tak otwarcie.

Najpierw ta apka
Powiadomienie w macOS jest uprzejme, dyskretne i doskonale łatwe do przeoczenia. Dymek wysuwa się w rogu, po kilku sekundach znika, a Państwo dowiadują się, że na rozmowie czekano na Państwa dwanaście minut.
Ptáček rozwiązuje dokładnie to. Kilka minut przed spotkaniem przelatuje przez ekran maskotka z nazwą spotkania. Przez wszystkie okna, także przez prezentację na pełnym ekranie. Po kilku sekundach sama znika.

Apka była gotowa w pół dnia. Reszta dwóch dni należała do bezpieczeństwa
Wersja funkcjonalna, czyli maskotka, kalendarz, planista i ustawienia, była gotowa w pół dnia. Gdybym wtedy wrzucił apkę do internetu, wyglądałaby na zewnątrz dokładnie tak samo jak dziś. Ale zanim mogła wyjść, musiała przejść kontrolę drugiej, niezależnej AI, której jedynym zadaniem było szukanie dziur w tym, co zbudował pierwszy model. A nad obydwoma modelami była jeszcze kontrola ręczna, bo ostatnie słowo ma człowiek. Ta kontrola i poprawki zajęły półtora dnia.

Odziedziczyliśmy cudzy kanał aktualizacji
Apki nie budowaliśmy od zera, wyszliśmy od otwartego projektu. Miał w sobie automatyczne aktualizacje wskazujące na repozytorium obcego autora. Gdyby to tam zostało, oznaczałoby to, że nasi użytkownicy mogliby któregoś dnia pobrać kod, którego nigdy nie widzieliśmy. To dokładnie ten typ rzeczy, o którym AI przy generowaniu kodu nie wspomni, bo nikt jej o to nie poprosił.

Nazwa spotkania to niezaufane dane wejściowe
Brzmi to absurdalnie: dlaczego nazwa własnego spotkania miałaby być niebezpieczna? Bo do kalendarza może ktoś wysłać zaproszenie i nazwę wpisać sam. Dlatego nazwa nigdy nie jest wstawiana do strony jako kod, tylko jako tekst.

Adres kalendarza to hasło
Ten adres jest faktycznie kluczem: kto go ma, widzi, kiedy Państwo mają spotkania. Dlatego nie leży w pliku konfiguracyjnym, ale w systemowym Pęku kluczy, czyli tam, gdzie Mac trzyma Państwa hasła. I nigdy nie jest zapisywany do logu.

A potem sto drobiazgów
Co robić, gdy spotkanie zostanie odwołane minutę przed przelotem. Co, gdy ktoś je przesunie. Co, gdy komputer wybudzi się ze snu i czeka w nim pięć przegapionych powiadomień naraz.
Nic z tego nie jest ciekawe. Wszystko to użytkownik pozna, gdy się tego nie zrobi.
Praca, której nie widać
Znaki diakrytyczne w nazwie zepsuły podpis aplikacji. Ponieważ plik nazywał się Ptáček, systemowe narzędzie do podpisywania zapieczętowało główny program jako załącznik i podpis przestał być ważny.

macOS potrafi uruchomić apkę z miejsca tymczasowego. Apka wygląda, jakby działała, ale nie zapamięta ustawień ani zezwolenia na kalendarz.
Przeciągnięcie do kosza zostawia po sobie bałagan. Ustawienia, uruchamianie po zalogowaniu, adres w Pęku kluczy. Dlatego w ustawieniach jest przycisk Odinstaluj, który to posprząta. To jedyna rzecz w całej apce, która coś usuwa, więc ma własne testy na to, że nie usunie niczego innego.

Cisza zamiast błędu
Apka wyszła, testy były zielone, podpis ważny. Wyglądało to na gotowe. Potem apki zaczął używać pierwszy prawdziwy użytkownik i w ciągu jednej nocy wyszły dwie rzeczy, których żaden test nie widział.
Wersja ostra nie umiała czytać kalendarza. Za wszystkim stał jeden wiersz w podpisie aplikacji. Bez niego system po cichu odrzuca żądanie. Żadnego okna, żadnego komunikatu o błędzie, po prostu cisza.

Maskotki zaczęły znikać w połowie lotu. Zabezpieczenie nie rozróżniało, czyjego okna pilnuje. To był błąd, który tam był od początku, tylko nie ujawniał się, dopóki nie latało gęsto.
Wynik jednej nocy: trzy wydania z rzędu, testy z osiemnastu na pięćdziesiąt dwa, a użytkownik nie zobaczył ani jednej nowej funkcji. Dokładnie to jest praca, której nie widać.

AI to turbo, nie autopilot
Przyspieszy pierwszą wersję apki do pół dnia, ale nie zdecyduje za Państwa, co jest ryzykiem dopuszczalnym, a co nie. Ta decyzja zostaje po stronie człowieka, zawsze.
Artykuł pierwotnie ukazał się na LinkedInie. Oryginalny artykuł na LinkedInie

