Ang pinakamagandang review ng comedy app ko ay galing sa isang mesa kasama ang apat na kaibigan at isang round ng inuman.
May nagsabi, "bigyan mo kami ng joke." Ginawa ko ang ginagawa ng lahat ngayon: kinuha ko ang telepono, nagbukas ng kung ano, at nagsimulang mag-scroll gamit ang hinlalaki habang limang usapan ang naghihintay na bumalik ako. Iyon mismo ang ugali na ginawa ko ang Knora para iwasan, at binagsak ng unang bersyon ko ang parehong test sa parehong paraan.
Ang Knora ay isang libreng iPhone app, makukuha sa App Store. Ilalabas mo ang telepono at kinakalog mo ito, may isang maikling comedy bit na tumutugtog mula umpisa hanggang dulo sa isa o dalawang boses, at pagkatapos ay wala nang ibang titingnan. Walang feed na i-scroll, walang library na galugarin, walang account na gawin. Ang buong interface ay isang galaw. Isinulat ito para sa 18+ dahil sa lenggwahe at paksa, na siyang punto ng bagay na ito at siya ring dahilan kung bakit hindi ito para sa lahat sa mesa.
Narating ko iyon sa pamamagitan ng pagtanggal ng dalawang bagay, at wala sa dalawang pagtanggal na iyon ang komportable. Ang una ay nagtanggal ng format na nauunawaan na ng mga user. Ang ikalawa ay nagtanggal ng halos buong app.
Ang unang tinanggal ko ay ang joke format
Nagsimula ang Knora bilang isang knock-knock joke app. Gumana naman ito, sa diwa na gumagawa ito ng knock-knock jokes kapag hiniling. Ang problema, ang anyo mismo ang naging hangganan. Lahat ng knock-knock joke ay may parehong balangkas — ang setup, ang "who's there", ang reveal — at kayang magsulat ng magandang joke ang isang model sa loob ng balangkas na iyon at knock-knock joke pa rin ang mabubuo nito. Ang istruktura ang nagpasya kung gaano kakatawa ang app, at walang dami ng prompt work ang makakatalo sa istruktura.
Kaya tinanggal ko ang format. Ibig sabihin, tinanggal ko ang bagay na nakikilala ng mga tao, na kakaibang gawin sa isang produktong kasisimula pa lang gumana.
Ang pumalit dito ay isang set ng comic methods sa halip na template. Ang bawat bit ay binuo mula sa eksaktong isang method, hindi kailanman halo ng ilan: isang tunay na absurd rule na inilapat sa isang maliit na bagay, o isang kuwentong naglalaan ng oras at pagkatapos ay lumiliko, o isang bagay na nagbubukas na parang papuri pero hindi pala. Apat ang live. Pinipili ng generator ang isa kada bit; hindi kailanman pumipili ang app.
Ang isang pagbabagong iyon ay mas malaki ang nagawa para sa output kaysa sa lahat ng prompt revision bago nito. Iyon ang unang hindi komportableng aral: minsan, hindi kailanman ang model ang bottleneck. Ang lalagyan ang bottleneck.
Ang ikalawang tinanggal ko ay ang interface
Mas mahirap tanggalin ang mga screen, kasi ang mga screen ang paraan mo para ipakita sa mga user na may ginawa kang bagay.
Ang app na binuksan sa isang mesa ay nakikipagkumpitensya sa mesa. Bawat elemento na idinagdag ko — isang nabigasyong listahan ng mga boses, isang library ng mga bit na nagustuhan mo, isang maliit na profile — ginawa nitong mas kawili-wili ang telepono kaysa sa mga taong may hawak ng inumin. Hindi na naging "gumawa ng magandang comedy app" ang brief at naging "isang galaw, tapos ibababa na ulit ang telepono."
Kaya walang onboarding at walang sign-in. Pwede kang pumili ng boses at wika kung mahalaga iyon sa iyo, at kung hindi, may random na tagapagsalaysay na pipiliin sa unang pagbukas at hindi mo kailanman bubuksan ang settings screen. Walang personalization na i-tune, ibig sabihin walang personalization na maiwawala.
Ang isang voice-only comedy app na walang mikropono ay nangangailangan ng kaunting paliwanag, kaya sabihin na natin nang tuwiran: hindi ito kailanman nakikinig. Walang sasabihin nang malakas at walang itatype. Ang bit ay isinusulat sa isang server at ipinapadala sa telepono bilang audio; ang telepono ay isang speaker na may nakakabit na shake detector.
Ano ang talagang ipinipilit ng "walang UI"
Ang pagtanggal ng interface ay una sa lahat isang desisyon sa panlasa. Sa mundong kung saan pinaglalabanan ng bawat app ang atensyon mo gamit ang notifications at masisikip na screen, gusto ko ng halos itim na screen na ginagamit sa pag-shake. Pero may kaakibat itong set ng engineering constraints, at iyon ang sulit isulat.
Kailangang instant ang bawat shake. Kung anim na segundo bago lumitaw ang isang bit, naka-move on na ang mesa at nakabaliktad na ulit ang telepono. Kaya ang mga bit ay isinusulat at ginagawang boses nang maaga at inihahain mula sa isang catalog. May live generation, pero bilang fallback at refill — ang bagay na pumipigil sa catalog na maging luma, hindi ang daang hinihintay ng user.
Walang browsing ibig sabihin walang pagpili. Dahil walang listahan na pipiliin, walang ipinapadalang style at model choice ang app. Ang backend ay pumipili ng isang method, nagsusulat ng ilang draft, at itinatago ang pinakamaganda bago gumawa ng anumang audio. Lumipat sa server ang paghuhusga dahil wala nang lugar sa screen para ilagay ito.
Ang isang bit ay limitado sa mga pitumpu't limang segundo. Hindi iyon teknikal na limitasyon; ito ay budget para sa haba ng mesa. Sapat ang haba para magkuwento, sapat ang ikli para walang kahit sino sa mesa ang naghihintay sa ikatlong minuto ng isang bagay na hindi gumagana.
Ang client ay 2.5 MB. Halos walang laman ang app, kasi halos wala dapat ang nasa loob ng app.
Napapalitan ang manunulat. Ang production ay gumagamit ng Gemini 3.8 Flash, na may ibang model na gumagawa ng moderation at ng best-of-N pick. Ang pagpapalit ng manunulat ay pagbabago sa config at walang app release — mahalaga ito kapag ang model na ginagamit mo ay napapalitan kada ilang buwan.
Hindi mo maa-automate ang panlasa
Ang pinakakapaki-pakinabang na natutunan ko ay tungkol sa evaluation, at malawak itong naaangkop lampas sa komedya.
Apat na magkakaibang pagkakataon, mataas ang binigay na score ng mga automated judge sa output na sinabi ng sarili kong tainga na hindi nakakatawa. Apat na beses. Kaya ng isang model na sabihin sa iyo kung buo ang istruktura, kung nakikilala ang method, kung dumarating sa tamang lugar ang pagliko. Hindi nito kayang sabihin kung tumatama ang pagliko. Paulit-ulit kong sinubukang ipagawa ito, at paulit-ulit itong sumasang-ayon sa sarili niya.
Kaya hinati ko sa dalawa ang problema. Ang mga mekanikal na check ang bantay sa mga bagay na kayang suriin nang mekanikal: gawa-gawang numero, binigkas na source text, tumagas na stage direction sa gitna ng linya, kahit anong nanlalait sa isang grupo, isang katawan, isang sakit, o isang pagluluksa. Ang tainga ang nagpapasya sa lahat ng iba pa, at tumigil ako sa pagsubok na ipasa iyon.
Kung nag-shiship ka ng AI features, ang hati na iyon ang karamihan ng trabaho. Hanapin ang bahagi ng kalidad na tunay na verifiable at i-automate ito nang walang paghingi ng paumanhin. Tapos maging tapat — sa sarili mo at sa kahit sinong magtanong — na ang natitira ay paghuhusga, at walang dami ng rubric ang makakapagpabago noon.
Malinaw itong sinasabi ng README ng proyektong ito, at wala pa akong nahanap na mas magandang pahayag: huwag kailanman magtiwala sa isang automated pass sa komedya.
Ang sinadyang isinuko ko
Dalawang desisyon na mukhang puwang, at isang talagang puwang.
Hindi ko makita kung paano ginagamit ang app. Walang analytics SDK, walang account, walang personal na data. Totoo ang privacy claim, at totoo rin ang halaga: hindi ko alam kung aling bit ang tumatama, aling boses ang nilalaktawan, o kung ilang tao ang nagbubukas nito nang dalawang beses. Nalalaman ko kapag may nagsabi sa akin.
Walang share button. Isa itong taya, at maaaring mali ako. Ang pagbabahagi ang paraan ng pagkalat ng isang comedy app, at sadyang hindi ko ginawa ang mekanismo. Ang taya ay ipinapasa ang telepono sa paligid ng mesa kaysa ipinapasa ang link sa isang group chat. Kung mali iyon, halata ang solusyon at malamang overdue na.
Wala pang ratings. Bago pa lang ito. Hindi iyon desisyon sa disenyo, kulang lang sa tao.
Ang hindi komportableng bahagi kung nasa media ka nagtatrabaho
Ang trabaho ko araw-araw ay media operations. Ang numerong pinag-optimize ko sa buong karera ay attention: oras sa site, haba ng session, dalas ng pagbabalik. Ang Knora ay ginawa para hindi hawakan ng telepono ang atensyon ng mesa nang mas matagal pa sa isang bit. Isang shake, isang bit, tapos baba na ulit ang telepono — at puwede mong i-shake ulit tuwing may gusto pang isa ang mesa.
Kung susuriin sa paraan ng pagsusuri ko ng media, iyon mismo ang kakaibang bahagi. Walang feed na hihila sa iyo pabalik, walang session na hahabaan, walang ginawa para hawakan ka nang lampas sa joke. Ang mayroon, isang dahilan para damputin itong muli — isang bit na sapat ang pagpapatawa para maging karapat-dapat sa susunod na shake. Pagkatapos noon, bibitawan ka na niya.
Hindi ko iniisip na ginagawa nitong mas mabuting produkto ito kaysa sa mga humahabol sa attention. Pero nagiging kapaki-pakinabang itong paalala na ang "mas maraming engagement" ay isang pagpili tungkol sa ginagawa mo, hindi batas ng kalikasan. At mas madaling gawin ang pagpiling iyon sa isang side project na walang nagbabayad.
Kung nakagawa ka ng bagay na ginawa para ibalik ang atensyon sa halip na hawakan ito, gusto ko talagang marinig kung paano mo ito pinag-isipan — hindi iyon design space na madalas kong ginagalawan sa araw.
Libre ang app sa App Store, at narito ang mga tala tungkol sa design. Kung susubukan mo at may bit na hindi tumama, sabihin mo sa akin. Ang buong app ang joke.
Maraming salamat, Chandler