Týdenní poznámky: Kurz scrapování v Pythonu a WebExpo

Jak se mi daří v jednom člověku provozovat a rozvíjet junior.guru? Od posledních poznámek už utekl nějaký ten týden (17. 5. až 31. 5.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.

Poznámky
Fotil Markus Spiske

Opět po dvou týdnech. První týden jsem pracoval pro Apify. Druhý týden jsem si v pondělí vzal volno, v úterý zajišťoval chod přednášky, ve středu a čtvrtek byl na WebExpu, a v pátek jsem šťouchal do různých věcí s nulovým výsledkem.

Kurz scrapování v Pythonu

Ve svém týdnu věnovaném práci pro Apify jsem se probíral různými issues na GitHubu a návrhy toho, jak by kurzy měly vypadat do budoucna. Naučil jsem se při tom konečně Mermaid, způsob, jak dělat flow charts v Markdownu. Výsledek zde: Proposal on future structure of courses. Mermaid takhle přímo funguje v GitHub Issues, ale třeba i v Obsidianu.

Pak jsem začal konečně něco pořádně tvořit: Kurz scrapování pro Pythonisty. Mám už úvodní stránku, strukturu a jednu a půl kapitoly. Rozpracoval jsem si to tady. Práce na kurzu mě dost bavila a vlastně se těším, až se k tomu po měsíci vrátím.

Úvodní stránka kurzu
Kapitola z kurzu

Krize s kamerou

Jak jsem tady už psal, odešla mi na noťasu kamera. Vážil jsem možnosti, ale s přibližující se přednáškou v klubu jsem do toho musel už říznout a nějaké řešení vybrat. Zvolil jsem využití Continuity Camera, a tedy upgrade telefonu na iPhone 13 mini s tím, že možná v budoucnu nakoupím díly a zkusím udělat servis noťasu sám.

Mám iPhone X, což je flagship telefon z roku 2017, kupoval jsem ho v době, kdy už byl za zenitem. Apple stále posílá updaty snad i iPhonům 5, takže to není problém (zdravím lidi s Androidem), ale prostě už nemá nejnovější fičury a v některých appkách se zadýchává. Od té doby Apple vydal spoustu telefonů, ale jen dva jsou menšího vzrůstu, iPhone 12 mini a iPhone 13 mini. Mají stejnou specifikaci jako 12 a 13, jen jsou menší do ruky (na úkor baterky). Mají novější čipy, lepší foťák, nové funkce. Třeba tu Continuity Camera, kterou umí iPhone až od verze 11, tedy těsně jeden model po tom mém.

První zásek přišel, když jsem zjistil, že iPhone 13 sice má stejně jako můj iPhone X dvě čočky, ale na rozdíl od mého telefonu má místo tele objektivu s optickým zoomem nějaký wide angle. Zoomuju pořád a všechno, zatímco wide angle netuším, k čemu bych použil. Prý se to hodí na svatbě, na párty, na děti. Ou jé. Nakonec jsem se nechal s pocitem „jsem Apple ovce“ zlomit a vsugeroval jsem si, že mi to určitě nebude vadit.

Další zásek přišel, když jsem měl iPhone 13 mini koupit. Malé telefony jsou v dnešní době zřejmě obskurní věc a trh s nimi není moc velký. Apple nějaké vyrobí jednou za dekádu, aby se neřeklo. Jelikož se už nevyrábí, vybírám jen z modelů, které zbyly, nebo z repasovaných modelů a modelů z druhé ruky. Jenže všechny dobré kusy měly jen 128 GB, což dle mých předchozích zkušeností není dostatečné. Teď mám telefon s 256 GB a dostatečné to je. S koupí nového telefonu jsem na tom nechtěl nic měnit, minimálně toto číslo určitě nezmenšovat. Našel jsem jednotky telefonů s touto velikostí disku, ale všechny až na jednoho byly růžové. Takže jsem koupil ten jeden jediný poslední.

Pak mi došlo, že ho asi na noťas, který mívám na stojánku, nepřilepím izolepou, a šel zkoumat držáky. Článek How to mount a phone webcam: which mount is best se tím krásně probírá, nakonec se mi nejvíc zamlouval ten Belkin. Chvíli to trvalo, ale sehnal jsem ho i u nás.

Takže hurá. Akorát že vůbec. Asi tři hodiny jsem nový telefon rozběhával, protože si nejdřív klonoval nastavení ze starého a potom stahoval milion updatů. Nakonec hotovo, ale Continuity Camera vůbec nefungovala. Po milionech pokusů a čtení dokumentace nebo článků o tom, co se může pokazit, jsem zoufale googlil už cokoliv souvisejícího a narazil na to, že lidi s počítači, které nemají kameru, nejsou schopni Continuity Camera rozběhat.

Například Mac Mini, stolní počítač od Applu, který kameru od výroby nemá, na rozdíl od notebooků. Všichni, kdo mají Mac Mini, mají problém Continuity Camera rozjet. Systém se totiž asi nemá od čeho odpíchnout, potřebuje umožnit výběr mezi kamerami, ale když tam žádná není, tak to nefunguje. Lidi psali, že museli do USB zapojit externí kameru, aby se jim to rozjelo. To je sice milé, ale jaksi to potom celé postrádá smysl - kdybych měl nebo chtěl ve svém USB externí webkameru, tak nedělám celé tohle cvičení. Viz Reddit nebo MacRumors nebo další MacRumors.

Mac mini seems to have a problem with continuity camera, as they do not have a built-in camera they cannot recognize the iPhone as a "secondary" camera since they do not have a primary camera. The problem is fixed by connecting some other camera for example via USB type A. I have not tried it but I have seen several testimonials about it.

Zjevně to testovali jen s noťasama, kde si lze díky Continuity Camera zlepšit kvalitu obrazu oproti vestavěné kameře, a tohle je prostě nějaký bug. Já sice noťas mám, ale s nefunkční kamerou, takže stejný problém. Kromě toho jsem samozřejmě našel spoustu lidí, kterým to i tak fungovalo „všelijak“ a často vůbec. Takže jsem to vzdal a někdy ve tři ráno nešťastný naklikal na Alze první kameru, která vypadala rozumně, s rozšířenou dobou na vrácení na 60 dní. Když přišla a zapojil jsem ji, propojení mobilu přes Continuity Camera hned fungovalo 😀

Vraťme se na začátek. Co že jsem to měl vlastně za možnosti?

  • Koupit levnou externí kameru na Alze a všude ji s sebou jako blbec tahat a cpát ji USB-A kabelem do USB-C portu a řešit, jestli budu mít call doma nebo v práci a když změním plány a kamera bude jinde, tak volat nemůžu, atd.
  • Jít do servisu a dát jim počítač, který mě živí, na několik dní, aby na něm vyměnili celý displej za 14 nebo kolik tisíc, protože Apple, protože je kamera zapečená do všeho, jen proto, aby fungovalo to, co před pár dny normálně fungovalo a teď nefunguje, ačkoliv jsem s noťasem nic zvláštního neudělal. (Já vím, tenhle pocit je asi běžný, když máte auto, ale já auto nemám, tak ho neznám.)
  • Koupit si náhradní díly nebo nějaký rozbitý počítač z Bazoše na náhradní díly (třeba za 5 tisíc, ale bez jakýchkoliv záruk, že) a pokusit se o výměnu dílů svépomocí.
  • Zkusit zhruba 10 tisíc dát za nový mobil, který podporuje Continuity Camera, protože mobil mám u sebe vždy a mohla by to byt dobrá kompenzace pro kameru. (A pak zjistit, že mi to nepomůže.)

Takže teď mám zaškrtnuté dvě řešení ze čtyř. Co dál? Koukal jsem ještě na videa jako je toto nebo toto a upřímně nemám vůbec chuť se pouštět do opravy svépomocí. Apple to nedělá vůbec jednoduché. Je tam mnoho momentů, kdy se může něco pokazit a nefungovat. Navíc jsou všude návody na výměnu displeje jako takového, ale čip kamery je pod ním a návod na výměnu přímo kamery jsem nikde nenašel. A byla by to spousta práce navíc a další peníze, s velkou nejistotou toho, že se to vyplatí. Takže se začínám smiřovat s tím, že

  • s tím prostě půjdu do servisu a dám za to ty peníze,
  • vrátím webkameru do Alzy,
  • nechám si iPhone 13 mini a prodám starý iPhone X, což by mělo aspoň trochu snížit cenu nového telefonu,
  • rychle popřemýšlím, zda vrátit či nevrátit (nerozbalený) Belkin držák.

Nic lepšího mě nenapadá.

Webkamera do USB

Přednáška v klubu

Na úterý byla plánována přednáška s Tomášem Ervínem Dombrovským, na kterou se všichni v klubu velmi těšili.

Plakátek

Hlavně kvůli ní jsem v rychlosti řešil celou tu věc s kamerou. Kromě toho mě ale přednáška potrápila i jinak. Tomáš byl hodně zaneprázdněný a nestihl mi dodat žádné další informace k přednášce, takže ještě v den přednášky ráno bylo vše označeno jako „bude upřesněno“. Na druhou stranu, přednáška byla na konkrétní objednávku z mé strany a tak jsem ten název i popis prostě vymyslel a pak to rychle ještě propagoval na LinkedInu a Mastodonu. Možná jsem to mohl udělat mnohem dřív!

Den předtím jsem nezvládl životosprávu a do noci sledoval záznam (!) F1 v Monaku. Bylo to nejhorší možné ponocování, jelikož se v tomhle závodě vůbec nic nedělo a bylo téměř zbytečné jej sledovat. To nic nemění na tom, že jsem byl celé úterý úplně vyžvejklý.

Do toho mi došlo kafe. Do toho se měnily klíče v kanclu. Do toho jsem se dověděl, že mi vypadl pomocník na nahrávání videí a hledal jsem náhradu. Už už jsem vyhrabával z commitů starý návod a instaloval BlackHole s tím, že to zkusím nějak sám, ale naštěstí měl čas Patrik a vzal to za Tinukiho.

Dobrá zpráva byla, že Tomáš během dne odpovídal a zaregistroval se úspěšně do klubu, takže byl připraven k přednášení. Bohužel měl nabitý den, takže se připojil až přímo na přednášku a ladili jsme nefunkční techniku až během ní.

Nicméně potom už se to nějak rozjelo a všechno to bylo super, přišlo přes 30 lidí a do konce jich vydrželo taky kolem 30, což je velmi slušná účast. Na konci v chatu pršely srdíčka a kdyby to nebylo online, tak to byla přímo děkovačka ve stoje. Tomáš byl skvělý a byť to nezačalo moc pozitivními zprávami o vývoji trhu, tak to skončilo celkem motivačními doporučeními co v této situaci dělat.

Takže sice to bylo náročné, ale dopadlo to dobře, tak to ten dobrý pocit aspoň mohl kompenzovat. Všechny problémy jsem nějak vyřešil, přednáška se odehrála, záznam vznikl. Největší radost mi ale dělalo, že jsem se tím celým nenechal moc stresovat. Během celého úterka jsem zachovával chladnou hlavu a spíš krčil rameny, že pokud třeba záznam nebude, tak holt nebude, planeta se točí dál.

Jestli se mi ale chce při takové náročnosti dělat přednášky v klubu? To teda asi moc nechce, no. Naštěstí se rýsují ty spolupráce s Lucií Lenértovou, Vojtou Mádrem, a možná něco upečeme i s tím Patrikem Brnušákem, který to nahrával. Tím by mohly být večerní akce v klubu do budoucna relativně pokryté a já bych se už mohl věnovat nějakému jinému kouzlení, které nevyžaduje tolik mojí many.

WebExpo 2024

Celou středu a velkou část čtvrtka jsem byl na WebExpu. Chtěl jsem vidět hlavně Nathana W. Pyla, což je autor mých oblíbených komiksů s mimozemšťany. Tak oblíbených, že mám s jejich motivy dvě trička. Teď mám tři, protože Nathan vytvořil motiv i pro letošní WebExpo tričko!

Letos jsem střídal povídání s lidmi a chození na přednášky. To bylo strategicky správně, jelikož jsem vždy při jednom mohl odpočívat od toho druhého. Taky jsem se chodil projít na vzduch a na sluníčko do Františkánské zahrady.

Nebudu tady asi psát nějakou recenzi. Viděl jsem se s mnoha zajímavými lidmi, ať už starými známými, nebo těmi, které jsem nově poznal. Viděl jsem užitečné přednášky. Odnesl jsem si různé poznámky, které si tady odložím.

  • Hodí se udělat subdoménu na emailing, třeba něco@mail.junior.guru, protože pak rating z emailingu neovlivňuje vaši celkovou doménu.
  • Měl bych nějak přidat lidi, které mám zaregistrované v klubu, do odběratelů mého newsletteru. Teda až bude existovat.
  • Až půjdu na WebExpo příště, mohl bych mít pár papírových letáčků, kde bude vysvětlené co je junior.guru a jak může pomoci firmám. Tento letáček budu rozdávat těm, kdo tam mají stánky 😀
  • Vyzdvihnout na profilech juniorů, pokud umí pracovat s AI.
  • Mrknout se na Atuin.
  • Ozvat se MSD, se kterými jsem se bavil na stánku.
  • Podívat se na program kina Edison, o kterém jsem nevěděl, že existuje.
  • Mrknout na Biome
  • Mrknout na SQLModel
  • Mrknout na animation timelines v CSS: scroll-driven-animations.style
  • Možná vytvořit „Tinder“ variantu profilů kandidátů - swipe, nebo tlačítka jako u Eventee, nebo jako u Slacku. Možná je to blbost.
  • Screenshoty dělat s nainstalovaným i-dont-care-about-cookies.eu
  • Podívat se, jak můžu s langchain a Apify vytvořit chatbota pro junior.guru. Ale nejdřív vymyslet, k čemu by byl. Možná by to nemusel být chatbot, ale mohlo by to z příručky vytahovat něco jako „tip dne“ a posílat do klubu.
  • OpenAI má na webu návod, jak psát prompty.

Záznamy přednášek už se objevují tady.

Nathan W. Pyle na WebExpu

Ladění LLM

Při pátečku jsem si řekl, že než se pustím do důležitých úkolů, udělám nějakou malou věc, která mi rychle dodá pocit dobře udělané práce. Mé oko padlo na požadavek, aby můj bot hledal inzeráty práce nejen pro programátory a testery, ale i pro datové analytiky. Samotná změna byla celkem hned, jenže jsem u ní zjistil, že se mi to vlastně netřídí moc dobře.

A protože mi to třídí LLM, tak jsem začal ladit prompt. A ladil jsem a ladil jsem. Hodiny. A nakonec jsem to ani nedoladil, protože mi došel počet tokenů na den, OpenAI mě zařízlo. To mě naštvalo, takže jsem se šel koukat na pricing k Replicate, kde provozují open source modely a mají jiné limity a ceny. Chtěl jsem použít Lifeboat, ale nepovedlo se mi to rozchodit.

No a když byl čas na večeři, tak jsem to akorát celé pushnul do větve s tím, že to musím teda asi dodělat jindy. Tolik k mé páteční produktivitě.

Další

  • Vláda ČR chystá na tento podzim roadshow po základních a středních školách, kde budou dobrovolnice přednáškami či diskuzemi motivovat dívky do IT. Pokud je tady někdo, kdo by se toho chtěl jako dobrovolnice účastnit, tak se prosím předběžně registrujte v tomto formuláři. Přihlašování je do 7.6., což je za chvíli! Je to jen pro ženy, logicky, aby tam byl ten vzor „když ona může, můžu já“.
  • Discord mění směr. Čtu to tak, že podchytit obecně komunity Discord vyhodnotil jako odbočku během covidu, která mu nevydělá dost a že se chce (opět) soustředit primárně na hráče. Trpět mě tam asi budou, ale otázka je, zda budou přidávat fičury nebo řešit bugy, které mi k něčemu jsou, nebo které mi spíš překáží. Já soundboard nebo activities zas tak moc neocením. Může se stát, že časem bude pro lidi divné nebo nepraktické na této platformě diskutovat na jiná témata, než je hraní her. Plán B nemám. Ale pokud bych měl mít, zkusil bych něco open source, co může provozovat kdokoliv. Buď někdo, komu platím, nebo já sám. Vím v tomto směru jen o Discourse a nejsem si jistý, zda je to úplně to, co bych chtěl.
  • Objevil jsem Koala sampler. Sdílel to František Fuka na Mastodonu. Už delší dobu jsem něco takového hledal a už jsem zkoušel i za pár korun koupit nějaké appky, ale nikdy to nebylo úplně ono. Ale Koala je boží. A nevěřili byste, jak si s tím dokáže vyhrát moje tříletá dcera! Nejlépe utracené peníze v poslední době.
  • Sjednotil jsem si labely pro issues na junior.guru repozitářích na GitHubu.
  • Opravil jsem klubového bota, protože jsem ho předchozími změnami rozbil.
  • Byli jsme na Žižkovských mezidvorcích a užili jsme si to. Koukali jsme na hokejové finále a užili jsme si to. V pondělí jsem si vzal dovolenou a prošel jsem se s dlouholetým kamarádem, kterého však nevidím moc často, po lesích, a kecali jsme.
  • Žena narazila na nějaký akční slevový kupón na Botasky a mě se dvoje současné rozpadají, tak jsem to využil a koupil jsem nové. Mám z nich velkou radost, jsou pohodlné. Akorát jsou příliš čisté a jak jsem byl s tím kamarádem v lese, tak jsem si je strašně zašpinil, a pak jsem doma hodně řešil, jak ten semiš zase vyčistit. Jako nějak se mi to povedlo, ale už teda tak zářivé nejsou. Možná škoda, možná dobře, protože na to aspoň přestanu myslet!
  • Nevymyslel jsem, o čem bych letos přednášel na Frontkonu, tak jsem jim do CfP nic nehodil. Konference bude v říjnu v Praze, už spustili i prodej lístků.
  • E-maily, klubový Discord, Pyvec Slack, zprávy na LinkedIn. Naštěstí toho nebylo nějak moc.
  • Za 15 dní jsem naběhal 6 km, při procházkách nachodil 25 km, na túrách nachodil 22 km. Celkem jsem se hýbal 23 h a zdolal při tom 53 km. Detaily na Strava, jediné sociální síti, kde si napsání statusu musíte zasloužit.

Plánuji

  1. Budu s Terkou pracovat na prodejní stránce klubu.
  2. Podívám se na připravované změny v textu stránky o psychickém zdraví od Nely.

Zaujalo mě

Když na něco narazím a líbí se mi to, sdílím to na Mastodonu. Od posledních poznámek jsem sdílel: