Tegelikult poes on nime all “Oromate Traditional Molienda Gruesa”. Paki kujundus viskab sellist mõnusat kauge Paraguai küla vaibi. El agricultori otsetõlge “põllumees”. Nojah, lihtne ja odav! Mõnus maalähedane suitsune, suht kange. Mu mate-maitse eelistus tundub suht selge ja lihtne – kanged puhtad suitsused paraguai mated – ja ka see on selles osas väga hea. Alguses viskab vahele ka sellist piparmündi õrna vihjet, mitte päris tsitruselist, aga mingit sellist eeterlikku. Meeldib.
Väiksemas ringis väiksemalt tuntud õlleäpi kõrval on mul tegelikult peas mõlkunud ka mõte üldisemast loendamise äpist. Juba ammu on mõlkunud. Et kui parajasti õlut pole, mida loendada, siis loendad vähemalt muid asju. Järel olevaid matepakke, mahutisse valatud pelletikotte, ostukontrollidesse sattumisi ja muid selliseid juhtumisi. On juba aru saada, et kõik see eeldab väiksemat või suuremat loendamise kiiksu. Võimalik, et sellele on mingi peenem nimi ka pandud, ladina keeles ja puha – ei tea. Aga ju mul siis kiiks on. Või on mul koodamise kiiks. Emb-kumb igatahes on. Lihtsalt kirjutamine läheb ka siia ritta arvesse. Kokkuvõtvalt – mingi kiiks on ja sellega loen teema – “Appi miks küll selline äpp!” – laualt maas olevaks.
Aastal 2025 sain lõpuks istuda rahulikult tootejuhi tooli ja anda arendajale töö ette. Jah, LLM on kohal ja see postitus ongi tegelikult sellest. Korra juba alustasin selle arensusprotsessi ülevaate/kokkuvõtte kirjutamist, aga see läks selliseks romaaniks kätte, et muutsin lähenemist ja teen lühidalt.
Jah, see on AppStores olemas. See oli omaette mentaalne eesmärk, et ma ei jää mingit seda väikest featuuri ja toda väikest muudatust lõputult nikerdama, vaid ühel hetkel on vahefiniš ja panen lihtsalt poodi üles.
Nüüd see lühike osa, et kuidas see arendusprotsess käis:
SPEKK: ChatGPT-ga vestlemine, mille tulemus oli markdown formaadis spekk ja arendusplaan. Viimane on suht oluline, et saaks tükk-haaval liikuda. Päris nii ei saa, et annad paar laused LLM-ile ette ja ta teeb sulle mõtteid lugedes soovitud asja valmis. Samm-haaval liikumine on ka tehniliselt oluline – kontekstiaken ei ole väga avar.
ARENDUS: Cloude Code käsurealt ise möllab koodibaasis. “implement gh issue #89”. Claude ise vaatab, mis githubis kirjas on, ise koodab valmis, ise jooksutab teste, ise parandab vigu, ise commitib. Klassikuid tsiteerides: “KOCMOC”!
Miks üksi arendades github issued? Sest mõtteid on peas kogu aeg, mida veel ja mis järgmiseks. Nende kaudu on mingigi võimalus mingit ülevaadet säilitada ja plaane teha. Milestone v1.1, valin pikast rivist sinna minevad muudatused, Claude’le ette, et tee nüüd #100 kuni #110. Test. Screenshotid. Poodi. Valmis. Vinge.
DISAIN ja UX: Siin ei ole eriti midagi öelda, ainult äpi ikoon on mingi graafiline element (ok, welcome screeni oma ka) – Adobe Firefly ja Nano Banana. Milline neist ja mitme iteratsiooniga praegu kehtiva ikooniga valmis sai, ei mäleta. Versioon katalooginimes on igatahes v5.1 nii et üsna mitu ringi sai tehtud sellega. Ja muud disaini pole, ülejäänuga on Claude ise hakkama saanud. UX-i olen nii palju mudinud kui endale parasjagu kuskil midagi ette on jäänud, süsteemne lähenemine puudub. Lihtsalt, et endal ok kasutada oleks.
DEPLOYMENT: Claude ehitas fastlane-põhise beta ja release build protsessi; kõik funktsionaalsus peaks unit-testidega kaetud olema; screenshottide jaoks on UI testid koos snapfile-ga (need käivad ka peamised happy-pathid läbi kiireks kontrolliks). Testflight, tag, done.
Kas see tähendab siis, et ükskõik kes võib need 4 sammu ette võtta ja ükskõik mida valmis kirjutada? Mul on seda raske hinnata, ma natuke saan aru, mis seal kõhu pool toimub. Ja kuna ma sellest natuke aru saan, siis ma andsin LLM-ile paaris kohas ikka jalage p***e ka, et ta õiges suunas liiguks. Kas oleks saanud ka ilma selleta? Siiralt ei tea, võib-olla oleks.
Lisamärkus: see viimane miil, et äpp päriselt poodi saada, eeldab veel natuke ümbritsevat infrat – terms leht ja privacy policy ja support aadress ja kirjeldused jms.
Aga ma ei ole kogu selle äpi juures reaalselt mitte ühtegi sisulist rida koodi ise kirjutanud. Ja see on tegelikult muljetavaldav. Mulle vähemalt.
Mida ma ise siin projektis tehnilist teinud olen:
Kõige tõsisem sekkumine oli vajalik kui mingis arendusetapis muutus andmete struktuur (SwiftData, VersionedSchema ja MigrationPlan). LLM ei olnud alguses kohe selle peale tulnud, et peaks versioneeritud modeleid kasutama ja siis sellele rajale suunamiseks tuli natuke käsipidi juures olla ning selgitama, mida ma täpselt arhitektuuriliselt seal andmemudeli juures tahaks. Typealias’n’s**t.
Teine asi, mida ma paar korda vaatasin, olid mõned View paigutuse asjad – kuna Xcode preview on selleks okei asi, siis mõned korrad katsetasin erinevate paddingute vms asjadega.
Ja kolmas, natuke suurem asi, oli UI testide tegemine screenshottide jaoks. Mingid UI testid tegi LLM alguses tegelikult ka valmis, aga kuna ma AppStore jaoks tahtsin mingeid konkreetseid screenshotte, siis nende tegemiseks salvestasin (Xcode-s olemas) mingeid klikkimiste jadasid. Ja siis üldine UI automaatne läbi klikkimine kiireks kontrolliks.
Ja ok, bundle exec fastline ios beta olen ka käsureale kirjutanud. Või bundle exec fastline ios screenshots
Kalendriajas poolteist kuud – nädalavahetused ja õhtutunnid.
Ütleks kokkuvõtvalt selline mittemidagiütlevalt tavaline. Lahjemapoolne, mitte eriti tolmune. Huvitava (häiriva) tehnilise detailiga – ma proovin oma mate võimalikult pikalt sellisena hoida, et ülemine kiht kohe läbi ei liguneks, aga sellel liguneb. Ja see tekitab probleemi, kus mate vajub põhja, vesi jääb peale ning autos juues võib üle loksuda sellisena. Selline naljakas personaalse use-case’i probleem. Aga jah – lahja.
Oma varasematest märkmetest loen, et olen tavalise Canariase kohta kirjutanud “tolmune, võtab kõrre kinni” – edicion especiali selliseks ei hinda. On küll suht peenike, aga samas mitte nii üleliia tolmune, et kõrre kinni võtaks. Või olen ma mate valmistamisel nii palju osavamaks saanud ajaga. Ja viimase aja eelistus on lapiku otsaga kõrs, millega saab “tassi” põhja vee jaoks “koopa” tekitada.
Samuti varasematest märkmetest loen aga sellesama edicion especiali kohta, et kange … hmm … tõesti või? 🙂 Kas on Canariase kvaliteet kõikuv või olen ma oma viimase aja kangete eksperimentidega omaenda taustsüsteemi natuke nihkesse ajanud.
Igatahes – pakki avades voogab vastu selline meeldiv lilleline kuiv heinamaa. Aga kui tegemisel liiga vähe tõmmata lasta, siis on ootamatult lahja. Läheb kangeks küll, aga tahab kannatust. Ja jagub samas ka üsna pikalt, aga jah, ootama peab, lõpuks tuleb küll.
Maitselt on selline kergem, “õhulisem”, võiks öelda vesisem, aga see annab vast vale mulje – ta ei ole vesine ega lahja kui kannatust on (loe ülevalt). Meeldiva maitsega.
Juba kujundusest on näha, et midagi kerget ja lillelist siit ei tule. Pakist tuleb vastu korralik karjamaa. Lilli pole, on tõrvane puuriit ja äratallutud märg rohumaa. Lehmi, samas, ei ole ka näha õnneks.
Puru on küll tolmune, aga mitte selline läbivalt tolmune-tolmune, natuke selline üle-jala-tolmune. Ja. On. Kange. Päris tõrvane litakas otse ma ei tea kuhu joosta kohta 🙃 Tõmbab isegi sellise vihmase sompus päeva plärinal käima.
Termosetäie lõpupoole jääb maitsest järgi mõrkjas vesi ja tõrv. Puhtakujulise Paraguai mate näidis.
Tolmune. Ma natuke kardan neid väga tolmuseid asju – kui hooletult teed, siis on kõrs umbes ja ime põsed lohku, et midagi ergutavat kätte saada. Samas sellega nüüd on kuidagi kas hirm aidanud või olen lihtsalt Väga Osav juba – ei ole midagi umbe läinud.
PU1 ehk Padrón Uruguayo 1 – midaiganes see tähendab. Brasiilias tehtud Uruguai mate, tont seda Lõuna-Ameerika värki teab, kuidas nad neid põõsaid seal täpselt riigiti jagavad. Igatahes tulemus on täiesti off-brand (teismeliselt õpitud väljend) välja nägeva paki kohta üllatavalt hea. Ei ole mingeid erilisi nüansse, aga sellline üsna kange ja “puhta” mate maitsega tulemus. Ja kestab ja kestab ja kestab. Kui veel õhtul peale teist termosetäit tõmmata lasta, siis pole ka veel vesi. Pole paha.
*) hinna-kvaliteedi suhe on päris halb tambov ja mulle tavaliselt selle kasutamine üldse ei meeldi, aga selle paki hind oli 3.78€, mis teeb selle maitse peale väga korraliku hinna-kvaliteedi suhte.
Selline Argentiina mate – puhta tugeva maitsega, ei ole liiga tolmune. Püsib termosetäie ja kukub lõpus suht järsku lahjaks. Vot selline lühike ülevaade. Võib veel osta.
Ma ise nii suuri sõnu ei teeks, aga on sellise nimega mate, no on. Krausi toodang, neil on muu sildiga asju ka, aga noh, marketing on marketing, I love, siis I love.
Tegelikult selle mate enese kohta saab kiidusõnu öelda küll – selline nüansika kange maitsega, ei pane porise murumättaga vastu vahtimist nagu mõni teine sort. Ja maitse püsis mälu järgi ka piisavalt pikalt. Mälu järgi kuna viimati jõin jupp aega tagasi ning märkmikku üles tähendatud kirjeldus on üsna lakooniline: “nüansika maitsega, hea”. Aga üks pakk on kapis ootel, et eks täiendan kirjeldust kui “I love mate” jälle kalebassi jõuab
Minu jaoks täiesti tundmatu nimega mate 1. Esimesed sõõmud on hapud, nii haput vist polegi enne saanud. Puudub selline maalähedane robustsus, mis mulle tegelikult mõnede matesortide juures meeldib. Pigem lahjemapoolne juba algusest peale ning tugevus kaob sujuvalt juba enne termosetäie lõppu. Võib-olla sobib kellelegi esimeseks mateks pakkuda, kes muidu mu tarbitavat kraami julmalt mõruks ja kangeks peavad.
Ei ole halb, aga hommikuseks äratuseks vähe. Sobib indikaatorina kapinurgas hoida, et kui järjekord selle pakini jõuab, siis on aeg uus ports matet tellida
1 Tundmatu nime osas – varasemalt tellisin matet ühest teisest (euroopa) netipoest, aga sealne valik kuivas kuidagi üheülbaliseks. Ja ka nüüdseks ainukese eesti netipoe valik on väike. Õnneks leidsin ühe järgmise (euroopa) netipoe, mille valikust natukesesks ajaks katsetamiseks jätkub.
Jah, tegu on minu avaliku märkmeraamatuga matesortide kohta. Panen enda jaoks kirja, et teaks, mida teinekord tellida kui jälle tellimiseks läheb. Ei pretendeeri järelmaitse ja lõhna peenele teaduslikule analüüsile.