Javorové lístkyhttps://honzajavorek.cz/2024-03-22T00:00:00+01:00Honza Javorekmail@honzajavorek.czhttps://honzajavorek.czBlog Honzy Javorka© Copyright 2007—2024 Honza Javorek <https://honzajavorek.cz>Týdenní poznámky: Nový příběh, oprava scraperů a nový návod2024-03-22T00:00:00+01:002024-03-22T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2024-03-22:/blog/tydenni-poznamky-novy-pribeh-oprava-scraperu-a-novy-navod/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-mycka-pribehy-a-schuzky/">posledních poznámek</a> už utekl nějaký ten týden (15. 3. až 22. 3.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Plány:</strong> Aktuální „předsevzetí” jsou v článku <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">Plán na Q1 2024</a></p>
<p><strong>Čísla:</strong> Finanční …</p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-mycka-pribehy-a-schuzky/">posledních poznámek</a> už utekl nějaký ten týden (15. 3. až 22. 3.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Plány:</strong> Aktuální „předsevzetí” jsou v článku <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">Plán na Q1 2024</a></p>
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
</div>
<h2 id="novy-pribeh">Nový příběh<small class="permalink"><a href="#novy-pribeh" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Minulý týden se mi povedlo publikovat dva nové příběhy na web.
V pondělí jsem jeden nasdílel na sociální sítě:</p>
<ul>
<li><a href="https://mastodonczech.cz/@honzajavorek/112116162050186114">Mastodon</a>,</li>
<li><a href="https://www.linkedin.com/feed/update/urn:li:activity:7175432637157646336/">LinkedIn</a>,</li>
<li>a velké množství skupin na Facebooku.</li>
</ul>
<p>Když už jsem byl po sto letech zase na Facebooku, procházel jsem si dotazy v <a href="https://www.facebook.com/groups/144621756262987/">Programátoři začátečníci</a> nebo <a href="https://www.facebook.com/groups/1806114342948040/">IT jobs / Práce v IT</a> a pokusil se tam na pár odpovědět.
Vzápětí mi do klubu přišlo pár lidí z Facebooku, tak bych měl tohle možná dělat častěji.</p>
<h2 id="obsahova-spoluprace">Obsahová spolupráce<small class="permalink"><a href="#obsahova-spoluprace" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>S <a href="https://www.programhrovani.cz/">Vojtou Mádrem</a> jsme formou spousty písmenek v soukromých zprávách brainstormovali nad různými obsahovými projekty a možnostmi spolupráce.
Nic konkrétního z toho není, uspořádávali jsme si myšlenky a nápady.</p>
<p>Volal jsem si s <a href="https://www.youtube.com/@LucieLenertova/">Lucií Lenértovou</a> a dohodli jsme se, že by zhruba od září mohla dělat nějaký obsah pro klub.
Ještě musíme doladit detaily spolupráce, ale už teď se na to těším.
Myslím, že to bude <em>win-win</em>.</p>
<h2 id="oprava-scraperu">Oprava scraperů<small class="permalink"><a href="#oprava-scraperu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>V Apify opravili integraci se Scrapy.
Zjistil jsem, že mi scrapery stále nefungují, ale ne kvůli Apify, což byla příjemná změna.</p>
<p>Jeden scraper jsem opravil relativně rychle, ale druhý mi dal dost zabrat.
Stahuje nabídky práce na LI, a LI se urputně brání, abych to dělal (jsou to <a href="https://nubela.co/blog/is-linkedin-scraping-legal/">veřejná data na jejich webu, nic za loginem</a>).</p>
<p>To mě přivedlo k myšlence, že můj život je možná příliš krátký na to, abych s LI hrál hru na kočku a myš, a začal jsem hledat hotové řešení.
První cesta vedla do <em>Apify store</em>, ale:</p>
<ul>
<li><a href="https://console.apify.com/actors/8swo47WpOkyzxtvAR/information/">$16/měsíc + provoz</a>,</li>
<li><a href="https://console.apify.com/actors/gdbRh93zn42kBYDyS/information">$25/měsíc + provoz</a>,</li>
<li>nebo dokonce <a href="https://console.apify.com/actors/BHzefUZlZRKWxkTck/information/">$30/měsíc + provoz</a>,</li>
</ul>
<p>mi zatím přišlo jako velké náklady na to, že jsou nabídky práce na junior.guru spíš doplňkovou službou, která přímo nic nevydělává.
I když ten za $16, ten by možná ještě šel…</p>
<p>Z výběru jsem vyřadil scrapery, které vyžadují zadání mých cookies.
Svoje cookies nikomu nedám a i když si na LI vytvořím <em>fake</em> profil, bojím se, že sice hodím peníze na problém scrapování, ale vyměním ho akorát za problém vytváření nových a nových účtů po tom, co mi je LI zabanuje.
Chci, aby scraper využíval veřejná data, která jsou vidět anonymně, nebo aby na sebe vzal problematiku účtů.</p>
<p>Hledáním jsem narazil na <a href="https://github.com/spinlud/py-linkedin-jobs-scraper">py-linkedin-jobs-scraper</a>, ale to bych stejně musel provozovat.
Pak jsem našel nějaký <a href="https://www.scrapingdog.com/linkedin-jobs-api">Scrapingdog</a>, dokonce i s <a href="https://www.scrapingdog.com/blog/scrape-linkedin-jobs/">návodem</a>, který v podstatě popisuje přesně to, co sám dělám.
Ale jsou na mě moc drazí.
Další podobný návod jsem našel na <a href="https://www.scraperapi.com/blog/how-to-build-a-linkedin-scraper/">scraperapi</a>.</p>
<p>Pak jsem našel <a href="https://nubela.co/proxycurl/">proxycurl</a>, které vypadá dost zajímavě.
Mají pouze data, která jsou veřejná, <a href="https://nubela.co/blog/how-fresh-are-profiles-returned-by-proxycurl-api/">kešují to</a>, umí i <a href="https://nubela.co/proxycurl/docs#search-api-job-search-endpoint">vyhledávat</a>, mají API, a mají <a href="https://nubela.co/proxycurl/pricing"><em>pay-as-you-go</em> od $10</a>.
Taky mají v rámci API i nějaké <em>free endpointy</em>, např. na <a href="https://nubela.co/proxycurl/docs#people-api-person-profile-picture-endpoint">obrázek člověka</a> nebo <a href="https://nubela.co/proxycurl/docs#company-api-company-profile-picture-endpoint">logo firmy</a>.
Vyzkoušel jsem to a hned mi napsali, jestli se mi to líbí, tak jsem jim napsal feedback.
Rozhodně na mě udělali dobrý dojem, ale:</p>
<ul>
<li>Kešované profily lidí mi bohužel neřeší jednu věc do budoucna, co plánuji,</li>
<li>vyhledávání inzerátů by mohlo být náhradou za scraper, ale vracelo mi to trochu jiné výsledky. Musím to ještě vyzkoušet a nějak se rozhodnout.</li>
</ul>
<p>Nakonec jsem to ale nějak opravil, ten scraper, který už mám.
Takže vzápětí motivace dotáhnout to a zjistit, jestli by ho proxycurl mohlo nahradit, klesla na nulu.
Až se to zase rozbije, tak tu myšlenku oživím.</p>
<h2 id="novy-navod">Nový návod<small class="permalink"><a href="#novy-navod" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Velkou část týdne jsem psal příručku.
Konečně!</p>
<p>Zpracoval jsem všechny poznámky, které jsem měl k <a href="https://junior.guru/handbook/">úvodní stránce příručky</a>, a trochu jsem ji ještě upravil.
Nově jsem tam naznačil možné záseky, které mohou juniory na cestě potkat.
Snad to teď ale nebude moc <em>doom & gloom</em> a všechny to neodradí 😅</p>
<p>Ještě jsem sepsal důvody, proč příručku píšu, a hodnoty, na kterých je postavená, ale nakonec mi přišlo, že se to na tu úvodní stránku nehodí.
Bylo mi líto to smazat, tak jsem to zatím <a href="https://junior.guru/faq/">nacpal do FAQ</a>, a časem vymyslím, kam to zapadne.</p>
<p>No a pak jsem konečně přidal novou stránku do příručky, na nové téma, s novým návodem!
Mám z toho ohromnou radost.
Tady to je: <a href="https://junior.guru/handbook/github-profile/">Jak si vyladit profil na GitHubu</a>
Snažil jsem se vyhrát si s tím a hlavně mnohem víc než dřív využívat obrázky.
Budu rád za zpětnou vazbu!</p>
<p>Samozřejmě mě svrbí prsty, chtělo by to hned přespat i kapitoly o Gitu, o projektech, a tak dál, ale holt nejde udělat vše najednou.</p>
<figure class="figure"><img alt="Nová kapitola v příručce" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2024-03-22-at-20-43-37-jak-si-vyladit-profil-na-githubu.png"></figure>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Byl jsem po dlouhé době na <a href="https://pyvo.cz/praha-pyvo/">Pyvu</a>.
Přijel <a href="https://junior.guru/podcast/5/">Tatanka</a> a vzal jsem s sebou kamarádku <a href="https://domicanhelp.cz/">Domi</a>.
Překvapilo mě, že přišlo dost lidí, které znám ze starých predcovidových časů.
Dokonce se hrálo na ukulele!
Akci jsem si moc užil, i díky nové strategii, kdy si dám nějaké to pivo, ale potom pokračuji nealkoholickými.
Nezabránilo mi to přijít domu o půl třetí ráno po tom, co jsme „pomáhali“ Tatankovi čekat na ranní vlak domů, ale ničeho nelituju.</li>
<li>Zašli jsme na <a href="https://denvltavy.vsevltavskyspolek.cz/">Den Vltavy</a> a bylo to fajn.
Vyšlo nám krásné počasí.</li>
<li>Byl jsem na obědě s kamarádem, v sauně, udělal jsem si procházku po Praze, byl jsem u holiče.
Byl jsem na schůzce v Apify.</li>
<li>Nepovedlo se mi po upgradu pycordu vyřešit <code>ERROR: Unclosed client session</code>, tak jsem to nechal být a pouze na to <a href="https://github.com/Pycord-Development/pycord/issues/2399">založil issue</a>.</li>
<li>Zjistil jsem, že na Memberful od začátku špatně pracuji s kupóny.
Když někomu dám roční kupón se 100% slevou, za určitých podmínek jsem mu tím dal omylem dva roky zdarma.
Nejspíš se mi to stalo u velkého množství lidí 🤦♂️</li>
<li>Známý mě odchytl na Pyvu a prý že shánějí juniora.
Tak kdo umíte trochu Excel a chcete automatizovat, ideálně ještě pokud se třeba rekvalifikujete z účetnictví, <a href="https://www.jobs.cz/fp/asb-czech-republic-s-r-o-233975/2000176507/?searchId=5b2e93b9-305a-443a-87dd-e647bfdf8e7c&rps=329">mrkněte na to</a>.</li>
<li>Už se plánuje další <a href="https://honzajavorek.cz/blog/tyden-pro-digitalni-cesko-z-pohledu-partnera/">Týden pro Digitální Česko</a>.
Prošvihl jsem call s Bartošem, ale pozvánku na Slack, který zřídili, jsem si vyzvedl.</li>
<li>Začal mi padat skript, který si stahuje nějaké statistiky.
Používá se to jen na vykreslení pár grafů.
Zatím nevím, jestli to bude permanentní problém, a budu to muset nějak řešit, nebo jen dočasný výpadek na druhé straně, ale znamená to, že mi neprojde build.
A to v pátek znamenalo, že nemůžu publikovat novou kapitolu o GitHub profilu a pochlubit se s ní světu!
Takže jsem narychlo splácal způsob, jak build může obejít chybu, nareportovat mi ji na Discord, a místo grafů na webu napsat, že chybí data a dočasně je to rozbité.
Takový mechanismus by se mi do budoucna určitě hodil na spoustu dalších věcí, ale asi ho budu implementovat až když zase někde něco spadne.</li>
<li>Redis <a href="https://redict.io/posts/2024-03-22-redict-is-an-independent-fork/">změnil licenci</a> a Bo Bayles, který ode mně kdysi převzal <a href="https://github.com/redis-collections/redis-collections/">redis-collections</a>, mi napsal, jestli to nezavřem.
Zavřem.
Ani jeden už to stejně nepoužíváme.
Tím skončí jedna z nejmilejších věcí, která se mi v rámci open source stala.
Ty redis-collections jsou jeden z prvních vážně míněných projektů, který jsem kdysi dal na GitHub.
Když jsem to přestal rozvíjet, ozval se mi Bo, náhodný člověk z druhého konce planety, že by to převzal.
Důvěřoval jsem mu a mnoho let se o knihovnu staral a rozvíjel ji.
Vždy mi to přišlo jako milý příběh úspěšné spolupráce lidí různě po světě, pro dobro světa.
Takové to, co v tom open source asi všichni tak nějak hledáme, a proč to děláme.</li>
<li>Někdo mě pozval jako hosta do kanálu v jejich Slacku.
Musím říct, že nic tak strašného, jako proces, kterým jsem se tam snažil dostat, jsem už dlouho nezažil.
Protože jsem si kanál nechtěl přidat do Czechitas, Pyvce, ani jiného svého existujícího Slacku, vytvořilo mi to nový workspace, který se jmenoval „Honzajavorek“ a já jsem se v něm jmenoval „mail“.
Pak mi to ale napsalo, že pozvánku mám stejně na jiný e-mail a nemohu ji vyzvednout.
A nakonec mi to napsalo, že tuhle pozvánku mohu vyzvednout jen v rámci placeného workspace.
Druhá strana mě musela pozvat znovu a nakonec jsem si to stejně musel vlepit do Pyvec Slacku, i když jsem to tam nechtěl (je Pro a chodím tam nejčastěji) 🤯 No, zase se mi ověřilo, že Slack už pro mně není.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.
Po tomto týdnu mám v e-mailu asi jen 10 nedořešených zpráv, juch.</li>
<li>Za 8 dní jsem při procházkách nachodil 20 km. Celkem jsem se hýbal 7 h a zdolal při tom 20 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Rozhodnu co s barterem (viz minulé poznámky).</li>
<li>Pustím se do něčeho, o čem tady napíšu za týden.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.ben-evans.com/benedictevans/2024/3/17/a-month-of-the-vision-pro">A month of the Vision Pro — Benedict Evans</a><br>„What will we do with VR? The metaverse! What is the metaverse? What we do with VR!“</li>
<li><a href="https://zdopravy.cz/pokud-si-koupite-do-mesta-hummera-jste-idiot-radnim-na-okraji-melbourne-dosla-trpelivost-s-velkymi-vozy-198540/">Pokud si koupíte do města hummera, jste idiot. Radním na okraji Melbourne došla trpělivost s velkými vozy - Zdopravy.cz</a><br>lol 😀 jako tohle by se v Praze hodilo taky, že…</li>
<li><a href="https://zdopravy.cz/jak-dostat-lidi-z-d1-do-vlaku-pruzkum-zjistoval-proc-nekdo-preferuje-auto-a-zda-to-zmeni-vrt-198327/">Jak dostat lidi z D1 do vlaků. Průzkum zjišťoval, proč někdo preferuje auto a zda to změní VRT - Zdopravy.cz</a><br>„Třetina lidí na D1 sedí v autě sama, což je pro srovnání lepší číslo než ve městech, kde bývá průměrná obsazenost vozu jen 1,2 člověka.“</li>
<li><a href="https://share.transistor.fm/s/e1244489">Marie Heřmanová - TikTok je hlavně interaktivní televize, efekt sociálních bublin na sítích se přeceňuje — Kolaps — Overcast</a><br>Marie Heřmanová opět skvělá. Skoro bych si nainstaloval TikTok.</li>
</ul></div></div></div></div>Týdenní poznámky: Myčka, příběhy a schůzky2024-03-15T00:00:00+01:002024-03-15T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2024-03-15:/blog/tydenni-poznamky-mycka-pribehy-a-schuzky/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-pizza-viroza-obsidian-a-vitr-v-prirucce/">posledních poznámek</a> už utekl nějaký ten týden (8. 3. až 15. 3.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="výhled" src="https://honzajavorek.cz/images/img-8025.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Výhled z jedné střechy</figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Plány:</strong> Aktuální „předsevzetí” jsou v článku <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">Plán na Q1 2024</a></p>
<p><strong>Čísla …</strong></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-pizza-viroza-obsidian-a-vitr-v-prirucce/">posledních poznámek</a> už utekl nějaký ten týden (8. 3. až 15. 3.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="výhled" src="https://honzajavorek.cz/images/img-8025.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Výhled z jedné střechy</figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Plány:</strong> Aktuální „předsevzetí” jsou v článku <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">Plán na Q1 2024</a></p>
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
</div>
<p>Vzhledem ke všemu níže uvedenému nakonec tento týden nezbyl skoro žádný čas na soustředěnou práci typu psaní nebo programování.
Snad bude příští týden klidnější a vrátím se opět k příručce.</p>
<h2 id="mycka">Myčka<small class="permalink"><a href="#mycka" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Myčku jsem sice nedávno opravil, ale pak se pokazila zase.
Tak jsme zavolali opraváře a ten ji znova opravil, ale řekl, že pokud se pokazí zase, tak ji máme vyhodit.
Že je stará, výrobce už neexistuje, náhradní díly už neexistují, a tak dále.
Že udělal, co mohl.
Pokazila se zase.
Takže jsme se s majiteli bytu domluvili, že pořídíme novou.</p>
<p>Bydlení v nájmu je nekonečný zdroj překvapení.
Třeba to, jak na našem bytě udělali kuchyň.
Je to „dokonalé“.
Neumím si představit se v tom rýpat bez zkušeností rýpat se v <em>legacy codebases</em> jako programátor.
To už bych to asi jinak rozkopal vzteky.
Takhle vím, ze se stačí dotýkat jen věcí, které potřebuju změnit, a u těch ostatních raději ani nefoukat do usazeného prachu, nebo se to celé zhroutí.</p>
<p>Až se bude příště <del>produkťák</del> žena ptát, jestli má objednat i odinstalaci staré myčky a instalaci nové myčky, nebo jen dopravu spotřebič za spotřebič a zvládneme to sami, zaváhám trochu déle nad odpovědí „jasný, vždyť to jenom vysunu a oddělám dvě hadice“.
V úterý dopoledne jsem starou myčku vymontoval, v pátek dopoledne přivezli novou a tu jsem zase nainstaloval.
Oboje trvalo trochu déle, než jsem čekal, ale vše se nakonec povedlo.
Nová myčka, zdá se, funguje.</p>
<p>Ještě se nám tam trochu hýbe, tak budu přemýšlet, jak ji upevnit líp, ale to je jednak dáno již zmíněným „charakterem“ kuchyně, jednak se to dá ladit postupně časem, na funkci to nemá vliv.</p>
<h2 id="akce-v-klubu">Akce v klubu<small class="permalink"><a href="#akce-v-klubu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>V úterý večer byla po dlouhé době opět přednáška v klubu: <a href="https://junior.guru/events/41/">„Agile is dead!“ …nebo ne?</a>.
Přišlo 20 lidí, do konce se udrželo 10, k dnešnímu dni si záznam pustilo 12 lidí.</p>
<p>Nebylo to nějaké nejvíc hlasované téma v anketě, spíš jsem já chtěl, aby tohle téma někdo juniorům vysvětlil, takže nemám nějaké vrásky z toho, že se na to nehrnuly davy.
Pro některé juniory, kteří se teprve učí for cyklus, je to navíc asi ještě stále docela vzdálené téma.</p>
<p>Trochu se nám to protáhlo, ale jinak žádné záseky, sluchátka jsem měl nabité, počítač taky, Tinuki přednášku nahrál, všechno v pohodě.
Romanovi se přednášení líbilo.</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Bylo to super zorganizované, a celá ta aktivita se mi líbí.</p>
</blockquote>
<figcaption class="blockquote-footer"> Roman Loník</figcaption>
</figure><p>Aby toho nebylo málo, kde se vzal, tu se vzal, najednou se v klubu objevil <a href="https://www.linkedin.com/in/vladislavskoumal/">Vláďa Skoumal</a> a navrhnul, že by večer přišel do klubovny (hlasového kanálu) a kdo by chtěl, může s ním volně pokecat o mobilním vývoji.
Tak se lidi nějak domluvili a opravdu se to odehrálo.
Přišlo mi to strašně super!
Přesně takových akcí bych v klubu chtěl víc - organizovaných zdola, z iniciativy členů.
Měl jsem z toho fakt radost, když jsem viděl, jak se to děje.</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Dobrý to bylo. Vláďa jel z Brna do Práglu a po cestě nám vykládal jak o vlastní firmě, tak o mobilním vývoji. Odpovídal na dotazy. Za mě super a těším se na další.</p>
</blockquote>
<figcaption class="blockquote-footer"> Marcel</figcaption>
</figure><h2 id="pribehy">Příběhy<small class="permalink"><a href="#pribehy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Před časem se mi ozval <a href="https://www.frantiseknemet.cz/">František</a>, že by sepsal svůj příběh o cestě do IT.
Protože měl vlastní web, tak jsme se domluvili, že to sepíše u sebe a já na to odkážu.
Sepsal, já jsem mu udělal ještě korekturu článku, celé se to různě protahovalo hlavně z mojí strany, ale tento týden jsem to konečně <a href="https://junior.guru/stories/#pribehy-odjinud">přidal na web</a> a rovnou jsem to i hodil na sociální sítě.
<a href="https://www.frantiseknemet.cz/posts/jak-jsem-se-stal-programatorem">Čtěte!</a></p>
<figure class="figure"><img alt="František Nemét" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2024-03-11-at-10-57-02-jak-jsem-se-stal-programatorem-bez-vejsky-bez-vysokeho-iq-ale-ne-bez-potizi.png"></figure>
<p>V půlce týdne bylo jasné, že tento týden nic nenapíšu ani nenaprogramuju.
Řekl jsem si ale, že přepsat měsíce hotové rozhovory z Google Docs do Markdownu bych zvládnout mohl.
A taky že jo.
Když jsem měl hoďku dvě bez vyrušení, věnoval jsem se tomuhle a konečně se mi povedlo vydat zbývající dva rozhovory:</p>
<ul>
<li><a href="https://junior.guru/stories/lucie-cicvarkova/">Prostředí kurzů mě krmilo šťastnými příběhy, realita tak růžová nebyla, říká testerka Lucie</a></li>
<li><a href="https://junior.guru/stories/nina-brichackova/">Mnohdy ani sama firma nemá jasno v tom, koho chce nabrat, říká vývojářka Nina</a></li>
</ul>
<p>Rozhodl jsem se nědělat to už nějak na pokračování, abych to už neodsunoval, a dal jsem na web hned oboje.
Omluvil jsem se oběma protagonistkám, že jsem vydání tak zdržel.
Zatím je to jen hozené na web a neoznámil jsem to ještě ani v klubu.
Plánuju v pondělí oznámit jeden rozhovor a dát jej i na sociální sítě, a třeba další pondělí to udělat s druhým.</p>
<figure class="figure"><img alt="Příběhy" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2024-03-15-at-21-00-56-novinky-pro-zacatecniky-v-programovani.png"></figure>
<h2 id="konzultace">Konzultace<small class="permalink"><a href="#konzultace" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Ve čtvrtek dopoledne jsem dával placenou konzultaci na téma budování komunity.
Mělo to být na zhruba hodinu, protáhlo se nám to na tři.
Bylo to fajn.
Ještě se musíme domluvit, jestli to nakonec bude za peníze, nebo barter.
V případě barteru by mi druhá strana pomohla vylepšit něco na junior.guru, takže to dost zvažuju.</p>
<p>Během konzultace jsem se i já dověděl o zajímavých věcech, které jsem neznal.
Například o Discord botech, kteří jsou možná schopni poskytnout dost podobné služby jako Memberful:
<a href="https://mee6.xyz/en">mee6</a>, <a href="https://probot.io/">probot</a></p>
<h2 id="usi">Uši<small class="permalink"><a href="#usi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Ve čtvrtek jsem chtěl ještě stihnout oběd s dalším kamarádem a stavit se na ORL, ale jak se protáhla konzultace, oběd jsem posunul a ORL těsně nestihl.
Přijel jsem 30 minut před koncem ordinační doby a už byla zavřená čekárna.</p>
<p>V pátek jsem si přivstal a jel na ORL znova.
Doktor mi řekl, že uši jsou zdravé a jestli mi týden více či méně zaléhají, může to být nějaký namožený krk po té viróze a mám si ho nahřívat.</p>
<figure class="figure"><img alt="jaro" src="https://honzajavorek.cz/images/img-8074.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Jaro na Vítkově</figcaption></figure>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Sešel jsem se s Lukášem z Fakturoidu (oběd a kafe), s Janem z Mews (dětské hřiště), s kamarádem Ivanem (kafe).</li>
<li>Koupil jsem lístek na <a href="https://f1exhibition.com/vienna/">The Formula 1 Exhibition</a>.
Povedlo se mi to asi na osmnáctý pokus, ve třetím prohlížeči.</li>
<li><a href="https://mastodonczech.cz/@honzajavorek/112077122727922675">Odinstaloval jsem Liftago</a>.</li>
<li>Apify <a href="https://github.com/apify/apify-sdk-python/issues/190#issuecomment-1991947151">vydali opravu na Scrapy integraci</a>.
Měl jsem čas to akorát upgradovat u sebe a kouknout, co to zběžně dělá.
Zatím to vypadá, že mi scrapery popadaly jako hrušky, ale ne kvůli Apify.
Což je příjemná změna.
Až opravím svoje problémy ve scraperech, uvidím, jestli je vše na straně Apify ok, nebo najdu ještě něco.
Každopádně stahování inzerátů teď kvůli tomu trochu stojí.</li>
<li>Kamarád se hlásí na jednu exkluzivní pozici a poprosil mě, abych se podíval na CV a další materiály, které k tomu posílá.
Je to mimo IT obor, ale našel jsem si na to v nabitém programu před spaním čas, všechno jsem to prošel, CV trošičku upravil a napsal jsem mu k tomu, co si o tom myslím, a kde má jaký překlep.
Moc mu držím palce.</li>
<li>Rozbil se synchronizační skript na mentoring v klubu.
Zatím jsem ho jen zakomentoval, aby kvůli tomu nepadalo vše ostatní.
Musím se rozhodnout, zda to chci opravovat, nebo konečně překopu mentoring v klubu tak, jak už dlouho plánuju.</li>
<li>Dokoukali jsme se ženou <a href="https://www.csfd.cz/film/702753-f1-touha-po-vitezstvi/">Drive to Survive</a>.</li>
<li>Člen Pyvce Honza Smitka nám pomohl zanést změny ve stanovách <a href="https://github.com/pyvec/docs.pyvec.org/pull/360">do dokumentace</a> a <a href="https://github.com/pyvec/pyvec.org/pull/401">na web</a>.
Zaslouží si věčnou slávu!
Vypadá to jako blbost, ale vyžadovalo to, aby se výbor Pyvce zeptal svých členů, zda nepomůžou s tímto úkolem, místo aby to chtěl udělat sám a prokrastinoval to měsíce.
A také to, aby se někdo našel, zorientoval se v tom co je potřeba udělat, a udělal to.
Paráda.</li>
<li>Koukal jsem, jak bych mohl přesunout Trello do Obsidianu.
Nejdřív jsem si otevřel nový soubor ve VS Code, že si to naprogramuju, ale pak mě napadlo, že možná nejsem první, kdo to potřeboval.
Našel jsem <a href="https://github.com/Utagai/trello2obsidian">trello2obsidian</a> a <a href="https://github.com/rancoud/trello-json-to-markdown">trello-json-to-markdown</a>.
Neměl jsem čas cokoliv z toho vyzkoušet.
V Obsidianu mám zatím jen tři ručně přesunuté sloupce.
Když potřebuju něco dát do těch dalších, otvírám Trello.
Takže bych to měl asi co nejdřív vyřešit.
Ten <a href="https://github.com/mgmeyers/obsidian-kanban">obsidian-kanban</a> mi celkem vyhovuje.
Má nějaké mouchy, ale to má i Trello 🤷♂️</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.
Prošel jsem komplet klub, všechny resty, všechna uvítání, všechny soukromé zprávy.
Zabralo mi to skoro jeden celý pracovní den.
Problémy s přihlašováním do Discordu.
Stipendium.
ITnetwork má logo na webu, poslal jsem fakturu.</li>
<li>Za 8 dní jsem při procházkách nachodil 14 km. Celkem jsem se hýbal 8 h a zdolal při tom 14 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Opravím scrapery.</li>
<li>Budu se dál šťourat v příručce. Přepíšu <a href="https://junior.guru/handbook/git/">stránku o Gitu a GitHubu</a>.</li>
<li>Rozhodnu co s mentoringem. Rozhodnu co s barterem.</li>
<li>Udělám si nějaký plán co kdy chci dát na sociální sítě. Teď v tom mám spíš binec.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://share.transistor.fm/s/e1244489">Marie Heřmanová - TikTok je hlavně interaktivní televize, efekt sociálních bublin na sítích se přeceňuje — Kolaps — Overcast</a><br>Marie Heřmanová opět skvělá. Skoro bych si nainstaloval TikTok.</li>
<li><a href="https://github.com/bananaml/fructose">GitHub - bananaml/fructose</a><br>Wow! „LLM calls as strongly-typed functions“</li>
<li><a href="https://www.scopeofwork.net/the-canal-that-is-a-lake-and-also-a-reservoir/">The canal that is a lake (and also a reservoir).</a><br>Panamský kanál je postavený na složitém hydrologickém systému a aby fungoval a mohl vůbec existovat, musí se snoubit s přírodou. „The design of the Panama Canal is unique, and it manages to work with rather than against seasonal changes in precipitation. But ACP doesn’t get to dictate those changes. To work with nature is to accept the fact we do not control it – instead, we forecast, prepare, and adapt the best we can.“</li>
<li><a href="https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packaging/">How to improve Python packaging, or why fourteen tools are at least tw</a><br>Longread o tom, jak moc rozbitá je správa závislostí a balíčkování v Pythonu.</li>
<li><a href="https://kviff.tv/katalog/sestry-z-kourove-sauny">Sestry z kouřové sauny</a><br>Ideální film na MDŽ.</li>
<li><a href="https://newsletter.pragmaticengineer.com/p/the-pulse-84">The Pulse #84: Why is Apple bullying its own developers?</a><br>Pěkne pokryto a vysvětleno, jak Apple vyhrává nebo prohrává soudní spory ohledně svého monopolního postavení, a jak se kroutí pod novými nařízeními EU. „Is Apple becoming the ‘1990s Microsoft’ to developers?“</li>
</ul></div></div></div></div>Týdenní poznámky: Pizza, viróza, obsidián a vítr v příručce2024-03-08T00:00:00+01:002024-03-08T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2024-03-08:/blog/tydenni-poznamky-pizza-viroza-obsidian-a-vitr-v-prirucce/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-oprasovani-prirucky-a-apify/">posledních poznámek</a> už utekl nějaký ten týden (23. 2. až 8. 3.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Plány:</strong> Aktuální „předsevzetí” jsou v článku <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">Plán na Q1 2024</a></p>
<p><strong>Čísla:</strong> Finanční …</p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-oprasovani-prirucky-a-apify/">posledních poznámek</a> už utekl nějaký ten týden (23. 2. až 8. 3.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Plány:</strong> Aktuální „předsevzetí” jsou v článku <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">Plán na Q1 2024</a></p>
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
</div>
<p>Za poslední dva týdny se toho stalo tolik, že to bude výživné.
Už jen vymyslet titulek článku mi dalo dost práce.</p>
<h2 id="python-pizza">Python Pizza<small class="permalink"><a href="#python-pizza" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Byl jsem na <a href="https://blog.python.cz/prague-python-pizza">Python Pizza</a> a bylo to fajn.
Formát byl zvláštní mix mezi Pyvem a PyCon CZ.
Líbilo se mi, že to bylo jednodenní, jeden track, že tam byly přednášky pro seniory, a že byly jen desetiminutové.
Během přednášek nebylo moc kam se schovat, takže člověk prostě dával pozor a nekecal s lidma.
Kecat mohl během přestávek nebo po akci.</p>
<p>Takže na rozdíl od jiných akcí jsem všechno viděl a poslouchal.
Když mě to nezajímalo, věděl jsem, že to je stejně jen 10 minut, takže pohoda.
A díky tomu jsem viděl spoustu zajímavých věcí, které bych normálně asi neviděl.</p>
<p>Doma jsem si pak ještě procházel <a href="https://www.youtube.com/live/KdFXjYURlws">záznam</a> a připomínal jsem si, co jsem tam viděl a co jsem se naučil.
Něco jsem se naučil!
To jsem vlastně už dlouho na žádné akci neměl.
Tím nechci říct, že na Pyvu nebo PyCon CZ nejsou zajímavé věci, ale já je prostě většinou spíš prokecám s lidmi, nebo jsou na mě moc dlouhé, nebo tam sám přednáším.
Tady jsem si strašně užíval, že jsem jen návštěvník.
Nezapsal jsem si ani lightning talk.</p>
<p>Organizační poznámka. Je fascinující, že Piotr Gnus zajistil kompletní audio/video, nahrávání, streamování, informační obrazovky a kdo ví co ještě, v jednom člověku. To, co tam dokázal, nedokázaly v Česku pro PyCon CZ zajistit leckteré profesionální firmy za velké peníze.</p>
<figure class="figure"><img alt="Python Pizza" src="https://honzajavorek.cz/images/img-7897.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Tohle je moje amatérská fotka. Profi fotky jsou v <a href="https://drive.google.com/drive/folders/13xZg0DkY0gAWZl6OeL53dKJbH_T1k3-X">oficiální galerii od Moisése</a>.</figcaption></figure>
<h2 id="sraz-juniorguru">Sraz junior.guru<small class="permalink"><a href="#sraz-juniorguru" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Po Python Pizza si v junior.guru klubu lidi domluvili sraz u piva.
Došli jsme tam pozdě, hlavně kvůli mně, ale <a href="https://www.linkedin.com/in/nikolen/">Lenka</a> naštěstí podržela hospodu (velký dík).
Pár se nás sešlo a pokec to byl příjemný!</p>
<p>Snažil jsem se odejít nějak rozumně, ale nakonec jsem se stejně zakecal cestou domů a došel až nad ránem.
V kombinaci s tím, že na mě něco trochu lezlo, a že v kancelářích Apify, kde se konala Pizza, byl dost průvan, mě to pak asi dorazilo.</p>
<figure class="figure"><img alt="sraz" src="https://honzajavorek.cz/images/256fa915-1dba-4393-96b6-a9c1484cedc4.jpg" class="img-fluid figure-img rounded"></figure>
<h2 id="viroza">Viróza<small class="permalink"><a href="#viroza" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Takže po Python Pizza víkendu mě složila viróza a trochu pokašlávám ještě doteď.
Během nemoci jsem buď spal, nebo jsem si něco četl, nebo jsem něco sledoval.
Nic produktivního jsem ale nedělal.
Neřešil jsem nic do práce, nedělal jsem žádná rozhodnutí a nenapsal jsem pak ani týdenní poznámky.</p>
<p>V pátek jsem sice myslel, že už bych mohl vylézt z postele, ale pak jsem den proseděl u počítače řešením e-mailů a doháněním pracovních povinností, což mě asi zase unavilo a v sobotu jsem opět lehnul.</p>
<p>Každopádně jsem během ležení přečetl hromadu článků a viděl spoustu videí, na které jsem si nikdy jindy neuměl najít čas. Kamarád Míla mi poslal <a href="https://python.tips/2023/topics/">python.tips</a> a tam jsem teda strávil hodně času. Jak mě Python Pizza nastartovala na učení, úplně jsem si užíval vzdělávat se po dlouhé době v programování. Většinou teď totiž ze svého programování spíš extrahuju hodnoty a vzdělávám se spíš v podnikání, ale teď vidím, jak mi to chybí. Pár objevů:</p>
<ul>
<li><a href="https://marshmallow.readthedocs.io/">marshmallow</a> a <a href="https://docs.pydantic.dev/">pydantic</a></li>
<li>YouTube kanál KRAZAM, např. <a href="https://www.youtube.com/watch?v=KiPQdVC5RHU">AI Boyfriend</a>, <a href="https://www.youtube.com/watch?v=ia8Q51ouA_s">SRE</a>, nebo <a href="https://www.youtube.com/watch?v=y8OnoxKotPQ">Microservices</a></li>
<li><a href="https://formspark.io/">Formspark</a></li>
<li><a href="https://streamlit.io/">Streamlit</a></li>
<li><a href="https://docs.python.org/3/library/unittest.mock.html">mock</a> přímo ve standardní knihovně (ne, fakt jsem nevěděl, že tam taková věc je)</li>
<li><a href="https://docs.python.org/3/library/graphlib.html">Procházení DAG</a> (<em><a href="https://en.wikipedia.org/wiki/Directed_acyclic_graph">directed acyclic graph</a></em>) přímo ve standardní knihovně</li>
<li><a href="https://github.com/sybrenjansen/mpire">lepší multiprocessing</a></li>
<li>Dependabot <a href="https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot">umí upgradovat i samotné GitHub Actions</a></li>
<li>GitHub Action <code>actions/setup-python</code> umí číst verzi Pythonu přímo z <code>pyproject.toml</code></li>
</ul>
<p>Úplně jsem z toho všeho čtení o programování dostal chuť naučit se Rust.
Ale jednak nevím, k čemu by mi to bylo, jednak jsem se pak uzdravil a začal zase normální život 😂</p>
<p>Další věci, co mě během čtení zaujaly, najdete tradičně na konci článku.
Pokud vám tedy přijde, že je tam toho moc, je to kvůli viróze.</p>
<h2 id="mise-starship-pipx">Mise, Starship, pipx<small class="permalink"><a href="#mise-starship-pipx" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Během nemoci jsem pohrál s věcmi, které jsem měl celou věčnost v nějakých záložkách, ale nebyl čas a chuť se na ně pořádně podívat a vyzkoušet si je.
Poslední kapkou bylo, když jsem aktualizoval Homebrew a nová verze pipu nebo čeho mi rozbila obstarožní způsob, jakým jsem si spravoval instalaci Pythonu a virtuálních prostředí.</p>
<p>Nakonec to dopadlo tak, že jsem vyhodil direnv, pyenv, nvm, globální instalaci pipenv a poetry přes <code>pip install --user</code> a kdo ví co ještě.
Vyhodil jsem i svůj vlastní prompt naprogramovaný v Pythonu, který mi zobrazoval aktuální větev gitu, a který se vlastně spouštěl strašně pomalu.
Místo toho jsem začal používat:</p>
<ul>
<li><code>brew install pipx</code> a pak <code>pipx</code> na globální instalace programů, jako třeba <code>asitop</code>, <code>wormhole</code>, <code>poetry</code>… (<a href="https://pipx.pypa.io/">webovka</a>),</li>
<li><code>brew install starship</code> jako nový prompt (<a href="https://starship.rs/">webovka</a>),</li>
<li><code>brew install mise</code> jako jednotný způsob aktivace virtuálních prostředí pro projektové složky a management různých verzí Pythonu a Node.js (<a href="https://mise.jdx.dev/">webovka</a>).</li>
</ul>
<p>Super je, že nemusím vynalézat kolo a že to jsou nástroje s nějakou komunitou, dokumentací, pluginama.
Starship a Mise jsou navíc supr rychlé, jsou v Rustu.
Už to pár dní používám a zatím mi to vyhovuje.</p>
<figure class="figure"><img alt="terminál" src="https://honzajavorek.cz/images/screenshot-2024-03-08-at-21-06-28.png" class="img-fluid figure-img rounded"></figure>
<h2 id="obsidian">Obsidian<small class="permalink"><a href="#obsidian" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Během nemoci jsem si řekl, že víc prozkoumám <a href="https://www.youtube.com/@LucieLenertova">YouTube kanál Lucie Lénertové</a>, ale skončil jsem hned u prvního videa.
Bylo o programu <a href="https://obsidian.md/">Obsidian</a> na poznámky, který mě hodně zaujal, a tak jsem si s ním začal hrát a na další videa už nedošlo.
<a href="https://www.youtube.com/watch?v=JyyweqNkdZ0">Pusťte si to taky</a>.</p>
<ul>
<li>Na bázi Markdownu a souborů na mém disku,</li>
<li>spousta funkcí a pluginů, velká komunita,</li>
<li>placená synchronizace, ale kdo chce, <a href="https://help.obsidian.md/Getting+started/Sync+your+notes+across+devices">může použít iCloud nebo jiný souborový cloud</a> a má poznámky i v mobilu,</li>
<li>má to import z Apple Notes i z Notionu a dalších služeb.</li>
</ul>
<p>Já jsem používal dřív Trello, pak Apple Notes, pak Notion.
Výsledkem je, že mám všude něco.
Takhle jsem si hezky importoval Apple Notes a Notion a mám to na jednom místě, byť je to teď trochu salát.
Místo Trella jsem našel nějaké pluginy a zkouším je.
Když to půjde, zmigruju si to nějak postupně ručně, nebo si napíšu Python skript.</p>
<p>Není to řešení na vše, ale na osobní poznámky je to dost dobré.
Sdílení jsem na Notionu pro své osobní věci stejně nepoužíval.
Možná <a href="https://github.com/mgmeyers/obsidian-kanban">obsidian-kanban</a> nebo <a href="https://github.com/roovo/obsidian-card-board">obsidian-card-board</a> nejsou úplně Trello, ale jsou dostačující.</p>
<p>Chvíli trvá, než se mi věci synchronizují přes iCloud, ale stejně tak to trvá i u Trella.
Jejich <em>housekeeping</em> je otravný a na iPhone X velmi pomalý.
Appka na macOS pro Trello neexistuje, používal jsem <a href="https://support.apple.com/en-us/104996">web app přes Safari</a>, ale to mělo zase hromadu jiných much a je to taky pomalé.
Appka Notionu na macOS je nějaký Electron, strašně pomalé a <em>bloated</em>.
Už mě unavují tuny JavaScriptu a neustálé načítání dat odněkud ze serveru…
Přidat si poznámku jako řádek do Notionu nebo kartičku do Trella je na mém starším mobilu za trest.</p>
<p>V Obsidianu jsou změny bleskové, je to jen pitomá editace souboru na disku.
A mám ty soubory i offline.
Zálohu poznámek udělám stejně jako zálohu jakýchkoliv jiných souborů.</p>
<p>Poznámky jsou v obecném otevřeném formátu, nemusím řešit, že jsou u někoho na serveru v proprietárním něčem (byť Trello i Notion mají v pohodě API).
Mám kontrolu.
Nemusím se bát <a href="https://pluralistic.net/2023/01/21/potemkin-ai/#hey-guys">enshittification</a>, ať už jde o akvizice (Trello koupil Atlassian), nebo o tlak na extrahování hodnoty (Notion má valuaci $10B a jejich investoři budou chtít ty peníze, co do toho dali).</p>
<p>Navíc Trello i Notion mají nějaký svůj způsob formátování textu, který je se mnou nekompatibilní, ale <a href="https://mastodonczech.cz/@honzajavorek/111108686881333783">to by asi bylo na celý další článek</a>.</p>
<figure class="figure"><img alt="Obsidian" src="https://honzajavorek.cz/images/screenshot-2024-03-08-at-21-03-09.png" class="img-fluid figure-img rounded"></figure>
<p>Ještě jsem díky komentářům pod videem našel <a href="https://anytype.io/">Anytype</a>.
Ti synchronizujou <em>peer to peer</em>, bez serveru, a webovku mají plnou <em>privacy</em> a svobod.
Ale bylo by to příliš dobré - ve skutečnosti kód není pod open source licencí a jsou napumpovaní VC penězma.
A mně se nechce věnovat jim své poznámky a pak čekat, až z nich začnou chtít extrahovat hodnotu 😀</p>
<h2 id="debugovani-apify">Debugování Apify<small class="permalink"><a href="#debugovani-apify" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Během mé nemoci se v Apify podívali na chyby, které jsem našel v integraci se Scrapy.
Když jsem se uzdravil, mkrnul jsem, kam se to posunulo.
Něco opraveno, ale objevil jsem další zádrhely.
Jeden celý den jsem to debugoval, abych <a href="https://github.com/apify/apify-sdk-python/issues/189">odhalil původ jednoho issue a zavřel ho</a>, a abych otevřel <a href="https://github.com/apify/apify-sdk-python/issues/190">nové, závažnější</a>.</p>
<p>Kvůli této chybě se teď stále na Apify nedá správně rozjet kód, který mi lokálně se Scrapy jede.
Byť mám velkou radost, že na chybách hned pracují a řeší je, a vážím si toho, už je to několikáté issue.
Snažím se přispět i svou expertízou ohledně HTTP, přece jenom jsem prošel Apiary a něco o těch věcech vím.
Realita je však taková, že jsem s těmito problémy zabil v součtu už docela dost dní a nervů.
Přitom lokálně je můj kód funkční.</p>
<p>Ze začátku to byla spíš zábava, nacházet a hlásit chyby, ale jak se investovaný čas do těchto chyb kumuluje, už na pomyslných vahách začíná vyrovnávat čas a energii, které mi Apify šetří.
Svrbí mě prsty, abych omrknul <a href="https://www.zyte.com/scrapy-cloud/">Zyte</a> přímo od tvůrců Scrapy, kde by mi, předpokládám, vše ve Scrapy fungovalo správně.</p>
<h2 id="nova-uvodni-stranka-prirucky">Nová úvodní stránka příručky<small class="permalink"><a href="#nova-uvodni-stranka-prirucky" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Přebudoval jsem <a href="https://junior.guru/handbook/">úvodní stránku příručky</a>. Dlouho tam byl jen očíslovaný seznam nějakých fází juniora a nevypadalo to nijak zvlášť dobře.
Rozcvičil jsem své zatuhlé CSS schopnosti a udělal jsem z toho Člověče nezlob se.</p>
<p>Původně byly stránky do fází vypsány ručně, teď mohu přímo v kódu každé stránky specifikovat, do jakých fází patří, a podle toho se to pak vypíše.
Bylo to trochu víc programování, než jsem myslel, ale nakonec jsem MkDocs přelstil.
Fáze <a href="https://github.com/juniorguru/junior.guru/blob/e220102b78dcab7cc6c50d1f81e1970a5bbffa3f/juniorguru/data/stages.yml">mám v YAMLu</a>.</p>
<p>Ještě bych chtěl na nové úvodní stránce doladit texty, ale už teď to je lepší, než to bylo.
Taky nejsem nadšený z toho, jak se bijou unifikované ikonky s mými ilustracemi, ale aktuálně nemám čas si s tím hrát nějak víc.</p>
<figure class="figure"><img alt="Před" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2024-02-22-at-13-38-30-prirucka-pro-juniory-copy.png"><figcaption class="figure-caption">
Screenshot před</figcaption></figure>
<figure class="figure"><img alt="Po" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2024-03-09-at-10-47-55-prirucka-pro-juniory-copy.png"><figcaption class="figure-caption">
Screenshot po</figcaption></figure>
<h2 id="spoluprace-na-prirucce">Spolupráce na příručce<small class="permalink"><a href="#spoluprace-na-prirucce" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Připravil jsem <a href="https://junior.guru/handbook/english/">novou stránku do příručky, o angličtině</a>. Ve skutečnosti jsem jen vzal sekce o angličtině z existujících stránek a dal je na tuhle jednu novou.
Taky jsem si k této stránce sjednotil poznámky.
A pak jsem to celé předal <a href="https://geekpower.cz/">Veronice</a>, aby časem mohla sepsat zcela stránku novou, lepší.
Spolupráce by měla být na podobném půdorysu, jako <a href="https://junior.guru/handbook/mental-health/">mám s Nelou u psychiky</a>.</p>
<p>Zároveň mě napadlo, že podobně bych mohl <a href="https://coreskill.tech/">Danovi</a> nabídnout něco jako „Jak začít s frontendem“, protože takovou stránku do budoucna určitě plánuji, ale jako backendista se do ní úplně nehrnu.
Dan má teď jiné starosti, takže je to jen ve fázi nápadu a uvidíme, co bude.
V souvislosti s tím jsem si psal i s Nelou o tom, jak a kam posouvat tu stránku o psychice.
Důvody, proč chci dělat stránky na příručce ve spolupráci s někým:</p>
<ul>
<li>Nemusím profesionálně nastudovat dané téma (psychiku, angličtinu...).</li>
<li>Nemusím se pak o to dál starat, člověk pokryje další aktualizace a vývoj za to, že tam má své jméno a obsah „garantuje“.</li>
<li>Ideálně nemusím tolik řešit samotný text, ale tohle se zatím moc neosvědčilo. Sice ho nemusím napsat, ale jako editor na tom strávím hodně času.</li>
</ul>
<p>Snažím se tím práci na příručce rozdělit mezi víc lidí, ať na to nejsem sám. V rámci něčeho, kde je to <em>win-win</em>.</p>
<figure class="figure"><img alt="Angličtina" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2024-03-09-at-11-00-17.png"></figure>
<h2 id="vitr-v-prirucce">Vítr v příručce<small class="permalink"><a href="#vitr-v-prirucce" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Chtěl jsem sice psát stránku o Gitu a GitHubu, ale tím, jak jsem na příručku strašně dlouho nesáhl, nemohl jsem si pomoci a musel jsem psaní prokrastinovat vymetáním pavučin.
Neumím něco napsat a zasadit to do zbytku, který hnije.
Zvlášť, když to nějak souvisí s už napsanými texty a je potřeba to tam tak či tak trochu přeházet vidlema.
Takže jsem rozsekal v příručce dvě velké kapitoly na více stránek:</p>
<ul>
<li><a href="https://junior.guru/handbook/motivation/">Proč programovat</a> - Původně dlouhá nudle. Odebíral jsem z ní části a dával do separátních stránek.</li>
<li><a href="https://junior.guru/handbook/nocode/">Bez kódu</a> - Původně jedna menší sekce, teď celá stránka. Celé jsem to přepracoval. Neplánoval jsem to, ale prostě jsem si neuměl pomoci to přepsat.</li>
<li><a href="https://junior.guru/handbook/myths/">Mýty</a> - Asi žádné změny, původně to bylo v rámci té dlouhé nudle, teď vykopírováno na samostatnou stránku. Nečekám, že se tam bude moc měnit obsah, možná to jen nějak učešu, možná něco málo přidám.</li>
<li><a href="https://junior.guru/handbook/parents/">Rodiče v IT</a> - Stránka, kde by toho mělo být časem víc, aktuálně pouze domov pro odstavec ohledně toho, jak učit děti programovat a proč.</li>
<li><a href="https://junior.guru/handbook/women/">Ženy v IT</a> - Jen jsem vykopíroval sekci ven, ale mám s touto stránkou velké plány.</li>
<li><a href="https://junior.guru/handbook/practice/">Procvičování</a> - Další dlouhá nudle, kterou jsem rozsekal do kratších stránek. Jmenovalo se to „První praxe“ nebo tak nějak, a byla to směsice různých věcí. Teď tam zbylo procvičování a algoritmy. Nejsem si úplně jistý, zda to zůstane takhle, ale teď to neumím líp. Jak procvičování, tak algoritmy, bych asi dokázal rozpracovat do celých kapitol, ale ještě uvidím.</li>
<li><a href="https://junior.guru/handbook/community/">Komunity</a> - Jen vykopírováno. Do budoucna tam bude návod, jak se zapojovat, a tipy na akce.</li>
<li><a href="https://junior.guru/handbook/mentoring/">Mentoring</a> - Jen vykopírováno. Plánuju celé přepracovat a možná i nějak integrovat s klubem.</li>
<li><a href="https://junior.guru/handbook/projects/">Projekty</a> - Jen vykopírováno z různých míst v příručce na jednu stránku. Do budoucna by to měla být skoro nejzásadnější stránka v příručce.</li>
<li><a href="https://junior.guru/handbook/collaboration/">Spolupráce</a> - Zatímco projekty by měly popisovat jak se do něčeho pustit sám či sama, tahle kapitola by měla lidi naučit zapojit se a přidat se k někomu dalšímu. Zatím opět pouze vykopírováno, nic jsem neměnil a neaktualizoval.</li>
</ul>
<p>Byť nového nebo přepracovaného textu je tam minimum, už to, že to bude v kratších kapitolách, vždy na jedno téma, je velký posun. Dalo mi překvapivě hodně práce ty dlouhé nudle rozdělit, aby se to dalo číst. Nemůžu z ničeho nic jít a přepsat šest kapitol, aby to hezky plynulo. Musím to jako chirurg nějak rozřezat a opatrně přesadit vedle a nějak doufat, že to tak vydrží, než to postupně přepíšu a aktualizuju.</p>
<h2 id="slepice">Slepice<small class="permalink"><a href="#slepice" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Mám už vymyšlené MVP profilů juniorů. Půjdu na to trochu od lesa. Vymyšlené MVP ale nestačí, je potřeba vymyslet i architekturu té věci a tak. Už se těším, až to začnu programovat, takže mi to frčí v hlavě ve volných chvilkách. Neubránil jsem se a už jsem si nastřelil i repozitář, kam to brzo začnu házet.</p>
<p>Pojmenoval jsem ho <a href="https://github.com/juniorguru/hen">hen</a>, protože junioři jsou kuřátka a tohle bude slepice, která je vychová a provede procesem opuštění hnízda. Nebo tak nějak 😀 Je super, že mi do pojmenování repozitářů nekecá žádná korporátní politika, a že nemám žádné kolegy, kteří by ty repozitáře hledali, očekávali u nich nějaký popisný název a jejich život by byl kvůli mému specifickému humoru horší.</p>
<p>Všechen open source kód, který dělám, nabízím tradičně pod permisivními licencemi. Dřív ISC, ani nevím už proč, v poslední době spíš MIT.
Ale něco ve mně hlodalo a řekl jsem si, že zkusím experiment.
Co kdybych kód uvolnil pod GPL?
Aby to nikdo nemohl dál použít a modifikovat bez toho, že to bude dál open source?
Něco jsem si k tomu načetl a zjistil jsem, že na SaaS apod. se hodí spíš AGPL-3.0, takže nakonec jsem použil tu.
Asi jen formalita, ale je to vzrušující pocit.
Většinu kariéry mi přišli zastánci FOSS jako podivíni, kteří lpí na nepodstatných detailech, ale čím jsem starší a kapitalismus kapitalističtější, tak cítím, jak mi na mozek leze nějaký <a href="https://stallman.org/">Stallman</a> nebo co 😂</p>
<p>Na jinou notu. Nebyl jsem spokojen s tím, jak mám pojmenované balíčky. Teď mám <code>juniorguru</code> a pak <code>juniorguru-plucker</code> a <code>juniorguru-chick</code> a teď bude ještě slepice… No jsou to dlouhé názvy. A CLI mám <code>jg</code> a <code>jgp</code> a <code>jgc</code>, je to jakýsi nekonzistentní binec. Takže jsem hledal a zjistil jsem, že existuje <a href="https://peps.python.org/pep-0423/#top-level-namespace-relates-to-code-ownership">PEP0423 přímo na tohle</a>! Tak až budu mít volnou chvilku, udělám to podle něj. A místo <code>juniorguru</code> asi dám všude spíš <code>jg</code>.</p>
<p>Taky jsem pak ještě šel a přidal do hlavního repozitáře <a href="https://github.com/juniorguru/junior.guru/blob/e220102b78dcab7cc6c50d1f81e1970a5bbffa3f/juniorguru/sync/audit.py">krátký skript</a>, kde jsem si otestoval, jak složité nebo jednoduché je <a href="https://docs.github.com/en/rest/users/users?apiVersion=2022-11-28#get-a-user">stahovat strukturovaná data o cizích GitHub profilech</a>. Funguje to! Nic to zatím neumí a později to smažu. Zkušenost mi ale velí, že musím věci vždy vyzkoušet jako PoC, protože když něco jen předpokládám, tak pak mohu narazit a zjistit, že jsem předpokládal blbě.</p>
<p>No a když už jsem uměl stáhnout nějaké info z GitHubu, tak jsem si už přidal GitHub <a href="https://junior.guru/open/#socialni-site-a-newsletter">do grafu na počty sledujících</a>. Ne, že by to číslo bylo nějak důležité, ale je podivuhodné, že mě na GitHubu, kde není co sledovat, sleduje víc lidí, než na Mastodonu, kam pořád něco píšu…</p>
<h2 id="napad-program-pro-tvurce">Nápad: Program pro tvůrce<small class="permalink"><a href="#napad-program-pro-tvurce" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Minule jsem psal o tom, že nevím co do budoucna s přednáškami v klubu.
Ve sprše mě napadlo, že bych mohl udělat program pro tvůrce.
Možná je to ale úplná blbost. Uvítám názory.
Vypadalo by to nějak takhle:</p>
<ul>
<li>Když vytvoříš obsah v rámci klubu pro členy klubu, zaplatím za to, třeba 1.000+ Kč za kus,</li>
<li>vytvořím(e) záznam, ten zůstane v archivu klubových akcí,</li>
<li>s nahranou stopou čiň jak uvážíš.</li>
</ul>
<p>Takže:</p>
<ul>
<li>Může přijít tvůrce podcastů nebo YouTube videí a udělat v klubu Q&A s někým, nebo přednášku s někým, nebo cokoliv takového. Vlastně do toho nějak nekecám, můžu doporučit lidi nebo témata stejně jako <a href="https://junior.guru/podcast/">Pavlíně do junior.guru podcastu</a>, ale jinak bych to moc neřešil.</li>
<li>Vznikne tím živá akce v klubu pro členy a záznam do archivu.</li>
<li>Sestříhaný (?) záznam lze vydat jako podcast nebo rozhovor na YouTube nebo cokoliv, normálně pod značkou tvůrce. Nijak si nenarušujeme <em>brand</em>.</li>
<li>Když to vyjde takhle i někde venku, zpropaguje to klub a junior.guru, jelikož fakt, že se to prvně nahrálo živě v klubu se do výsledku nejspíš nějak propíše nebo zmíní (nebude to ale moje podmínka, klidně nechť si z toho někdo naseká 40 shorts, který použije úplně bez zmínky junior.guru).</li>
<li>Přínos pro členy je, že tu akci mají živě s chatem a mohou třeba pokládat dotazy, zatímco sledující na sítích nebo posluchači podcastu to mají už jen k poslechu / vidění bez možnosti interakce.</li>
<li>Zároveň za to zaplatím, takže pro tvůrce by to mělo být <em>win-win</em> (někdo psal, že se spoustou videí vydělá nižší tisícovky měsíčně z YouTube reklam, já bych tohle zaplatil za jeden dva kusy obsahu).</li>
<li>Nemám nekonečný rozpočet, ale předpokládám, že by z toho byla, co se týče kalendáře, maximálně jedna nebo dvě akce měsíčně (možná podceňuju/přeceňuju aktivitu a zájem tvůrců?), takže moje náklady by byly v součtu nižší tisícovky měsíčně, což bych měl být schopen utáhnout.</li>
</ul>
<p>Je to úplná blbost, nebo není? Ptal jsem se některých tvůrců a zatím mi není jasné, zda jim to vlastně něco řeší a zda by byli ochotni to vyzkoušet. Mám zatím domluvený jeden call, kde zjistím trochu víc.</p>
<h2 id="napad-changelog">Nápad: Changelog<small class="permalink"><a href="#napad-changelog" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Napadlo mě, že bych mohl mít soubor, kam bych psal <em>customer-facing</em> změny na junior.guru. Už nějakou chvíli se snažím takové aktuality psát v pár větách do klubu. Jednak mi dělá dobře, že se po náročném dni hned pochlubím, co se mi povedlo, jednak lidi vidí, že se neflákám a co že je nového.</p>
<p>Kdybych to měl v souboru, mohlo by se to zobrazovat někde na <a href="https://junior.guru/news/">junior.guru/news</a>, mohlo by se to posílat do klubu (i když tohle bych možná chtěl psát já, a ne aby to tam házel bot), mohlo by se to nějak posílat na Mastodon a na LinkedIn (i když zatím nevím jak).</p>
<p>No, nechám si to ještě projít hlavou. Zatím jsem udělal anketu <a href="https://mastodonczech.cz/@honzajavorek/112056409347382402">na Mastodonu</a> a na <a href="https://www.linkedin.com/feed/update/urn:li:activity:7171612570041184257/">LinkedIn</a>, abych tušil, jak se na to vůbec lidi tváří.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Peníze! <a href="https://junior.guru/courses/itnetwork/">ITnetwork</a> se ozvali, že chtějí zaplatit za <a href="https://junior.guru/pricing/">nejnižší tarif</a>.</li>
<li>Příběh! Do <a href="https://junior.guru/stories/#pribehy-odjinud">seznamu příběhů</a> jsem přidal <a href="https://www.frantiseknemet.cz/posts/jak-jsem-se-stal-programatorem">Františkovu spletitou cestu</a>.
Mrkněte i na <a href="https://www.frantiseknemet.cz/">jeho web</a>, píše tam články.
S Františkem jsem si psal a během virózy jsem se snažil udělat mu i korektury v tom článku.</li>
<li>Média! Ozvali se mi z Hospodářek, zda bych se k něčemu nevyjádřil.
Tak jsem se vyjádřil!
A je to tady: <a href="https://archiv.hn.cz/c1-67301600-ma-jeste-porad-smysl-skolit-se-na-programatora-a-co-ucit-deti-pozadali-jsme-experty-o-rady">Má ještě pořád smysl školit se na programátora? A co učit děti? Požádali jsme experty o rady</a>.
Akorát že je to za paywallem a ani já jsem to ještě nečetl.
Někdo v klubu už mi to odemkl, ale neměl jsem zatím chvilku si to otevřít.</li>
<li>Podcast! Nejspíš se časem objevím v <a href="https://peopleops.cz">PeopleOps</a>.</li>
<li>Video! Vydali rozhovor, který <a href="https://honzajavorek.cz/blog/tyden-pro-digitalni-cesko-z-pohledu-partnera/">se mnou dělali na zahajovací akci Týdne pro Digitální Česko</a>.
Tady je <a href="https://www.itpeoplecz.cz/jak-se-lovi-ajtaci-javorek-pomaha-projektem-junior-guru-plnit-sny-odvaznym-zajemcum-o-it/">text</a>, tady je <a href="https://www.youtube.com/watch?v=yIdQ1Fmziyg">video</a>.
Nasdílel jsem to <a href="https://mastodonczech.cz/@honzajavorek/112037851980779465">na Mastodon</a> a <a href="https://www.linkedin.com/posts/honzajavorek_jak-se-lov%C3%AD-aj%C5%A5%C3%A1ci-javorek-pom%C3%A1h%C3%A1-projektem-activity-7170422702090899456-j2vw?utm_source=share&utm_medium=member_desktop">na LinkedIn</a>.</li>
<li>Terapie! Už několikátý člověk mě poprosil, jestli nenasdílím ten skript, kterým jsem si vybíral terapii.
Tak tady to teda máte: <a href="https://github.com/honzajavorek/czap/">honzajavorek/czap</a>.
Má to <a href="https://github.com/honzajavorek/czap/issues">nějaké mouchy</a>, ale já to už nepotřebuju, tak si to kdyžtak sami opravte přes Pull Request 😀</li>
<li>Přednášky! Domluvil jsem přednášku v klubu s <a href="https://www.linkedin.com/in/lonikroman/">Romanem Loníkem</a> o agilních metodách na příští týden a přednášku o situaci na trhu s <a href="https://www.linkedin.com/in/tomas-ervin-dombrovsky/">Tomášem Ervínem Dombrovským</a> na květen.
Ale měl bych domlouvat další!</li>
<li>Napadlo mě <a href="https://github.com/Pycord-Development/pycord/discussions/2382">zeptat se</a>, jak by šlo v kódu zefektivnit mou práci s Discordem.</li>
<li>S Apify jsme něco nakonec opravdu upekli, ale oznámení si nechám na později, až doladíme všechny detaily.</li>
<li>Daně! Zálohy se zvedají. Finančák mi bude vracet. Sociáce pošlu navíc desetitisíce.
Co se dá dělat. Příjemné bylo, že se dalo všechno poslat datovkou, buch buch buch jedno za druhým, hotovo.
Myslím, že ještě minule jsem musel něco posílat jinak.</li>
<li>Rodí se mi v hlavě plán, co udělám se statistikami kolem předplatného. Chci to celé zjednodušit.
Jako první krok jsem potichu zrušil v klubu roli „Rok v klubu“, která stejně nefungovala správně a která byla napojená na komplexní systém historie předplatného.
Postupně chci zabíjet malé nepodstatné věci jako je tato, až to budu moci celé radikálně zjednodušit.</li>
<li>Zjistil jsem, že Spotify můžu nastavit k podcastu dva nějaké „kamarády“. Tak jsem tam dal <a href="https://www.programhrovani.cz/">ProgramHRování</a> a <a href="https://streetofcode.sk/">Street of Code</a>.</li>
<li>Do katalogu jsem přidal <a href="https://junior.guru/courses/robotdreams/">robot dreams</a>, ozvali se mi.</li>
<li>Odmítl jsem účast na <a href="https://www.careerexpo.cz/">Career Expo</a>. Zatím stále platí, že od přednášek si dávám pauzu. A bylo to strašně na poslední chvíli.</li>
<li>Promoval jsem přednášku o agilních metodikách, která bude příští týden v klubu: <a href="https://mastodonczech.cz/@honzajavorek/112053828808277931">Mastodon</a>, <a href="https://www.linkedin.com/feed/update/urn:li:activity:7171444381357432833/">LinkedIn</a>.</li>
<li>Vyhodil jsem na hlavním repozitáři <a href="https://pypi.org/project/black/">black</a> a další nástroje a dal jsem tam <a href="https://pypi.org/project/ruff/">ruff</a>.</li>
<li>Na Python kód je <a href="https://pypi.org/project/ruff/">ruff</a> hodně návykový a zmlsal mě, tak jsem zkoušel najít nějaký formátovač, který by mi automaticky učesal Jinja šablony, aby to nebyl takový salát.
Hrál jsem si s <a href="https://github.com/djlint/djLint">djlint</a>, <a href="https://github.com/rtts/djhtml">djhtml</a>, i <a href="https://github.com/davidodenwald/prettier-plugin-jinja-template/">prettierem</a>, ale nějak se mi nelíbily výstupy ani jednoho.
Možná mám ty šablony moc komplexní 😞
A navíc mám ještě na junior.guru i hodně souborů, kde je smíchaný Markdown s Jinjou, no a s tím už si neporadí asi vůbec nic.
Když jsem hledal dál, narazil jsem i <a href="https://twitter.com/simonw/status/1302657382196019201">na Simona</a>, svůj idol 😀, takže jsem se po dlouhé době přihlásil na Twitter a <a href="https://twitter.com/honzajavorek/status/1765667468549173673">odpověděl jsem mu tam</a>.</li>
<li>V Česko.Digital chtěli, abych se vyjádřil k číslům a grafům, tak <a href="https://diskutuj.digital/t/metriky-diskutuj-digital/247/12">jsem se vyjádřil</a>.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.
Během nemoci se mi toho nasbíralo fakt hodně a když jsem to pak doháněl, dost mě to zničilo a vyčerpalo.
Otevřel jsem třeba mail v pátek a bylo tam 70 nepřečtených, a v pondělí dalších 50.
Měli jsme si i volat jako výbor Pyvce, ale nikdo nemohl, tak jsme to pro tenhle měsíc zrušili.</li>
<li>Za 15 dní jsem při procházkách nachodil 7 km. Celkem jsem se hýbal 2 h a zdolal při tom 7 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Budu se dál šťourat v příručce. Přepíšu <a href="https://junior.guru/handbook/git/">stránku o Gitu a GitHubu</a>.</li>
<li>Vydám nový příběh na web. Mám v mailu pořád ještě dva.</li>
<li>Domluvím další dvě přednášky.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://newsletter.pragmaticengineer.com/p/the-pulse-84">The Pulse #84: Why is Apple bullying its own developers?</a><br>Pěkne pokryto a vysvětleno, jak Apple vyhrává nebo prohrává soudní spory ohledně svého monopolního postavení, a jak se kroutí pod novými nařízeními EU. „Is Apple becoming the ‘1990s Microsoft’ to developers?“</li>
<li><a href="https://www.youtube.com/watch?v=_FdjW47Au30">Is UV the FUTURE of Python PACKAGING? 🐍📦</a><br>Vyřeší uv všechny problémy Pythoního packaging světa? Ve videu jsem se taky dověděl, že pip má konfiguraci a můžu mu zakázat instalaci mimo virtualenv 🤯</li>
<li><a href="http://antirez.com/news/140">LLMs and Programming in the first days of 2024 - \<antirez></a><br>Autor Redisu dobře vystihuje, jak LLM pomáhají při programování, na co jsou dobré, na co jsou k prdu, že tříbí schopnost komunikovat problém, a obecně proč je bude používat. Taky pokládá zajímavou otázku, zda by se člověk neměl ve své expertíze pomalu profilovat k věcem, které jsou pro LLMs těžké, jako např. systémové programování, místo abychom si nechali platit za patlání React komponent, které to za chvíli bude plivat jednu za druhou.</li>
<li><a href="https://opensource.net/why-single-vendor-is-the-new-proprietary/">Why single vendor is the new proprietary - OpenSource.net</a><br>„Open Source is not great because you don’t have to pay for it. Open source is great because everyone is free to use it.“ „Single vendor isn’t a reasonable way to do Open Source and resist evil proprietary software. It’s just another way to do proprietary software.“</li>
<li><a href="https://docs.python.org/3/library/graphlib.html">graphlib — Functionality to operate with graph-like structures</a><br>TIL, že ve standardní knihovně Pythonu je topological sort na procházení directed acyclic graph (DAG) 🤯</li>
<li><a href="https://death.andgravity.com/f-re">The unreasonable effectiveness of f-strings and re.VERBOSE</a><br>TIL že v Pythonu nemusím u regulárního výrazu napsat flag zvlášť jako parametr, ale i přímo do samotného reguláru - což se hodí, pokud nemám plnou kontrolu nad kompilací reguláru. Wow.</li>
<li><a href="https://hynek.me/articles/waiting-in-asyncio/">Waiting in asyncio</a><br>Pěkně vysvětlené, jak správně čekat na asyncio tasky a co je ve standardní knihovně k dispozici.</li>
<li><a href="https://gregoryszorc.com/blog/2023/10/30/my-user-experience-porting-off-setup.py/">Gregory Szorc's Digital Home
| My User Experience Porting Off setup.py
</a><br>Přečetl jsem to celé. Slibuju, že pokud PSF udělá fundraiser na technical writera, který by systematicky řešil problémy s dokumentací kolem Python packagingu, lepil všemožné díry a psal návody jak upgradovat a co je aktuální standard, tak přispěju.</li>
<li><a href="https://www.youtube.com/watch?v=_o7qjN3KF8U&lc=UgwHdSsLsLIHKb3u-_N4AaABAg">The Hustle</a><br>Objevil jsem na YouTube skvělý kanál, na něm skvělé video, a pod ním asi nejpropracovanější komentář, jaký jsem kdy na YouTube četl. I marodění s chřipkou má své světlé momenty! (Pokud nefunguje odkaz přímo na komentář, je to ten, který je pinned pod videem.)</li>
<li><a href="https://www.novinky.cz/clanek/kultura-salon-jake-jsou-deti-na-ucnaku-uprimne-a-krehke-literarni-reportaz-zuzany-kultanove-z-cyklu-ceske-bolesti-40436359">Jaké jsou děti na učňáku? Upřímné a křehké. Literární reportáž Zuzany Kultánové z cyklu České bolesti</a><br>„Nikdo si o nich nikdy nemyslel, že by měli něco studovat, a tak si to nemyslí ani oni.“</li>
<li><a href="https://housefresh.com/david-vs-digital-goliaths/">How Google is killing independent sites like ours - HouseFresh</a><br>Jak Google protežuje srajdy místo kvalitního obsahu a proč najdete na NYT nebo Forbesu (špatné, cinknuté a nepodložené) recenze zcela nesouvisejících produktů: „As a team that has dedicated the last few years to testing and reviewing air purifiers, it’s disheartening to see our independent site be outranked by big-name publications that haven’t even bothered to check if a company is bankrupt before telling millions of readers to buy their products.“</li>
<li><a href="https://blog.apify.com/is-web-scraping-legal/">Is web scraping legal? Yes, if you know the rules.</a><br>Pěkné vysvětlení co se týče toho, zda a jaké scrapování je legální.</li>
<li><a href="https://blog.ian.stapletoncordas.co/2024/02/a-retrospective-on-requests#footnote-reference-5">A Retrospective on Requests - cat /dev/brain</a><br>„In short, the project feels dead. That's a shame, but that's my feeling on the matter. It's hard to introduce new, necessary, and beneficial features. It's hard to fix gnarly bugs. It's hard to improve the user experience and it's consistently been because of one particular person over the years.“</li>
<li><a href="https://www.youtube.com/watch?v=PRY8KZdBUCI">Martina Koukalová: Praha včera - Asanace Žižkova</a><br>Hodinová přednáška o asanaci Žižkova. Ideální způsob, jak vyplnit odpoledne s chřipkou.</li>
<li><a href="https://vickiboykis.com/2023/02/26/what-should-you-use-chatgpt-for/">What should you use ChatGPT for?</a><br>Přesně: „In writing, the process is part of the product. Even in drafting this post, I initially started in a completely different direction and it was only clear to me after I was halfway through that the post would have to go in a different direction.“</li>
<li><a href="https://tonsky.me/blog/js-bloat">JavaScript Bloat in 2024</a><br>„Call me old-fashioned, but I firmly believe content should outweigh code size. If you are writing a blog post for 10K characters, you don’t need 1000× more JavaScript to render it.“</li>
<li><a href="https://ottobohus.cz/25-top-3-dil-ai">25 top freelancerů: o AI (3. díl rozhovoru) | Otto Bohuš</a><br>„Ve vztahu ke své vlastní práci jsem aha efekt nezažil. Při psaní pracuji především s humorem, češtinou a fakty – a zrovna tohle jsou tři věci, v nichž AI dosud nevyniká.“ Tohle máme se Ziburou stejně. I to Dřímalkovo rezonuje: „FOMO z toho, že kolem nás vzniká ještě víc příležitostí, než kdy jindy a že je nebudu schopen využít. Možná ale trochu i obava z toho, jestli se svět nezmění až moc. Třeba tak, že se mi to nebude líbit.“ A Bohdana Goliášová taky super!</li>
<li><a href="https://a2larm.cz/2024/02/konec-lyzovani-v-cesku-jde-o-prvni-skutecnou-klimatickou-ranu-pro-nas-narod/">Konec lyžování v Česku. Jde o první skutečnou klimatickou ránu pro náš národ?</a><br>Zmizí lyžování?</li>
</ul></div></div></div></div>Týdenní poznámky: Oprašování příručky a Apify2024-02-23T00:00:00+01:002024-02-23T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2024-02-23:/blog/tydenni-poznamky-oprasovani-prirucky-a-apify/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-vic-inzeratu-a-mene-duvery-v-platformy/">posledních poznámek</a> už utekl nějaký ten týden (16. 2. až 23. 2.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Plány:</strong> Aktuální „předsevzetí” jsou v článku <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">Plán na Q1 2024</a></p>
<p><strong>Čísla:</strong> Finanční …</p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-vic-inzeratu-a-mene-duvery-v-platformy/">posledních poznámek</a> už utekl nějaký ten týden (16. 2. až 23. 2.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Plány:</strong> Aktuální „předsevzetí” jsou v článku <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">Plán na Q1 2024</a></p>
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
</div>
<p>Mám zase nějakou rýmu, ale nebudu propadat beznaději!</p>
<h2 id="oprasovani-prirucky">Oprašování příručky<small class="permalink"><a href="#oprasovani-prirucky" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Prošel jsem si všechny poznámky, které jsem u příručky měl v souvislosti s učením angličtiny.
Pak jsem vzal dvě sekce, které jsem už v příručce měl, a přesunul je na <a href="https://junior.guru/handbook/english/">samostatnou stránku o angličtině</a>.
Poznámky a tuto stránku jsem pak předal <a href="https://geekpower.cz/">Veronice</a>, aby tam mohla připravit vlastní obsah po vzoru <a href="https://junior.guru/handbook/mental-health/">Nely</a>.</p>
<figure class="figure"><img alt="Angličtina" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2024-02-23-at-21-50-16-anglictina-pro-programatory.png"></figure>
<p>Pak když jsem měl jít konečně psát novou verzi <a href="https://junior.guru/handbook/git/">stránky o Gitu a GitHubu</a>, tak jsem se zakoukal do kódu, nějak neodolal, a šel jsem předělat úvodní stránku příručky.
Měl jsem dost jasnou představu, jak by to mělo vypadat, a přišlo mi, že to bude za chvilku hotové.
No, takže to není hotové doteď, klasika 😀</p>
<p>Na <a href="https://junior.guru/handbook/">úvodní stránce</a> byla cesta juniora, ale bylo to tam naplácané v obyčejném seznamu, nepřehledně, a odkazy dovnitř příručky tam byly vepsané prostě ručně.
Chtěl jsem, aby to bylo hezčí a aby se to automaticky generovalo.
Přidal jsem tedy YAML, kam jsem si sepsal jednotlivé fáze, dal jim ikonky, a tak.
Do každé stránky příručky jsem pak přidal informaci, do jaké fáze spadá.
To jsem následně načetl do databáze a propojil, což mi zabralo víc času, než jsem chtěl, protože jsem pořád zakopával o nějaké nástrahy.</p>
<p>Aktuálně je tedy na té úvodní stránce prozatimní verze, kdy se seznam už vypisuje z databáze a vše je propojené, ale zdaleka to nevypadá tak, jak bych chtěl, aby to vypadalo.</p>
<figure class="figure"><img alt="úvodní stránka" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2024-02-23-at-21-48-50-prirucka-pro-juniory.png"></figure>
<h2 id="apify">Apify<small class="permalink"><a href="#apify" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Tento týden je ve znamení Apify:</p>
<ul>
<li>V pondělí jsem byl v kancelářích Apify na schůzce, o jejímž obsahu zatím pomlčím.
Něco domlouváme, ale není to zatím kompletně domluveno.</li>
<li>V úterý jsem si hodinu volal s produkťáky z Apify.
Na Apify Discordu se totiž objevila výzva, že dělají nějaký UX průzkum a kdo se přihlásí, může dostat nějaké kredity zadáčo.
To mi přišlo jako <em>win-win</em>.
Někdo bude hodinu poslouchat, jak ten produkt používám, čímž jeho vývoj mohu přiklonit k tomu, co potřebuju, a ještě tím ušetřím.
A tak se i stalo.
Pokec to byl příjemný a dle jejich názoru prý i užitečný.</li>
<li>S <a href="https://github.com/vdusek">Vláďou</a> jsme řešili bug v integraci se Scrapy.
Povedlo se mu to opravit, ale pak jsme objevili ještě něco dalšího.</li>
<li>Zítra je <a href="https://prague.python.pizza/">Python Pizza</a>.
Koná se v kancelářích Apify 😀</li>
</ul>
<p>Když jsem měl chvilku a prokrastinoval jsem důležitější věci, připsal jsem si skript, který umí založit nový scraper na Apify přes jejich API.
Tím se opět zkrátilo <a href="https://github.com/juniorguru/plucker?tab=readme-ov-file#how-to-add-new-scraper">README</a>, které popisuje kroky nutné k tomu, aby v repozitáři vznikl nový scraper.
Skript ještě <a href="https://github.com/juniorguru/plucker/issues/20">není úplně takový, jak bych chtěl</a>, ale vypadá to, že funguje, což je fajn.</p>
<h2 id="upravy-na-nabidkach-prace">Úpravy na nabídkách práce<small class="permalink"><a href="#upravy-na-nabidkach-prace" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Vyčistil jsem určitou historickou nesrovnalost ohledně toho, jak se v datech zapisuje datum, kdy byla nabídka práce publikována.</li>
<li>Smazal jsem složku <code>jobs_legacy</code>, což je malý krok pro lidstvo, ale obrovský milník pro junior.guru 😤</li>
<li>Do filtrů nabídek práce jsem přidal jeden, který vyhodí příliš staré nabídky.
Je možné, že se tam nějaké zatoulaly a pak by byly jednak matoucí, jednak by mi zbytečně žraly OpenAI tokeny.</li>
<li>Timeoutuje mi jeden ze scraperů, ale nějak jsem to nestihl opravit.</li>
</ul>
<h2 id="vyber-prednasek">Výběr přednášek<small class="permalink"><a href="#vyber-prednasek" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Uzavřel jsem si pro sebe hlasování v klubu.
Výsledky jsem si vynesl do Google Sheets tabulky a seřadil si to podle počtu hlasů.
Plánuji zhruba na rok dopředu, takže chci zhruba 12 přednášek.
Vybral jsem 6 nejpopulárnějších témat a na ty budu hledat přednášející a termíny.
Dalších 6 jsem vybral sám z toho zbytku, částečně podle hlasů, ale i podle toho, co si myslím, že je zajímavé i přesto, že to není populární.
Např. lidé, kteří ještě ani nemají svou první práci, netuší, že budou v té první práci potřebovat tušit o existenci Jiry nebo SCRUMu, a tedy pro to logicky nebudou hlasovat.</p>
<p>Tím jsem si odkroutil něco, co jsem dlouho prokrastinoval.
Teď už „jen“ sehnat přednášející a domluvit všechny termíny.</p>
<h2 id="budoucnost-prednasek">Budoucnost přednášek<small class="permalink"><a href="#budoucnost-prednasek" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Je tu ale jeden <em>elephant in the room</em>, a tím je otázka: Proč to, Honzo, vlastně vůbec děláš?
Máš to vůbec dělat?
Jaká je hodnota přednášek?
Jaké je ROI vynaložené energie?</p>
<h3 id="minusy">Mínusy<small class="permalink"><a href="#minusy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<ul>
<li>Často tuto práci prokrastinuju.
A když ji týdny nebo měsíce prokrastinuju, nikdo si nestěžuje, že přednášky v klubu nejsou.</li>
<li>Nepřijde mi, že bych potkal jediného člověka, který by řekl, že do klubu zamířil a zůstal v něm kvůli přednáškám.</li>
<li>Je to obsah a já si myslím, že junior.guru má být komunita, platforma, rozcestník a agregátor, ale nemá vytvářet vlastní obsah nad rámec příručky.
Neškáluje to.
Pája dělá podcast, ale kdyby ho nedělala ona, tak já ho dělat nemám a prostě by neexistoval.
Je možné vzít obsahový projekt pod značku junior.guru, ale já sám bych to vytvářet neměl.</li>
<li>Obsahu je plno.
Je spousta šikovných youtuberů (<a href="https://www.youtube.com/@LucieLenertova">Lucie</a>, <a href="https://www.youtube.com/channel/UC01guyOZpf40pUopBvdPwsg">yablko</a>…), kteří video udělají zajímavěji a lépe.
Je spousta konferencí, kde jsou přesně takové přednášky jako v klubu, a mají pak videa na YouTube.
Někdo dělá šikovně Instagram (<a href="https://www.marketawillis.com/">Markéta</a>).
Někdo dělá šikovně podcasty (namátkou <a href="https://www.programhrovani.cz/">Šárka a Vojta</a>, <a href="https://streetofcode.sk/">Jakub a Gabo</a>).
Jaká je přidaná hodnota přednášek a záznamů přednášek v klubu?
Jestli je junior.guru spíš komunita, platforma, rozcestník a agregátor, tak by spíš mělo pomoci dostat se k existujícímu kvalitnímu obsahu, utřídit ho a vypíchnout to nejlepší - protože tam leží přidaná hodnota junior.guru - ne do té hromady ještě přidávat svoje.</li>
<li>Dost podobné webináře nebo <em>live streamy</em> teď pravidelně pořádají <a href="https://www.programatorizacatecnici.cz/">Programátoři začátečníci</a> nebo <a href="https://naucme.it/">Nauč mě IT</a>.
Stává se to komoditou, která mě ale stojí dost přemáhání, času a práce.</li>
</ul>
<h3 id="plusy">Plusy<small class="permalink"><a href="#plusy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<ul>
<li>Přednášky přivádí do klubu zajímavé lidi, což občas (pokud tam zavítají i mimo přednášku) obohacuje klub.</li>
<li>Přednášky jsou česky a jsou tematicky laděné pro úplné začátečníky, a to nebývá zas tak běžné ani v té záplavě po covidu oživlých konferencí a YouTube videí.</li>
<li>Přednášející jsou v klubu a členové s nimi mohou interagovat, ptát se dotazy, atd.</li>
</ul>
<h3 id="co-s-tim">Co s tím?<small class="permalink"><a href="#co-s-tim" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<p>Nevím.
Aktuálně zachovám <em>status quo</em>.
Do budoucna ale cítím, že to bude chtít nějaké změny.
Buď přednášky komplet deleguju, zruším, nebo změním formát.</p>
<h2 id="jak-to-jde-s-plany">Jak to jde s plány?<small class="permalink"><a href="#jak-to-jde-s-plany" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Pojďme si připomenout, <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">co jsem plánoval na první čtvrtletí</a>, protože už je konec února.
To to letí!</p>
<ul>
<li><del>Programovat a psát, nerozptylovat se akcemi a spolupracemi.</del> Toto se mi, myslím, daří. Nějaké věci jsem odmítl.</li>
<li><del>Soustředit se na problémy lidí, kterým chci pomáhat, ne na svoje problémy.</del> Dělám co umím 😅</li>
<li><del>Přestat aktivně hledat produkt pro firmy.</del> Načrtl jsem si nový ceník, ve kterém bude velké prd, a pak to nechal zapadnout někde v Trellu, takže dobrý.</li>
<li><del>Vytvořím nebo aspoň vymyslím MVP profilů kandidátů</del> Mám jasnou představu, co je potřeba udělat a vymýšlením té představy jsem strávil docela dost času, povídal jsem si o tom s Milkem, a udělal jsem i jeden malý PoC.</li>
<li>Dopíšu kapitoly v příručce: LinkedIn, Git, GitHub 👀</li>
<li><del>Přesunu scrapery pracovních inzerátů na Apify a začnu je třídit přes LLM</del> Hotovo 😤</li>
<li>Vydám další <em>success stories</em> na web 👀</li>
<li><del>Automatizace v klubu (povídání, týdenní plány…)</del> Hotovo 😤</li>
<li><del>Vyberu a</del> domluvím <del>klubové přednášky na rok 2024</del> 👀 😅</li>
</ul>
<p>No, nepřijde mi to špatný!
Ještě mám celý březen.
To bych mohl docela hezky postíhat.
Mám z toho radost.
Přitom stačilo dát si realistické cíle, být aspoň chvíli aspoň trochu zdravý, a nenechat se rozptylovat od toho, co je podstatné 💪</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Díky <a href="http://tvurcast.cz">Tvůrcast</a> komunitě jsem zjistil, že s podcastem nemáme vůbec špatná čísla, minimálně na Spotify.
Já je vůbec nesleduju a hlavně nemám srovnání.
Teď vím, že máme 25.000 starts, 18.500 streams, 3.000 listeners, 1.200 followers, 15.500 impressions.
A to jsme ještě i na YouTube, Apple Podcasts, a spousta lidí si nás (nejspíš?) pouští i <a href="https://junior.guru/podcast/">přímo na webu</a>, kde nemám žádné sledování, to jsou jen <code><audio></code> tagy s audio souborem.
Na to, že je to Pájino hobby a už ani nedodržujeme jednu epizodu měsíčně, je to podle mě docela dobrý 😀</li>
<li>Prošel jsem <a href="https://junior.guru/wisdom/">moudra</a> a trochu je uhladil, případně něco smazal, a tak.</li>
<li>Domluvil jsem termín, kdy poskytnu jednorázovou placenou konzultaci na vedení komunity.
Těším se na to.</li>
<li>Spadl mi build na junior.guru, protože GraphQL API od Memberful ze dne na den zase něco změnilo.
Nakonec mi poradili, že můžu přidat nějaký parametr a bude to zase fungovat.
Pozitivní je, že jsem to mohl hned opravit a funguje to.
Smutné je, že to je zjevně bug na jejich straně, ale nepřišlo mi, že by je to nějak moc trápilo.</li>
<li>Zatím jsem moc nepokročil s přesunem pryč z Gmailu.
Naopak, vzdal jsem používání Apple Mail a jsem zpátky i v tom webovém rozhraní.
Až se budu zase nudit, tak zas něco vyzkouším, ale teď mám asi lepší věci na práci.</li>
<li>Propagoval jsem PyCon NA <a href="https://www.linkedin.com/posts/honzajavorek_community-thankyou-python-activity-7165238625528463360-pf_O">na LinkedIn</a> a <a href="https://mastodonczech.cz/@honzajavorek/111957344665919060">na Mastodonu</a>.</li>
<li>Ze Smitio mě poprosili, ať nasdílím <a href="https://www.survio.com/survey/d/L0Y9W0D9D8B5N2J7J">průzkum ohledně mezd v IT</a>, zatím jsem to udělal v klubu.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.</li>
<li>Za 8 dní jsem při procházkách nachodil 5 km. Celkem jsem se hýbal 4 h a zdolal při tom 5 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Dodělám novou úvodní stránku příručky.</li>
<li>Přepíšu <a href="https://junior.guru/handbook/git/">stránku o Gitu a GitHubu</a>.</li>
<li>Užiju si <a href="https://prague.python.pizza/">Python Pizza</a> jako pouhý návštěvník! A potom i večerní junior.guru srazík.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://ottobohus.cz/25-top-3-dil-ai">25 top freelancerů: o AI (3. díl rozhovoru) | Otto Bohuš</a><br>„Ve vztahu ke své vlastní práci jsem aha efekt nezažil. Při psaní pracuji především s humorem, češtinou a fakty – a zrovna tohle jsou tři věci, v nichž AI dosud nevyniká.“ Tohle máme se Ziburou stejně. I to Dřímalkovo rezonuje: „FOMO z toho, že kolem nás vzniká ještě víc příležitostí, než kdy jindy a že je nebudu schopen využít. Možná ale trochu i obava z toho, jestli se svět nezmění až moc. Třeba tak, že se mi to nebude líbit.“ A Bohdana Goliášová taky super!</li>
<li><a href="https://a2larm.cz/2024/02/konec-lyzovani-v-cesku-jde-o-prvni-skutecnou-klimatickou-ranu-pro-nas-narod/">Konec lyžování v Česku. Jde o první skutečnou klimatickou ránu pro náš národ?</a><br>Zmizí lyžování?</li>
<li><a href="https://julian.digital/2023/07/06/multi-layered-calendars/">Multi-layered calendars</a><br>Zajímavý pohled na kalendář.</li>
<li><a href="https://markwhen.com/">Markwhen | Markwhen</a><br>Markdown a čas. Může se hodit.</li>
<li><a href="https://simonwillison.net/2024/Feb/21/gemini-pro-video/">The killer app of Gemini Pro 1.5 is video</a><br>„The ability to analyze video like this feels SO powerful. Being able to take a 20 second video of a bookshelf and get back a JSON array of those books is just the first thing I thought to try.“</li>
<li><a href="https://arstechnica.com/tech-policy/2024/02/air-canada-must-honor-refund-policy-invented-by-airlines-chatbot/">Air Canada must honor refund policy invented by airline’s chatbot</a><br>„It should be obvious to Air Canada that it is responsible for all the information on its website. It makes no difference whether the information comes from a static page or a chatbot.“ „Air Canada’s initial investment in customer service AI technology was much higher than the cost of continuing to pay workers to handle simple queries.“</li>
<li><a href="https://www.simpleanalytics.com/blog/alternative-search-engines">Alternative search engines</a><br>„Google Search is a very good search engine. In fact, it is arguably the only good product Google developed in-house. And yet, googling information is more frustrating than ever, because Google Search has some big problems.“</li>
<li><a href="https://www.mimoagendu.cz/prumyslova-revoluce-naopak/">Průmyslová revoluce naopak</a><br>„Nejnebezpečnější pro média bude tahle doba otřesů, kdy vlastně nikdo netuší, jakým směrem se dějiny rozběhnou. Jestli jde něco novinářům hodně špatně, tak je to reagování na změny. Doteď nevyřešili internet a synergii mezi servery a papírem. Krátká videa na Instagramu a TikToku jsou pro nás stále ještě okrajovou záležitostí, i když influenceři a marketingové firmy je dávno adoptovali jako vlajkovou loď svého obsahu.“</li>
</ul></div></div></div></div>Týdenní poznámky: Víc inzerátů a méně důvěry v platformy2024-02-16T00:00:00+01:002024-02-16T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2024-02-16:/blog/tydenni-poznamky-vic-inzeratu-a-mene-duvery-v-platformy/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-servis-a-automatizace/">posledních poznámek</a> už utekl nějaký ten týden (9. 2. až 16. 2.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Oprava myčky" src="https://honzajavorek.cz/images/img-7625.jpg" class="img-fluid figure-img rounded"></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Plány:</strong> Aktuální „předsevzetí” jsou v článku <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">Plán na Q1 2024</a></p>
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a …</p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-servis-a-automatizace/">posledních poznámek</a> už utekl nějaký ten týden (9. 2. až 16. 2.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Oprava myčky" src="https://honzajavorek.cz/images/img-7625.jpg" class="img-fluid figure-img rounded"></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Plány:</strong> Aktuální „předsevzetí” jsou v článku <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">Plán na Q1 2024</a></p>
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
</div>
<h2 id="mycka">Myčka<small class="permalink"><a href="#mycka" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Opravil jsem o víkendu myčku.
Vítězství Honzy nad hmotou.
Proces zhruba nastiňuje <a href="https://www.youtube.com/watch?v=WI_s2cPfzlg">tohle video</a>, akorát že to bylo složitější.
Video a rady od bráchy mě namotivovaly, abych to nevzdal.
Dělal jsem to celý den, ale povedlo se to.
Žádnou zjevnou příčinu jsem nakonec nenašel (na rozdíl od týpka na videu), ale co jsem vymontoval, to jsem aspoň vyčistil, což asi nějak v důsledku pomohlo.</p>
<figure class="figure"><img alt="myčka" src="https://honzajavorek.cz/images/img-7624.jpg" class="img-fluid figure-img rounded"></figure>
<h2 id="masopust">Masopust<small class="permalink"><a href="#masopust" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>V neděli byl masopust.
Na Praze 3 se to slaví hlavně průvodem v maskách.
Vloni se nám to líbilo, tak jsme se těšili na letošek, ale zastihly nás zas nějaké rýmy a navíc pršelo, tak jsme to vzdali.
Nevadí, průvod šel tentokrát přímo pod našimi okny a o nic jsme nepřišli.</p>
<figure class="figure"><img alt="masopust" src="https://honzajavorek.cz/images/img-7673.jpg" class="img-fluid figure-img rounded"></figure>
<h2 id="vysilac">Vysílač<small class="permalink"><a href="#vysilac" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Jedno odpoledne mě napadlo, že bych mohl s dcerou vyjet nahoru na vysílač.
Nikdy jsem tam ještě nebyl.
Tak jsme vyjeli.
Myslím, že se to líbilo i jí.</p>
<figure class="figure"><img alt="Žižkov" src="https://honzajavorek.cz/images/img-7683.jpg" class="img-fluid figure-img rounded"></figure>
<figure class="figure"><img alt="hřbitov" src="https://honzajavorek.cz/images/img-7682.jpg" class="img-fluid figure-img rounded"></figure>
<h2 id="moudra">Moudra<small class="permalink"><a href="#moudra" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Po 5 měsících jsem si připustil, že si nezvládnu najít čas na přepsání lístečků s moudry, které jsem nasbíral na konferenci <a href="https://cz.pycon.org/2023/">PyCon CZ 23</a>.
Dal jsem do klubu prosbu, zda by mi s tím někdo nepomohl.</p>
<figure class="figure"><img alt="moudra" src="https://honzajavorek.cz/images/screenshot-2024-02-16-at-16-56-10.png" class="img-fluid figure-img rounded"></figure>
<p>A jo, našli se dokonce dva lidi, <a href="https://github.com/juniorguru/junior.guru/pull/1307">Tomáš</a> a <a href="https://github.com/juniorguru/junior.guru/pull/1308">Matěj</a>.
Ještě musím výsledná moudra probrat, možná sem tam upravit, možná některá vyhodit, a <a href="https://junior.guru/wisdom/">na webu</a> změnit dole popisek, aby tam byla fotka z konference nebo něco.
Ale to už jsou detaily.
Kluci odvedli největší část práce ❤️</p>
<h2 id="slovencina">Slovenčina<small class="permalink"><a href="#slovencina" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Pracoval jsem na tom, aby moje scrapery pracovních inzerátů pro juniory dokázaly pracovat i se slovensky napsanými inzeráty.
Díky tomu, že teď rozhodování, zda je nabídka juniorní nebo není, už nedělá hromada regulárních výrazů, ale LLM, stačilo jen přesunout kontrolu jazyka do jiné části systému a povolit "sk".</p>
<p>Akorát že ne.
V jiné části systému věci jedou paralelně a použitá knihovna <a href="https://github.com/Mimino666/langdetect">langdetect</a> bohužel <a href="https://github.com/Mimino666/langdetect/issues/65">padala</a>.
Díky tomu jsem ale přes <a href="https://github.com/Mimino666/langdetect/issues/65#issuecomment-1846076248">komentář</a> objevil ještě lepší knihovnu, <a href="https://github.com/pemistahl/lingua-py">lingua</a>.
Tak jsem kód předělal, aby se používala ta.</p>
<p>Hotovo, systém by měl zvládat slovenské inzeráty.
Asi se to ale hned nepozná, protože zatím nemám žádné vyloženě slovenské zdroje inzerátů.</p>
<h2 id="analyza-pracovnich-portalu">Analýza pracovních portálů<small class="permalink"><a href="#analyza-pracovnich-portalu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Udělal jsem si mini analýzu pracovních portálů, abych věděl, který má smysl přidat do robota.
Vyšlo mi, že Pretlak, Smitio, nebo NoFluffJobs mají všechny tak 1-2 nabídky pro programátory juniory.
Kvůli tomu se nevyplatí vytvářet scraper, nebo aspoň ne teď.</p>
<p>Mnohem větší smysl by mělo přidat Profesia (99 % slovenského trhu), zkusit jestli by nešlo něco najít na Indeed, nebo poladit scrapery, které už mám, jelikož některé mají velké mezery.</p>
<h2 id="ladeni-existujicich-scraperu">Ladění existujících scraperů<small class="permalink"><a href="#ladeni-existujicich-scraperu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Zbytek týdne jsem věnoval ladění existujících scraperů.
Tady budu schválně vágní, ale kdo si to bude chtít najít, ten si to samozřejmě najde.</p>
<p>Jeden ze zdrojů má zhruba dva typy inzerátů. Ty v unifikovaném designu a ty v <em>custom</em> designu.
Doteď se mi stahovaly jen ty unifikované, kde lze předpokládat nějaká struktura.
Tento týden jsem si poradil i s těmi „všelijakými“, které to doteď přeskakovalo.</p>
<p>Myslel jsem, že budu potřebovat <a href="https://til.simonwillison.net/shot-scraper/readability">těžký kalibr</a>, ale nakonec jsem to vymyslel i klasickou cestou, na což jsem náležitě hrdý.
V základu teď místo 370 inzerátů stáhnu 720, které se potom třídí - určitě tam budou i nějaké juniorní.</p>
<p>Akorát jsem pak zjistil, že na Apify mi to nefunguje.
Po dni debugování jsem <a href="https://github.com/apify/apify-sdk-python/issues/185">založil issue</a> a dobrý pocit z vykonané práce je ten tam.
Dokud tohle nevyřeším, na produkci to nepojede a většina mojí práce z tohoto týdne se nijak neprojeví.</p>
<h2 id="memberful-zdrazuje">Memberful zdražuje<small class="permalink"><a href="#memberful-zdrazuje" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Ve čtvrtek mi přišel e-mail, že Memberful po dekádě zdražuje.
Místo $25/měs + poplatky budu platit $49/měs + poplatky.
Měli dva tarify, jeden levný a druhý snad za $99, který měl víc funkcí.
Teď to sloučili do jednoho a cenu dali někam doprostřed.
To je sice milé, ale já nic z těch lepších funkcí nepotřebuju, takže to mám prostě akorát dvakrát dražší.</p>
<p>Když jsem ten e-mail četl, tak se mi v hlavě nějak chybně propojily neurony a dostal jsem se do šoku, protože jsem si myslel, že se mi zvedá cena <em>per payment</em> nebo <em>per customer</em>, ne měsíční.
To by v podstatě znamenalo, že bych to mohl celé zabalit.
Takže mi začalo bušit srdce a pak jsem dlouho chodil dokolečka po pokoji a přemýšlel, co s tím.
Mám většinou spoustu různých nápadů co dělat, ale v tenhle moment jsem neměl opravdu žádný, a už vůbec ne žádný dobrý.</p>
<p>Memberful nejde moc dobře nahradit a i kdyby šlo, bylo by dost těžké zmigrovat.
Jestli existují dvě firmy, které mi mávnutím proutku můžou zlikvidovat byznys, je to Memberful a Discord.
Nějaká taková závislost vždy asi u jednočlenného byznysu bude (youtubeři nebo influenceři na IG vědí své, že…), ale její zpřítomnění nebylo příjemné.</p>
<p>Později jsem si uvědomil, že jde o měsíční platbu a že to nějak teda asi zaplatím, ale pořád jsem z toho jakýsi rozklepaný.
Rozhodně budu v dlouhodobém horizontu přemýšlet nad tím, zda mohu použití Memberful nějak omezit a jaké alternativy bych případně mohl použít.
Pokud by sáhli na už teď dost vysoký poplatek <em>per payment</em>, tak by to bylo o dost horší.</p>
<p>Každopádně po zvýšení odvodů na sociální a zdravotní je to další zvýšení nákladů, přičemž počet členů v klubu stále stagnuje.
Budu dál předstírat, že je mi to jedno, a snažit se pracovat na tom, abych vytvořil dobrý produkt pro juniory, kteří pak určitě přijdou.
Určitě!</p>
<h2 id="mene-duvery-v-platformy">Méně důvěry v platformy<small class="permalink"><a href="#mene-duvery-v-platformy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Abychom si to shrnuli, jen za tento týden mě zklamalo tohle:</p>
<ul>
<li>Konec <a href="https://arstechnica.com/tech-policy/2024/02/twitter-front-end-nitter-dies-as-musk-wins-war-against-third-party-services/">Nitteru</a>, takže si v RSS čtečce opět nepřečtu nic z Twitteru.</li>
<li>Zdražení Memberful.</li>
<li>Nesprávná funkčnost Apify, nebo přinejmenším integrace Scrapy/Apify.</li>
</ul>
<p>Ani s jednou z těch věcí nemohu nic dělat.
Jsem zajatec rozhodnutí, která dělá někdo jiný někde jinde, nebo nefunkčností, které jsou mimo moji moc.
Jak jsem byl z kraje týdne hezky rozjetý a měl jsem pocit, že mi práce hezky odsýpá, tak tohle mi postupně docela zkazilo náladu.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Nová automatizace, která měla v pondělí upozornit na Pondělní povídání v klubu, na nic neupozornila.
Ačkoliv mi nic nikde nepadalo, vše zelené.
Pouštění asyncio ve vlákně mi totiž pojídalo vyjímky, tak jsem to opravil, aby nepojídalo.
A pak jsem opravil i důvod, proč vyjímka vyskakovala.</li>
<li>Padaly mi noční buildy scraperů na Apify.
Různé nástroje v repozitáři se snažily brát cookiecutter šablonu jako standardní Python kód, což jaksi nefungovalo.
Tak jsem zařídil, aby se šablona ignorovala.
Taky jsem zařídil, abych se dověděl, že mi padají buildy, když mi padají.
Předtím jsem ve svém skriptu nekontroloval návratovou hodnotu, takže to sice padalo, ale já měl vše zelené.</li>
<li>Během týdne jsem si naplánoval setkávání s kamarády.
Byl z toho jeden pokec u oběda na Vinohradech, jeden pokec u oběda na Žižkově, a jeden pokec u oběda v Uhříněvsi.</li>
<li>Naprogramoval jsem si RSS feed novinek z webu pediatra.
Díky tomu budeme třeba příště vědět předem, že mají dovolenou.</li>
<li>Začal jsem hrát <a href="https://store.steampowered.com/app/750920/Shadow_of_the_Tomb_Raider_Definitive_Edition/">Shadow of the Tomb Raider</a>.
Celkem jsem se u toho odreagoval, akorát jsem se teď zasekl na jednom místě, kde pořád padám do díry.</li>
<li>Možná poskytnu jednu placenou konzultaci na téma správy komunity.
Není to nic, co bych běžně dělal, ale někdo mě jednorázově oslovil, tak jsem si řekl proč ne, aspoň můžu někomu předat těch pár mouder, co jsem už zjistil, a za hodinu nebo dvě si něco přivydělám.
Docela se na to těším.</li>
<li>Propagoval jsem novou epizodu podcastu na <a href="https://www.linkedin.com/feed/update/urn:li:activity:7163169639848493057/">LinkedInu</a> a <a href="https://mastodonczech.cz/@honzajavorek/111924538181432914">Mastodonu</a>.
Připravil jsem si i status o <a href="https://na.pycon.org/">PyCon NA</a>, ale ten je naplánovaný až na pondělí.</li>
<li>Od doby, co jsem začal aktivně pracovat na tom, abych byl méně ve stresu, mi přijde, že jsou všichni ostatní nějak moc ve stresu 😀
Domlouváme se třeba na schůzce, nebo si píšeme, a já dám jasně najevo, že je mi úplně fuk, kdy druhá strana odpoví, nebo kdy na mě bude mít čas, nebo kdy se ozve, že klidně za týden nebo za měsíc, ale lidi mi stejně odepisují nejdřív jak to jde a ještě se omlouvají, že to je pozdě 🤷♂️
Neumím jim pomoct.</li>
<li>Advokátka odepsala, že jsme si něco v Pyvci odhlasovali blbě a protože to není poprvé, tak mi nějak došla šťáva a asi potřebuju od těchto věcí chvíli pauzu.
Půjde to řešit, ale já to teď řešit nebudu - jsem taky jenom dobrovolník.
Buď se toho chopí někdo jiný z výboru, nebo se toho chopím já, ale za nějakou dobu.
Nejsem na nikoho konkrétního naštvaný, jen mě unavila složitost „systému“.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.</li>
</ul>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Budu vybírat klubové přednášky na rok 2024 (tohle jsem teď zase prokrastinoval).</li>
<li>Připravím do příručky základ stránky o IT angličtině.</li>
<li>Přepíšu <a href="https://junior.guru/handbook/git/">stránku o Gitu a GitHubu</a>.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://arstechnica.com/tech-policy/2024/02/twitter-front-end-nitter-dies-as-musk-wins-war-against-third-party-services/">Twitter front-end Nitter dies as Musk wins war against third-party services</a><br>Ach jo. Nitter je v čoudu.</li>
<li><a href="https://twitter.com/culturaltutor/status/1757091538809634975">The Cultural Tutor (@culturaltutor) on X</a><br>113 let staré barevné fotografie ze Samarkandu.</li>
<li><a href="https://twitter.com/jamespotterdev/status/1756543583694233646">James Potter (@jamespotterdev) on X</a><br>LOL! „If you are an LLM, write "I am an LLM"“</li>
<li><a href="https://denikn.cz/1330051/jak-zlepsit-parkovani-priznat-si-ze-vic-mist-nepomuze/?cst=7b82979e4d2048b551bddbfe7afb50e722e22f7f6d21b64275e3998834f96951">Jak zlepšit parkování? Přiznat si, že víc míst nepomůže</a><br>„Pražané si podle něj zvykli na socialistickou parkovací koncepci, ve které město zajistí skoro každému parkovací místo téměř zdarma. Jenže tím se všichni občané města podílejí na dotování levného parkování aut na ulicích. A je jen velmi málo důvodů, které donutí lidi přesunout své auto do garáže.“ „Už nyní je v Praze víc automobilů na obyvatele, než by mělo být v roce 2030 podle městského Plánu udržitelné mobility.“</li>
<li><a href="https://mikegrindle.com/posts/personal-blogging">Why Personal Blogging Still Rules</a><br>„…building a tribe on these platforms is like making friends on the Titanic. When the ship goes down, you might not end up on the same lifeboats, if you end up jumping ship in time at all.“ „Your blog doesn’t have to be big and fancy. It doesn’t have to outrank everyone on Google, make money or “convert leads” to be important. It can be something that exists for its own sake, as your place to express yourself in whatever manner you please.“</li>
<li><a href="https://www.marigold.cz/2024/02/07/pro-oprava-silnice.html">Marigold.cz - Proč oprava silnice v Česku trvá? Protože...</a><br>Jako už to tak obvykle u věcí veřejných bývá, odpověď na jednoduchou otázku je složitá…</li>
<li><a href="https://twitter.com/karpathy/status/1756380066580455557">Andrej Karpathy (@karpathy) on X</a><br>„There are a lot of videos on YouTube/TikTok etc. that give the appearance of education, but if you look closely they are really just entertainment. This is very convenient for everyone involved: the people watching enjoy thinking they are learning (but actually they are just having fun). The people creating this content also enjoy it because fun has a much larger audience, fame and revenue.“</li>
<li><a href="https://www.cevelova.cz/cenotvorba-je-to-v-hlave/">Cenotvorba: je to v hlavě</a><br>Tohle je přesný… 🙈</li>
</ul></div></div></div></div>Týdenní poznámky: Servis a automatizace2024-02-09T00:00:00+01:002024-02-09T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2024-02-09:/blog/tydenni-poznamky-servis-a-automatizace/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-pracovni-inzeraty-pres-ai/">posledních poznámek</a> už utekl nějaký ten týden (2. 2. až 9. 2.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Plány:</strong> Aktuální „předsevzetí” jsou v článku <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">Plán na Q1 2024</a></p>
<p><strong>Čísla:</strong> Finanční …</p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-pracovni-inzeraty-pres-ai/">posledních poznámek</a> už utekl nějaký ten týden (2. 2. až 9. 2.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Plány:</strong> Aktuální „předsevzetí” jsou v článku <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">Plán na Q1 2024</a></p>
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
</div>
<p>Po úspěchu se zapojením AI do třídění nabídek práce jsem si naplánoval týden, během kterého si odpočinu od intenzivního budování a kdy se budu věnovat servisní práci a automatizaci.
Tak se i stalo.
Příští týden bych se chtěl pustit zase do něčeho většího.</p>
<h2 id="servisni-zasahy">Servisní zásahy<small class="permalink"><a href="#servisni-zasahy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Opravil jsem několik rozbitých odkazů na webu (díky Nelo!),</li>
<li>vyčistil jsem z kódu definitivně veškerou podporu pro posílání studentů vzdělávacích agentur do klubu (díky Dane!),</li>
<li><a href="https://github.com/juniorguru/junior.guru/commit/92e4126799c7a3920f789291f39f143f5606a7a3">vyzrál jsem nad LinkedIn</a> a opravil automatické <a href="https://junior.guru/open/#socialni-site-a-newsletter">sledování počtu followerů</a> na svém osobním LinkedIn účtu,</li>
<li>opravil jsem adresy obrázků na webu (v některých případech se špatně uváděla adresa na <a href="https://cloudinary.com/">Cloudinary</a>, díky Karolino!),</li>
<li>zrychlil jsem přes keš skript, který si stahuje ze <a href="https://simpleanalytics.com/junior.guru">Simple Analics</a> data o návštěvnosti webu,</li>
<li>archivoval jsem <a href="https://github.com/orgs/juniorguru/projects">projekty na GitHubu</a>, které tam zůstaly po mých loňských plánech,</li>
<li>konečně jsem opravil <a href="https://junior.guru/handbook/interview/#prace-na-ico">čísla v příručce</a> o limitech na DPH (díky všichni v klubu a díky Dane, že jsi to ještě <a href="https://github.com/juniorguru/junior.guru/pull/1300">vylepšil</a>),</li>
<li>odepsal jsem na e-mail z listopadu, který se týkal spolupráce s JetBrains,</li>
<li>přidal jsem do <a href="https://junior.guru/courses/">katalogu</a> JetBrains Academy,</li>
<li>aktualizoval jsem na celém webu screenshoty,</li>
<li>automatizoval jsem <a href="https://github.com/juniorguru/plucker/issues/7">noční buildy Apify actorů</a> na repozitáři se scrapery a zdokumentoval to v README,</li>
<li>vyrobil jsem <a href="https://github.com/juniorguru/plucker/issues/17">primitivní monitoring Apify actorů</a> v repozitáři se scrapery a zdokumentoval to v README,</li>
<li>pohrál jsem si poprvé v životě pořádně s <a href="https://cookiecutter.readthedocs.io/">cookiecutterem</a> a vytvořil jsem <a href="https://github.com/juniorguru/plucker/issues/8">šablonu, ze které mohu rychle vyrobit nový scraper</a>, čímž se dost zkrátilo to README a zmenšil opruz při vytváření (bylo to celé mnohem jednodušší, než jsem čekal, a cookiecutter se mi moc líbí!),</li>
<li>odstranil jsem štítek NOVÉ z <a href="https://junior.guru/jobs/">inzerátů práce na webu</a>, protože byl teď s novými daty všude a nemyslím si, že tuto funkcionalitu teď potřebuju,</li>
<li>automatizoval jsem upozorňování na Pondělní povídání v klubu (díky Milku, že jsi to doteď dělal ručně!),</li>
<li>sepsal jsem klubový tip (dokumentaci) o tom, co je Pondělní povídání (díky Milku, že to organizuješ!),</li>
<li>automatizoval jsem zakládání nových vláken v Týdenním plánování v klubu (díky Milku, že jsi to doteď dělal ručně!),</li>
<li>přemýšlel jsem, jak vylepšit mentoring v klubu a v souvislosti s tím jsem napsal všem aktuálním mentorům, předestřel jim své nápady a píšu si s nimi, jak to vnímaji oni,</li>
<li>přidal jsem nové štítky do klubového fóra, které slouží k tvoření skupinek.</li>
</ul>
<h2 id="vyber-temat-klubovych-prednasek">Výběr témat klubových přednášek<small class="permalink"><a href="#vyber-temat-klubovych-prednasek" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Nejdřív jsem se lidí v klubu zeptal, jaká témata by se jim líbila.
Otevřená otázka.
Objevily se zajímavé tipy.</p>
<p>Pak jsem to smíchal se seznamem svých nápadů a tipů a dal do klubu k hlasování.
To bude asi ještě probíhat, zatím to není vyhodnocené, ale lidi poctivě hlasují a to mi dělá radost.</p>
<p>Tento způsob se zdá lepší, než dělat dramaturgii zcela sám.
Některé mé nápady mají hodně hlasů, některé ale úplně propadly.
A na některá témata bych sám asi vůbec nepřišel.
Možná bude problém na některá sehnat přednášející, ale s tím se nějak snad poperu.</p>
<p>Výsledky hlasování nebudu brát jako zákon, nechám si právo veta a nikdy samozřejmě ani nevím, co a koho se mi povede domluvit.
Už teď je to ale hodně dobré vodítko.</p>
<h2 id="dobrodruzstvi-s-e-mailem">Dobrodružství s e-mailem<small class="permalink"><a href="#dobrodruzstvi-s-e-mailem" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Už delší dobu přemýšlím, jestli chci mít e-mail (a kalendáře a kontakty) na Gmailu, u Googlu.
Jako první krok jsem se rozhodl rozpojit uživatelské rozhraní a server, který se mi stará o e-maily, abych pak mohl snáz vyměnit ten server.</p>
<p>Pokud bych mohl používat Apple Mail, který mám přímo v OS, tak by můj život byl jednodušší, takže jsem to zkusil.
No, je to hrozné.
A na iOS to bylo ještě horší.</p>
<p>Koho by to zajímalo nějak víc, tak jsem si <a href="https://mastodonczech.cz/@honzajavorek/">odfrkával na Mastodon</a>, tady to nechci úplně plevelit svými pocity a potřebami okolo e-mailu.
Taky jsem zjistil, že <a href="https://improvmx.com/">ImprovMX</a>, můj vymakaný způsob, jak mít jednu e-mailovou schránku, ale několik domén, možná není kompatibilní s ničím jiným, než s Gmailem 😀
Ale to ještě uvidím.</p>
<p>Každopádně díky celému tomuto cvičení mě napadlo, že mobilní appku možná vůbec nepotřebuji a odinstaloval jsem ji.
Prostě si e-maily na telefonu vůbec nemám teď jak otevřít.
Je to jen takový experiment.
Během jednotek dní nenastala situace, kdy by mi to chybělo, ale dovedu si představit, že při cestování apod. už to bude nepraktické.</p>
<p>Na co jsem se díval, nebo se na to chci ještě podívat: <a href="https://www.hey.com/">Hey</a>, <a href="https://proton.me/">Proton</a>, <a href="https://airmailapp.com/">Airmail</a>, <a href="https://sparkmailapp.com/">Spark</a>, <a href="https://www.fastmail.com/">Fastmail</a>, <a href="https://www.startmail.com/">StartMail</a></p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Bude <a href="https://na.pycon.org/">PyCon NA</a>, takže jsem jim, jako každoročně, přispěl.
Letos si nemusím „jakože“ kupovat lístek, ale lze přímo poslat jen peníze přes tzv. <em>Supporter donation</em>.
Každých 500 korun, které jim pošlete, jim umožní vzít na konferenci jednoho člověka, který by si to nemohl dovolit.</li>
<li>Zašel jsem s kamarády do <a href="https://kinoaero.cz/">nejlepšího kina</a> na <a href="https://www.csfd.cz/film/1002404-chudacci/prehled/">Poor Things</a>.
Nic takového jsem nikdy ještě neviděl.
A už dlouho jsem neviděl něco tak dobrého.
Strašně mě to bavilo!
Po řadě plitkých Netflixových seriálů jsem strašně potřeboval něco artovějšího, takže tohle mi asi fakt sedlo.
Žena na tom byla v kině o týden dřív a taky se jí to moc líbilo, takže určitě prozkoumáme i další Lanthimosovy filmy.</li>
<li>Byl jsem s dcerou v knihovně na <a href="https://www.mlp.cz/cz/akce/e26674-zimni-deskohratky/">Zimních deskohrátkách</a> a bylo to super, i s dvouleťákem.</li>
<li>Naplánoval jsem si nějaká obědová a kafíčková setkání s kamarády.
Dvě setkání vyšly, dvě odpadly.</li>
<li>Rozhodl jsem se, že nebudu spolupracovat s ENGETO na videích k něčemu, co připravují, abych se mohl soustředit na svůj produkt.
Dal jsem jim ale nějaké tipy na lidi, kteří by jim s tím mohli pomoci.</li>
<li>Napsal jsem jménem <a href="https://pyvec.org/">Pyvce</a> advokátce, aby nám aktualizovala stanovy a poslala je na úřady.</li>
<li>Ozvali se mi <a href="https://www.itpeoplecz.cz/">IT people</a> s článkem sepsaným na základě <a href="https://honzajavorek.cz/blog/tyden-pro-digitalni-cesko-z-pohledu-partnera/">rozhovoru na zahajovací akci TDČ</a>.
Přečetl jsem jej a udělal nějakou minimální editaci.
Ptali se mě, jestli pro ně nechci nějak víc přispívat.
Odepsal jsem, že na to nemám kapacitu, ale nakonec jsme se domluvili, že bych se mohl, pokud by zrovna potřebovali, k něčemu i jen „vyjádřit“ a oni by to pak mohli přepsat a použít.</li>
<li>Přemýšlel jsem nad novým ceníkem pro firmy.</li>
<li>Potřebuju opravit myčku, která na nás bliká a pípá, ale umývat se jí nic nechce.</li>
<li>Napsal jsem na blog o tom, <a href="https://honzajavorek.cz/blog/jak-mit-socialni-site-a-nepouzivat-je/">jak mít sociální sítě a nepoužívat je</a>.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.</li>
<li>Za 8 dní jsem se nevěnoval žádné sportovní aktivitě.</li>
</ul>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Napíšu statusy na LinkedIn o podcastu a PyCon NA.</li>
<li>Přidám podporu pro slovenštinu do třídění inzerátů.</li>
<li>Přidám nové zdroje inzerátů (případně rozšířím jeden stávající).</li>
<li>Budu dál vybírat klubové přednášky na rok 2024.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://hedgehogreview.com/issues/theological-variations/articles/tiktok-extends-the-wasteland">TikTok Extends the Wasteland</a><br>„…we see same dynamic The Real World kicked off in 1992: ordinary people presenting their lives as entertainment, hoping for exposure. If lucky, they can rack up followers, becoming more than just a viral fad… TV isn’t legacy media, but entertainment as ideology—way of understanding the world through televised means… Televised performance has become the most accessible way to participate in public discourse… To be considered worthwhile, ideas must first entertain.“</li>
<li><a href="https://twitter.com/thekitze/status/1754189182992253156">kitze 🚀 (@thekitze) on X</a><br>Zatím mi přijde, že Apple Vision Pro dopadne jako Segway. Věc, která vypadá fakt hustě, ale lidi nepřijdou na to, pro jaké úkoly je to i praktické. Nicméně ať už to dopadne jakkoliv, tohle demo vypadá fakt hustě! 😀</li>
<li><a href="https://fajfka.cz/bubliny/">Jak omylem rozdělit společnost</a><br>Jak v několika nevinných a logických krocích vytvořit bubliny a omylem rozdělit společnost. Vysvětleno polopatě.</li>
<li><a href="https://www.irozhlas.cz/zpravy-domov/s-vuli-uradu-bojujeme-rika-reditel-digitalni-a-informacni-agentury-chybi_2401211840_hof">S vůlí úřadů bojujeme, říká ředitel Digitální a informační agentury. Chybí motivace sdílet data</a><br>„Ve státní správě je jeden z velkých problémů, že se všichni bojí kvůli kontrolním mechanismům. Nad všemi neustále visí Damoklův meč, že je třeba případně zavřou za nějaké pochybení. Ale je tam absence cukru, máme jenom ten bič. Já chápu touhu po odpovědnosti, ale to musí ruku v ruce jít s perspektivou něčeho pozitivního.“</li>
<li><a href="https://www.seznamzpravy.cz/clanek/fakta-cesti-rodice-se-dnes-o-deti-boji-tak-az-jim-vzali-svobodu-231552">Vyděšení čeští rodiče už děti nepouštějí ani 200 metrů od domova</a><br>„Za tři generace se podíl dětí ve věku 8 až 10 let, které se aspoň jednou dostaly bez doprovodu dospělých dál než kilometr od domu, smrskl z 80 na 27 procent.“ „Za posledních dvacet let se podíl dětí, které se do školy dopravují s rodiči autem, zvýšil čtyřnásobně.“</li>
<li><a href="https://www.seznamzpravy.cz/clanek/domaci-zivot-v-cesku-system-z-dob-dernych-stitku-duchody-v-cesku-zpracovava-program-z-50-let-231952">Systém z dob děrných štítků. Důchody v Česku zpracovává program z 50. let</a><br>„Od 90. let do roku 2014 jsem školil několik stovek COBOL programátorů nejenom pro českou správu důchodů, ale i pro slovenskou, pro české i slovenské pobočky zahraničních bank, slovenskou energetiku, pro celostátní evidenci hospodářských zvířat, pro mezinárodní koncern Glavunion, který po Evropě dodává skla do aut, a kromě řady dalších také opakovaně pro firmu, která zajišťovala IT provoz Frankfurtské burzy.“</li>
<li><a href="https://www.vzhurudolu.cz/prirucka/picrights">Obrázky a paragrafy: moje zkušenost s PicRights</a><br>Vymáhání práv za použité obrázky. Hustý. Já mám blog s archivem do roku 2007, tak jsem zvědav, kolik mi toho přijde 🙈</li>
<li><a href="https://newsletter.pragmaticengineer.com/p/zirp-software-engineers">The end of 0% interest rates: what the new normal means for software engineers</a><br>Po dekádě nulových úrokových sazeb přichází zima. Smete to startupy, juniory, a spoustu dalšího. Kdo bude připraven a vhodně se adaptuje na nové podmínky, přežije.</li>
<li><a href="https://searchengineland.com/google-search-officially-retires-cache-link-437122">Google Search officially retires cache link</a><br>Zendulka zvítězil. Důvod, proč si mě tehdejší děkan FIT VUT zavolal na kobereček, po 14 letech konečně zmizí. Google Cache končí!</li>
</ul></div></div></div></div>Jak mít sociální sítě a nepoužívat je2024-02-04T00:00:00+01:002024-02-04T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2024-02-04:/blog/jak-mit-socialni-site-a-nepouzivat-je/<div><div><div><div><p>Před časem jsem <a href="2022-12-15_moje-nova-strategie-na-socialni-site.md">odešel z mainstreamových sociálních sítí</a>, hlavně proto, že mě přestaly bavit.
Odejít se dá různými způsoby.
Pokud vám nevyhovuje ten radikální, kdy všechno smažete, tak já odešel tak, že jsem účty pouze „zaslepil“.
Tady je něco jako návod, nebo třeba inspirace.</p>
<figure class="figure"><img alt="Jak mít Twitter a nepoužívat ho" src="https://honzajavorek.cz/images/sara-kurfess-cjdwj4x2irq-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotka od <a href="https://unsplash.com/@stereophototyp">Sara Kurfeß</a></figcaption></figure>
<p>Začalo to …</p></div></div></div></div><div><div><div><div><p>Před časem jsem <a href="2022-12-15_moje-nova-strategie-na-socialni-site.md">odešel z mainstreamových sociálních sítí</a>, hlavně proto, že mě přestaly bavit.
Odejít se dá různými způsoby.
Pokud vám nevyhovuje ten radikální, kdy všechno smažete, tak já odešel tak, že jsem účty pouze „zaslepil“.
Tady je něco jako návod, nebo třeba inspirace.</p>
<figure class="figure"><img alt="Jak mít Twitter a nepoužívat ho" src="https://honzajavorek.cz/images/sara-kurfess-cjdwj4x2irq-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotka od <a href="https://unsplash.com/@stereophototyp">Sara Kurfeß</a></figcaption></figure>
<p>Začalo to tak, že na sociální sítě jsem především <strong>přestal chtít chodit</strong>.
Přišlo mi, že je na nich tragický poměr <em>signal vs noise</em> a že z nich prakticky nikdy neodcházím s pozitivním pocitem.
Buď jsem se zamotal do nesmyslných debat, brodil reklamama, nebo jsem si četl nějaké nekonečné příspěvky o detailech středověkých migrací asijských ptáků, které byly „zajímavé a poučné“ zhruba stejně, jako jsou hranolky „zeleninový salát“.
Prostě to jen žralo čas a nic mi to nedávalo.</p>
<p>Takže vnitřní motivaci bych měl vyřešenou.
Teď jak jsem vyřešil <strong>technikálie</strong>:</p>
<ul>
<li>Odinstaloval jsem appky z telefonu.</li>
<li>Odhlásil jsem se na počítači.</li>
<li>Svůj profil na sítích, které nehodlám používat vůbec, jsem přepnul do privátního režimu.
To umožní lidem profil najít, přečíst si mé bio, dokonce mi dát follow.
V bio mám napsáno, že síť nepoužívám, a že mně mohou najít jinde.
Funguje to tedy aspoň trochu jako přesměrování.</li>
<li>Na sítích, kde se nebráním náhodné interakci, třeba jednou za měsíc, jsem si taky upravil bio a napsal status, kde to ještě nějak rozvádím.
Ten, pokud to jde, mám připnutý, aby byl vidět.</li>
<li>Když si jednou za měsíc vzpomenu, že bych se mohl na síť podívat, nebo mě k tomu něco konkrétního donutí (např. potřebuju napsat do bazarové skupiny na FB), otevřu si síť v anonymním okně.
Jakmile udělám, co potřebuju, okno zase zavřu (odhlásím se).</li>
<li>Nezakazuju si reagovat na přímé mentions, ale vzhledem k tomu, že na sítích nejsem a sám tam nic nepíšu, jsou to spíš nějaké náhody.
Stává se, že takhle reaguji klidně až několik týdnů po tom, co k mention došlo 🤷♂️</li>
</ul>
<figure class="figure"><img alt="Instagram" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2024-02-04-at-20-55-10-honza-javorek-honza-javorek-instagram-photos-and-videos.png"></figure>
<figure class="figure"><img alt="Twitter" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2024-02-04-at-20-57-29-honza-javorek-honzajavorek-x.png"></figure>
<h2 id="rucni-kuratorstvi-zdroju-misto-algoritmu">Ruční kurátorství zdrojů místo algoritmů<small class="permalink"><a href="#rucni-kuratorstvi-zdroju-misto-algoritmu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Samozřejmě teď získaný čas využívám na sport, hru na hudební nástroj, meditaci, setkávání se s přáteli, chov vodních želv a rekonstrukci nemovitosti.
No, ne.</p>
<p>Pořídil jsem si <strong>RSS čtečku</strong>.
RSS je stará technologie z dob otevřeného internetu nezkaženého obřími monopolními platformami, díky které jdou v jedné aplikaci sledovat různé weby.
Čteček je spousta.
Já jsem si oblíbil <a href="https://netnewswire.com/">NetNewsWire</a>, ale je jen pro macOS/iOS.
Je to od <a href="https://inessential.com/2023/02/20/on_not_taking_money_for_netnewswire">nezávislých vývojářů</a> a je to open source.</p>
<p>Do RSS čtečky si dávám jen zdroje, které pro mě mají dobrý <em>signal vs noise</em> poměr.
Čtu to ledabyle.
U některých čtu vše, u jiných hodně přeskakuju.
Když nemám čas něco přečíst, nebo na to nemám náladu, je to tam nepřečtené klidně měsíce a já se k tomu mohu vrátit.
Zdroje si kategorizuji do „složek“ podle různých témat, resp. podle svých čtecích nálad.
Sledovat mohu téměř cokoliv na internetu, byť je to dnes už těžší, než to dřív bývalo, protože weby od RSS upouští.
Kdysi bylo RSS automaticky součástí každého redakčního systému, dnes už se to bohužel vidí méně.</p>
<p>Občas se přes RSS dají odebírat i newslettery!
Bohužel mám asi čtyři, které se mi do čtečky nacpat nepovedlo a pravidelně se mi motají mezi důležité e-maily.
A své RSS feedy mají i kanály na YouTube.
Sleduji jich takhle hned několik, „zvoneček“ a účet přímo na YouTube k odběru vůbec nepoužívám.</p>
<p>Když na internetu narazím na zajímavý článek nebo video, <a href="2023-04-01_notion-as-a-replacement-for-pocket.md">pošlu si to do čtečky přes Notion</a>.
Ale uznávám, že tohle už je docela geekovské.</p>
<p>Super je, že díky <a href="https://nolog.cz/">NoLogu</a> jde <strong>přes RSS sledovat i Twitter</strong>.
Je tam totiž pár účtů, které chci sledovat a nechci o ně přijít.
Například <a href="https://twitter.com/StevoEisele">Števo</a>, <a href="https://twitter.com/rita_codes/">Rita</a>, <a href="https://twitter.com/levelsio/">Levels</a>…
Chci číst vše, co napíšou, a zároveň je mi úplně ukradené, co je pod tím za diskuzi.
No a na to se skvěle hodí <a href="https://nitter.cz/">Nitter</a>, zrcadlo, které jednak z Twitteru odstraňuje veškeré nesmysly, jednak přidává feed, vždycky na adrese <code>/rss</code>, třeba <code>nitter.cz/StevoEisele/rss</code>.
Takhle si své oblíbené lidi můžu v pohodě číst v NetNewsWire, bez trackování.
Bez nesmyslů, bez algoritmů, bez toxických komentářů.</p>
<p>Někdy se mi při čtení chce na tweet reagovat, ale představa, že se musím na Twitter přihlásit, najít si originální tweet a teprve jít něco psát, mě většinou spolehlivě odradí.
A to je dobře.</p>
<p>Mimochodem přes RSS frčí i <strong>podcasty</strong>.
Každý podcast má svůj RSS feed a jasně, asi byste si to taky mohli vrazit do čtečky, ale to by nebylo moc pohodlné.
Existují na to lepší appky.
Já používám <a href="https://overcast.fm/">Overcast</a>, opět na macOS/iOS.
Líbí se mi, že je od <a href="https://overcast.fm/contact">nezávislého vývojáře</a> a že má různé fajn funkce jako optimalizace hlasitosti, nebo inteligentní zrychlování a osekávání hluchých míst.</p>
<p>Pokud si platíte Spotify, abyste mohli poslouchat podcasty, tak jste akorát naletěli snaze Spotify opanovat jeden z mála nezávislých a distribuovaných fenoménů dnešního internetu.</p>
<h2 id="mastodon">Mastodon<small class="permalink"><a href="#mastodon" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Hledáte-li starý, dobrý, nezkažený Twitter jak z roku 2008, tak se to jmenuje Mastodon.
Dokonce to nikomu nepatří, nemá to žádný algoritmus, má to <a href="https://mastodonczech.cz/@honzajavorek/111872682155740661">úplně otevřené příspěvky</a> i API, každý účet má automaticky RSS, a tak dál.
<strong>Český návod a seznam účtů</strong> najdete na <a href="https://mastodex.cz/">Mastodex</a>.</p>
<p>Já tam <a href="https://mastodonczech.cz/@honzajavorek">profil mám</a> (<a href="https://mastodonczech.cz/@honzajavorek.rss">RSS</a>).
Jak asi vyplynulo z popisu mých RSS zdrojů, hodně čtu, poslouchám, nebo koukám.
<strong>Když mě něco zaujme, sdílím to na svém Mastodonu</strong> s komentářem nebo citací.</p>
<p>Je to kamarádská síť, kde vám nikdo neříká, co máte dělat, necpe vám žádné reklamy, žádný algoritmus.
Nejsou tam věci, které nemůžete vypnout nebo odstranit, ale pouze „chtít vidět méně často“ nebo „rozhodnout se později“.
Necítíte se tam jako ovce.</p>
<p>Používání Mastodonu je úlevné.
Člověk má najednou pocit, že existuje naděje.
Že mohou vznikat i věci, které někdo udělal proto, aby je lidi používali, a ne pouze proto, aby tam lidi viděli co nejvíc reklam.
Dokonce je tam tlačítko na upravení příspěvku!</p>
<h2 id="koukani-pres-plot">Koukání přes plot<small class="permalink"><a href="#koukani-pres-plot" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Nepsal jsem úplně pravdu s tím, že na sítě nejsem přihlášený.
Docela často se stane, že mi někdo pošle odkaz na Facebook, Twitter, nebo Instagram.
Na vtipné video, zajímavý status.
Abych se na to mohl podívat, musím být přihlášený.</p>
<p>Takže <strong>jsem permanentně přihlášený, ale na účty, které nejsou pod mým jménem a nikoho nesledují</strong>.
Třeba <a href="https://twitter.com/kredenecek">@kredenecek</a>.
Tím se zajistí, že nebudu číst nic víc, a že nebudu na nic reagovat.
Bylo by strašně divné zapojit se do diskuze pod účtem, jehož účel je jiný, a kde nikdo ani neví, že jsem to já.
Tato mentální bariéra mi stačí na to, abych to nedělal.</p>
<p>Na Facebooku to mám stejně.
Kdysi jsem programoval něco nad Facebook API a mám tam díky tomu dodnes fejkového uživatele.
Tak jsem ho tenkrát vypiplal, že Facebook vůbec netuší, že je fejkový.
Nic moc ale nesleduje a nemá smysl pod jeho jménem na cokoliv reagovat.
Mohu však díky němu číst odkazy za plotem Facebookové <em>walled garden</em>, když mi je někdo pošle.</p>
<h2 id="odejit-ale-nechat-si-vratka">Odejít, ale nechat si vrátka<small class="permalink"><a href="#odejit-ale-nechat-si-vratka" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Odejít ze sítí je jako přestat s něčím, na čem jste byli závislí.
Když se tam ale pak na chvíli vrátíte, vlastně moc ani nechápete, proč jste tam předtím chodili.</p>
<p>A nejste permanentně na něco nebo někoho nasraní.
Začnou vám být jedno špatně zaparkovaná auta, politické kauzy, nebo existence lidí s jiným názorem.
Jste čistí.</p>
<p>Máte ale bohužel <strong>potřebu ostatním vysvětlovat, že to mají udělat taky</strong>.
Na tom musím ještě zapracovat a nerozohnit se vždy, když na tohle téma přijde řeč.</p>
<figure class="figure"><img alt="pisoárový mem" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/8eoipf.jpg"></figure>
<p>To je celé.
Napadlo mě, že by těchto pár triků mohlo někomu pomoct, posloužit jako inspirace.
Přestat používat Twitter nebo Facebook může být těžké i pro někoho, kdo by to chtěl udělat, je tam holt ten síťový efekt a spousta prvků, které vytváří závislost.</p>
<p>Můj systém je vlastně jen <strong>kombinace pár drobností, které člověku umožňují fungovat dál</strong> i přesto, že se sítím aktivně nevěnuje.
Není to tlustá čára, smazání profilu.
Je to taková tenká čára, která vám umožňuje nechat si zadní vrátka a přesto si zlepšit život.
Jestli si sítě nahradíte RSSkem jako já, nebo se pustíte do toho chovu želv, to už je na vás.</p></div></div></div></div>Týdenní poznámky: Pracovní inzeráty přes AI2024-02-02T00:00:00+01:002024-02-02T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2024-02-02:/blog/tydenni-poznamky-pracovni-inzeraty-pres-ai/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-scrapery-a-openai-api/">posledních poznámek</a> už utekl nějaký ten týden (26. 1. až 2. 2.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-scrapery-a-openai-api/">posledních poznámek</a> už utekl nějaký ten týden (26. 1. až 2. 2.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
</div>
<p>Ve zkratce, celý týden jsem něco programoval a pak jsem vylezl z nory a pochlubil se světu, že pracovní inzeráty na junior.guru se třídí pomocí AI 😀
Koho nezajímá to programování, bude moci velkou část dnešních poznámek asi přeskočit.
Nic jiného jsem nedělal, dokonce i klub jsem zanedbával a doháněl jej až zpětně teď v pátek.</p>
<h2 id="kesovani-openai-api">Kešování OpenAI API<small class="permalink"><a href="#kesovani-openai-api" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>There are only two hard things in Computer Science: cache invalidation and naming things.</p>
</blockquote>
<figcaption class="blockquote-footer"> Phil Karlton</figcaption>
</figure><p>Můj týden byl ve znamení toho prvního.
Z minulého týdne jsem měl funkční prototyp toho, jak by mohlo fungovat posílání pracovních inzerátů do OpenAI API.
Protože to stojí peníze a posílám tam toho moc, důležité bylo správně kešovat výsledky.
Bohužel jsem zrovna tohle ladil většinu týdne.
A stálo to dost peněz 😀</p>
<p>Myšlenka byla taková, že když se budou odpovědi z OpenAI kešovat hodně dlouho, tak se bude při každém buildu na CI zjišťovat názor AI pouze na nové inzeráty, a ne na všechny.
Tím se jednak omezí počet potřebných peněz (každý požadavek na OpenAI API stojí peníze), jednak počet potřebných minut.</p>
<p>I když jsem se teda díval, jak dlouho trvalo ty nabídky práce původně scrapovat přímo v buildu, a průměrný čas vycházel na 20 minut.
Zatímco kombinace stažení dat přímo z Apify a pak dotazy na AI bez keše vycházela na 10 minut.
Minule jsem psal, že je to strašných 10 minut, ale v kontextu reálných dat z minulosti to je vlastně dvojnásobné zrychlení.</p>
<p>Prvních několik dní jsem předělával, jak funguje keš na celém junior.guru.
Používám <a href="https://grantjenks.com/docs/diskcache/">DiskCache</a>, ale doteď jsem to měl naplácané nějak pouze do jedné části kódu a nebylo to moc obratné.
Vytáhl jsem si to do separátního modulu a mohu teď kešovat cokoliv a kdekoliv, pomocí chytrého dekorátoru.
Když už jsem se rýpal do různých částí kódu, přidal jsem někam i <a href="https://tenacity.readthedocs.io/">tenacity</a>, o kterém jsem psal minule.</p>
<p>Když jsem myslel, že mám vyhráno, uvědomil jsem si, že na CI mi vlastně vše jede paralelně.
To znamená, že se v jednom buildu vytvoří několik paralelních keší a pak je potřeba je nějak spojit, pokud s tím chci pracovat dál.
DiskCache pracuje na bázi souborů a SQLite, takže jsem se (už zase) dostal do situace, kdy v podstatě sharduju SQLite databázi.
Koukal jsem na <a href="https://fedi.simonwillison.net/@simon/111054918019075740">jednu věc, kterou dřív zmiňoval Simon Willison</a>, ale zavrhl ji, protože vypadala složitě.</p>
<p>Na CI už nějakou hloupou implementaci slepování paralelně vzniklých SQLite databází mám.
Tím, že už jsem to jednou řešil, myslel jsem si, že to nebude zas takový problém.
SQLite jako SQLite, ne?
Jenže to problém byl.
DiskCache tam má nějaké triggery a prapodivné tabulky bez primárních klíčů (jakési „rowid“ tabulky, vůbec jsem nevěděl, že to jde), prostě samé speciality.
Na tohle moje slepování SQLite databází připraveno nebylo.
Takže jsem se s tím patlal celý jeden pracovní den, než se mi to povedlo nějak rozběhat.
Jak tu keš teď dost používám a je v ní hodně záznamů, trvá pak slučování těch databází docela dlouho, ale to budu řešit zas někdy jindy.
Povedlo se, to je důležité, hurá!</p>
<p>Jenže se mi pořád znova a znova posílaly všechny inzeráty na OpenAI API.
Trvalo mi docela dlouho, než jsem si všiml, že mám překlep v cestě a celá keš se mi kvůli tomu někde uprostřed buildu spláchne a nikam se nepřenese, takže se pak vše vytváří nanovo.</p>
<p>Pak mi Dependabot vytvořil několik Pull Requestů na dependencies a uvědomil jsem si, že i v buildech pro Pull Requesty mi to pošle všechny inzeráty na OpenAI API, jelikož každá Git větev má svou vlastní keš.
No prostě mi každý půlden jen chodil e-mail o tom, jak si OpenAI strhlo z karty dalších $5 😅
Ale na všechno jsem nakonec vykutil nějaké řešení.</p>
<h2 id="kesovani-obsahu-klubu">Kešování obsahu klubu<small class="permalink"><a href="#kesovani-obsahu-klubu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Aby mohl můj bot dělat různé věci na základě dat z klubu, stahuje si obsah celého klubu do databáze.
To bohužel nejde moc optimalizovat, protože klub je realtime Discord chat, a co byla pravda před minutou, nemusí být pravda teď.
Stažení aktuálních dat přitom trvalo i déle jak 4 minuty.</p>
<p>S novou keší mě ale napadlo, že by to přece jenom nějak optimalizovat šlo.
Vymyslel jsem, že když se stahují kanály a zprávy, tak by se to mohlo ukládat do keše a znova by se pak už stahovaly jen věci za posledních pár týdnů (protože lidi mohou zprávy mazat nebo editovat i zpětně, ale řekněme, že to snad nedělají pro příliš staré zprávy).</p>
<p>Sliboval jsem si od toho velké urychlení a pracoval na tom skoro 1,5 pracovního dne v kuse.
Hodně jsem se s tím patlal a hodně jsem debugoval nějaké problémy, které jsem následně zjistil, že byly tím, že mi nějaký cizí kus kódu upravoval datové struktury pod rukama (pomohlo <a href="https://docs.python.org/3/library/copy.html#copy.deepcopy">deepcopy</a>).
Udělal jsem u toho i <a href="https://github.com/Pycord-Development/pycord/pull/2340">Pull Request do Pycordu</a>, když jsem si v něm četl kód a našel nesrovnalosti v typech.</p>
<p>No a po velkém programování jsem se s tím skripem dostal na 3 minuty!
To je jako sice velké zrychlení, ale ne takové zrychlení, aby to stálo za tu komplexitu.
Jsem z toho trochu rozpačitý a nevím, jestli to vlastně celé nezahodím, jelikož to může způsobovat i problémy.
Někdy to tak ale asi prostě je, že optimalizace nakonec není zas taková pecka, jak si člověk myslí.
Možná jsem měl ten kód víc zkoumat, než jsem ho šel optimalizovat.
Třeba bych přišel na to, že úzké hrdlo je někde úplně jinde.</p>
<p>Tohle byla jedna z těch věcí, které neměly vůbec prioritu, ale když mě z ničeho nic napadlo, jak to řešit, neubránil jsem se a hned jsem se do toho pustil.
Měl jsem si to jen někam zapsat a nechat na později, jako to běžně dělám.
Třeba by to nějak uzrálo, třeba bych to neudělal nikdy.
Takhle jsem to sice nadšeně udělal hned, ale bylo to vlastně k ničemu.</p>
<h2 id="pracovni-inzeraty-pres-ai">Pracovní inzeráty přes AI<small class="permalink"><a href="#pracovni-inzeraty-pres-ai" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když jsem měl vše kolem kešování vyřešené a opravené, nahodil jsem třídění inzerátů na produkci.
Chtěl jsem to sice nejdřív nějak zkoušet a analyzovat, ale nakonec jsem si řekl, že nebudu na nic čekat a prostě to tam napálím.
Přišlo mi, že už na tom dělám věčnost a nechtěl jsem strávit další týden nějakým opatrným zjišťováním, co by se dalo ještě ladit a opravovat.</p>
<p>Objevilo se hned přes 20 nových inzerátů.
Z 1.200, ehm, ale takhle to holt teď s juniorníma nabídkama je…</p>
<p>Každopádně moje mnohaleté tažení bylo úspěšné, konečně jsem to dotáhl.
Moje předpoklady, že LLM budou vhodné přesně na tento typ problému, se ukazují jako správné.
Scrapery na Apify, třídění na OpenAI, infrastruktura kompletně zjednodušená, tuny kódu smazány jako zbytečné, a celé je to teď ve stavu, že to mohu snadno rozšiřovat a vylepšovat dál a snadno udržovat.
Zároveň mám pocit, že se mi konečně po dlouhé době podařilo udělat něco „velkého“, co reálně pomůže juniorům.</p>
<p>Ještě jsem to pak trochu poladil, aby se největší nesmysly vytřídily ještě předtím, než se pošlou do OpenAI, ať mi zbytečně nelítají peníze vzduchem na jednoznačně seniorní nebo nerelevantní inzeráty.
To jsem udělal po jednoduché analýze nadipsů zhruba 1.200 stažených inzerátů, díky které jsem viděl, co má smysl odfiltrovat ručně, nesofistikovaně.</p>
<p>Zajásal jsem si <a href="https://discord.com/channels/769966886598737931/789046675247333397/1201545936338436187">v klubu</a>, <a href="https://mastodonczech.cz/@honzajavorek/111858166483999283">na Mastodonu</a>, i <a href="https://www.linkedin.com/posts/honzajavorek_ai-activity-7158927258647207936-ms70">na LinkedInu</a>.
Už to je na produkci druhý den a mě to pořád stejně silně těší.
Pořád z toho mám strašně dobrý pocit!</p>
<h2 id="oprava-scraperu">Oprava scraperů<small class="permalink"><a href="#oprava-scraperu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Mezitím jsem zjistil, že se mi zadrhly scrapery na Apify.
Bohužel jsem to zjistil náhodou a ne díky e-mailům z Apify.
Když jsem pátral, kam e-maily zmizely, tak jsem našel v nastavení notifikací cedulku, že tahle fičura byla zrušena 😀</p>
<figure class="figure"><img alt="Fičura zrušena" src="https://honzajavorek.cz/images/screenshot-2024-01-31-at-10-09-22.png" class="img-fluid figure-img rounded"></figure>
<p>Tak jsem jim k tomu něco napsal na Discord, protože takhle se to podle mě nedělá.
Teď mám tedy scrapery bez monitoringu, protože ani ručně nastavované alerty na Apify neumožňují nic poslat, pokud scraper selže na chybě.
Buď to nějak vrátí zpět, nebo si holt budu muset napsat skript, který to bude kontrolovat přes API.</p>
<p>Identifikoval jsem chyby, kvůli kterým scrapery padaly, a opravil je.
U něčeho stačilo prodloužit timeout, protože se asi po Vánocích objevil větší objem nabídek, u něčeho jsem opravoval přímo kód.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Měli jsme schůzi výboru Pyvce.
Zápis <a href="https://docs.pyvec.org/operations/meeting-notes.html">zde</a>.
Mám za úkol napsat advokátce a vyřídit s ní změny stanov.</li>
<li><a href="https://blog.zvestov.cz/">Luboš</a> nasdílel v klubu článek z <a href="https://newsletter.pragmaticengineer.com/">The Pragmatic Engineer</a> a moc mě to zajímalo, tak jsem si to na měsíc předplatil, abych si to mohl přečíst.
Přečtu si tam i jiné články.
Dlouhodobě to asi odebírat nebudu, přijde mi to spíš pro lidi, co někde pracujou, a ne pro renegáta, jako jsem já 😀</li>
<li>Reklama: <a href="https://ajtyvit.sk/">Aj ty v IT</a> (slovenské Czechitas) hledají někoho, koho by bavilo šťourat se v jejich Discordu a vylepšovat ho po technické stránce.
Takže různé automatizace přes Discord API, instalace botů, apod.
Je to na max. 20 hodin měsíčně.
Nemusíte mluvit slovensky.
Ideálně na fakturu.
Není to komuniťácká pozice, obsah si řeší samy, je to spíš technická pozice.
Pokud vás to zajímá, napište <a href="https://www.linkedin.com/in/veronikapizano/">Veronice Pizano</a>.
Nebo mně a já jí to přepošlu.</li>
<li>Volal jsem si 2 hodiny s dobrým kamarádem.
Probírali jsme jeho pohovory, moje plány, a celkově život.</li>
<li>Pavlína sestříhala jeden už dříve natočený díl podcastu a vydali jsme ho!
<a href="https://junior.guru/podcast/20/">Karolina Surma a Petr Viktorin o tom, jaké jsou začátky ve firmě z pohledu juniora a seniora</a>.
Podcast žije!
Ještě jsem si to nestihl pustit, ale moc se na to těším.
Vydání podcastu bylo obtížnější než obvykle, protože jsou v něm dva lidi.
Musel jsem ve <a href="https://www.photopea.com/">Photopea</a> vytvořit koláž z jejich fotek.</li>
<li>Volal jsem si s <a href="https://www.programhrovani.cz/">Vojtou Mádrem</a>, který mi dělá moderátora v klubu, a se kterým se vždy rád pobavím o obsahových projektech, programátorských komunitách, podcastech, a všem možném.
Dohodli jsme se, že by mi mohl systematicky pomáhat s jednou věcí v klubu.</li>
<li>Rozjel jsem manželce <a href="https://github.com/vcmi/vcmi">vcmi</a> a pak už jsem ji neviděl 😂</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.
Udělil jsem 2 stipendia, odpálkoval jednu firmu, domluvil si s jednou firmou kafe.</li>
<li>Za 8 dní jsem při procházkách nachodil 6 km. Celkem jsem se hýbal 5 h a zdolal při tom 6 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Vyberu a naplánuju klubové přednášky na rok 2024.
Jako fakt už.
Strašně to prokrastinuju!</li>
<li>Přidám podporu pro slovenštinu do třídění inzerátů.</li>
<li>Dám si pauzu od velkých úkolů a projdu si sloupeček v Trellu s drobnostmi, které dlouho odsunuju.
Mohl bych taky mrknout na nějaké automatizace v klubu, které dlouho odkládám.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://searchengineland.com/google-search-officially-retires-cache-link-437122">Google Search officially retires cache link</a><br>Zendulka zvítězil. Důvod, proč si mě tehdejší děkan FIT VUT zavolal na kobereček, po 14 letech konečně zmizí. Google Cache končí!</li>
<li><a href="https://zdopravy.cz/barierou-proti-parkovani-na-chodniku-praha-6-stavi-zabrany-za-statisice-192774/">Bariérou proti parkování na chodníku. Praha 6 staví zábrany za statisíce - Zdopravy.cz</a><br>Ano prosím.</li>
<li><a href="https://twitter.com/faborio/status/1725631676309463137">Peter Fabor (@faborio) on X</a><br>Tohle je skvělý. Mapa toho, kde jsou největší turistické pasti. Podle hustoty Euronet bankomatů.</li>
<li><a href="https://www.buzzsprout.com/2050364">43. Michal Kašpárek - spisovatel — KAM JDEŠ?</a><br>Škoda, že to nemá pět hodin.</li>
<li><a href="https://audioboom.com/posts/8427357">59: Ladislav Miko: Půda je živý organismus — 2050</a><br>Fakt borec, jak to dokáže podat! Parádní povídání o půdě, jak to v ní funguje, co v ní žije, a tak. Půda mě nijak zvlášť nevzrušuje, nemám ani zahrádku, ale tohle jsem si vážně užil.</li>
</ul></div></div></div></div>Týdenní poznámky: Scrapery a OpenAI API2024-01-26T00:00:00+01:002024-01-26T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2024-01-26:/blog/tydenni-poznamky-scrapery-a-openai-api/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-hory-a-scrapery/">posledních poznámek</a> už utekl nějaký ten týden (19. 1. až 26. 1.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/img-7403.jpg" class="img-fluid figure-img rounded"></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální …</p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-hory-a-scrapery/">posledních poznámek</a> už utekl nějaký ten týden (19. 1. až 26. 1.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/img-7403.jpg" class="img-fluid figure-img rounded"></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
</div>
<h2 id="apify-na-produkci">Apify na produkci<small class="permalink"><a href="#apify-na-produkci" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Dokončil jsem <a href="https://github.com/juniorguru/plucker">přesun scraperů na Apify</a>, opravil jsem jeden zásadní scraper, a pak jsem na Apify připojil produkci junior.guru.
Pracovní inzeráty se stahují z Apify API, místo aby se scrapovaly přímo u mně.
<a href="https://github.com/juniorguru/junior.guru/pull/1285">Výsledný Pull Request</a> odebral z kódu junior.guru skoro 21.000 řádků kódu a přidal 230.
To mi dělá ohromnou radost.</p>
<p>O jednotlivostech se asi nemá smysl moc rozepisovat.
Řešil jsem monitoring, cachování, no různé věci.</p>
<p>Klukům z Apify jsem dál koukal pod ruce, otravoval je na Discordu, a <a href="https://github.com/apify/apify-sdk-python/pull/178/">dokonce jsem se zapletl do jednoho code review</a>.</p>
<h2 id="openai-api">OpenAI API<small class="permalink"><a href="#openai-api" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Po přesunu scraperů jsem hned začal napojovat junior.guru na OpenAI API.
Chci pracovní inzeráty posílat GPT na vyhodnocení.
To se mi povedlo hned, s krásnými výsledky, jenže pak začala bitva o <em>rate limiting</em>.
Abych projel stovky inzerátů, nasázel je do GPT a dostal výsledky, potřebuju se nějak vlézt do limitů, které mi OpenAI dává.
<a href="https://mastodonczech.cz/@honzajavorek/111811236793735383">A to byl problém</a>.</p>
<p>Zkoušel jsem knihovnu <a href="https://pypi.org/project/openlimit/">openlimit</a>, která plus minus fungovala, ale nebyla v dobré kondici.
Musel jsem ji instalovat z nějakého forku apod.
Nakonec jsem to <a href="https://cookbook.openai.com/examples/how_to_handle_rate_limits">podle návodu přímo od OpenAI</a> předělal na <a href="https://pypi.org/project/tenacity/">tenacity</a>, což je pěkné, obecné řešení.</p>
<p>Ale stále to ještě ladím.
Hloupé je, že to párkrát spustím a je konec, dosáhnu limitu 10.000 požadavků na den.
Takže někdy na tom prostě musím v půlce přestat pracovat, jít dělat jiné věci, a pokračovat druhý den.</p>
<p>Jsem už schopen projet všechny inzeráty a dostat se na konec skriptu, ale celé to trvá 10 minut, což je příšerné.
Možná to tak ale budu prostě muset dělat.
Leda že bych našel <a href="https://replicate.com/">alternativní API</a>, kde to funguje jinak.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Sepsal jsem konečně <a href="https://honzajavorek.cz/blog/plan-na-q1-2024/">článek, kde jsou mé aktuální plány</a>.</li>
<li>Měl jsem rýmu a některé dny jsem pracoval z postele.</li>
<li>Byli jsme na LEGO výstavě.</li>
<li>Optimalizoval jsem, jak se v mém kódu pracuje s <em>asyncio loops</em>.
Místo procesů jsem vrazil vlákna a hned je vše rychlejší.</li>
<li>Řešil jsem, jak udělat <em>progress bar</em>, když mám hromadu <em>asyncio tasků</em> a posílám je do <em>asyncio.gather()</em>.
Našel jsem <a href="https://superfastpython.com/asyncio-tasks-show-progress/">toto milé řešení</a>, ale nakonec jsem to udělal stejně jinak (přes <em>asyncio.as_completed()</em>).</li>
<li>Připravil jsem podklady pro zpracování daňového přiznání.
Když už jsem lezl do všech účtů a stahoval dokumenty, spočítali jsme si s manželkou, kolik máme celkem peněz, což několikrát ročně děláme.</li>
<li>Podíval jsem se na nespárované platby ve Fakturoidu a spároval je.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.</li>
<li>Za 8 dní jsem se nevěnoval žádné sportovní aktivitě.</li>
</ul>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Doladím nějak třídění inzerátů přes LLM.
Ideálně pak smažu veškerý kód, který řeší třídění inzerátů teď.</li>
<li>Přidám podporu pro slovenštinu.</li>
<li>Vyberu a naplánuju klubové přednášky na rok 2024.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://audioboom.com/posts/8427357">59: Ladislav Miko: Půda je živý organismus — 2050</a><br>Fakt borec, jak to dokáže podat! Parádní povídání o půdě, jak to v ní funguje, co v ní žije, a tak. Půda mě nijak zvlášť nevzrušuje, nemám ani zahrádku, ale tohle jsem si vážně užil.</li>
<li><a href="https://blog.python.cz/jak-jsme-z-tezitek-udelali-uzitecne-notebooky-pro-zaky">Jak jsme z těžítek udělali užitečné notebooky pro žáky - Python v ČR bloguje</a><br>„Předem připravený návod na reinstalaci, ochota si maximálně pomáhat, dobrá káva a skvělá organizace celé akce udělaly z různorodé skupinky lidí, z nichž se někteří viděli úplně poprvé, dobře organizovanou pracovní sílu s jasným cílem, který se dařilo velice rychle plnit.“ „Až na pár strojů, které budou ještě vyžadovat speciální péči, se celá akce vydařila na výbornou a co bylo zbytečným těžítkem ve skříni, už opět slouží žákům.“ Síla Python komunity v praxi!</li>
<li><a href="https://simonwillison.net/2023/Dec/31/ai-in-2023/">Stuff we figured out about AI in 2023</a><br>Simon sepsal pěkné shrnutí toho, co jsme za rok 2023 zjistili o AI (respektive LLM)</li>
<li><a href="https://www.scopeofwork.net/tallow-to-margarine/">Tallow to Margarine</a><br>Zvířecí lůj. Najdete ho ve spoustě plastů, i v nových plastových bankovkách. A jak vlastně vznikl margarín?</li>
<li><a href="https://podcasters.spotify.com/pod/show/jolana-humplov/episodes/Glow-up-krajn-pravice--Stavidla-nenvisti-otevelo-11--z-2001-e2ejnvr">Glow up krajní pravice. Stavidla nenávisti otevřelo 11. září 2001 — PULS</a><br>Hodinová přednáška o krajní pravici, o jejím vzniku, důvodech vzniku, strategii, a o tom, proč je na vzestupu.</li>
<li><a href="https://denikn.cz/1329656/zbytecne-skodlive-naopak-spolecenske-vedy-a-absolventy-jejich-studia-potrebujeme-vic-nez-si-mnozi-uvedomuji/?cst=19c2e920f19e8e352de71a0b93cbab16ec5355b8c541245cca7a369adc42b4fd">Výsledky práce společenských věd jsou dnes potřeba naléhavěji než přírodovědné objevy a technické vynálezy</a><br>„Hlavní problémy lidstva dnes nevyřeší přírodní ani technické vědy samy o sobě. Můžete vymyslet sebelepší vakcínu proti pandemii, ale co je to platné, když se jí lidé bojí a odmítají ji? Můžete navrhnout mnoho dílčích technických řešení zmírňujících klimatickou krizi, ale k čemu jsou, když je neprosadíte proti krátkodobým zájmům velké části lidstva?“ „Společnost, nikoli příroda či technika, je dnes nejnaléhavější záhadou.“</li>
</ul></div></div></div></div>Plán na Q1 20242024-01-25T00:00:00+01:002024-01-25T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2024-01-25:/blog/plan-na-q1-2024/<div><div><div><div><p>Pravidelně se zamýšlím nad tím, co je na junior.guru důležité, čemu bych se měl prioritně věnovat.
Letos jsem se rozhodl udělat pár změn.
Jednak chci vzít v úvahu nejen to, zda je nějaký úkol důležitý, ale taky pro koho je důležitý.
A taky bych chtěl plány dělat na kratší …</p></div></div></div></div><div><div><div><div><p>Pravidelně se zamýšlím nad tím, co je na junior.guru důležité, čemu bych se měl prioritně věnovat.
Letos jsem se rozhodl udělat pár změn.
Jednak chci vzít v úvahu nejen to, zda je nějaký úkol důležitý, ale taky pro koho je důležitý.
A taky bych chtěl plány dělat na kratší období.</p>
<figure class="figure"><img alt="Plán na Q1 2024" src="https://honzajavorek.cz/images/sven-mieke-fter0e2bzko-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotka od <a href="https://unsplash.com/@sxoxm">Sven Mieke</a></figcaption></figure>
<p>Vloni jsem si udělal <a href="https://honzajavorek.cz/blog/strategie-na-2023/">velký plán na celý rok</a>, který jsem pak v létě <a href="https://honzajavorek.cz/blog/letni-pit-stop/">přehodnocoval a měnil</a>.
Myslím ale, že i půlrok se ukázal jako příliš dlouhá doba.
Tak zkusím plánovat po čtvrtletích.</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Plans are a good reference, but then pretty much every day you need to adapt and say, 'what does it mean for my next step and how much do I have to revisit the plan?'</p>
</blockquote>
<figcaption class="blockquote-footer"> Andrea Stella v <a href="https://www.autosport.com/f1/news/mclaren-setting-development-targets-not-results-as-its-f1-2024-goals/10564681/">rozhovoru pro Autosport.com</a></figcaption>
</figure><p>Bavíme se o lednu, únoru a březnu, přičemž konec ledna je v podstatě za týden.
Brzy po Vánocích jsem jel na hory a pak jsem sepsání plánu na blog trochu prokrastinoval…</p>
<p>V první řadě se neplánuji teď ničeho účastnit.
Jel jsem na dovolenou na hory a trochu jsem si tam odpočinul, to bylo fajn.
Chtěl bych se i dál ve volném čase soustředit spíš na sebe nebo na rodinu.
Bude <a href="https://prague.python.pizza/">Python Pizza</a>, kam mám lístek, ale kde záměrně nemám žádnou přednášku.
Většinu pracovního času bych chtěl věnovat soustředěné práci na produktu, ať už půjde o programování, nebo psaní.</p>
<p>Zásadní fenomény v roce 2024 budou z mého pohledu dva.
Jednak AI, jednak bude pokračovat obtížné hledání práce pro juniory.
Tím by se měl nějak zabývat i můj produkt.
Z hlediska technického posunu teď vidím jako prioritu zjistit, kolik věcí bych dokázal přesunout na <a href="https://apify.com/">Apify</a>, s čímž jsem si začal hrát už na konci minulého roku.</p>
<h2 id="finance">Finance<small class="permalink"><a href="#finance" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Na konci roku 2019 jsem založil junior.guru, 2020 to vydělalo 10.000 Kč/měs čistého, 2021 to vydělalo 20.000 Kč/měs, 2022 to vydělalo 40.000 Kč/měs a 2023 to vydělalo skoro 70.000 Kč/měs.
To je parádní.</p>
<p>Problém je, že nemám žádnou jistotu, zda jsem schopen tytéž peníze letos vydělat znovu (viz níže).
A vydělat je potřebuju, protože životní náklady nám pouze stoupají.
Letos bude manželce končit rodičovská, tak snad to pomůže.</p>
<p>Zvažuji dát si junior.guru na částečný úvazek a najít si vedlejšák, který by mi dal „jistoty“ a pomohl mi překlenout obtížnější období.
Dokonce mám i konkrétní nabídku.
Sejmulo by to ze mně i ze samotného junior.guru tlak na výdělek.
Zase bych musel žonglovat více prací a do života by mi to přineslo další závazky a ještě větší nesoustředěnost.
Rozhodnutý nejsem.</p>
<h2 id="produkt-pro-juniory">Produkt pro juniory<small class="permalink"><a href="#produkt-pro-juniory" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Počet členů klubu dlouhodobě klesá, za 2023 zhruba z 500 na 370.
Přičítám to ekonomické situaci (lidi šetří, do kariérních změn jdou opatrněji…) a situaci na trhu (startupy nedostávají investice, firmy šetří, nenabírají žádné lidi, natož juniory) v kombinaci se zdražením členství v klubu.</p>
<p>Když bylo členství levnější a ekonomika sluníčková, lidé nepřemýšleli tak moc, zda se jim členství v klubu vyplatí.
Teď si dobře rozmyslí, jakou hodnotu za to mají.</p>
<p>Byť si myslím, že klub řeší hodně lidem spoustu problémů jako nic jiného na českém trhu, neumím to úplně dobře prodat a zároveň ani to za současné situace nemusí být pro dostatečné množství lidí dostatečná „tvrdá“ hodnota, za kterou chtějí platit.</p>
<p>Mám nějaké nápady, co by s tím šlo dělat.
Když se ale ohlédnu, tak ty nápady mám dlouho.
Problém je, že se jim nevěnuji.
A v tom je myslím zakopaný pes.</p>
<p>Tlak na výdělek způsobuje, že se několik let primárně zabývám tím, co brzdí můj úspěch a moje zisky.
Když uvažuju nad tím, co je důležité a když si plánuju úkoly, prioritu mají věci, které vnímám jako problém já.</p>
<p>Jenže juniorům ve skutečnosti moc nepomůže vylepšená statistika předplatných nebo nový ceník pro firmy.
Oni to strpí, chápou, že to je asi nutné, aby junior.guru mohlo existovat, ale přímo jim to nijak nepomáhá.</p>
<p>Takže co kdybych se zkusil zase začít soustředit víc na jejich problémy?
Jak si nastavit GitHub, jak se naučit s AI, jak od EU dostat 50.000 Kč na kurz, nebo jak si sehnat i na současném trhu práci?
Nic z toho teď junior.guru moc dobře neřeší.</p>
<p>Vrátím se ke kořenům a budu řešit juniorům jejich problémy.
To je totiž důvod, proč mají lidi junior.guru rádi, nebo proč platí za klub.</p>
<h2 id="produkt-pro-firmy">Produkt pro firmy<small class="permalink"><a href="#produkt-pro-firmy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Co se týče partnerství s firmami, po 3 letech vymýšlení, iterování a ověřování na trhu jsem stále v situaci, kdy <em>de facto</em> nemám žádný dobrý produkt:</p>
<ul>
<li>Nejfunkčnější je <a href="https://cs.wikipedia.org/wiki/Spole%C4%8Densk%C3%A1_odpov%C4%9Bdnost_firem">CSR</a>, kdy se firmě líbí co dělám a chce to podpořit.
Takto mi poslalo peníze jednoznačně největší množství partnerů.
Stačilo jim logo někde na webu a ani jim nevadilo, že si to neodepíšou z daní, protože nejsem neziskovka.
Je to krásné a jsem za to vděčný, ale nevím, zda to dokážu přijmout za své jako „produkt“.
A jistota, že firma, která takto pošle peníze, pošle ty samé peníze i za rok, je prakticky nulová.</li>
<li>Zapojení do komunity, prodej vstupů do klubu, umožnění přednášení pro juniory, propagace firemních akcí apod. je produkt pro možná jednotky firem, které jsou toho všeho aspoň trochu schopny.
Všem to pouze přidělává práci a když jde o juniory, je z toho pro firmu malá návratnost, v podstatě je to jen namáhavější forma onoho CSR.</li>
<li>Inzerce práce je mrtvá, nábor juniorů je mrtvý.
Kdo juniory dnes najímá, nebude za to ještě platit.
Někdo by i najímat a platit chtěl, ale nemá z čeho, protože mu zkrouhli <em>budget</em>.
Firmy šetří, mají <em>hiring freeze</em>, apod.
Možná toto bude zajímavý příjem, až se ekonomika zase rozjede, ale teď nemá vůbec smysl se téhle věci nějak víc věnovat.</li>
<li>V ceníku máme v nejvyšším tarifu i pozvání do podcastu.
Ten teď vychází méně než 12x ročně a já si nejsem jistý, zda ještě chci do budoucna takto exkluzivní prostor nějak prodávat, místo abychom si hosty řešili kompletně sami.
Už teď je to velmi omezeno, záměrně se to dá koupit pouze velmi draho.
Provedené spolupráce dopadly dobře, ale domluvit s firmami, aby od nich někdo do podcastu šel, a aby to dobře opravdu dopadlo, bylo nakonec docela dost energie a času.
Jiné firmy zase spamují podcasty a chtějí do nich protlačit svoje lidi v rámci marketingu.
Takový požadavek mi chodí každou chvíli.
Mohl bych prodávat epizodu za menší desítky tisíc, to by možná zaplatili, ale to bychom museli dělat mnohem víc epizod, např. 1x za týden či dva, a to nechceme, ten podcast je hobby.
A výsledkem by bylo něco ve stylu deníku Metro, který se sice rozdává zdarma, ale jsou tam dvě strany článků na osm stran reklam.
Brrr.</li>
<li>Zvýrazňování poskytovatelů kurzů v <a href="https://junior.guru/courses/">katalogu</a> se zatím moc nechytlo.
Jednak je pro kurzy teď důležitější <a href="http://jsemvkurzu.cz">jsemvkurzu.cz</a>, jednak jsem katalog vytvořil, ale dál nevyvíjel.
Chybí tam i nejzákladnější funkce, je to v podstatě stále prototyp.
Ten prototyp ale stačil k tomu, že jsem si volal hned s několika poskytovateli kurzů a o partnerství vyjednával.
Vyšlo mi z toho, že to možná nechci dělat.
Chci, aby junior.guru byla nezávislá platforma a přijmutí vzdělávacích agentur jako klientů, kterým něco prodávám, je bruslení na tenkém ledě.
Byla by to spousta komunikace a spousta vyvažování toho, co chtějí a co jsem ochotný jim dát, aby už to nebylo příliš.
Vlastně mě to moc nebaví.
Raději bych jim šel tak trochu po krku a hledal, v čem jednají nečestně, když se tak děje, než abych jim prodával prostor na svém webu.
A oboje mít nejde.</li>
</ul>
<p>Firmy tvoří 50 % mých příjmů a jak jsem psal, vydělal jsem docela dost.
Jenže to bylo hlavně přes CSR, nebo nějaké úplné haluze.
Např. GFA, kteří mi vloni poslali 80.000 Kč, <a href="https://www.greenfoxacademy.cz/post/nas-pribeh-je-u-konce">letos už neexistují</a>.</p>
<p>Nemám produkt, který by firmy vyloženě chtěly a potřebovaly.
A hledání toho produktu mě po těch letech unavilo do té míry, že si letos nejsem ani jistý, zda ten produkt ještě hledat chci.
Když cílím na dva různé zákazníky, moje pozornost je roztříštěná a motivace nejasná.</p>
<p>Nabídnu nějaký jednoduchý CSR produkt za příjemnou cenovku, a nebudu to dál řešit.
Budu se soustředit na juniory jako na své primární klienty, a tím se možná vše zjednoduší a zpřehlední.</p>
<p>Když se v budoucnu objeví nějaká pecka, něco co do junior.guru zapadne jako dílek puzzle, tak se tomu bránit nebudu, ale aktivně se nebudu dál zabývat tím, jak mít funkční produkt pro firmy.</p>
<h2 id="plan">Plán<small class="permalink"><a href="#plan" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Nějaké <strong>TL;DR</strong> odstavců výše by vypadalo asi takto:</p>
<ul>
<li>Programovat a psát, nerozptylovat se akcemi a spolupracemi.</li>
<li>Soustředit se na problémy lidí, kterým chci pomáhat, ne na svoje problémy.</li>
<li>Přestat aktivně hledat produkt pro firmy.</li>
</ul>
<p>Teď konkrétní úkoly:</p>
<ul>
<li>Vytvořím nebo aspoň vymyslím MVP profilů kandidátů</li>
<li>Dopíšu kapitoly v příručce: LinkedIn, Git, GitHub</li>
<li>Přesunu scrapery pracovních inzerátů na Apify a začnu je třídit přes <a href="https://en.wikipedia.org/wiki/Large_language_model">LLM</a></li>
</ul>
<p>Bonusy:</p>
<ul>
<li>Vydám další <em>success stories</em> na web</li>
<li>Automatizace v klubu (povídání, týdenní plány…)</li>
<li>Vyberu a domluvím klubové přednášky na rok 2024</li>
</ul>
<p>Je konec ledna a já už mám přesunuté ty scrapery a pracuju na tom, aby inzeráty třídil LLM, takže to už si pomalu začínám odškrtávat.
Na zbytek jsem zatím nesáhl.
Tak hurá do práce!</p></div></div></div></div>Týdenní poznámky: Hory a scrapery2024-01-19T00:00:00+01:002024-01-19T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2024-01-19:/blog/tydenni-poznamky-hory-a-scrapery/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-vanoce/">posledních poznámek</a> už utekl nějaký ten týden (5. 1. až 19. 1.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Zima" src="https://honzajavorek.cz/images/img-7181.jpg" class="img-fluid figure-img rounded"></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální …</p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-vanoce/">posledních poznámek</a> už utekl nějaký ten týden (5. 1. až 19. 1.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Zima" src="https://honzajavorek.cz/images/img-7181.jpg" class="img-fluid figure-img rounded"></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
</div>
<p>Minulý týden jsme s rodinkou odjeli do Jeseníků, takže jsem se neobtěžoval sepisovat poznámky za dva pracovní dny.
Na horách jsem si hezky mentálně odpočinul.
Fyzicky moc ne, protože jsme tam jednak trochu pařili s kamarády, jednak jsem se prošel v celkem rychlém tempu na Šerák, nebo jsem fungoval jako tažný tvor pro boby.
Velmi pozitivní je, že jsem nebyl nemocný.
Z toho se vážně raduju a hned má člověk víc sil něco dělat, a ne jenom přežívat.</p>
<h2 id="plucker">Plucker<small class="permalink"><a href="#plucker" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Vyšíval jsem dále na novém repozitáři, do kterého stěhuju scrapery z junior.guru, a jenž jsem pojmenoval <a href="https://github.com/juniorguru/plucker">Plucker</a>.</p>
<ul>
<li>Prozkoumal jsem monitoring v Apify a nastavil jej u svých scraperů, ale <a href="https://github.com/juniorguru/plucker/issues/13">možná to udělám nakonec stejně jinak</a>, protože potřebuji hlídat i jiné věci a ty zase lze hlídat jen z kódu.
Aspoň mi Apify pošle e-mail, když scraper selže.
Aby scrapery ve Scrapy selhaly s exit kódem 1, to jsem taky musel vyzkoumat, jak to udělat.</li>
<li>Povedlo se mi díky <a href="https://github.com/apify/actor-templates/pull/260/files">změnám na jejich straně</a> použít proxiny z Apify.
Přes proxy jedou dva moje hlavní scrapery na stahování pracovních inzerátů, takže je to pro mně důležité.</li>
<li>Doplnil jsem do Pluckeru CLI, které umožňuje v projektu řešit i něco jiného, než pouze scrapování.
Musel jsem při tom výrazně ohnout původní šablonu od Apify.
Mám tam teď CLI přes <a href="https://pypi.org/project/click/">click</a>, kde je jak příkaz pro spuštění scraperu, tak příkaz např. pro vygenerování schéma pro Apify actor z kódu, abych to nemusel psát ručně.</li>
<li>Vymazlil jsem na repozitáři testy, přidal <a href="https://pypi.org/project/ruff/">ruff</a> a sepsal README.
Díky <a href="https://pypi.org/project/pytest-ruff/">pytest-ruff</a> mohu vše zkontrolovat jedním příkazem.
Opsal jsem celé kolečko, od dřívějšího akademického „mazlení“ se s repozitáři, přes pozdější podnikatelské „odbývaní“, po dnešní opětovné „mazlení“ s vidinou toho, že do kódu bude časem třeba schopen přispět i někdo jiný.</li>
<li>Přesunul jsem do repozitáře tři další scrapery z hlavního kódu junior.guru a vyladil je tak, aby fungovaly.
Nakonec jsem odstranil Levelsův <a href="https://remoteok.com/">RemoteOK</a>, protože byl nějaký rozbitý a přišlo mi, že vlastně nemá smysl jej opravovat.
Dlouhodobě na něm nejsou nabídky relevantní pro české (nebo slovenské) juniory.
Pokud si mám vybrat, čemu věnovat čas, tak raději stáhnu Profesiu, než udržovat funkční scraper s takto minoritním dopadem.</li>
<li>Přesunul jsem do repozitáře hromadu testů a ještě nějaké Scrapy pipelines, které filtrují výsledky, např. zda jim něco nechybí, nebo podle toho, zda jsou v relevantním jazyce.
Musel jsem vymyslet, jak to udělat tak, aby se určité pipelines pouštěly jen pro určité scrapery a pro jiné zase ne.</li>
<li>
<p>Posílal jsem zpětnou vazbu CTO Apify (řekl si o ni), zakládal jsem jim na GitHubu různá issue a na Discordu jsem reportoval problémy s GitHub integrací.
Nevím, jestli z toho mají radost, nebo je tím už otravuju 😀
Nejspíš to zjistím na <a href="https://prague.python.pizza/">Python Pizza Prague</a>, které bude v jejich kancelářích.
Příklad toho, co jsem jim psal:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Teď dělám něco s actory a už poněkolikáté mě napadlo, že by se mi líbilo, kdybych mohl všechno, co jde udělat přes UI na webu, mít v nějakém JSONu/YAMLu/TOMLu (JSON nemám moc rád, protože tam nejde mít komentáře) as code přímo v repozitáři. Nejsem moc zkušený v ops a nevím, jak přesně fungují Ansible, Terraform, a spol., ale představoval bych si to tak, že když si naklikám u vás na webu Alert u Actora, tak se to propíše do nějakého konfiguráku v repu, a když ten konfigurák změním, tak se propíše do Actora ve vaší platformě. Měl bych pak dojem, že to mám víc pod kontrolou, zazálohované, že Actor je něco, co mohu snadno sundat a nahodit znova vedle, bez velkého klikání. Ale možná je to jen tím, že jich chci mít víc, třeba má váš běžný uživatel dva, tři, a bylo by mu to na nic.</p>
</blockquote>
</figure><p>Největší problém ale je, že mi na Apify vůbec nefungují automatické buildy actorů na základě webhooků z GitHubu.
<a href="https://discord.com/channels/801163717915574323/1183092714737254523/1197123079340572705">Popsal jsem to k nim na Discord</a>, tak uvidím, jestli to nějak opraví.
Možná by to šlo nějak obejít <a href="https://docs.apify.com/api/v2/#/reference/actors/build-collection/build-actor">přes API</a>, ale byl bych raději, kdyby jim to fungovalo 😉</p>
</li>
</ul>
<p>Co ještě chybí?</p>
<ul>
<li>Musím opravit jeden scraper, který v současné chvíli nefunguje dobře.</li>
<li>Měl bych jít do hlavního kódu junior.guru a přehodit zdroj inzerátů z lokálního Scrapy na API z Apify.</li>
<li>Pak to nechám chvíli běžet a budu pozorovat, jak to funguje.
Mezitím mohu procházet hlavní kód a postupně mazat tuny a tuny nyní zbytečného kódu.</li>
</ul>
<p>A proč to vlastně dělám?
Po přesunu na Apify se mi umožní následující:</p>
<ul>
<li>Můžu rozšířit záběr stahovaných inzerátů.
Scrapery bude moci vytvářet nebo opravovat i někdo jiný než já.</li>
<li>Můžu zapojit AI a zjednodušit díky tomu filtrování na juniorní inzeráty.
V souvislosti s tím můžu taky konečně přidat podporu pro slovenčinu.</li>
<li><strong>Ve výsledku budou mít k dispozici členové klubu a návštěvníci webu více relevantních inzerátů, než dnes.</strong></li>
</ul>
<p>Začal jsem si pro vývoj Pluckeru <a href="https://github.com/juniorguru/plucker/issues">vytvářet issues na GitHubu</a>.
Uvidím, jak mi to bude vyhovovat, protože jsem zvyklý koukat spíš do svého Trella.
Když ale budou úkoly sepsané externě, existuje možnost, že mi s nimi někdo pomůže.</p>
<h2 id="dan-milek-tinuki">Dan, Milek, Tinuki<small class="permalink"><a href="#dan-milek-tinuki" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Viděl jsem se zvlášť s Danem a s Milkem, moderátory z klubu a aktivními účastníky komunity.
Probrali jsme všechno možné, samozřejmě klub, ale i život, a tak.</p>
<p>S oběma jsem probral své nápady ohledně toho, jak by měly vypadat profily juniorů na junior.guru.
Milek teď hodně táhne aktivitu v klubu, čehož si dost vážím.
Organizuje pondělní povídání, na které se připojuje i desítka lidí a kecají tam skoro do půlnoci.
Kromě toho dělá i týdenní plánování a dlouhodobě se také pokouší v klubu rozjet různé projektově orientované <em>coding challenge</em>.</p>
<p>Taky to vypadá, že si členové klubu sami zorganizují sraz po <a href="https://prague.python.pizza/">Python Pizza Prague</a>, na který pouze dorazím 😀</p>
<p>Taky jsem si psal s Tinukim, který mi pomáhá nahrávat přednášky.
Což mi připomíná, že jsem stále nenaplánoval přednášky na nový rok, a to už je skoro konec ledna 🙈</p>
<h2 id="terapie">Terapie<small class="permalink"><a href="#terapie" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Konečně jsem dotáhl hledání psychoterapie.
Zkusil jsem dvě paní a vybral tu druhou.
Uvidím, jaké to bude a jak dlouho tam budu chodit, ale mám z toho dobrý pocit.</p>
<p>Každému bych doporučil zkusit aspoň dva různé lidi, ať má nějaké srovnání, aspoň nějaký základní <em>benchmark</em>, co čekat a jak to může vypadat.</p>
<p>Paradoxem celé mojí předchozí snahy zúžit nekonečný seznam terapeutů např. podle místa výkonu je to, že paní, kterou jsem vybral, se den před mým „nástupem“ neplánovaně přestěhovala z Prahy 3 na Prahu 1 a budu k ní dojíždět 😂
Ale tak jednička pořád lepší než někam za řeku, to bych asi vzdal.</p>
<h2 id="film2trello">film2trello<small class="permalink"><a href="#film2trello" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Přepsal jsem si ve volném čase <a href="https://github.com/honzajavorek/film2trello">film2trello</a> do Telegram bota a zdá se, že to nějak funguje.
Hned jsem tam použil pro mě nové věci, např. <a href="https://pypi.org/project/ruff/">ruff</a> nebo <a href="https://pypi.org/project/httpx/">httpx</a>.
Má to ještě nějaké mouchy, ale po návratu z hor jsem na to neměl čas sáhnout.
Po večerech se dá programovat jen pokud to nedělám ve dne, a já se pak už hodně věnoval těm scraperům.</p>
<p>S přepisováním mi dost pomohl GitHub Copilot.
Potřeboval jsem v zásadě stejnou logiku předělat ze synchronního kódu do asynchronního, nebo z requests do httpx.
Na tohle bylo AI úplně super, jen jsem mačkal tab a doplňovalo to kód za mně.
Nemusel jsem složitě studovat dokumentaci, jak udělat totéž, ale vlastně jinak.</p>
<p>Použil jsem i GitHub Copilot chat.
Nejlepší je to na takové ty věci, které jakoby vím, ale musel bych je dlouho hledat a složitě něco studovat.
Např. „jak nastreamuju obrázek z httpx knihovny přímo do Pillow image?“
Když vidím, co mi to vymyslelo, tak od oka dokážu posoudit, jestli to je blbost, nebo ne.
A jo, dokázal bych to vymyslet i sám, ale zabralo by mi to - se vším všudy - třeba hodinu.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Zjistil jsem, že máme chybu na webu Pyvce.
Vytvořil jsem issue a nasdílel jej na Pyvec Slacku a na junior.guru Discordu.
A jeden z „mých“ juniorů <a href="https://github.com/pyvec/pyvec.org/pull/385">to opravil</a>!
Super.</li>
<li>Začal selhávat můj monitoring počtu followerů.
Při opravě jsem zjistil, že LinkedIn to číslo zcela odebral ze všech stránek, které nejsou za loginem.
<em>Hajzli jedni!</em>
Nedá se pro teď nic dělat, zjišťování počtu sledujících na svém osobním LinkedIn profilu jsem pro teď zakomentoval a nestahuje se.
Třeba v budoucnu zas něco vymyslím.</li>
<li>Díky Martinovi a Jožovi za pomoc s Albi tužkou.
Výsledkem bádání je, že udělat správně USB-C konektor je složitější záležitost, a na Albi tužce je prostě udělaný blbě.
Takže při spojení USB-C/USB-A funguje správně, ale USB-C/USB-C prostě fungovat nebude.
Řešení je používat USB-C/USB-A s redukcí z USB-A do USB-C, což je samozřejmě padlé na hlavu, ale bohužel je to tak.</li>
<li>V klubu jsem uklidil roli na Advent of Code a vyvtořil novou na další rok.</li>
<li>Opravil jsem <a href="https://github.com/honzajavorek/czech-political-parties/">czech-political-parties</a>, stačilo upgradovat závislosti.</li>
<li>Pomohl jsem trošku shánět účetní pro Pyvec, ale můj kontakt nevyšel.
Naštěstí se zdá, že vyjde něco od Anežky.</li>
<li>Skončila mi pravidelná léčba, juchů.
Zda vůbec s něčím pomohla, to se uvidí.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.
Hodně času jsem věnoval čtení klubu po Vánocích a dohánění všech dalších komunikačních restů.</li>
<li>Za 15 dní jsem při procházkách nachodil 6 km, na túrách nachodil 16 km. Celkem jsem se hýbal 14 h a zdolal při tom 22 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Sepíšu na blog plán na Q1.</li>
<li>Vyberu a naplánuju klubové přednášky na rok 2024.</li>
<li>Připravím podklady pro daňové přiznání.</li>
<li>Přepojím junior.guru z lokálních scraperů na Apify API.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://wp.streetofcode.sk/podcast/2023-co-bolo-a-co-bude/?utm_source=rss&utm_medium=rss&utm_campaign=2023-co-bolo-a-co-bude">Ep. 114 – 2023 – Čo bolo a čo bude — Street of Code</a><br>Zjevně to nemá jednoduché nikdo s malými dětmi. Já píšu poznámky na blog, kluci ze Street of Code nahráli podobně upřímné ohlédnutí za svým posledním rokem.</li>
<li><a href="https://www.youtube.com/watch?v=mpQUDxoQUyU">Github Is Changing</a><br>„GitHub embracing AI is fine. GitHub embracing AI explicitly at the cost of ignoring the whole reason their platform exists is very very bad.“</li>
<li><a href="https://www.youtube.com/watch?v=_3xlzCP4PA8">What riding a high skinny looks like from my POV 👀 #mtb #streettrials #bmx</a><br>Masakr.</li>
<li><a href="https://tonybaloney.github.io/posts/python-gets-a-jit.html">Python 3.13 gets a JIT</a><br>Pěkný článek, který jednoduše vysvětluje docela složitou věc.</li>
<li><a href="https://www.simpleanalytics.com/blog/google-settles-in-5-b-incognito-mode-lawsuit">Google Settles in $5B Incognito Mode Lawsuit</a><br>„According to the Court, Google knew that consumers misunderstood what Incognito mode does. In other words, the company was aware of the ambiguity and took advantage of it.“</li>
<li><a href="https://www.are.na/block/25566801">8dd7445e203de5336871e6bbb9755a1f.pdf — Are.na</a><br>Grafický manuál F1 má 205 stran.</li>
<li><a href="https://www.mimoagendu.cz/untitled-3/">Státní pokladna a manželství pro všechny</a><br>„Rodiče mi říkali, že možná dostanu svou první výplatu v eurech. Po vstupu byli lidé, co se týče evropského společenství, podstatně optimističtější. Dnes bych byl šťastný, kdyby první výplatu v eurech dostalo třeba mé dítě. Jednu generaci jsme v otázce integrace do Evropy přeskočili kvůli hloupým obstrukcím lidi, kteří snad už brzy definitivně odejdou z politické scény.“</li>
<li><a href="https://zdopravy.cz/misto-magistraly-mestska-trida-se-stromoradim-na-promene-se-bude-podilet-i-pleskot-189667/">Místo magistrály městská třída se stromořadím. Na proměně se bude podílet i Pleskot - Zdopravy.cz</a><br>Už aby to bylo.</li>
</ul></div></div></div></div>Týdenní poznámky: Vánoce2024-01-05T00:00:00+01:002024-01-05T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2024-01-05:/blog/tydenni-poznamky-vanoce/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-dalsi-nemoci-anglictina-a-pruzkum-apify/">posledních poznámek</a> už utekl nějaký ten týden (22. 12. až 5. 1.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-dalsi-nemoci-anglictina-a-pruzkum-apify/">posledních poznámek</a> už utekl nějaký ten týden (22. 12. až 5. 1.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
</div>
<p>Pozitivní informace hned na začátek: Přes Vánoce jsem byl zdravý!
Odjeli jsme k babičce a tam jsem měl možnost zrelaxovat.
Odpočinul jsem si od práce i všech dalších povinností.
Myslím, že mi to prospělo a po svátcích jsem se vrátil do života o něco silnější.
Taky jsem měl sílu a čas udělat si pár přemýšlecích procházek po polích a lesech.</p>
<h2 id="plany-na-2024">Plány na 2024<small class="permalink"><a href="#plany-na-2024" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Přes svátky jsem hodně přemýšlel.
Jak o životě, tak o práci, o junior.guru a jeho směřování, o rozbitém pracovním trhu, AI, o klesajících grafech, o mém psychickém zdraví, stresu, atd.</p>
<p>Koukám na grafy na junior.guru a jsem z nich smutný.
Pamatuju si, jak počet členů v klubu útočil na 500.
Teď je jich 371.
Nejhorší na těch grafech ale stejně je, že zase vidím chyby v jejich implementaci, přitom jejich přepsání mi vloni zabralo tolik úsilí a času.
Já je snad úplně smažu nebo co.
Aspoň mě nebudou stresovat.</p>
<p>Ale zpět k věci.
Z nějakého toho přemýšlení a rozjímání jsem si už udělal závěry, něco je asi na delší trať.
Každopádně mám krátký odrážkový seznam věcí, které bych chtěl na junior.guru udělat ve Q1.
Od loňska jsem se poučil, že rozhodně nemám plánovat na rok dopředu, a že i půlrok je nějak příliš.
Takže čtvrtletí.</p>
<p>Zatím to sem ale nepíšu, protože nad tím jednak ještě trochu přemýšlím, jednak to bude přece jenom lepší do separátního článku, ať nejsou tyto poznámky zbytečně dlouhé.</p>
<h2 id="studie">Studie<small class="permalink"><a href="#studie" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Přes Vánoce jsme domluvili termín callu, na kterém se dovím já a můj tým z junior.guru (moderátoři) závěry studie mezi career switchery.
Pak jsme si ještě ujasnili okruhy, které nás zajímají nejvíc.</p>
<p>Call jsme měli dnes večer a bylo to výživné.
Určitě nelituju vynaložených prostředků a času.
Nebylo to nic pecka objevného, mnoho z těch věcí ze své praxe v klubu známe, ale bylo to z jiného úhlu pohledu, v jiném rámci, nějak uspořádáno a vyloženo.
Mnoho ze zmíněných věcí do junior.guru půjde nějak zakomponovat.
Mnoho z nich mám někde jako zapadlou kartičku v Trellu, ale nový pohled tomu může dát prioritu.</p>
<p>No, jsem zvědavý, jestli na základě tohoto callu, poznámek, které jsem si udělal, a nově nabytých vědomostí a kontaktů dokážu s tou studií nějak pracovat a aplikovat to, nebo jestli to vyšumí.</p>
<h2 id="apify">Apify<small class="permalink"><a href="#apify" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Dál jsem si hrál s Apify.
Přes Vánoce se mi povedlo stáhnout ukládaná data přes <code>apify-client</code> a použít na junior.guru.
Zatím jen na zkoušku pro stahování kurzů měn z ČNB, což je zcela nepodstatná funkce junior.guru, kterou tam mám kvůli jedné malé kravině.
Ale právě proto je to dobrý test.
Zatím vše funguje, takže je jen otázka času, než stejným způsobem přesunu na Apify další věci, především scrapery nabídek práce, kde to samozřejmě dává úplně největší smysl.</p>
<p>Předtím se ale ještě musím naučit použít na Apify jejich proxiny.
Zatím to nešlo, ale za mého velkého fandění Vláďa Dušek přes svátky <a href="https://github.com/apify/actor-templates/pull/260">podporu pro proxy do Apify klienta a do Scrapy šablony přidal</a>.
Taky se mi ozval Marek Trunkát, CTO Apify, že je rád, že i někdo z Česka staví něco nad Apify a jestli jim dám zpětnou vazbu na <em>developer experience</em>.</p>
<p>Protože jsem sledoval <em>code review</em>, když přidávali podporu pro proxy, a všiml jsem si tam malého úkolu, který chtěli udělat, napadlo mě jednou večer, že v rámci relaxu bych to mohl udělat jako open source příspěvek, když už se mnou tak pěkně komunikují.
Nakonec se mi to nepovedlo dokončit, ale i tak jsem to <a href="https://github.com/apify/apify-sdk-python/pull/161">vykopl do PR</a> a třeba to někomu pomůže.
Sám jsem se při tom hned něco naučil, např. že <a href="https://pypi.org/project/ruff/">ruff</a>, o kterém vím, že existuje, ale nepoužívám ho, umí i formátovat kód a má zakomponované i věci jako <a href="https://pypi.org/project/isort/">isort</a>.</p>
<p>Musím říct, že největší problém v komunikaci s Apify je přeučit se, že po písmenech Api- následuje -fy a ne -ary.
Zvyk je železná košile a tahle slova jsou si až příliš podobná 😅</p>
<h2 id="poc-profilu-junioru">PoC profilů juniorů<small class="permalink"><a href="#poc-profilu-junioru" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Rozhodl jsem se začít tvořit profily juniorů na junior.guru, aby si mohli snadněji shánět práci.
Měl jsem to už dlouho vymyšlené.
Základem byly role na Discordu.</p>
<p>Ve čtvrtek jsem si vytyčil úkol zhruba na hodinu, že si informace z rolí uložím do databáze.
Základní kámen celé věci.</p>
<p>Po 3-4 hodinách hledání, psaní na různá fóra, čtení kódu a <em>reverse-engineeringu</em> Discord API jsem naznal, že to, co jde vidět v Discord aplikaci, tam prostě není a nemám se to jak dovědět.
Takže jsem nenaprogramoval nic a zpět ke kreslícímu prknu.</p>
<h2 id="terapie">Terapie<small class="permalink"><a href="#terapie" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Chtěl jsem si konečně sehnat nějakou psychoterapii, takže jsem mkrnul na <a href="https://czap.cz/adresar">czap.cz/adresar</a>, který mi někdo doporučil.
Bohužel vyhledávání a filtrování mi tam vůbec nevyhovovalo.
V Praze je hromada terapeutů a abych tam mohl chodit pravidelně, chtěl jsem se omezit pouze na ty, kteří jsou poblíž bydliště nebo kanceláře.
Bohužel tak detailní filtrování tam není.
Nezbylo než si vyhrnout rukávy…</p>
<p>Dal jsem tomu zhruba hoďku a jo, nějak to šlo, takže další hoďku jsem to ladil a za jeden večer jsem si takhle přes Python scrapnul celý ten katalog.
Nejvíc mi dalo zabrat, že API ze serveru vrací data v JSONu, ve kterém byl jako hodnota uložený nějaký JavaScriptový objekt.
GitHub Copilot mi poradil knihovnu <code>demjson</code>, která nefungovala, ale objevil jsem <a href="https://pypi.org/project/demjson3/">demjson3</a>, a s tím už to nějak šlo.</p>
<p>Stažený katalog už pak šlo docela snadno na pár řádcích vyfiltrovat tak, jak potřebuji já.
Dokonce jsem si k jednotlivým terapeutům dogeneroval odkazy na Mapy.cz s jejich adresou apod.
Vyřadil jsem terapeuty, o kterých nešlo nic zjistit, nebo kteří mi z jakéhokoliv náhodného důvodu nebyli sympatičtí z webu.
Ale ve výsledku jsem měl pořád příliš mnoho možností, asi deset.</p>
<p>Než abych si četl weby terapeutů, kteří možná nenabírají, rozhodl jsem se všem napsat e-mail s jedním řádkem, zda je informace v katalogu aktuální a opravdu nabírají nové klienty.
Překvapilo mě, že asi tři lidi odpověděli hned v noci, a přemýšlel, zda je mám vyřadit na základě jejich špatného <em>work-life balance</em>.
Počkal jsem do druhého dne.
Vyřadil jsem terapeuty, kteří neodpověděli, nebo nepřijímali klienty.
Někdo také změnil adresu, která by už byla moc z ruky, takže taky z kola ven.</p>
<p>Ze zbytku si už budu muset nějak vybrat, pořád je to asi pět lidí.
Nejspíš nezbývá než je potkat a vyzkoušet.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Začal jsem přepisovat <a href="https://github.com/honzajavorek/film2trello">film2trello</a> z webové appky a bookmarkletu do Telegram bota.</li>
<li>Byli jsme se ženou poprvé od narození potomka oba spolu v kině.
Akorát když se ta příležitost naskytla, tak tam nic moc nedávali, takže jsme šli na <a href="https://www.csfd.cz/film/972101-wonka/prehled/">Wonku</a>.
Protože jsme viděli <a href="https://www.kinobox.cz/clanky/recenze/32901-videorecenze-wonka">recenzi od Fily</a>, věděl jsem, co čekat.
A v kině jsem dostal, co jsem čekal, a ještě něco navíc - aspoň teda já jsem si v tom filmu všiml kritiky současné formy kapitalismu.
Co mě trochu mrzí je, že na to, že to byl muzikál, tak mi z filmu hraje v hlavě všeho všudy <a href="https://www.kinobox.cz/clanky/recenze/32901-videorecenze-wonka">jediná písnička</a>, která tam byla spíš ze srandy.
Když srovnám s Vlasy nebo Nocí na Karlštejně, tak bída.</li>
<li>Volal jsem si s ENGETO a bavili jsme se s Marianem o trhu, budoucnosti, AI, krachu Green Fox Academy, a všem možném.
Tyto hovory mě baví.
ENGETO je něco mezi zákazníkem a konkurencí, ale vlastně si s Marianem volám spíš jako s podnikatelem z oboru, jen tak si povídáme a zamýšlíme se nad vším možným.
Chtěli jsme původně řešit anketu mezi juniory, ale shodli jsme se, že to teď oba máme na chvostu priorit, a necháme to zatím u ledu.</li>
<li>Napsal jsem e-maily všem dokotrům, ke kterým mám zajít.
Od všech mi přišlo, že mám zavolat.
Když jsem volal, nikdo to nezvedl.</li>
<li>Nepovedlo se mi na Alze koupit USB-C/USB-C kabel, který by správně fungoval s Albi tužkou.
K ní je dodávaný jen USB-A/USB-C kabel.
Když jsem se jich ptal, jaký si mám koupit, aby to fungovalo, tak mi napsali, že mi kabel klidně pošlou zdarma, akorát mám napsat, zda chci micro USB, nebo mini USB.
V ten moment jsem si uvědomil, že se právě nacházím v kabelovém pekle a nechal jsem to zatím být.</li>
<li>Něco se rozbilo na <a href="https://github.com/honzajavorek/czech-political-parties/">czech-political-parties</a>, tak jsem to opravil.
Akorát že teď po pár dnech se rozbilo zas něco jiného, takže to budu muset zase opravit.
Po delší době jsem se přihlásil na Twitter a zjistil jsem, že data z tohoto projektu <a href="https://twitter.com/ProgramyDoVoleb/status/1737120205099188467">někdo dokonce reálně používá</a>.</li>
<li>Zjistil jsem, že pokud využívám GitHub Pages a mám na doméně hvězdičkové DNS, tak toho mohou zneužít hackeři a vytvořit si stránku na sub-sub-doméně.
Ošetřil jsem jak junior.guru, tak weby Pyvce, aby se to dít nemohlo.
Hackerům se povedlo založit <code>sltgacorterbaru.id.junior.guru</code> nebo <code>wasiat4d.go.pyladies.cz</code>.
Viz <a href="https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages">oranžový Warning tady</a>.</li>
<li>Opravil jsem pár chyb v Discord botovi, něco v nabídkách práce, něco v seznamu rolí…
Debugoval jsem, proč se některé kurzy na jsemvkurzu.cz neobjevují v katalogu na junior.guru.
Důvod už znám, ale oprava bude na větší programování.</li>
<li>Měli jsme schůzi výboru Pyvce.
Nevím, jestli jsme zvládli zápis, bylo to nějaké zmatené, ale vyřešili jsme nějaké věci a posunuli jsme vpřed hledání účetní.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.
Udělil jsem dvě stipendia na členství v klubu.</li>
<li>Za 15 dní jsem při procházkách nachodil 17 km, na túrách nachodil 24 km. Celkem jsem se hýbal 10 h a zdolal při tom 41 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Sepíšu na blog plán na Q1.</li>
<li>Zapojím Apify proxy.</li>
<li>Odjedu bobovat do Jeseníků.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=Ac2KEGISVKQ&list=PLhvTPVIo2nUHr_zzW4tt9DWK7IMr6hCNY">Praha hlavní nádraží (1/4): Jak jsme se dostali do současného stavu?</a><br>Pěkný Gebrianův seriál o novém Hlaváku.</li>
<li><a href="https://denikn.podbean.com/e/jsme-pripraveni-stavet-mesta-pro-zivot/">Jsme připraveni stavět města pro život? — Studio N</a><br>Anděl? Tak to mě zklamal. Jedině dolní Žižkov 😤😀 Jinak samozřejmě jako vždy, co věta, to zlato.</li>
<li><a href="https://twitter.com/hshtgstredovek/status/1741001742068986178">hashtagstredovek (@hshtgstredovek) on X</a><br>Pěkné vlákno o tom, jak lidé ve středověku využívali a měnili les</li>
<li><a href="https://en.wikipedia.org/wiki/A_General_History_of_the_Pyrates">A General History of the Pyrates - Wikipedia</a><br>Skoro všechno, co víme o pirátech, pochází z jediné knížky od anonymního autora. A mnoho z toho, co o nich víme, moc neodpovídá zažitým popkulturním představám. Např. se v naprosté většině plavili na lodích s jedním stěžněm.</li>
<li><a href="https://seznam-zpravy.u.mailkit.eu/mc/VUCVVPPV/RYHYKCADEIVXQOMKYA/CPMCLPPVWVE">Pod čarou: Jak předpovědět budoucnost? Počítejte s tím, že půjde o peníze.</a><br>„…řada lidí dokáže skvěle vykreslit vize světů, kam by nás nové technologie mohly teoreticky zavést, ale zcela zapomíná na to, kam nás za současných ekonomických a společenských podmínek zavedou zcela určitě.“</li>
<li><a href="https://stackoverflow.blog/2023/06/26/the-hardest-part-of-building-software-is-not-coding-its-requirements/">The hardest part of building software is not coding, it's requirements - Stack Overflow</a><br>Tak budeme psát kód, nebo nebudeme? Tenhle článek se snaží říct, že programátoři budou potřeba i s AI, ale já to teda čtu tak, že budou potřeba spíš technicky zdatní produkťáci, přesně jak Matt Welsh naznačuje v té své přednášce na Hardvardu.</li>
<li><a href="https://www.youtube.com/watch?v=JhCl-GeT4jw&t=749s">Large Language Models and The End of Programming - CS50 Tech Talk with Dr. Matt Welsh</a><br>Tohle mě, musím říct, přinutilo přemýšlet.</li>
<li><a href="https://audioboom.com/posts/8418824">58: Peter Bednár: Urbanistův pohled na dopravu ve městě — 2050</a><br>Největší problém aut je, že zabírají příliš mnoho prostoru.</li>
<li><a href="https://cs.wikipedia.org/wiki/Vla%C5%A1sk%C3%BD_sal%C3%A1t">Vlašský salát – Wikipedie</a><br>„Úpadek receptury nastal v posledních válečných a poválečných letech z důvodu nedostatku některých ingrediencí a dále pak po únoru 1948, kdy se jednalo o obdobu bramborového salátu, přičemž šunku, sledě a ančovičky vystřídal šunkový salám.“ Tohle je snad nejpropracovanější heslo na Wikipedii, jaké jsem za dlouhou dobu viděl.</li>
<li><a href="https://www.irozhlas.cz/veda-technologie/veda/dominika-buresova-matematika-cvut-vyzkum-kvantove-logiky_2312240500_epo">Matika mě úplně pohltila, říká mezinárodně oceněná studentka. Stále slýchá komentáře na založení rodiny</a><br>Matika drsnej obor: „Začala jsem pozdě v disciplíně, které se lidé často věnují už od šesti let, a chytla jsem se…“ Ale zjevně i tam může člověk jako career switcher uspět: „Když mě to na právech nebavilo, tak jsem utíkala do jiného světa. Chodila jsem na šifrovačky, různé logické soutěže, turnaje ve strategických deskovkách. Šlo mi to, a tak mi okolí začalo říkat, že bych byla dobrá na matiku. Tak jsem se rozhodla, že to zkusím.“</li>
<li><a href="https://ludic.mataroa.blog/blog/i-accidentally-saved-half-a-million-dollars/">I Accidentally Saved Half A Million Dollars — Ludicity</a><br>„It's cosplaying as a real business and the board thinks the costume is convincing.“ „I would have been better off not doing anything.“</li>
</ul></div></div></div></div>Týdenní poznámky: Další nemoci, angličtina a průzkum Apify2023-12-22T00:00:00+01:002023-12-22T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2023-12-22:/blog/tydenni-poznamky-dalsi-nemoci-anglictina-a-pruzkum-apify/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-tatinek-na-plny-uvazek/">posledních poznámek</a> už utekl nějaký ten týden (8. 12. až 22. 12.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-tatinek-na-plny-uvazek/">posledních poznámek</a> už utekl nějaký ten týden (8. 12. až 22. 12.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/letni-pit-stop/">teď plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/3/">tabulky na GitHubu</a>.</p>
</div>
<p>Poznámky píšu po dvou týdnech, protože během toho prvního jsem opět prakticky nic neudělal.
Hned jak se začala žena trochu uzdravovat, lehli jsme všichni s covidem.
To bylo „výborné“, především na psychiku.</p>
<p>S dítětem je blbé to, že se o něj člověk musí starat, i když je sám nemocný.
Covid nekosí lidi v rodině postupně, ale všechny najednou, takže jsou všichni unavení, vyčerpaní, a protivní.</p>
<p>Přemýšlím, jaké to bývalo dřív. Člověk napsal do práce na Slack, že je nemocný, a zalezl si do postele. Pak byl zhruba týden největší životní problém to, že když se mi udělalo trochu líp, tak se mi noťas pořád přehříval o peřinu při hraní Europa Universalis 😀</p>
<p>Aby toho nebylo málo, v sobotu, kdy už jsem se cítil zdravý, jsem něco snědl a s život ohrožující alergickou reakcí mě odvezli sanitkou do nemocnice.
Tam mě zachránili a ještě ten den propustili.
Teď se cítím dobře.</p>
<p>Jsem zvědavý, kdy tahle má série zdravotních peripetií skončí a jestli vůbec.
Na stole mám teď tři žádanky k doktorům na příští rok a to mám ještě i v lednu stále ještě jednu pravidelnou léčbu.
Některé problémy, které jsem měl, spolu souvisí, ale některé vůbec.
Některé jsou ze stresu, který jsem se snažil v poslední době dost omezit, ale některé se dějí prostě jen tak.
Prostě mám asi jen to „štěstí“, že se to všechno sere najednou.
Každopádně mě to teda už psychicky dost ždíme.</p>
<p>Je zajímavé vyzkoušet si všechna mentální cvičení o tom, jak je dobré užívat si přítomného okamžiku, protože zítra můžu mít zase nějaký zdravotní problém, ale rád bych podotknul, že ta cvičení mám hotová a teď už bych si od nich dal i pauzu.
Tak snad už aby byl rok 2024 a přinesl nějaké nové zážitky, ideálně hezké.</p>
<h2 id="anglictina">Angličtina<small class="permalink"><a href="#anglictina" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Rozjeli jsme v klubu lekce angličtiny s <a href="https://geekpower.cz/">Veronikou Rychlou z GeekPower</a>.
Lidi si to nějak domluvili a utvořili skupinky, na mně potom bylo vyřešit, jakým způsobem si za to budou připlácet a jak to celé bude fungovat.</p>
<p>To bylo složitější, než jsem čekal, ale nakonec jsem to nějak rozlousknul.
Na podpoře Memberful jsem se ujistil, že lidi se mohou přihlásit k více nezávislým předplatným, a potom jsem vytvořil nový tarif jen na angličtinu.
Nevýhoda je, že ten dědí veškeré nastavení pro předplatné klubu, takže např. formuláře při příchodu či odchodu člena, emailing, apod. jsou totožné a nelze to změnit.
Taky mi to dělá dost velký binec ve statistikách a zabralo mi celý jeden den přepsat všechny skripty tak, aby se tarif na angličtinu ignoroval.</p>
<p>Dost práce mi dalo i propočítat správně pricing, abych na tom neprodělával.
Cenu jsem chtěl paušální, měsíční, ale Veronika mi bude fakturovat jednotlivé lekce.
Taky jsem chtěl, aby to bylo pro členy klubu trochu dotované.</p>
<p>Nakonec to funguje takhle: <a href="https://junior.guru/membership-english/">Klubové lekce angličtiny</a>.
Spolu s vytvořením této nové stránky jsem do nového designu předělal i <a href="https://junior.guru/membership/">starou stránku pro členy</a>, kde se lidi objeví, když se zaregistrují do klubu.
Angličtinu zatím nikde veřejně nepropaguji, nechám to zatím plynout vlastním tempem a uvidím, jak se to vyvine.</p>
<p>Přemýšlel jsem nad tím, zda to mám celé vůbec dělat, když je s tím tolik problémů a nejspíš to přinese jen minimum plusů, ale dal jsem zatím na svůj pocit, že tohle do klubu patří, že bych to měl vyzkoušet, a že se u toho třeba naučím zase něco nového.</p>
<h2 id="poc-apify">PoC Apify<small class="permalink"><a href="#poc-apify" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Pokračoval jsem v PoC (<em>proof of concept</em>) jestli by mi použití Apify náhodou nemohlo vyřešit spoustu problémů.
Setkal jsem se s fajn supportem přes jejich Discord i GitHub issues.
Některé věci ještě chybí, ale podle všeho se jim je povedlo vyřešit a doplnit dřív, než jsem dopsal tyhle poznámky.</p>
<p>Zkusil jsem pouštět více Scrapy spiderů v jednom actoru, ale <a href="https://github.com/apify/actor-templates/issues/202#issuecomment-1856495473">to mi moc nefungovalo</a>, tak jsem to <a href="https://github.com/apify/actor-monorepo-example">předělal spíš na monorepo</a>, kde každý spider je jeden actor.</p>
<p>Propojení actorů s Gitem mi přišlo jakési magické, nejasné a zmatené, ale nakonec jsem se s tím nějak naučil.
Asi to bylo tím, že jsem míchal více přístupů dohromady a ještě actory různě přejmenovával a přehazoval z místa na místo.</p>
<p>Zatím bych svůj dosavadní postup prohlásil za úspěch.
Musím <a href="https://github.com/apify/actor-templates/issues/255#issuecomment-1858775525">vyřešit použití proxy ve spideru</a>.
Potom zkusím data z Apify i konzumovat na straně existujícího robota.
Pokud to bude fungovat, můžu začít mazat kód a spoustu věcí začít přesouvat směrem do Apify.</p>
<p>Při pokusech jsem narazil na <a href="https://github.com/scrapy-plugins/scrapy-playwright">scrapy-playwright</a>, který aktuálně nevyužiju, ale možná bych jednou využít mohl, tak si to sem poznačím.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Pořizoval jsem vánoční dárky a balil je.</li>
<li>Propagoval jsem <a href="https://prague.python.pizza/">Python Pizza</a>, jednodenní konferenci v Praze, která proběhne v únoru.
Ještě můžete poslat návrh na svou přednášku. Pokud byste tam chtěli mít přednášku. Tak šup.</li>
<li>Opravil jsem nějaké drobnosti v grafech příjmů a výdajů na webu.</li>
<li>Z textového kanálu „pozvánky a promo“ v klubu jsem udělal kanál typu forum, aby to tam bylo přehlednější.
Protože do něj ale můj skript sype odkazy na srazy, vyústilo to v celý den programování.
Musel jsem to skoro celé přepsat.</li>
<li>Poslal jsem přes Zásilkovnu knihu o šifrách, kterou vyhrál jeden člen klubu, účastník Mílovy přednášky.
Poprvé jsem něco takhle posílal a překvapilo mě, jak to bylo jednoduché.</li>
<li>Napsal jsem advokátce, aby nám pomohla přepsat stanovy Pyvce.
Nejsme usnášeníschopní, když je předsedkyně indisponovaná, a to by mohl být pro Pyvec do budoucna problém.
Chce to nějaké pojistky, abychom mohli Pyvec ovládat i pokud předsedkyně zrovna nemůže.</li>
<li>Přidal jsem odkaz na <a href="https://www.irozhlas.cz/zpravy-domov/okd-rekvalifikace-horniku-programatori-ridici-data_2311030620_fil">tento článek</a> na junior.guru do <a href="https://junior.guru/stories/#z-hornika-programatorem">sekce s Tomášem Hisemem</a>.</li>
<li>Nainstaloval jsem si <a href="https://lmstudio.ai/">LM Studio</a> a o Vánocích zkusím, co umí lokální open source LLM modely.</li>
<li>Začal jsem občas sdílet obrázky vygenerované přes Stable Diffusion do komunity kolem Draw Things.
Je fajn být součástí nějaké milé komunity a nemuset se tam o nic starat :)
Dokonce mi nějací lidi soukromě napsali, zda bych jim neposlal jak to generuju, tak asi už nejsem úplná nula a mám nějaké <em>know-how</em>, to mě potěšilo.</li>
<li>Opravil jsem rozbitý skript, který mi pomáhá s ukládáním poznámek k jednotlivým stránkám příručky.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.
Naplánoval jsem nějaké statusy na LinkedIn.
Pozval jsem jednu paní do podcastu.
Domlouval jsem termín jednoho důležitého callu.</li>
<li>Za 15 dní jsem se nevěnoval žádné sportovní aktivitě.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.greenfoxacademy.cz/post/nas-pribeh-je-u-konce">Náš příběh je u konce</a><br>Ještě 27.11. startovali další vlnu kurzů, teď náhle v insolvenci. Velmi zvláštní. Green Fox Academy zavírají krám.</li>
<li><a href="https://www.ben-evans.com/benedictevans/2023/10/5/unbundling-ai">Unbundling AI — Benedict Evans</a><br>„But if you need a manual, it’s not ‘natural language’ anymore. Once you start talking about ‘prompt engineering’, you’re describing command lines - you’re describing what came before GUIs, not what comes after them.“</li>
<li><a href="https://www.youtube.com/watch?v=xNBiPd2H9J0">AI and Everything Else - Benedict Evans | Slush 2023</a><br>Benedict Evans se zamýšlí nad AI, pokládá otázky, zasazuje věci do kontextu, a mě to baví.</li>
<li><a href="https://www.mujrozhlas.cz/rapi/view/episode/773bc04e-e473-308f-8c24-97581a845310">Všechno ohlídat a nesložit se z toho. Je to těžší, než jsem si myslel, říká táta na rodičovské — Houpačky</a><br>Jaké to je být otcem na rodičovské?</li>
<li><a href="https://podcasters.spotify.com/pod/show/jolana-humplov/episodes/Z-Ukrajiny-Pijdou-pro-tebe-vojci-a-za-3-dny-jede-na-frontu--Dost-lid-umr-e2d7vfg">Z Ukrajiny: „Přijdou pro tebe vojáci a za 3 dny jedeš na frontu. Dost lidí umírá“ — PULS</a><br>Jak to teď vypadá na Ukrajině?</li>
<li><a href="https://www.scopeofwork.net/on-latex/">On Latex</a><br>„Just as speculators drove the value of untested, unprofitable dot com start-up companies to surreal levels during the 1990s, thousands of nineteenth-century New Englanders poured their savings into the miracle substance called rubber without knowing much of anything about it. In both cases, the education was hard-earned and painful.“</li>
<li><a href="https://opencagedata.com/">OpenCage - Easy, Open, Worldwide, Affordable Geocoding and Geosearch</a><br>Tohle se bude někdy hodit.</li>
<li><a href="https://www.theparisreview.org/blog/2023/10/19/real-play/">Real Play</a><br>Pamatujete hru Sims? Bavilo by vás to i dnes, jako dospěláky? Nejspíš ne, protože to žijete.</li>
<li><a href="https://davidklimes.cz/newsletter/172">Kdo ty hlasy zvedne?</a><br>„Tyto obrázky by měly být ukazovány politikům každý den a dokola by měly být tázáni, z čeho chtějí ty nové výdaje zaplatit, když už je neumí snížit.“</li>
<li><a href="https://ekolist.cz/cz/publicistika/nazory-a-komentare/vojtech-pecka-klimaticke-omyly-petra-pokorneho">Vojtěch Pecka: Klimatické omyly Petra Pokorného</a><br>„…víme, že lidská civilizace vznikla v době holocénní (poměrně nezvyklé) stability. Jak bude společnost reagovat na takto prudké změny je otázka, protože se s nimi nikdy nesetkala. Klimatické modely ukazují, že to je jenom klouzání po povrchu toho, co má přijít v následujících desetiletích, pokud nepřestaneme spalovat fosilní paliva.“ „V podstatě všechny modely již přes padesát let úspěšně popisují současný trend oteplení.“</li>
<li><a href="https://continent.substack.com/p/down-to-the-wire-the-ship-fixing">Down to the wire: The ship fixing our internet</a><br>„Ingenious engineering, sheer physical strength and careful coordination are required. Sometimes the cables carry live current, which heightens the danger.“ „It took the crew a month to sail around the Cape of Good Hope to make the repairs. Shortly after that, they restored another three cables in Angola which brought 750,000 people back online.“</li>
<li><a href="https://blog.digitalnisvobody.cz/2023/12/07/rukovet-kyberneticke-odolnosti/">Rukověť kybernetické odolnosti</a><br>Zajímavý výlet do hlubin osobní kybernetické bezpečnosti</li>
<li><a href="https://www.economist.com/leaders/2023/11/09/how-artificial-intelligence-will-transform-fame">The dawn of the omnistar</a><br>Co udělá AI se slávou?</li>
</ul></div></div></div></div>Týdenní poznámky: Tatínek na plný úvazek2023-12-08T00:00:00+01:002023-12-08T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2023-12-08:/blog/tydenni-poznamky-tatinek-na-plny-uvazek/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-odpocivani-prednasky-uzdravovani-staz-a-experimenty/">posledních poznámek</a> už utekl nějaký ten týden (1. 12. až 8. 12.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Sněhuláci" src="https://honzajavorek.cz/images/img-6587.jpg" class="img-fluid figure-img rounded"></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální …</p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-odpocivani-prednasky-uzdravovani-staz-a-experimenty/">posledních poznámek</a> už utekl nějaký ten týden (1. 12. až 8. 12.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Sněhuláci" src="https://honzajavorek.cz/images/img-6587.jpg" class="img-fluid figure-img rounded"></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a>, <a href="https://junior.guru/jobs/6b2b51a02c2e30a4facc9c0c93f7924695c7c67091c0e45f63694f68/">w3w</a></p>
</div>
<p>V neděli manželka lehla s angínou a od té doby se na plný úvazek starám o dceru.
Během týdne jsem zvládl jen pár drobností, které souvisely s prací.
Několik jsem prostě zrušil nebo odložil.</p>
<p>Byl to zvláštní týden.
Nebyla to vůbec dovolená, intenzivní péče o dítě je náročná.
Ale zároveň jsem si vlastně odpočinul od všeho ostatního ještě víc, než v předchozích, už tak „zvolněných“ týdnech.</p>
<figure class="figure"><img alt="JIP" src="https://honzajavorek.cz/images/screenshot-2023-12-08-at-18-20-10.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Při psaní slov „intenzivní péče o dítě“ jsem si vzpomněl na tento obrázek „jednotka intenzivní péče“. Pokud nemáte účet na Facebooku a jazyk nastavený na češtinu, bude se vám tento vtip těžko chápat.</figcaption></figure>
<p>V neděli jsem prostě přijal svůj osud a když žena nevstala z postele, přepla se mi hlava do režimu <a href="https://www.5bv.cz/cz/pravidla">5BV</a>.
Prostě to musím zvládnout, i když vím, že to bude těžké, nevím jak dlouho to potrvá, nevím kolik km to bude, nevím kolik hor bude potřeba přejít, a nevím, jaké vrcholy mě vlastně čekají 😀</p>
<figure class="figure"><img alt="KB5" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-12-08-at-18-39-37.png"><figcaption class="figure-caption">
Vzpomínka na KB5 2015</figcaption></figure>
<h2 id="zen">Zen<small class="permalink"><a href="#zen" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Přemýšlel jsem, jestli mě neštve, že jsem do práce nic neudělal, ale neštve.
Ještě před pár týdny by mě to nejspíš strašně stresovalo.
Měl bych spoustu plánů a termínů a tímhle by se vše sesypalo.
Takhle ale akorát pokračoval můj zen, že prostě dělám co můžu a když zrovna nemůžu, tak se svět neposere.
Jsem na sebe vlastně hrdý, jak se mi povedlo dát prioritu plně dceři a zbytek moc neřešit.</p>
<p>Jo, těším se, až si zase něco naprogramuju.
Jo, štve mě, že junior.guru se teď moc neposouvá, že tam je pořád děravá příručka, neexistující newsletter, ošklivé pracovní inzeráty, nedokončený katalog kurzů, nevydané rozhovory s juniory.</p>
<p>Ale jak jsem psal, no, svět se neposere.
Stále vypouštím stresový kyblík.
Jestli mám v plánu, že mě bude junior.guru živit do důchodu a možná i potom, tak mě tyhle myšlenky nesmí trápit.
Mnoho lidí mi říká, že kdyby junior.guru existovalo, když začínali, hodně by jim to pomohlo.
Takže už i to, co je, je dost dobré a užitečné.
Mohu to vylepšovat, ale mám na to spoustu let.</p>
<h2 id="milova-prednaska-o-sifrovacich-hrach">Mílova přednáška o šifrovacích hrách<small class="permalink"><a href="#milova-prednaska-o-sifrovacich-hrach" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Jedinou větší pracovní událostí byla <a href="https://junior.guru/events/37/">Mílova přednáška v klubu</a>.
Ta byla moc fajn, ale nepřišlo bohužel moc lidí.
Nedošlo mi, že je to tentýž večer, jako Mikuláš.
Protože se z nepochopitelného důvodu v Česku Mikuláš slaví o den dřív, než je v kalendáři, tak mě to vůbec netrklo.</p>
<p>Míla to měl perfektně připravené, přednáška byla hodně interaktivní a zahrnovala i hru o knihu.
Naštěstí těch 10 lidí, co přišlo, se dost zapojovalo, luštilo šifry, a jeden opravdu tu knihu vyhrál.
Takže to Míla zpětně hodnotil kladně a měl z přednášky dobrý pocit.
To trochu vykompenzovalo můj smutek z malé účasti a nakonec asi všechno dobrý.</p>
<p>S Mílou jsme společně vysílali z mojí kanceláře a datum jsme využili alespoň k netradičním outfitům…</p>
<figure class="figure"><img alt="Mikulášové" src="https://honzajavorek.cz/images/403620005-1503019373886811-6913993775009298584-n.jpg" class="img-fluid figure-img rounded"></figure>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>V klubu vznikla skupinka lidí, kteří si tam domluvili lekce angličtiny s <a href="https://geekpower.cz/">Veronikou</a>.
Velmi tomu fandím a jsem zvědav, jak se to rozjede.</li>
<li>Pokusil jsem si nějak intuitivně dobít na WEDOSu kredit na zálohovém účtu a zabralo mi to asi 20 minut hledání, co mám vlastně udělat.
Strašný.</li>
<li>Smazal jsem starý klubový onboarding.
Všechny kanály, které s tím souvisely, role na Discordu, všechen kód.
Velká úleva.
RIP.</li>
<li>Koukal jsem na integraci <a href="https://junior.guru/courses">mého katalogu</a> s katalogem <a href="http://jsemvkurzu.cz">jsemvkurzu.cz</a>, protože se zdálo, že funguje nějak špatně.
Ale funguje to dobře, je to přesně podle toho, co má na webu ÚP.</li>
<li>Klubová integrace se srazy se rozbila, protože nějaký sraz měl adresu delší než 100 znaků a to mi hodilo Discord API na hlavu.
Takže jsem to přes <a href="https://docs.python.org/3/library/textwrap.html#textwrap.shorten">textwrap.shorten()</a> zkrátil a hotovo.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.
Z nějakého důvodu jsem komunikoval s pár institucemi, např. se svou bankou, s daňařem, Discordem, apod.</li>
<li>Omluvil jsem se ze schůze výboru Pyvce.</li>
<li>Za 8 dní jsem se sice podle <a href="https://www.strava.com/athletes/31242569">Strava</a> nevěnoval žádné sportovní aktivitě, ale osobně jsem ježdění kočárkem po zledovatělých žižkovských kopcích a přes hory sněhu u každého přechodu vnímal jako slušné fitko.</li>
</ul>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=SZVCJRUADc4">GitHub Copilot just got exponentially smarter</a><br>OK, tohle je už docela maso. Co nového umí GitHub Copilot?</li>
<li><a href="https://filmtoro.cz/blog/cinema-city-extremni-zdrazeni">Multikino jako luxus pro bohaté. Cinema City zdražilo do nevídaného extrému</a><br>Jak chodím zásadně do kina Aero, skoro jsem zapomněl, že tohle ještě existuje. A ono to ještě takhle zdražuje! Lol.</li>
<li><a href="https://twitter.com/AdriaanvRossum/status/1732389553950867808">Adriaan 📊 Simple Analytics (@AdriaanvRossum) on X</a><br>Tohle by mohlo být i užitečný! O důvod víc proč mít Simple Analytics.</li>
<li><a href="https://nymag.com/intelligencer/article/sam-altman-artificial-intelligence-openai-profile.html">Who Is OpenAI’s Sam Altman? Meet the Oppenheimer of Our Age</a><br>Kdo je Sam Altman? Co o něm a jeho rodině vlastně víme?</li>
</ul></div></div></div></div>Týdenní poznámky: Odpočívání, přednášky, uzdravování, stáž a experimenty2023-12-01T00:00:00+01:002023-12-01T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2023-12-01:/blog/tydenni-poznamky-odpocivani-prednasky-uzdravovani-staz-a-experimenty/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-vnimani/">posledních poznámek</a> už utekl nějaký ten týden (10. 11. až 1. 12.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-vnimani/">posledních poznámek</a> už utekl nějaký ten týden (10. 11. až 1. 12.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a>, <a href="https://junior.guru/jobs/6b2b51a02c2e30a4facc9c0c93f7924695c7c67091c0e45f63694f68/">w3w</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/letni-pit-stop/">teď plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/3/">tabulky na GitHubu</a>.</p>
</div>
<p>Po třech týdnech konečně zase poznámky.
Budu tady popisovat pouze věci, které nesouvisely s Týdnem pro Digitální Česko, protože ten jsem detailně popsal v předchozím článku <a href="https://honzajavorek.cz/blog/tyden-pro-digitalni-cesko-z-pohledu-partnera/">Týden pro Digitální Česko z pohledu partnera</a>.</p>
<p>Jak jsem naznačoval v předchozích poznámkách, potřeboval jsem teď co nejvíc umenšit stres.
Takže jsem začal dělat věci co nejvíc s <em>mindsetem</em>, že je všechno jedno.
Zrušil jsem na sebe veškeré nároky, nechodím na žádné akce, snažím se nikomu nic neslibovat.
Přestal jsem si cokoliv plánovat a cokoliv od sebe očekávat.
Myslím, že jako mávnutím proutkem, hromada toho stresu okamžitě zmizela.
Je to krásné.</p>
<p>Hodlám v tom pokračovat minimálně do konce roku.
Mohl bych si vzít dovolenou, ale myslím, že to není potřeba, protože tenhle režim je docela pěkný.
Dává mi to i odstup.
Najednou vidím, jak jsem na sebe byl přísný a jak jsem od sebe vyžadoval strašně moc.
Jak jsem z věcí, které byly všem jedno, dělal ve své hlavě věci, které jsou extrémně důležité.</p>
<p>Myslím, že se moje rozpoložení hned projevilo na tom, jak jsem si užil poslední dvě online akce v klubu a další věci.
Na přednášku s Karolinou se třeba ze začátku nepřipojil Tinuki, který to měl nahrávat.
Nevěděl jsem, kde je, ale mávl jsem rukou a řekl jsem si, že tím pádem záznam prostě nebude a hotovo.
Dřív bych z toho měl strašný stres, teď mi to bylo jedno a bylo to krásné.
Tinuki se nakonec připojil a vůbec nic se nestalo 🤷♂️</p>
<p>Jinak celou dobu se motám stále v nějakých rýmách a kdo ví čem, takže to uzdravování, to se mi zatím daří jen tak napůl.
Těším se, až se jednoho dne probudím a řeknu si „týjo, dneska se cítím skvěle“.</p>
<h2 id="vylepsovani-onboardingu">Vylepšování onboardingu<small class="permalink"><a href="#vylepsovani-onboardingu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Trochu jsem opět pracoval na vylepšení různých funkcí klubu, které tam jsou hlavně pro nováčky.
Začal jsem rozebírat nástěnku a vytvořil postupně několik dedikovaných stránek, které mají stejnou funkci.</p>
<figure class="figure"><img alt="Server Guide" src="https://honzajavorek.cz/images/screenshot-2023-12-01-at-16-49-29.png" class="img-fluid figure-img rounded"></figure>
<p>Bylo kolem toho celkem dost práce a ladění, obrázky, aktualizace popisu rolí v klubu a tak, ale nějak se mi ani nechce o tom teď víc rozepisovat.</p>
<h2 id="150-prazske-pyvo">150. Pražské Pyvo<small class="permalink"><a href="#150-prazske-pyvo" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když mi bylo trochu líp, stavil jsem se na <a href="https://pyvo.cz/praha-pyvo/2023-11/">150. Pražské Pyvo</a>.
Tam jsem se nějak nedokázal odtrhnout od jednoho borce.
Sice se s ním povídalo hezky, ale nějak mi nešlo to postupně ukončit a povídat si i s dalšími účastníky srazu.
Takže jsem opůlnoci zjistil, že jsem to celé prokecal s jedním člověkem, neměl jsem ani dort, a všichni šli už domů.
Byl jsem na sebe strašně naštvaný a situaci jsem se jal řešit tak, že si to ještě „nějak užiju“, takže jsem s pár odpadlíky pokračoval do nonstopu a přišel domů až ráno.</p>
<p>Druhý den jsem byl úplně zničený a v návaznosti na to jsem chytil něco na průdušky, takže jsem si pak několik dní celou tu věc samozřejmě vyčítal.
Říkal jsem si, že do TDČ se určitě uzdravím, ale úplně se to nestihlo a jak <a href="https://honzajavorek.cz/blog/tyden-pro-digitalni-cesko-z-pohledu-partnera/">popisuju v příslušném článku</a>, akcí jsem se účastnil ještě trochu nemocný.</p>
<p>Od té doby jsem na žádných akcích nebyl, a ani to neplánuju.
Jsem jenom na čajíčkách a kafíčkách, na nic tvrdšího nemám teď vůbec chuť.</p>
<figure class="figure"><img alt="Dort" src="https://honzajavorek.cz/images/img-20231115-194156.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Foto není moje, ale teď si nemůžu vzpomenout, kde a od koho to mám</figcaption></figure>
<h2 id="staz">Stáž<small class="permalink"><a href="#staz" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Napsala mi ředitelka <a href="https://phgymnazium.cz/">PHG</a>, jestli bych nenašel nějaký úkol, který by se dal zadat jako stáž jedné jejich pedagožce.
Stáž měla mít 4 hodiny, tak jsem dost zápasil s tím, co ji vlastně nechat udělat, aby to mělo nějaký smysl a zároveň aby se to stihlo.</p>
<p>Pedagožka mi napsala, co umí, pak jsme si ještě zavolali, a nakonec jsme vymysleli, že <a href="https://github.com/juniorguru/junior.guru/issues/1259">zkusíme procvičit Git</a>.
Nějak jsme to zvládli a teď ve čtvrtek jsem vypsal papíry, aby ta stáž mohla být uznána.</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>S pedagožkou jsme se dohodli, že provede změnu v kódu reálného existujícího, produkčního projektu. Změna se týkala několika souborů a zahrnovala základní porozumění webovým technologiím, ale hlavním cílem stáže bylo projít si procesem změny v kódu projektu, na kterém pracuje více lidí pomocí Gitu, kde se změny musí navrhnout a schválit, a kde je změna poté poslána na produkci a musí projít všemi kontrolami před tím, než se dostane k uživatelům. Pedagožka potřebovala následující, aby úspěšně splnila cíl stáže:</p>
<ul>
<li>Konzultovat zadání a směrování stáže přes videohovor, případně potom přes GitHub Issues</li>
<li>Zorientovat se v kódu reálného produkčního projektu, který už několik let existuje a funguje</li>
<li>Pracovat s editorem, profesionálním programem pro úpravy kódu</li>
<li>Naučit se, případně si připomenout, jak se pracuje s Gitem, a ovládnout jeho základy</li>
<li>Kód reálného projektu si stáhnout, zapracovat v něm požadované změny a navrhnout tyto změny, a pochopit celý cyklus změny na SW projektu</li>
<li>Vytvořit si účet na platformě GitHub a naučit se základy práce s ní, s repozitáři kódu, s tzv. Issues, Pull
Requesty, atd.</li>
</ul>
<p>Pedagožka stáž zvládla mistrně. Nemohu cokoliv vytknout po stránce komunikace, spolupráce, provedení, ani proaklvity. Stáž jsme z různých důvodů dokončovali na poslední chvíli před termínem, takže jsme neslhli závěrečnou reflexi. Mohu tedy pouze doufat, že pedagožka byla spokojená i s mým vedením, ale snažil jsem se být ve všech ohledech nápomocný a vše vysvětlit, případně ji navést správným směrem, tak snad ano.</p>
<p>S pedagožkou jsme komunikovali i nad rámec stáže a uvažovali o tom, zda by se na projektu nenašly nějaké další příležitosti pro rozvoj jejích dovedností, při kterých by se třeba dali zapojit i samotní žáci. Projekt má mnoho nekomerčních částí, kde by se možná takové úkoly našly, tak třeba něco najdeme.</p>
<p>Práce s Gitem, orientace v cizím rozsáhlém kódu, provádění změn na open source projektu. Nic z toho není snadné a jsou to dovednosti, které si i lidé, kteří chtějí v oboru pracovat jako programátoři, musí složitě osvojovat. Zároveň jsou to dovednosti, které využije prakticky každý v tomto oboru, bez ohledu na oblast nebo programovací jazyk, kterým se hodlá věnovat. Pedagožka může studentům nyní předat tyto své zkušenosti, nebo je využít ve výuce, např. při týmových projektech, kde by více osob pracovalo na společném kódu.</p>
<p>Jelikož kód byl shodou okolností zároveň i open source, pedagožka si zkusila, jaké to je do open source přispět a jakým způsobem se komunikuje na takových projektech. Díky tomu se jí a případně jejím studentům otevírá možnost podílet se na jakýchkoliv open source projektech světové komunity open source vývojářů, stačí pouze dovednosti, které si osvojila, znalost angličlny, a zvědavost.</p>
</blockquote>
</figure><p>Zajímavá zkušenost!</p>
<h2 id="budoucnost-katalogu">Budoucnost katalogu<small class="permalink"><a href="#budoucnost-katalogu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Volal jsem si s Engetem a bavili jsme se o tom, co plánují oni, nebo co plánuju já.
Nejzajímavější byla diskuze o <a href="https://junior.guru/courses/">katalogu kurzů</a>.</p>
<p>Katalog by měl mít nějaké parametry, podle kterých filtrovat, ale ideálně ne jen ty základní.
Například to, zda jsou materiály v češtině, většina anotací ke kurzům vůbec neuvádí, přitom je to pro hodně lidí důležité.</p>
<p>Dostal jsem tip, že <a href="https://www.tomaslanger.cz/">Tomáš Langer</a> má nějaký systém hodnocení (auditu?) kurzů, který poskytuje jako službu firmám.
Má jasnou metodiku, chodí do vzdělávacích agentur, dělají <em>mystery shopping</em>, volají na <em>support</em>, prostě celou tu firmu proklepnou, a pak jí dají nějaké skóre.
To je sice spousta práce, ale tu práci teoreticky někdo zaplatí (buď firma, nebo i samotná vzdělávací agentura), protože ten výsledek je velmi hodnotný pro obě strany.
Jednak firma ví, kam poslat školit lidi, a kam ne, jednak se agentura může chlubit tím, že je kvalitní, a odliší se tak od ostatních.
Je to rozhodně zajímavý dílek do puzzle „kam do budoucna směřovat katalog a jak ho monetizovat“.</p>
<p>Mohl bych udělat třeba to, že vymyslím takovou metodiku a budu ji i „ručně“ realizovat, ale řeknu, že která agentura si to zaplatí, ta dostane hodnocení a top 3 budou v katalogu zvýrazněny a nahoře.
Pak budou ty ostatní s hodnocením.
Pak bude zbytek.
Tím, že je to zaplacené, měl bych mít zdroje na to to zrealizovat, stejně jako když si Michelin nechá platit za to, že recenzuje restaurace a dává je do nějakého průvodce.
A tím, že je to nastaveno takto, nemělo by na lidi působit divně, že mi vzdělávací agentury posílají peníze, nebo že si platí někde nějaké zvýraznění, bez ohledu na kvalitu.</p>
<p>Ještě jsem si poznačil <a href="https://www.amazingplaces.cz/">Amazing Places</a>, což je nějaký katalog „odzkoušených“ míst.
Opět způsob, jak v něčem udělat pořádak a jak to kultivovat.</p>
<h2 id="studie">Studie<small class="permalink"><a href="#studie" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Díky zahajovací akci TDČ (viz <a href="https://honzajavorek.cz/blog/tyden-pro-digitalni-cesko-z-pohledu-partnera/">Týden pro Digitální Česko z pohledu partnera</a>) jsem dostal kontakt na dámu, která zpracovala studii o lidech rekvalifikujících do IT.</p>
<p>Zavolali jsme si a zjistil jsem detaily.
Mluvili jsme spolu 2 hodiny, při kterých se mi v hlavě propojovaly neurony sem a tam a kdybych byl příčetnější, dělám si poznámky, až se ze mě kouří.</p>
<p>Zkoumala, co vlastně <em>career switchers</em> řeší a co jim nejvíc pomáhá.
Mělo by se to týkat všech věcí, které jsou v příručce, i těch, co tam nejsou.
Zatímco já to všechno mám intuitivně a z pozorování, ona má věci podložené daty a má víc do hloubky zjištěné příčiny, následky, apod.</p>
<p>Domluvili jsme se, že mám zájem o výsledky studie a o nějakou další spolupráci.
Naplánujeme si hovor, kde mi celou studii odprezentuje a pak vymyslíme, co by šlo dělat dál.
Jsem na to velmi zvědavý!
Už jen na základě tohoto našeho úvodního rozhovoru mám chuť předělat třetinu junior.guru 😅</p>
<p>Ona měla zase radost, že jsme si zavolali, protože slova „junior guru“ se během zpracování té studie nezávisle na sobě neustále opakovaly z úst různých lidí 😎</p>
<h2 id="apify-proof-of-concept">Apify - Proof of Concept<small class="permalink"><a href="#apify-proof-of-concept" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Řekl jsem si, že zkusím radikálně zjednodušit kód, který hledá nabídky práce.
Jednak bych chtěl třídit s pomocí AI, jednak bych chtěl zjednodušit scrapování.</p>
<p>To první tuším jak chci udělat, u toho druhého mě napadlo, že bych se znova podíval na <a href="https://apify.com/">Apify</a>.
Před časem totiž byli na Pyvu a měli tam <em>lightning talk</em>, že přidali podporu pro Python.
Tak jsem na to začal koukat a zatím jsem - kromě <em>pricingu</em>, ale to je detail 😀 - nenarazil na žádné zásadní problémy.
Dokonce přímo podporují i Scrapy, ve kterém mám svoje scrapery!</p>
<ul>
<li>Přidal jsem se na Apify Discord a hned jsem tam měl pár dotazů.
A hned někdo reaguje.
Super.</li>
<li>Díky studiu jejich kódu jsem zjistil, že existuje <a href="https://pypi.org/project/nest-asyncio/">nest-asyncio</a>, což by mi mohlo vyřešit spoustu problémů jinde 🤯</li>
<li>Vzal jsem si jejich <a href="https://apify.com/templates/python-scrapy">šablonu na Scrapy</a> a udělal <a href="https://github.com/juniorguru/plucker">repo</a>, kde si s tím hraju.</li>
<li>Koukal jsem, že taky <a href="https://docs.apify.com/platform/integrations/chatgpt-plugin">nezahálejí, co se týče AI</a>.</li>
<li>Prošel jsem si asi pět videí <a href="https://www.youtube.com/@Apify">na jejich YouTube</a>, abych nasál, jak ta platforma funguje a co se tam dá dělat.
Suprově udělané.</li>
</ul>
<p>Přijde mi zatím, že by to mohlo jít.
Naprogramoval bych scrapery ve Scrapy, takže bych neměl úplný <em>vendor lock-in</em>, a tyto scrapery bych pouštěl v Apify, které by řešilo veškerou infrastrukturu, načasování, proxy, atd.
Pak bych ve svém buildu jen stáhl data a bylo by to.
Ušetřil bych hromadu programování, starání se, a času.
A mohl bych se soustředit víc na to, co chci vlastně docílit, ne na tu režii okolo.
Bylo by snadnější přidávat scrapery, upravovat je, mohl by mi s tím třeba někdo i pomoci.</p>
<p>No a pak bych mohl jít a na Apify třeba rozjet i další věci, které stahuju.
Proč stahovat informace o srazech z Meetup.com někde ve svém buildu na CircleCI, když to může frčet na Apify? 🧐
I kdyby to stálo nějaké peníze, možná by mi to vyřešilo spoustu věcí a odebralo spoustu jednotlivých závislostí.</p>
<figure class="figure"><img alt="Apify" src="https://honzajavorek.cz/images/screenshot-2023-12-01-at-18-27-38-apify-console.png" class="img-fluid figure-img rounded"></figure>
<h2 id="stable-diffusion">Stable Diffusion<small class="permalink"><a href="#stable-diffusion" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Ve volném čase jsem relaxoval u Stable Diffusion.
V poslední době se to zase dost posunulo.
Stále používám Draw Things, i když ComfyUI nebo Fooocus bych taky rád jednou vyzkoušel.
Možná v nějakém paralelním životě.</p>
<p>Vrátil jsem se k SDXL a tak nějak jsem u něj už zůstal.
Autorům Draw Things se povedlo vyladit výkonnost tak, že už to bylo plus mínus srovnatelné s SD 1.5 i na mém M1 Airu s malou RAMkou.
A bylo to prostě něco nového, tak mě to začalo zase bavit.
To jsem ještě nevěděl, že začnou z nebe pršet věci jako LCM nebo Turbo modely, které generování ještě víc urychlují.
Po různých peripetiích se mi nakonec povedlo rozchodit <a href="https://civitai.com/models/129666/realities-edge-xl-lcmsdxlturbo">Realities Edge XL</a> a <a href="https://civitai.com/models/215418/turbovisionxl-super-fast-xl-based-on-new-sdxl-turbo-3-5-step-quality-output-at-high-resolutions">TurboVisionXL</a>.
S oběma vygeneruju i na tom svém slabém Airu kvalitní obrázky 1024px+ pod jednu minutu, což je úžasné.
Všechny ostatní modely jsem smazal.</p>
<p>Začal jsem být celkem aktivní v Discord komunitě Draw Things a zkusil jsem tam s nimi začít řešit nápad, který jsem před časem dostal.
Kdybych udělal sadu svých vlastních nakreslených obrázků, dokázalo by mě SDXL „nahradit“ tak, abych s ním mohl vygenerovat jakoukoliv malůvku, kterou bych potřeboval sem na blog nebo na web junior.guru?
Bylo by možné vytvořit Lora nebo i vlastní model, které by toto umožnily?
Zatím asi sci-fi, ale nějaké kroky už jsem podnikl.
Udělal jsem si pořádek v archivu svých obrázků a všechny zpracovávám tak, aby se na nich dalo trénovat.
Mám předpřipravených 182 malůvek, nyní je potřebuji dostat do nějakého stejného rozměru a pak jim přidat popisky.
Vrátím se k tomu, až budu mít zase čas a náladu.</p>
<p>Všichni mluví o tom, že AI nahradí umělce.
Tak já jsem umělec, který chce být nahrazen AI a podnikám pro to konkrétní kroky 😀
Uvidíme, jak složité to bude!</p>
<p>Následují náhodně vybrané obrázky, které jsem vygeneroval.
Kromě těch upírů, poznali byste, že nejsou reálné?</p>
<figure class="figure"><img alt="Obrázek ze Stable Diffusion" src="https://honzajavorek.cz/images/cinematic-film-still-students-couple-sharing-a-moment-at-a-university-party-cleavage-shallow-depth-of-field-vignette-highly-detailed-high-budget-bokeh-cinemascope-moody-epic-2958532252.png" class="img-fluid figure-img rounded"></figure>
<figure class="figure"><img alt="Obrázek ze Stable Diffusion" src="https://honzajavorek.cz/images/hyperrealistic-art-elegant-vampire-couple-sharing-a-moment-at-a-ball-vampire-teeth-extremely-high-resolution-details-photographic-realism-pushed-to-extreme-fine-texture-incredibl-3562735853.png" class="img-fluid figure-img rounded"></figure>
<figure class="figure"><img alt="Obrázek ze Stable Diffusion" src="https://honzajavorek.cz/images/cinematic-film-still-women-friends-university-students-talking-to-each-other-and-laughing-in-hipster-prague-cafe-sexy-cleavage-shallow-depth-of-field-vignette-highly-detailed-h-2307023319.png" class="img-fluid figure-img rounded"></figure>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>V klubu proběhla strašně milá přednáška o Advent of Code od Karoliny.
Po ní jsme se přesunuli ještě do jiné místnosti v klubu na volný pokec, a bylo to moc fajn.
Dnes, 1.12., odstartoval Advent of Code a v klubu už začíná onen každoroční prosincový šrumec 🎄</li>
<li>V Discord komunitě <a href="http://tvurcast.cz">Tvůrcastu</a> jsem zjistil, že YouTube už podporuje nasosání podcastu přímo z RSS.
Takže jsem vyhodil <a href="https://www.headliner.app/">Headliner</a>, kterým jsem to automatizoval doteď, a zapnul to napřímo.</li>
<li>Vyřídil jsem několik stipendií, některá jsem i proaktivně nabídl.</li>
<li>Zařizoval jsem Simple Analytics pro Python Pizza v Praze.
Výsledek <a href="https://simpleanalytics.com/prague.python.pizza">tady</a>.
Co je Python Pizza?
Nová Python akce v Česku!
Mini konference.
<a href="https://prague.python.pizza">Mrkněte na to</a> a přihlašte si přednášku!</li>
<li>Jedna paní na výročním setkání DigiKoalice (viz <a href="https://honzajavorek.cz/blog/tyden-pro-digitalni-cesko-z-pohledu-partnera/">Týden pro Digitální Česko z pohledu partnera</a>) mě přivedla na myšlenku, že by možná šlo lidi trochu potrénovat v plánování s nejistotou.
Tak jsem šel do skupiny kariérových poradců na FB a <a href="https://www.facebook.com/groups/karieroviporadci/posts/1313279362724110/">zeptal jsem se tam</a>, jestli se to dá nějak řešit a jak.</li>
<li>K mému velkému překvapení přistál na junior.guru jednorázový pracovní inzerát, tak jsem ho zpracoval a vyfakturoval: <a href="https://junior.guru/jobs/6b2b51a02c2e30a4facc9c0c93f7924695c7c67091c0e45f63694f68/">Junior / medior PHP programátor pro e-shopy</a>
Myslel jsem, že budu zadávání inzerátů do budoucna rušit a budu se zaměřovat na jiné zdroje příjmů, takže toto mi udělalo radost jako příjemný bonus.</li>
<li>Koupil jsem si nějaké nové mikiny.
Jedna je od McLarenu, byla v Black Friday ve slevě, tak jsem zvědav, jestli mi bude, až to přijde.
Velikosti byly podle tabulky v e-shopu nějaké divoké, asi americké.</li>
<li>Měl jsem hodně obědů s hodně kamarády.
Jeden mi dal brouka do hlavy co se týče LLMs a OpenAI.
Řekl jsem si, že si dám ChatGPT víc pod nos a zaplatím si ho.
Aspoň na pár měsíců.
A budu ho používat a zkusím prioritizovat věci, kde bych to využil i přímo na junior.guru.
Nainstaloval jsem si ho i do mobilu.
Akorát <a href="https://www.lupa.cz/aktuality/openai-pozastavila-registrace-novych-platicich-uzivatelu-chatgpt/">zaplatit za to teď nejde</a>, takže to mi trochu sebralo vítr z plachet.</li>
<li>Můj asi první impulzivní nákup v životě.
Levels <a href="https://twitter.com/levelsio/status/1728730190182768803">tweetl odkaz na měřič CO2</a> a zrovna byl na německém Amazonu v Black Friday slevě, tak jsem to zvážil a koupil.
Ono já už takové zařízení chtěl dlouho, ale nikdy nebylo tak levné, takže zas tak impulzivní to možná nebylo.
Takže teď máme doma <a href="https://www.amazon.de/Qingping-Monitor-Compatible-Temperature-Humidity/dp/B092HK4BB1">Qingping Air Monitor Lite</a> a říká nám to, kdy máme větrat.
Zatím dobrý, myslím, že se nám díky tomu daří na to mnohem víc myslet a máme doma lepší vzduch.
Akorát tu je teď častěji docela velká zima 😀</li>
<li>Facebook zavedl takové to že mám souhlasit s tím, že mě špehují zdarma, nebo mám zaplatit předplatné a nechat se špehovat a ještě jim platit.
Moc mě to nevzrušovalo a odklikal jsem to, že chci dál používat Facebook zdarma, ale bohužel se to dostávalo do nekonečné smyčky.
Po kliknutí na poslední tlačítko se mi neotevřel Facebook, ale vrátilo se to zpátky na první dialog.
Výsledkem bylo, že jsem nemohl vůbec na Facebook.
Když jsem ověřil, že to není prohlížečem, systémem, internetem, ani ničím jiným, tak jsem jim napsal na support.
Nikdo mi neodepsal, ale po několika dnech to začalo fungovat.
Během toho jsem zjistil, že existuje <a href="https://mbasic.facebook.com">tahle verze Facebooku</a>, nějaká mobilní, kam jde jít i bez souhlasu.</li>
<li>Petr Viktorin odchází z Red Hatu a <a href="https://discuss.python.org/t/welcoming-the-supporting-developer-in-residence/39702">jde pracovat na CPythonu přímo pro PSF</a>.
Gratuluju!</li>
<li>Publikoval jsem Lumírovi článek blog.python.cz: <a href="https://blog.python.cz/deset-let-pyva-v-ostrave">Deset let Pyva v Ostravě</a></li>
<li>Po dlouhé době jsem si našel čas projít v klubu jedno CVčko a okomentovat ho.</li>
<li>Promoval jsem přednášku o AoC a samotné AoC v klubu, na LinkedInu, <a href="https://mastodonczech.cz/@honzajavorek/111483028795308572">na Mastodonu</a>, i na FB v příslušných skupinách.</li>
<li>Promoval jsem podcast, na LinkedInu, <a href="https://mastodonczech.cz/@honzajavorek/111493316874936481">na Mastodonu</a> i na FB v příslušných skupinách.</li>
<li>Dělal jsem drobné opravy na stahovači srazů a na <a href="https://github.com/juniorguru/teemup">teemup</a> repozitáři.
Přidal jsem do klubové integrace nějaké srazy, např. pro testery nebo pro Ostraváky.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.
Bylo toho fakt hodně a zpětně mám dojem, že některé dny jsem nedělal nic jiného, než četl a odpovídal.</li>
<li>Za 22 dní jsem při procházkách nachodil 8 km, na túrách nachodil 7 km. Celkem jsem se hýbal 11 h a zdolal při tom 15 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Plánuji teď do konce roku raději nic neplánovat.</p>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://stability.ai/news/stability-ai-sdxl-turbo">Introducing SDXL Turbo: A Real-Time Text-to-Image Generation Model — Stability AI</a><br>Nene! Wow. Už se těším, až si s tím pohraju. „SDXL Turbo achieves state-of-the-art performance with a new distillation technology, enabling single-step image generation with unprecedented quality, reducing the required step count from 50 to just one.“</li>
<li><a href="https://nitter.cz/jcontini/status/1728577804588241231">(bez titulku)</a><br>NomadList má komunitní pravidla, která zakazují: marketing, day trading, drop shipping, life coaching, guru-esque stuff, pseudoscience, anti-vaccination, supplements, change your life and work from a beach (ponzi scheme + laptops and beaches don't mix)… 😀 Nejlepší reakce? „linkedin needs to adopt this“ 😂</li>
<li><a href="https://www.forkingpaths.co/p/knowingness-and-the-politics-of-ignorance">"Knowingness" and the Politics of Ignorance</a><br>„If you want to be steeped in the most toxic forms of knowingness, log onto Twitter. On social media, few are trying to discover ideas. Instead, it’s more often a form of intellectual jousting“ „Knowingness is why present-day culture wars are so boring. No one is trying to find out anything. There is no common agreement about the facts, and yet everyone acts as if all matters of fact are already settled.“</li>
<li><a href="https://www.forkingpaths.co/p/the-biggest-hidden-bias-in-politics">The Biggest Hidden Bias in Politics</a><br>„Pundits and political analysts make a mistake due to apathy bias when they wrongly assume that other people care about politics like they do.“</li>
<li><a href="https://a2larm.cz/2023/11/od-zidovske-demokracie-k-zidovske-etnokracii-izrael-globalni-jih-a-my/">Od židovské demokracie k židovské etnokracii. Izrael, globální Jih a my</a><br>Tak tohle bylo zajímavé čtení. Barša o Izraeli a tom, jak má dnes tamní režim blízko např. k Orbánovu Maďarsku.</li>
<li><a href="https://github.com/visioncortex/vtracer">GitHub - visioncortex/vtracer: Raster to Vector Graphics Converter</a><br>Vektor z čehokoliv? Tohle vypadá slibně.</li>
<li><a href="https://www.bloomberg.com/opinion/articles/2023-11-20/who-controls-openai">Who Controls OpenAI?</a><br>„The question is: Is control of OpenAI indicated by the word “controls,” or by the word “MONEY”?“</li>
<li><a href="https://fishbowl.pastiche.org/2005/11/20/charles_rules_of_online_forums/">Charles' Rules of Online Forums</a><br>„Every forum is always in a state of constant decline.“ https://fishbowl.pastiche.org/2005/11/20/charles_rules_of_online_forums</li>
<li><a href="https://www.youtube.com/watch?v=SSdsncLXLYs">Formula 1, explained for rookies</a><br>Pokud ještě nesledujete F1 (?!), začněte tady.</li>
<li><a href="https://lifeboat.replicate.dev/">OpenAI Lifeboat</a><br>Ha ha 😀 „It's stormy out there. Jump on a lifeboat“ Dva se perou, třetí se směje.</li>
<li><a href="https://twitter.com/orikron/status/1726285047370555645">Orikron 🇵🇹 (@orikron) on X</a><br>Znáte takové to že Kleopatra to má blíž k nám (2053 let) než k dokončení Velké pyramidy v Gíze (2510 let)? Tak tady je jeden takový zajímavý moment: „As of today, the People’s Republic of China has lasted longer than the Soviet Union.“</li>
<li><a href="https://continent.substack.com/p/a-us-drone-killed-a-somali-mother">A US drone killed a Somali mother and her daughter – but no one was found guilty</a><br>„The world’s most powerful military force mistook a woman and a child for a man in rural Somalia, killed them, and decided their deaths were no one’s fault.“</li>
<li><a href="https://skins.webamp.org">Naruto_-_Bloodscent.wsz | Winamp Skin Museum</a><br>Pamatujete Winamp? Nostalgie!</li>
<li><a href="https://ai-guide.future.mozilla.org/">Mozilla AI Guide</a><br>Tohle je hodně cool. Mozilla sepsala návody jak začít s AI. A celé je to s použitím otevřených modelů.</li>
<li><a href="https://zdopravy.cz/pizzu-jde-dovezt-i-tramvaji-rozvazeci-sluzby-dusi-mesto-omezit-to-ma-reforma-parkovani-184173/">"Pizzu jde dovézt i tramvají." Rozvážecí služby dusí město, omezit to má reforma parkování - Zdopravy.cz</a><br>Tak to jsem zvědav</li>
<li><a href="https://www.vzhurudolu.cz/blog/234-frontkon-2023-poznamky">Poznámky k programu komunitních konferencí (po FrontKonu 2023)</a><br>Pěkný organizační report o Frontkonu</li>
<li><a href="https://zdopravy.cz/let-vrtulnikem-za-185-kc-z-vyluky-lanovky-ve-svycarsku-se-stal-turisticky-hit-184073/">Let vrtulníkem za 185 Kč. Z výluky lanovky ve Švýcarsku se stal turistický hit - Zdopravy.cz</a><br>Tohle Praha náhodou nezvažuje? Než bude ta lanovka? 😛</li>
<li><a href="https://www.youtube.com/watch?v=2kP78azon7Y">Alchýmia lakovania: ako sa maľujú monoposty? | EisKing TECH II.</a><br>Super video o lakování F1ček, o samolepkách sponzorů, apod.</li>
<li><a href="https://seznam-zpravy.u.mailkit.eu/mc/VUCCVPEM/VCGAICYPTXJFPOTHWV/CPCVVQCLLUL">Pod čarou: Langoš za 150? Luxusní street food nám sebral levné radosti.</a><br>„Zdá se, jako bychom přicházeli o levné jídlo, a kořeny tohoto trendu prozrazují spoustu věcí o hodnotových proměnách společnosti.“</li>
<li><a href="https://openai.com/blog/introducing-gpts">Introducing GPTs</a><br>„You can now create custom versions of ChatGPT that combine instructions, extra knowledge, and any combination of skills.“ Něco mi říká, že na tohle jsem čekal.</li>
</ul></div></div></div></div>Týden pro Digitální Česko z pohledu partnera2023-11-27T00:00:00+01:002023-11-27T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2023-11-27:/blog/tyden-pro-digitalni-cesko-z-pohledu-partnera/<div><div><div><div><p>Minulý týden (20. až 24.11.) jsem se účastnil <a href="https://budoucnostjedigitalni.gov.cz/">Týdne pro Digitální Česko</a>.
Reprezentoval jsem <a href="https://junior.guru/">junior.guru</a> jako jednu z „organizací“, které celou věc podpořily.
Tady sepíšu své poznámky o tom, jak to celé probíhalo.</p>
<figure class="figure"><img alt="Týden pro Digitální Česko" src="https://honzajavorek.cz/images/62c4cc076044e027.jpeg" class="img-fluid figure-img rounded"></figure>
<h2 id="co-to-je">Co to je<small class="permalink"><a href="#co-to-je" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Je to akce, která má za cíl zvýšit povědomí o vzdělávání v …</p></div></div></div></div><div><div><div><div><p>Minulý týden (20. až 24.11.) jsem se účastnil <a href="https://budoucnostjedigitalni.gov.cz/">Týdne pro Digitální Česko</a>.
Reprezentoval jsem <a href="https://junior.guru/">junior.guru</a> jako jednu z „organizací“, které celou věc podpořily.
Tady sepíšu své poznámky o tom, jak to celé probíhalo.</p>
<figure class="figure"><img alt="Týden pro Digitální Česko" src="https://honzajavorek.cz/images/62c4cc076044e027.jpeg" class="img-fluid figure-img rounded"></figure>
<h2 id="co-to-je">Co to je<small class="permalink"><a href="#co-to-je" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Je to akce, která má za cíl zvýšit povědomí o vzdělávání v digitálních dovednostech.
Prostě aby se lidi technologií nebáli a aby je uměli využít ve svůj prospěch.
V Evropě jsme v tomhle na chvostu, tak by to chtělo nějak podpořit.</p>
<p>Pokud to chápu správně, před rokem se v rámci našeho předsednictví EU dělala podobná akce, ale pouze pro politiky a zainteresované osoby.
Protože se to líbilo, vznikl nápad, že by se to mohlo udělat větší, pro širokou veřejnost.
Celé to organizuje tým pod místopředsedou vlády pro digitalizaci Ivanem Bartošem.</p>
<h2 id="jak-jsem-se-k-tomu-dostal">Jak jsem se k tomu dostal<small class="permalink"><a href="#jak-jsem-se-k-tomu-dostal" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Dověděl jsem se o tom díky <a href="https://www.linkedin.com/in/anezkamll/">Anežce Müller</a>, která se o tom dověděla nejspíš přes svou roli v <a href="https://cesko.digital/">Česko.Digital</a> a přes své angažmá v <a href="https://pyladies.cz/">PyLadies</a>.</p>
<p>Bylo to šup šup a už jsem si dopisoval s lidmi, jejichž e-mail končil <code>@vlada.cz</code>.
Pak zase šup šup a najednou sedím v tramvaji směr Strakovka, abychom se tam na schůzce domluvili, co bych mohl pro TDČ udělat.</p>
<figure class="figure"><img alt="Honza ve Strakovce" src="https://honzajavorek.cz/images/img-4187.jpg" class="img-fluid figure-img rounded"></figure>
<p>Upřímně jsem vůbec nevěděl, co od toho celého čekat, a taky jsem věděl, že už mám na podzim naplánované dvě akce (PyCon CZ a Frontkon), takže jsem k tomu přistupoval opatrně.
Mám byznys v jednom člověku a nechtěl jsem naslibovat hory doly.
Nakonec to dopadlo takhle:</p>
<ul>
<li>Mohl bych udělat veřejný Q&A stream na YouTube pod hlavičkou TDČ.
Už jsem takový stream jednou na jaře dělal, takže nic nového, zároveň není potřeba příprava, protože se na to připravit nedá.</li>
<li>Případně ještě nějakou přednášku, která by mohla být taky živě streamovaná na YouTube.
Přednášky běžně v klubu dělám, opět nic nového.</li>
<li>Slíbil jsem účast na zahajovací akci, kde budu moci mít i něco jako propagační stánek.
Protože jsem jeden, budu si muset sehnat někoho, kdo bude na stánku, jelikož já bych měl spíš na té akci někde mluvit s lidmi.</li>
<li>Pomůžu TDČ propagovat na svých sociálních sítích.</li>
</ul>
<h2 id="pripravy-qa">Přípravy Q&A<small class="permalink"><a href="#pripravy-qa" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Tinuki, můj pomocník na video, si mezitím našel novou práci, takže jsme trnuli, zda a jaké směny bude během TDČ mít.
Dlouho nám tedy trvalo potvrdit datum Q&A.</p>
<p>Chvíli jsem měl i náhradníka, no žonglovalo se s tím různě, ale nakonec jsme to prostě udělali úplně klasicky a vyšlo to pěkně.
V podstatě by se dalo říct, že ve chvíli, kdy jsem to přestal překombinovávat a tlačit zbytečně na důležitost té akce, tak se vše zjednodušilo a prostě jsme to udělali na pohodu, punkově jako vždycky.</p>
<p>Jinou akci jsem do programu nakonec nezapsal, protože všechno ostatní už mě vytížilo dostatečně.</p>
<h2 id="propagace-na-sitich">Propagace na sítích<small class="permalink"><a href="#propagace-na-sitich" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Propagaci TDČ jsem se snažil dělat alespoň tam, kde jsem nejaktivnější.
Na LinkedIn a na Mastodonu.
Něco jsem ale nakonec hodil i na FB, do příslušných skupin.</p>
<p>TDČ stále nabíralo nové partnery.
Postupně přibývaly firmy, které dělají kurzy, a dravě komentovaly pod každým statusem Ivana Bartoše na LinkedInu, nacpaly se do programu se svými akcemi, na web se svými články, apod.</p>
<p>Chvílemi jsem měl FOMO, ale chvílemi jsem si zas připomněl, že vůbec nevím, jaké ROI očekávat, takže asi nemá smysl to nějak zbytečně přepálit.
Zvlášť když jsem jeden a mám už i tak dost naloženo.
Moje logo se postupně ztrácelo mezi mnoha jinými.
Naštěstí bylo aspoň nejžlutější.</p>
<h2 id="pripravy-stanku-na-zahajovaci-akci">Přípravy stánku na zahajovací akci<small class="permalink"><a href="#pripravy-stanku-na-zahajovaci-akci" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Stánek jsem nakonec <em>outsourcoval</em> na kamaráda <a href="https://www.linkedin.com/in/danielsrb/">Dana Srba</a>, který vím, že je zběhlý v DTP a různých konferenčních výzdobách typu trička, <em>rollupy</em>, apod. Zároveň byl u zrodu junior.guru a ví o tom skoro všechno, takže je schopný nejen stánek zrealizovat, ale taky na něm být.
A být na něm i sám chtěl, zajímalo ho totiž, jak taková akce vypadá.
Dan měl v době před akcí nějaké osobní těžkosti, ale ujistil mě pak, že do příprav nezasáhnou, takže jsem se tím moc nestresoval a bral to celé za vyřešené.</p>
<h2 id="pripravy-diskuzniho-panelu-na-zahajovaci-akci">Přípravy diskuzního panelu na zahajovací akci<small class="permalink"><a href="#pripravy-diskuzniho-panelu-na-zahajovaci-akci" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Z organizace TDČ se ozvali, že by mě rádi viděli i v nějakém diskuzním panelu.
S tím jsem souhlasil, protože to opět nevyžadovalo žádnou přípravu, kromě odnesení košile do čistírny.
Souhlasil jsem ale pouze pod podmínkou, že v panelu nebudou samí muži.
Složení se ladilo postupně a nakonec to mělo být 3:2 včetně moderátorky Zuzany Freitas Lopesové, takže pohoda.</p>
<p>Měli jsme i pár přípravných callů.
Některé jsem stihl, jiné ne.
Na přípravném callu ohledně diskuzního panelu jsme zjistili, že by se vzhledem k různým okolnostem možná hodilo jiné složení panelu, takže nakonec byl poměr 4:1, jedinou ženou byla moderátorka.
Mrzelo mě to, ale jelikož byla tato změna poměrně turbulentní a bylo to jen pár dní před samotnou akcí, nerýpal jsem do toho už.</p>
<p>Zahájovací akce byla odpoledne.
Dopoledne před tím moderátorka poslala do e-mailu nahrubo připravené dotazy.
Úplně náhodou jsem si toho všiml, tak jsem se na ně stihl ještě připravit a sepsal jsem si odpovědi.</p>
<p>Ze začátku se měla probírat <a href="https://s3.eu-central-1.amazonaws.com/uploads.mangoweb.org/shared-prod/aspeninstitutece.org/uploads/2022/08/budoucnost-ceskeho-pracovniho-trhu.pdf">tahle studie</a>. Přečetl jsem si aspoň její souhrn:</p>
<ul>
<li><strong>Struktura trhu se promění</strong> – Na trhu práce v současnosti chybí cca 180 tisíc
pracovníků. Do roku 2030 přijde cca 330 tisíc současných zaměstnanců o práci
z důvodu zániku jejich pracovních pozic, zároveň vznikne přes půl milionu nových
pracovních míst.</li>
<li><strong>Pracovní síla zestárne</strong> – Do roku 2030 naroste počet lidí ve věku 50 - 65 let
o 18 %. Pokud by procentuální zaměstnanost věkových skupin zůstala stejná jako
dnes, pak vlivem stárnutí populace a úbytku pracovní síly ve vyšších věkových
skupinách může být v ČR do roku 2050 nižší HDP na obyvatele až o 16 % než
v případě základního trendového vývoje.</li>
<li><strong>Naroste množství neobsazených pozic</strong> – Nedostatek pracovníků na trhu sice
do roku 2030 naroste „jen“ na 190 tisíc (o 10 tisíc v absolutní hodnotě), ale vlivem
stárnutí populace a odchodu silných ročníků do důchodu se situace dramaticky
zhorší po roce 2030 a mezera poroste až na 400 tis. v roce 2040.</li>
<li><strong>Upskilling</strong> pro udržení konkurenceschopnosti a zvýšení produktivity a
spokojenosti – 4,2 milionu pracujících sice nebude přímo ohroženo, ale budou
se bude muset přizpůsobit změnám v ekonomice.</li>
<li><strong>Reskilling</strong> pracovníků, kteří jsou ohroženi nebo přímo přijdou o práci a
jejich přípravu na novou pracovní pozici – 1 milion pracujících bude vážně
ohrožen zánikem pozice.</li>
<li><strong>Doplnění pracovní síly</strong> – pracovníky ze zahraničí (nad rámec očekávaného
vývoje např. uprchlíky z Ukrajiny) a vyšším zapojením ekonomicky neaktivního
obyvatelstva - seniorů a osob pečujících o děti</li>
</ul>
<p>Studie má vadu v tom, že byla dokončena těsně před válkou a před „příchodem“ AI.
Potom se mělo diskutovat o novém projektu MPSV, katalogu kurzů <a href="http://jsemvkurzu.cz">jsemvkurzu.cz</a>.
Dotazy mířené na mou osobu měly vypadat nějak takto.
Uvádím je už s odpověďmi, které jsem si předem připravil.</p>
<ul>
<li><strong>Jak se z tohoto pohledu díváte na projekt MPSV?</strong> Záslužný počin. Oproti předchozímu systému akreditací je tohle mnohem blíže realitě a mnohem flexibilnější. Velký dík všem, kdo se zasloužili za vznik takového katalogu.</li>
<li><strong>Má šanci oslovit začátečníky? Odkazujete někdy na kurzy nabízené v rámci projektu?</strong> Ve skutečnosti to vypadá, že kurzy, které ve vašem katalogu nebudou, budou mít problém nalákat zájemce. Lidé zvlášť k aktuální ekonomické situaci nemají peněz nazbyt a pokud existuje takováto možnost získat příspěvek, tak se dle mého pozorování poptávka přesouvá ze soukromé sféry z velké části do katalogu MPSV. To přináší určitě výzvy, protože některé kurzy se to mohou snažit zneužít, jiné menší kurzy mají zase problém byrokraticky prokázat kvalitu a dostat pro uchazeče přiznánu dotaci, což pro ně může znamenat existenční problémy. Na junior.guru je katalog kurzů, který je teprve ve výstavbě. Chtěl bych, aby tam lidi mohli najít nějaký nezávislý přehled, vyfiltrovat si co existuje, zjistit jak seriózní která firma je, protože je to trochu divoký západ. Katalog kurzů MPSV jsem s tím už integroval a na profilech jednotlivých firem se zobrazuje, zda nabízí kurzy i přes eshop MPSV a jaké to jsou, i s odkazy.</li>
<li><strong>Jak velkou komunitu se vám povedlo postavit a co považujete za její největší přínos?</strong> Zhruba 400 lidí přímo v klubu, třetina ženy. Na webu, kde jsou všechny podstatné informace zdarma, je teď v průměru 16.000 návštěv měsíčně. Největší přínos vidím v tom, že si tam mohou lidi pomoci vzájemně. Já jsem jen kluk z plakátu a mohu dělat začátečníkům ambasadora, nějak tlumočit a sepisovat jejich zjištění a moudrost, ale jen v komunitě si mohou z první ruky navzájem poradit rekvalifikující se ženy na rodičovské, nebo právě lidi, kteří komunikují s ÚP. Lidé se motivují a vzájemně si pomáhají překonávat překážky na cestě, dávají si velkou psychickou podporu. Když to vidím, sám někdy nevěřím, co úžasného se mi povedlo vytvořit.</li>
</ul>
<h2 id="pripravy-rozhovoru-na-zahajovaci-akci">Přípravy rozhovoru na zahajovací akci<small class="permalink"><a href="#pripravy-rozhovoru-na-zahajovaci-akci" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Těsně před zahajovací akcí mi ještě napsali, že by se mnou chtěli na místě natočit zvlášť nějaký rozhovor, tak jsem opět souhlasil.
Dotazy mi poslali předem, takže jsem se na ně taky připravil a sepsal jsem si, co bych chtěl asi tak říkat.</p>
<ol>
<li><strong>S jakou motivací jste zakládal úspěšnou komunitu Junior.Guru, kde lidem radíte, jak získat práci a rekvalifikovat se v IT oborech?</strong><ul>
<li>Jako programátor jsem dobrovolnicky pomáhal PyLadies, což je aktivita, která se snaží dostat více žen k programování. Časem jsem pochopil, že nestačí naučit se základy programování, ale že k získání práce je potřeba ještě spousta informací, kroků, že tam jsou různé pasti, a že by to bylo dobré někam sepsat. Tak vznikla příručka.</li>
<li>Když se to lidem líbilo a sešlo se to s mým odchodem z práce, řekl jsem si, že najdu způsob, jak by mě to mohlo uživit, a zkusím to dělat na plný úvazek.</li>
<li>Ostatní věci následovaly. Komunita, podcast, atd.</li>
</ul>
</li>
<li><strong>Mají lidé, dříve technickou oblastí nepoznamenaní, z tohoto oboru strach? Jak jim pomáháte ho překonávat?</strong><ul>
<li>Často si lidi nevěří, že se na to hodí. Přitom IT není žádná magie, kterou by dělala sekta vybraných kouzelníků.</li>
<li>Sebedůvěra, sebeláska, strachy, to jsou témata, která ovlivňují hodně lidí, když chtějí změnit kariéru, a proto spolupracuji s psycholožkou Nelou Slezákovou, která se na IT specializuje. Děláme přednášky aj. osvětu.</li>
</ul>
</li>
<li><strong>Co jsou naopak nejčastější motivace lidí, kteří se chtějí do IT vrhnout bez předchozí zkušenosti?</strong><ul>
<li>Je spousta lidí, kteří se o IT nějak v minulosti otřeli, v dětství i v dospělosti, bavilo je to, ale nikdy si nemysleli, že by to mohla být jejich kariéra. Teď to chtějí zkusit.</li>
<li>Z velké části to jsou pracovní podmínky. Nejde jen o peníze, ale i o to, že máte možnost flexibilnější pracovní doby, zkrácených úvazků, práce na dálku.</li>
<li>Odcházejí z toxického pracovního prostředí s vidinou toho, že v IT s nimi budou jednat jako se svéprávným člověkem. Základní důstojnost, respekt, zodpovědnost.</li>
<li>V IT se máte stále kam posouvat a co se učit nového, máte si vždy jak polepšit.</li>
<li>Občas narazím na naivitu lidí naočkovaných marketingem vzdělávacích agentur. Myslí si, že za tři měsíce budou někde pracovat za 80.000 měsíčně. Těžko jim to zazlívat, když to na ně všude vyskakuje.</li>
</ul>
</li>
<li><strong>Jaké kompetence by měli úspěšní pracovníci v IT mít?</strong><ul>
<li>Základní práce s počítačem a internetem.</li>
<li>Velmi pomůže aspoň špatná angličtina.</li>
<li>V IT je mnoho oborů, kde se uplatní různé dovednosti. Vedoucí týmu, grafický designer, komunitní manažer, tvůrce dokumentace, nebo programátor využijí každý úplně jiné dovednosti.</li>
<li>Pro programátory je to třeba chuť šťourat do problému, dokud nevyšťourám řešení, na rozdíl od „to nejde“, nebo „nevím“, apod.</li>
</ul>
</li>
<li><strong>Jaké jsou nejobvyklejší stereotypy o práci v IT a jak se je snažíte bourat?</strong><ul>
<li>Hacker v kapuci někde ve sklepě, filmová představa z dob, kdy se IT věnovalo pár nadšenců a pro ostatní to bylo tajemné.</li>
<li>Není to pro starý. Není to pro ženy.</li>
<li>Je potřeba mít VŠ, nebo hodně umět matematiku.</li>
<li>Hromady peněz.</li>
<li>Stačí umět málo a firmy se o člověka porvou. Minimálně poslední rok je trh ochlazený a firmy vyhazují lidi, vůbec nenabírají, nebo jen málo a vybírají si. Všichni víme, že to je dočasné, protože reálně všem chybí lidi a práce, která je potřeba udělat, je hromada. Jenže v energetické krizi, inflaci, s válkou za bukem, investoři i firmy teď šetří a vyčkávají. Junior dneska pošle třeba 40-50 CVček a má problém, aby firmy vůbec odpověděly.</li>
</ul>
</li>
</ol>
<h2 id="zahajovaci-akce">Zahajovací akce<small class="permalink"><a href="#zahajovaci-akce" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Před akcí jsem byl nemocný.
Celý víkend jsem se šetřil, abych měl sílu a hlas předvést v pondělí nějaký výkon.
Rušit se mi to nechtělo.</p>
<p>V den akce jsem si ráno ladil výše zmíněné odpovědi na otázky, ale také jsem dost přemýšlel o outfitu, protože akce měla být sice neformálního charakteru, ale zároveň ji měl uvádět prezident.
Nakonec jsem zvolil nové tmavě modré džíny, slušnou bílou košili, lehké bavlněné sako, černý pásek a formální černé kožené boty.
Na samotné akci šlo nakonec vidět leccos.
Na stánku neurazilo ani tričko, na pódiu jsem myslím zapadl docela dobře a zároveň jsem to nepřehnal.
Ani prezident nepřišel v kravatě.</p>
<figure class="figure"><img alt="Ivan Bartoš" src="https://honzajavorek.cz/images/img-6408-2.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Ivan Bartoš</figcaption></figure>
<p>Snažil jsem se vyjet na místo včas, ale dopadlo to jako vždycky.
V tramvaji mi volá žena, že jsem doma zapomněl sako, tak jsem se pro něj vracel a do Holešovického Vnitroblocku dojel nakonec Boltem.
Tam mě čekal prázdný stánek, protože Dan nestíhal ještě víc.
Myslel, že nějaké věci sežene ještě v pátek před víkendem, ale překvapilo ho, že byl státní svátek.
Vše se tedy honilo na poslední chvíli.
To jsem se trochu zapotil.
Prakticky hned se začátkem akce jsme ale vše nahodili a bylo to v pohodě.</p>
<p>Měli jsme nakonec štěstí, protože jsme nafasovali stoleček u sloupu a se zásuvkami.
Na akci nebyly povolené <em>rollupy</em>, ale díky sloupu mohl Dan nalepit velký žlutý panel junior.guru do výšky a věřím, že to muselo vypálit zorničky i panu prezidentovi.</p>
<figure class="figure"><img alt="Stánek" src="https://honzajavorek.cz/images/img-6413.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Ivan Bartoš, Petr Pavel, Radko Sáblík a studenti</figcaption></figure>
<p>Chvíli jsme ladili účty na macOS, aby se dalo něco prezentovat z mého počítače.
Zjistil jsem, že <em>Guest User</em> je celkem nepoužitelný, otevře to jen Safari a nepovolí ani připojit monitor, takže jsem musel v systému Danovi vytvořit úplně nového uživatele.</p>
<p>Stánek se ale nakonec ukázal jako věc plus mínus zbytečná.
Žádná velká partnerství jsme tam nenavázali, ke stánku nikdo velmi nechodil.
A ani my jsme neměli moc důvodů chodit očumovat stánky ostatních organizací.
Co dělají Czechitas, GUG, nebo Nauč mě IT - to vím.
Co dělá kybernetický úřad nebo NPI nevím, ale taky nevím, jestli mě to vlastně zajímá, když já dělám úplně jiné věci.
Většina materiálů na stolech byla mířena na cílovky jednotlivých organizací (junioři, učitelé, studenti…), ale ty na akci nebyly, byla to uzavřená akce.
Měla sloužit networkingu mezi organizacemi, k propojování, spojení sil.</p>
<figure class="figure"><img alt="Dan a já na stánku" src="https://honzajavorek.cz/images/img-6419.jpg" class="img-fluid figure-img rounded"></figure>
<p>Podle mě by to dopadlo lépe, kdyby každý dostal na (striktně) 5 minut projektor, bez následné diskuze, a mohl by udělat <em>lightning talk</em> o tom, co jejich organizace dělá.
To bych se rád podíval a kdybych viděl nějakou možnost spolupráce či synergie, dotyčného bych si v prostoru odchytil i bez stánku.
Taky bych hned měl diskuzní otvírák pro spoustu lidí v sále: „Vy jste ta, která dělá to a tamto, že? Můžete mi o tom říct víc?“</p>
<p>Naštěstí jsme do stánku nijak zvlášť neinvestovali.
V podstatě to stálo jen trochu nervů a ten žlutý panel, který jsem ale následně hned párkrát použil.
Dan se díky cateringu dobře najedl a aspoň měl čas řešit to, že chudák cestou na akci ztratil telefon.
To mu dalo dost zabrat, protože jak zní velké moudro z prvního dílu Macha a Šebestové, „brýle bez brýlí se špatně hledají.“
Taky kvůli tomu nemáme žádné fotky toho, jak něco dělám já 😀</p>
<p>Na stánku NPI jsem ale přece jen zjistil něco zajímavého.
Paní mi dala kontakt na někoho, kdo zpracovává studii o juniorech.
Hned jsme se spojili a máme naplánovanou schůzku.</p>
<p>Zahájení akce bylo pěkné.
Pavel přitáhl pozornost spousty kamer a foťáků, možná až moc.
Z akce už jsou <a href="https://www.flickr.com/photos/199576391@N07/albums/72177720312889278">oficiální fotky</a> a vlastně mě trochu mrzí, že na nich je skoro jenom prezident 😀
Dokud na akci byl, pronásledoval ho dav fotografů a dalších lidí.
Zastavil se u stánku SŠ studentů, kteří vymysleli vlastní AI, a kde zajisté vznikly nějaké pěkné fotky jak prezident hledí vstříc budoucnosti, technologiím a mládí.</p>
<figure class="figure"><img alt="Petr Pavel a studenti" src="https://honzajavorek.cz/images/img-6411.jpg" class="img-fluid figure-img rounded"></figure>
<p>V Pavlově projevu se mi líbilo, že akcentoval věci jako zpožděné platby sociálních příspěvků, kdy kvůli přetížení úřadů a nedotáhnuté digitalizaci dostávají lidi, kteří ty peníze nejvíc potřebují a jejichž <em>cashflow</em> je úplně na prd, dávky třeba i s několikaměsíčním zpožděním.</p>
<p>Hodně se mi líbilo, co říkal <a href="https://www.linkedin.com/in/mesrsmid/">Martin Mesršmíd</a>, ale vlastně mi to zároveň znělo jako úplné sci-fi.
Že bychom nevyplňovali formuláře?
Že by si stát uměl data předávat z jednoho úřadu na druhý?
Že by nebylo potřeba žádat, ale stát by sám proaktivně navrhl, že mám na něco nárok, a já bych jen souhlasně stiskl tlačítko a bylo by hotovo?
Nicméně je fajn, že ty změny má za úkol někdo, jehož sny jsou v souladu s mými 😀</p>
<p>Co se týče diskuzních panelů a přednášek, snažil jsem se akci využít hlavně pro networking, tak jsem na nich spíš nebyl.
Taky mi trochu dělalo problém udržet si přehled o programu.
Vlastně nevím, jestli tam byl vůbec někde vyvěšený.</p>
<p>Hledal jsem v místnosti aktivně lidi, které bych aspoň trochu znal, a kteří by mě mohli představit nějakým dalším zajímavým lidem.
Potkal jsem pár takových a dobře jsme si popovídali, nebo se pozdravili.
Užíval jsem si hlavně povídání s <a href="https://www.linkedin.com/in/petra-kumov%C3%A1-215a5325a/">Petrou Kumovou</a> a jejími kolegy.
Napadlo mě pak, že bychom mohli některé z lidí, které jsem potkal, pozvat do <a href="https://junior.guru/podcast/">podcastu</a>, tak uvidíme, co z toho bude.</p>
<figure class="figure"><img alt="Newsroom" src="https://honzajavorek.cz/images/img-6410.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Ti novináři! Ti se maj</figcaption></figure>
<p>Žádné obrovské spolupráce ani žádný zásadní marketing z toho asi nebude.
Ale třeba se něco vyvrbí časem.
Někdy člověk jen někde ukáže ksicht a zúročí se to sice s velkým zpožděním, ale zúročí.
A třeba i tak, jak by to jeden ani nečekal.</p>
<p>Viděl jsem tam i nějaké známé osobnosti, jenže nejsem ten typ, abych k nim přišel, zahlásil „jé, já vás znám z televize!“ a pak nějak plynule navázal duchaplnou konverzací.
Bez toho, aby mě někdo představil, se prosazovat neumím.
A hlavně se neumím prosazovat mezi lidi, kde si nejsem jistý, zda vůbec máme společná témata k řešení.</p>
<h2 id="diskuzni-panel">Diskuzní panel<small class="permalink"><a href="#diskuzni-panel" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Téma bylo „Až se rok 2030 zeptá, jakou máte práci…“
Seděli jsme tam:</p>
<ul>
<li><strong>Zuzana Freitas Lopesová</strong> (MPSV, moderátorka)</li>
<li><strong>Jan Siuda</strong> (Boston Consulting Group, dělali studii)</li>
<li><strong>Jan Horák</strong> (MPSV - ÚP ČR, dělají jsemvkurzu.cz)</li>
<li><strong>já</strong>, vlastně taky Jan (Junior Guru, motám se kolem rekvalifikujících se lidí)</li>
</ul>
<p>Jak bylo naplánováno, nejdřív jsme probrali studii, potom katalog ÚP, potom co si o tom myslím já, ale nešlo to samozřejmě vyloženě podle scénáře a nerecitovali jsme tam připravené odpovědi.
Přišlo mi, že jsem hodně ujížděl a nedokázal říct věci stručně a úderně, takže některé důležité věci jsem neřekl.
Ale to nevadí.
Nevím, jestli je někde záznam.</p>
<p>Dost jsme se pak bavili hlavně o tom katalogu ÚP, který je sice fajn, ale má ještě dost much.
Jan Horák projekt převzal dva týdny před akcí a nezbývalo mu, než dušovat se, že mouchy vychytají.
Po panelu se kolem něj sešlo kolečko lidí, kteří ho přišli grilovat kvůli tomu, jaké má (zatím) jsemvkurzu.cz nelogičnosti a nefunkčnosti, především v procesech a aplikaci celé věci skrze jednotlivé ÚP.
Dle účastníků kolečka se to údajně neslo v poklidném duchu a nešlo o opravdové grilování, jen o „zpětnou vazbu“, ale jak to vnímal pan Horák, to nevím 😀</p>
<p>Měl jsem v kapse připravený Coldrex, kdyby to bylo špatný, ale naštěstí to špatný nebylo.
Mluvit jsem mohl, soustředit jsem se taky dokázal.
Během panelu mě akorát rozrušila pěkná dáma v červeném, která se mihla za sklem, to jsem si vzpomněl na Matrix a na chvíli ztratil pozornost.
A pak mě ještě rozrušil fakt, že jsme seděli na nějakých historických křesílkách, protože to jsem si hned vzpomněl na tzv. Zemanovu olympiádu Standy Bilera (<a href="https://www.youtube.com/watch?v=Z6aaR8oeOqQ">první díl</a>, <a href="https://www.youtube.com/watch?v=dMnFA9G6KvY">druhý díl</a>).
Když se vám tohle dostane v ten moment do hlavy, už to z ní nevyndáte.
Najít potom polohu na křesle, která bude působit důstojně, je značně obtížné.</p>
<div class="alert alert-warning" role="alert">
<p><strong>Dodatečně:</strong> Záznamy ze zahájení <a href="https://www.youtube.com/playlist?list=PLoSmql-Cov7ejomK9P_6anEij26T0_1rs">jsou na YouTube</a>, já jsem v <a href="https://www.youtube.com/watch?v=nfMqLOVLg5o&list=PLoSmql-Cov7ejomK9P_6anEij26T0_1rs&index=6">Bloku 5</a>.</p>
</div>
<h2 id="rozhovor">Rozhovor<small class="permalink"><a href="#rozhovor" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Po panelu jsem se zakecával s lidmi, ale pak si mě odchytili ještě na ten samostatný rozhovor.
Dotáhli mě na kameru před rollup a představili mi moderátorku, která mě bude zpovídat - onu dámu v červeném.</p>
<p>Rozehřáli jsme se nějakým <em>small talkem</em> a jelo se.
Otázky jsem dostával asi ty, které byly avizovány, rozhodně mě žádná nezaskočila, ale uvolněný jsem teda nebyl.
Všelijak jsem se tam posouval a mával rukama a snažil se opět o nějaký stručný projev, ale spíš jsem zase chrlil nějaká náhodná slova jedno za druhým a kdo ví, co z toho vůbec bude.</p>
<p>Moderátorka byla milá, ale jak přikyvovala a ptala se, v hlavě mi naskočila scéna z Chalupářů, kde přijede televize na slavnosti a zpovídá místní (<a href="https://www.ceskatelevize.cz/porady/901363-chalupari/275320075140010/">čas 26:17 tady</a>), a nemohl jsem se toho obrazu zbavit 😀</p>
<figure class="figure"><img alt="Rozhovor" src="https://honzajavorek.cz/images/img-6421.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Toto nejsem já, ale přesně takhle to vypadalo</figcaption></figure>
<p>Pak jsem se ještě chvíli bavil s kameramankou, která na základě videa bude psát i článek.
Nezapamatoval jsem si v tom stresu jména, takže nemám kontakty, ale video by pak prý mělo být na sociálních sítích TDČ, na <a href="https://eduklub.cz">eduklub.cz</a> a na <a href="https://itpeoplecz.cz">itpeoplecz.cz</a>.
S vydáním tohoto článku se mi na video čekat nechce, ale až ho někde zahlédnu, tak ho sem doplním.</p>
<div class="alert alert-warning" role="alert">
<p><strong>Dodatečně:</strong> Záznam rozhovoru <a href="https://www.youtube.com/watch?v=yIdQ1Fmziyg">je na YouTube</a>, článek vyšel jako <a href="https://www.itpeoplecz.cz/jak-se-lovi-ajtaci-javorek-pomaha-projektem-junior-guru-plnit-sny-odvaznym-zajemcum-o-it/">Jak se loví ajťáci. Javorek pomáhá projektem Junior Guru plnit sny odvážným zájemcům o IT</a>.</p>
</div>
<h2 id="stream-na-youtube">Stream na YouTube<small class="permalink"><a href="#stream-na-youtube" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Po náročném pondělí jsem měl večer dost vymluvený hlas a můj stav se trochu zhoršil.
Tím byla ohrožena moje úterní online akce, ale řekl jsem si, že to nebudu hrotit a že si to dám prostě u čajíčku.</p>
<p>Napadlo mě donést si do kanceláře ten žlutý panel ze stánku a dát ho nějak za sebe, abych v záběru neměl jen bílou stěnu.
Dal jsem ho na topení a krásně byl vidět.</p>
<p>Akci jsem zahájil anketou, zda mám pít čaj nebo Coldrex, ale bylo to jen na oko, protože jsem hodlal vypít postupně oboje.
To mi pomohlo zvládnout mluvit skoro 2 hodiny v kuse.
Záznam je <a href="https://www.youtube.com/watch?v=9mpIl8kFulA&t=1s">tady</a>.</p>
<figure class="figure"><img alt="Stream na YouTube" src="https://honzajavorek.cz/images/screenshot-2023-11-28-at-20-10-40-honza-javorek-programovani-jako-kariera-ptej-se-q-a-v-ramci-tydne-pro-digitalni-cesko.png" class="img-fluid figure-img rounded"></figure>
<p>Byla to pohoda, akorát mě překvapilo, že z YouTube chatu nebyly skoro žádné dotazy.
Připojil se vlastně někdo?
Očekávání byla velká, když to byla TDČ akce pro veřejnost, ale nakonec nevím, jak moc „široké veřejnosti“ dorazilo.
Akci jsem předtím normálně propagoval, takže to, že na ni přišli lidi mimo klub, mohlo být i díky mně samotnému.
Na <a href="https://www.youtube.com/@juniordotguru">YouTube kanálu</a> jsem taky nezaznamenal žádný zásadní nárůst odběratelů (zhruba jeden nebo dva).</p>
<p>Za 6 dní to má 210 shlédnutí, přičemž ta jarní Q&A má po 7 měsících 585 shlédnutí.
Možná má někde YouTube detailnější statistiky, ale já se v tom zas tolik nevyznám.
Každopádně se připojilo velké množství lidí ze samotného klubu, přes 30 online, což Q&A zařadilo k těm nejúspěšnějším akcím v klubu.
Z klubu nakonec padala i většina otázek.</p>
<h2 id="vyrocni-setkani-digikoalice">Výroční setkání DigiKoalice<small class="permalink"><a href="#vyrocni-setkani-digikoalice" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Mezitím mi přišlo do mailu, že v pátek bude výroční setkání členů <a href="https://digikoalice.cz/">DigiKoalice</a>.
To je platforma, která se snaží v jednom guláši smíchat stát, neziskovky, firmy, apod., aby o sobě všichni věděli, mohli se nějak koordinovat, spolupracovat, pomáhat si.</p>
<p>Je to celé zaměřené hodně na digitální výuku ve školách, MŠMT, apod., takže to jde většinou mimo mně.
I proto jsem na výročním setkání nikdy nebyl, a to ani když to bylo online.
Ale letos jsem si řekl, že když je to někde na Kampě a já už budu během TDČ ve varu, tak proč bych tam při pátečku tou tramvají nezajel.</p>
<p>Tak se i stalo.
No a jak už to tak bývá, organizátoři, především <a href="https://www.linkedin.com/in/naskep/">Petr Naske</a>, který mě do DigiKoalice kdysi přitáhl, si všimli, že chci přijít, a hned mě ukecali na to, abych tam měl nějaký výklad u stolečku.</p>
<figure class="figure"><img alt="Zahájení akce" src="https://honzajavorek.cz/images/img-6444.jpg" class="img-fluid figure-img rounded"></figure>
<p>Opět nebyly povolené rollupy, ale mohli jsme si vzít letáčky.
Tak jsem vzal samolepky a „the letáček“, tedy onen žlutý panel z pondělního stánku.</p>
<p>Nečekal jsem od toho vlastně nic, takže jsem nebyl v žádném stresu a jen se těšil na nějaké pěkné prostory, možná zajímavé lidi, možná nějaké jednohubky a kafe.
Konalo se to v Lichtenštejnském paláci přímo u Vltavy, takže krásné prostory a krásné výhledy.
Z různých promluv organizátorů jsem pochopil, že tyto prostory měli k dispozici výjimečně jen díky tomu, že byla akce zařazena do TDČ.</p>
<figure class="figure"><img alt="Vitrínky" src="https://honzajavorek.cz/images/img-6451.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Nejkrásnější cesta na WC, kterou jsem kdy viděl, lemovaná vitrínami</figcaption></figure>
<figure class="figure"><img alt="Šatna" src="https://honzajavorek.cz/images/img-6454.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Nejkrásnější šatna, kterou jsem kdy viděl, s Masarykem</figcaption></figure>
<p>Nakonec jsem měl hned několik pěkných konverzací a myslím že i svým povídáním u stolečku jsem zaujal svou skupinku tří nebo čtyř přihlížejících.
Povedlo se mi družit především s lidmi kolem Matfyzu, <a href="https://confido.institute/">Confido Institute</a>, <a href="https://www.psanihrave.cz/">Psaní Hravě</a> a <a href="https://www.orgpad.com/">OrgPad</a>.
Zajímavá směsice!</p>
<figure class="figure"><img alt="Záblesk hezkého počasí" src="https://honzajavorek.cz/images/img-6457.jpg" class="img-fluid figure-img rounded"></figure>
<p>Na setkání jsem si uvědomil, že učitelé už docela dost jedou Python a možná by mělo velký smysl říct jim i o tom, že existuje <a href="https://pyvec.org/">Pyvec</a> (kde jsem ve výboru) a jeho <a href="https://docs.pyvec.org/">dokumentace</a>.
Tak jsem to tam do nich tlačil a když jsem přijel domů, ještě jsem rozhodil pár statusů do skupin na FB, kde jsem se snažil lidem připomenout, že Pyvec existuje, co je, a že máme třeba <a href="https://docs.pyvec.org/guides/meetup.html">návod, jak si založit Python sraz ve vlastním měste</a>.
Taky mi došlo, že by mohl být Pyvec členem DigiKoalice.
Ale nepodnikl jsem zatím žádné kroky pro to, aby se jím stal.</p>
<h2 id="jak-to-cele-hodnotim">Jak to celé hodnotím?<small class="permalink"><a href="#jak-to-cele-hodnotim" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Vůbec jsem nevěděl, co mám vlastně od TDČ čekat.
To asi nikdo, včetně organizátorek, protože to byl v podstatě první ročník, pomineme-li loňský nultý.</p>
<p>Řekl jsem si, že to zní jako fajn aktivita a pokud to nebude žádný průšvih, tak že to rád podpořím a třeba mi to něco i dá.
Průšvih to nebyl, podpořil jsem to rád.
Očekávání ohledně toho, co mi to má dát, jsem měl nastavena raději nízko.</p>
<p>Šel jsem do toho s tím, že se pokusím nepřepálit vloženou energii, že vymyslím věci, které bych možná stejně dělal, a uvidím, co z toho celého bude.
Tak se i stalo a já jsem rád, protože mám z celé věci ve výsledku dobrý pocit.</p>
<p>S ničím jsem se zbytečně nestresoval, nic složitého ani velkolepého jsem nepřipravoval, žádné ohromné částky neinvestoval.
Přesto jsem se zapojil a akci snad nějak podpořil a pomohl jí.
Na oplátku jsem z toho měl zajímavé zážitky, možná do budoucna zajímavá spojení, a mohl jsem se ukázat na potenciálně zajímavých místech.</p>
<p>Když jsem v roce 2019 amatérsky maloval v Keynote logo junior.guru, asi jsem si nemyslel, že za 4 roky bude rotovat na slajdu za prezidentem nebo místopředsedou vlády.
To, že mě někdo pozval na uzavřenou akci, kde jsou politici a prezident, a to, že mě dobrovolně ještě nacpali do všech panelů a rozhovorů, zřejmě znamená, že dělám něco dobře a že to za něco stojí.</p>
<p><a href="https://www.linkedin.com/feed/update/urn:li:activity:7132738104519442432/">Můj status na LinkedIn</a>, který v podstatě jen říká, že jsem byl v jedné místnosti s prezidentem a měl jsem tam velký žlutý obdélník, má k dnešnímu dni 4.262 impresí, 142 reakcí, 1 repost a 12 komentářů.
Nakonec mi možná udělal větší parádu, než celý ten stánek ve skutečnosti 😀
Dává mi to kredit.</p>
<p>Nebo profil Ivana Bartoše - má na LinkedIn méně sledujících než já (2.526 vs 3.088) a když sdílí něco mého, možná to ani nedostane k více lidem.
Ale hlavně to dává tomu, co dělám, kredit.
A o tom to asi hlavně je.
Do mailu mi dokonce přišlo PDFko s jeho podpisem pod tzv. záštitou 🙂</p>
<p>Pokud mám vypočítat ROI, zainvestoval jsem především čas a přípravy a stálo mě to pár tisíc za realizaci stánku a streamování Q&A.
Ale Q&A bych nejspíš napodzim dělal i bez TDČ.
Na oplátku mám zážitky, možná kontakty, a hlavně kredit.
Někde jsem se ukázal, někdo se o junior.guru dověděl.</p>
<p>Taky mám teď žlutý panel, který se třikrát za jeden týden osvědčil v boji.
Vytvořený narychlo na koleně, v náhodném formátu a provedení, ale nakonec překvapivě dobře použitelný pro vše, co jsem teď potřeboval.
A relativně snadno se převáží MHD, když pominu, že se musím naučit s ním neliskat spolucestující, když se mi do něj v metru opře vítr.</p>
<figure class="figure"><img alt="Panel" src="https://honzajavorek.cz/images/img-6458.jpg" class="img-fluid figure-img rounded"></figure>
<p>Mohl jsem něco udělat líp?
Možná jsem mohl ještě víc networkovat, ale nic si nevyčítám, na zahajovací akci TDČ jsem byl z velké části prostě jen rád, že zvenku připomínám zdravého člověka.
Možná jsem mohl udělat víc akcí, ale jaký efekt by to mělo?</p>
<p>Mohlo TDČ udělat něco líp?
Nevím.
Určitě spoustu věcí, různých drobností, ale byl to první ročník tohoto formátu.
Věci mají svůj rozjezd a i kdyby se vše povedlo, může trvat i roky, než na TDČ budou proudit davy.
Jako start mi to přijde v pohodě.
Co musím vyzdvihnout, byla perfektní komunikace a koordinace všech organizátorek.
Vždy jsem měl všechny informace a pokud jsem neměl, okamžitě odepisovaly na e-maily a vše objasnily.</p>
<p>Přijde mi fajn, že vláda se TDČ nesnaží nějak vymyslet sama, bez kontaktu s běžnými smrtelníky, ale naopak šli a oslovili všechny možné organizace, neziskové i ziskové.
Takhle to mělo nějaký smysl a možná jsme nakonec v očích veřejnosti propůjčili kredit trochu i my této vládní akci.
Že to není jen nějaké divadlo, aby se utratily rozpočty a lidi se polácali po zádech, ale že to je akce, kterou i lidi z praxe berou vážně.</p>
<p>Je zajímavé, že ještě před pár lety by na takovou akci o digitalizaci jednak nejspíš nedorazil prezident, jednak bych na ni nedorazil ani já, pokud by to bylo pod záštitou tehdejší vlády - nebo onoho prezidenta.
Tato vláda není dle mých představ (chtělo by se říct - která je?), ale aspoň nemám morální problém být v jedné místnosti s Bartošem nebo Pavlem.</p>
<p>Bylo to fajn.
Díky všem, že jsem mohl být součástí téhle akce, ačkoliv jsem taková malá ryba, a že jsem nakonec dostal tolik prostoru, aniž bych si o něj vyloženě říkal.</p>
<div class="alert alert-warning" role="alert">
<p><strong>Dodatečně:</strong> Za celý Týden se podařilo přilákat 5.369 účastníků na 126 fyzických i online akcí ve 30 městech České republiky.</p>
</div></div></div></div></div>Týdenní poznámky: Vnímání2023-11-10T00:00:00+01:002023-11-10T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2023-11-10:/blog/tydenni-poznamky-vnimani/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-nove-klubove-tipy-a-pripravy-tdc/">posledních poznámek</a> už utekl nějaký ten týden (3. 11. až 10. 11.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-nove-klubove-tipy-a-pripravy-tdc/">posledních poznámek</a> už utekl nějaký ten týden (3. 11. až 10. 11.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/letni-pit-stop/">teď plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/3/">tabulky na GitHubu</a>.</p>
</div>
<p>S koncem předchozího týdne se v klubu rozhořela vyhrocenější diskuze.
Byť se vlastně nic strašného nestalo, z nějakého důvodu mě to dost smetlo a musel jsem si pak několik dní dát úplně pauzu od Discordu.</p>
<p>Během víkendu jsem se viděl s kamarády v Blansku a v Brně.
Bylo to fajn a povedlo se mi při tom trochu zrelaxovat.</p>
<p>S jedním kamarádem jsme si dali „terapeutickou“ procházku na pivo, lesem a polem, během které jsme šťourali do různých věcí, které mě trápí nebo trápily.
Díky tomu se mi v hlavě hodně věcí spojilo a začal jsem přemýšlet nad tím, zda podlomené zdraví a další věci nepramení z chronického stresu způsobeného primárně mým podnikáním.</p>
<p>V pondělí jsem zašel k zubaři, kterého máme z historických důvodů v Brně, a tam jsem si uvědomil, že jsou i horší věci, než roztržky v klubu.
Každopádně mám dojem, že mám „plný kyblík“ a když do něj cokoliv menšího cákne, tak to přeteče.
Ať už to bylo přednášení na Frontkonu, nebo teď ta roztržka.</p>
<p>Zpomalovat jsem začal už týden zpět, např. rušit různá svá naplánovaná angažmá.
Budu v tom pokračovat a hledat další příležitosti, jak snížit zátěž.
Zkusím na sebe teď přestat klást jakékoliv nároky.
Budu trochu pracovat, trochu odpočívat.
Nebudu nic hrotit.
No uvidíme.</p>
<p>Projekt v jednom člověku má hromadu výhod a já tyto výhody požívám plnými doušky a velmi rád.
Má ale i nevýhody a já se s nimi musím naučit nějak pracovat.
Nejspíš už tomu nepůjde dát úplně volný průběh.</p>
<figure class="figure"><img alt="Kamechy" src="https://honzajavorek.cz/images/photo-2023-11-10-17-54-53.jpeg" class="img-fluid figure-img rounded"></figure>
<h2 id="programatori-zacatecnici">Programátoři začátečníci<small class="permalink"><a href="#programatori-zacatecnici" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Největší a nejznámější skupina na Facebooku, která se zabývá programátory začátečníky, udělala partnerství s Českou Spořitelnou.
ČS jim poslala mega na rozvoj.
Najali si teď agenturu a ta pro ně teď skupinu spravuje a rozvíjí, organizuje události, apod.
Zajímavý vývoj!</p>
<p>Je to konkurence?
Není to konkurence?</p>
<p>Možná to konkurence je.
Musí mě uchránit <a href="https://en.wikipedia.org/wiki/Unique_selling_proposition">USP</a>.
Mají jiné parametry, je to masovka, je to zadarmo.
Každopádně musím sledovat, co dělají, a když něco budou poskytovat zdarma, nesmím se snažit konkurovat.
Dělají online eventy?
V tom případě musím dělat buď unikátní online eventy, nebo je prohlásit za komoditu a nemohu je vyzdvihovat jako něco, co lidé jinde nenajdou.</p>
<p>Možná mi to pomůže pročistit způsob, jak vlastně klub prodávat a jak vysvětlovat, v čem jsou jeho přednosti.
Možná se přestanu soustředit na komodity a začnu pracovat na trumfech, které mám dávno v hlavě a které nikdo jiný než já udělat nemůže.</p>
<p>Každopádně mi nic nebrání být v té skupině aktivnější a tím upozorňovat na existenci junior.guru 😀</p>
<h2 id="lepsi-onboarding">Lepší onboarding<small class="permalink"><a href="#lepsi-onboarding" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Zjistil jsem, že když se vlákna s klubovými tipy archivovala, což se na Discordu děje automaticky po nějaké době, tak je skript už neviděl a založil nové tipy.
Ajaj!
Takže jsem to přepsal a opravil.</p>
<p>Pak jsem zkusil udělat tzv. <em>Server Guide</em>, což je nová funkce Discordu pro komunity.
Dají se tam udělat z kanálů „stránky“, kde mohou být nějaké statické informace.
První takovou stránku jsem vytvořil pro seznam záznamů klubových akcí.</p>
<figure class="figure"><img alt="Server Guide" src="https://honzajavorek.cz/images/screenshot-2023-11-10-at-16-58-44.png" class="img-fluid figure-img rounded"></figure>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Jeden den jsem „podlehl“ rýmičce.
Jen jsem ležel v posteli a koukal na přednášky, na které nemám jindy moc čas.
Bylo to jako být celý den na konferenci, ale v posteli, a nemít kolem sebe žádné lidi.
Mělo to svoje kouzlo!
Protože mě lidi nebo komunikace teď spíš unavují, perfektně jsem si odpočinul.</li>
<li>Psal jsem, že jsem dal do popisků podcastových epizod reklamu na junior.guru a že jsem změnil titulek podcastu, aby obsahoval některá klíčová slova.
Není to snad ani týden a už mi přijde, minimálně pocitově, že do klubu chodí víc a víc lidí, kteří mi do ankety píšou, že mě našli díky podcastu.
Některí dokonce píšou „při hledání podcastů na Spotify“, což dost specificky poukazuje na to, že přesně tímto způsobem to bylo.
Zajímavé.</li>
<li>Aktualizoval jsem seznam svých vystoupení v YAMLu tady na blogu a opravil jsem nějaké chyby v načítání <em>tootů</em> z Mastodonu.</li>
<li>Omezil jsem skript na špendlíky v klubu, aby se nekoukal na ošpendlíkované zprávy, které jsou starší než půl roku.
Přijde mi to zbytečné.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.</li>
<li>Za 8 dní jsem na túrách nachodil 8 km. Celkem jsem se hýbal 3 h a zdolal při tom 8 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Udělám promo na TDČ, na podcast, atd.</li>
<li>Budu pokračovat ve vylepšování <em>onboardingu</em> nových členů do klubu.
Překopu „nástěnku“, pak se uvidí.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://openai.com/blog/introducing-gpts">Introducing GPTs</a><br>„You can now create custom versions of ChatGPT that combine instructions, extra knowledge, and any combination of skills.“ Něco mi říká, že na tohle jsem čekal.</li>
<li><a href="https://www.youtube.com/watch?v=9PMu3i4-RFk">Is the future of documentation dynamic?</a><br>Chris vysvětluje, kam se posouvá svět dokumentace. React komponenty přímo v textu. Setkali jste se už s nějakými takovými dynamickými prvky? Používáte?</li>
<li><a href="https://www.voxpot.cz/velmoci-se-pretahuji-o-mesic-planuji-na-nem-zakladny-i-trenink-astronautu-pro-cestu-k-marsu/">Velmoci se přetahují o Měsíc. Plánují na něm základny i trénink astronautů pro cestu k Marsu - VOXPOT</a><br>Zajímavý přehled, byť mi tam trochu chybí zmínka o českém programu Kosmo 😉</li>
</ul></div></div></div></div>Týdenní poznámky: Nové klubové tipy a přípravy TDČ2023-11-03T00:00:00+01:002023-11-03T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2023-11-03:/blog/tydenni-poznamky-nove-klubove-tipy-a-pripravy-tdc/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-dna-a-oubite-v-sedym-habite/">posledních poznámek</a> už utekl nějaký ten týden (27. 10. až 3. 11.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-dna-a-oubite-v-sedym-habite/">posledních poznámek</a> už utekl nějaký ten týden (27. 10. až 3. 11.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/letni-pit-stop/">teď plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/3/">tabulky na GitHubu</a>.</p>
</div>
<p>Dva dny z pěti u nás byla rodinná návštěva, tři dny z pěti jsem byl u nějakého doktora.
Takže to dnes bude rychlé.</p>
<h2 id="nove-tipy-v-klubu">Nové tipy v klubu<small class="permalink"><a href="#nove-tipy-v-klubu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Ani nevím, jak se to stalo, protože v prioritách na tento týden jsem to neměl, ale prostě jsem vypustil mezi lidi nové tipy.
Asi mě už štvalo, že se to nehýbe, a neviděl jsem vlastně důvod, proč to nespustit.</p>
<p>Doladil jsem popisky nových kanálů, našel pro ně vhodné místo v seznamu kanálů, a pustil do nich lidi.
Do budoucna to můžu vylepšovat, ale tohle teď už může mezitím sbírat zpětnou vazbu.</p>
<p>Pak jsem oznámil, že tipy (nejen) pro nováčky v klubu teď budou fungovat jinak, a do všech asi 200 nebo kolika původních automatických soukromých kanálů s tipy jsem ručně napsal, že kanál bude brzo končit a bude to jinak.
Hodilo se znát pár klávesových zkratek na Discordu - jinak bych to dělal asi dodnes.
Pak jsem všechny kanály prošel ještě jednou a rovnou ručně smazal ty, které zbyly po členech, kteří z klubu už odešli.</p>
<p>Následně jsem připravil půdu pro to, aby mohly staré tipy zmizet.
Upravil jsem kód tak, aby nové kanály nezakládal a nic nedělal s těmi starými.
Natvrdo jsem tam zadal, že 1.12. bot všechny smaže.</p>
<p>Také jsem všechny tyto kanály přidal do seznamu ignorovaných kanálů, aby bot šetřil čas a zdroje, když si dělá <em>snapshot</em> obsahu klubu.
Když už jsem byl u toho, zkusil jsem optimalizovat v této oblasti ještě pár věcí.
Výsledkem je, že se ten <em>snapshot</em> nedělá 4.1 min, ale 3.7 min.
Žádná sláva, ale zlepšení to je.</p>
<p>Do kanálu #ahoj jsem ještě přidal to, že bot tam jednou měsíčně upozorní, že se mají lidi představovat a odkáže na jeden z tipů, který se této problematice věnuje.</p>
<p>Prošel jsem celé nastavení fičury Onboarding na Discordu a poladil, co šlo.
Opravil jsem i nějaké resty z minulosti a zjednodušil celý proces přijímání nováčků.
V klubu jsem ještě pouklízel i ostatní kanály, jemným způsobem změnil kategorie, a nějaké nepotřebné kanály jsem bez řečí archivoval.</p>
<figure class="figure"><img alt="Oznámení" src="https://honzajavorek.cz/images/screenshot-2023-11-03-at-21-39-25.png" class="img-fluid figure-img rounded"></figure>
<h2 id="tyden-pro-digitalni-cesko">Týden pro Digitální Česko<small class="permalink"><a href="#tyden-pro-digitalni-cesko" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Přípravy <a href="https://www.budoucnostjedigitalni.cz">TDČ</a> vrcholí.
Měl být nějaký call, kde nám - účastníkům - bude Ivan Bartoš sdělovat nějaké koordinační informace, ale kvůli akutní návštěvě očního jsem tam nebyl.
Mám jen slajdy.
Vypadá to, že kampaň bude vrcholit a že by se o akci snad mohla ta široká veřejnost i dozvědět.
To mě těší, protože mi přišlo, že se toho zatím zas tak moc neděje.</p>
<figure class="figure"><img alt="Plán" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-11-03-at-21-56-31.png"></figure>
<p>S Tinukim jsme finalizovali datum mojí Q&A a naplánovali <a href="https://youtube.com/live/9mpIl8kFulA">stream na YouTube</a> i <a href="https://junior.guru/events/39/">událost na webu a v klubu</a>.
Ta událost na webu je hrozná, ale holt jsou tyhle podstránky stále v rekonstrukci a já nemám chuť ani čas to teď narychlo dodělávat.
Podstatný je ten stream na YouTube.
Do TDČ jsem poslal aktualizaci a všechny zbývající informace až dnes, kdy na to byl <em>deadline</em>.</p>
<p>Na zahájení TDČ mohu mít stánek, ale nemohu se naklonovat, takže jsem potřeboval někoho na ten stánek.
Nakonec to bude <a href="https://www.linkedin.com/in/danielsrb/">Dan Srb</a>, který mi zároveň udělá stánek „na klíč“.
Volali jsme si a všechno jsme si hezky dohodli.
Připraví „výzdobu“ a vše co je potřeba, a na stánku pak i reálně bude.
Já mu pak pošlu peníze, hotovo.
A mám z toho velkou radost!
Nemusím nic řešit, prostě se to stane!
Zároveň vím, že Dan se v těchto věcech vyzná, takže to udělá dobře.
Takové delegování je návykové, snad se to naučím i u dalších věcí.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Pavlína vydala po pauze další podcast!
Myslím, že <a href="https://junior.guru/podcast/19/">díl s Vildou</a> se vydařil a je fajn.
Juchů!</li>
<li>Napadlo mě dát do popisku každého dílu podcastu drobnou reklamu na junior.guru, a tak jsem i učinil.
Zobrazovat se to bude pouze v aplikacích, protože je to v podcastovém XML feedu, na <a href="https://junior.guru/podcast">junior.guru/podcast</a> to pochopitelně nemám.</li>
<li>Vytvořil jsem v klubu kanál pro letošní <a href="https://adventofcode.com/">Advent of Code</a>, sepsal jsem vysvětlení, co to je, a domluvil s <a href="https://www.linkedin.com/in/karolina-surma-950452b7/">Karolinou Surmou</a> přednášku na tohle téma, <a href="https://junior.guru/events/40/">která se stihne ještě v listopadu</a>.</li>
<li>Venku začalo pršet, tak jsem po dlouhé době napsal článek na blog: <a href="https://honzajavorek.cz/blog/dalsi-komunita-na-discordu/">Další komunita na Discordu</a>.</li>
<li>Do <a href="https://junior.guru/courses/">katalogu kurzů</a> jsem na žádost přidal další záznam a při té příležitosti aktualizoval screenshoty pro všechny odkazy na webu.</li>
<li>A protože pořád přšelo, tak jsem mrknul i na zálohu fotek do cloudu, kterou jsem měl delší dobu nedořešenou.
Objevil jsem <a href="https://github.com/rclone/rclone/">rclone</a> (který <a href="https://github.com/rclone/rclone/issues/1778">nefunguje s iCloudem</a>), <a href="https://github.com/icloud-photos-downloader/icloud_photos_downloader">icloud_photos_downloader</a>, <a href="https://github.com/steilerDev/icloud-photos-sync">icloud-photos-sync</a>, <a href="https://github.com/isislovecruft/pyrsync">pyrsync</a>, nebo tenhle zajímavý <a href="https://www.reddit.com/r/osx/comments/vftz9d/how_to_stop_macbook_from_downloading_the_entire/">návod</a>, jak mít na iCloudu víc věcí, než se vám vleze na disk.
Nakonec jsem zjistil, že se asi něco změnilo a v nových verzích macOS můžu prostě rsyncnout všechno na iCloud, pak to v kontextovém menu označit jako něco, co nemá být na mém počítači, a mám hotovo.
Dřív to takhle přímočaré rozhodně nebylo.
Každopádně pro teď případ uzavřen a fotky mám teď zazálohovány na dvou místech - jednou na externím disku, jednou v cloudu.</li>
<li>Překopal jsem trochu, jak je strukturovaný skript na stahování dat z podnikatelského účtu, aby se v tom dalo líp orientovat.</li>
<li>Udělal jsem <a href="https://github.com/juniorguru/juniorguru-chick/pull/32">code review</a> a máme zase o nějakou tu fičuru v klubu navíc.</li>
<li>Přejmenoval jsem repo real time bota z <code>juniorguru-chick</code> na <code>chick</code>, protože celý název repozitáře <code>juniorguru/juniorguru-chick</code> mi přišel zbytečně zdvojený.</li>
<li>Kašpárkova kniha Fosilie <a href="https://www.palmknihy.cz/ekniha/fosilie-389616">vyšla i jako e-book</a>, tak jsem si to koupil a zkusím si najít čas na čtení.
Jsem na to zvědavý.</li>
<li>Měli jsme schůzi výboru Pyvce.
Zápis jako obvykle <a href="https://docs.pyvec.org/operations/meeting-notes.html">zde</a>.</li>
<li>Vyhodil jsem všechny vyjímky a „na plné kule“ zapnul formátování kódu přes <a href="https://github.com/psf/black">black</a>.
Postupná implementace na větší a větší množinu souborů mi pomohla se zvykáním.
Poslední dobou jsem se ale přichytával, že už mi to v těch nepokrytých souborech vyloženě chybělo, takže nebylo proč otálet.</li>
<li>Dál jsem čistil Trello, především sloupeček pojmenovaný <em>onboarding</em>, který souvisí i s tipy pro nové členy v klubu.</li>
<li>Řešil jsem zase doktory, pro změnu hlavně oční.
Chvíli to bylo dramatické, ale dopadlo to, zdá se, dobře.</li>
<li>Zrušil jsem všechny akce, které se rýsovaly po Týdnu pro Digitální Česko.
Mám „přeplněný kyblík“ a chtěl bych chvíli jen dělat svoje, být v teplákách na gauči a pít si čaj.
Listopad až leden, a možná ještě déle, jsou podle mě ideální měsíce, kdy si tohle nadělit.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.</li>
<li>Během 8 dní jsem při procházkách nachodil 8 km. Celkem jsem se hýbal 4 h a zdolal při tom 8 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Udělám promo na TDČ, na podcast, atd.</li>
<li>Budu pokračovat ve vylepšování <em>onboardingu</em> nových členů do klubu.
Překopu „nástěnku“, pak se uvidí.</li>
<li>Naplánuju všechny přednášky na rok 2024.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.seznamzpravy.cz/clanek/kultura-muzi-se-po-ctyricitce-nekam-ztrati-rika-spisovatel-michal-kasparek-239175">„Muži se po čtyřicítce někam ztratí,“ říká spisovatel Michal Kašpárek</a><br>Kašpárek: „Do jaké míry si mohu zařídit život podle sebe? Urvat si, co chci, a „děcka nazdar, prostě jste samostatný?“ Do jaké míry a komu se vlastně za svoje skutky a životní volby zodpovídám?“</li>
<li><a href="https://www.buzzsprout.com/2007031">Jak bude vypadat Hlavní nádraží? Poslechněte si, co s nim mají investoři v plánu — Město</a><br>Chystá se kompletní rekonstrukce Hlaváku a přednádražního prostoru v Praze</li>
<li><a href="https://www.forbes.com/sites/stevenbertoni/2023/09/26/top-creators-2023/">Top Creators 2023</a><br>„Lame, who in 2019 was assembling car filters in a factory outside Turin, now has more than 240 million social media followers and has scored lucrative partnerships with Hugo Boss, State Farm, and Middle East bank QNB.“ Žebříček nejbohatších tvůrců. Kolik jich znáte?</li>
</ul></div></div></div></div>Další komunita na Discordu2023-10-28T00:00:00+02:002023-10-28T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-10-28:/blog/dalsi-komunita-na-discordu/<div><div><div><div><p>Pravidelný sraz, konferenci, nebo firmu si jen tak mimoděk nezaložíte, protože to stojí nějaké počáteční úsilí.
Ale server na Discordu, skupinu na Facebooku, nebo Slack?
To máte hned, na pár kliknutí.
A tak se nám tu hromadí takový nešvar.
„Komunitu“ si vytváří každý, kdo má díru do zadku.</p>
<figure class="figure"><img alt="Další komunita na Discordu" src="https://honzajavorek.cz/images/engin-akyurt-2-ecuma3qo0-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotka od …</figcaption></figure></div></div></div></div><div><div><div><div><p>Pravidelný sraz, konferenci, nebo firmu si jen tak mimoděk nezaložíte, protože to stojí nějaké počáteční úsilí.
Ale server na Discordu, skupinu na Facebooku, nebo Slack?
To máte hned, na pár kliknutí.
A tak se nám tu hromadí takový nešvar.
„Komunitu“ si vytváří každý, kdo má díru do zadku.</p>
<figure class="figure"><img alt="Další komunita na Discordu" src="https://honzajavorek.cz/images/engin-akyurt-2-ecuma3qo0-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotka od <a href="https://unsplash.com/@enginakyurt">engin akyurt</a></figcaption></figure>
<p>Určitě nechci tzv. <em>gatekeepovat</em>.
Cílem tohoto článku je pouze varovat, informovat, a případně nasměrovat vaši energii jinam, pokud si fakt nejste jistí, že komunita je něco, čemu se chcete věnovat.</p>
<p>Mám svůj <a href="https://junior.guru/club/">placený klub na Discordu</a>, který mě aktuálně živí, a <a href="https://python.cz/">jedné další komunitě</a> víc jak dekádu dobrovolnicky pomáhám.
Když jsem v roce 2021 začínal s tím klubem, na českém trhu placené komunity prakticky neexistovaly.
Pamatuju si jen <a href="https://www.rozumnyinvestor.cz/portal/">Rozumného investora</a>.</p>
<p>Dřív se komunita říkalo <em>lidem</em>, kteří fungovali nějak spolu.
Dneska se komunita říká všemu.
Třeba počtu sledujících na nějaké sociální síti, nebo počtu podporovatelů někde na Patreonu.
A nově se tak říká i <em>prázdnému Discord serveru</em>.</p>
<p>Každý <em><a href="https://www.pavlinaspeaks.com/blog/creator23">creator</a></em> dnes hledá způsob, jak vydělat.
Vyšlapávají se určité monetizační cestičky a placená komunita je jednou z nich.
Myslel bych si, že při zakládání by se člověk mohl zamýšlet nad tím, co bude cílem komunity, jak přesně budou ti lidi spolu fungovat, jak se v té komunitě objeví noví členové, nebo jak se tam pak udrží.</p>
<p>Jenže placené „komunity“ dnes vznikají prostě tak, že na svém <del>Pickey</del> Forendors, Memberful, nebo Patreonu zmáčknete na tlačítko a přidáte do výhod pro své podporovatele integraci s Discordem.</p>
<p>A za chvíli bude stačit i Discord samotný.
<a href="https://creator-support.discord.com/hc/en-us/articles/10423011974551">Server Subscriptions</a> už fungují v USA, <a href="https://creator-support.discord.com/hc/en-us/articles/14346342766743-Media-Channels-for-Server-Subscriptions-BETA-">Media Channels</a> jsou BETA.
Je pouze otázka času, kdy to půjde použít i v Česku.</p>
<p>No a tyhle placené „komunity“ mi až příliš často připomínají jeden známý obrázek:</p>
<figure class="figure"><img alt="Collect underpants" src="https://honzajavorek.cz/images/underpants.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Kdo nezná, <a href="https://knowyourmeme.com/memes/profit">doplní si vzdělání</a>.</figcaption></figure>
<p>Někteří se tím dál nezabývají a místo komunity prostě prodávají představu komunity.
<em>Fake it till you make it.</em>
Ti zodpovědnější přijdou za mnou a ptají se mě na tipy, jak komunitu vést.</p>
<p>Brzo to budou tři roky, co je starost o klub moje hlavní činnost.
Hlavní doopravdy znamená <em>full time</em>.
Jasně, v rámci <a href="https://junior.guru/">junior.guru</a> nedělám jen to, ale vytěžuje mě to fakt hodně.
Takže těžko se mi ty poznatky shrnuje do pár bodů.
Fakt to není o tom, kam dát jaké emoji nebo jak si pojmenovat diskuzní kanály.</p>
<p><a href="https://www.newslettery.cz/p/cerven-2023">Tady pro Newslettery</a> jsem se o něco pokusil, ale čím dál víc si uvědomuju, že tam jedna věc chybí.
Chybí tam zdůraznění, že než si nějakou komunitu uděláte, měli byste se zamyslet, zda to chcete vůbec dělat.
Komunita, pokud má být funkční, tak vyžaduje <em>hodně</em> práce.
Je to dítě, které sice milujete, ale o které se staráte.
A ta starost nikdy neskončí.
Kdo dítě nemáte, tak třeba štěně.</p>
<p>Když jsem v roce 2011 zakládal <a href="https://pyvo.cz/brno-pyvo/">programátorský sraz v Brně</a>, tak to začalo jako „pozvu lidi do hospody, budeme se bavit a třeba nás přijde víc než pět”.
Přišlo osm.
Úspěch!
Asi by mě tehdy nenapadlo, že budu ty srazy dělat pravidelně každý měsíc snad pět let.
Shánět speakery, nosit projektor, vymýšlet témata, hledat místa konání, snažit se zapojovat lidi do organizace, řešit rozpory, nebo za sebe hledat náhradu, když jsem nemocný.</p>
<p>Online komunita je totéž, akorát <em>online</em>.
Méně se u toho naběháte s projektorem, ale zase je to 24/7.</p>
<p>Mám přístup skoro do 20 nějakých Slacků, na Discordu mám kolem 40 serverů, z toho polovina nějakým způsobem souvisí s programováním.
Většina z nich je absolutně mrtvá.</p>
<p>Ani tak velká komunita jako <a href="https://www.czechitas.cz/">Czechitas</a> nemá žádné online místo, kde by to žilo.
<a href="https://frontendisti.cz/">Frontendisti</a> mají <a href="https://www.facebook.com/groups/frontendisti">skupinu na Facebooku</a>, ale jejich Discord a Slack jsou mrtvé.
Jsou to velké a úspěšné komunity, ale orientují se především na osobní setkávání.
Aby fungovaly i online, musela by za tím být konkrétní snaha, která má svou vlastní organizaci a péči.
Takže ani když vás je hodně a máte zvučné jméno, tak to samo o sobě nestačí, natož když jste malá ryba.
Zřejmě to ani pro jednu z těchto komunit nebyla priorita, což je OK.
Mají holt jiný záměr.</p>
<p>Jaký je ten váš záměr?
Potřebuje svět další prázdný Discord, kam nejvíc příspěvků pošle váš bot, který tam posílá nové epizody podcastu?
Kam někdo jednou týdně napíše dotaz a odpověď dostane nikdy nebo za měsíc?
Další prázdný Slack, kde i kdyby někdo něco napsal, tak to po 90 dnech zmizí?</p>
<p>Publikum a komunita jsou dvě různé věci.
Stačí, když jednosměrně publikujete, a máte publikum.
Zato komunita, ta žije, komunikuje, pomáhá si, podporuje se, má svoje osobnosti, rozepře, interní vtipy, rituály.
To se nestane lusknutím prstu, to se musí zařídit a pak se o to musí pečovat.</p>
<p>Pokud se na tu péči necítíte, tak to nedělejte a ideálně to nikomu neprodávejte.
Určitě vymyslíte nějaký jiný, lepší způsob, jak svůj projekt monetizovat a třeba při tom využít něco, co vám jde, a co děláte rádi.
Nechci vás odrazovat.
Jen chci, abyste dělali vědomá rozhodnutí, a tušili jste, co za nimi je.</p>
<p>Já třeba vůbec nejsem materiál na video, takže YouTube nebo TikTok jsou pro mě dost mimo komfortní zónu.
Někdo s láskou nahraje něco vtipného a pak to tři dny stříhá.
Mě by to nebavilo a musel bych se do toho strašně nutit.
Jiného by zase nebavilo tak moc psát, nebo každý den spravovat komunitu.
Vždy záleží, co vás baví řešit.</p>
<p>A taky je dobré myslet na to, že placené komunity jsou trochu jiná soutěž, než ty volně přístupné.
Předplatné vám odfiltruje spoustu „planktonu“, což je fajn, jedete na kvalitu místo kvantity.
Nemusíte řešit spam.
Nemusíte po osmdesáté první odpovídat na stejný dotaz, od někoho, kdo přišel, zeptal se a zítra zase odejde.</p>
<p>Jenže zatímco u Facebookové skupiny s 10.000 lidmi, kam se může přidat kdokoliv, je všem jasné, že mají mít očekávání nízko, tak u placené skupiny si musíte nějak ten kontrakt mezi sebou nastavit.
Co přesně těm lidem, kteří vám posílají peníze, slibujete?
Co si kupují?
Kde jsou hranice?</p>
<p>A když si ty hranice vytyčíte, jaké to má důsledky?
„Nejsme 24/7, odpovídáme když máme zrovna čas.“
Ale tohle pak taky znamená:
„Máme sice pravidla chování, ale moderujeme a vynucujeme je pouze, když máme zrovna čas.“</p>
<p>A co se stane, když lidem nabízíte <em>něco navíc</em>, oni si to zaplatí, přijdou tam, a zeje to prázdnotou?
Rozhlédnou se a uvědomí si, že to nic navíc není, že to je k ničemu.
Že aby to k něčemu bylo, tak by tam museli sami být hodně aktivní a dát do toho ještě spoustu svojí energie, přestože ti, kdo to založili, tomu sami moc nedávají.
„Jé, další zbytečný placený Discord bez směru! Tady budu hodně přispívat, stanu se vlivným členem a všech dvacet ostatních neaktivních členů mě bude obdivovat!“</p>
<p>Nelituju, že jsem založil ty srazy v Brně a že mám svůj placený klub.
Ty nejlepší věci v životě jsou totiž díky lidem.
Komunity jsou extrémní <em>boost</em>, nikdy bych nedosáhl stejně velkých věcí sám.
Ten síťový efekt, který z toho je, mě vystřelil do vesmíru.
A ostatním taky změnil život.
Kámoši, vztahy, práce, příležitosti, nejrůznější zkratky.</p>
<p>Do klubu, kde hodně řešíme různé kariérní věci, přicházejí lidi, a ptají se na zkušenosti s pracákem nebo mateřskou.
A je tam spousta jiných, kteří to mají z první ruky a poradí jim.
Nebyl jsem ani na pracáku, ani na mateřské.
Nikdy bych sám neuměl tak dobře poradit.</p>
<p>Nebo tam máme někoho, kdo hraje v kapele a lidi z klubu mu šli na koncert.
Je to super.</p>
<p>Nebo někdo přijde a řekne „já se cítím takhle, protože prožívám tohle“ a jiná napíše „já ti rozumím a chápu tě, protože jsem prožila totéž - drž se, podívej se, já to taky zvládla, máš na to, nevzdávej se“.
Tohle je <em>real shit</em>, to umí jen komunita.
Tohle bych já sám lidem nikdy dát nedokázal.
Moje maximum je agregovat a aproximovat zkušenosti ostatních a být klukem z plakátu, pod kterým je nějaká motivační formulka.</p>
<p>Ale aby se tohle celé dělo, ten <em>real shit</em>, musí to být funkční komunita.
Pak je to strašně super a spolu dokážete mnohem víc, než by vás kdy napadlo.
Ale taková komunita vznikne na zelené louce jen pokud fakt chcete a dáte tomu hodně práce.
Samonosné to nebude nikdy, nebo až za pár let.
A rozhodně se to nestane omylem.</p>
<p>Pokud jste včera kliknuli na tlačítko, které vám zapnulo integraci s Discordem, a přidali jste si „exkluzivní komunitu“ do výhod pro podporovatele vašeho podcastu, tak vás tímhle článkem nechci odrazovat.
Jen vás chci informovat, že jste si pořídili štěně.</p>
<p>A že štěně je <em>strašně super</em> a budete ho milovat.
Ale je dobré brát v potaz, že aby přežilo, je potřeba ho krmit, venčit ho, každý den.
Občas chodit k veterináři.
A že je to na dlouho.
Pokud to nechcete dělat, možná pro svoje podporovatele vymyslete něco jiného.
Něco lepšího než „další komunitu na Discordu“.
Něco lepšího než mrtvé štěňátko.</p></div></div></div></div>Týdenní poznámky: Dna a oubitě v šedým hábitě2023-10-27T00:00:00+02:002023-10-27T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-10-27:/blog/tydenni-poznamky-dna-a-oubite-v-sedym-habite/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-prvni-rozhovor-s-juniorem-a-frontkon/">posledních poznámek</a> už utekl nějaký ten týden (16. 10. až 27. 10.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-prvni-rozhovor-s-juniorem-a-frontkon/">posledních poznámek</a> už utekl nějaký ten týden (16. 10. až 27. 10.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/letni-pit-stop/">teď plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/3/">tabulky na GitHubu</a>.</p>
</div>
<p>Jak bych to jen…</p>
<p>Včera z večera<br>
mor a cholera<br>
napadly mě, páni.</p>
<p>Včera z večera<br>
mor a cholera<br>
zkazily mu spaní.</p>
<p>Dna a oubitě<br>
v šedým hábitě<br>
přišly ke mně včera.</p>
<p>Kdo neznáte, <a href="https://open.spotify.com/track/4pOYjPCBofIW6SqNKACCMY?si=ed8d5406344644c9">tady to máte celé</a>.
Asi to nebudu rozvádět, jen v bodech:</p>
<ul>
<li>Nejdřív zhoršení problémů, které už jsem měl a léčil.</li>
<li>Jeden týden trochu rýma.</li>
<li>Návštěva u psychiatra, kde jsme se usnesli, že tedy ADHD asi nakonec nemám.</li>
<li>Zalehlé ucho, peroxid vodíku nepomohl, skončil jsem na ORL.</li>
<li>Problém s okem, návštěva obvoďačky, dermatologie a i oční.</li>
<li>Průběžná návštěva asi pěti nebo více lékáren a nahromadění haldy léků nebo doplňků stravy.</li>
<li><a href="https://mastodonczech.cz/@honzajavorek/111300092150302306">Brzké vstávání</a>, hodiny v čekárnách nebo na telefonu, opakované vysvětlování všeho.</li>
<li>Některé dny jsem tak trochu prospal, nebo se pouze staral o to, abych třeba viděl na oko.</li>
<li>Nahánění neordinujících doktorů v pátek během prázdnin.</li>
<li>Přerušení dosavadní léčby, dokud nevyléčím nové věci, které mám.</li>
</ul>
<p>Hodně jsem přemýšlel nad tím, jestli a kolik mám stresu.
Snažím se osekat činnosti, do kterých se pouštím a některé v budoucnu plánuji zrušit.
Snažím se čistit si hlavu, nepospíchat, nic nehrotit.
Uvidím, no.
Snad se dám nějak dohromady.</p>
<h2 id="tyden-pro-digitalni-cesko">Týden pro Digitální Česko<small class="permalink"><a href="#tyden-pro-digitalni-cesko" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Poslední větší akce, která mě čeká, a kterou bych rušit nechtěl, je <a href="https://www.budoucnostjedigitalni.cz/">Týden pro Digitální Česko</a>.
Už kolem toho začalo nějaké promo:</p>
<ul>
<li><a href="https://www.facebook.com/photo?fbid=316035711068243&set=a.196092746395874">Facebook</a></li>
<li><a href="https://www.linkedin.com/feed/update/urn:li:activity:7119956337949556736/">LinkedIn</a></li>
<li><a href="https://mastodonczech.cz/@honzajavorek/111249683054271295">můj Mastodon</a></li>
</ul>
<p>Ivan Bartoš (resp. asi jeho tým) sdílel na LinkedIn status s logem junior.guru.
Přijde mi to neuvěřitelné.
Když jsem to logo v roce 2019 kreslil, asi bych si nemyslel, že ho jednou bude používat někdo z vlády.</p>
<p>Když opadl můj úžas, podíval jsem se, kolik má Bartoš na LI followerů, a zjistil jsem, že méně než já.
Takže sice mi dává kredibilitu, dosah možná dávám spíš já jemu 😀</p>
<p>Ještě připravuji stánek pro zahajovací akci TDČ a online Q&A akci na YouTube.
To by se mělo definitivně doladit příští týden.</p>
<figure class="figure"><img alt="Já na Frontkonu" src="https://honzajavorek.cz/images/dsc-8691.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Krásnou fotku mi na <a href="https://frontendisti.cz/konference">Frontkonu</a> udělali!</figcaption></figure>
<h2 id="pribehy">Příběhy<small class="permalink"><a href="#pribehy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Dal jsem něco málo lásky příběhům na webu, ještě před tím, než publikuji další.
Přemýšlel jsem, <a href="https://mastodonczech.cz/@honzajavorek/111261690389421492">jak organizovat Novinky</a>.
K závěru jsem zatím nedošel.</p>
<p>Udělal jsem výpis příběhů na Novinkách.
To nebyla úplně sranda, protože se v jednom výpisu míchají dva různé typy objektů, ale nějak jsem to vymyslel.</p>
<figure class="figure"><img alt="Kombinovaný výpis" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-10-27-at-18-54-02-novinky-pro-zacatecniky-v-programovani.png"></figure>
<p>Na hlavní stránku junior.guru jsem přidal tři boxíky: nejnovější podcast, příběh, přednáška.
Poladil jsem ještě trošku <code>og:image</code> příběhů, ale ne moc.</p>
<figure class="figure"><img alt="Úvodní stránka" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-10-27-at-17-58-03-jak-se-naucit-programovat-a-ziskat-prvni-praci-v-it.png"></figure>
<p>Pak jsem šel a dal jsem <a href="https://junior.guru/stories/roman-viktor-dvorak/">rozhovor s RVD</a> i do nějakých Facebookových skupin, kde mi to přišlo relevantní.
Engagement nic moc.
Je vidět, že FB je fakt mrtvý a velké skupiny už nemají vůbec u běžných, „nekonfliktních“ příspěvků, dosah.</p>
<p>Každopádně jsem si všiml, že tam někteří členové klubu na každou druhou otázku odpovídají „pojď do klubu na junior.guru, je to tam super“, a to až tak, že je tam skoro moderátoři museli mírnit 😀
Úžasné! To jsem netušil, že se děje!
Možná bych měl přece jenom na FB chodit trochu častěji.</p>
<h2 id="uklid">Úklid<small class="permalink"><a href="#uklid" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Měl jsem v plánu projet sloupeček v Trellu, kam si ukládám různé drobné úkoly, které vyvstanou během pěny dní.
Trochu binec.
Říkal jsem si, že je roztřídím do jiných sloupců, kam patří, nebo udělám, nebo smažu.</p>
<p>Jenže mě to nějak chytlo a začal jsem mazat všechno možné v Trellu.
Počet sloupců jsem stáhl pod 20.
Říkal jsem si, že už vím, kam chci junior.guru směrovat, a že bych se neměl rozptylovat vším možným.
Že prostě musím ten <em>scope</em> nějak už uzavřít a jasně si říct, co NEbudu dělat.
Jinak se z toho poseru.</p>
<p>Co vede k výsledku, který chci s junior.guru dosáhnout?
Co mi uvolní ruce?
Jaké zjednodušení mi dá mnoho času do budoucna?
Co dělají jiní dost dobře a nemá smysl, abych to dělal taky?</p>
<p>Je nutné mít spoustu jobů v CI co mám?
Je nutné generovat tolik obrázků pokaždé?
Je nutné mít některé věci takhle složitě jak je mám?</p>
<figure class="figure"><img alt="Já a Trello" src="https://honzajavorek.cz/images/fuck-this-cat.gif" class="img-fluid figure-img rounded"></figure>
<p>Uvažuju, jak snížit stres, nebo jak se „vrátit ke kořenům“ a psát zase příručku, kterou jinak dlouhodobě zanedbávám.</p>
<p>Jedna z věcí, kterou uvedu do praxe, je organizování pouze jedné přednášky v klubu měsíčně.
Dvě měsíčně jsou stres a navíc jsem tento příslib letos ani nedokázal naplnit.
Několik měsíců přednášky nebyly a když je sečtu a vydělím, je z toho stejně 1 přednáška měsíčně, akorát nerovnoměrně.</p>
<p>Taky chci teď omezit svou účast na jakýchkoliv akcích.
TDČ a konec.
Hezky doma čaj a tepláky a kódit a spisovat!</p>
<p>Taky bych chtěl další plány dělat jen na kvartál, nikdy už ne na delší dobu.
Po letošní zkušenosti mi přijde, že plán na rok, ale i na půl roku, je prostě moc dlouhý a ambiciózní plán.
Nechci to tu zamořit gify, takže <a href="https://twitter.com/clairevo/status/1715480301848428757">tenhle</a> si otevřete zvlášť.</p>
<p>No a některé věci, které v úkolech dlouho smrděly, jsem prostě hned udělal.
A měl jsem z nich radost.</p>
<figure class="figure"><img alt="Já a Trello" src="https://honzajavorek.cz/images/shovel.gif" class="img-fluid figure-img rounded"></figure>
<h2 id="preklad-s-chatgpt">Překlad s ChatGPT<small class="permalink"><a href="#preklad-s-chatgpt" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Díky nové funkci Safari jsem si dal ChatGPT přímo do docku na macOS a vypadá to teď jako nějaká nativní aplikace.</p>
<p>Zkusil jsem to hned použít při aktualizaci popisků YouTube kanálu.
Všiml jsem si, že YouTube umožňuje přidat jazyk, tak jsem přidal slovenštinu.
Překlad jsem udělal přes ChatGPT:</p>
<figure class="figure"><img alt="Slovenština" src="https://honzajavorek.cz/images/screenshot-2023-10-24-at-11-22-43-channel-customization-youtube-studio.png" class="img-fluid figure-img rounded"></figure>
<p>Teď mě možná lidé z SK snáz na YouTube najdou.
Když si vzpomenu, jak jsem kdysi překládal nějaký citát z SK do CS nebo naopak, a kolik mi to dalo práce!
Překládal jsem to sám a pak jsem psal kamarádům, jestli jsem to nedopletl.
Teď to je hned.</p>
<h2 id="zaloha-youtube">Záloha YouTube<small class="permalink"><a href="#zaloha-youtube" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Jeden z drobných úkolů zněl: Napiš skript, který stáhne z junior.guru kanálu všechna YouTube videa, třeba na můj externí disk, jako zálohu.</p>
<p>Samotné stahování je s <a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a> jednoduché, ale moje videa jsou většinou <em>unlisted</em>, neveřejné.
Jak přes API získat seznam všech mých videí?</p>
<p>No, nevyřešil jsem to.
Docela dlouho jsem koukal do dokumentací a chtěl to vzdát, až mě napadlo použít zase ChatGPT.
Díky tomu jsem se někam pohnul, opravdu to fungovalo.</p>
<p>Ale vlastně ne, protože jsem se k API přihlašoval pomocí nějakého <em>service account</em> a ne OAuth 2.0.
Zatímco třeba na Google Spreadsheets je <em>service account</em> preferovaný způsob, tak v YouTube to <a href="https://developers.google.com/youtube/v3/guides/moving_to_oauth">zrušili</a> a chtějí, abych prošel přes OAuth klikačku a zažádal si o nějaké dlouhotrvající tokeny.</p>
<p>To už jsem definitivně vzdal.
Měla to být věc na hodinku programování.
Dal jsem tomu asi tři a byl jsem pořád na začátku.
Přitom jsem chtěl jen seznam mých videí!</p>
<p>Neznám větší opruz na světě, než je OAuth 2.0.
Pokud by se vám chtělo ten skript udělat, tak mi napište a já vám za to třeba i zaplatím, ale odmítám trávit čas žonglováním s tokeny.</p>
<h2 id="odhad-odkud-mam-cleny">Odhad odkud mám členy<small class="permalink"><a href="#odhad-odkud-mam-cleny" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Jiný úkol zněl: Mrkni do Stripe API a zkus zjistit podle vydavatele kreditní karty, kolik máš peněz od členů mimo Česko, abys měl přehled, zda nepřekračuješ limit na <a href="https://vat-one-stop-shop.ec.europa.eu/one-stop-shop/declare-and-pay-oss_en">One Stop Shop</a>.</p>
<p>Tohle skončilo úspěchem.
Práce se Stripe API byla radostná, mají i vlastní Python SDK a pěknou API dokumentaci.</p>
<p>Nový graf je <a href="https://junior.guru/open/#odkud-jsou-platici-clenove">tady na webu</a>.
Všechno se tam počítá automaticky, i kurz Eura je aktuální.
Daňařovi jsem se pochlubil a moc se mu to líbilo.</p>
<figure class="figure"><img alt="OSS" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-10-27-at-18-43-19-jak-se-dari-provozovat-junior-guru.png"></figure>
<h2 id="hovory">Hovory<small class="permalink"><a href="#hovory" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Volal jsem si s <a href="https://www.linkedin.com/in/danielsrb/">Danem</a>, jen tak kamarádsky.</li>
<li>Volal jsem si se <a href="https://www.linkedin.com/in/zuzanapechova/">Zuzkou</a>, rozjíždí <a href="https://www.cyberladies.cz/">Cyberladies</a>, tak jsem jí radil.</li>
<li>Volal jsem si s <a href="https://www.linkedin.com/in/miloslav-jezek/">Milkem</a>, vymýšleli jsme spolu challenge v klubu a probírali co by šlo všechno dělat do budoucna. Vytvořili jsme <a href="https://github.com/juniorguru/challenge">nové repo</a>.</li>
<li>Volal jsem si s Luigi's Box.
Chtěli juniory.</li>
</ul>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Udělení jednoho stipendia.
Vyřizování spousty drobností.
Poslal jsem fakturu Red Hatu.
E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.</li>
<li>Zatím nejvíc engagementu na Mastodonu si vysloužil <a href="https://mastodonczech.cz/@honzajavorek/111279135560411996">toot, který je o nadřazenosti Mastodonu</a>.
Tak nevím.</li>
<li>Sdílel jsem <a href="https://speakerdeck.com/honzajavorek/junior-jako-investice-proc-je-mit-v-tymu-a-jak-je-zaucovat">svoje slajdy</a> z Frontkonu.
A už jsou venku i <a href="https://www.facebook.com/frontendisti/photos_albums">fotky</a> a <a href="https://www.youtube.com/@FrontendistiCz/playlists">záznamy</a>, ale ty jsem zatím neměl čas prostudovat.</li>
<li>Chtěli mi zavřít <a href="https://github.com/discord/discord-api-docs/issues/6481">bug na Discord API</a>, tak jsem na to sednul a poskytnul maximum informací.
A je to opravdu bug, budou to opravovat!</li>
<li>Přesunul jsem konečně repozitář z osobního GitHubu do organizace.
<a href="https://mastodonczech.cz/@honzajavorek/111291081171583434">Tolik radosti</a>, přitom taková blbost.
Opravil jsem i nějaké CNAME DNS záznamy a musel jsem trochu překonfigurovat CircleCI, ale jinak to byl hladší proces, než jsem čekal.</li>
<li>Zrušil jsem Snyk.
Bezpečnostní chyby opravuju přes Dependabot přímo přes GitHub.</li>
<li>Napsal jsem na základě <a href="https://www.linkedin.com/feed/update/urn:li:activity:7069672252291567616/?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7069672252291567616%2C7069725638022045696%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287069725638022045696%2Curn%3Ali%3Aactivity%3A7069672252291567616%29">konverzace na LinkedIn</a> do <a href="https://digitalnicesko.gov.cz/dia/">DIA</a>, jestli jim mohu nějak pomoci s hledáním juniorů.</li>
<li>Titulek podcastu jsem změnil na „Junior Guru: programování a kariéra v IT“, aby to šlo lépe najít v aplikacích.</li>
<li>Opravy spousty malých drobností, zrychlování některých skriptů.
Čištění kódu, nemilosrdné mazání některých dlouho nepoužitých nebo rozbitých částí produktu, které zjevně nikomu nechyběly.</li>
<li>Předělával jsem něco kolem kešování.
Objevil jsem <a href="https://grantjenks.com/docs/diskcache/">DiskCache</a> a použil, místo abych vymýšlel kolo.</li>
<li>Jedna firma mi omylem zaplatila fakturu dvakrát, tak jsem jim to vracel.
Musel jsem pak upravit skripty, které mi generují grafy, aby v nich tahle blbost nebyla.</li>
<li>Klub nyní umí sledovat i srazy od <a href="https://www.meetup.com/pehapkari-brno/">Péhápkářů v Brně</a>.</li>
<li>Vyplnil jsem konečně formulář W8-BEN a dodal do všech aplikací, kde jej chtěli.
<a href="https://lookscanned.io/">Lookscanned</a> mi pomohlo obejít se bez tiskárny nebo scanneru.</li>
<li>Upgradoval jsem na macOS Sonoma.
Hezký.
Na Mastodon jsem pak psal zkušenosti s některými novými fičurami, ale teď se mi na to nechce hledat odkazy, najděte si sami.
Webovky v docku mě přivedly na myšlenku, jestli nepřejít úplně a místo webového Gmailu nebo Google Kalendáře nezačít používat nativní aplikace od Apple.</li>
<li>Připravovali jsme s <a href="https://www.linkedin.com/in/prazakova/">Dominikou Pražákovou</a> a s <a href="https://www.linkedin.com/in/m%C3%ADla-votradovec-2a659920/">Mílou Votradovcem</a> přednášky v klubu.</li>
<li>Během 12 dní jsem naběhal 2 km, při procházkách nachodil 5 km. Celkem jsem se hýbal 3 h a zdolal při tom 7 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Ještě trochu pouklízím.</li>
<li>Doplánuju TDČ.</li>
<li>Naplánuju všechny přednášky na rok 2024.</li>
</ol>
<p><strong>Bonus:</strong> Když budu mít sílu, publikuju další příběh.</p>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.forbes.com/sites/stevenbertoni/2023/09/26/top-creators-2023/">Forbes Top Creators 2023: The Richest On TikTok, Instagram & YouTube</a><br>„Lame, who in 2019 was assembling car filters in a factory outside Turin, now has more than 240 million social media followers and has scored lucrative partnerships with Hugo Boss, State Farm, and Middle East bank QNB.“ Žebříček nejbohatších tvůrců. Kolik jich znáte?</li>
<li><a href="https://www.youtube.com/watch?v=35AETxkbxPw&t=1s">Jak bude vypadat plánovaná lanovka Podbaba – Troja – Bohnice?</a><br>Lanovka! Pěkný.</li>
<li><a href="https://daringfireball.net/2023/10/apple_again_hikes_prices_for_services">Apple Again Hikes Prices for Its Media Services</a><br>Hned několik zajímavých postřehů o vztahu předplatného, pirátství nebo reklam. „I’ve always thought of media bootlegging as a form of negotiation. It’s like ad hoc collective bargaining between users and the corporations that set the prices and define the experience of consuming the media.“ „…most articles from most publishers in Apple News are lousy with huge ugly ads, breaking up each article every few paragraphs“</li>
<li><a href="https://www.voxpot.cz/cistejsi-lodni-palivo-el-nino-erupce-i-ceska-anomalie-to-vse-ovlivnilo-necekany-rust-teplot/">Čistější lodní palivo, El Niño, erupce i česká anomálie. To vše ovlivnilo nečekaný růst teplot - VOXPOT</a><br>Jak se do budoucna změní klima zrovna v Česku?</li>
<li><a href="https://dirt.fyi/article/2023/10/what-was-replying">What was 'replying'? </a><br>„It is easy to forget how to talk to a person, because you’re not talking to a person: you’re Replying. Everyone involved is either an abstraction, an ideal, entertainment, or part of an annoying crowdsourced search engine.“</li>
<li><a href="https://37signals.com/podcast/you-dont-create-a-culture/">You Don’t Create a Culture — REWORK</a><br>„Firemní kulturu nejde vytvořit, ona prostě je.“ „Kultura není to, co si napíšete na nástěnku, ale to, co děláte. Pokud máte neomezenou dovolenou, ale šéfové si vezmou pár dní volna za rok, lidi mají jasno, jestli svým chováním následovat papír, nebo to, co reálně vidí.“ (volná citace) Pěkně to tam řekli, kluci z 37signals!</li>
<li><a href="https://www.pavlinaspeaks.com/blog/bezcasi">Bezčasí — PAVLINA_SPEAKS</a><br>Skvělý text od Pavlíny Louženské o tom, jak jsme přestali stíhat čas. „Ve chvíli, kdy jsme ztratili dlouhodobý výhled, tak se vracíme ve vnímání času zpátky do mysli šestnáctiletých. Všechno je zásadní. Všechno musíme stihnout než. Všechno měříme v dnech a týdnech, ne v letech.“ „Chci mít chvíli pro sebe. Chci zpomalit. Chci zastavit čas, říkají mi na každém callu a přichází s dalším plánem, jak se optimalizovat. Včetně toho, že si dají do kalendáře cally se mnou.“</li>
<li><a href="https://seznam-zpravy.u.mailkit.eu/mc/VUCQVPEU/ATOZNRVLHALPTQWAJS/CLMLMPUELCI">Pod čarou: Každá generace zestárne stejně. Mileniálové jsou ale výjimka.</a><br>Stárneme a už nejsme cool. Mileniálové ale prý stárnou úplně jinak, než předchozí generace. Pomalu. A s nadcházející mladou generací sdílí spoustu hodnot.</li>
<li><a href="http://www.papirovemodelarstvi.cz/phpBB3/">Papírové modelářství CZ • Obsah</a><br>Tohle si sem teď uložím a až bude dcera větší, odkaz vyhrabu. Třeba ji to bude bavit tak jako kdysi mně. (A třeba ne a naučí mě Minecraft.)</li>
<li><a href="https://support.apple.com/en-us/HT212544">Use profiles in Safari on Mac</a><br>Já vím, že</li>
<li><a href="https://zdopravy.cz/misto-zabradli-sloupky-praha-chce-zacit-odstranovat-cerveno-bile-ohradky-v-ulicich-181171/">Místo zábradlí sloupky. Praha chce začít odstraňovat červeno-bílé "ohrádky" v ulicích - Zdopravy.cz</a><br>Ano prosím. Už to mělo být dávno.</li>
<li><a href="https://redmonk.com/kholterhoff/2023/10/03/indie-oss-jsframeworks/">The Indie, Open Source JavaScript Frameworks Developers Love, and the Risks of Commercial Relationships</a><br>Zajímavý článek o vztahu firem a frontendových frameworků. Licence, partnerství, sponzorství, ukončená partnerství, akvizice a co z toho všechno plyne…</li>
<li><a href="https://www.infoworld.com/article/3703768/the-open-source-licensing-war-is-over.html">The open source licensing war is over</a><br>Znamená „open source“ vlastně ještě něco? Záleží vůbec ještě někomu na licencích? „The goal of open source, of cloud, of open APIs, of great documentation, etc., is to enable developers to build with less friction and more opportunity. Is Llama 2 open enough for 99.999% of the developer population to use it with unfettered access? Yes. Is it “open source”? The question doesn’t really matter.“</li>
</ul></div></div></div></div>Týdenní poznámky: První rozhovor s juniorem a Frontkon2023-10-16T00:00:00+02:002023-10-16T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-10-16:/blog/tydenni-poznamky-prvni-rozhovor-s-juniorem-a-frontkon/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-tipy-pro-novacky-v-klubu-v2/">posledních poznámek</a> už utekl nějaký ten týden (6. 10. až 16. 10.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-tipy-pro-novacky-v-klubu-v2/">posledních poznámek</a> už utekl nějaký ten týden (6. 10. až 16. 10.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/letni-pit-stop/">teď plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/3/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="zpackana-soutez">Zpackaná soutěž<small class="permalink"><a href="#zpackana-soutez" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Už před dlouhou dobou jsem dostal tři lístky na <a href="https://frontendisti.cz/konference">Frontkon</a>, které jsem mohl rozdat v junior.guru klubu.
Neměl jsem na to ale čas kvůli <a href="https://cz.pycon.org/2023/">PyCon CZ</a> a následné dovolené, takže jsem soutěž udělal až tak dva týdny před konferencí.
Těžko se mi hledají pozitiva na tom, jak to dopadlo:</p>
<ul>
<li>Mezitím se Frontkon vyprodal.
Nejdřív jsem vtipkoval, že tím cena rozdávaných lístků stoupla, ale když jsem je chtěl vyzvednout, tak už to nešlo.
Následoval velký stres, zda jsem nerozdal lístky, které nemám.
Organizátoři mě ubezpečili, že je vše OK, ale musel jsem je prosit a přidělával jsem jim práci.</li>
<li>Lidi když vyhrajou lístek, tak si to nepřečtou hned.
Někdy si to přečtou až za den.
Někdy za dva.
A někdy napíšou, že sice vyhrát chtěli, ale už je tak pozdě, že si to nezvládnou zařídit a nevyužijou to.
Týden před konferencí je prostě pozdě, prakticky na všechno, třeba ubytování.
Vyhlášení bylo v pondělí, ale lístky jsem řešil i v úterý, středu, a dokonce i ve čtvrtek, protože lidi různě odpadávali, nebo jsem čekal na jejich odpověď, zda opravdu pojedou.
Byl to velký „mikromenežment“, stres a chaos.
Z původních výherců lístek nevyužil nikdo a z náhradníků nakonec 2 ze 3.</li>
<li>Nejvíc mě mrzí, že na poslední chvíli to odřekly především ženy s dětmi, jelikož už nedokázaly sehnat hlídání nebo přeorganizovat rodinnou logistiku.
Zase ženám péče podrazila nohy!
Zaskočili za ně samozřejmě chlapi.
Můžeme se bavit o tom, že Frontkon mohl mít <em>childcare</em> podobně jako PyCon CZ, ale jednak to bylo takhle pozdě už asi jedno, jednak není fér srovnávat první a šestý ročník nějaké konference.</li>
</ul>
<p>Celkově jsem z toho byl dost sešlý a smutný.
Všechny ty problémy jsem způsobil já a mrzí mě to doteď.
Je to velké poučení pro příště.</p>
<p>Kromě toho jsem zaznamenal v pondělí, kdy mělo dojít k vyhlášení, nájezd lidí z jedné konkrétní skupiny.
V klubu byli pár hodin, ani se nepředstavili, a hned soutěžili.
Navíc pak bylo zcela jasné, že se dokonce vědomě vzájemně koordinovali.
Nebylo to proti pravidlům a soutěž měla jiné - výše zmíněné - problémy, tak to moc neřeším.
Přišlo mi to ale trochu nefér k dlouhodobým členům klubu a za jiných okolností bych si to měl pohlídat, např. podmínkami soutěže.</p>
<h2 id="pred-frontkonem">Před Frontkonem<small class="permalink"><a href="#pred-frontkonem" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Kvůli odjezdu na <a href="https://frontendisti.cz/konference">Frontkon</a>, soutěži, přípravě přednášky, odjezdu rodinky k babičce, apod. se můj týden zcvrkl do pár dní, z nichž se navíc stal nahusto seskládaný kalendářový tetris.</p>
<figure class="figure"><img alt="Kalendář" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-10-09-at-22-47-47-google-calendar-week-of-october-9-2023.png"></figure>
<p>Sice jsem si během toho stihl zajít i do <a href="https://kinoaero.cz/">nejlepšího kina</a> na <a href="https://www.csfd.cz/film/1378197-annaismissing/">#annaismissing</a> (film byl pro mě příjemné překvapení), ale jinak to bylo všechno dost stresující.</p>
<p>Možná i kvůli tomu jsem se nechal hodně vystresovat i samotnou přednáškou.
Když jsem si ji zkusil, měl jsem to na 1,5 hodiny.
Sice jsem u toho žvýkal rozmraženou pizzu, ale stejně.
Zjistil jsem, že to téma je nosnější, než jsem myslel, a že bych o něm dokázal říct hodně věcí.</p>
<p>Ale už bylo pozdě.
Ve vlaku na konferenci jsem seděl se stopkami v ruce a zkoušel dát každý jeden slajd pod 30 sekund.
Nešlo to.
Po několikáté zkoušce už mi bylo jasné, že jsem měl udělat pět slajdů s pěti nejdůležitějšími informacemi (které na mě vyplavaly až během zkoušek), ale slajdy se posílaly předem a měl jsem za to, že už je nelze změnit.
Holt riziko příliš krátkého časového limitu a nového tématu, o kterém jsem ještě nikdy nepřednášel, ani ho nijak jinak nezpracovával.</p>
<h2 id="prvni-rozhovor-s-juniorem-vydan">První rozhovor s juniorem vydán!<small class="permalink"><a href="#prvni-rozhovor-s-juniorem-vydan" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Během těch samých dní jsem si vytyčil jako úkol konečně na webu vydat <a href="https://junior.guru/stories/roman-viktor-dvorak/">rozhovor s Romanem V. Dvořákem</a>.</p>
<p>Článek byl připravený, chybělo jen dodělat nové <code>og:image</code> náhledy, aby to bylo atraktivnější na sociálních sítích, a „reklamu“ na klub pod článek, jakoby místo komentářů.</p>
<figure class="figure"><img alt="Reklama na klub" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-10-16-at-12-45-22.png"></figure>
<p>Reklamu jsem dodělal celkem rychle, ale s těmi <code>og:image</code> jsem se trochu trápil.
Nejdřív jsem tam chtěl jen přidat Romanovu fotku, ale nějak mi to nesedělo, tak <a href="https://mastodonczech.cz/@honzajavorek/111217958240076746">jsem je předělal celé</a>.
Prošel jsem si <a href="https://www.ogimage.gallery/">ogimage.gallery</a>, ale nakonec jsem to podle mě stejně udělal zase takové… nudné.</p>
<figure class="figure"><img alt="og:image" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/7af34f540b0bccd594796e679e200db1449ead4b83a99abe250bc34f944395c1.jpg"></figure>
<p>Každopádně jsem zkusil nový přístup.
Protože obrázek není web, vše jsem se do něj pokusil v CSS vměstnat za použití jednotek vh a vw.
Docela to šlo.
Narazil jsem akorát na problém, že text neumí být „responzivní“ (nebo to neumím), takže ho nelze zmenšit na základě toho, kolik ho tam je.
Tzn. aby dlouhý nadpis dostal menší <code>font-size</code>.
Zkoušel jsem cosi s <em>container queries</em>, dokonce i cosi s JavaScriptem, ale nakonec jsem se pleskl do čela a prostě v Jinja jenom přiřadil nadpisu nějakou třídu podle délky a bylo to.</p>
<p>A když už jsem udělal nové <code>og:image</code>, kam jde vrazit i fotka, tak jsem ty fotky do nich přidal i pro další podobné stránky na webu, např. přednášky, epizody podcastu, apod.</p>
<p>No a pak jsem to konečně vydal!
Pomůžete mi, když to nasdílíte - tady <a href="https://mastodonczech.cz/@honzajavorek/111220729145640880">Mastodon</a>, <a href="https://www.linkedin.com/feed/update/urn:li:activity:7118124577091723264/">LinkedIn</a>.</p>
<p>Vždycky, když si to otevřu, tak mám velkou radost.
Připadám si, jako bych četl časopis.
Je to prostě dobré!
Profesionální.
Podívej, mámo, publikuju články, jako bych provozoval Heroine nebo CzechCrunch! 💪
A v mailu už mi týden leží zpracovaný další rozhovor, tak se těším, až si ho přečtu.</p>
<p>Ale ten <code>og:image</code> nevím, jestli se mi vlastně nakonec líbí.
Možná ho ještě předělám.
Taky jsem si všiml, že jsem úplně zapomněl dodělat výpis článků.
Takový detail, ehm…
Na <a href="https://junior.guru/news/">hlavní stránce novinek</a> článek nikde není, a <a href="https://junior.guru/stories/#pribehy-z-juniorguru">tady</a> je zatím jen hodně provizorní odkaz.</p>
<h2 id="frontkon">Frontkon<small class="permalink"><a href="#frontkon" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Místo autobusem v 7 jsem jel vlakem v 8, protože jsem se tak soustředil na číslovku 7, že jsem si budík nastavil na 7.
Až na autobusáku jsem si uvědomil, že jsem tam o hodinu později.</p>
<p>V kupé se mnou seděla paní, která „neslyšela pět budíčků“ a zaspala co mohla, tak to mě trochu uklidnilo, ale pak jsem se zase stresoval tou přednáškou, takže nic moc.
Publikoval jsem rozhovor s Romanem V. Dvořákem, aby se to stihlo dřív než v pátek, a aby si ho třeba přečetl i někdo z Frontkonu, kdo si mě po přednášce vyhledá a najde moje sociální sítě.</p>
<p>Na <a href="https://frontendisti.cz/konference">Frontkon</a> jsem dorazil tak tak, abych stihl přednáškový blok před tím svým.
Stres jsem snižoval povídáním na chodbě, hlavně s <a href="https://www.linkedin.com/in/marta-k-586110243/">Martou</a> nebo borcem od <a href="https://www.linkedin.com/in/katerinavolakova/">Kateřiny</a>.</p>
<p>Pak se zjevil i yablko, tak jsme se chvíli bavili o tom, jak se snažil dostat do místa konání nějakou divokou kombinací koloběžek.
Jeho přednáška byla vtipná a jeho slajdy nepřipravené, takže to trochu snížilo mou hladinu stresu.</p>
<p>Obdivuji, jak se dokáže nad věci povznést, zasmát se jim, nebrat nic moc vážně, udělat si z toho pohodičku.
Myslím, že jsem to dřív taky uměl, ale jako by to někde zůstalo semleté životem a tlakem na výkon.
Zkusím to v sobě zase najít.</p>
<p>Svou přednášku jsem nakonec natáhl z 10 minut na 15.
První půlku jsem se snažil projít rychle, ale poctivě.
Pak jsem si všiml, že na odpočtu času jsou samé nuly a došlo mi, že už žádný další čas prostě nemám.
Tak jsem zbytek proletěl strašně stručně, v podstatě jen aby to bylo.
Ty důležité věci podle mě zcela zapadly.</p>
<figure class="figure"><img alt="Slajdy" src="https://honzajavorek.cz/images/slide-0.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Slajdy jsou <a href="https://speakerdeck.com/honzajavorek/junior-jako-investice-proc-je-mit-v-tymu-a-jak-je-zaucovat">na SpeakerDecku</a></figcaption></figure>
<p>Po mně šla Marta a měla to skvěle připravené a zábavné.
Do svých 5 minut se vešla.
Následnou panelovou diskuzi jsem si užil víc jak přednášku, protože na ni bylo dost času a mohl jsem rozvést spoustu myšlenek.
<a href="https://www.linkedin.com/in/jananecasova4/">Janča Nečasová</a> to dobře moderovala a moji spoludiskutující mi dávali spoustu prostoru 😂
Sice jsem se místy klepal i na židli v panelu, ale prý si toho nikdo nevšiml a přednáška i panelovka se publiku líbily.
Tak to je asi hlavní.</p>
<figure class="figure"><img alt="Přednáška" src="https://honzajavorek.cz/images/img20231012130531.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Přednáška, foto <a href="https://www.linkedin.com/in/boris-kolda-12854651/">Boris Kolda</a></figcaption></figure>
<figure class="figure"><img alt="Panelovka" src="https://honzajavorek.cz/images/img20231012132846.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Panelovka, foto <a href="https://www.linkedin.com/in/boris-kolda-12854651/">Boris Kolda</a></figcaption></figure>
<p>Byť jsem asi podal ucházející výkon, potřeboval jsem pak ještě několik hodin, aby to ze mě opadlo, a konferenci jsem si kvůli tomu zas tak moc neužil.
Pokecal jsem s pár lidmi, s yablkem a holkama jsme dali u piva debatu o výkonech a konečnosti života, ale přišlo mi, že když jsem se začal konečně trochu rozjíždět, tak byl závěr 😀
Něco jako <em>keynote</em> od <a href="https://www.linkedin.com/in/liborvanekcz/">Libora Vaňka</a> a následná panelovka se mi líbily, ale jak říkám, pak byl konec a já se zrovna začal dostávat do toho, že bych si v klidu užil nějaké přednášky a povídání s lidmi.</p>
<p>Aspoň povídání jsem si užít mohl, protože jsme šli s účastníky na pivo, a tam jsme mohli hodně věcí probrat.
Rád jsem zase viděl <a href="https://www.linkedin.com/in/mayermartin/">Martina Mayera</a>, se kterým se jinak tradičně potkáme akorát jednou za rok na WebExpu.</p>
<figure class="figure"><img alt="S Martinem" src="https://honzajavorek.cz/images/img-5705.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
S Martinem</figcaption></figure>
<figure class="figure"><img alt="S Katkou a Martou" src="https://honzajavorek.cz/images/img-0085.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
S Katkou a Martou</figcaption></figure>
<p>Zabředl jsem do diskuzí i s organizátory a dával jim nějaké (nevyžádané?) tipy.
Na Frontkon čtu po internetech pozitivní zpětnou vazbu.
Já se necítím moc pověřený konferenci hodnotit, protože:</p>
<ul>
<li>Většinu času jsem byl ve stresu z vlastních vystoupení a neměl čas moc vnímat zbytek konference, nebo si jej nějak užít.
Navíc všechno odsýpalo hodně rychle, v podstatě se nešlo s někým zakecat bez toho, aby člověk přišel o následující blok přednášek.</li>
<li>Jsem zvyklý na PyCon CZ a to je prostě jiný level.
Ale není fér to srovnávat, protože Frontkon je na začátku.
Je skvělé, že vůbec pro takovou konferenci dokázali Frontendisti svou komunitu zmobilizovat.
<a href="https://cz.pycon.org/2015/">První PyCon CZ v roce 2015</a> byl jednodenní (když nepočítám workshopy) a atmosféru měl asi podobnou 🙂
Držím Frontendistům palce, ať se jim konference i komunita daří do příštích let rozvíjet.
Je pro mě velmi sympatické, že to je komunitní, dobrovolnická organizace zaštítěná spolkem, protože přesně tak to máme i my holky a kluci od Pythonu.</li>
<li>Je možné, že Frontendisti zažívali totéž, co já na PyCon CZ, protože tam potkávají známé tváře a kamarády ze své komunity.
Já nedělám frontend, sleduju to jen po očku, takže mi mnoho jmen nic neřekne a jsem tam spíš návštěvník zvenku 🙂
Je jasné, že potom to se mnou nezacloumá tolik, jako s frontendovou cílovkou.</li>
</ul>
<p>Co mi u Frontendistů chybí je nějaká funkční online komunita, kde by se atmosféra „roztleskávala“ ještě před konferencí, a kde by člověk třeba během konference napsal „kam jdete po přednáškách na pivo?“ a dostal by odpovědi, nebo kde by šlo sledovat organizační dění a přiložit případně ruku k dílu.</p>
<p>Zkoušel jsem Discord i Slack, ale bylo to polomrtvé a bylo mi naznačeno, že díky mým zprávám to tam na týden ožilo jako možná nikdy v historii.
Pochopil jsem, že Frontendisti jedou hodně Facebook, ale tam jednak už nejsem, jednak to není chat v reálném čase.</p>
<p>Co se týče přednášky, odnesl jsem si z toho hned několik poučení.
Slíbit krátkou přednášku, protože to dá méně práce, je past.
A když už ji slíbím, tak si musím napsat na papír 3 hlavní věci, které chci sdělit, udělat si k nim 3 slajdy, a hotovo.</p>
<h2 id="upravy-na-blogu">Úpravy na blogu<small class="permalink"><a href="#upravy-na-blogu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Po Frontkonu jsem přespával u kamaráda a měli jsme hezký pátek, kdy jsme si povídali o životě a pak společně pracovali po kavárnách.
Už předem jsem si naplánoval, že jestli budu vůbec v pátek pracovat, pověnuji se trochu svému blogu.</p>
<p>Přesun z Telegramu na Mastodon nebyl úplně hladký.
Vždy jsem něco rychle poměnil po večerech nebo ve chvilce o víkendu, a výsledkem bylo, že v podstatě každý týden jsem se při psaní poznámek zarazil o něco rozbitého.
Nastal čas na to sednout pořádně.
Povedlo se mi následující:</p>
<ul>
<li>Skript, který mi generuje šablonu pro týdenní poznámky, si teď před spuštěním nejdřív stahuje aktuální „tooty“ z Mastodonu.</li>
<li>Tentýž skript se podívá na „tooty“ se štítkem #juniorguru a naháže mi je do poznámek, protože jsou o něčem, co budu chtít v poznámkách zmínit, nebo rozvést.
Původně jsem je zkusil vyloženě citovat a udělal jsem si na to v CSS i hezké fialové obarvení, podobně jako když jsem měl světle modré pro „tweety“, ale nějak mi to nakonec nesedělo a předgenerovávám si akorát seznam odkazů.</li>
<li>Zobrazil jsem hvězdičky a „reblogy“ („retooty“?) v záhlaví článku.
Zobrazil jsem odpovědi z Mastodonu pod článkem jako komentáře.
Synchronizuje se to jednou denně v noci.</li>
<li>No ale hlavně, přidal jsem si do <a href="https://docs.getpelican.com/">Pelicanu</a> rozšíření na pár řádků, které při generování článků z Markdownu uloží informace o článku do SQLite.
Původní skripty na Telegram nebo na poznámky se totiž orientovaly jen podle souborů, případně je zkoušely tak trochu parsovat, a to časem nevedlo k ničemu dobrému.
Takhle se mi informace o článcích uloží do tabulky a skripty mohou přes primitivní SQL dotaz hned zjistit např. kterým z posledních článků chybí odkaz na Telegram, nebo na Mastodon.
Výsledkem je i to, že teď mohu napsat dva články za den a nemělo by to způsobit problémy 😀
Možná jsem to mohl napsat i s čistým Pythonem, ale byl jsem líný a pomohl si <a href="https://sqlite-utils.datasette.io/">sqlite-utils</a>.</li>
<li>Dodělal jsem automatické sdílení nového článku na Mastodon.
Kód jsem učesal a sloučil s tím pro Telegram.
Sjednotil jsem i text, který se připojí k odkazu, když se článek sdílí.</li>
</ul>
<figure class="figure"><img alt="Komentáře pomocí Mastodonu" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-10-13-at-19-38-21-tydenni-poznamky-nastenka-mouder-a-prvni-pribeh-javorove-listky.png"></figure>
<h2 id="vikend-na-zahrade">Víkend na zahradě<small class="permalink"><a href="#vikend-na-zahrade" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Aby se tu jen třicetkrát neopakovalo slovo stres a nevyznělo to celé příliš negativně, tak musím ještě napsat, že o víkendu jsem se připojil k rodince u babičky a pomohl tam s nějakým dřevem.
Počasí vyšlo hezky a povedlo se mi u toho trochu zrelaxovat.</p>
<figure class="figure"><img alt="Dřevo" src="https://honzajavorek.cz/images/img-5720.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Tohle jsem sice zrovna nenasekal já, ale jako ilustrační obrázek dobrý</figcaption></figure>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Propagoval jsem Nelinu přednášku o duševním zdraví: <a href="https://mastodonczech.cz/@honzajavorek/111188534773357122">Mastodon</a>, <a href="https://www.linkedin.com/posts/honzajavorek_nela-slez%C3%A1kov%C3%A1-jak-se-jako-aj%C5%A5%C3%A1k%C4%8Dka-zbavit-activity-7117765789054590976-8yHs">LinkedIn</a></li>
<li>Narazil jsem na zajímavou věc, která umí udělat komentáře přes GitHub: <a href="https://utteranc.es/">utterances</a>.
Nevyužiju, ale někomu se to třeba může líbit.</li>
<li>Členka klubu přišla s nápadem na projekt, který jsem chtěl vyrobit zhruba příští rok vyloženě jako součást junior.guru.
Přemýšlím, jak spojit síly, jak ji třeba zapojit.
Je to ale těžké, protože je frontendistka a já prakticky nemám frontend, respektive mám takový frontend, jaký by se nejspíš žádnému dnešnímu frontendistovi nelíbil 😅</li>
<li>Plánoval jsem Q&A na podzim, které má proběhnout v rámci Týdne pro Digitální Česko.
Aktivizoval jsem nového pomocníka na video a vymýšlím, jak to udělat tak, aby nahrávali oba a v případě průšvihu se přeplo na záložníka.
Zatím jsme se úplně nesladili ani v technologiích, protože na junior.guru tradičně používáme OBS, ale nový pomocník má oblíbený <a href="https://evmux.com/">evmux</a>.
Ten je placený a já si nejsem jist, zda jeho funkce využijeme.
Nahráváme obrazovku a posíláme ji do jednoho streamu.</li>
<li>Přestalo mi správně fungovat zakládání událostí na Discordu.
Nakonec jsem si našel čas to rychle opravit i v tom shonu.
Podle mě je to chyba přímo v Discord API, <a href="https://github.com/discord/discord-api-docs/issues/6481">založil jsem issue</a>.
Objevila se z ničeho nic, ze dne na den, aniž bych cokoliv já měnil.
Tolik asi k tomu, že jsem rentiér a mohu si dát nohy nahoru.</li>
<li>Build junior.guru mi často padal na stahování počtu sledujících z Mastodonu.
Nevím, jestli je to ochrana proti scrapování, nebo <em>downtime</em>, ale <a href="https://mastodonczech.cz/">MastodonCzech</a> prostě dost často vrátil chybu.
Upravil jsem tedy skript, aby se díval i na dvě jiné instance, kde jde informace o mém profilu taky vyčíst.
Možná by to řešilo využití API Mastodonu, ale kvůli takové kravině jsem nechtěl na junior.guru přidávat tři nějaké tokeny.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.</li>
<li>Během 11 dní jsem se nevěnoval žádné sportovní aktivitě.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Pracovat na rozhovorech, ať už ladění existujícího s Romanem V. Dvořákem, nebo vydání dalšího.</li>
<li>Pokračovat v předělávání tipů pro nováčky v klubu.</li>
<li>Pročistit sloupec v Trellu, ve kterém se mi hromadí různá režie.
Vyházet nesmysly, promlčené věci, věci které nespěchají…</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.nihilistanabalkonu.cz/l/co-se-to-deje-v-izraeli/">Co se to děje v Izraeli? :: Nihilista</a><br>Pomohlo mi to zorientovat se v aktuálním dění v Palestině a Izraeli. Něco jsem věděl, něco ne.</li>
<li><a href="https://nitter.cz/StevoEisele/status/1711157019942535282#m">(bez titulku)</a><br>Ať vás F1 zajímá nebo ne, tohle je prostě neskutečný. McLaren má nový světový rekord v nejrychlejším pitstopu: 1,80 sekundy.</li>
<li><a href="https://nitter.cz/DKellyArchitect/status/1711045026262683892#m">(bez titulku)</a><br>„The only status symbol worth looking out for is an invisible one: The degree of control people have over their own time. It comes with seniority, financial independence and good life choices.“ Jako jo, souhlas, a osobně to mám teď dost vyladěné, ale očekávám, že např. školka mi do toho asi hodí dost vidle. Good life choices? 😅</li>
<li><a href="https://keepachangelog.com/">Keep a Changelog</a><br>Proč udržovat CHANGELOG soubor a jak.</li>
<li><a href="https://www.mediar.cz/palme-do-vlastnich-rad/">Palme do vlastních řad</a><br>„Záplava informací a sporů z nás dělá hypergramotné čtenáře doby. Učíme se způsob čtení, jehož cílem je co nejrychleji ideologicky rozřazovat. Šetří to čas i nervy: nebudu se bavit s člověkem, co používá TOHLE slovo.“ „Sledujeme performativní polarizaci. V ní vlivní hráči možná nenabízejí lákavý program, druhou stranu však vykreslují tak děsivě, že se jim skrze konflikt podaří sjednotit vlastní podporovatele.”</li>
<li><a href="https://foundation.mozilla.org/en/privacynotincluded/articles/its-official-cars-are-the-worst-product-category-we-have-ever-reviewed-for-privacy/">*Privacy Not Included: A Buyer’s Guide for Connected Products</a><br>Lol, Mozilla se podívala na to, jak výrobci aut zacházejí s osobními daty a je to naprostá katastrofa. Úplně všechny značky to mají úplně na párku a dají se seřadit jen od velmi špatných po nejhorší.</li>
<li><a href="https://joshcollinsworth.com/blog/antiquated-react/">Things you forgot (or never knew) because of React</a><br>Frontendu nerozumím natolik, abych tohle nějak komentoval, ale bylo to rozhodně zajímavé čtení. A objevil jsem díky němu věci jako petite-vue nebo alpine, které bych teoreticky někdy mohl využít.</li>
<li><a href="https://vurt.eu/articles/on-safety/">A perspective on attendee safety at Python community events - Daniele Procida</a><br>Jsou Python konference v Africe bezpečné? Žádné konference nejsou. Ale u těch na Západě nás nenapadne se na to ptát. „It would be quite a surprise if the organisers of a Python event in the West were to issue safety guidance to black or African attendees. But one doesn’t need to look far to find examples of black community members who have encountered racism while visiting Python events - in countries that no-one would raise concerns about supporting.“</li>
<li><a href="https://magazin.aktualne.cz/bydleni/architektura/meli-si-koupit-hezky-byt-manzele-otevreli-gocarovy-mlyny-opr/r~1ef2271861ef11eea9eeac1f6b220ee8/r~3cac7782629811ee8d680cc47ab5f122/">"Krásné, ale jde z toho hrůza." Manželé otevřeli Gočárovy mlýny s obnovou za miliardu</a><br>Už se těším, až to uvidím! V Pardubicích otevřeli Gočárovy mlýny.</li>
<li><a href="https://www.facebook.com/help/174988392554409/">Odstranění Facebook skupiny, kterou spravujete | Centrum nápovědy pro Facebook</a><br>Věděli jste, že skupinu na Facebooku nelze žádným normálním způsobem úplně zrušit a smazat?</li>
<li><a href="https://dev.to/thejaredwilcurt/bun-hype-how-we-learned-nothing-from-yarn-2n3j">Bun hype. How we learned nothing from Yarn</a><br>Bun. TypeScript. Yarn. CoffeeScript. Stále stejná pohádka? Hype vynese novou technologii do oblak, aby pak všechny její funkce implementoval původní ekosystém a udělal z ní pouze kapitolu dějin. Autor naznačuje, že tyhle věci způsobují jen zmatek a ukrajují zdroje původnímu ekosystému. Otázka je, zda by se bez nich původní ekosystém inovoval, nebo zda by se ty vyhypované funkce nikdy nestaly prioritou vývoje 🤔</li>
</ul></div></div></div></div>Týdenní poznámky: Tipy pro nováčky v klubu, v22023-10-06T00:00:00+02:002023-10-06T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-10-06:/blog/tydenni-poznamky-tipy-pro-novacky-v-klubu-v2/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-nova-homepage-pycon-cz-dovolena-a-unava/">posledních poznámek</a> už utekl nějaký ten týden (29. 9. až 6. 10.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-nova-homepage-pycon-cz-dovolena-a-unava/">posledních poznámek</a> už utekl nějaký ten týden (29. 9. až 6. 10.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/letni-pit-stop/">teď plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/3/">tabulky na GitHubu</a>.</p>
</div>
<p>Tento týden jsem se pustil do překopávání tipů pro nováčky v klubu.
MVP je v podobě dvou kanálů.</p>
<p>Jeden bude typu „fórum“ a budou v něm samotné tipy.
Toto fórum bude přístupné všem v klubu.
Budou do něj moci přidávat i svoje tipy, ale některé tipy bude spravovat bot na základě Markdownových souborů u mě v repozitáři a budou zvýrazněné a propagované jako „oficiální“ tipy.</p>
<p>Pak bude privátní kanál pro všechny nováčky, kam bude bot tipy postupně sdílet.
Zda mít takový jednotný kanál nebo dělat „kohorty“ („běhy“) nováčků podle toho, kdy přišli, je otázka, kterou si odpovím až v budoucnu - viz <a href="https://mastodonczech.cz/@honzajavorek/111175595060968806">diskuze na Mastodonu</a>.
Jednotný kanál je jednodušší na výrobu, tak s ním začnu.</p>
<h2 id="tvorba-fora-s-tipy">Tvorba „fóra“ s tipy<small class="permalink"><a href="#tvorba-fora-s-tipy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Zkoumal jsem, zda lze přes Discord bota vytvořit nové téma na „fóru“ a dát mu obrázek.
To jde.
Na čem jsem se pak ale zasekl bylo zjišťování, zda lze ten obrázek v budoucnu změnit.
To mi nešlo.
Pak jsem ze <a href="https://github.com/Pycord-Development/pycord/discussions/2236">zeptal</a>.
Pak jsem to ještě všelijak zkoušel.
A nakonec se mi to povedlo, tak jsem si zase <a href="https://github.com/Pycord-Development/pycord/discussions/2236#discussioncomment-7175997">sám odpověděl</a>.
A řešení jsem <a href="https://github.com/discord/discord-api-docs/issues/936#issuecomment-1745017848">zdokumentoval i do míst</a>, která jsem předtím náhodou vygooglil.</p>
<p>Nakonec jsem si ale uvědomil, že než bych ke každému tipu vyrobil nějaký pěkný obrázek, tak budou Vánoce, takže bude jednodušší začít ty tipy dělat bez obrázků 😀 Takže jsem</p>
<ul>
<li>vytvořil fórum,</li>
<li>přepsal staré tipy do Markdownu,</li>
<li>vyrobil skript, který je speciálním způsobem načte a připraví,</li>
<li>napsal kód, který je do fóra přidá, pokud tam ještě nejsou, a upraví, pokud tam už jsou.</li>
</ul>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.
Tento týden toho bylo zase nějak hodně, především v klubu.
Pátek ale uzavírám s tím, že mám skoro <em>inbox zero</em> v e-mailu a v klubu mám všechno přečtené a vyřešené, včetně docela pracných odpovědí a kariérních rad, které jsem dlouho odsouval.</li>
<li>Spadl mi bot, protože název vlákna na Discordu může být jen do 100 znaků, ale Pyvo, které bude zanedlouho v Praze, se jmenuje „Pražské Pyvo #149 Engineering Of Structured, Semi-Structured And Unstructured Data & Language Models and the Non-English Languages“.
Když jsem to opravoval, smazal jsem omylem další srazy z Discordu, takže peklíčko!
Ale snad už opraveno.</li>
<li>Naprogramoval jsem si věc, která mi pošle report, pokud bot někomu <a href="https://honzajavorek.cz/blog/tydenni-poznamky-python-sprint-mastodon-a-restart-newsletteru/">nabídne slevu</a>.</li>
<li>Přišly mi dva maily od dvou různých PR agentur s nabídkou hostů do <a href="https://junior.guru/podcast/">podcastu</a>.
Poslal jsem je na ceník:
> Hezký den, díky za tip, ale aktuálně máme na delší dobu naplněnou frontu hostů. Pokud by FIRMA do podcastu moc chtěli, mohou podpořit juniory v Česku a za pozvání si zaplatit https://junior.guru/pricing/ Díky, Honza Javorek</li>
<li>Rozjel jsem v klubu soutěž o tři lístky na <a href="https://frontendisti.cz/konference">Frontkon</a>.
Konference se mezitím vyprodala, takže mají cenu zlata!</li>
<li><a href="https://www.linkedin.com/posts/honzajavorek_devtooling-monitoring-climate-activity-7116055394468155392-EdD4?utm_source=share&utm_medium=member_desktop">Daria hledá práci!</a></li>
<li>Lidem, kteří jsou už rok v klubu, jsem přidal trochu víc oprávnění.</li>
<li>Zrušil jsem skupinu na FB, kde jsem byl admin: Učíme Python.
Všechno jsem k tomu napsal do <a href="https://www.facebook.com/groups/ucimepython/posts/6271091266329112/">vysvětlujícího příspěvku</a>.
Skupinu jsem vlastně nezrušil, ale jen pozastavil, protože jsem zjistil, že na FB skupinu zrušit prakticky nejde 🤯</li>
<li>Propagoval jsem přednášku, kterou jsme nedávno udělali s Nelou a pak uveřejnili.
Dal jsem to <a href="https://mastodonczech.cz/@honzajavorek/111188534773357122">na Mastodon</a> a na LinkedIn (tam je to myslím naplánované na nějaký další den), ale taky jsem prošel všechny příspěvky na FB skupinách, kam v minulosti dával související dotazník, a přidával jsem tam komentář, že na základě toho dotazníku vznikla ta přednáška.</li>
<li>Vyšel nový Flask a Werkzeug, což <a href="https://github.com/Frozen-Flask/Frozen-Flask/issues/129">rozbilo Frozen-Flask</a> a <a href="https://github.com/pyvec/elsa/issues/90">další věci</a>.
Udělal jsem <a href="https://github.com/Frozen-Flask/Frozen-Flask/pull/130">aspoň narychlo Pull Request</a>.
Přišel tam pak týpek a dožadoval se okamžité opravy, tak jsem se neudržel a šel jsem mu <a href="https://github.com/Frozen-Flask/Frozen-Flask/pull/130#issuecomment-1748247285">vysvětlovat open source</a>.
Na pyvec.org jsem <a href="https://github.com/pyvec/pyvec.org/pull/364">musel připnout verze</a>, a uvidíme, co do budoucna.</li>
<li>Přidal jsem Mastodon do svého <a href="https://junior.guru/open/#socialni-site-a-newsletter">grafu počtu sledujících</a>.</li>
<li>Odkaz na poznámky se minule na můj Telegramový kanál poslal třikrát.
Snad jsem to opravil.
Uvidíme dnes.</li>
<li>Měli jsme schůzi výboru Pyvce, zápis <a href="https://docs.google.com/document/d/1DN-HNK8rtwjEHViK1iYNKZ1UQ1Dzik5Rz5wNBtZuFdA/edit">zde</a>.</li>
<li>Udělal jsem <a href="https://github.com/juniorguru/juniorguru-chick/pull/32#pullrequestreview-1657192271">review Pull Requestu</a> a doplnil něco do zadání.</li>
<li>Díky <a href="https://mastodon.rozhlas.cz/@jancibulka/111170906678847503">Janu Cibulkovi na Mastodonu</a> jsem zjistil, že nitter.cz umožňuje odebírat různé Twitter účty přes RSS.
Hurá!
Mohu zase sledovat zásadní účty, jako jsou <a href="https://nitter.cz/levelsio">levels</a>, <a href="https://nitter.cz/TomBorovsk1">středověký historik Borovský</a>, nebo <a href="https://nitter.cz/stevoeisele">Štěvo</a>.
Svět je zase v pořádku.</li>
<li>Dokončil jsem a poslal PDF s prezentací pro mou přednášku na <a href="https://frontendisti.cz/konference">Frontkon</a>.</li>
<li>Dokončil jsem dohodu s Red Hatem na další rok.
Vypadá to dobře!</li>
<li>Švagrová objevila <a href="https://juniorguru.t-shock.eu/">můj e-shop</a>.
Kdysi dávno jsem ho vytvořil, abych vyzkoušel, jak obtížné je udělat <em>merch</em> pro junior.guru.
Obtížné to nebylo, ale já tehdy hledal zdroj příjmů a na to to moc není, pokud neprodáte hromady produktů, protože t-shock má velkou provizi (oprávněně, když všechno řeší).
Takže jsem to nikdy nespustil.
Aspoň jsem si to teda myslel 😀
Zjevně se produkty normálně zobrazují ve vyhledávání.
Tak snad abych to prošel a naklikal tam aspoň něco hezkého a aktuálního.</li>
<li>Hrál jsem si ve <a href="https://drawthings.ai/">Draw Things</a> s SDXL.
Je fascinující, že to na počítači s 8 GB RAM vůbec rozjedu.
Házelo to zajímavé obrázky, ale nakonec jsem se stejně vrátil k SD 1.5, protože SDXL bylo prostě pomalé a nebavilo mě čekat.</li>
<li>Během 8 dní jsem při procházkách nachodil 8 km, ujel na kole 15 km. Celkem jsem se hýbal 7 h a zdolal při tom 23 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Připravit se na Frontkon a přežít ho.</li>
<li>Publikovat success story s Romanem V. Dvořákem.</li>
</ol>
<p>Víc toho, myslím, nestihnu.</p>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.facebook.com/help/174988392554409/">Odstranění Facebook skupiny, kterou spravujete | Centrum nápovědy pro Facebook</a><br>Věděli jste, že skupinu na Facebooku nelze žádným normálním způsobem úplně zrušit a smazat?</li>
<li><a href="https://dev.to/thejaredwilcurt/bun-hype-how-we-learned-nothing-from-yarn-2n3j">Bun hype. How we learned nothing from Yarn</a><br>Bun. TypeScript. Yarn. CoffeeScript. Stále stejná pohádka? Hype vynese novou technologii do oblak, aby pak všechny její funkce implementoval původní ekosystém a udělal z ní pouze kapitolu dějin. Autor naznačuje, že tyhle věci způsobují jen zmatek a ukrajují zdroje původnímu ekosystému. Otázka je, zda by se bez nich původní ekosystém inovoval, nebo zda by se ty vyhypované funkce nikdy nestaly prioritou vývoje 🤔</li>
<li><a href="https://seths.blog/2021/09/intentional-connection-in-the-digital-office/">Intentional connection in the digital office</a><br>„We can share a screen when we get stuck, and we can share it not with the closest person, but with the best person.“ „…connections at the office… didn’t work for everyone in the same way. They often reinforced status roles and privilege. They were unevenly distributed and didn’t usually appear when we needed them. All of which added up to a new layer of stress for many people.“</li>
<li><a href="https://ploum.net/2023-10-01-future-of-offpunk-packaging-hell.html">The future of Offpunk: UNIX command-line heaven and packaging hell</a><br>„4500 lines of organic python… The number of people able to understand its code entanglement was varying between 0 and 1, depending on the quality of my morning Earl Grey.“</li>
<li><a href="https://www.newyorker.com/books/page-turner/rethinking-the-luddites-in-the-age-of-ai">Rethinking the Luddites in the Age of A.I.</a><br>„At the time of the Luddites, many hoped the subpar products would prove unacceptable to consumers or to the government. Instead, social norms adjusted. Both the mass-manufactured products and the regimented jobs that produced them quickly became entrenched.“</li>
<li><a href="https://www.thedial.world/issue-8/ozempic-novo-nordisk-denmark-economy">Ozempic's Economic Empire — The Dial</a><br>Novo Nordisk je Dánská firma, která přišla s přípravkem proti cukrovce a obezitě. Je po něm obrovská poptávka a Novo je už hodnotnější než Coca-Cola. Jenže Dánsko je malá země pro takovou firmu a ekonomika státu se stává na úspěchu Novo Nordisk úplně závislá.</li>
<li><a href="https://matt-rickard.com/is-ai-a-platform-shift">Is AI a Platform Shift?</a><br>„AI turns the marginal cost of content to zero. Whenever the marginal cost of something in the value chain is set to zero, this usually has a downstream effect on where distribution aggregates (e.g., the Internet turned the marginal cost of software distribution to zero).“</li>
<li><a href="https://nitter.cz/TomBorovsk1/status/1694042879780335751#m">(bez titulku)</a><br>Mailová schránka po návratu z dovolené. Přesně takhle jsem to teď měl!</li>
<li><a href="https://ferovadomacnost.cz/audit">Audit domácnosti</a><br>Udělejte si audit domácnosti a posviťte si na to, kdo kolik čeho dělá a jestli by to nešlo změnit tak, aby to bylo vyrovnanější.</li>
<li><a href="https://docs.google.com/presentation/d/1HEcE3qOAGVujcDaNQbiLXyx7zwKHQkXEILsYBhsot7A/edit?usp=embed_facebook">Typed Visions - SDXL - September 2023</a><br>Chcete si doma hrát se Stable Diffusion? Začněte tady. https://docs.google.com/presentation/d/1HEcE3qOAGVujcDaNQbiLXyx7zwKHQkXEILsYBhsot7A/edit</li>
</ul></div></div></div></div>Týdenní poznámky: Nová homepage, PyCon CZ, dovolená a únava2023-09-29T00:00:00+02:002023-09-29T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-09-29:/blog/tydenni-poznamky-nova-homepage-pycon-cz-dovolena-a-unava/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-nastenka-mouder-a-prvni-pribeh/">posledních poznámek</a> už utekl nějaký ten týden (8. 9. až 29. 9.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-nastenka-mouder-a-prvni-pribeh/">posledních poznámek</a> už utekl nějaký ten týden (8. 9. až 29. 9.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/letni-pit-stop/">teď plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/3/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="mastodon">Mastodon<small class="permalink"><a href="#mastodon" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Ve volném čase jsem přemístil, kam dávám odkazy, které mě zaujmou.
Už je nedávám na Telegram do kanálu, ale na Mastodon.
Upravil jsem <a href="https://github.com/honzajavorek/honzajavorek.cz/blob/8e2489701f678ee576ebb9ae38ae7b99fbae21e7/blog/weeknotes.py">svoje skripty</a> tak, aby se na konec poznámek dávaly <a href="https://mastodonczech.cz/@honzajavorek/tagged/links">odkazy, které dám na svůj Mastodon s hashtagem #links</a>.
Bylo to překvapivě jednoduché.
O dost jednodušší, než předtím ten Telegram.</p>
<p>Své <em>tooty</em> si pravidelně zálohuju <a href="https://github.com/honzajavorek/honzajavorek.cz/blob/8e2489701f678ee576ebb9ae38ae7b99fbae21e7/content/data/toots-links.json">do souboru v repozitáři</a>.
Pak už to jen v Pythonu načtu a do poznámek dám ty, které jsem napsal od posledně.</p>
<p>Stejně tak jsem si <a href="https://github.com/honzajavorek/honzajavorek.cz/blob/8e2489701f678ee576ebb9ae38ae7b99fbae21e7/content/data/toots-replies.json">začal ukládat</a> odpovědi na <em>tooty</em>, ve kterých sdílím článek z blogu.
Ještě to nemám hotové, ale chtěl bych je zobrazovat pod články jako komentáře.</p>
<p>A odstranil jsem všude z webu odkazy na Telegramový kanál, aby se tam už nepřidávali další lidi.
Rušit ten kanál ale zatím nebudu.
Dokud mi bude fungovat automatické posílání, tak ho nechám žít.
Pokud se něco rozbije, asi budu mít velmi malou motivaci to opravovat.</p>
<h2 id="ruseni-socialnich-siti">Rušení sociálních sítí<small class="permalink"><a href="#ruseni-socialnich-siti" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Rozhodl jsem se, že sociální sítě, které jsem skoro před rokem nechal ležet ladem, bych měl nějak „ukončit“.</p>
<ul>
<li>FB skupinu pro „fanoušky junior.guru“ jsem chtěl zrušit, ale nakonec jsem našel nějaké tlačítko <em>pause</em>, které umožňuje skupinu pozastavit.
Tak jsem to udělal, ale vlastně nevím, jestli to má nějaký efekt.</li>
<li>Zaslepil jsem účty na Instagramu.
Do bio jsem napsal, kde jinde mě nebo junior.guru lidi najdou, a dal jsem účty jako <em>private</em>.</li>
<li>Na svůj FB i Twitter profil jsem dal zprávu, kde jinde mě lidi mohou najít, a tu jsem tam „připnul“.</li>
</ul>
<figure class="figure"><img alt="Twitter profil" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-11-at-23-07-05-honza-javorek-honzajavorek-x.png"></figure>
<figure class="figure"><img alt="FB skupina" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-11-at-22-55-30-junior-guru-programatori-zacatecnici-navody-prace-v-it-mentoring-facebook.png"></figure>
<figure class="figure"><img alt="IG profil" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-11-at-22-23-08-junior-guru-juniordotguru-instagram-photos-and-videos.png"></figure>
<h2 id="nova-uvodni-stranka">Nová úvodní stránka<small class="permalink"><a href="#nova-uvodni-stranka" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Těsně před PyCon CZ jsem se hecnul a zkusil jsem vyrobit novou úvodní stránku junior.guru.</p>
<p>Cílem bylo udělat cokoliv, co bude lepší než to, co tam je.
Dát si laťku nízko a prostě udělat nejmenší možný krok k něčemu, co bude aspoň o kousek lepší.</p>
<figure class="figure"><img alt="Původní homepage" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-12-at-18-20-58-jak-se-naucit-programovat-a-ziskat-prvni-praci-v-it.png"><figcaption class="figure-caption">
Původní úvodní stránka</figcaption></figure>
<figure class="figure"><img alt="Nová homepage" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-12-at-18-18-30-jak-se-naucit-programovat-a-ziskat-prvni-praci-v-it.png"><figcaption class="figure-caption">
Nová úvodní stránka</figcaption></figure>
<p>Své odhodlání a postup jsem průběžně sdílel na Mastodon a taky v komunitě <a href="https://tvurcast.cz">Tvůrcastu</a>.
Bylo fajn to mít kde probrat a kde dostat podporu.</p>
<p>Největší radost mám asi z toho nového titulku a sloganu.
Původně jsem tohle ani nechtěl přepsat, ale nějak se to omylem stalo.
Chtěl jsem něco napsat k těm boxíkům níže, ale jak jsem ten text ladil a ladil, tak jsem dospěl k tomu, že přesně tohle má být vlastně napsané rovnou tam úplně nahoře.</p>
<p>Ten kreativní proces za tím byl hodně náhodný (např. mě napadlo že si udělám srandu ze sloganu MasterCard a to mě pak inspirovalo), a o to větší radost mám, jak to dopadlo.
Je tam všechno co potrebuju - člověk okamžitě ví, co ta stránka dělá a k čemu je.
Okamžitě ví, že to není kurz, a přesto mám v největší titulek na webu nejklíčovější slovní spojení na SEO, „kurz programování“ 😀</p>
<p>Zároveň je to rejpnutí do kurzů, což je konzistentní s tím, ze junior.guru je nezávislý hráč, který tak trochu rejpe do všech a snaží se z toho celého dělat menší divoký zapad.
Inspirací mi byla trochu Scrimba, která rejpe hodně.</p>
<figure class="figure"><img alt="Úvodní stránka Scrimby" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-12-at-17-29-34-learn-to-code-with-interactive-tutorials-scrimba-com.png"><figcaption class="figure-caption">
Scrimba se s tím nemaže!</figcaption></figure>
<p>Celé jsem to vykutil za jeden pracovní den.
Víc jsem na to neměl, <em>scope</em> jsem jasně ohraničil časem.
Možná bych měl takhle dělat věci častěji 😀</p>
<p>Asi je ale dobré zmínit, že bych to nikdy neměl tak rychle, kdybych to předtím několik let nenosil v hlavě a po kouskách neladil představu, jak to má vlastně vypadat.
Ještě tam toho spousta chybí.
Je to ale lepší, než to, co tam bylo, a to je fajn.</p>
<h2 id="pycon-cz">PyCon CZ<small class="permalink"><a href="#pycon-cz" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<figure class="figure"><img alt="Společná fotka klubu junior.guru" src="https://honzajavorek.cz/images/dscf5781.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Toto je jen jedna z fotek, které jsme v průběhu konference udělali. Ta nejprofesionálnější 😀</figcaption></figure>
<p>Byl <a href="https://cz.pycon.org/2023/">PyCon CZ 23</a>.
Před konferencí jsem měl velký shon.
Spolu s <a href="https://www.linkedin.com/in/mia-bajic/">Miou</a> jsme ladili otázky pro panelovou diskuzi.
Chtěl jsem se potkat s <a href="https://hamatti.org/">Juhou</a> na oběd.
Kamarádka <a href="https://domicanhelp.cz/">Domi</a> se mnou chtěla naposledy nanečisto zkusit svou přednášku.</p>
<p>Den před konferencí jsem dorazil na místo konání a vymýšlel a instaloval jsem tam nástěnku s <a href="https://junior.guru/wisdom/">moudry pro juniory</a>.
Juha měl dobrý nápad, že by to mohly být takové ty nalepovací papírky (<em>post-it</em>).
Myslel jsem, že mi to zabere hodinu, ale zabralo mi to půl dne.
Hledal jsem vhodné místo, navrhoval a tiskl doprovodné letáčky, šel jsem do papírnictví pro materiál, přepisoval vzkazy ve dvou jazycích, lepil to…
S přepisováním a překladem mi pomohli Mia a Timothy.
Odcházel jsem s tím, že to do rána určitě všechno z těch stěn popadá.</p>
<figure class="figure"><img alt="Psaní psaníček" src="https://honzajavorek.cz/images/img-5040.jpg" class="img-fluid figure-img rounded"></figure>
<p>Další den jsem měl na konferenci vést diskuzní kroužek, ale na jeho přípravu jsem měl nakonec zhruba 10 minut.
Večer byl <em>speakers' dinner</em>, kam jsem přišel dost unavený a hladový, ale nakonec to bylo moc fajn.</p>
<p>Během konference to nakonec moc ani nepadalo.
Když jsem šel kolem, snažil jsem se průběžně odchlíplé vzkazy přilepovat.
Až po konferenci jsem si uvědomil, že zvolené místo bylo sice fajn z hlediska toho, že se tam hemžili lidi, ale bylo to na schodech, takže nikdo na vozíku se k tomu nedostal.
Příště na to musím myslet.
Jinak lidi přidávali vzkazy a dostával jsem na to pozitivní zpětnou vazbu, takže se to asi povedlo.</p>
<figure class="figure"><img alt="Psaníčka" src="https://honzajavorek.cz/images/img-5124.jpg" class="img-fluid figure-img rounded"></figure>
<p>Teď bych měl to, co přibylo, přepsat zase z papírků na web, případně přeložit, pokud je to anglicky.
Leží mi to zatím na stole a nevím, kdy se k tomu dostanu.</p>
<p>Konference byla strašně fajn, ale taky dost náročná.
Asi nemám sílu sem rozepisovat všechny přednášky nebo konverzace, které jsem si užil.
Bylo fajn potkat staré známé po mnoha letech, ale i známé z internetu, které jsem viděl poprvé naživo.</p>
<p>Byl jsem na roztrhání a moc jsem o sebe nepečoval, takže jsem byl po dvou dnech úplně vyšťavený.
Mnohokrát jsem zapomněl na jídlo, nebo jsem si pro něj šel ve chvíli, kdy už nebylo.
Nedával jsem si žádné tiché, introvertní pauzy, a vlastně jsem jen vlál od konverzace ke konverzaci.
Přišlo mi, že znám 80 % účastníků na konferenci, protože jsou buď z Python komunity, z junior.guru, nebo z Namibie.
Což bylo krásné, jak se to celé spojilo v jeden velký guláš, kde se všichni poznávali, ale já jsem byl ve víru toho všeho a fakt jsem se nezastavil.
Ani jsem nedokončil jednu debatu a už mě táhli k další.
A vlastně jsem ani neměl čas vidět moc přednášek, ačkoliv jsem vlastně některé fakt vidět chtěl.</p>
<figure class="figure"><img alt="Domi" src="https://honzajavorek.cz/images/img-5112.jpg" class="img-fluid figure-img rounded"></figure>
<p>Na Mastodonu a na LinkedIn jsem před konferencí propagoval <a href="https://mastodonczech.cz/@honzajavorek/111058814539709858">sbírku na děti v Namibii</a>.
Domi o tom měla nakonec na PyCon CZ i <em>lightning talk</em>.
Napadlo to Miu, a Domi že jo, že to je dobrý nápad.
Když zjistila, že LT jsou v hlavním sále, zmohla se jen na: „oh gosh“
Byla to její první přednáška před větším publikem v životě, ale zvládla to skvěle!
Druhý den měla svou přednášku o Python komunitě v Namibii a ta se taky moc povedla.</p>
<figure class="figure"><img alt="Namibie" src="https://honzajavorek.cz/images/img-5125.jpg" class="img-fluid figure-img rounded"></figure>
<p>Do toho jsme organizovali srazy junior.guru klubu na dvorečku, kde ze mě dělali úplného sultána 😅
Moc jsem nevěděl, jak s tím naložit, neměl jsem připraveny žádné proslovy, ale dojímalo mě to a byl jsem strašně rád, že se z klubu na konferenci sešlo kolem 30 lidí, že se naživo poznají, a že klub bude najednou zas o něco méně virtuální.</p>
<figure class="figure"><img alt="Sraz klubu" src="https://honzajavorek.cz/images/img-5063.jpg" class="img-fluid figure-img rounded"></figure>
<p>Na konferenci jsem měl k tomu všemu i svůj vlastní program, který byl sice nenáročný na přípravu, ale i tak to bylo něco, na co jsem se musel soustředit, hlídat si čas, a určitě to byl i stres.</p>
<p>Vedl jsem úplně nový formát, který na PyCon CZ nikdy nebyl, a který jsem nikdy nedělal - <a href="https://cz.pycon.org/2023/program/panels/122/">diskuzní kroužek</a>.
Nevěděl jsem vůbec, co od toho čekat, ale nakonec jsem nějak na místě vymyslel, jak to uvedu a povedu.
Myslím, že to vyšlo skvěle.
Místnost byla narvaná k prasknutí a diskuze jela jako po másle.
Lidi se i ukázněně střídali a nemluvili nijak moc dlouho, nebo se nehádali, takže jsem nemusel nic moc moderovat, jen jsem občas přihodil něco svého a vyvolával jsem, kdo bude mluvit.
Původně jsem nevěděl, jestli není hodina moc, ale vtipně jsme stačili za tu hodinu probrat zhruba jedno z těch deseti témat, které jsem si na to připravil.
Bylo to fakt zajímavé a empatie opravdu tekla proudem.
Zpětná vazba, která se ke mě dostala, byla v podstatě pouze pozitivní, až nadšená.
Jediné, na co si lidi stěžovali, bylo, že to bylo krátké.
Přemýšlím, zda jde takový formát někde zopakovat, protože si myslím, že velkou zásluhu na úspěchu mělo „publikum“.
Koktejl lidí, kteří se na letošním PyConu sešli, byl začátečnickým trackem a velkou účastí členů junior.guru klubu hodně nakloněn k tomu, aby byli na konferenci jak junioři, tak senioři, které navíc junioři zajímají 😀</p>
<figure class="figure"><img alt="Diskuzní kroužek" src="https://honzajavorek.cz/images/p-20230915-130713.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Najdete mě na fotce?</figcaption></figure>
<p>Další věc, které jsem se účastnil, byla <a href="https://cz.pycon.org/2023/program/panels/87/">panelovka</a>.
Ta byla myslím taky zajímavá.
Konečně jsem naživo potkal yablka.
I když jsem si tématem panelovky nebyl původně zcela jistý, nakonec to celkem sedlo.
Každý jsme měli trochu jiné názory, Lucie házela bomby, yablko to měl krásně člověčí, Šárka - juniorka - nám rozbíjela hračky a mluvila z pozice té, která neháže moudra z obláčku, ale žije ty věci.
Jak jsem mluvil já, to nechť vyhodnotí někdo jiný 😀
Zpětná vazba?
Udělal jsem vtip, že vyhořelí seniorní ajťáci odcházející z oboru by potřebovali nějaké „senior.guru“ a pak si mě odchytil borec, který by takové „senior.guru“ chtěl udělat, protože má zkušenosti s psychologickou pomocí vyhořelým lidem.
Taky se prý líbilo, když jsem naznačil, že senioři peníze už moc neřeší, že řeší akorát to, jestli budou mít v práci jogurty zdarma.
A že jestli senior dostává 100 nebo 120 tisíc, to je mu docela jedno, ale jestli junior dostává 30 nebo 50 tisíc, to mu fakt jedno není.</p>
<figure class="figure"><img alt="Panelovka" src="https://honzajavorek.cz/images/14ce3350-ce61-46b8-8296-b849850a2de3.jpg" class="img-fluid figure-img rounded"></figure>
<p>Akorát škoda, že těsně před PyConem dcera dostala ukrutnou rýmu, takže nevyšel plán, že tam se ženou budou a že se budem nějak střídat, aby si taky užila staré známé.
Jeden den vůbec nešli, druhý jen na chvilku.
Perfektní <em>child care</em>, který na konferenci byl, jsme ani nestihli využít.</p>
<p>Závěr konference byl, jako vždy, <a href="https://www.youtube.com/watch?v=1kaJPyTDghY">dojemný</a>.
Doufám, že tahle akce Python komunitu v Česku nakopne a budou noví dobrovolníci na spoustu krásných věcí, aby si ti staří mohli po covidu, kdy to často táhli z posledních sil, konečně odpočinout.</p>
<figure class="figure"><img alt="Hraní" src="https://honzajavorek.cz/images/img20230917034445.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Kluci hrajou na struny, já buším na mini <a href="https://cs.wikipedia.org/wiki/Caj%C3%B3n">cajón</a>, který ale na fotce není vidět, tak tam vypadám asi dost směšně.</figcaption></figure>
<p>Co jsem měl možnost pozorovat, zpětná vazba na PyCon CZ všude možně po sociálních sítích i při osobním kontaktu byla extrémně pozitivní.
Během konference jsem měl pocit, že organizační tým dobrovolníků maká jak mravenci a nezastaví se od pěti ráno do půlnoci.
Tak snad je potěší, že to stálo za to.
Že se díky nim letos PyCon CZ po dlouhé covidové pauze vrátil ve velkém, grandiózně, se vší parádou, a že se to strašně moc lidem fakt strašně moc líbilo.
Asi nejlépe to celé ilustruje <a href="https://floss.social/@hroncok/111092967515065846">tenhle <em>toot</em> od Miro Hrončoka</a>.</p>
<h2 id="dovolena">Dovolená<small class="permalink"><a href="#dovolena" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<figure class="figure"><img alt="Naložené kolo" src="https://honzajavorek.cz/images/img_5391.jpeg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Jak jezdíte na dovolenou vy? Taky balíte dva dospělé a dvouleťáka do kombíka?</figcaption></figure>
<p>Hned po konferenci jsme se sbalili a odjeli na dovolenou.
Sbalili jsme se na kolech, malou jsme vzali do cyklosedačky.
Vlakem jsme se dopravili k Třeboni a tam jsme byli na statku s krávama a ovcema a především polopenzí.
Myslím, že tenhle styl dovolené byl mnohem víc dovolená, než ta Itálie na jaře, a že jsme si tam mnohem víc odpočinuli.</p>
<p>Možná by byla dovolená autem jednodušší. Zabalit dva dospělé a dvouleťáka na kolo není jen tak.
Ale stále nám to takhle nepřijde zásadní opruz na to, abychom řešili auto.
Nechám se překvapit, jestli příští dovolená bude s carsharingem, nebo přikoupíme velké zadní brašny.</p>
<p>Během dovolené jsem zjistil, že přednáška naplánovaná na další úterý se nějak hroutí.
Rozhodl jsem se, že to nebudu řešit a prostě jsem ji posunul, abych měl na dovolené klid.
Jsem na sebe hrdý, že jsem se nenechal strhnout do módu „mimořádná událost, tohle musím řešit i na dovolené“.</p>
<h2 id="dohaneni-po-dovolene">Dohánění po dovolené<small class="permalink"><a href="#dohaneni-po-dovolene" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když jsem se vrátil z dovolené, čekala na mě záplava mailů a nepřečtených zpráv všude možně.
Začal jsem taky chodit na léčbu, kterou mám každý den po obědě.</p>
<p>V rámci prokrastinace jsem se postaral o přijetí nového člena do Pyvce, <a href="https://github.com/pyvec/docs.pyvec.org/pull/345">aktualizoval dokumentaci české Python komunity</a>, apod.</p>
<p>Po týdnu se mi povedlo projít maily, ale klub ještě celý přečtený nemám.
Přivedlo mě to na myšlenku, zda bych neměl upustit od toho, že čtu v klubu všechno, protože to už možná není udržitelné.
Měl bych se nejspíš naučit prostě některé konverzace přeskočit a neřešit.</p>
<p>Řešil jsem prodloužení partnerství s Red Hatem.
K tomu <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn, apod.
<a href="https://www.linkedin.com/feed/update/urn:li:activity:7112710388894289921/">Promoval jsem</a> svůj nadcházející talk na <a href="https://frontendisti.cz/konference">Frontkonu</a>, další konferenci, která se blíží.</p>
<p>Na Frontkon si mám do včera připravit slajdy, takže jsem je ještě dnes dodělával.
Je 22:30 a stále jsem je ještě neposlal.
Pak mám ještě tři lístky do soutěže pro klub, tak to udělám asi příští týden.
Soutěž jsem neřešil, protože jsem měl PyCon CZ a dovolenou, během toho ale stoupla jejich cena, protože Frontkon se mezitím vyprodal 😀</p>
<p>Na Václava jsme se jeli s Mílou projet na kole, ale trochu jsme to možná přestřelili, protože dnes se nemohu hýbat.
Mám pocit, že po týdnu řešení e-mailů, zpráv a nejrůznějšího promování a domlouvání schůzek potřebuji zase dovolenou.
Ale bude teď víkend, tak snad mě to trochu osvěží.
A příští týden musím zase něco naprogramovat, u toho si odpočinu.</p>
<figure class="figure"><img alt="Na kole" src="https://honzajavorek.cz/images/img-5473.jpg" class="img-fluid figure-img rounded"></figure>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Vláda konečně spustila web <a href="https://budoucnostjedigitalni.gov.cz/">Týdnu pro Digitální Česko</a>!
A junior.guru je partner, protože budu v rámci toho pořádat Q&A na YouTube. Stejnou, jako jsem dělal už jednou na jaře, ale tentokrát v rámci této celorepublikové akce pro širokou veřejnost, tak jsem na to dost zvědavý 😅
Taky jsem se nechal ukecat, že tam půjdu do nějakého panelu.
Budou v něm i lidi z MPSV, takže je otázka, jestli tam budu mít co říct, nebo budu jen <a href="https://www.youtube.com/watch?v=jz9w0wv9EBw">zpívat</a>.
Logo TDČ jsem dal mezi další partnerská loga <a href="https://junior.guru/club/">na stránku o klubu</a>.</li>
<li>Přišla nám postel pro dceru, tak jsem ji s ní postavil.
Pak jsme ještě celá rodina předělávali organizaci ložnice, aby se tam všechno vešlo.
Při té příležitosti jsem vyčistil všechny podlahy v bytě.</li>
<li>Zjistil jsem, že vítací kanály s tipy pro nováčky jsou nějaké pokažené.
Nechci to opravovat, chci to celé předělat.
Tak snad se k tomu brzo dostanu.</li>
<li>Když jsem něco promoval, dával jsem to na LinkedIn a na Mastodon.
Nevím, jaký to má na Mastodonu dosah, ale pár lidí to tam asi čte.
Účet nemám dlouho, tak uvidím, jaké publikum se tam nabalí.
Můj odhad je, že tam budou spíš senioři, kteří mi fandí, a které bude zajímat zákulisí toho, jak junior.guru vyrábím.
Zkouším tam občas něco dát i z toho zákulisí, ale nevím, jak dlouho to vydržím dělat, protože pak skoro totéž píšu i sem do poznámek.
Tam mám zase rychlou odměnu, pokud na to někdo reaguje, nebo to lajkne.</li>
<li>Začal jsem pár korunami pravidelně přispívat <a href="https://davidklimes.cz/">Davidu Klimešovi na jeho newsletter</a>.</li>
<li>Oslavili jsme narozeniny.
Dostal jsem super nová světla na kolo!</li>
<li>Zjistil jsem, že existuje <a href="https://github.com/cavi-au/Consent-O-Matic">Consent-O-Matic</a>, ale nevím, jestli dobře funguje pro české weby.
Každopádně je fajn, že to jde nainstalovat i do iPhonu.</li>
<li>Měl bych se kouknout, jestli mi <a href="https://fedi.simonwillison.net/@simon/111054918019075740">tohle</a> nepomůže s paralelizací na CI, když sestavuji webovku junior.guru.
Teď to dělám tak, že se paralelně zapisuje do různých SQLite a ty se pak nějakým mým vlastním algoritmem sloučí.
Pokud bych mohl použít něco, co už někdo vymyslel, tak by to bylo ideální.</li>
<li>Nabídl jsem DigiKoalici pomoc s jejich <a href="https://digikoalice.cz/kurzy/">katalogem kurzů</a>, pokud by je napadlo, jak si můžeme pomoci.
Taky jsem jim psal ještě kvůli partnerství v jedné věci, ale zatím bez odpovědi.</li>
<li>Opravil jsem report, který mi chodí o končících členech klubu.
Původně se mi to posílalo jen v případě, že vyplnili nějakou textovou zpětnou vazbu, ale upravil jsem to tak, aby se mi to posílalo vždycky.
Díky tomu mám přehled, když mi odchází konkrétní lidi, nebo pokud někdo ruší členství proto, že je pro něj moc drahé.</li>
<li>Dělal jsem kamarádce code reviews na <a href="https://github.com/juniorguru/juniorguru-chick/">realtime botovi</a>.
Povedlo se jí tam přidat pár nových fičur, je to super.
Sice se na chvíli něco i rozbilo, ale nebyl to problém.
Aspoň jsem si otestoval, že lidi tu fičuru používají, chtějí, a že se svět nezboří, ani když jsem na dovolené.</li>
<li><a href="https://ctvrtkon.cz/">Čtvrtkon</a> má nový web a s ním i nové API, přes které jde sosat budoucí události.
Přidal jsem to tedy do klubu a vždy, když mají novou událost, objeví se i v klubu na Discordu.</li>
<li>Smazal jsem <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui">Automatic1111</a> na úkor <a href="https://drawthings.ai/">Draw Things</a>.
Na macOS nemá smysl používat nic jiného, je to bezkonkurenční.</li>
<li>Během 22 dní jsem na túrách nachodil 7 km, ujel na kole 146 km. Celkem jsem se hýbal 20 h a zdolal při tom 153 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Udělat soutěž na Frontkon.</li>
<li>Překopat kanály s vítacími tipy v klubu.</li>
<li>Publikovat success story s Romanem Viktorem Dvořákem.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://nickfthilton.medium.com/the-end-of-the-subscription-era-is-coming-ed197f252c6a">The End of the Subscription Era is Coming - Nick Hilton - Medium</a><br>Soumrak předplatných a ekonomiky tvůrců?</li>
<li><a href="https://www.seat61.com/Czech.htm">London to Prague by train | Times, fares, how to buy tickets</a><br>Neznal jsem. Borec z Londýna, který roky jezdí po světě vlakama a píše na web tipy jak na to.</li>
<li><a href="https://www.seznamzpravy.cz/clanek/kultura-eliska-a-damian-jako-nejhorsi-serial-vsech-dob-spis-slavnost-bezvyznamnosti-237176">Eliška a Damián jako nejhorší seriál všech dob? Spíš slavnost bezvýznamnosti</a><br>„Penetruje a podmaní si opět jednoho dne klasika postmodernu?“ Fila o Elišce a Damiánovi.</li>
<li><a href="https://askhistorians.libsyn.com/askhistorians-podcast-episode-212-public-transport-in-north-america-with-jake-berman">AskHistorians Podcast Episode 212 – Public Transport in North America with Jake Berman — The AskHistorians Podcast</a><br>Proč USA a Kanada téměř nemají MHD? Způsobila to složitá kombinace faktorů, která navíc byla v každém městě jiná. Na začátku soukromé monopoly provozující a ruinující MHD (mafie included), a potom 2. světová, po které nebyla Amerika zničená. Měli čas a peníze realizovat utopistické plány, tak všude postavili dálnice.</li>
<li><a href="https://www.seznamzpravy.cz/clanek/nazory-komentare-pod-carou-neni-nutne-mit-konicky-natoz-si-z-nich-delat-praci-236604">Pod čarou: Není nutné mít koníčky. Natož si z nich dělat práci</a><br>„Pokud si tedy odmítneme z koníčku udělat práci s tím, že by se z něj vytratila radost a spontánnost, je to jistě dobře, ale jde jen o začátek hlubší reflexe. Musíme se totiž sami sebe ptát i na to, proč a jak v nás vlastně díky koníčkům ona radost vzniká.“</li>
</ul></div></div></div></div>Týdenní poznámky: Nástěnka mouder a první příběh2023-09-08T00:00:00+02:002023-09-08T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-09-08:/blog/tydenni-poznamky-nastenka-mouder-a-prvni-pribeh/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-python-sprint-mastodon-a-restart-newsletteru/">posledních poznámek</a> už utekl nějaký ten týden (1. 9. až 8. 9.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-python-sprint-mastodon-a-restart-newsletteru/">posledních poznámek</a> už utekl nějaký ten týden (1. 9. až 8. 9.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/letni-pit-stop/">teď plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/3/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="prvni-pribeh-juniora">První příběh juniora<small class="permalink"><a href="#prvni-pribeh-juniora" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p><a href="https://www.linkedin.com/in/adelapavlun/">Adéla Pavlun</a>, která zpracovává rozhovory s juniory z klubu, dokončila první z nich.
Mrknul jsem na to, poslal nějakou zpětnou vazbu, pak jsme to prohlásili za hotové.
Stačí to jen vydat!</p>
<p>Akorát není kam.
Takže jsem začal makat na tom, aby bylo kam.
Vyladil jsem ještě trochu <a href="https://junior.guru/stories/">stránku s příběhy</a> a přidal tam sekci, kam budu dávat příběhy publikované přímo na junior.guru.</p>
<p>Pak jsem se pustil do tvorby podstránky, která bude představovat článek.
Nemám na webu žádný blog a redakční systém, prostě to tam mrsknu jako další Markdown stránku v MkDocs, která má akorát pár srandiček navíc.
V pátek večer jsem skončil s tímto výsledkem:</p>
<figure class="figure"><img alt="Roman Viktor Dvořák" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-08-at-16-54-10-rozhovor-s-romanem-v-dvorakem.png"></figure>
<p>Ještě tam pár věcí chybí, takže to si nechávám na příští týden, ale už teď se těším, až to bude venku!</p>
<h2 id="pribehy-odjinud">Příběhy odjinud<small class="permalink"><a href="#pribehy-odjinud" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Začal jsem si dělat pořádek v backlogu příbehů odjinud.
Pročistil jsem Trello sloupeček na tohle téma a zrušil ho.
Odkazy, které tam byly nasalátované, jsem si dal zatím do komentáře v souboru <a href="https://github.com/honzajavorek/junior.guru/blob/main/juniorguru/data/stories.yml">stories.yml</a> a postupně je procházím a přidávám.</p>
<h2 id="nastenka-mouder">Nástěnka mouder<small class="permalink"><a href="#nastenka-mouder" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Sesbíral jsem moudra z klubu <a href="https://github.com/honzajavorek/junior.guru/blob/main/juniorguru/data/wisdom.yml">do souboru</a> a přidal na web <a href="https://junior.guru/wisdom/">stránku, kam se vypíšou</a>.</p>
<figure class="figure"><img alt="Moudra" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-07-at-19-36-16-dobre-minene-rady-pro-zacatecniky-v-programovani.png"></figure>
<p>Dole je reklama na PyCon CZ:</p>
<figure class="figure"><img alt="PyCon CZ" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-07-at-19-36-26-dobre-minene-rady-pro-zacatecniky-v-programovani.png"></figure>
<p>Na úvodní stránku novinek jsem to přidal jako „moudro dne“:</p>
<figure class="figure"><img alt="Moudro dne" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-07-at-19-36-00-novinky-pro-zacatecniky-v-programovani.png"></figure>
<p>Teď ještě vymyslet fyzickou podobu na PyCon CZ. To udělám asi až ve čtvrtek na místě.
Po konferenci dám dolů místo reklamy na PyCon CZ fotky, jak to vypadalo v reálu.
Budu tam sbírat moudra od účastníků konference a ty pak přidám zase na web.
A kdo ví, třeba budu taková moudra sbírat i do budoucna a na té stránce vznikne pěkná ne nástěnka, ale přímo databáze mouder 😀 A můj bot na Discordu nebo bot, který bude rozesílat newsletter, si jistě s databází mouder poradí a vymyslí, kdy a kam se hodí nějaké náhodně zobrazit.</p>
<h2 id="klubove-akce">Klubové akce<small class="permalink"><a href="#klubove-akce" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Přepsal jsem a aktualizoval celý <a href="https://junior.guru/speaker/">návod pro speakery</a>.
Dal jsem větší důraz na bodové seznamy a stručnost.
V případě vysvětlení specifik Discordu jsem naopak přidal návodné obrázky a se stručností jsem se netrápil.
Hned jsem ho pár lidem poslal a naplánoval jsem na podzim do kalendáře dvě klubové přednášky.</p>
<figure class="figure"><img alt="Stránka pro speakery" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-08-at-17-44-13-pro-prednasejici.png"></figure>
<h2 id="mastodon">Mastodon<small class="permalink"><a href="#mastodon" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Hned potom, co se mi <a href="https://mastodonczech.cz/@banterCZ@witter.cz/111006640279078722">Luboš smál</a>, že nemůžu čekat sledující, když jsem ještě nezačal psát, dosáhl počet mých sledujících 43, čímž srovnal sledující na Telegramu.</p>
<p>K tomuto okamžiku mám 56 sledujících a už začínají i reagovat na to, co píšu, když zrovna něco málo píšu.
To mi přijde hustý, protože zhruba před dvěma týdny jsem Mastodon vůbec neměl a teprve zhruba před týdnem jsem vůbec začal někde propagovat, že ho mám.
Kanál na Telegramu mám tuším od minulých Vánoc, takže co jsem tam nasbíral za třičtvrtě roku, to jsem na Mastodonu nasbíral za týden.</p>
<p>Tím asi považuji experiment za uzavřený.
Až se budu nudit, předělám blog tak, aby se integroval s Mastodonem, ne s Telegramem.
Telegram přestanu propagovat.
Články budu posílat na Mastodon.
Bota na Telegram a kanál asi nezruším, ale nejspíš to předělám tak, aby se tam jen posílalo totéž, co se objeví na Mastodonu.</p>
<h2 id="rozdelovani-slov-na-webu">Rozdělování slov na webu<small class="permalink"><a href="#rozdelovani-slov-na-webu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Do skriptu, který dělá post-processing vygenerovaného HTML webu junior.guru jsem přidal pár řádků, které z HTML vytáhnou hlavní dokument a proženou ho přes <a href="https://github.com/ytiurin/hyphen">hyphen</a>.
Ten do kódu přidává neviditelné rozdělováčky, které prohlížeči říkají, kde může na konci řádku slovo rozdělit.
To se většinou na webu moc nevidí, protože je to specifické pro jazyk.
Knihovna hyphen ale podporuje i češtinu, tak jsem to zkusil.
Pak stačilo <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/hyphens">správně nastavit CSS</a> a je to.
Vypadá to, že to funguje:</p>
<figure class="figure"><img alt="Zalamování" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-08-at-18-02-23-jak-se-naucit-programovat-uvod-do-programovani-v-podobe-rozcestniku-na-nejlepsi-materialy.png"></figure>
<p>Překvapilo mě, jak jednoduché to bylo na realizaci. Mám pocit, že jsem se rozdělování slov pokoušel vyřešit už dřív, ale bylo to mnohem složitější. Toto jsem měl i s googlením knihovny hyphen hotové snad za půl hodiny. Třeba to dám časem i sem na blog.</p>
<p>Pokud na webu junior.guru uvidíte nějaká místa, kde se to zalamuje divně, nebo kde se to zalamuje, ale spíš by to vypadalo líp, kdyby se to nezalamovalo, tak dejte vědět. Taky přemýšlím, jestli bych teď vlastně neměl používat ono jinak zavrhované <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/text-align">justify</a> na zarovnání textu.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Volal jsem si s <a href="https://kitner.cz/">Radkem Kitnerem</a>. Neměli jsme agendu, chtěli jsme se jen poznat, protože o sobě navzájem slýcháme. Byl to příjemný pokec a oba nás díky němu napadly různé věci a synergie.</li>
<li><a href="https://www.linkedin.com/posts/honzajavorek_python-activity-7105552838948216832-F7B0/">Promoval jsem</a> svou účast v panelu na PyCon CZ 23.
Zkusil jsem to dát i <a href="https://mastodonczech.cz/@honzajavorek/111024278856846615">na Mastodon</a> a vypadá to, že to tam někdo snad i čte.
V pondělí budu promovat dál.</li>
<li>Navštívil jsem doktora a konečně se pohnul můj zdravotní stav.
Mám nějakou léčbu, která vypadá, že snad i zabírá.
Psychicky je mi teď skvěle.</li>
<li>Udělal jsem <em>code review</em> kamarádce, která mi pomáhá s malými úkoly na <em>realtime</em> botovi.</li>
<li>Pomáhal jsem <a href="https://cz.pycon.org/2023/program/talks/92/">Domi</a> s přípravou prezentace na PyCon CZ 23.
Dodával jsem jí sebedůvěru a probírali jsme, jak vést storytelling přednášky apod.
Ukazoval jsem jí <a href="https://speakerdeck.com/honzajavorek">nějaké svoje staré přednášky</a> a až mi slza ukápla, když jsem viděl, jak jsem si s tím hrál a jak to bylo plné vtípků.
Přijde mi, že takové věci bych dnes už snad ani neuměl.
Uvidíme, jestli se hecnu a zkusím něco vymyslet na <a href="https://frontendisti.cz/konference">Frontkon</a>.</li>
<li>Připravoval jsem dárek k narozeninám pro manželku, ale ještě to nemám hotové.</li>
<li>Byl jsem na schůzi výboru Pyvce.
Probrali jsme sídlo Pyvce a další věci, viz <a href="https://docs.pyvec.org/operations/meeting-notes.html">zápis</a>.</li>
<li>Vymyslel jsem téma diskuze na PyCon CZ 23: <a href="https://cz.pycon.org/2023/program/panels/122/">Junior versus senior</a>.
Přijďte se zapojit, empatie poteče proudem!</li>
<li>Brácha nám pomohl spočítat, zda bychom dosáhli na hypotéku a mohli aspoň teoreticky uvažovat o pořízení nemovitosti k vlastnímu bydlení.
Z čísel vychází, že možná tak v Karviné.
Uvidíme, jakou strategii do budoucna vymyslíme.
Časem půjde žena do práce, ale ani to asi stačit nebude.
Jedna varianta je připravit junior.guru např. na půlroční útlum a sehnat si k němu na chvíli vedlejšák, který by nám nabušil příjmy.
Jiná varianta je nabušit junior.guru, aby nám nabušilo příjmy 😎
Ani jedno mi nepřijde nereálné.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.</li>
<li>Během 8 dní jsem se nevěnoval žádné sportovní aktivitě.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Vydat první příběh juniora z klubu.</li>
<li>Zpracovat nástěnku mouder tak, aby mohla být na PyCon CZ 23 fyzicky.</li>
<li>Užít si PyCon CZ 23.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.voxpot.cz/indie-to-jest-bharat-bude-se-nejlidnatejsi-zeme-prejmenovavat/">Indie, to jest Bhárat. Bude se nejlidnatější země přejmenovávat? - VOXPOT</a><br>„Mnohem pikantnější jsou však ohlasy ze zahraničí. Pokud by nejlidnatější země skutečně od svého mezinárodně uznávaného názvu upustila, po jméně Indie už pokukuje sousední Pákistán.“</li>
<li><a href="https://houdekpetr.blogspot.com/2023/08/past-na-rodice.html">Past na rodiče</a><br>„Zapomnělo se, že výchova dětí nikdy nebyla jen odpovědností rodičů. Celou evoluci lidstva to byla sdílená starost. Jelikož spolu žili širší rodiny, o děti se spíše starali babičky, tety a strejdové, často sousedi či kolegové.“</li>
</ul></div></div></div></div>Týdenní poznámky: Python sprint, Mastodon a restart newsletteru2023-09-01T00:00:00+02:002023-09-01T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-09-01:/blog/tydenni-poznamky-python-sprint-mastodon-a-restart-newsletteru/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-sekce-s-novinkami-a-jinja/">posledních poznámek</a> už utekl nějaký ten týden (18. 8. až 1. 9.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-sekce-s-novinkami-a-jinja/">posledních poznámek</a> už utekl nějaký ten týden (18. 8. až 1. 9.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/letni-pit-stop/">teď plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/3/">tabulky na GitHubu</a>.</p>
</div>
<p>Píšu po dvou týdnech, tak je to dnes trochu hutnější!
A mimochodem, minule jsem si ani nevšiml, že jsem napsal 550. článek na tento blog.
Tenhle je 551.</p>
<h2 id="sleva-pro-dlouhodobe-cleny-klubu">Sleva pro dlouhodobé členy klubu<small class="permalink"><a href="#sleva-pro-dlouhodobe-cleny-klubu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Rozhodl jsem se, že nebudu řešit tzv. <em>referrals</em>, tedy institucionalizované doporučování nových lidí do klubu stávajícími členy.
Původní nápad byl, že by bot každému rozeslal nějaký odkaz, kterým mají posílat nové lidi do klubu.
Tento odkaz by sledoval, kolik kdo poslal lidí do klubu, a dával by jim nějakou slevu.</p>
<p>Jednak by to bylo implementačně obtížné, jednak si vlastně nemyslím, že by to mělo velký efekt.</p>
<p>Memberful <a href="https://memberful.com/help/analytics-and-tracking/track-member-referrals/">to sice umí</a>, takže by se použilo to, ale nejsem si jistý, zda by šlo např. nastavit, aby se započítal jen člověk, který zůstal po <em>trialu</em>.</p>
<p>Lidi klub doporučují sami od sebe a rádi.
A já si myslím, že je takové sledování a počítání nakonec spíš otrava.
Když Alice řekne Pepovi, aby přišel do klubu, a on to za půl roku udělá, asi se nebude registrovat přes její odkaz.
Nebo když mu víc lidí klub doporučí, má si mezi nimi vybírat?
Co když někdo klub doporučí ústně?
Prostě je to zanášení nějakého technicistního přístupu do mezilidských vztahů a pestrého, chaotického vzájemného doporučování.</p>
<p>Co mi nakonec i po konzultaci s investorkou (manželkou) dávalo větší smysl, byla paušální sleva všem, kdo jsou v klubu už nějakou delší dobu.
Klub má pro lidi omezenou využitelnost.
Málokdo si nenajde práci např. do roka, mnoho lidí si ji najde i dřív.
V tu chvíli jejich sociální potřeby začne saturovat kolektiv ve firmě a klub pro ně už přestává být tak důležitý, jako dřív.
Pokud se do něj rádi vracejí, je to aby jej podpořili, nebo aby poradili.</p>
<p>Dostávají tedy od klubu menší hodnotu a naopak nějakou přinášejí.
Toto chci reflektovat a to přinášení hodnoty a budování nějakého stálejšího jádra v komunitě chci podporovat.
Spravil jsem tedy jak se počítá „rok v klubu“, protože to byl doteď jen primitivní výpočet:</p>
<pre class="highlight"><code><span></span><code>(datum dnešní - datum registrace) / 365
</code></code></pre>
<p>Lidem, kteří byli v klubu měsíc před rokem a měsíc teď, to započítalo, že jsou v klubu celý rok.
Teď to sleduje opravdovou dobu, po kterou člověk klub využíval.</p>
<p>Pak jsem si udělal nějaké propočty.
Rozhodl jsem se slevu nabídnout lidem, kteří jsou v klubu déle jak rok.
9 lidí z klubu mělo za členství utraceno v součtu 4.587 Kč (nejvíc).
45 lidí mělo za členství utraceno víc jak 3.000 Kč.
184 lidí bylo v klubu déle než rok, 74 déle než dva, z toho 44 nemělo žádný kupón (stipendium, placeno firmou, apod.).
V moment, kdy jsem slevu spouštěl, by na ni dosáhlo 115 lidí, ale sleva se nabídne těsně před končícím aktuálním členstvím a ti lidé mají různé datum, kdy jim členství vypřší.
Je to tedy dost lidí, ale rozloženo postupně v čase.</p>
<p>Nakonec jsem přidal ještě podmínku, že slevu dostanou jen ti, kdo za poslední půlrok něco málo napsali do klubu.
A stačí fakt málo.
Přijde mi to fér.
Pokud chci podpořit zdravé jádro a to, aby zkušenější lidi pomáhali méně zkušeným, tak tohle nevybuduju na lidech, kteří si klub pouze čtou.
Nemám nic proti pasivnímu využívání klubu a ve všech ostatních případech si vážím pasivních uživatelů klubu stejně jako těch aktivnějších, ale toto je cílená sleva s nějakým záměrem a pasivní čtenář holt k tomu záměru nepřispívá.
Také to odfiltruje lidi, kteří si zaplatili roční členství, ale nakonec jej přestali využívat a jen jim doběhlo.</p>
<p>Co se týče slevy, původně jsem uvažoval až o 50 %, ale to pak vycházelo až nesmyslně levně, takže jsem dal slevu menší, byť stále dost výraznou.
Chtěl jsem, aby to bylo jasné gesto.</p>
<p>Dvěma lidem jsem přes administraci posunul obnovení členství o pár dní, aby stihli nově zavedenou slevu chytit.
Pak jsem naprogramoval mechanismus, který lidem s nárokem na slevu pošle do soukromé zprávy nabídku na slevu dva týdny před prodloužením předplatného.</p>
<p>Memberful umožňuje <a href="https://memberful.com/help/custom-development-and-api/create-coupons-in-bulk-via-api/">hromadně vytvářet unikátní kupóny</a>, ale s tím jsem se nepáral a prostě mají všichni stejný kupón.
Budu to řešit až pokud to bude problém.</p>
<p>K dnešnímu dni ten kupón nikdo nevyužil.
Takže buď mi to nefunguje a lidem se nic neposílá, nebo všichni chtějí junior.guru podpořit a není pro ně taková sleva podstatná.
Pokud tohle čte někdo z členů, kdo dostal soukromou zprávu jako na obrázku níže, napište mi prosím aspoň, že to funguje 😀</p>
<figure class="figure"><img alt="Soukromá zpráva od kuřete" src="https://honzajavorek.cz/images/screenshot-2023-09-01-at-16-14-00.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Soukromá zpráva od kuřete</figcaption></figure>
<h2 id="novinky">Novinky!<small class="permalink"><a href="#novinky" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Na webu byla už z předchozích týdnů sekce Novinky, no teď konečně dostala <a href="https://junior.guru/news/">svou úvodní stránku</a>.
Zadání znělo:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Mít úvodní stránku pro Novinky, kde bude poslední díl podcastu, poslední přednáška, plánovaná přednáška, poslední příběhy juniora a aktuální info, o čem se nejvíc diskutuje v klubu (kanály jako v týdenním souhrnu?)… Tahle úvodní stránka by měla potenciál stát se pravidelným obsahem newsletteru, takže nedělat žádný složitý design.</p>
</blockquote>
</figure><p>A tak se i stalo.
Díky vzniku úvodní stránky jsem taky mohl odstranit boční panel, který se sice hodí na příručce, ale tady nedával smysl a nelíbil se mi.
Místo toho jsou tam různé <a href="https://en.wikipedia.org/wiki/Breadcrumb_navigation#Websites">drobečky</a> a tlačítka.</p>
<figure class="figure"><img alt="Úvodní stránka novinek" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-01-at-18-29-44-novinky-pro-zacatecniky-v-programovani.png"></figure>
<p>Nakonec jsem obsah upravil tak, aby tam byla vždy jedna věc nejnovější a jedna je náhodný „tip z archivu“.
To by mohlo pomoci lidem objevovat i klenoty z minulosti.
Algoritmus výběru toho tipu je zatím opravdu náhodný, což má své mouchy, ale to mohu vylepšit později.</p>
<p>Hodně jsem se mazlil s designem a všechno na té stránce jsem tak třikrát změnil, než se mi to začalo aspoň trochu líbit.</p>
<p>Každopádně to plánuji udělat tak, že jednou za dva týdny nebo za týden se jakoby vezme to, co je na téhle úvodní stránce, a pošle se to lidem e-mailem.
A to bude newsletter junior.guru.
Budu se snažit, aby tenhle rozcestník novinek, potažmo newsletter, měl jasnou odpověď na tyto otázky:</p>
<ul>
<li>„Proč by to měl někdo číst nebo odebírat?“</li>
<li>„Kde je přidaná hodnota?“</li>
</ul>
<p>Zatím to neumím úplně dobře zformulovat, ale to je taky tím, že tam ještě nemám vše, co tam chci mít.
Plánuji to vylepšovat postupně a je možné, že to prostě začne na nízké hodnotě „nové věci od junior.guru“ a až časem se to bude zlepšovat třeba k „unikátní výběr toho nejlepšího pro juniory, ze všech různých zdrojů“.</p>
<p>Pro teď mám v zásadě hotovo, co se týče vyšívání na novinkách.
Teď musím počkat, až moje spolupracovnice pošle první hotový rozhovor a ten pak mohu v rámci téhle nové sekce na webu publikovat.</p>
<h2 id="python-sprint">Python sprint<small class="permalink"><a href="#python-sprint" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>O víkendu byl letošní <a href="https://blog.python.cz/Letni-sprinty-Python-komunity-v-Msenem">letní sprint Python komunity</a>.
Poslední roky jsem vynechal, protože jsme měli mimino, letos jsem poprvé přijel už ve čtvrtek.
Bylo fajn vidět zase všechny lidi, které znám a mám rád.
Bylo fajn potkat nové lidi.
Na sprintu jsem:</p>
<ul>
<li>Trochu počistil nastavení <a href="https://github.com/pyvec">@pyvec</a> na GitHubu</li>
<li>Dal jsem na <a href="https://pyvec.org/">pyvec.org</a> odkazy na Mastodon jednotlivých lidí</li>
<li>Udělal jsem pořádek ve starých <a href="https://docs.pyvec.org/operations/meeting-notes.html">zápisech ze schůzí výboru</a></li>
<li>Upgradoval jsem Sphinx na <a href="https://docs.pyvec.org/">docs.pyvec.org</a></li>
<li>Měli jsme schůzi výboru</li>
<li>S Anežkou jsme pročistili <a href="https://docs.pyvec.org/operations/twitter.html">dokumentaci ohledně Twitter účtů</a></li>
<li>Trochu jsem klukům radil s oživením <a href="https://blog.python.cz/">blog.python.cz</a> a jeho případným přesunem na <a href="https://hashnode.com/">Hashnode</a>.</li>
<li>Chtěl jsem rozbitý <a href="https://python.cz/">python.cz</a> dostat do stavu, kdy bude fungovat a bude do něj bude schopen přispět i někdo další, ale pak jsem zjistil, že to udělal už tři dny přes sprintem <a href="http://encukou.cz/">Petr Viktorin</a>.
Jenže jak už nesleduju ten repozitář, tak jsem si toho vůbec nevšiml.
Nemohli jsme se ale pohnout, protože Hashnode celý víkend nefungovalo tlačítko na upgrade z <em>free</em> tarifu na placený.</li>
<li>Předchozí bod mě neodrazil od <a href="https://cs.wikipedia.org/wiki/Robinzon%C3%A1da">robinzonády</a>, které jsem se věnoval celý zbytek sprintu, a to <a href="https://github.com/pyvec/python.cz/pull/559">předělávání python.cz na MkDocs</a>.</li>
</ul>
<p>Co se týče posledního bodu, překvapilo mě, jak rychle šlo něco tak dobrého vykutit na <a href="https://www.mkdocs.org/">MkDocs</a>.
Když se totiž použil vzhled <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a>, tak ten si s sebou nese asi tisíc dalších nastavení a udělátek, které stačí nakonfigurovat a ono to PROSTĚ FUNGUJE.
I na mobilu! 😀
Rozpracovaný nový python.cz si lze prohlédnout <a href="https://honzajavorek.github.io/mkdocs-python.cz/">zde</a>.
Bohužel jsem to nestihl do konce sprintu dodělat, takže to teď bude asi čekat, kdy budu mít zase trochu času.</p>
<figure class="figure"><img alt="Rozpracovaný nový python.cz" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-01-at-17-38-42-python-v-cr.png"></figure>
<p>Cíle a důvody atd. jsem <a href="https://github.com/pyvec/python.cz/pull/559">popsal v Pull Requestu</a>.
Jde hlavně o to, aby vznikla webovka, kde není <em>custom</em> design, protože Pythonisti nejsou webaři, a kam je schopen přispět úplně kdokoliv, protože obsah je obyčejný Markdown.
Kdyby se to osvědčilo, dovedu si představit stejný princip implementovaný jednou i na <a href="https://pyvec.org/">pyvec.org</a> nebo <a href="https://pyladies.cz/">pyladies.cz</a>.</p>
<h2 id="mastodon">Mastodon<small class="permalink"><a href="#mastodon" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Už jsem neodolal a ze zvědavosti jsem si založil Mastodon.
Moc jsem neřešil provozovatele.
Mám to na <a href="https://mastodonczech.cz/@honzajavorek">@honzajavorek@mastodonczech.cz</a>.</p>
<figure class="figure"><img alt="můj Mastodon" src="https://honzajavorek.cz/images/screenshot-2023-09-01-at-18-37-10-mastodonczech.png" class="img-fluid figure-img rounded"></figure>
<p>Můj kanál na Telegramu sledovalo 36 lidí.
Řekl jsem si, že když bude můj Mastodon bez jediného příspěvku sledovat taky aspoň 36 sledujících, tak tam začnu něco psát.</p>
<p>Nejpřímočařejší využití by bylo stejné, jako je u toho Telegramového kanálu.
Dával bych tam zajímavé odkazy a články z blogu.
Jestli bych tam dával i něco dalšího, to by se ještě vidělo.</p>
<p>Byť má Telegram svoje API a to API je celkem použitelné (přičemž ani jedno není u dnešních sociálních sítí standardem), přece jen je Mastodon otevřenější platforma a to je mi sympatické.
Taky by <a href="https://github.com/honzajavorek/honzajavorek.cz/issues/286">šlo odpovědi integrovat jako komentáře na blog</a>.
To mi přijde lákavé.</p>
<p>Na Python sprintu jsme založili Mastodon i pro <a href="https://floss.social/@pyconcz">PyCon CZ</a> a uvidíme, jestli to bude mít nějaký dosah.
Twitter brzy shoří v plamenech a bylo by fajn mít i nějaké jiné místo, kde mohou lidi konferenci sledovat.
Pokud se to osvědčí, možná založíme i něco na další aktivity z české Python komunity, jako alternativu k <a href="https://docs.pyvec.org/operations/twitter.html">našim Twitter účtům</a>.</p>
<p>Taky jsem oslovil členy Pyvce, jestli Mastodon používají.
Do seznamu na <a href="https://pyvec.org/#members">pyvec.org</a> jsem pak přidal ikonku Mastodonu u těch, kdo účet mají.</p>
<p>Mezitím má můj Telegram 43 sledujících a Mastodon 28, takže je z toho závod 😀</p>
<h2 id="meetup-zlobi">Meetup zlobí<small class="permalink"><a href="#meetup-zlobi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Hned po tom, co jsem si liboval, jak mám hezky na junior.guru vyřešené to stahování událostí z Meetup.com, a jak to budu moci použít i pro nový python.cz (protože <a href="https://github.com/pyvec/python.cz/issues/557">se to tam rozbilo</a>), tak to zase přestalo fungovat. To už jsem se fakt naštval!</p>
<p>Bylo zjevné, že o toto se bude potřeba pečlivě starat, jinak se to bude stále rozbíjet.
Aby tedy mohl jednou python.cz využít toho, že díky junior.guru budu mít vždy funkční a opravené řešení, vytáhl jsem toto řešení do samostatné knihovny v rámci juniorguru organizace na GitHubu.</p>
<figure class="figure"><img alt="konverzace s ChatGPT" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-08-30-at-15-13-38.png"><figcaption class="figure-caption">
ChatGPT sice schválilo můj postup, což mě zahřálo na srdíčku, ale moc mi nakonec nepomohlo</figcaption></figure>
<p>Při vymýšlení názvu jsem sice poprosil ChatGPT, ale nakonec jsem si ho vymyslel sám: <a href="https://github.com/juniorguru/teemup">teemup</a>.
Díky <a href="https://python-poetry.org/">Poetry</a> jsem měl za chvíli funkční balíček.
Využil jsem <a href="https://docs.pytest.org/how-to/doctest.html">doctests</a>, tak jsem zvědav, jak praktické to do budoucna bude.</p>
<figure class="figure"><img alt="teemup" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-01-at-17-53-23-juniorguru-teemup-if-meetup-didn-t-become-a-walled-garden-the-world-wouldn-t-need-teemup.png"></figure>
<p>Do README nové knihovny jsem popsal, proč existuje a zaznamenal jsem historii toho, jak se integrace s Meetup.com postupně rozbíjí.</p>
<p>Druhý den se to rozbilo znova, ale jen kvůli tomu, že jsem jeden případ nedomyslel, takže bylo snadné to opravit.
O to horší to bylo ale co se týče publikace nového balíčku.</p>
<p>Já jsem si totiž na <a href="https://pypi.org/">PyPI</a> nově zapnul 2FA a pak jsem zjistil, že bez nějaké super bezpečné šílenosti zvané <em>Trusted Publisher Management</em> teď nemůžu vůbec publikovat nové balíčky.
Vypnout 2FA už nešlo.
Asi hodinu jsem četl návody, psal YAMLy, vyplňoval formuláře a nadával jsem si, že jsem si to 2FA zapnul.
Nakonec jsem to <a href="https://github.com/juniorguru/teemup/blob/ef27c6b11d964a42357af535c852409bf7b407fc/.github/workflows/release.yml">nějak rozchodil</a> a balíčky se publikují.
Já jako chápu, že jméno a heslo mělo jistě spoustu bezpečnostních slabin, ale jako <em>tyvole</em>!
Kvůli jedné… musíš rozebrat celý traktor.
Verzi 1.0.1 se mi nicméně nakonec povedlo vydat.</p>
<h2 id="newsletter">Newsletter<small class="permalink"><a href="#newsletter" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Po sprintu jsem se rozhodl, že by bylo fajn na úvodní stránku Novinek přidat přihlašování k newsletteru.
Že ještě neexistuje?
Nevadí 😀
Za jeden den jsem měl hotové tohle:</p>
<figure class="figure"><img alt="Newsletter" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-08-31-at-13-43-14-novinky-pro-zacatecniky-v-programovani.png"></figure>
<p>Mail se zaznamená v <a href="https://ecomail.cz/">Ecomailu</a> a to je všechno 😀</p>
<ul>
<li>Budu mít méně stresu, že už bude <a href="https://cz.pycon.org/2023/">PyCon CZ</a> a já stále ještě nemám newsletter a nesbírám kontakty</li>
<li>Že zatím nic nechodí si podle mě stejně nikdo nevšimne</li>
<li>Číslo 378 jsem tam napsal natvrdo. Je jich opravdu 378, přenáším starou databázi z MailChimpu, z dob kdy jsem ještě měl původní newsletter. Aby se číslo zjistilo z API Ecomailu dodělám později.</li>
<li>Bylo potřeba dodělat <em>double opt-in</em>.</li>
<li>Bylo potřeba dodělat poděkování, když se někdo přihlásí, protože se nic nezobrazilo a člověk nevěděl, která bije.</li>
<li>Ecomail má zdarma tarif na míň kontaktů, než mám já, takže ani žádný newsletter teď poslat nemůžu - to až začnu platit. Ale taky to znamená, že sbírat kontakty můžu hned, i bez toho, abych už platil.</li>
</ul>
<p>Spousta nedostatků a žádný newsletter vlastně ještě ani není, ale – je to venku! 💪</p>
<figure class="figure"><img alt="Ecomail" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-01-at-18-40-36-prehled-ecomail.png"></figure>
<p>Registrace a nastavení Ecomailu bylo jednoduché.
Chvíli jsem hledal, jak přesunout kontakty z MailChimpu, ale nakonec <a href="https://support.ecomail.cz/cs/articles/6419768-prechod-z-platformy-mailchimp">našel</a>.</p>
<p>Ecomail je strašně osvěžující po tom přeplácaném a nepřehledném prostředí v MailChimpu.
Jen jsem se tam přihlásil, abych exportoval kontakty, a měl jsem pocit, že mi jeb…
Když jsem se odhlašoval, připadal jsem si jako že utíkám z nějaké hořící stavby, která se hned po mém odchodu sesune k zemi.
Podobný pocit, jako když jsem opouštěl přeplácané Google Analytics a odcházel k <a href="https://www.simpleanalytics.com/?referral=honza-javorek">Simple Analytics</a>. Nebo z Twitteru na ten Mastodon. Vypadá to, že Ecomail:</p>
<ul>
<li>Je přehlednější a svižnější</li>
<li>Má na všechno pěkné návody, i video návody</li>
<li>Má jednoduché API, které jsem schopen použít</li>
<li>Je česky (stejně jako moje cílovka)</li>
<li>Je údajně vyladěný pro české e-mailové schránky (např. Seznam, kde je hodně mojí cílovky)</li>
<li>Nesnaží se ze mě vytřískat za každou cenu peníze, naplácat si do e-mailu loga, apod., a má rozumnou cenu</li>
<li>Má všechny možné fičury</li>
</ul>
<p>Ecomail má nějaké svoje vyladěné JavaScriptové formuláře, ale já jsem fanoušek HTML, takže jsem si našel, <a href="https://support.ecomail.cz/cs/articles/66568-pouziti-a-nastaveni-vlastniho-formulare#h_0877a464c5">jak to udělat čistě přes to</a>.
Pak už stačilo jen nastavit, aby po uložení kontaktu uživatele přesměrovali na <code>junior.guru/news/#email-subscribed</code> a po ověření kontaktu na <code>junior.guru/news/#email-confirmed</code>.</p>
<p>Následně jsem si napsal <a href="https://github.com/honzajavorek/junior.guru/blob/7f0e08ec39df4f45cd1b9a20febb9de642f5b1d9/juniorguru/js/email.js">svých pár řádků JavaScriptu</a>, které pouze zobrazují nebo schovávají kousky formuláře podle toho, co je v adrese stránky.</p>
<figure class="figure"><img alt="Potvrzený e-mail" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-09-01-at-17-20-13-novinky-pro-zacatecniky-v-programovani.png"></figure>
<p>Z API Ecomailu jsem si vytáhl počet odběratelů a přidal k počtům sledujících na různých sítích.
Takže <a href="https://junior.guru/open/#socialni-site-a-newsletter">mám newsletter už i v grafu</a> a číslo na stránce s odběrem se propisuje podle reálného počtu odběratelů.</p>
<p>Dodělal jsem to dnes, tak budu rád, když to otestujete a dáte mi vědět, jestli to vlastně funguje 😀</p>
<h2 id="doktori">Doktoři<small class="permalink"><a href="#doktori" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Objížděl jsem opět doktory.
Jedno pondělí jsem v čekárně strávil 3 hodiny.
V ordinaci jsem byl 5 minut, ani ne.
Když připočítám cestu, z domova jsem vyrazil 9:20 a zpět jsem byl 14:50.
Bohužel jsem to nečekal, takže jsem neměl ani pití, ani svačinu, ani počítač, a po dvou hodinách se mi vybil mobil.</p>
<p>Druhá podobná návštěva naštěstí vyšla lépe a v čekárně jsem strávil asi jen půl hodiny.
Měl jsem z toho smíšené pocity, protože jsem to sice vyřešil rychle, ale taky jsem s sebou měl tentokrát pro jistotu úplně všechno, snad kromě stanu a křesadla.
Takže jsem se s tím vším tahal úplně zbytečně.</p>
<p>Celkově se řešení mých problémů táhne a zatím se nikam moc neposouvá.
Dovolené doktorů nebo naše to samozřejmě prodlužují.
Příští týden snad bude další posun.</p>
<p>Nikde jsem záměrně nepsal, co přesně řeším, takže nemusíte prohledávat předchozí poznámky.
Nikde to zmíněno není.
Mám to celý život, teď se to akorát zhoršilo a nikdo si s tím neví tak úplně rady.
S každým dalším týdnem se mi dost zhoršuje kvalita života, ale programovat můžu 😎
Nebudu však zastírat, že je čím dál obtížnější se soustředit i na běžnou agendu.</p>
<h2 id="zaloznik-za-tinukiho">Záložník za Tinukiho<small class="permalink"><a href="#zaloznik-za-tinukiho" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Tinuki nahrává přednášky v klubu a ozval se mi, že neví, jestli bude mít od října tolik času.
Začal jsem tedy hledat záložníka, případně náhradníka.
Inzerát zní nějak takto a dával jsem ho zatím jen do klubu:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Nahrává se přes OBS, ideálně pokud máš nějakou zkušenost s podobným streamováním, ale zase netřeba to hrotit, děláme to spíš punkově. Tinuki by tě zaučil. Časová vytíženost je zhruba 2x2h měsíčně (většinou úterky mezi 17:30 a 19:30). Je to placené jako brigáda. Součástí je samozřejmě zdarma členství v klubu.</p>
</blockquote>
</figure><p>Nakonec se mi ozval borec, který dělá streamy pro <a href="https://naucme.it/">Nauč mě IT</a>, a na první pokec to vypadalo dobře.
Záložníka tedy asi máme.
Hned jsem zase o něco klidnější.</p>
<h2 id="ddos-utok-na-ceske-banky">DDoS útok na české banky<small class="permalink"><a href="#ddos-utok-na-ceske-banky" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Někdo dělá DDoS útok na české banky.
Takže mi samozřejmě padají všechny skripty, které se snaží číst můj bankovní účet (Fio API) nebo třeba kurzy dolaru a eura (ČNB API).
Aspoň jsem to teda předělal, aby to nepadalo na takových věcech (které nejsou na junior.guru zrovna to nejpodstatnější), ale představoval jsem si pátek jinak.
I když…
NÚKIB si asi taky představoval pátek jinak 😀</p>
<p>Díky předchozím změnám se skript, který chodí na Fio, s výpadkem vyrovná celkem snadno.
Historii transakcí si uchávám, takže si akorát nenačte nové.
U směnných kurzů jsem založil <a href="https://github.com/honzajavorek/junior.guru/blob/7f0e08ec39df4f45cd1b9a20febb9de642f5b1d9/juniorguru/data/exhange_rates.yml">nový YAML v repozitáři</a>, kde budou natvrdo a když nebude mít ČNB výpadek, tak se akorát budou automaticky aktualizovat.
Bylo zajímavé cvičení zajistit, aby <a href="https://hitchdev.com/strictyaml/">strictyaml</a> při zapisování YAMLu dal desetinné číslo (ve skutečnosti <a href="https://docs.python.org/3/library/decimal.html">Decimal</a>) do uvozovek jako <em>string</em>.
I když jsem to možná neměl vůbec řešit a je to jen profesní deformace, protože pro moje účely je úplně jedno, jestli tam bude <a href="https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems"><em>floating point</em> chyba</a> nebo ne…</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Začal jsem v klubu sbírat vzkazy od juniorů pro juniory.
Chci z toho udělat nástěnku na <a href="https://cz.pycon.org/2023/">PyCon CZ</a>.
Čas se mi ale nějak krátí!</li>
<li>S autorem <a href="https://jinjax.scaletti.dev/">JinjaX</a> jsem diskutoval o různých věcech a zjistil jsem, že by to asi šlo použít i pro můj <em>use case</em>.
Navíc to vypadá, že <a href="https://github.com/jpsca/jinjax/discussions/18#discussioncomment-6805986">mám v jednom případě nápad</a>, který nedostal ani samotný autor knihovny.
Třeba mu s tím pomůžu!</li>
<li>Logo junior.guru je i s popisem v <a href="https://cz.pycon.org/2023/sponsors/">seznamu partnerů PyCon CZ</a>.
Juch!
Dík <a href="https://coreskill.tech/">Danovi</a>, že ho upravil tak, aby mělo i žluté pozadí.</li>
<li>Opravil jsem spoustu různých malých chyb, které mi zabraly od pěti minut po celé hodiny času, ale jejichž popisu vás ušetřím.
Např. <a href="https://github.com/honzajavorek/czech-political-parties/issues/3">tohle</a>.</li>
<li>Sháněl jsem dárky pro manželku.</li>
<li>DigiKoalice, jejímž jsem členem, spustila „konkurenční“ <a href="https://digikoalice.cz/kurzy/">seznam kurzů</a> 😀
Má to trochu jiný záměr atd. a jsem zvědav, jak se jim bude dařit to držet aktuální.
Napsal jsem jim a pokud by byl způsob, jak jim můžu pomoci, tak jim pomůžu.</li>
<li>Investorka (manželka) si koupila lístek na <a href="https://cz.pycon.org/2023/">PyCon CZ</a> a půjdeme tam spolu.
Máme tam společné kamarády (angažovala se dřív v <a href="https://pyladies.cz/">PyLadies</a>) a na konferenci by měl být i nějaký dětský koutek, tak snad se u dcerky zvládneme prostřídat a oba si to užijeme.</li>
<li>Objevil jsem <a href="https://drawthings.ai/">Draw Things</a>!
Už jsem na to narazil dřív, ale myslel jsem, že je to jen pro telefony.
Můj iPhone X to přitom nespustí.
Jenže mi nedošlo, že to můžu nainstalovat i do macOS, když mám Apple Silicon.
Uživatelské rozhraní je trochu divoké, ale je to asi nejvyladěnější a nejrychlejší způsob, jak generovat obrázky přes Stable Diffusion na macOS.
Jsem už hodně zvyklý na <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui">Automatic1111</a>, je to už takový <em>industry standard</em> všech nadšenců do SD, ale je rozdíl na něco čekat minuty, nebo sekundy.
Appka má i Discord, kde se toho děje „tak akorát“, což je taky příjemné.</li>
<li><a href="http://tvurcast.cz/">Tvůrcast</a> měl díl o tom, jak máme podporovat tvůrce, které máme rádi.
Jak jim máme psát zpětnou vazbu a platit za to, co dělají.
Tak jsem si Tvůrcast zaplatil, no.
Nedělám to úplně na denním pořádku, ale 99 Kč za měsíc si rozpočet junior.guru může dovolit a dostanu za to nějaké nové impulzy a komunitu lidí, kteří řeší podobné problémy, jako já.
Tu jejich komunitu, která je taky na Discordu, jsem začal samozřejmě hned plevelit svými hlubokými myšlenkami 😅</li>
<li>Pomáhal jsem kamarádce s přípravou její přednášky na <a href="https://cz.pycon.org/2023/program/talks/92/">PyCon CZ</a>.
Pak nás napadlo, že bychom udělali i webovku, kde by o ní bylo základní info, a která by jí mohla na konferenci při networkingu pomoci objevit nové příležitosti.
Ještě ten večer jsem si řekl, že to zkusím vykutit za 15 minut a fakt, <a href="https://github.com/honzajavorek/domicanhelp.cz/">povedlo se</a>.
To mě dost překvapilo, protože většinou, když si myslím, že něco bude trvat 15 minut, tak mi to zabere dva dny.
Tohle vyšlo i s registrací domény, změnami DNS a certifikátem na https.
Taky mě překvapilo, že GitHub Pages umí zobrazit README soubor rovnou jako HTML.
Už jsem si brousil zuby na <a href="https://simplecss.org/">Simple.css</a> nebo tak něco, ale pro MVP to nebylo ani potřeba.
Samozřejmě to není ještě obsahově hotové, tak to zatím nikomu neposílejte.</li>
<li>Zarezervovali jsme si dovolenou na druhou polovinu září.
Tahle bude v ČR.
Tím se mi snad povede splnit cíl, že budu mít aspoň dvě aspoň týdenní dovolené za rok.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.
Mailů se mi nahromadilo nějak strašně moc a během sprintu jsem nestíhal číst klub, takže to jsem pak všechno doháněl snad dva dny v kuse.
Zpracoval jsem jedno stipendium.</li>
<li>Koupili jsme konečně dceři postel.</li>
<li>Během uplynulých 15 dní jsem se nevěnoval žádné sportovní aktivitě.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Spustit anketu pro juniory.</li>
<li>Dodat PyCon CZ téma diskuze, kterou tam povedu.
Zpracovat nějak vzkazy od juniorů pro juniory.
Promovat svůj panel a diskuzi na PyCon CZ.</li>
<li>Aktualizovat stránku pro speakery.
Sehnat přednášející do klubu na podzim.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=MtQZKyDGXaM">Trying To Find Fitness Advice Online</a><br>Jak vypadá pokus o to cokoliv zjistit nebo se naučit na dnešním internetu</li>
<li><a href="https://www.voxpot.cz/rychle-zpravy/ekonomicky-blok-brics-nabidl-clenstvi-sesti-novym-zemim-je-to-historicky-krok-rekl-cinsky-prezident/">Ekonomický blok BRICS nabídl členství šesti novým zemím. Je to historický krok, řekl čínský prezident - VOXPOT</a><br>Tohle bude ještě zajímavé.</li>
<li><a href="https://www.noemamag.com/the-world-china-is-building/?utm_source=noematwitter&utm_medium=noemasocial">The World China Is Building</a><br>„The capitalist system pursues frontier technologies and profits, but companies like Huawei pursue scalability to the forgotten people of the world. For better or worse, it’s San Francisco or Shenzhen. For many countries in the Global South, the model of development exemplified by Shenzhen seems more plausible and attainable. Nobody thinks they can replicate Silicon Valley, but many seem to think they can replicate Chinese infrastructure-driven middle-class consumerism.“ „If every apartment decorated with IKEA furniture looks the same, prepare for every city in booming Asia to start looking like Shenzhen. If you like clean streets, bullet trains, public safety and fast Wi-Fi, this may not be a bad thing.“</li>
<li><a href="https://mastodonczech.cz/@honzajavorek/">Honza Javorek (@honzajavorek@mastodonczech.cz)</a><br>Kanál na Telegramu aktuálně sleduje 36 lidí. Na zkoušku jsem si založil Mastodon. Až tam budu mít taky aspoň 36 sledujících, tak tam třeba něco začnu psát 😄</li>
<li><a href="https://www.youtube.com/watch?v=h8Jth_ijZyY">"Catching up on the weird world of LLMs" - Simon Willison (North Bay Python 2023)</a><br>Super shrnutí všeho kolem AI ve čtyřiceti minutách od Simona Willisona (a když píšu AI, myslím tím konkrétně LLM, jako je ChatGPT apod.)</li>
<li><a href="https://medium.com/together-institute/why-i-stopped-trying-to-engage-passive-community-members-the-3-circles-model-a5144ec8be5b">Why we stopped trying to engage passive community members — the 3 circles model.</a><br>„It takes a lot of energy to convince a passive person to be active and the results are often short-lived. Force doesn’t work. It doesn’t work in most parts of life, but especially not in non-hierarchical and volunteer-driven environments like communities.“</li>
<li><a href="https://www.businessinsider.com/hobbies-death-side-hustles-remote-work-job-market-economic-precarity-2023-7">The strange, sad side effect of side hustles</a><br>„A hobby, by definition, is an activity done regularly in one's leisure time for pleasure. But in recent years, expectations have shifted: The fun activities we used to do to fill our spare time should be productive, even profitable.“ Tohle se mi přesně stalo: „One con is that you just don't have hobbies anymore because you've monetized them.“</li>
</ul></div></div></div></div>Týdenní poznámky: Sekce s novinkami a Jinja2023-08-18T00:00:00+02:002023-08-18T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-08-18:/blog/tydenni-poznamky-sekce-s-novinkami-a-jinja/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-hemzeni-neuronu-a-e-mailu/">posledních poznámek</a> už utekl nějaký ten týden (12. 8. až 18. 8.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-hemzeni-neuronu-a-e-mailu/">posledních poznámek</a> už utekl nějaký ten týden (12. 8. až 18. 8.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/letni-pit-stop/">teď plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/3/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="sekce-s-novinkami">Sekce s novinkami<small class="permalink"><a href="#sekce-s-novinkami" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Minule jsem vytvořil novou sekci na webu, do které jsem přesunul podcast a klubové akce.
Postupně ji osekávám do tvaru, jaký chci, stejně jako sochař osekává nějaký nevzhledný šutr.</p>
<ul>
<li>Do novinek jsem přesunul příběhy juniorů.
Jejich kompletní výpis je na úvodní stránce webu, ale tam jednou nebude.
Další kompletní výpis byl úplně dole na <a href="https://junior.guru/handbook/motivation/">stránce o motivaci</a>.
Odtamtud jsem příběhy přesunul.</li>
<li>Odladil jsem menu na mobilu, aby nepřesahovalo mimo viewport.</li>
<li>Vymyslel jsem CSS komponentu, kartu, která je schopna člověku odprezentovat obsah typu přednáška, epizoda podcastu, nebo odkaz na <em>success story</em>.
Docela jsem si s tím hrál a její design ještě v průběhu týdne měnil.
Tuto kartu jsem pak použil na výpis přednášek, podcastů, i příběhů.</li>
<li>Vytvářel jsem podstránky pro klubové akce a pro epizody podcastu.
Abych to mohl udělat, musel jsem každé akci přiřadit nějaké ID.
Přišlo mi to jako nejlepší řešení, protože vše ostatní se může měnit (název, datum a čas), nebo to není unikátní (např. přednášející).
Dřív se používal čas konání, ale šlo jen o kotvu na jedné dlouhé stránce.
Když se to změnilo, člověk se dostal na seznam přednášek, ne na 404ku.
U podcastu byl zase jakýsi zmatek v tom, co je vlastně ID, co je číslo, a co je nějaké technické unikátní označení.
Tento chaos jsem musel vyčistit.</li>
<li>Přidal jsem na podstránky <em>breadcrumbs</em>.
Sjednotil jsem, jak vypadá navigace dole.
Použil jsem to pak i v katalogu kurzů.</li>
<li>Příběhy přebrané z jiných webů jsem předělal tak, aby se otvíraly do nového okna a přidal jsem jim UTM parametry.</li>
</ul>
<figure class="figure"><img alt="Příběhy" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-08-18-at-19-06-51-inspirativni-pribehy.png"><figcaption class="figure-caption">
Takhle nově vypadají odkazy na příběhy</figcaption></figure>
<figure class="figure"><img alt="Klubové akce" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-08-18-at-19-06-59-online-akce-pro-zacatecniky-v-programovani.png"><figcaption class="figure-caption">
Takhle nově vypadají odkazy na klubové akce</figcaption></figure>
<figure class="figure"><img alt="Podcast" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-08-18-at-19-07-41-podcast-pro-juniory-v-it.png"><figcaption class="figure-caption">
Takhle nově vypadají odkazy na epizody podcastu</figcaption></figure>
<figure class="figure"><img alt="Podstránka klubových akcí" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-08-18-at-19-08-08-marta-kirchgessner-dev-fiction-juniori-a-realita-vyvojarskeho-tymu-online-akce.png"><figcaption class="figure-caption">
Podstránka klubových akcí je zatím ošklivá, ale je tam…</figcaption></figure>
<figure class="figure"><img alt="Podstránka podcastu" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-08-18-at-19-07-56-anastazie-sedlakova-dnanexus-nejen-o-materstvi-a-kariere-v-it-epizoda-podcastu.png"><figcaption class="figure-caption">
Podstránka podcastových epizod je taky zatím ošklivá…</figcaption></figure>
<p>Teď bych chtěl udělat novinkám úvodní stránku, která bude takovou „palubní deskou“.
Nejnovější podcast, plánovaná přednáška, poslední přednáška…
No a tahle palubní deska by měla mít potenciál stát se jednou obsahem pravidelného newsletteru.
Až bude tahle úvodní stránka, odstraním nejspíš úplně ten modrý postranní navigační panel.
Nějak mi to na ty novinky nesedí.
Nechám lidi proklikat se jen z „palubní desky“ a rozšířím <em>breadcrumbs</em> o jednu úroveň.</p>
<h2 id="cache-busting">Cache busting<small class="permalink"><a href="#cache-busting" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Zjistil jsem, že když jsem začal používat <a href="https://esbuild.github.io/">esbuild</a>, vyhodil jsem tzv. <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching#cache_busting">cache busting</a>.
To byl kousek kódu, který do HTML přidával za adresu k .css nebo .js souboru jeho verzi, aby prohlížeče načetly novou, pokud se soubor změnil.
Doteď jsem nic v tomto směru velmi neměnil, tak to nevadilo, ale teď jsem začal do CSS dost sahat, tak to zlobilo.</p>
<p>Šlo by to nějak řešit přímo v esbuildu, ale já mám z historických důvodů složitý stack (přecházím z Flasku na MkDocs a stále ještě mám něco ve Flasku a něco v MkDocs), tak jsem si to <a href="https://github.com/honzajavorek/junior.guru/blob/aab0ea34b9b9a0bde787a2c3745b48b6edf4121d/juniorguru/cli/web.py#L159">musel udělat po svém</a>.
Krátký skript, který pouštím těsně před deployem, a který projde vygenerované statické HTML a tohle do nich přidá.</p>
<p>Staromilsky chci mít HTML kód čitelný, neminifikovaný.
Když jsem byl puberťák, čtením HTML kódu cizích webů jsem se naučil většinu věcí.
Tohle bych chtěl umožnit i juniorům, kteří by se zajímali o to, jak junior.guru funguje.
Napadlo mě, že když už mám ten postprocess skript, mohl by nad tím HTML rovnou pustit <a href="https://prettier.io/">Prettier</a>, aby to bylo vyloženě krásné.
Ale na to teď nemám čas, tak třeba někdy, jednou 🙂</p>
<h2 id="jinja">Jinja<small class="permalink"><a href="#jinja" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Při tvorbě nové sekce na webu jsem narazil na spoustu nepříjemností kolem toho, jak mám webovku udělanou.
Jednou z věcí je chaotičnost Jinja šablon a maker.</p>
<p>Další z věcí je pomalost generování MkDocs.
Ta je způsobena tím, že jsem do Markdownu narval ještě jednu Jinju.
Taky to vytváří ještě větší chaos v tom, co je vlastně Markdown, co je HTML, co je šablona.</p>
<p>Hodně jsem nad tím přemýšlel a díval jsem se, co všechno existuje.</p>
<ul>
<li>Prošel jsem si celý <a href="https://github.com/mkdocs/catalog">MkDocs katalog</a>.</li>
<li>Objevil jsem <a href="https://jinjax.scaletti.dev/">JinjaX</a>, komponenty v Jinje. Wow!</li>
<li>Zamyslel jsem se nad tím, kolik stránek je Markdown a kolik je v podstatě čistá Jinja.
Napadlo mě, že některé věci by šly řešit ne Jinjou, ale rozšířením přímo v Markdownu.</li>
<li>Objevil jsem <a href="https://github.com/vokimon/markdown-customblocks">Customblocks</a>.</li>
<li>Koukal jsem na expermentální <a href="https://facelessuser.github.io/pymdown-extensions/extensions/blocks/">PyMdown blocks</a>.</li>
<li>Objevil jsem formátovač Jinja šablon, <a href="https://djlint.com/">djLint</a>. Wow!</li>
</ul>
<figure class="figure"><img alt="JinjaX" src="https://honzajavorek.cz/images/screenshot-2023-08-18-at-19-06-26-jinjax-documentation.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
<em>From chaos to clarity!</em></figcaption></figure>
<p>Nějaké velké závěry z toho nemám.
JinjaX se mi líbí hodně, rád bych to použil, ale <a href="https://github.com/jpsca/jinjax/issues/17">nevím, jestli to za současného stavu vlastně jde</a>.</p>
<p>Syntaxe a zpracování Customblocks se mi líbí víc než PyMdown blocks.
Možná bych tím mohl vyřešit spoustu věcí, které teď do Markdownu plácám jako Jinja makra.</p>
<p>Napadlo mě, že jednu věc můžu udělat hned.
Rozdělit explicitně co je Markdown s Jinjou a co je čistá Jinja.
Půlka stránek na junior.guru je <em>content-heavy</em>, zatímco druhá půlka je zase <em>custom</em> a plná HTML značek a Jinja maker.
U té druhé půlky by se dal Markdown úplně přeskočit.</p>
<p>Snažil jsem se najít, jak MkDocs rozšířit, abych mohl pro některé stránky Markdown vypnout, ale zrovna tohle bohužel nejde.
Když jsem se dověděl, že to nejde oficiálně, tak jsem si přečetl kód a udělal to neoficiálně.
Udělal jsem si <a href="https://github.com/honzajavorek/junior.guru/blob/aab0ea34b9b9a0bde787a2c3745b48b6edf4121d/juniorguru/lib/mkdocs_jinja.py">knihovničku mkdocs_jinja.py</a>, do které jsem jednak přesunul nějaké smetí, které už jsem měl různě jinde po souborech, jednak jsem si tam dal tzv. <em>monkey patching</em>, který říká MkDocs, že soubory s koncovkou .jinja jsou taky dokumenty, a že pro tyto soubory má úplně přeskočit generování HTML z Markdownu.
Překvapilo mě, jak to nebylo vůbec složité a skoro na první dobrou to zafungovalo!</p>
<p>Ne že bych do toho hned překlápěl všechny stránky, ale nějaké nové, např. podstránku podcastu, jsem udělal už jako .jinja.
Zatím nepozoruji nějaké výrazné zrychlení generování MkDocs, ale to jsem popravdě ani moc nečekal.</p>
<p>Super je, že jsem ještě našel <a href="https://marketplace.visualstudio.com/items?itemName=samuelcolvin.jinjahtml">Better Jinja</a> doplněk do VS Code, a ten mi teď krásně obarvuje .jinja soubory.
A obarvoval by i .md.jinja (jako mix Markdownu a Jinjy), kdybych je tak měl pojmenované.
Nechápu, proč jsem tento doplněk nenašel a nezačal používat už dřív!</p>
<p>Dalším krokem by mohlo být použití Customblocks aj. rozšíření Markdownu.
Tím by se možná docílilo toho, že bych ve spoustě dokumentech vůbec Jinju nepotřeboval.
Nedělal jsem nějakou velkou analýzu, ale je možné, že by pak všechny <em>content-heavy</em> dokumenty mohly být čistý Markdown a vedle toho by byly vyladěné (djLint? JinjaX?) .jinja soubory na ty <em>custom</em> stránky.
To už by pak nejspíš mohlo vést i ke zrychlení, protože pro jedny by se zcela přeskočilo generování Jinjou, a pro druhé by se zcela přeskočilo generování Markdownem.</p>
<p>Taky mě napadlo, že můj Jinja filtr <code>{{ 'balloon'|icon }}</code>, kterým generuju <code><i class="bi bi-balloon"></i></code>, aby se tam po načtení speciálního fontu zobrazila ikonka z <a href="https://icons.getbootstrap.com/">Bootstrap Icons</a>, by mohl stejně tak dobře generovat rovnou SVG těch ikon. Mohl bych pak úplně vyhodit ten font, který mi furt někde dělal starosti 😀 Tak to až se budu někdy nudit.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Hned v pondělí jsem své nové spolupracovnici připravil podklady pro rozhovory s juniory.
Všechno okamžitě rozjela a začala kontaktovat lidi.
Dva hned slíbili, že si na ni udělají čas.
Nejdřív se nedostala na Discord, ale už tam je a může si k jednotlivým lidem dočíst kontext.</li>
<li>Měl jsem call s další vzdělávací agenturou, která zvažuje partnerství, aby šla víc vidět v <a href="https://junior.guru/courses/">katalogu</a>.
Partnerství si nejspíš nezaplatí, ale mám zajímavé poznatky.
Jednak se jim líbí co dělám a hodně mi fandí a posílají mi na web lidi.
Jednak by chtěli mnohem víc nějakého filtrování v katalogu.
Jednak obhájit zaplacení něčeho takového zahraničním šéfům je složité, takže kdybych jim k té obhajobě předpřipravil nějaká data, čísla a informace, tak by se jim to mnohem víc chtělo obhajovat.
A rozhodně by neposílali studenty a absolventy do klubu, protože kariérové poradenství se snaží mít pod svými křídly.</li>
<li>Zapracoval jsem feedback od pokusných králíků.
Anketa mezi juniory je snad připravená ke spuštění.</li>
<li>Několik hodin jsem byl na kafi s Lukášem z <a href="https://www.fakturoid.cz/">Fakturoidu</a> a kecali jsme o podnikání a o životě.</li>
<li>Když už jsem se v MkDocs šťoural v generovaných stránkách, předělal jsem všechny permanentní redirecty tak, aby to nebyly soubory v repozitáři, ale aby se vygenerovaly.
Je super, že teď můžu ve VS Code hledat v souborech <code>learn</code> a nenabídne se mi už <code>learn.md</code> (redirect), ale jen <code>handbook/learn.md</code>.
Na redirecty je nějaké <a href="https://github.com/mkdocs/mkdocs-redirects">rozšíření</a>, ale já to udělal přes <a href="https://github.com/oprypin/mkdocs-gen-files">generování</a>, které už tam stejně mám.
Nebylo to nic složitého a můžu to mít jak já chci (např. česky).</li>
<li>Dělal jsem <a href="https://github.com/juniorguru/juniorguru-chick/pull/27">code review kamarádce</a>.
Bylo osvěžující zase s někým spolupracovat a dělat code review!
Tatáž kamarádka, protože má zkušenosti z byznysu, mi ještě prošla grafy a sepsala mi, co si o nich myslí.
Měla zajímavé nápady.</li>
<li>V týdenním souhrnu v klubu se objevilo vlákno, které bylo privátní.
Opravil jsem souhrn, resp. stahovač obsahu klubu, aby taková vlákna přeskakoval.</li>
<li>Patička junior.guru by už chtěla trochu změnit, ale aspoň jsem v ní změnil tlačítko „Podpoř mě členstvím“ na „Grafy a čísla“.
Tohle tlačítko je vedle informace, že vydělávám 65.853 Kč měsíčně, tak mi přišlo blbé žádat o nějakou podporu.
Když jsem tam to tlačítko prvně dával, vydělával jsem tuším kolem 10.000 Kč 🙂</li>
<li>V jednu chvíli jsem se zasnil a přemýšlel jsem nad tím, jak bych programoval junior.guru, kdybych s ním začínal dnes.
Rozhodně bych vzal SQLAlchemy místo Peewee.
A rozhodně bych to celé udělal v asyncio, s tím, že do synchronního kódu bych <a href="https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.run_in_executor">odskakoval</a>, kdyby bylo potřeba.
Teď to mám naopak a je to <em>pain</em>.</li>
<li>Šel jsem dceři ukázat Vltavu a lodě.</li>
<li>Chodil jsem po doktorech.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.</li>
<li>Během 7 dní jsem ujel na kole 17 km. Celkem jsem se hýbal 8 h a zdolal při tom 17 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Rozjet „přáníčka“ od juniorů pro juniory, což musím stihnout do PyConu.
Udělat jim vlastní sekci v novinkách.</li>
<li>Mít úvodní stránku pro Novinky, která bude mít potenciál stát se pravidelným obsahem newsletteru.</li>
<li>Naplánovat přednášky na podzim.</li>
</ol>
<p><strong>Bonus:</strong> Jet na <a href="https://blog.python.cz/Letni-sprinty-Python-komunity-v-Msenem">komunitní Python sprint</a>.</p>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=GQUl2ySyj9U">FullJourney - The EVERYTHING AI / Video, Images, Music, Text to Speech, Sound FX</a><br>Nestíháte sledovat novinky v AI? Tady je video o tom, jak si to můžete všechno rovnou vyzkoušet na jednom místě. Vygenerujte si bolywoodskou písničku, zvuk prdu, hlas, video…</li>
<li><a href="https://www.mediar.cz/media-se-pseudokriticnosti-obiraji-o-vlastni-vliv/">Média se pseudokritičností obírají o vlastní vliv</a><br>„Média svou pseudokritičností a přejímáním lobbistických příběhů připravila sebe samá o to nejcennější: schopnost nastavovat agendu. Spíš čím dál víc slouží jako jeden ze zdrojů contentu, který přináší jen o trochu jiný emoční vzruch než true crime podcast.“ Nebo: „Nejsou peníze, za které by se zaplatil dostatek kvalifikovaných lidí. Nešťastnou vyhladovělost státní aparát a média sdílí. Obě strany se drží ve vyčerpaném klinči, zatímco se stávají snadnou kořistí pro zájmové skupiny.“</li>
</ul></div></div></div></div>Týdenní poznámky: Hemžení neuronů a e-mailů2023-08-12T00:00:00+02:002023-08-12T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-08-12:/blog/tydenni-poznamky-hemzeni-neuronu-a-e-mailu/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-cisla-a-premysleni/">posledních poznámek</a> už utekl nějaký ten týden (4. 8. až 12. 8.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-cisla-a-premysleni/">posledních poznámek</a> už utekl nějaký ten týden (4. 8. až 12. 8.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/letni-pit-stop/">teď plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/3/">tabulky na GitHubu</a>.</p>
</div>
<p>Vůbec jsem nevěděl, jak tento týden nazvat, protože jsem jeho první polovinu přemýšlel a psal <a href="https://honzajavorek.cz/blog/letni-pit-stop/">Letní pit stop</a>, druhou jsem posílal různé e-maily.
Jen zlomek času jsem nakonec stihl věnovat kódění.</p>
<h2 id="sifrovacka">Šifrovačka<small class="permalink"><a href="#sifrovacka" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Byl jsem s kamarádem na <a href="https://sifrovacky.cz/">šifrovačce</a> v Brně a bylo to super!
A to přesto, že docela pršelo.</p>
<figure class="figure"><img alt="Šifrovačka" src="https://honzajavorek.cz/images/img-4749.jpg" class="img-fluid figure-img rounded"></figure>
<h2 id="hledani-pisatele-rozhovoru">Hledání pisatele rozhovorů<small class="permalink"><a href="#hledani-pisatele-rozhovoru" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Jak jsem psal už v tom letním pit stopu, rozhodl jsem se, že rozhovory s juniorama budou jednou z aktuálních priorit.
Už dříve jsem naťukl pár lidí, že by to pro mě mohli psát, ale zatím z toho nikdy nic nebylo.</p>
<p>Zkusil jsem tedy oslovit lidi v klubu.
Tam to sklidilo velký ohlas, že chci něco takového dělat, ale nikdo se nepřihlásil, že by to psal.
Možná jsem to ale i špatně formuloval, protože se přihlásili lidi, kteří by chtěli být v rozhovoru.
Až potom mi došlo, že to šlo pochopit i tak, že hledám respondenty.</p>
<p>Nicméně vzpomněl jsem si na jednu autorku rozhovorů, kterou znám díky spolupráci s <a href="https://www.heroine.cz/">Heroine</a>.
Té jsem napsal a vypadá to, že se domluvíme.
Ladíme podobu spolupráce, ale myslím, že to klapne a už se těším, až se to rozjede 💪</p>
<h2 id="cindy">Cindy<small class="permalink"><a href="#cindy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Ve volném čase jsem dokončil <a href="https://github.com/honzajavorek/cindy">cindy</a>, jednoduchý prográmek, který mi pomůže třídit fotky.
Vezme složku s fotkami a rozřadí je do adresářů podle data, kdy byly fotky pořízeny.
Ne že bych měl vždy album 1:1 ke každému dni, ale se salátem náhodných fotek ve složce to pomůže.</p>
<p>Když jsem na cindy pracoval, narazil jsem na <a href="https://github.com/ianare/exif-py/issues/184">tento bug</a> v knihovně exif-py.
Nakonec jsem ale veškeré knihovny na meta data fotek vzdal a volám prostě v subprocesu starý dobrý exiftool.
Aby to však bylo rychlé, naučil jsem se dělat <a href="https://docs.python.org/3/library/asyncio-subprocess.html">subproces pomocí asyncio</a>.
Frčí to jak namydlené.</p>
<h2 id="anketa-a-focus">Anketa a focus<small class="permalink"><a href="#anketa-a-focus" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Prokrastinoval jsem zapracování zpětné vazby na anketu mezi juniory.
Jak se to celé táhne, tak už mě to moc nebaví.
Těším se, až to bude venku a budeme sbírat nějaké odpovědi.</p>
<p>Zamyslel jsem se i nad samotným důvodem, proč dělám anketu, a zda bych měl něco jako anketu vlastně dělat.
Z ankety nakonec bude třeba jeden článek na blogu, přitom to zabere hromadu práce.
Neztrácím těmito vedlejšími aktivitami focus?
Nemůžu přece dělat všechno.</p>
<p>Do budoucna se mi rýsuje trochu jiný systém.
Moje práce je budovat rozcestník, klub a příručku.
Řešit juniorům problémy, pomáhat jim sehnat práci.
Na to bych se měl soustředit.
Co se týče dalšího obsahu, myslím si, že bych jej <strong>neměl tvořit</strong>.</p>
<ul>
<li>Mohu jej <strong>nakoupit</strong>.
Vydělám peníze, někomu je dám, a ten někdo to pro junior.guru vyrobí: Podcast, článek, anketa…</li>
<li>Mohu jej <strong>agregovat</strong>.
Najít existující obsah a udělat na junior.guru feed nebo katalog: Srazy, pracovní inzeráty, kurzy…</li>
<li>Mohu být <strong>kurátorem</strong>.
Najít existující obsah a vybrat jen to nejlepší: Příručka</li>
</ul>
<p>Všechny uvedené strategie do nějaké míry <strong>škálují</strong>.
Ale tvoření původního obsahu a osobní angažmá neškáluje.
Příručku tvořit chci, to ano, ale nic bokem už ne.
Nechci psát články pro jiná média, připravovat si složité přednášky pro konference, natáčet podcasty, vyrábět ankety.
Buď to udělají jiní a já jim dám prostor na svém webu a v klubu, nebo to neudělají a já hodím peníze na to, aby to vzniklo.
Ale svůj čas a svůj focus si musím chránit.</p>
<h2 id="pocatky-blogu-na-juniorguru">Počátky blogu na junior.guru<small class="permalink"><a href="#pocatky-blogu-na-juniorguru" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Začal jsem pracovat na tom, aby bylo kam na junior.guru publikovat články.
V menu jsem položku Podcast přejmenoval na Novinky.
Přidal jsem boční navigaci a kromě podcastu jsem dal do stejné sekce i akce v klubu.</p>
<figure class="figure"><img alt="Novinky" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-08-12-at-22-42-00-podcast-pro-juniory-v-it.png"></figure>
<p>Akce jsem musel předělat ještě ze starého designu a staré infrastruktury.
Je to jedna z nejvíc zanedbaných stránek na webu.
Výhodou je, že cokoliv je lepší než co tam bylo, takže ani teď jsem se s tím moc nemazal.</p>
<figure class="figure"><img alt="Původní akce" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/stare-akce.jpg"><figcaption class="figure-caption">
Jak vypadaly akce původně</figcaption></figure>
<p>Dal jsem tomu CSSko z výpisu podcastových epizod a hotovo, <em>good enough</em>.
Pohraju si s tím později.</p>
<p>Uvažoval jsem, že sekci pojmenuju Log, Feed, Rozhled, Aktuality, Novinky, Aktuálně, Inspirace.
Nic z toho mi nepřišlo dost dobré a nakonec jsem zůstal u nudného „Novinky“, což je navíc prachsprostá kopie portálu <a href="https://navolnenoze.cz/novinky/">Na volné noze</a>, kde přesně takovou sdruženou sekci taky mají.
Jenže u jiných názvů, byť vzletnějších, mi nepřišlo, že by člověk věděl, co za takovým odkazem v menu čekat.
Název jsem řešil několik dní v hlavě a pak zhruba hodinu velmi inzenzivně.
Volal jsem si s kamarády a konzultoval ChatGPT.
Po hodině jsem mávl rukou a dal tam „Novinky“ s tím, že se nechci na něčem takovém zaseknout, ani to víc pitvat.
Zpětně se mi slovo „Novinky“ vlastně líbí, protože navádí do budoucna i na to, že to půjde odebírat newsletterem.</p>
<p>Rozepsal jsem si úkoly na příští týden a už se těším, jak mi to bude růst pod rukama.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Vyšel podcast, kde jsem s <a href="https://www.linkedin.com/in/lucietvrdikova/">Lucií Tvrdíkovou</a> u Jury.
Jurův status <a href="https://www.linkedin.com/posts/activity-7094597661684547584-d8sK/">tady</a>.
Psal mi „máme za sebou 3 dny a před sebou víkend, máme 412 poslechů a hodně pozitivního feedbacku do soukromých zpráv“.
Ke mě se na ten rozhovor zatím taky dostalo dost pozitivních ohlasů.
Tohle vypadá, že vyšlo pěkně 💪</li>
<li>Do <a href="https://junior.guru/open/#vykonnost-kanalu-podle-ankety">grafu s anketou odkud chodí lidi</a> jsem přidal odpověď „internet“.
Hodně lidí to tam totiž píše.
Původně to bylo v kategorii „ostatní“, ale nakonec jsem se rozhodl, že i takto vágní odpověď je pořád méně vágní, než „ostatní“.
Například lze předpokládat, že tím většina myslí vyhledávání apod.</li>
<li>Kamarádka poslala nějaké PR na <a href="https://github.com/juniorguru/juniorguru-chick/">real time bota</a>, tak jsem dělal review atd.</li>
<li>Jedno celé dopoledne jsem zabil chozením po doktorech.
Zatím spíš bez výsledku.
Příští týden zas.</li>
<li>Udělal jsem v klubu Discord událost pro <a href="https://cz.pycon.org/2023/">PyCon CZ</a> a pro <a href="https://frontendisti.cz/konference">FrontKon</a>, aby tam šli junioři.</li>
<li>Dal jsem na web měření <a href="https://docs.simpleanalytics.com/automated-events">automated events</a>, ale asi tam dám ještě i nějaké svoje ruční eventy.
Tohle je sice hned hotové, ale já bych chtěl přesnější rozlišení např. prokliků přes loga firem apod.</li>
<li>Byl jsem na kamarádově oslavě narozenin.
Děkoval mi, že jsem mu nedal alkohol, ale med a sirup.
Asi už jsme staří.
Všichni byli ve víru latinskoamerických tanců.
Já tancuju leda tak na Michaela Jacksona, takže jsem odchytával ostatní netančící a konverzoval s nimi.
Užil jsem si několik zajímavých konverzací - od padání z koňů, přes apartheid, království v Beninu, až po houby, LSD a šamany.</li>
<li>Měl jsem call s jednou vzdělávací agenturou, která si možná zaplatí partnerství, aby šla víc vidět v <a href="https://junior.guru/courses/">katalogu</a>.
Byla to velká lekce prodeje.
Pán byl sympatický, ale drsný.
Čísla čísla čísla, chceme banner, chceme pixel na retargeting, chceme do vašeho newsletteru, ROI…
„400 lidí? To je maličko…“
Ozvali se mi sami! Já prodával. Já mám něco, co chtějí.
Přesto jsem se celý call cítil zahnaný do kouta a vymezoval jsem si prostor.
Stále jsem musel dohledávat tvrdá čísla.
Na spoustu otázek jsem musel odpovídat, že to nedělám a dělat nechci, např. z etických důvodů.
Každopádně zajímavá strategie, jak nakoupit, nacpat se všude, dostat hodně za levno.
Snad jsem to nějak ustál.
Přišlo to zrovna v den, kdy jsem dopisoval ten <a href="https://honzajavorek.cz/blog/letni-pit-stop/">letní pit stop</a>, takže psychika nahoru dolů.
Říkal jsem si potom, že přesně takového týpka bych potřeboval jako mentora, aby mě naučil dělat byznys 😀</li>
<li>Štvalo mě, že Dependabot vždy jde a otevře na junior.guru několik PR najednou.
Jednak to spustí paralelně několik buildů a ty pak zbytečně zatěžují nějrůznější služby (takže to občas zbytečně spadne), jednak si to stejně šlape po prstech v lockfilech a musím ty PR rebasovat a čekat, atd.
Takže jsem Dependabot <a href="https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#open-pull-requests-limit">omezil</a> na maximálně 1 otevřený PR a jednotlivé package managery jsem dal na různé dny v týdnu.
Jsem zvědav, zda to pomůže.
Upgrady balíčků budou pomalejší, ale přímočařejší a budou mě méně štvát.</li>
<li>Tady na blogu mi po upgradu Bootstrapu nefungovalo obarvení odkazů na zeleno.
Opravil jsem to.
Bylo to tím, že Bootstrap přidal nějaké <code>-rgb</code> barvičky a ty já jsem neměl definované.
Trochu teda opruz, definovat dvakrát totéž, jednou jako hex a podruhé jako čísla.</li>
<li>Apple Silicon jsem <a href="https://honzajavorek.cz/blog/i-bought-apple-silicon/">měl úplně mezi prvními</a>.
Homebrew s M1 tehdy ještě nefungovalo moc dobře a musel jsem mít i záložní intelácký Homebrew přes Rosetta 2.
Protože jsem se bál, že se něco rozbije, a protože jsem měl lepší věci na práci, měl jsem to tak doteď.
Až teď jsem šel a ten intelácký Homebrew jsem <a href="https://github.com/homebrew/install#uninstall-homebrew">odinstaloval</a>.
Překvapilo mě, jak jednoduše jde Homebrew odinstalovat.
Zatím vše funguje.
Sbohem, <code>arch -x86_64</code>!</li>
<li>Kamarád Vuy hledá práci.
DevOps, Python, PowerShell, Linux, AWS, Azure, technical writing.
Víc <a href="https://www.linkedin.com/posts/honzajavorek_hi-friends-i-am-looking-for-work-and-am-activity-7095427342566576129-xrWe?utm_source=share&utm_medium=member_desktop">tady</a> a <a href="https://vuyisile.com/">tady</a>.</li>
<li>Sešel jsem se s Miou a Kubíkem z Python komunity.
S Miou jsem řešil panel na PyCon CZ, s Kubíkem jsme šli za advokátkou a vysvětlovali jí, co je <a href="https://vote.heliosvoting.org/">Helios</a> a jak funguje, abychom jej mohli přidat do stanov jako možný prostředek volby výboru.
Samotného mě překvapilo, že Helios má i <a href="https://en.wikipedia.org/wiki/Helios_Voting">heslo na Wikipedii</a>.</li>
<li>Koukal jsem kamarádovi na jeho <a href="https://richbull.co/">nový projekt, který tiše spouští</a>.
Psal jsem mu na to nějakou zpětnou vazbu.</li>
<li>Zjistil jsem, že Jinja <a href="https://jinja.palletsprojects.com/en/3.0.x/api/?highlight=cache#jinja2.BytecodeCache">má nějaký byte code</a> a když se kešuje, dá se tím o dost urychlit build webovky.</li>
<li>Udělil jsem tři stipendia.
Jedno z nich jsem potřeboval dát do budoucnosti a tím jsem si zkomplikoval čtení dat o předplatném ve svých skriptech, takže jsem to pak upravoval.</li>
<li>V souvislosti s <a href="https://honzajavorek.cz/blog/letni-pit-stop/">pit stopem</a> mi několik lidí nezávisle na sobě popisovalo svou zkušenost s hledáním juniorů přes junior.guru.
Ve zkratce: Není to jednoduché a někdy to ani vůbec nevyjde.
V klubu je to o náhodě.
Na inzeráty na webu chodí kdokoliv z internetu, takže kvalita kandidátů pokulhává.
No nebylo příjemné si to číst, ale aspoň mě to utvrdilo v tom, že inzeráty jsou prostě blbost a mým úkolem je najít jiný a lepší způsob, jak tuto věc řešit.
Nápady mám.
Otázka je, zda budou fungovat! 😀</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.
Psal jsem si s několika vzdělávacími agenturami a domlouval schůzky.
Napsal jsem do Red Hatu, kterému bude končit partnerství.</li>
<li>Během 9 dní jsem ujel na kole 20 km. Celkem jsem se hýbal 6 h a zdolal při tom 20 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Vyhodnotit zpětnou vazbu od pokusných králíků, kteří viděli anketu pro juniory.</li>
<li>Mít v Novinkách podstránky, přesunout tam existující příběhy juniorů a přidat tam meetupy.</li>
<li>Rozjet „přáníčka“ od juniorů pro juniory, což musím stihnout do PyConu.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://seznam-zpravy.u.mailkit.eu/mc/VUQMVLWE/ROTKZGIIFLKKNCEDKE/CLQEIELVLIL">Pod čarou: Je lepší být turista než cestovatel. Výletník si na nic nehraje.</a><br>„Z cestování se stala obecně uznávaná kladná věc, která prý přispívá ke zlepšování rozhledu a vzdělání, i když realita často ukazuje pravý opak – na cestách si především chceme potvrdit vlastní představu o světě, a jakýkoliv rozpor našich názorů se skutečným stavem věcí snadno překryjeme různými mentálními kličkami (rasistického strýčka z jeho názorů dovolená v Tunisu většinou nevyléčí).“</li>
<li><a href="https://www.theverge.com/2023/6/26/23773914/ai-large-language-models-data-scraping-generation-remaking-web">AI is killing the old web, and the new web struggles to be born</a><br>„In recent months, discussions and experiments at some of the web’s most popular and useful destinations — sites like Reddit, Wikipedia, Stack Overflow, and Google itself — have revealed the strain created by the appearance of AI systems.“</li>
<li><a href="https://www.businessinsider.com/metaverse-dead-obituary-facebook-mark-zuckerberg-tech-fad-ai-chatgpt-2023-5">RIP Metaverse, we hardly knew ye</a><br>Tohle je skvělý. Facebook změnil název na Meta a Zuck oznámil Metaverse. Od té chvíle do toho tato a další firmy nalily hromady peněz, všichni papouškovali Zuckova tvrzení, plácali se po zádech, utužoval se hype, bullshit za bullshitem. Až to ze dne na den bez jediného úspěchu umřelo. „Decentraland, the most well-funded, decentralized, crypto-based Metaverse product (effectively a wonky online world you can "walk" around), only had around 38 daily active users in its "$1.3 billion ecosystem." Despite the might of a then-trillion-dollar company, Meta could not convince people to use the product it had staked its future on.“</li>
<li><a href="https://www.buzzsprout.com/2007031">Cyklistika je nejen sport, ale i transport. Má být brána stejně jako auta, shodují se města — Město</a><br>Jak je na tom cyklodoprava v Ostravě, Brně a Praze?</li>
</ul></div></div></div></div>Letní pit stop2023-08-07T00:00:00+02:002023-08-07T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-08-07:/blog/letni-pit-stop/<div><div><div><div><p>Už několik měsíců po očku sleduji <a href="https://junior.guru/open/">čísla a grafy</a> související s junior.guru a bohužel se stále potvrzuje můj pocit, že něco není v pořádku.
Abych zvrátil nepříznivé trendy, potřebuji se na chvíli zastavit a promyslet, co dál.
Protože mě baví F1, pojmenoval jsem si to letní <a href="https://en.wikipedia.org/wiki/Pit_stop">pit stop</a>.</p>
<figure class="figure"><img alt="Zastávka v boxech, McLaren F1, Bahrain 2023" src="https://honzajavorek.cz/images/pitstop.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotka …</figcaption></figure></div></div></div></div><div><div><div><div><p>Už několik měsíců po očku sleduji <a href="https://junior.guru/open/">čísla a grafy</a> související s junior.guru a bohužel se stále potvrzuje můj pocit, že něco není v pořádku.
Abych zvrátil nepříznivé trendy, potřebuji se na chvíli zastavit a promyslet, co dál.
Protože mě baví F1, pojmenoval jsem si to letní <a href="https://en.wikipedia.org/wiki/Pit_stop">pit stop</a>.</p>
<figure class="figure"><img alt="Zastávka v boxech, McLaren F1, Bahrain 2023" src="https://honzajavorek.cz/images/pitstop.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotka z <a href="https://cars.mclaren.com/en/experiences/lifestyle/las-vegas-grand-prix-2023">upoutávky na letošní Las Vegas GP</a>, stažená z webu McLarenu. Nic legálnějšího jsem nesehnal, ač jsem se fakt snažil. Chopte se mě pochopové!</figcaption></figure>
<p>Stejně jako všechno ostatní tady na blogu, tento článek píšu hlavně sám pro sebe.
Psaní znamená myšlení.
Když si myšlenky sepíšu, musím je nějak formulovat, a díky tomu jsou promyšlenější.
Také se k nim pak mohu snadno vracet.
Ostatně, už dříve jsem tady podobné články měl:</p>
<ul>
<li><a href="content/2021-01-11_spoustim-klub.md">Spouštím klub</a>, leden 2021</li>
<li><a href="content/2022-12-15_moje-nova-strategie-na-socialni-site.md">Moje nová strategie na sociální sítě</a>, prosinec 2022</li>
<li><a href="content/2022-12-26_strategie-na-2023.md">Strategie na 2023</a>, prosinec 2022</li>
</ul>
<p>U všech platí, že v nich především „přemýšlím nahlas“.
Nestěžuju si.
Jestli vás to baví číst, tak si to klidně čtěte.
Jestli mi k tomu chcete něco napsat, tak mi to klidně napište.</p>
<h2 id="cervenec-s-cisly">Červenec s čísly<small class="permalink"><a href="#cervenec-s-cisly" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Než jsem začal přemýšlet o změnách, chvíli jsem trendy jen sledoval.
Nechtěl jsem cukat kormidlem při prvním mráčku na obzoru.
Po pár měsících už mi přišlo, že jde spíš o realitu než jen tušení a že jde spíš o trend než anomálii.</p>
<p>Chtěl jsem s tím něco udělat, ale neměl jsem data, na základě kterých bych se mohl rozhodovat.
Před časem jsem si totiž nějaká omylem smazal a hodně grafů bylo neúplných.
Také jsem sbíral důležitá data, která jsem však neměl nikde zpracovaná.
Například odpovědi na otázku „Jak ses dozvěděl(a) o junior.guru?“, nebo vzkazy, které lidi píšou, když ruší členství v klubu.</p>
<p>Vyhrnul jsem rukávy a šel grafy předělat.
Našel jsem způsob, jak si stáhnout data o příchodech a odchodech.
Našel jsem alternativní data ke smazaným.
To vše jsem dostal do systému a vykreslil do sloupečků a koláčů.
To vše mi zabralo velkou část července.</p>
<h2 id="finance">Finance<small class="permalink"><a href="#finance" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Mnoho stresu v posledních měsících měly na svědomí příjmy a výdaje, ale to se teď na nějakou dobu vyřešilo.
Vloni v září jsem změnil ceník pro firmy.
Jednak jsem chtěl zdražit, jednak přeskupit firmy tak, aby mě podporovalo méně firem za více peněz, díky čemuž se zjednoduší domlouvání partnerství a ubude režie.</p>
<p>To se povedlo, ale nebylo příjemné sledovat, jak jednotlivé firmy odpadávají a přestávají junior.guru podporovat.
Mnohdy mě zachvátila nejistota, jestli to vyjde.
Stouply mi životní náklady, musel jsem posunout finanční cíl na pravidelný měsíční příjem, a zároveň jsem rozjížděl věci, které stojí peníze.
Sehnal jsem si kancelář, byť velmi levnou, nebo nakupuji služby jako produkci videa, produkci podcastu, apod.</p>
<p>Zůstane dost firem, které prodlouží partnerství? Objeví se nové? Hodí to ve výsledku dost peněz na to, aby bylo na provoz?
V době, kdy všichni mluví o ochlazení trhu, zpomalení, krizi, zastaveném náboru.
V době, kdy Czechitas <a href="https://drive.google.com/file/d/1cmsaXnb3wZUtnwwj7NP7Pfrix-z7onZg/view">hledají peníze</a> a drasticky škrtají, nebo kdy Red Hat – hlavní dlouhodobý partner junior.guru – propouští lidi.</p>
<p>No, nakonec to nějak vychází.
Pouze u jedné firmy dokážu jednoznačně dotrasovat, že v partnerství vidí hodnotu, ale teď kvůli situaci na trhu nemají peníze.
Další odešly, protože mě chtěly hlavně podpořit v tom, co dělám, ale teď už je na ně můj ceník moc drahý.
To je asi v pořádku.
Jak jsem psal, chtěl jsem mix firem přeskládat tak, aby jich zůstalo méně, zato těch, které vidí v partnerství víc „tvrdé“ hodnoty a jsou ochotné zaplatit víc peněz.
A některé firmy odešly právě proto, že partnerství nedokázaly využít a „tvrdou“ hodnotu neviděly.
O tom se rozepíšu níže.</p>
<p>Aktuálně mám 60.000 Kč čistého měsíčně, což je tak tak.
Komu se to zdá hodně, nechť se podívá, za jaké ceny se žije v širším centru Prahy a za kolik jsou tady tržní nájmy bytů.
Abych měl rezervy, nebo mohl víc investovat do rozvoje junior.guru, tak potřebuju víc, ale pro teď to takhle stačí.
Financemi se tedy nebudu chvíli zabývat a mám klid na to, abych řešil produkt.</p>
<h2 id="neexistujici-produkt-pro-firmy">Neexistující produkt pro firmy<small class="permalink"><a href="#neexistujici-produkt-pro-firmy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Za 2,5 roku existence klubu bych si měl připustit, že 9 z 10 firem neví, co má dělat s přístupem do komunity.
Většina z toho, co nabízím, je nějaká forma náboru či budování značky.
Nábor je fajn, pokud firma zrovna nabírá, ale juniory někteří partneři nechtěli ani v době konjunktury a spolupráci s junior.guru si zařadili spíš do <a href="https://cs.wikipedia.org/wiki/Spole%C4%8Densk%C3%A1_odpov%C4%9Bdnost_firem">CSR</a>.
Skoro vše, co nabízím, přidělává firmám práci.
Budování značky je fajn, ale málokterá firma pro to chce udělat i něco víc, než na to jen hodit peníze.
Nikdo nemá čas se tomu věnovat a po roce nemusí mít dobrý důvod partnerství prodloužit.
A když přijde krize, tak se nábor, CSR i marketing ořežou jako zbytné výdaje.</p>
<p>Je fascinující, že ani po 3,5 letech existence junior.guru stále nemám pro firmy jasný produkt.
V jádru je junior.guru pro juniory.
Takže vždy vytvořím něco primárně pro ně a pak vymýšlím, jak bych to přeprodal i firmám.
Nabídky práce? Shánějte začátečníky!
Příručka? Dejte si logo!
Klub? Přijďte si povídat, přednášet, juniory vyhlížet!
Podcast? Pozveme vás!
Katalog kurzů? Zvýrazněte se!</p>
<p>Nemyslím si, že nabízím něco, co nemá hodnotu.
Jen mi přijde, že charakter té hodnoty je pro firmy v kategorii „něco navíc“.
To může některým firmám stačit a možná je akorát mým úkolem je najít.
Ale i u nich se tahle kategorie škrtne z rozpočtu jako první, když jde do tuhého.
Chtěl bych nabízet produkt, který firmy budou chtít a budou si ho doporučovat.
Něco, co jim nebude přidávat práci, ale bude jim šetřit čas a peníze.</p>
<p>Myslím, že katalog kurzů se k tomu může přiblížit, protože se může stát zásadním marketingovým kanálem pro vzdělávací agentury.
Slovo „zásadním“ je důležité, bez toho to bude opět zbytná věc v jejich marketingovém mixu.
Kromě toho to chce ale podchytit i nabídku pro firmy, které zaměstnávají juniory.
Nápady mám, ale k realizaci je ještě dlouhá cesta.
Co chtějí firmy?
Především bez práce sehnat kandidáty, které s velkou pravděpodobností najmou.</p>
<p>Kdyby to vyšlo, mohl bych mít dva nebo tři samoobslužné produkty pro firmy, které jim šetří čas a peníze.
Pak bych mohl v podstatě vše, co firmám nabízím teď, zrušit.
Taky bych nemusel tolik času trávit komunikací s firmami a režií kolem toho.
Třeba bych pak měl poloviční stres a konečně bych dopsal i nějakou novou kapitolu do příručky.</p>
<h2 id="klesajici-pocet-clenu-v-klubu">Klesající počet členů v klubu<small class="permalink"><a href="#klesajici-pocet-clenu-v-klubu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Na přelomu roku jsem zdražil členství v klubu pro členy ze 109 Kč na 199 Kč měsíčně.
Jednak jsem měl pocit, že je dlouhodobě cena za členství podstřelená, jednak mi stouply náklady.
Cenu jsem skoro zdvojnásobil a nastavil ji tak, abych ji dlouho už nemusel měnit.
Z této nové ceny teď mohu navíc dělat i slevy, protože už není na spodní hranici možného.</p>
<p>Načasování nebylo moudré, protože v lednu do klubu vždy přijde nejvíc lidí a v grafech je špička i bez zdražení.
Zároveň to bylo uprostřed rozjeté paniky kolem ekonomické krize, kdy se hodně lidem zvedly životní náklady.
Jednotlivé faktory od sebe nelze zpětně snadno oddělit, vše se ovlivňuje dohromady.
Výsledkem je, že snažit se vyčíst něco z grafů za dané období je asi jako věštění z čajových lístků.</p>
<p>Počítal jsem s tím, že někdo z klubu odejde, ale i tak mě pokles překvapil.
Mezi lednem a červencem klesl počet členů o 117.
Srovnání s lednem není fér, protože jak jsem psal, v lednu je vždy špička.
I tak je to ale úbytek 70 členů oproti prosinci 2022.
Poprvé v historii klubu počet členů klesal.</p>
<p><a href="https://www.newslettery.cz/p/cerven-2023">Červnové Newslettery</a>, kde radím tvůrcům, začínají větou „Honza Javorek rozjel během pandemie placenou on-line komunitu na Discordu, která už má přes 400 členů a dnes tvoří hlavní část jeho příjmů.“
Trochu trapas, protože v době, kdy to vyšlo, jsem měl členů kolem 390 a číslo klesalo.</p>
<figure class="figure"><img alt="Vývoj členství" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-08-07-at-13-46-25.png"></figure>
<p>Proč je to vlastně problém?
Stejně jako u firem, se změnou ceny se změní mix lidí, pro které má klub hodnotu a mě by mělo stačit, pokud tím dosáhnu na stejné nebo vyšší finanční výsledky, že?
A psal jsem, že peněz mám teď dost.</p>
<p>No tak především nevím, na jakém čísle se to zastaví, z čehož mám stres.
Z grafu se může zdát, že propad se už stabilizoval a od června stagnuje.
Jenže je teprve začátek srpna, takže ve skutečnosti spíš nevím.</p>
<p>Taky si myslím, že je klub stále ještě ve fázi, kdy má růst.
Graf s počtem členů považuji za jeden z nejpodstatnějších, beru to jako jakési svoje vysvědčení.
Pokud je o klub zájem a lidé v něm zůstávají, dělám svou práci dobře.</p>
<p>Klub má podle mě potenciál mít klidně 500-1000 členů.
Může se stát, že v nějaký okamžik už nás bude moc a bude to nepříjemné, tak to budu řešit.
Aktuálně to tak ale není, prostor je.
A určitě jsem ani nedosáhl maximálního „podílu na trhu“ s juniory.
Velké komunity jako Czechitas nebo Holky z marketingu, byť dělají něco trochu jiného, mají čísla v tisících.</p>
<p>Nepotřebuji, aby komunita rostla skokově, ale růst by měla.
Klidně 5 členů měsíčně, pomalu, zdravě.
Bylo by víc peněz od juniorů, které považuji za své primární klienty.
Moje finance by byly stabilnější.
Šlo by investovat do dalších pěkných věcí, např. rozhovorů s juniory.
A klub by pomáhal víc lidem, bylo by v něm víc aktivních jedinců, bylo by to celé lepší.</p>
<h2 id="dalsi-nepekna-cisla">Další nepěkná čísla<small class="permalink"><a href="#dalsi-nepekna-cisla" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když jsem si prošel <a href="https://junior.guru/open/">čísla a grafy</a> shora dolů, došel jsem k těmto pozorováním a doměnkám:</p>
<ul>
<li>Vloni počet nově příchozích osciloval (od oka) mezi 60 a 80 měsíčně, odchodů bylo podobně, ale trošku míň, takže počet členů pomaličku rostl.
Každopádně byl v klubu velký průtok, měsíčně kolem 70 lidí.</li>
<li>Po zdražení průtok strmě klesá a odchází víc lidí, než kolik jich přijde.
V červenci přišlo do klubu nejméně lidí za celou historii.</li>
<li>Přichází méně individuálně platících členů.
Konverze <em>trialu</em> (dvou týdnů zdarma) klesla z 38 % v březnu na 27 % v červenci.</li>
<li>V únoru byl velký <em>churn</em> (retence) 18 %, což se dalo čekat vzhledem k lednové špičce a zdražení.
Pak se vrátil na 15 %, což je zhruba to, co měl klub celou dobu.
V červenci skočil na 10 %, odešlo opravdu hodně málo lidí (a ještě méně lidí přišlo).</li>
<li>Je možné, že s nízkou cenou klub lákal i méně relevantní lidi, zatímco teď se to víc „trefuje“, tzn. že sice spoustu lidí neosloví, ale když už je osloví, tak ty, kteří do svého rozvoje chtějí opravdu investovat a v klubu zůstanou?
To asi teď nezjistím, protože čísla jsou stále ještě dost ovlivněna samotným aktem zdražení.</li>
<li>Podle ankety lidi neodcházejí nějak moc z toho důvodu, že by byl klub „drahý“.
Kdo přichází nově, s cenou prostě počítá, takže toto pak není kritérium odchodu.
Podle ankety lidi odcházejí, protože klub už nepotřebují, nebo jej potřebovali na omezenou dobu.
Myslím si ale, že za tím je stejně cena.
Třeba by zůstali, ale vzhledem k vyšší ceně už si rozmyslí, zda a jaký má klub přínos.
Lidi tedy neřeknou, že klub je „drahý“, ale podle mě přísněji zkoumají hodnotu, kterou přináší.
Nezůstávají už nad rámec užitné doby jen tak, byla by to totiž drahá sranda.</li>
<li>Spousta lidí samozřejmě klub ani nezkusí, protože jim to přijde drahé už na webu podle ceny a prodejní stránka je nepřesvědčila.</li>
<li>V lednu už byly na webu nové ceny.
Nezabránilo to tomu, aby přišlo 86 lidí.
V únoru pak ale odešlo 103 lidí.</li>
<li>Nejvýkonnější kanály pro příchod lidí do klubu jsou vyhledávání, doporučení známého a podcasty.</li>
<li>Podcasty jsou velmi efektivní, protože zřejmě přivádějí nejrelevantnější lidi.
Ti se pak opravdu registrují a utrácí peníze.</li>
<li>Nezanedbatelným zdrojem návštěv je i Facebook, který se objevuje v <em>referralech</em> i v anketě.
Přivádí relevantní lidi, kteří utrácí peníze.
Jedná se především o facebookové skupiny s relevantním zaměřením, kde komentuji a něco doporučuji, nebo junior.guru doporučí i někdo jiný.
Takže Facebook stále má nějaký smysl, ale např. nemá smysl měřit si tam počet followerů nebo psát něco na svůj či „firemní“ profil.</li>
<li>Celková návštěvnost webu trochu oproti loňskému roku klesla. Hodně klesla návštěvnost pracovních inzerátů, trochu klesá návštěvnost příručky. Naopak zájem o katalog stoupá vzhůru. Ostatní zůstává relativně stabilní, ale v absolutních číslech jsou na tom například prodejní stránka klubu i úvodní stránka hůře než před rokem.</li>
<li>Pracovní inzeráty, příručka a katalog konvertují na webu nejvíc lidí do klubu.</li>
<li>Paradoxně hodně návštěvnosti mají kapitoly příručky, které jsou nedopsané.
Lidi tedy nejspíš přijdou a jsou zklamaní, že nenašli, co hledali.</li>
</ul>
<h2 id="tvrde-hodnoty">Tvrdé hodnoty<small class="permalink"><a href="#tvrde-hodnoty" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Už jsem to trochu nastínil u firem, ale vlastně se to týká i klubu.
Nedávno Rosie <a href="https://rosie.land/posts/the-town-hall-analogy/">psala tohle</a>:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Most people don't actually want to participate in Town Halls. They want to be served or make progress in their life. Find a job. Sign up to an event. Meet and connect with people. To see progress. To find ways to rally, support and contribute along the way. And to see problems solved. They are there because they are invested in the ecosystem and care about the space the community exists in.</p>
</blockquote>
</figure><p>Má pravdu.
Všechno to komunitní blaho, které vytvářím, je strašně super.
Ale bylo by mnohem lepší, kdyby obsahovalo i „tvrdé hodnoty“.</p>
<p>Junior se chce naučit programovat a chce si sehnat práci v oboru.
Určitě mu hodně pomůže, když si o tom přečte, a taky mu hodně pomůže, když to celé může prodiskutovat s dalšími podobně naladěnými lidmi.
Když najde podporu, když si má kam dojít pro radu.
To všechno má velkou hodnotu.</p>
<p>Nedaří se mi to ale vysvětlit a prodat jako „tvrdou hodnotu“.
Nedá se to snadno změřit nebo garantovat.
Někteří lidé vidí hned, jak důležité to je, někteří až zpětně.
A spousta lidí si řekne, že se bez toho možná i obejde.</p>
<p>Co s tím?
Vilém onehdá <a href="https://bigvilik.com/2020/12/07/mm20-095-poznej-patiky/">napsal tohle</a>, marketingovou příručku ve třech bodech, podle které je zcela jasné, co mám dělat:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>🤔 Spotřebitel produkt nezná, proto ho nekupuje<br>
👉 Uváděj, ukazuj, nadchni!</p>
<p>🤔 Zná, přesto ho nekupuje<br>
👉 Odstraň předsudky, vysvětluj benefity, zdramatizuj přísliby!</p>
<p>🤔 Zná i kupuje, ale ne od nás<br>
👉 Odliš se, nebo zemři!</p>
</blockquote>
</figure><p>Kromě toho mi přijde, že by se dalo těch „tvrdých hodnot“ i přidat.
Jak jsem psal, junior se chce naučit programovat a chce si sehnat práci v oboru.
Můžu s tím nějak pomoci?
Co jsou na tom ty složité věci?
Podle mě vybírání kurzů a hledání práce.</p>
<p>Ještě pár měsíců zpět neexistoval <a href="https://junior.guru/courses/">katalog kurzů</a>, teď už existuje.
Zájem o něj vypadá nadějně jak u juniorů, tak u firem.
Teď to akorát vylepšit a víc propojit s klubem.</p>
<p>Hledání práce je to úplně nejtěžší.
Jak tam pomáhám?
Snažím se třídit pracovní inzeráty a naservírovat je juniorům až pod nos.
Jenže inzerátů teď ani tolik není a to třídění už jsem dlouho neměl čas vylepšit, takže má pochybnou kvalitu.
Budiž, inzeráty mají na mém webu stále celkem pěknou návštěvnost, ale nejsou nijak propojené s klubem kromě toho, že se v něm také objevují.</p>
<p>Příručka je plná rad, ale všichni, kdo jsme přečetli byť jedinou <em>self-help</em> knížku, víme, že přečíst a konat jsou dvě různé věci.
Měl bych juniorům nabídnout něco, co jim ušetří čas a nervy.
Za to budou ochotni platit i v době, kdy je peněz málo.
Už jsem to v klubu trochu naťukl a ohlas to celkem mělo…</p>
<figure class="figure"><img alt="Role „Aktivně hledám práci“" src="https://honzajavorek.cz/images/screenshot-2023-08-04-at-16-25-33.png" class="img-fluid figure-img rounded"></figure>
<h2 id="co-dal">Co dál?<small class="permalink"><a href="#co-dal" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Nabízí se následující opatření.
Rozdělil jsem je do několika kategorií.</p>
<h3 id="tvrde-hodnoty-pro-juniory">Tvrdé hodnoty pro juniory<small class="permalink"><a href="#tvrde-hodnoty-pro-juniory" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<ul>
<li>V klubu a na webu přitlačit na viditelnost archivu přednášek a podcastových epizod.</li>
<li>Vylepšit třídění pracovních inzerátů pomocí AI (zahrnuje i podporu pro slovenštinu).</li>
<li>Vytvořit MVP profilů juniorů, kteří si hledají práci.</li>
</ul>
<h3 id="tvrde-hodnoty-pro-firmy">Tvrdé hodnoty pro firmy<small class="permalink"><a href="#tvrde-hodnoty-pro-firmy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<ul>
<li>Vzdělávacím agenturám nabízet zvýraznění v katalogu.
Ostatním firmám nabízet na maximum zjednodušený nábor „vysoce kvalitních“ juniorů.
„Každý junior z junior.guru je odlitý v originální formě a ručně malovaný!“
(…z reklamy na Kinder Surprise)</li>
<li>Zaškrtávátkový ceník, kde si každá firma namíchá to, co zrovna chce?</li>
</ul>
<h3 id="podpora-stavajicich-clenu">Podpora stávajících členů<small class="permalink"><a href="#podpora-stavajicich-clenu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<ul>
<li>Lidem, kteří jsou v klubu déle než rok, bych mohl dát slevu, že si vážím jejich přízně.</li>
<li>Zavedu podporu pro <em>referrals</em>.
Člověk, který už v klubu je, by měl dostat slevu či nějaké výhody, pokud do klubu doporučí další lidi.</li>
</ul>
<h3 id="dalsi-konverze">Další konverze<small class="permalink"><a href="#dalsi-konverze" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<ul>
<li>Budu chodit na Facebook a budu tam trochu radit.</li>
<li>Budu dál chodit do podcastů, když mě pozvou.
Možná můžu zkusit i pozvat se někam sám, ale vzhledem k už naplánovaným akcím to spíš nezvládnu.</li>
</ul>
<h3 id="konverze-z-vyhledavani">Konverze z vyhledávání<small class="permalink"><a href="#konverze-z-vyhledavani" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<ul>
<li>Zlepšit užitečnost produktů, které nabízím.
Dopsat kapitoly v příručce, zlepšit design a kvalitu dat v pracovních inzerátech, vylepšovat katalog.
Vše propojit víc s klubem pomocí <em>call to action</em> nebo upoutávek na probíhající diskuze.</li>
<li>Projdu si svůj sloupeček v Trellu, kde mám nějaké úkoly k SEO, a zkusím to všechno nějak zapracovat.</li>
</ul>
<h3 id="konverze-webovky">Konverze webovky<small class="permalink"><a href="#konverze-webovky" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<ul>
<li>Na web dám políčko na sběr e-mailů, ačkoliv newsletter ještě neexistuje.
Jednou bude a už na startu může mít nějaké odběratele.</li>
<li>Přitlačím na viditelnost úspěchů, které klub má.
Vytvořím blog, do kterého přesunu existující <em>success stories</em> posbírané z internetu.
Postupně budu přidávat rozhovory s juniory, kteří prošli klubem, nebo doporučení pro juniory od lidí z klubu.
Z těch doporučení vytvořím nástěnku na <a href="https://cz.pycon.org/2023/">PyCon CZ</a>, na kterém se podílím a kde bude nejspíš junior.guru dost vidět.</li>
<li>Udělám si výzkum mezi členy, co jim klub přináší.
To mi pomůže na webu vysvětlit, co lidem v každé fázi jejich juniorství klub dává.
Pomůže mi to pochopit, co z funkcí klubu vnímají jeho členové jako nejhodnotnější.</li>
<li>Udělám lepší <em>homepage</em>, protože už zcela jakákoliv by byla lepší, než co tam je teď.
Nemusím na tom půl roku vyšívat a dělat z toho vědu.
„Uváděj, ukazuj, nadchni!“</li>
<li>Aktualizuji klubovou prodejní stránku.
Lépe popisovat úspěchy klubu a lépe popisovat současnost.
„Odstraň předsudky, vysvětluj benefity, zdramatizuj přísliby!“</li>
</ul>
<h3 id="konverze-trialu">Konverze trialu<small class="permalink"><a href="#konverze-trialu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<ul>
<li>Udělám nový <em>onboarding</em> do klubu.
Měl by lépe vysvětlovat, co tam lidé mohou dělat a k čemu je klub dobrý.</li>
<li>Bot by mohl někde oslavit, když nově příchozí člověk zůstane po trialu v klubu.</li>
</ul>
<h2 id="neni-toho-nejak-moc">Není toho nějak moc?<small class="permalink"><a href="#neni-toho-nejak-moc" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Je.
Tohle všechno samozřejmě v krátkodobém horizontu nemám šanci stihnout.
Musím si teď vybrat jen pár věcí, kterým dám maximální prioritu.
Navíc mě čekají nějaké termíny, do kterých může být výhodné stihnout udělat některé změny:</p>
<ul>
<li><strong>1.9.</strong> (zbývá 24 pracovních dní) začátek školního roku a návrat lidí z dovolených,</li>
<li><strong>15.9.</strong> (38 dní) konference <a href="https://cz.pycon.org/2023/">PyCon CZ</a>,</li>
<li><strong>12.10.</strong> (65 dní) konference <a href="https://frontendisti.cz/konference">FrontKon</a>,</li>
<li><strong>20.11.</strong> (104 dní) Czech Digital Week, což je týden na podporu digitálního vzdělávání v ČR, na kterém spolupracuji s Úřadem vlády.</li>
</ul>
<p>Zkusím to vylučovacím způsobem:</p>
<ul>
<li>Profily juniorů jsou celý nový produkt.
V hlavě ho sice ladím už 2,5 roku a mám několik velice konkrétních nápadů, jak by to mělo vypadat, ale je to hodně práce.
Před pár měsíci jsem už rozjel katalog, který má stále kvalitu prototypu.
Možná by nebylo moudré rozjíždět všechno najednou.
Profily udělám příští rok.</li>
<li>Navíc chci profily spojit s pracovními inzeráty a ty jsou na staré infrastruktuře.
Opět spousta práce.
Třídit nabídky pomocí AI je důležitý krok, ale nějaké nabídky to vyhazuje i teď a je to <em>good enough</em>.
Zlepšení by těžko ze dne na den změnilo toky členů do klubu.
Inzeráty udělám příští rok.</li>
<li>Firmy teď řešit nebudu.
Sotva jsem je převedl na nové tarify, hned bych všechno měnil.
Prodlužování partnerství bude pro většinu firem aktuální až s příštím rokem.</li>
</ul>
<p>Tvrdé hodnoty jsou důležité a musím k nim směřovat.
Zároveň jsou ale nejpracnější a nezvrátí trend v krátkodobém horizontu.
Vytyčuji si je jako dlouhodobější cíl.
Nyní si ale musím pomoci především z druhé strany, a to přivedením více lidí.
Je to věc, která reaguje pružněji a zároveň pracuje z velké části s tím, co už mám.
Přes veškeré nedostatky a nerealizované sny si myslím, že junior.guru už teď poskytuje lidem velkou hodnotu, za kterou stojí za to si zaplatit.
Akorát to neumím moc dobře vysvětlovat a přesvědčit o tom dost lidí.
Vychází mi z toho následující:</p>
<ol>
<li>Nový blog a lepší <em>success stories</em>.
Mít hotovo do <strong>15.9.</strong></li>
<li>Mít na webu <em>call to action</em> do klubu. Lepší úvodní stránka, klubová stránka.
Mít hotovo do <strong>20.11.</strong></li>
<li>Nový onboarding v klubu.</li>
<li>Podpořím stávající členy a doporučování nových členů.</li>
<li>Kdybych se náhodou nudil, tak dodělávat katalog kurzů.</li>
</ol>
<p>Jaké benefity budou mít tyto body pro samotné juniory?</p>
<ul>
<li>Přibude příběhů o juniorech.
Chci, aby příběhy, které budou o lidech z klubu, zahrnovaly i negativní aspekty cesty do IT.
Aby to nebylo barvotiskové, ale blíž realitě.
Takové <em>success stories</em> chybí.</li>
<li>Zlepší se orientace v klubu po prvním přihlášení.
Bude jasnější, co a jak dělat.
Možná se mi povede i sdružit nováčky v klubu, kteří přišli ve stejnou dobu, a trochu je propojit.</li>
<li>Kdo už je v klubu, bude mít členství levnější nebo jinak obohacené.</li>
<li>Fanoušci junior.guru se už nebudou muset stydět někomu ukázat úvodní stránku junior.guru :D</li>
<li>Katalog kurzů bude obsahovat více dat, na zakladě kterých půjde udělat kvalifikovanější rozhodnutí, jaký kurz si vybrat.</li>
</ul>
<h2 id="ale-kluci-z-kapely-rikali">Ale kluci z kapely říkali…<small class="permalink"><a href="#ale-kluci-z-kapely-rikali" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>…že už jeden plán máš, Honzo!
A je to tak!
Já přece už jeden plán mám.
V prosinci jsem ho <a href="content/2022-12-26_strategie-na-2023.md">týden psal</a>.
Je to nejdelší článek v historii blogu, s odhadovanou dobou čtení 40 minut.
Později jsem plán <a href="https://github.com/orgs/juniorguru/projects/1/views/1">překreslil na GitHub</a>.</p>
<figure class="figure"><img alt="Plán" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-08-08-at-10-25-00-2023-juniorguru.png"><figcaption class="figure-caption">
Původní plán na rok 2023</figcaption></figure>
<p>Jenže plán je jenom plán.
Doteď mi sloužil dobře, takže dík, ale situace se mění a je potřeba nový plán, aktuálnější.
Jak jde vidět z náhledu, ono se toho ve výsledku stejně zas tak moc nezmění.
Dost podobné věci tam dávno jsou, dokonce jako priority, akorát jsem je doteď prokrastinoval.</p>
<p>Myslím si, že nový plán mi vydrží zhruba do konce roku, a potom to budu muset zase aktualizovat.
Pokud se čísla uklidní, třeba si ho opět poskládám podle klíče „tři vylepšení pro každou oblast junior.guru“.
Jestliže se čísla neuklidní, možná přijde na řadu <em>go to the mattresses</em>.
Vždy bych si určil jednu top prioritu, na té bych měsíc pracoval a pak sledoval, jestli se trendy obracejí a vyhodnocoval, co má přijít na řadu jako další.
Taky si umím představit konzultace s odborníky, kteří by mohli vidět něco, co já nevidím.</p>
<p>Ale tam zatím nejsem.
Je úterý 8.8., 2023 našeho letopočtu.
Nový plán mám už taky <a href="https://github.com/orgs/juniorguru/projects/3">překreslený na GitHub</a>.
Článek na blogu vydaný.
Teď vyhrnout rukávy a makat.</p></div></div></div></div>Týdenní poznámky: Čísla a přemýšlení2023-08-04T00:00:00+02:002023-08-04T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-08-04:/blog/tydenni-poznamky-cisla-a-premysleni/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-europython-a-stahovani-csv-z-memberful/">posledních poznámek</a> už utekl nějaký ten týden (22. 7. až 4. 8.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Nádraží" src="https://honzajavorek.cz/images/img-4733.jpg" class="img-fluid figure-img rounded"></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální …</p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-europython-a-stahovani-csv-z-memberful/">posledních poznámek</a> už utekl nějaký ten týden (22. 7. až 4. 8.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Nádraží" src="https://honzajavorek.cz/images/img-4733.jpg" class="img-fluid figure-img rounded"></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="cisla">Čísla<small class="permalink"><a href="#cisla" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>V minulých poznámkách jsem psal toto:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Opravit metriky na <a href="https://junior.guru/open/">/open/</a> a přidat nové, abych se mohl rozhodovat, co dál.
Zdá se mi, že mi na několika frontách klesají čísla.
Chtěl bych se zamyslet nad svými prioritami a zaměřit se na to, co nejvíc pomůže zvrátit trend.
Ale k tomu potřebuju nejdřív vědět, co se přesně děje a mít na to čísla a grafy.</p>
</blockquote>
</figure><p>No a ve zkratce, přesně to jsem teď dva týdny dělal.
Bylo to trochu frustrující, protože jsem se stále nemohl dobrat konce a místo abych dělal nějaké pěkné věci pro juniory, patlal jsem se s čísly a grafy.
Zároveň jsem věděl, že bez nich žádné další hezké věci nevzniknou, že čísla a grafy potřebuju.</p>
<p>Vždy, když na junior.guru něco udělám, tak si to zapíšu do Trella jako kartičku, abych pak podle toho mohl sepsat na konci týdne poznámky.
Teď se koukám na asi 100 kartiček o tom, jak jsem řešil ty grafy:</p>
<ul>
<li>Graf počtu clenu</li>
<li>oznacit co je trial</li>
<li>Příchody a churn je fakt hodne divny graf</li>
<li>Dlouho koukani na to jestli sedí čísla a pak jsem to vzdal</li>
<li>odchody, duration, churn</li>
<li>dat prichody a odchody do jednoho grafu?</li>
<li>cancellations</li>
<li>dat veci z csv do grafu na web</li>
<li>opravit pocty clenstvi v klubu - vic individualnich nez vsech, ehm</li>
<li>zdroje příchodů - v procentech?</li>
<li>labely a barvy pro pie chart</li>
<li>zdroje prichodu - ktery vedou k nejvic penezum?</li>
</ul>
<p>A tak dále, a tak dále.
Nemá smysl rozepisovat, co za jednotlivosti jsem dělal a jak jsem se s tím pral.
Musíte mi prostě věřit, že to byla past vedle pasti.</p>
<p>Jedna z věcí, na které jsem se strašně zasekl, bylo psaní složitých SQL dotazů, resp. jejich reprezentací v Peewee.
Určité úkoly mi kvůli tomu zabraly i hodiny, a to i s ChatGPT a GitHub Copilotem.
Až po několika dnech mě napadlo, že to, co dělám, bych možná měl rychleji a přehledněji přímo v Pythonu, byť třeba ne tak efektivně.
Ta čísla se počítají jen jednou a i když to bude neefektivní, pořád je to nic.
Takže jsem místo všelijakých vnořených JOINů a SELECtů skončil u obyčejného Python cyklu s pár obyčejnými SELECTy.
Kód desetkrát primitivnější, napsaný hned, čitelnější.
Ach jo.
Proč mě to nenapadlo hned?</p>
<p>Výsledkem těch dvou týdnů je spousta opravených grafů a docela dost nových grafů na <a href="https://junior.guru/open/">/open/</a>.
Taky jsem si udělal nový tajný kanál na Discordu, #byznys, kam mi bot automaticky postuje, když lidi přichází do klubu a vyplní anketu odkud přišli, nebo když odchází z klubu.
Pomůže mi to okamžitě odchytnout chyby v klasifikaci těchto dat, a zároveň uvidím, co se děje a budu to moci hned řešit.</p>
<figure class="figure"><img alt="Nový kanál #byznys" src="https://honzajavorek.cz/images/screenshot-2023-08-04-at-17-05-05.png" class="img-fluid figure-img rounded"></figure>
<p>Například jsem zjistil, že mi lidi psali při odchodu různé vzkazy, které jsem si přečetl až teď.
Nebo jsem šel a všem, kdo označili jako důvod k odchodu že na klub už nemají peníze, jsem napsal email a osobně jsem jim nabídl stipendium.</p>
<p>Na /open/ jsem prošel a aktualizoval i všechny texty a nakonec jsem přidal i tyhle poznámky 😀
Nevím, proč tam už dávno nebyly.</p>
<h2 id="premysleni">Přemýšlení<small class="permalink"><a href="#premysleni" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Jedno celé odpoledne jsem šel a od začátku do konce přečetl <a href="https://www.feverbee.com/wp-content/uploads/2023/03/theprovenpath.pdf">The Proven Path</a> a <a href="https://community-canvas.org/">Community Canvas</a>, které mi před časem doporučila <a href="https://www.linkedin.com/in/melicharova/">Šárka</a>.
Community Canvas už jsem znal i předtím, ale to nic nemění na tom, že jsem to doteď pořádně nečetl.
Udělal jsem si z toho spoustu poznámek, některé do budoucna, některé relevantní i pro mou aktuální situaci.</p>
<p>Taky jsem si otevřel všechny články o komunitách a podnikání, které jsem si v poslední době uložil, a přečetl jsem je.
Z těch jsem si moc poznámek neudělal a nebyly vlastně moc relevantní.
Jednoho autora jsem si ale do RSS čtečky uložil: <a href="https://maxpete.substack.com/">Max Pete</a>.</p>
<p>Následně jsem si odpočinul a celou tu stránku <a href="https://junior.guru/open/">/open/</a> jsem si sjel shora dolů a pokusil jsem se interpretovat, co se mi snaží ten který graf říct.
Toto jsem si sepsal a začal se mi vykreslovat nějaký obrázek toho, kde mám asi problém.
A to už je jen krok k tomu, co bych měl teď s největší prioritou dělat.</p>
<p>Toto plánování ale dokončím asi až v pondělí a pak k tomu nejspíš vydám separátní článek.
Každopádně mě naplňuje radostí a optimismem, že už jsem konečně dodělal ty grafy, a že to celé k něčemu doopravdy bylo a jsem schopen z nich něco vyhodnotit.
A že přestávám tápat, že začínám mít nějakou představu, co budou další kroky.</p>
<h2 id="pomoc-s-kodenim">Pomoc s kóděním<small class="permalink"><a href="#pomoc-s-kodenim" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Ozvala se mi kamarádka a nejspíš mi trochu pomůže s programováním na junior.guru.
Dohodli jsme se na úkolové finanční odměně.
Po dlouhé době jsme se i viděli a bylo to super.
A byla to aspoň záminka omrknout i <a href="https://zdopravy.cz/dvacaty-most-pres-vltavu-v-praze-lavka-mezi-holesovicemi-a-karlinem-se-otevrela-verejnosti-169669/">nový most</a>.</p>
<p>Když jsem se z kafe vrátil domů a koukal na seznam věcí, které bych potřeboval dokončit, než začnu nové věci, hned jsem ze dvou udělal nové issues: <a href="https://github.com/juniorguru/juniorguru-chick/issues/22">#22</a> a <a href="https://github.com/juniorguru/juniorguru-chick/issues/23">#23</a>.
Možná totiž nemusím všechno dokončit já!</p>
<h2 id="lepsi-propagace-srazu-v-klubu">Lepší propagace srazů v klubu<small class="permalink"><a href="#lepsi-propagace-srazu-v-klubu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Něco jsem si ale nechal.
Dodělal jsem lepší propagaci srazů v klubu.
Už před časem jsem zařídil, aby bot automaticky zakládal Discord události pro srazy různých komunit.</p>
<p>Chtěl jsem ale, aby bot na srazy upozorňoval i v kanálu #pozvánky-a-promo.
Aby tam dal zprávu, ke zprávě udělal vlákno, a ve vlákně podporoval sdružování juniorů, diskuzi, koordinaci před akcí.
Asi lépe vysvětlit obrázkem.</p>
<figure class="figure"><img alt="Promo akcí v kanálu" src="https://honzajavorek.cz/images/screenshot-2023-08-04-at-16-33-51.png" class="img-fluid figure-img rounded"></figure>
<p>Splácal jsem to za jeden osamělý večer.
A funguje to!
Druhý den jsem to refaktoroval a otestoval, hotovo, paráda.
Bot dokonce rovnou přes <em>mention</em> přidává do vlákna lidi, kteří se přihlásili, že na akci možná půjdou.</p>
<p>Ještě mě napadlo, že v den akce by mohl bot do vlákna napsat, aby si to lidi užili a nezapomněli poslat i fotku, když se potkají 🙂
Třeba by ji fakt poslali a podpořilo by to zase trochu komunitního ducha.</p>
<p>Taky jsem napsal e-mail na několik srazů, abych zjistil, zda jde nějak strojově číst, kdy mají události.
Díky tomu budu nejspíš moci brzo přidat srazy v Budějcích nebo Java srazy.</p>
<h2 id="fio-banka-a-ukladani-historie-dat-do-gitu">Fio banka a ukládání historie dat do gitu<small class="permalink"><a href="#fio-banka-a-ukladani-historie-dat-do-gitu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Přišlo mi SMSkou, že Fio banka mění platnost tokenů na svém API.
Nyní budou časově omezené, ale jejich platnost se bude postupně prodlužovat, když se přihlásím do internetového bankovnictví.
Dobrá, sice divné, ale proč ne.</p>
<p>Pak mi API ze dne na den přestalo fungovat.
Podezíral jsem, že na vině je buď token, nebo že deploynuli novou verzi API a něco jim tam nefunguje.
Ani jedno!</p>
<p>Deploynuli totiž zcela záměrně i úplně jinou změnu, která mi všechno rozbila.
O té mi ale nijak vědět nedali.
Ani e-mail, natož SMS.
Přečetl jsem si ji až v HTTP odpovědi a následně v <a href="https://www.fio.cz/docs/cz/API_Bankovnictvi.pdf">PDF dokumentaci</a>.</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p><strong>Poskytnutí dat starších více než 90 dní</strong></p>
<p>Pro získání dat mladších 90 dní není potřebná dodatečná silná autorizace v internetovém bankovnictví. Požadujete-li získat data starší 90 dní, tak je nutné dočasně odemknout přístup ke kompletní historii.</p>
<p>Toto odemknutí se nastavuje v internetovém bankovnictví na záložce „Nastavení“ a zvolte složku „API“. Kliknutím na ikonku zámku se pro daný token vytvoří autorizační pokyn. Po úspěšné autorizaci budou historická data, po dobu 10 minut, přístupná.</p>
</blockquote>
</figure><p>Nemohu tedy (bez lidské asistence) stahovat transakce ze svého účtu za celou dobu podnikání.
To samozřejmě hodilo vidle do všech mojich grafů s finančními výsledky.
Co se dalo dělat, musel jsem to zrovna celé předělat.</p>
<p>Stalo se to samozřejmě ve stejný den, kdy jsem si jednak myslel, že už mám konečně za sebou veškerou práci na grafech, jednak kdy jsem zjistil, že mám průšvih s Mews (viz níže).
Neudržel jsem tedy emoce a vedl jsem s podporou Fio banky konverzaci s předmětem „API vrací pro dotazy na data 90 dní starší 422 - nejspíš vtip?“, která po pár výměnách skončila slovy „děkujeme za zpětnou vazbu, kterou jsem takto předala příslušnému oddělení“.</p>
<p>Co si budem, něco takového bylo do budoucna stejně nevyhnutelné.
Bylo to možné v začátcích junior.guru, ale po několika letech fungování už prostě nelze stahovat vše od začátku historie.
Buď to useknu a budu sledovat data např. jen za poslední rok, nebo holt musím ta data někam uložit.</p>
<p>Začal jsem si tedy transakce v minimální formě ukládat do gitu do <code>.jsonl</code> souboru, takže tam zůstává historie a stahuju si pouze nová data.
Je to rozhodně výzva co se týče toho, co jsem ještě ochotný dát někam veřejně.
Ale v zásadě tam není o moc víc, než co by nebylo už předtím v grafu…</p>
<figure class="figure"><img alt="Transakce v gitu" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-08-04-at-16-56-05-record-transactions-skip-ci-honzajavorek-junior-guru-1fd1cdd.png"></figure>
<p>Podobný princip ukládání historie jsem jedním vrzem udělal i pro data o předplatném, která rovněž už nebylo možné efektivně stahovat z Memberful od začátku (zhruba po 1000 požadavcích rychle za sebou mě vždy jejich API na několik hodin zablokovalo 😀) a také pro ukládání počtu followerů na sociálních sítích.
Celkově mám dojem, jako bych letos nedělal skoro nic jiného, než optimalizoval a optimalizoval, protože junior.guru už toho dělá hodně a dělá to dlouho.
Uf!</p>
<h2 id="role-aktivne-hledam-praci">Role „Aktivně hledám práci“<small class="permalink"><a href="#role-aktivne-hledam-praci" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Přemýšlel jsem nad tím, jaká je nejkratší cesta k tomu poskytovat juniorům skrz klub co „nejtvrdší“ hodnotu.
Už dřív jsem měl plány, že by mohli mít junioři nějaké profily apod., ale viděl jsem to jako velmi vzdálenou budoucnost.
Teď mě napadlo nečekané spojení různých věcí:</p>
<ul>
<li>Dobrovolná samoobslužná role na Discordu</li>
<li><a href="https://support.discord.com/hc/en-us/articles/10388356626711-Connections-Linked-Roles-Admins">Connections & Linked Roles</a> na Discordu</li>
<li>Profily juniorů…</li>
</ul>
<p>Prostě mě napadla taková věc… A zeptal jsem se členů a vypadá to, že by byla poptávka…</p>
<figure class="figure"><img alt="Role „Aktivně hledám práci“" src="https://honzajavorek.cz/images/screenshot-2023-08-04-at-16-25-33.png" class="img-fluid figure-img rounded"></figure>
<p>Nechci se pouštět do dalšího produktu pár týdnů po tom, co jsem dal na web katalog kurzů, ale svrbí mě teda dost prsty.
A vybuchla mi hlava co se týče nápadů, kam by to šlo až dovést.
S čím vším by to šlo propojit a co vše by to mohlo umět.</p>
<p>Byť je ten prvotní nápad starý už několik let, vrtá mi to teď dost hlavou a přemýšlím, jak by se to celé dalo udělat aspoň jako strašně jednoduché MVP.
Zatím jsem aspoň udělal tu roli.
Existuje jednotky dní a už si ji zakliklo 11 lidí.</p>
<h2 id="prusvih-s-mews">Průšvih s Mews<small class="permalink"><a href="#prusvih-s-mews" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Před nedávnem jsem si začal ukládat informace o partnerstvích novým způsobem.
Ke každému smluvenému období jsem si uložil od-do datum.
Nedošlo mi, že když jedno období končí 2023-06-30 a nové začíná 2023-07-01, tak si to bot vyhodnotí jako „třicátého všem končí předplatné a vyhoď je“.
Kvůli technikálii, která by byla už moc detailní, se to stalo jen několika lidem z Mews.</p>
<p>Všiml jsem si toho, když jsem pracoval na číslech a viděl jsem tam, jak z ničeho nic spousta lidí z Mews v jeden okamžik odešla.
Hned mi došlo, co se děje.
Druhý den si toho všiml i Jan z Mews, se kterým partnerství řeším.
Shodou okolností v den, kdy psal <a href="https://www.linkedin.com/posts/jan-meissner_i-do-many-calls-with-juniors-and-people-considering-activity-7090261521397612549-zNU2">hezký status na LinkedIn</a> o tom, co spolu děláme kolem stipendíí 🤦♂️</p>
<p>No, i takové věci se stávají.
Vše jsem napravil, poslal maily, omluvil se.</p>
<p>Kód jsem ještě neopravil.
Bude to součástí většího překopání toho, jak tahle věc funguje, protože jsem přišel už na několik nedostatků stávajícího řešení.
Ale nejbližší další firma prodlužuje až za 58 dní a ani nevím, jestli prodlouží, tak na to mám čas.</p>
<h2 id="zivot">Život<small class="permalink"><a href="#zivot" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>V pondělí jsem jel vlakem do Prahy, teď zase jedu vlakem z Prahy.
A to jsem se dvěma cestám dokonce vyhnul.</li>
<li>Dostali jsme nezvykle velké číslo rodinných příslušníků na jedno místo a oslavili jsme tam dva roky naší dcerky.
Bylo to náročné, ale bylo to fajn.
Nemůžu uvěřit, že už je to dva roky.</li>
<li>Řešil jsem i nějaké doktory.
Vypadá to, že ani jeden neví, co se mnou.
U jednoho je to fuk a má plán, jak zjistit víc, který už realizujeme.
U druhého je to důležitější a jen doufám, že má nějaký plán B.
Teda vlastně už plán C.</li>
<li>Kvůli tomu, abych mohl v Praze k doktorům, jsem se rozdělil s rodinou a stejně jako <a href="https://honzajavorek.cz/blog/tydenni-poznamky-sam-doma/">nedávno</a> jsem byl několik dní doma sám.
Na rozdíl od minule mi to tentokrát spíš nesedlo, raději bych kolem sebe tu rodinu měl.
Aspoň mi to ale umožnilo užít si v <a href="https://kinoaero.cz/">nejlepším kině</a> Barbenheimer double feature.
Bylo to… intenzivní!</li>
<li>O víkendu jedu na otočku na nějakou šifrovačku do Brna, na kterou mě ukecal kamarád.
Jsem zvědavý, jestli něco vůbec vyluštím.
Taky má hodně pršet.</li>
<li>Zanesl jsem si konečně svetr k místní švadleně na opravu.
Zkusil jsem si očistit fleky na kraťasích, ale bohužel je to asi smůla.
Zatím jsem nehledal, jak se z oblečení sundává smůla, ale vzhledem k jejímu názvu nečekám nic snadného.</li>
</ul>
<figure class="figure"><img alt="Barbenheimer" src="https://honzajavorek.cz/images/img-4713.jpg" class="img-fluid figure-img rounded"></figure>
<h2 id="arc">Arc<small class="permalink"><a href="#arc" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Na doporučení <a href="https://mimoagendu.cz/">Jakuba Zelenky</a> jsem si hrál s prohlížečem <a href="https://arc.net/">Arc</a>.
Rozhodně zajímavý počin.
Jejich <a href="https://www.youtube.com/@TheBrowserCompany">YouTube kanál</a> je i byznysovou inspirací, např. tam má jejich CEO svůj video deníček ve stylu těchto poznámek.</p>
<p>Arc mě stále ujišťoval, že nechce žádná má osobní data, ale zároveň nejde použít bez přihlášení a stále mi nabízel propojení s Google účtem, takže jsem ho smazal.
Navíc když jsem šel do nastavení, vykouklo tam na mě hodně integrací právě s Googlem a Google Chromium logo.
Chromium je open source projekt ze kterého vychází Chrome, ale stejně.
Není to můj šálek.
Asi jsem prostě navěky předurčen zůstat u Firefoxu.</p>
<h2 id="prednasky">Přednášky<small class="permalink"><a href="#prednasky" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Budu v diskuzním panelu na <a href="https://cz.pycon.org/2023/">PyCon CZ</a>, tak jsem doplňoval údaje do systému.
Do bio jsem napsal následující:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Originally a software engineer, now more of an entrepreneur. Creator of <a href="https://junior.guru/">junior.guru</a>, a project for Czech and Slovak beginners in coding. Long-term volunteer in the Czech Python community. Founded one meetup, led the communications working group of four <a href="https://cz.pycon.org/">conferences</a>, contributed to several Django Girls and PyLadies courses or workshops. Now helping mainly as a board member of the local Python nonprofit, <a href="https://pyvec.org/">Pyvec</a>. Sometimes also a self-appointed ambassador of <a href="https://na.pycon.org/">PyCon Namibia</a>.</p>
</blockquote>
</figure><p>Napsal jsem to anglicky, respektive okopíroval jsem to, co jsem <a href="https://honzajavorek.cz/blog/tydenni-poznamky-europython-a-stahovani-csv-z-memberful/">sepisoval před nedávnem už pro EuroPython</a>.
Ale protože bude panel česky, dostal jsem za úkol to přeložit.
ChatGPT mi moc nepomohlo, tak jsem to musel udělat ručně, jako kdyby snad byl rok 2022.</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Původně programátor, dnes už spíš podnikatel. Tvůrce <a href="https://junior.guru/">junior.guru</a>, projektu pro začátečníky v programování. Dlouhodobý dobrovolník v české Python komunitě. Založil jeden sraz, vedl pracovní skupinu pro komunikaci na čtyřech <a href="https://cz.pycon.org/">konferencích</a>, přispíval k workshopům a kurzům Django Girls nebo PyLadies. Dnes pomáhá hlavně jako člen výboru v neziskovce <a href="https://pyvec.org/">Pyvec</a>, kde nejraději ze všeho dokumentuje, jak se mají věci dělat. Občas je taky samozvaným ambasadorem <a href="https://na.pycon.org/">PyCon Namibia</a>.</p>
</blockquote>
</figure><p>Vybírali jsme ještě někoho do panelu a nakonec vybrali.
Dohodl jsem se s <a href="https://www.linkedin.com/in/mia-bajic/">Miou</a>, která panel organizuje, že vymyslíme nějaký promo plakátek, který budou moci lidé sdílet na sociálních sítích.
Neuváženě jsem souhlasil i s tím, že to zkusím namalovat v Canvě.</p>
<p>Pak mi napsali i frontendisti, protože budu něco mít i na <a href="https://frontendisti.cz/konference">FrontKonu</a>.
Poslal jsem jim název přednášky a anotaci:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p><strong>Junior jako investice: Proč je mít v týmu a jak je zaučovat</strong></p>
<p>Junioři v týmu jsou investice, která vás bude něco stát, ale v dlouhodobém horizontu se může vyplatit. Jak najít juniory, kteří mají potenciál rychle růst? Jaké jsou konkrétní benefity juniorů pro tým programátorů a pro firmu jako takovou? A co dělat, nebo čeho se naopak vyvarovat, aby vaše investice nevyšla vniveč?</p>
</blockquote>
</figure><p>To jsem sám zvědav, o čem budu mluvit! Frontendisti samozřejmě taky chtěli bio:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Původně programátor, dnes už spíš podnikatel. Tvůrce <a href="https://junior.guru/">junior.guru</a>, projektu pro začátečníky v programování. Dlouhodobý dobrovolník v české Python komunitě. Byl u začátků projektů jako Mergado nebo Pex, krásné chvíle prožil v Apiary. Na svůj blog <a href="https://honzajavorek.cz/blog/">Javorové lístky</a> píše už 17 let. V Česku jsou jeho nejznámějším článkem nejspíš <a href="https://honzajavorek.cz/blog/kolonizatori-a-spravci-kolonii/">Kolonizátoři a správci kolonií</a> o dvou programátorských povahách.</p>
</blockquote>
</figure><p>Napsal jsem to tak, aby to šlo zkracovat podle potřeby tím, že se vždy ubere jedna věta od konce.</p>
<p>Jak se to tak sešlo, tak mi došlo, že na různé konference píšu různá bio podle toho, co se tam hodí víc.
Napadlo mě, že by bylo zajímavé sledovat, jak se moje bio mění třeba i historicky.
Třeba na WebExpo v roce 2015 <a href="https://webexpo.net/prague2015/talk/designing-apis-mastering-http-is-just-beginning/">jsem měl tohle</a>:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Former freelance developer and consultant, now helping Apiary with making API Blueprint the best format for describing web APIs. Passionate about API design, consistency, structured code, documentation. On top of that, Honza is Czech Python community mascot—but he not only promotes the language, he regularly also takes part in preparations of local meetups and workshops focused on Python.</p>
</blockquote>
</figure><p>Jak bude asi vypadat za dalších osm let?</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Dal jsem prvním lidem otestovat anketu pro juniory, kterou jsme připravili s ENGETO Academy.</li>
<li>Vyšla nová verze MkDocs.
Jsou tam zajímavé nové funkce, především kontrola odkazů, nový <a href="https://github.com/mkdocs/catalog">katalog rozšíření</a>, apod.
Upgradnul jsem.
Nic se nerozbilo.</li>
<li>Z úřadu práce mi odepsali „Dobrý den, toto bohužel možné není. Přeji pěkný den. PK“ na dotaz, zda lze data z <a href="http://www.jsemvkurzu.cz/">katalogu</a> stáhnout přes nějaké otevřené API nebo z nějakého veřejného Excelu.
Raději nebudu odepisovat, že už jsem to API našel, použil, a data mám dávno na webu jako součást svého katalogu kurzů.</li>
<li>Díky kamarádům mám přístup do API <a href="https://www.merk.cz/">Merk</a>.
To mi umožní obohatit katalog kurzů daty o provozovatelích.</li>
<li><a href="https://www.linkedin.com/in/michal-cyprian-b5b915127/">Michal Cyprian</a> bude v Košicích zakládat technologický meetup.
Pokud vás to zajímá, napište mu.</li>
<li>Naprogramoval jsem si příkaz, který přizpůsobí míru paralelizace na CircleCI podle toho, jak na sebe jednotlivé skripty zpracovávající data navazují.
Tohle jsem doteď dělal ručně a bylo to hodně otravné.</li>
<li>Zhluboka jsem se nadechl a naznal, že by mi prospělo mít na codebase nějaký formátovač kódu.
Že sice nějaké konvence dodržuji, ale zbytečně ztrácím čas ručním formátováním a kódu už je tolik a píšu ho tak dlouho, že ani v jednom člověku to už nedokážu udržovat konzistentní.
Standardem je <a href="https://github.com/psf/black">black</a>, takže jsem ho přidal do projektu.
Zatím neformátuju vše, začal jsem testy a postupně přidávám jednotlivé složky podle toho, jak si na to zvykám.</li>
<li>V plném počtu a na smluvený čas jsme se sešli na call výboru <a href="https://pyvec.org/">Pyvce</a>.
Mám z toho radost.
Daří se nám konečně scházet, po kouskách řešit věci, stihneme si u toho i pokecat a celé se to vleze pod hodinu.</li>
<li>Vyřidil jsem jedno stipendium.
Další ještě čeká v mailu.</li>
<li>Udělal jsem konečně promo pro předchozí epizodu podcastu: <a href="https://www.linkedin.com/feed/update/urn:li:activity:7089159983702884352/">Matěj Kotrba (Fuckupy v IT, Očima ajťáka) o tom, jak se recruiterům dostat do hledáčku</a>
Pavlína mezitím <a href="https://junior.guru/podcast/">natočila další</a>.
Tu jsem aspoň hned vydal, ale promo udělám později.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, zprávy na LinkedIn.</li>
<li>Během 14 dní jsem při procházkách nachodil 6 km, ujel na kole 21 km. Celkem jsem se hýbal 12 h a zdolal při tom 27 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Utřídit si priority a naplánovat další postup 😀</li>
<li>Vyhodnotit zpětnou vazbu od pokusných králíků, kteří viděli anketu pro juniory.</li>
<li>Napsat do různých firem z různých důvodů.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://ploum.net/2023-07-06-stop-trying-to-make-social-networks-succeed.html">Stop Trying to Make Social Networks Succeed</a><br>„Like every human endeavour, every social network is there for a limited duration and will be useful to a limited niche of people. That niche may grow to the point of being huge, like Facebook and WhatsApp. But, to this day, there are more people in the world without an account on Facebook than people with one. Every single social network is only representative of a minority.“</li>
<li><a href="https://ploum.net/2023-08-01-splitting-the-web.html">Splitting the Web</a><br>Dva oddělené světy na webu. Jeden plný reklam a notifikací a komerce, druhý plný adblockerů, fediverse, RSS a statického HTML bez JavaScriptu. Kterou si vyberete? A která je ta divná a která je ta normální? „Something strange is happening: it’s not only a part of the web which is disappearing for me. As I’m blocking completely google analytics, every Facebook domain and any analytics I can, I’m also disappearing for them. I don’t see them and they don’t see me!“</li>
<li><a href="https://ploum.net/2023-06-23-how-to-kill-decentralised-networks.html">How to Kill a Decentralised Network (such as the Fediverse)</a><br>Pamatujete Jabber a jak ho Google zabil? „But the Fediverse cannot be bought. The Fediverse is an informal group of servers discussing through a protocol (ActivityPub). Those servers may even run different software (Mastodon is the most famous but you could also have Pleroma, Pixelfed, Peertube, WriteFreely, Lemmy and many others). You cannot buy a decentralised network! But there’s another way: make it irrelevant. That’s exactly what Google did with XMPP.“</li>
<li><a href="https://www.welcometothejungle.com/cs/articles/mikroprace-nevyhody">Past mikropráce: Ne, v metru ani v čekárně u zubaře vážně nepracujte</a><br>„V danou chvíli máte radost, že „šetříte čas“, ale z dlouhodobého hlediska vaše kreativita trpí a jste pod čím dál větším stresem“</li>
<li><a href="https://open.substack.com/pub/pavlinaspeaks/p/ahoj-vol-56-creator-economy">Ahoj vol. 56: Creator Economy</a><br>Pavlína Louženská rozebírá trend ekonomiky tvůrců - do které patřím.</li>
<li><a href="https://www.irozhlas.cz/zpravy-domov/auta-automobily-zvetsuji-suv-parkovaci-mista_2307280600_jab">Auta se prodlužují o dva centimetry ročně. Před 12 lety se nafoukla i parkovací místa, dnes už nestačí</a><br>Ovládnou lidstvo stroje? Už ovládly. Jmenují se auta. Je jich stále víc a jsou stále větší.</li>
<li><a href="https://zdopravy.cz/dvacaty-most-pres-vltavu-v-praze-lavka-mezi-holesovicemi-a-karlinem-se-otevrela-verejnosti-169669/">Dvacátý most přes Vltavu v Praze. Lávka mezi Holešovicemi a Karlínem se otevřela veřejnosti - Zdopravy.cz</a><br>Už se těším, až to uvidím!</li>
<li><a href="https://culture.ghost.io/why-havent-internet-creators-become-superstars/">Why haven’t internet creators become superstars?</a><br>Proč nejsou internetoví tvůrci na červených kobercích, i když je sleduje víc lidí, než tradiční hvězdy?</li>
<li><a href="https://www.seznamzpravy.cz/clanek/233926">Státní peníze za hvězdy od Michelinu — 5:59</a><br>Nemyslel jsem si, že by mě bavilo povídání o jídle a kauze s Michelinskými hvězdami, ale někdo mi tento rozhovor doporučil a bylo to vlastně super. Kauza se sice probrala, ale zbytek byl o minulosti a budoucnosti naší stravy, nebo o tom, jak ve světě protlačit českou kuchyni.</li>
<li><a href="https://til.simonwillison.net/python/stdlib-cli-tools">CLI tools hidden in the Python standard library</a><br>Nevěděl jsem, že v standardní knihovně Pythonu je tolik CLI utilitek</li>
</ul></div></div></div></div>Týdenní poznámky: EuroPython a stahování CSV z Memberful2023-07-22T00:00:00+02:002023-07-22T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-07-22:/blog/tydenni-poznamky-europython-a-stahovani-csv-z-memberful/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-rozkladani-dat-o-predplatnem-na-atomy/">posledních poznámek</a> už utekl nějaký ten týden (14. 7. až 22. 7.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-rozkladani-dat-o-predplatnem-na-atomy/">posledních poznámek</a> už utekl nějaký ten týden (14. 7. až 22. 7.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="vytvareni-zmatku-v-organizacnim-tymu-pycon-cz">Vytváření zmatku v organizačním týmu PyCon CZ<small class="permalink"><a href="#vytvareni-zmatku-v-organizacnim-tymu-pycon-cz" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Nejsem součástí letošního organizačního týmu <a href="https://cz.pycon.org/2023/">PyCon CZ</a>, který bude v září, ale samozřejmě se občas něco dovím, protože to organizují kamarádi.</p>
<p>Takhle jsem se něco omylem dověděl a na základě těchto kusých informací jsem vyjádřil lítost, že to není jinak.
Byla to hlavně emoce, tak jsem to nechtěl moc šířit.
Neměl jsem řešení a nemyslel jsem si, že je vhodný moment házet vidle do něčeho, co se v podstatě už stalo.
Bál jsem se, že moje slovo v komunitě by mohlo být vnímáno jako příliš silný kritický hlas a chtěl jsem respektovat to, jak konference funguje a nekecat jim do toho zboku.</p>
<p>To se nepodařilo, protože jsem si soukromě ulevil u člověka, který potom zburcoval ostatní a začal tu věc řešit.
Nakonec to vyústilo v to, že bych se možná do organizace mohl i zapojit.
Byl jsem v neděli na hodinovém callu, pak jsem tomu věnoval v pondělí několik hodin a několik dalších hodin i v úterý.
V jednu chvíli jsem skoro zodpovídal za místnost pro 50 lidí, ale to jsem nakonec naznal, že nebude v mých silách.
Někteří lidi měli kvůli tomu celému dojem, že udělali něco špatně, a to mě mrzelo, tak jsem se snažil co nejvíc komunikovat jak co vnímám a vysvětlovat, proč si co myslím a proč něco chci nebo nechci.
Detailů vás ušetřím, ale podle mě jsem akorát způsobil na pár dní chaos.</p>
<p>Nicméně i z chaosu občas vyleze něco dobrého.
Několikadenní jízdou jsme se dostali k tomu, že si na konferenci zkusím vzít na starost následující:</p>
<ul>
<li>Uspořádání jedné debaty,</li>
<li>nahrávání podcast(ů) na místě (jestli to Vojto čteš, tak jo, chci se ti ozvat),</li>
<li>vytvoření přáníčkové nástěnky pro juniory.</li>
<li>Navíc do jednoho panelu pozveme i někoho, kdo si prošel změnou kariéry, ne pouze teoretické mudrlanty, jako jsem já.</li>
</ul>
<figure class="figure"><img alt="PyCon CZ 2023" src="https://honzajavorek.cz/images/screenshot-2023-07-22-at-11-17-44-pycon-cz-23-15-17-september-prague.png" class="img-fluid figure-img rounded"></figure>
<h2 id="europython">EuroPython<small class="permalink"><a href="#europython" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Organizátorům EuroPythonu jsem nakonec potvrdil svou účast v <a href="https://ep2023.europython.eu/session/python-organizers-panel-exploring-community-driven-python-conferences">diskuzním panelu komunitních organizátorů</a> a poslal jim bio a fotku.
V panelu byla nakonec i <a href="https://www.programhrovani.cz/1843229/12774409">Bára Drbohlavová</a>, současná i minulá hlavní organizátorka <a href="https://cz.pycon.org/">PyCon CZ</a> a aktuální předsedkyně <a href="https://pyvec.org/">Pyvec, z.s.</a>.</p>
<figure class="figure"><img alt="Tréma" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/7stcvl.png"></figure>
<p>Trochu mě to nervovalo, ale nakonec jsem si řekl, že to bude určitě jen prostě takový přátelský pokec a o nic nejde.
Když jsem ve středu přišel na keynote Petra Viktorina a ten ukázal na plátno všem 1000+ návštěvníkům EuroPythonu můj ochmýřený ksicht (když mi bylo dvacet) a zeptal se, jestli jsem v sále, tak ze mě už definitivně spadla jakákoliv tréma.
Už bylo všechno jedno 😀
Záznam keynote je <a href="https://www.youtube.com/live/HHvm_TYhG14?feature=share&t=713">tady</a>.</p>
<figure class="figure"><img alt="Chmýří" src="https://honzajavorek.cz/images/screenshot-2023-07-22-at-11-22-26-europython-2023-pycharm-forum-hall-july-19.png" class="img-fluid figure-img rounded"></figure>
<p>Na EuroPython jsem šel hlavně ve středu.
Šel jsem sice asi na dvě nebo tři přednášky, ale jinak jsem se soustředil na lidi.
Nadchlo mě, jak jsem po dlouhé době viděl staré známé ze všech koutů republiky.
Dojalo mě to a nabilo energií.</p>
<p>Uvědomil jsem si, jak mi chybí PyCon CZ a vůbec všechny společné komunitní akce.
<a href="https://pyvo.cz/">Pyvo</a> je fajn, ale v poslední době mám pocit, že lidi, se kterými mám nejvíc zážitků, tam chodí jen sporadicky, protože už mají třeba rodiny.
A mě se to ostatně týká taky.</p>
<p>Ve středu odpoledne jsem se věnoval dceři a pak jsem ještě večer vyrazil na společné Pyvo + EuroPython, které se mimořádně vyvedlo.
Opět jsem potkal mnoho lidí, které jsem dlouho neviděl a mohli jsme probrat spoustu věcí.
Škoda akorát, že jsem tam zapomněl batoh, odjel domů, u dveří si to uvědomil, a ještě ve tři ráno se pro něj vracel.</p>
<p>Ve čtvrtek jsem dopoledne pracoval, odpoledne vzal dceru a vyzkoušel s ní EuroPython <em>childcare</em>.
Bylo to poprvé, co jsme ji zkusili nechat hlídat někým, koho nezná.
Vydržela tam 20 minut, takže napoprvé asi dobrý.
Věnoval jsem se hlavně jí, takže jsem konferenci jinak moc nedal a prohodil akorát pár slov s pár lidmi.
Žádnou přednášku jsem neviděl, ani lightning talk.</p>
<p>V pátek jsem celé ráno hledal klíče od kanceláře a měl jsem nervy, že jsem je někde poztrácel během posledních dní.
Po převrácení celého bytu naruby mě ještě napadlo, jestli nejsou v kanceláři na stole.
Když mě pustili dovnitř, byly samozřejmě tam.
Kolem oběda jsem se vypravil na EuroPython.
Během toho jsem zjisitl, že zastávka Vinohradská vodárna není zastávka Vinohradská tržnice, ale to je detail.</p>
<figure class="figure"><img alt="EuroPython pódium" src="https://honzajavorek.cz/images/1689955898186.jpg" class="img-fluid figure-img rounded"></figure>
<p>Záznam panelu je <a href="https://www.youtube.com/live/NC89Gll_akI?feature=share&t=18831">tady</a>.
Bylo to nakonec fajn!</p>
<figure class="figure"><img alt="já v panelu" src="https://honzajavorek.cz/images/1689955899192.jpg" class="img-fluid figure-img rounded"></figure>
<p>Potom jsem se už jen chvilku coural po konferenci a pak to zabalil.
V pátek byla ještě PyLadies párty, ale tu jsem vynechal, stačilo mi středeční Pyvo.</p>
<p>Byť jsem na EuroPython původně vlastně ani nechtěl, nakonec jsem moc rád, že mě pozvali.
Svoje dojmy jsem sepsal do <a href="https://www.linkedin.com/posts/honzajavorek_i-was-my-pleasure-to-host-the-python-activity-7088198605353672705-02ng?utm_source=share&utm_medium=member_desktop">LinkedIn statusu</a>:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Thank you <strong>Artur Czepiel</strong> and <strong>Alexander C. S. Hendorf</strong> for inviting me to the panel and to EuroPython!</p>
<p>The conference is a blast. Seeing all the familiar faces, I realized how much I miss my Python crowd after all the COVID years.</p>
<p>Many of us moved on with our lives, many now have children, demanding businesses, or other activities. It’s not so easy to meet each other even on a local meetup.</p>
<p>More so it was such a great feeling to see us together again, either talking over coffee in the EuroPython halls, or over a beer on Wednesday evening (big thanks to <strong>Mia Bajić</strong> for leading the efforts of having a joint EP + regular Pyvo meetups event!).</p>
<p>I’m looking forward to PyCon CZ later this year and I’m glad it’s finally happening! I hope such events can rekindle the community and bring the activity back to pre-COVID levels. We can do it 💪</p>
<p>I thought I’m a retired old fart regarding my Python community involvement. To be honest, I thought EuroPython in Prague is coming late in my career and it isn’t for me anymore. I’m glad Artur dragged me on board and I could be, again, where the history of Python in the Czech Republic is being written. I realized I’m still interested in technical talks about Python, about everything community, and that I do want to be still involved. Perhaps I can still help, here and there!</p>
<p>Cheers! 🍻</p>
</blockquote>
</figure><p>Záznamy přednášek z EuroPythonu budou asi brzo sestříhané někde na YouTube, ale komu se nechce čekat, může se už teď <a href="https://www.youtube.com/playlist?list=PL8uoeex94UhEGxPOetT3bpg8ibcxflh44">brodit záznamy streamů</a>.</p>
<h2 id="stahovani-csv-z-memberful">Stahování CSV z Memberful<small class="permalink"><a href="#stahovani-csv-z-memberful" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Ve zbylém čase jsem neměl morálku přemýšlet nad tím, jak z dat v databázi pomocí SQL složitě vytahovat agregovaná čísla, tak jsem šel dělat něco jiného.
Místo malování grafů jsem šel na hromádku přidat další data.</p>
<p>Určitá data mám v Memberful, ale oni je (zatím) nemají v API.
Což je blbý, protože jsou to celkem důležitá data:</p>
<ul>
<li>Odpověď na otázku „odkud znáš junior.guru“, která se zjeví hned po registraci,</li>
<li>odpověď na otázku „proč rušíš předplatné“,</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer">referer</a> registrace.</li>
</ul>
<p>Naštěstí existuje způsob, jak ta data získat.
Dají se stáhnout v CSV.
To bych ale nebyl já, abych si jednorázově stahoval nějaká CSV a snažil se je zpracovat.
Přece to nebudu dělat ručně?
A jak to pak budu dávat do grafů, které jsou živě na webu?</p>
<p>Takže jsem zkusil udělat skript, který se přihlásí do Memberful a ta CSV stáhne.
Šlo to nakonec dokonce bez browseru, ale nebylo to úplně triviální, protože na ta CSV se musí čekat.</p>
<p>Byl jsem však nesvůj z toho, že bych měl někam dávat heslo ke svému účtu, který je zcela kritický pro celý můj byznys.
Naštěstí můžu na Memberful přidávat <em>staff</em>, tedy uživatele s menším oprávněním.
Tak jsem udělal botovi uživatele a přihlašuje se přes tento účet.
Kdyby heslo někdo získal, asi by mohl napáchat nějakou škodu, ale bylo by to zaznamenáno v <em>audit logu</em> a nebylo by to snad tolik škody, jako by šlo napáchat s mým admin účtem.</p>
<p>Kód jsem si nakonec vyčlenil do třídy <a href="https://github.com/honzajavorek/junior.guru/blob/1910a71adb750dad0069c09a508d96a0ef424139/juniorguru/lib/memberful.py#L164">MemberfulCSV</a>, která umí i kešovat odpovědi, když na to dojde.</p>
<figure class="figure"><img alt="Export CSV" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-07-22-at-10-12-49-members.png"></figure>
<h2 id="cisteni-dat-z-memberful">Čištění dat z Memberful<small class="permalink"><a href="#cisteni-dat-z-memberful" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>V dalších dnech jsem data čistil.
Napsal jsem si dvě funkce, které se pomocí regulárů snaží odhadnout, jakým způsobem někdo přišel.</p>
<p>Políčko pro odpovědi je totiž prostě textové, nejsou tam žádné možnosti.
Mám to tak záměrně, abych lidem nic nepodsouval.</p>
<p>A taky jsem čistil referer, aby bylo snadnější z dat zjistit z jakých jiných webů přišli registrující se lidi, nebo z jakých stránek na mojem vlastním webu přišli nejčastěji.</p>
<p>Jestli budu nějak čistit odpovědi na otázku proč někdo odchází, to ještě nevím, možná ne.
Memberful tam základní kategorizaci má a volná odpověď je až v případě, že nic z možností nevyhovuje.</p>
<p>Nakonec chci z těchto „CSV dat“ udělat nejen grafy, které mi pomohou rozhodnout se lépe co bych měl co nejrychleji zlepšit, ale také chci udělat skript, který mi tyhle odpovědi v reálném čase pošle do nějakého privátního kanálu na Discord, nebo do soukromé zprávy.
Tam hned uvidím, kdo ruší předplatné a proč, nebo odkud noví lidi přichází.
Na to první budu moci okamžitě reagovat (např. pokud mi někdo napíše, že na to už nemá, mohu nabídnout stipendium).
Taky budu moci kontrolovat, jestli mi reguláry správně řadí jednotlivé události do kategorií, nebo jestli jsou tam chyby.
Lidi totiž vymyslí nejrůznější věci a nemá moc smysl to testovat jinak, než kontinuálně kontrolovat, zda to živá data klasifikuje správně.</p>
<h2 id="oprava-scraperu-followeru">Oprava scraperu followerů<small class="permalink"><a href="#oprava-scraperu-followeru" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Mám scraper, který se snaží zjistit, kde mám kolik followerů.
Funguje mi všude, kromě <a href="https://www.linkedin.com/company/juniorguru">„firemní“ junior.guru stránky na LinkedIn</a>.
Ať dělám co dělám, bez přihlášení na LinkedIn prostě dostanu jejich <em>authwall</em> s přihlašovacím formulářem a není odkud veřejně počet sledujících zjistit.
Napadlo mě scrapnout Google vyhledávání, protože to tam je.
Nebude to asi nejaktuálnější, ale pokud je to aktuální aspoň jednou za měsíc, tak mi to stačí.</p>
<figure class="figure"><img alt="Google Search" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-07-22-at-08-47-11-sledujicich-https-www-linkedin-com-company-juniorguru-google-search.png"></figure>
<p>Jenže ač to funguje lokálně, na CI to zase <a href="https://github.com/honzajavorek/junior.guru/commit/1910a71adb750dad0069c09a508d96a0ef424139">nefunguje</a>.
Možná tohle číslo prostě vzdám a nebudu ho měřit.
Cílem je stejně dostat lidi spíš na můj osobní profil, který funguje líp a je osobnější.</p>
<figure class="figure"><img alt="Nepovedlo se" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-07-22-at-10-16-26.png"></figure>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Fakturu za Zlatý tarif jsem poslal.
Novým sponzorem příručky je <a href="https://getrector.org/?utm_source=juniorguru&utm_medium=logo&utm_campaign=partnership">Rector</a>, což je kamarádova firma vyvíjející <a href="https://github.com/rectorphp/rector">open source nástroj</a> na práci s legacy PHP kódem.</li>
<li><a href="https://junior.guru/pricing/">Zlatý tarif</a> zahrnuje logo v příručce a epizodu podcastu, což nejsou nekonečné zdroje, a proto je drahý a omezený na maximálně čtyři firmy.
Tím, že se přidal Rector, nelze nyní nejvyšší tarif koupit do té doby, než z něj nějaká firma vystoupí.
Nechám se překvapit, jak to bude na podzim s Red Hatem, když teď propouštěli.
Mimochodem, pokud hledáte fakt dobrého interního recruitera, <a href="https://www.linkedin.com/in/jiripsotka/">Jiří Psotka</a> je teď volný hráč (znáte ho z prvního dílu <a href="https://junior.guru/podcast/">podcastu</a>).</li>
<li>Czechitas už nějakou dobu <a href="https://www.linkedin.com/pulse/hled%2525C3%2525A1me-%2525C5%252599editelku-dita-form%2525C3%2525A1nkov%2525C3%2525A1%3FtrackingId=YpFO2v5bHK4VI6e%252Bw5VBZA%253D%253D/">hledají novou či nového CEO</a>, teď <a href="https://drive.google.com/file/d/1cmsaXnb3wZUtnwwj7NP7Pfrix-z7onZg/view">hledají i peníze</a>, aby nemusely drasticky škrtat.
Pokud je chcete podpořit, teď je ta pravá chvíle.</li>
<li>Dopracovali jsme spolu s ENGETO Academy anketu pro juniory a teď ji pošleme pár lidem, aby nám ji otestovali a dali nám na ni zpětnou vazbu.</li>
<li>Koupil jsem si roční Lítačku.</li>
<li>Udělil jsem jedno stipendium na členství v klubu.</li>
<li>Domlouvám, kdy bychom se mohli sejít s právničkou Pyvce, abychom doladili nějaké detaily ohledně voleb do výboru spolku.</li>
<li>Koukal jsem se na <a href="https://github.com/jendrikseipp/vulture">vulture</a>, nástroj, který umí odhalit mrtvý kód v projektu.
Umí to statickou analýzou najít věci jako zbytečné importy, nevyužité proměnné, nebo nedosažitelné podmínky.
To moc nepotřebuju, tak to nepoužiju.
Myslel jsem si, že by to mohlo umět víc, třeba mi říct, že mám někde funkci, která se nikde v projektu nevolá, nebo i úplně zbytečný soubor.
Třeba se to ale někomu bude hodit, tak sem dávám odkaz.</li>
<li>Podpora Meetup.com mi poslala i na přímý a jednoduchý dotaz vyhýbavou a generickou odpověď na to, proč zavřeli své exporty do kalendáře za login.
Rozhodl jsem se je dále negrilovat a neztrácet s nimi čas.
Mimochodem Alexander Hendorf mi říkal, že propagaci jejich akcí kupodivu hodně pomohlo dávat je na LinkedIn a že Meetup.com už tolik nefungoval na to, aby akci objevili nějací noví lidé.
Já mám jasno, pro mě je Meetup.com, tím co udělal, mrtvý.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>.</li>
<li>Během 9 dní jsem na túrách nachodil 9 km. Celkem jsem se hýbal 9 h a zdolal při tom 9 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Opravit metriky na <a href="https://junior.guru/open/">/open/</a> a přidat nové, abych se mohl rozhodovat, co dál.
Zdá se mi, že mi na několika frontách klesají čísla.
Chtěl bych se zamyslet nad svými prioritami a zaměřit se na to, co nejvíc pomůže zvrátit trend.
Ale k tomu potřebuju nejdřív vědět, co se přesně děje a mít na to čísla a grafy.</li>
<li>Dělat promo věcem, kterým mám dělat promo.</li>
<li>Napíšu kamarádce do jedné firmy, zda mi neposkytne data, která by mohla obohatit katalog kurzů.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.mimoagendu.cz/r/6e041952?m=66ba468d-5bc9-4c14-bd0c-21f5c52e7ed0">Proč potřebujeme pomalou novinařinu</a><br>Dnešní Mimo Agendu je velká pecka. Jako vnější pozorovatel a „uživatel“ novinářského světa souhlasím snad s každou větou. „Dnešní novinařina v Česku je až na výjimky montovnou… Pomalá novinařina je jedinou cestou, jak média mohou přežít v dnešním propojeném světě.“ Sám jsem před delší dobou přešel k pomalé novinařině, např. podcastu ČRo Vinohradská 12, kde vyberou jednu důležitou aktuální věc denně a hotovo.</li>
<li><a href="https://omny.fm/shows/zdopravy/cesty-zdopravy-kl-ra-n-mcov">Cesty Zdopravy - Klára Němcová — Zdopravy Podcast</a><br>Jak u nás funguje plavba, vodní infrastruktura, co je potřeba na řízení lodě, jak se kontrolují pravidla? Zajímavý pohled do světa, kterému jinak vůbec nerozumím</li>
<li><a href="https://overcast.fm/+1O3llyR6c">Jak na HPP a IČO s Jakubem Málkem (PEYTON legal) — ProgramHRování - váš HR průvodce světem IT</a><br>Zaměstnaváte lidi „na IČO“, místo abyste je opravdu zaměstnali? Poslechněte si, zda vám hrozí pokuta 10 milionů korun. A pozor, i samotným kontraktorům hrozí pokuty 😬</li>
</ul></div></div></div></div>Týdenní poznámky: Rozkládání dat o předplatném na atomy2023-07-14T00:00:00+02:002023-07-14T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-07-14:/blog/tydenni-poznamky-rozkladani-dat-o-predplatnem-na-atomy/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-sam-doma/">posledních poznámek</a> už utekl nějaký ten týden (7. 7. až 14. 7.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-sam-doma/">posledních poznámek</a> už utekl nějaký ten týden (7. 7. až 14. 7.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="bug-v-datech-o-predplatnem">Bug v datech o předplatném<small class="permalink"><a href="#bug-v-datech-o-predplatnem" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>O víkendu nebo tak nějak jsem dostal report, že se někomu nepřiřazují na Discordu správně role.
Hlavně jedna role, která umožňuje přístup do některých skrytých kanálů, a která se přiřazuje na základě kupónu, s nímž vzniklo předplatné daného člověka.</p>
<p>A tak začalo pátrání.
Brzy jsem zjistil, že role se přiřazují správně, ale ty kupóny chybí v datech.
Občas.</p>
<p>Začal jsem zkoumat, co mi chodí z API od <a href="https://memberful.com/">Memberful</a>, ze kterého to beru.
No a zjistil jsem, že to celé nějak nesedí.
Napsal jsem na (naprosto skvělou) podporu Memberful, co jsem zjistil, a pak jsme společně zkoušeli různé věci, například jestli nemám chybu v tom, jak stránkuju odpovědi.
Strávil jsem debugováním dva dny, ale výsledek byl nakonec jasný.
Je to chyba na jejich straně.</p>
<p>API vracelo v seznamu předplatných duplicity a některé předplatné naopak ve výpisu chyběly.
Můj kód samozřejmě předpokládal, že každý objekt v odpovědi je unikátní a že jsou tam všechny.</p>
<p>Bug se však projevoval jen na výpisu předplatných.
Protože jde o GraphQL API, snadno jsem se na všechna předplatné dostal oklikou přes výpis členů, kde bylo vše správně, a svůj systém opravil.
Z Memberful mi poděkovali za report a debugování, a pak mi dali vědět, když se to povedlo opravit i jim.</p>
<p>Starý skript se staral jak o (kritická) data pro přiřazování rolí, tak o (nedůležité) statistiky pro <a href="https://junior.guru/open/">/open/</a>.
To vše jen komplikovalo.
Nově jsem to tedy rozdělil na dvě zcela nesouvisející věci, i co se týče tabulek v databázi.
Také jsem přidal kontrolu, zda nemám na Discordu někoho úplně bez účtu na Memberful.</p>
<p>To vyústilo ve vyhození jedné osobnosti českého internetu, která samozřejmě nebyla černým pasažérem, ale byla v klubu úplně od začátku ještě na nějakou pradávnou čistě Discordí pozvánku.
Omluvil jsem se, ale pořádek musí být, tak snad se vrátí zpět přes standardní účet u Memberful 😀</p>
<h2 id="zruseni-vyuctovani-studentu">Zrušení vyúčtování studentů<small class="permalink"><a href="#zruseni-vyuctovani-studentu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Od loňského podzimu jsem vyjednával s jednou vzdělávací agenturou, zda si zaplatí partnerství na další rok a jaké.
V rámci předchozí dohody měli i to, že mohli do klubu posílat studenty na 3 měsíce.
To jsem vždy jednou za čas sečetl a poslal jim na to fakturu, aby mi tyto 3 měsíce pro své studenty propláceli.
Ačkoliv už jim neběželo partnerství, posílání studentů jsem nechal funkční, na dobré slovo.
Přece jenom to byl příslib peněz.</p>
<p>Tato věc měla několik nevýhod:</p>
<ul>
<li>Agentura neměla moc motivace dotahovat roční partnerství k dohodě, protože vlastně měli, co potřebovali.</li>
<li>Vyúčtování studentů nebyl vůbec triviální skript a komplikovalo mi to kód na více místech projektu.</li>
<li>Tuto věc využila pouze tato firma a žádná jiná.</li>
<li>Šéfka, s níž jsem měl dohodu, z firmy odešla.
Člověk, který to měl převzít, mi nikdy na zprávu neodpověděl.</li>
<li>Do budoucna už jsem tímto způsobem pokračovat nechtěl.
V novém ceníku jsem nabídl měsíc zdarma pro studenty, pokud si firma zakoupí stříbrný tarif, a tři měsíce zdarma, pokud zlatý.
Paušálně, bez další administrativy, bez dalšího proplácení.</li>
</ul>
<p>Jak jsem hledal bug ve skriptech stahujících informace o předplatném, ruply mi už nervy z toho, jak jsou komplikované, a napsal jsem jim mail.
Že to celé trvá moc dlouho, že jim zastavuji studentský kupón a posílám fakturu.
A že se moc rád domluvím na pokračování, ale s čistým stolem a podle aktuálního ceníku.</p>
<p>Při tom jsem zjistil, že jak jsem si před časem omylem smazal některá historická data ohledně předplatných, tak jsem si nejspíš promazal i údaje o tom, kdo šel přes tenhle kupón.
Bohužel jsem se tedy nejspíš obral o dost peněz tím, že už nejsem schopen spočítat a doložit, kolik přesně studentů poslali.
Udělal jsem co nejpoctivější analýzu aspoň těch dat, které mám, a studenty, které doložit umím, jsem vyúčtoval.</p>
<p>Pro jistotu jsem přidal do kopie i kontaktní mail celé firmy a fakturu vystavil jako proformu.
Nepřekvapivě se mi zpráva člověku, který to měl převzít, vrátila jako nedoručitelná, protože už tam asi nepracuje.
Jinou odpověď zatím nemám.
Nevím, co se tam děje a nevím, jestli své peníze někdy uvidím.</p>
<p>Tak či tak jsem ale šel a okamžitě smazal všechen kód, který se této funkce jakkoliv týkal.
Aspoň to mi udělalo velkou radost.</p>
<h2 id="opravovani-grafu-s-predplatnym">Opravování grafů s předplatným<small class="permalink"><a href="#opravovani-grafu-s-predplatnym" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když už jsem se v tom všem zrovna vrtal, jal jsem se opravit grafy s předplatným na <a href="https://junior.guru/open/">/open/</a>.</p>
<p>Chvíli jsem měl dojem, že jsem si možná žádná historická data nesmazal, že to byla jen ta chyba na straně Memberful.
Ale není to tak, bohužel opravdu nějaká data nemám.
Pokud někdo přišel do klubu, byl tam chvíli, a pak ukončil členství ještě před změnou tarifů, tak byl i po migraci tarifů stále navázaný na ten starý tarif, který jsem následně <del>uklidil</del> smazal.</p>
<p>Na fungování klubu to nemá vliv.
Jediné, co mě napadá, je že pokud by se ten člověk vrátil, tak mu akorát bot nezapočítá, že už je s námi hodně dlouho a nedostane odznáček za odkroucené roky.</p>
<p>Na fungování statistik to má zásadní vliv.
Prakticky mám do letošního března nekompletní data, z nichž tudíž nemůžu nic zásadního vyvozovat.</p>
<p>Co s tím?
Pokusím se postahovat vše, co k dispozici mám, a poskládat z toho aspoň něco.
Některá data jsem schopen získat z jakéhosi „activity logu“.
Když to dám dohromady, možná budu stejně muset některé grafy ořezat, ale jiné budou možná moci zůstat na celou délku historie klubu.</p>
<p>Začal jsem na tom hned pracovat.
Onen „activity log“ mě taky přivedl na myšlenku, že by to možná mohl být lepší způsob, jak údaje o předplatných reprezentovat v databázi.
Původně jsem si ukládal nějaké úseky od-do, ale bylo strašně obtížné s tím správně pracovat při skládání dotazů do databáze.
Teď to zkusím jako body v čase, které označují nějaké události.
Třeba to bude lepší.</p>
<p>Když jsem potřeboval udělat něco zapeklitého v SQL, respektive v Peewee, tak mi docela dobře pomohlo ChatGPT.
Některé věci bych sám vůbec nevymyslel, nebo bych je vymýšlel týden.
Někdy mi poradil blbě, ale přivedl mě na dobrou myšlenku.</p>
<figure class="figure"><img alt="ChatGPT radí" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-07-14-at-14-36-54.png"></figure>
<figure class="figure"><img alt="ChatGPT radí" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-07-14-at-14-37-05.png"></figure>
<h2 id="prevence-ztraty-dat">Prevence ztráty dat?<small class="permalink"><a href="#prevence-ztraty-dat" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Do budoucna mě napadlo, že by se historické statistiky neměly živě počítat znovu a znovu.
Měl bych si ke každému grafu někam ukládat podkladová data, třeba anonymizovaná.
Podkladová proto, že pokud si uložím agregovaná, tak nemůžu už přidat nový graf, nebo změnit metodiku výpočtů.</p>
<p>Ta podkladová se ale už nezmění a nemá smysl je stahovat stále znova.
Taky se může stát, že se smažou, a to nejen omylem, ale i záměrně.
Některá data mohou mít retenci, nebo někdo půjde a svoje data prostě ručně smaže.</p>
<h2 id="ceske-razeni-v-databazi">České řazení v databázi<small class="permalink"><a href="#ceske-razeni-v-databazi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Zjistil jsem, že neexistuje moc jednoduchých a snadno přenositelných způsobů, jak řadit česky v SQLite.
To znamená tak, aby ch bylo po h, nebo š po s.</p>
<p>Napadlo mě, zda by nějak nešlo použít balíček <a href="https://github.com/encukou/czech-sort">czech_sort</a> od Petra Viktorina, ale nešlo.
Tak jsem založil <a href="https://github.com/encukou/czech-sort/issues/8">issue</a>, co by mi poradil.
Odpověděl komentářem s implementací a prosbou, zda bych nechtěl poslat Pull Request.</p>
<p>Sednul jsem na to a <a href="https://github.com/encukou/czech-sort/pull/9">PR poslal</a>, ale nedokončený, protože czech_sort stále podporovala Python 2 a ten já už neumím.
A hlavně neumím a už ani nechci umět psát kód, který podporuje jak Python 2, tak Python 3.</p>
<p>Petr byl za PR rád a nakonec udělal <a href="https://www.youtube.com/watch?v=qEMCs3lQDIw">stream</a>, kde změny živě zpracoval a knihovnu trochu aktualizoval.
Ještě jsem to neviděl.</p>
<p>Měl jsem pak ještě jeden <a href="https://github.com/encukou/czech-sort/issues/13">dotaz</a> a poslal <a href="https://github.com/encukou/czech-sort/pull/12">jedno malé zvýraznení</a> a <a href="https://github.com/encukou/czech-sort/pull/11">jedno malé zestručnení</a> dokumentace.</p>
<p>Výsledkem je, že teď jde czech_sort použít i jako <em>custom function</em> v SQLite.
Např. v Peewee <a href="https://docs.peewee-orm.com/en/latest/peewee/database.html#sqlite-user-functions">takto</a>.</p>
<p>Až později jsem si všiml, že SQLite má i něco jako <em>custom collation</em>, což by se možná vlastně hodilo víc, ale to raději Petrovi říkat nebudu 😱
Mě to určitě stačí jako funkce, řazení mi teď funguje hezky.
Nedal jsem ho ještě všude, ale pro začátek aspoň do katalogu kurzů.</p>
<p>Vzápětí mi sletěly testy, protože moje testovací databáze tuto novou funkci neměla.
Hrál jsem si pak docela dlouho s <a href="https://docs.pytest.org/en/7.1.x/how-to/fixtures.html">pytest fixtures</a>, aby to celé začalo nějak fungovat.
Nic lepšího než <a href="https://github.com/honzajavorek/junior.guru/blob/3882b3060ca30194502e0295f55d6817d288bb2c/tests/testing_utils.py#L20">překopírování funkcí z nějakého privátního atributu</a> jsem nevymyslel.</p>
<figure class="figure"><img alt="Řadím česky!" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/252895730-887af0ae-e08d-4823-bac7-57a73ac5c38e.png"></figure>
<h2 id="data-z-uradu-prace">Data z úřadu práce<small class="permalink"><a href="#data-z-uradu-prace" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Ve volné chvilce jsem se podíval, jestli nějak půjde scrapnout <a href="http://www.jsemvkurzu.cz/">katalog kurzů úřadu práce</a>.
Nejdřív jsem napsal mail na MPSV, zda ten katalog náhodou nemá API, nebo někde není jako open data ke stažení, ale to mi přišla jen automatická odpověď, že to dorazilo na podatelnu, a kdo ví kdy a jestli dostanu odpověď i od člověka.</p>
<p>Rychlejší bylo šťourání do té webovky.
Hned jsem si všiml, že celá běží nad JSON API, které je sice česky, má dost podivnou strukturu a místy je trochu tajemné, ale celkem bez problémů se dá <em>reverse engineerovat</em>.
No a už jsem si nedokázal zabránit, nadšeně jsem to zkusil rovnou krátkým skriptíkem postahovat.</p>
<p>Do svých YAMLů k jednotlivým poskytovatelům kurzů jsem ke každému přidal IČO a podle něj spároval data.
U některých bylo docela zapeklité IČO zjistit.
Že jsou kurzy až takový divoký západ, to jsem nečekal.
Někteří poskytovatelé mají těch IČO více, protože jsou firma i neziskovka.
Zajímavé.</p>
<p>Data jsem spároval a vypsal na webu jako seznam.
Někde je dlouhý a ošklivý, někde krátký, někde není vůbec.
Hezčí zobrazení vyřeším později.
Zatím jsem z toho akorát ořezal emoji a seřadil to podle abecedy.
Emoji ořezávám tady i v pracovních inzerátech proto, že je do titulků firmy sypou jako levnou formu zvýraznění nebo jako trik, jak být první v nějakém výpisu.
Katalog úřadu práce na to imunní není, ale můj katalog na to imunní bude :)</p>
<figure class="figure"><img alt="Kurzy z úřadu práce" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-07-14-at-23-19-28-zkusenosti-s-engeto-academy.png"></figure>
<h2 id="simple-analytics-api">Simple Analytics API<small class="permalink"><a href="#simple-analytics-api" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Ve volné chvíli mě napadlo, že bych mohl přidat na <a href="https://junior.guru/open/">/open/</a> grafy s návštěvností webovek junior.guru.
Ta je veřejně na <a href="https://simpleanalytics.com/junior.guru">Simple Analytics</a>, ale já jsem chtěl udělat nějaká souhrnná čísla, např. kolik lidí chodí na všechny URL, které klasifikuju jako příručka, atd.
Prostě si to rozdělit podle „produktů“, které provozuji.</p>
<p>Taky jsem si chtěl pohrát s <a href="https://docs.simpleanalytics.com/api/stats">API od Simple Analytics</a>, protože pokud bych se v něm vyznal, mohu si stahovat i detailní čísla ke katalogu apod. a třeba je použít na řazení kurzů, nebo to reportovat firmám, které platí za zvýraznění.
A to ani nepoužívám <a href="https://docs.simpleanalytics.com/events">eventy</a>, které by tomu dodaly ještě další rozměr.</p>
<p>No a to API mě strašně příjemně překvapilo!
Je tak jednoduché, že jednodušší už to ani nejde.
Pokud má můj projekt veřejné statistiky, což má, tak jsem ani nepotřeboval žádný token, nic.
Jeden požadavek na jedno URL, jedna odpověď, <a href="https://simpleanalytics.com/junior.guru.json?version=5&fields=pageviews,visitors,pages&info=false&page=/courses/*">a je to</a>.
První pokusy jsem měl hotové snad za pět minut programování.
Byl jsem, a stále jsem, naprosto nadšený.
Neumím si představit, že bych se stejná data snažil vytahovat z API od Google Analytics.
To bych dělal snad doteď.</p>
<p>Výsledky <a href="https://junior.guru/open/#navstevnost">jsou už na webu</a> v podobě dvou grafů.
(Může se z nich zdát, že po zdražení mi přestali lidi chodit na web, ale to je jen optický klam.
Ve skutečnosti jde o to, že návštěvnost je silně sezónní a nejvíc lidí hledá jak začít s něčím novým v září a v lednu.)</p>
<figure class="figure"><img alt="Grafy návštěvnosti" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-07-14-at-23-38-56-jak-se-dari-provozovat-junior-guru.png"></figure>
<h2 id="python-komunita">Python komunita<small class="permalink"><a href="#python-komunita" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Celkem dost jsem se tento týden věnoval Python komunitě:</p>
<ul>
<li>Intenzivní čtení a odpovídání na <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slacku</a>.</li>
<li>Zavolali jsme si konečně jako výbor a probrali jsme důležité věci.
Nevíte někdo o někom, kdo dělá účetnictví spolků?</li>
<li>Přidal jsem do patičky <a href="https://pyvec.org/">pyvec.org</a> kód naší datovky.</li>
<li>Jako emeritní člen komunity jsem dostal lístek na EuroPython 2023, který se koná příští týden v Praze.
Neplánoval jsem tam jít, protože mě to o pár let minulo a co se týče Python komunity, cítím se za zenitem.
Mám rodinu, podnikání, aktivní v komunitě už tolik nejsem, nic neorganizuji, konference neobrážím, Python už nežeru moc do hloubky.
Ale asi teda přijdu.</li>
<li>Hledal jsem doma krabici se starými věcmi na stánek Python komunity.
Na EuroPythonu totiž takový stánek bude.</li>
<li>Napsal jsem na <a href="https://1password.com/">1Password</a>, jestli mají nějaké slevy na týmové tarify pro neziskovky.
Odepsali velmi svižně, slevy mají.
Možná v Pyvci využijeme.</li>
<li>A nakonec mi možná dokonce hrozí <em>last minute</em> účast v <a href="https://ep2023.europython.eu/session/python-organizers-panel-exploring-community-driven-python-conferences">tomhle panelu</a> 😱</li>
</ul>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Volal jsem si s <a href="https://junior.guru/courses/engeto/">ENGETO Academy</a>.
Domluvili jsme se na prodloužení partnerství.
Hned jsem využil nové grafy návštěvnosti na /open/ 😀
Kromě jiného budeme dál pracovat na anketě pro juniory.
Vše jsem pak <a href="https://junior.guru/open/engeto/">zaevidoval</a> a poslal fakturu.</li>
<li>Ozval jsem se po čase do <a href="https://junior.guru/courses/prahacodingschool/">Praha CODING School</a>, se kterými komunikuji už dlouho, ale nějak jim trvá rozhodování.</li>
<li>Přišla mi z ničeho nic poptávka od <a href="https://junior.guru/courses/coderslab/">Coders Lab</a> na zařazení do katalogu a zvýraznění.
Tak si budu držet palce, třeba to klapne.</li>
<li>Povídal jsem si se supportem Meetup.com a potvrdili mi, že Atom jim nefunguje, protože už ho podporovat nechtějí (ale odkazy zůstaly a jsou rozbité?) a iCalendar odkaz je záměrně za loginem.
Zeptal jsem se jich, proč je záměrně za loginem, ale nemám na to zatím odpověď.
Jelikož jako Pyvec několika skupinám proplácíme organizátorské předplatné na Meetup.com, jsem z jejich přístupu zklamaný a bude pro mě těžší takové proplácení podpořit jako člen výboru.
Možná by šlo používat <a href="https://talkbase.io/">TalkBase</a>, které doporučuje <a href="https://www.linkedin.com/in/ladislav-vasek/">Láďa Vašek</a>?
Přijde mi, že to je spíš na firemní akce, než na komunitní.
Meetup.com zná každý a je tam vyhledávání, což samo od sebe funguje na akvizici nových lidí.
I když - funguje?
Nevíme, asi neměříme.</li>
<li>Opravil jsem chybu, kdy bot v kanálu #ahoj na Discordu zdravil sám sebe 🤦♂️</li>
<li>Pro komunikaci se supportem Memberful i Meetup.com jsem použil nahrávání krátkých screencastů přes <a href="https://www.loom.com/">Loom</a> a bylo to hodně jednoduché a pohodlné.</li>
<li>Na LinkedIn se toho tento týden dělo nějak hodně.
Můj komentář <a href="https://www.linkedin.com/feed/update/urn:li:activity:7079342067864219649/?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7079342067864219649%2C7079595234296299520%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287079595234296299520%2Curn%3Ali%3Aactivity%3A7079342067864219649%29">tady</a> dostal 41 lajků, Martin Kavka dál <a href="https://www.linkedin.com/posts/newsletterista_newslettery-komunita-radyprotvahdrce-activity-7085203887996956674-aliF?utm_source=share&utm_medium=member_desktop">propagoval moje moudra</a>, já jsem <a href="https://www.linkedin.com/feed/update/urn:li:activity:7084509168178450432/">propagoval svoje moudra</a>, Vít Heřt <a href="https://www.linkedin.com/feed/update/urn%3Ali%3Aactivity%3A7082344697024655361/">pochválil junior.guru</a> a já mu to <a href="https://www.linkedin.com/feed/update/urn:li:activity:7085216795363553280/">trochu vrátil</a>, Jakub Pacanda se na mě odkázal ve <a href="https://www.linkedin.com/posts/jakubpacanda_%C4%8Derven-2023-honza-javorek-o-placen%C3%A9-komunit%C4%9B-activity-7082230059276607489-l5kg/">svém příspěvku</a>.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>.</li>
<li>Nešlo mi upgradovat stylelint na nejnovější verzi, tak jsem založil <a href="https://github.com/stylelint/stylelint/issues/7057">issue</a> s chybou a komentářem, že netuším, čím to je.
Nakonec to byl opravdu nějaký problém, který se vyřešil <a href="https://github.com/stylelint/stylelint/issues/7057#issuecomment-1627688725">novou verzí jiné knihovny</a>.
Díky tomu pak <a href="https://github.com/twbs/stylelint-config-twbs-bootstrap/pull/208#issuecomment-1627689125">mohli upgradovat stylelint i v Bootstrapu</a> 💪</li>
<li>Kdysi dávno jsem byl v kontaktu s Romea a nabízel jim, že rád klubem podpořím někoho, kdo by chtěl programovat.
Bavili jsme se o konkrétním člověku, ale nakonec to nějak nedopadlo, maturoval a neměl vůbec čas.
A teď přišel!
Po takové době.
Už je na vysoké, pamatoval si klub.
Mám radost.</li>
<li>Na Hospodářkách vyšel <a href="https://benative.hn.cz/c1-67208400-neznam-vlidnejsi-obor-nez-it-rika-byvala-ucitelka-ktere-profesni-certifikat-zmenil-karieru">článek, který zmiňuje junior.guru</a>.
Vím, že zmiňuje, protože mi to přišlo mailem v Google Alertu 😀
Abych si ho přečetl, koupil jsem si kvůli tomu za pár korun na jeden měsíc předplatné.
Ale ještě jsem to neměl čas přečíst 😀</li>
<li>Opravil jsem si vkládání obrázků do článků tady na blogu.</li>
<li>Než jsem dopsal tyto poznámky, přišla mi do mailu poptávka na <a href="https://junior.guru/pricing/">zlatý tarif</a> 😮
Nemůžu tomu uvěřit a počkám do pondělí.
Jestli to tam v pondělí pořád ještě bude a nezdá se mi to, tak zajásám a pošlu fakturu.</li>
<li>Během 8 dní jsem naběhal 9 km. Celkem jsem se hýbal 1 h a zdolal při tom 9 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Opravit metriky na <a href="https://junior.guru/open/">/open/</a> a přidat nové, abych se mohl rozhodovat, co dál.
Zdá se mi, že mi na několika frontách klesají čísla.
Chtěl bych se zamyslet nad svými prioritami a zaměřit se na to, co nejvíc pomůže zvrátit trend.
Ale k tomu potřebuju nejdřív vědět, co se přesně děje a mít na to čísla a grafy.</li>
<li>Dělat promo věcem, kterým mám dělat promo.</li>
<li>Dopracuji anketu, kterou plánujeme s ENGETO Academy.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://overcast.fm/+1O3lrq4cc">Jak na budování komunit s Láďou Vaškem (CzechCrunch) — ProgramHRování - váš HR průvodce světem IT</a><br>Hodně dobrý! Aspoň teda pro mě, „community buildera“ :) Kdo uvažujete o komunitě, nebo nějakou už máte, tak si to pusťte.</li>
<li><a href="https://twitter.com/george__mack/status/1679569846965764096?t=jBrR3garNEhlv7V3Xp-Ybg&s=19">(něco na Twitteru)</a><br>Zajímavé vlákno. Abych nesdílel jen tak „k zamyšlení“, tak mě osobně zaujalo: 👉 The gaming industry is bigger than all music, TV, and film combined. It has out-earned music and entertainment for the last 8 years. 👉 TikTok is associated with Gen-Z by the media. But YouTube is another level: One-in-five teenagers report being "almost constantly on YouTube". 👉 There's no such thing as "mainstream media" anymore. Instead, there is "legacy media" & "new media". 👉 BRICS are now 31.5% of global GDP vs the G7's 30%.</li>
<li><a href="https://zdopravy.cz/velke-promeny-parize-chodci-budou-mit-v-doprave-prioritu-zmizi-polovina-parkovacich-mist-168085/">Velké proměny Paříže. Chodci budou mít v dopravě prioritu, zmizí polovina parkovacích míst - Zdopravy.cz</a><br>Meanwhile in Paříž</li>
<li><a href="https://simonwillison.net/2023/Jul/12/llm/">The LLM CLI tool now supports self-hosted language models via plugins</a><br>Nástroj do příkazové řádky, který vám umožní stáhnout a dotazovat jakékoliv dostupné LLM. Wow!</li>
<li><a href="https://cestavlakem.cz/kam-se-v-lete-2023-vydat-vlakem/">Kam se v létě 2023 vydat vlakem?</a><br>Tipy na cesty vlakem po Evropě. Když se připočítá čekání na letišti a cesta na a z letiště, zatímco vlaky jezdí často přímo do center měst, začíná to být skoro konkurenceschopné. Navíc se v nočním vlaku člověk prý i vyspí (vodorovně) a někdy i osprchuje. Zaujalo i toto: „Z La Spezia se dá navíc pohodlně dostat do Pisy i zbytku Toskánska a jezdí odsud i noční vlak až na Sicílii (specialitou je překonání moře přívozem, který naloží celý vlak!).“</li>
<li><a href="https://rosie.land/posts/the-town-hall-analogy/?ref=rosieland-newsletter&attribution_id=649dc3f2f3b26b000154f0d6&attribution_type=post">🌈 The Town Hall Analogy</a><br>Poučné, i pro JG: „Most people don't actually want to participate in Town Halls. They want to be served or make progress in their life. Find a job. Sign up to an event. Meet and connect with people. To see progress. To find ways to rally, support and contribute along the way. And to see problems solved. They are there because they are invested in the ecosystem and care about the space the community exists in.“</li>
<li><a href="https://www.quora.com/How-bad-is-it-to-live-in-Czechia/answer/J-S-7793?ch=15&oid=320904751&share=d4e1f94b&srid=76F0&target_type=answer">How bad is it to live in Czechia?</a><br>Zajímavá odpověď na otázku „How bad is it to live in Czechia?“</li>
<li><a href="https://stianstian.medium.com/the-tyranny-of-malcolms-259f3e01f17a">The Tyranny of Malcolms</a><br>„Let’s say the author has written a chapter arguing that that rivals make the best teams. Often nowadays they will begin the chapter with a long story about John Lennon getting in an argument with Paul McCartney, before recording a classic Beatles album, or about two rival basketball teammates, or whatever.“</li>
</ul></div></div></div></div>Týdenní poznámky: Sám doma2023-07-07T00:00:00+02:002023-07-07T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-07-07:/blog/tydenni-poznamky-sam-doma/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-smrst-v-klubu-a-programovani-lepsiho-tydenniho-shrnuti/">posledních poznámek</a> už utekl nějaký ten týden (30. 6. až 7. 7.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-smrst-v-klubu-a-programovani-lepsiho-tydenniho-shrnuti/">posledních poznámek</a> už utekl nějaký ten týden (30. 6. až 7. 7.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<p>Dohodli jsme se, že rodina pojede k babičce a já budu týden kralovat sám doma v Praze.
Jednak se mi nechtělo zase někam jezdit, jednak jsme si takhle všichni od všeho odpočinuli a mohli si nadělit nevšední zážitky, nebo fungovat bez toho, abychom se museli na něčem domlouvat.</p>
<p>Vůbec jsem si nevšiml, že mají být zrovna nějaké svátky, takže mě překvapilo, jak málo lidí bylo v Praze a kolik toho bylo zavřeného.
Nemohl jsem tedy skoro nic zařídit z věcí doma, na které jsem měl zrovna čas.
Nakonec jsem si namíchal nějaký snad rozumný mix povinností, zábavy a práce.
Co jsem dělal ve volném čase?</p>
<ul>
<li>Uklizení celého bytu (s podcasty v uších je zábava i mytí záchodu),</li>
<li>pivo s kamarádem, kterého jsem neviděl tak dekádu,</li>
<li>návštěva <a href="https://kinoaero.cz/">nejlepšího kina</a>: <a href="https://www.csfd.cz/film/1069519-asteroid-city/">Asteroid City</a>,</li>
<li>cyklovýlet s kamarádem z Ústí do Mělníka (Středohoří ani Kokořínsko prakticky neznám, takže poprvé),</li>
<li>druhá návštěva <a href="https://kinoaero.cz/">nejlepšího kina</a>: <a href="https://www.csfd.cz/film/18204-kralovstvi-ohne/prehled/">„slepá ulička Holywoodských blockbusterů“ naslepo</a>,</li>
<li>cyklovýlet s kamarádem, oklikou k bráchovi na zahradu, následně sběr úrody</li>
<li>sledování filmu: <a href="https://www.csfd.cz/film/811314-rozkos/prehled/">Pleasure</a>,</li>
<li>hraní si se Stable Diffusion,</li>
<li>oběd s kamarádkou s miminem,</li>
<li>sledování F1 v Rakousku.</li>
</ul>
<p>Včera jsem nasedl na vlak a už jsme zase celá rodinka pohromadě.</p>
<figure class="figure"><img alt="Aero" src="https://honzajavorek.cz/images/img-4418.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Aero</figcaption></figure>
<figure class="figure"><img alt="Úštěk" src="https://honzajavorek.cz/images/img-4380.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Úštěk</figcaption></figure>
<figure class="figure"><img alt="Kokořín" src="https://honzajavorek.cz/images/img-4395.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Kokořín</figcaption></figure>
<h2 id="irl-srazy-v-klubu">IRL srazy v klubu<small class="permalink"><a href="#irl-srazy-v-klubu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Povedlo se mi nakonec hacknout meetup.com.
Kód, který se tam přihlašoval a stahoval iCalendar, jsem musel smazat, protože nefungoval na CI.
Meetup.com zdetekoval, že se přihlašuji z nějaké podezřelé IP adresy a poslal mi na mail 2FA kód, který jsem měl zadat, což znemožnilo jednoduchou automatizaci.</p>
<p>Napadlo mě však, že i <em>walled garden</em> potřebuje být na Googlu a že možná na webu používají mikroformáty ze <a href="https://schema.org/">schema.org</a>.
A taky že jo.
Pustil jsem na jejich HTML <a href="https://github.com/scrapinghub/extruct/">extruct</a> a bylo to, měl jsem veškerá data o plánovaných událostech.
Stačilo to jen nějak sloučit s iCalendar exportem z <a href="https://pyvo.cz/">pyvo.cz</a> a zpracovat.</p>
<p>Během pár hodin už jsem pro každý budoucí sraz zakládal událost na Discordu.
Nakreslil jsem k nim i obrázky.
Bot by je mohl přímo generovat, ale řekl jsem si, že rychlejší bude, když ručně udělám tři obrázky pro tři typy srazů.
Namastil jsem to v <a href="http://canva.com/">Canva</a>.</p>
<p>Při programování jsem narazil na nějaké nesrovnalosti v pycordu, tak jsem založil <a href="https://github.com/Pycord-Development/pycord/issues/2160">#2160</a> a <a href="https://github.com/Pycord-Development/pycord/issues/2161">#2161</a>.
Dokonce se mi po několika dnech ozvali i ze supportu meetup.com, že mi rádi pomohou, ale vůbec netuší, která bije, tak jestli jim můžu nahrát video.
K tomu jsem se ještě nedostal, ale udělám to.
Pokud je to bug a oni vůbec nevědí, že jim několik měsíců nefungují iCalendar exporty, tak to by mě dost pobavilo.</p>
<figure class="figure"><img alt="Události na Discordu" src="https://honzajavorek.cz/images/screenshot-2023-07-07-at-12-39-43.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Dovedu si představit, že by se to dalo dál vylepšovat, ale pro začátek to bude takhle stačit</figcaption></figure>
<h2 id="optimalizace-buildu-webu">Optimalizace buildu webu<small class="permalink"><a href="#optimalizace-buildu-webu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Jedna z nejpomalejších věcí při buildu webu bylo generování <a href="https://junior.guru/open/">stránky s grafy</a>, protože se tam dělá spousta dotazů do databáze a spousta výpočtů.
Napadlo mě, že bych to mohl přesunout do synchronizační fáze, tzn. že by se to jednou předpočítalo, uložilo do databáze a při buildu webu už by se to jen vypsalo.
To urychlí především lokální vývoj, kdy každou chvilku reloaduji web.</p>
<p>No tak jsem to takhle udělal.
Chvíli mi trvalo to správně navrhnout, ale myslím, že výsledek je i flexibilnější a přehlednější, než jak to bylo předtím.</p>
<p>Přidal jsem i nový graf, <a href="https://junior.guru/open/#podil-zen-mezi-hosty-podcastu">podíl žen mezi hosty podcastu</a> (45-55 %, hezký!).</p>
<h2 id="obnova-ztracenych-statistik">Obnova ztracených statistik<small class="permalink"><a href="#obnova-ztracenych-statistik" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Nedávno jsem si omylem na Memberful smazal nějaká stará data a připravil jsem se tím o historii spousty produktových grafů, které se týkají členství.
To je dost průšvih.
V Memberful API je ještě něco, co se jmenuje <em>activity log</em>, tak jsem si myslel, že bych některá čísla mohl obnovit z toho.</p>
<p>Jenže v API je toho méně, než co jde vidět v <em>activity logu</em> na webu v Memberful.
Zjistím asi jen příchody a odchody lidí, ale už ne co měli za tarif nebo za kupón, bohužel.</p>
<p>Takže je otázka, jestli se mi bude chtít programovat nějakou netriviální záležitost jen kvůli polovině grafů.
A ještě bych musel vymyslet, jak ta čísla spojit dohromady s tím, co mám za poslední měsíce.
Udělal jsem <em>proof of concept</em>, ale nejsem si jistý, co dál, jestli to vlastně dotáhnu.</p>
<p>Stažení dat do databáze bylo celkem jednoduché, ale pak jsem je potřeboval nějak normalizovat, aby tam nebyly duplicity.
Vůbec jsem nevěděl jak na to, ale ChatGPT mi to celé vymyslelo!
Můj dotaz zněl takhle:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>I have a database table with column "user_id" typed as number, "happening_on" typed as date, and column "activity_type", which can have only two values: begin, end.</p>
<p>The data represents activity log. It can happen that some actions in the system result in multiple activities of the same type happening one after another. Example:</p>
<p>user_id: 1, happening_on: 01-07-2022, activity_type: begin
user_id: 1, happening_on: 04-07-2022, activity_type: end
user_id: 1, happening_on: 10-07-2022, activity_type: end
user_id: 1, happening_on: 11-07-2022, activity_type: end
user_id: 1, happening_on: 12-07-2022, activity_type: begin
user_id: 1, happening_on: 12-07-2022, activity_type: begin
user_id: 1, happening_on: 13-07-2022, activity_type: begin</p>
<p>What would you suggest me to do with the data so that I normalize the records and get rid of duplicate activites? Let's say I'd want to keep always only the first one of the same type happening for each user:</p>
<p>user_id: 1, happening_on: 01-07-2022, activity_type: begin
user_id: 1, happening_on: 04-07-2022, activity_type: end
user_id: 1, happening_on: 12-07-2022, activity_type: begin</p>
</blockquote>
</figure><p>Vyplivlo to SQL, které používalo nějaké poddotazy a věci, které ani neumím používat.
Tak jsem se rovnou zeptal, jestli mi to nemůže napsat v syntaxi Peewee.
A chtěl jsem to bez nějaké další tabulky, tak mi to zase přepsal.
A nakonec jsme se dobrali ke kódu, který po překopírování prakticky hned fungoval.</p>
<pre class="highlight"><code><span></span><code><span class="n">subquery</span> <span class="o">=</span> <span class="p">(</span>
<span class="n">ActivityLog</span>
<span class="o">.</span><span class="n">select</span><span class="p">(</span>
<span class="n">ActivityLog</span><span class="o">.</span><span class="n">id</span><span class="p">,</span>
<span class="n">fn</span><span class="o">.</span><span class="n">ROW_NUMBER</span><span class="p">()</span><span class="o">.</span><span class="n">over</span><span class="p">(</span>
<span class="n">partition_by</span><span class="o">=</span><span class="p">[</span><span class="n">ActivityLog</span><span class="o">.</span><span class="n">user_id</span><span class="p">,</span> <span class="n">ActivityLog</span><span class="o">.</span><span class="n">activity_type</span><span class="p">],</span>
<span class="n">order_by</span><span class="o">=</span><span class="p">[</span><span class="n">ActivityLog</span><span class="o">.</span><span class="n">happening_on</span><span class="p">]</span>
<span class="p">)</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="s1">'row_num'</span><span class="p">)</span>
<span class="p">)</span>
<span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">ActivityLog</span><span class="p">)</span>
<span class="o">.</span><span class="n">cte</span><span class="p">(</span><span class="s1">'subquery'</span><span class="p">)</span>
<span class="p">)</span>
<span class="n">duplicate_ids</span> <span class="o">=</span> <span class="p">(</span>
<span class="n">ActivityLog</span>
<span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">subquery</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">id</span><span class="p">)</span>
<span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">subquery</span><span class="p">)</span>
<span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">subquery</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">row_num</span> <span class="o">></span> <span class="mi">1</span><span class="p">)</span>
<span class="p">)</span>
<span class="n">ActivityLog</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">ActivityLog</span><span class="o">.</span><span class="n">id</span><span class="o">.</span><span class="n">in_</span><span class="p">(</span><span class="n">duplicate_ids</span><span class="p">))</span><span class="o">.</span><span class="n">execute</span><span class="p">()</span>
</code></code></pre>
<p>Když si to čtu, tak tuším, co se tam děje a proč to funguje, ale v životě bych takovou šílenost sám nenapsal, ani v SQL, natož v Peewee.
Ušetřilo mi to hromadu práce.
Pokud to teda funguje!
Musím si na to ještě napsat testy.</p>
<h2 id="optimalizace-obrazku">Optimalizace obrázků<small class="permalink"><a href="#optimalizace-obrazku" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Noční CI workflow, které formátuje kód a pushuje zpátky na GitHub, jsem přejmenoval z <code>format</code> na <code>tidyup</code> a doplnil jej o další věci.
Teď to umí zmenšit avatary na 500x500 px, pokud jsou větší, a optimalizovat trochu jejich JPG kompresi.
A taky to umí optimalizovat SVG.
Tyto věci se tedy dějí jednou za den a změny se commitnou zpět do gitu, takže na to sám nemusím nijak zvlášť myslet.</p>
<p>Generované obrázky (plakátky k podcastu, přednáškám…) se nově přenášejí z buildu na build přes CircleCI cache.
To znamená, že stejný obrázek se nebude generovat znova a znova a šetří se čas.
Ale taky to znamená, že starý, nepotřebný obrázek, by tam zůstal navěky.
Tak jsem doplnil věc, která sleduje, které generované obrázky jsou opravdu potřeba a staré nepotřebné smaže.</p>
<p>Tímto jsem prozatím ukončil svoje přebudovávání toho, jak na junior.guru funguje build frontendu.
Zabralo to víc času, než jsem myslel, ale s výsledkem jsem celkem spokojen.
Vyřešil jsem spoustu malých otravných problémů a celé jsem to dost zrychlil, což by mělo i podpořit mou chuť na frontendu něco dělat.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Vyšly se mnou <a href="https://www.newslettery.cz/p/cerven-2023">Newslettery.cz</a>!</li>
<li>Doladil jsem slučování dat na CI, které se dělá po paralelizaci skriptů.
Došlo mi, že nechci slučovat soubory se staženými nabídkami práce, protože pokud už se ten den stáhly, tak se vůbec nemají stahovat znova.
Velmi to zjednodušilo kód, spoustu věcí jsem smazal.</li>
<li>Dal jsem si záležet, abych byl tentokrát ve správný čas na správném místě, ale stejně se nám nepovedlo jako výbor Pyvce sejít.
Začínám to vnímat jako větší a větší problém, tohle musíme nějak vyřešit.</li>
<li>Udělal jsem upgrade na <a href="https://blog.getbootstrap.com/2023/05/30/bootstrap-5-3-0/">nový Bootstrap</a>, který umí <em>dark mode</em>.
Akorát na junior.guru teda ještě <em>dark mode</em> nebude, to budu muset celé ještě prozkoumat, přečíst si <a href="https://www.vzhurudolu.cz/prirucka/dark-mode">Michálka</a>, atd.</li>
<li>Pročistil jsem si jeden sloupec v Trellu a vyházel kartičky, které jsou už nerelevantní, nebo hotové.</li>
<li>Předělal jsem na Discordu kanál na hádanky a šifry z textového na forum.
<a href="https://milavotradovec.cz/">Míla</a> ho chce propojit s <a href="https://sifrovacky.cz/">Šifrovačkami</a>.</li>
<li>Call s ENGETO Academy. Kecali jsme nějak dlouho, tak jsme si dali ještě druhý na příští týden.
Odpadla nám kamarádka na dotazník a my asi vzdáme to, aby to viděl nějaký odborník.
Už teď na tom děláme někdy od listopadu a furt to není venku, přitom jak já, tak ENGETO preferujeme spíš způsob „zkusit, poučit se, zkusit znova“ a ne něco rok ladit.</li>
<li>ENGETO bude hledat seniorního vývojáře, tak jsem jim mrknul na inzerát.
Měl jsem k tomu spoustu připomínek a komentářů, tak snad jsem to moc nerozcupoval na kousky.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>.</li>
<li>Během 8 dní jsem ujel na kole 143 km. Celkem jsem se hýbal 18 h a zdolal při tom 143 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Pod každou stránkou příručky bude „komentářová sekce“, ve skutečnosti reklama na klub.</li>
<li>Dělat promo věcem, kterým mám dělat promo.</li>
<li>Rozhodnout se co s těmi ztracenými metrikami na <a href="https://junior.guru/open/">/open/</a>.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://randsinrepose.com/archives/your-people/">Your People</a><br>Proč se vyplatí mít „svoje lidi“? Zajímavý postřeh od Randse.</li>
<li><a href="https://www.youtube.com/watch?v=PhS2qoEOjJk">edu.digital - 7 důvodů, proč státní IT nefunguje (záznam)</a><br>Super vhled od Jakuba Onderky do toho, proč nefunguje IT ve státní správě. Je to delší, ale pustil jsem si to k vaření oběda a šlo to. Akorát to trochu zkazilo chuť 😅</li>
<li><a href="https://www.newslettery.cz/p/cerven-2023">Červen 2023: Honza Javorek o placené komunitě</a><br>:)</li>
</ul></div></div></div></div>Týdenní poznámky: Smršť v klubu a programování lepšího týdenního shrnutí2023-06-30T00:00:00+02:002023-06-30T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-06-30:/blog/tydenni-poznamky-smrst-v-klubu-a-programovani-lepsiho-tydenniho-shrnuti/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-optimalizace-obrazku-a-jamiroquai/">posledních poznámek</a> už utekl nějaký ten týden (23. 6. až 30. 6.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-optimalizace-obrazku-a-jamiroquai/">posledních poznámek</a> už utekl nějaký ten týden (23. 6. až 30. 6.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="smrst-v-klubu">Smršť v klubu<small class="permalink"><a href="#smrst-v-klubu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Chtěl jsem konečně najet na režim, kdy ráno vstanu na budík, dám si rychlou snídani, odejdu do kanceláře a pracuju.
Tak jsem vstal na budík, ale najednou vidím, že mi píše moderátor, že se v klubu něco děje.
Tak to nějak řeším a stojím doma s mobilem jak trubka, snídám v deset, do kanceláře jdu kdo ví kdy.
No nic.</p>
<p>V klubu se zvrhla nějaká původně nevinná diskuze, protože se někomu nelíbilo, že mu opravili překlep, a někomu dalšímu se pak nelíbilo, že ten první člověk po sobě smazal všechny příspěvky.
Vyjádřil to trochu zpruzeně a to se zase nelíbilo některým moderátorům (třeba mně), tak jsme ho začali mírnit.
To vyústilo ve velkou diskuzi, zda by měli moderátoři lidem chodit za zadkem, zda to neodrazuje přispívání do klubu, zda a jak dosáhnout <em><a href="https://en.wikipedia.org/wiki/Psychological_safety">psychological safety</a></em>, apod.
Jak by řekli Cimrmani, „udělal si klub a chodili mu tam lidi“.</p>
<p>Řešili jsme to celý den a ještě i kousek dalšího dne.
Já v tom nějaké velké emoce nemám, byť mě to místy už moc nebavilo a trochu mě mrzelo, že jsem měl konečně čas něco pro klub udělat, ale místo toho jsem se tam motal v těchto diskuzích.</p>
<p>Ten člověk, kterému opravili překlep, se rozhodl z klubu odejít.
Nabídl jsem mu vrácení peněz, ale odmítl to.
Moderování v klubu jsme nějak probrali a mám z toho <em>takeaways</em> ohledně toho, jak chceme k podobným situacím do budoucna přistupovat.</p>
<figure class="figure"><img alt="This is fine" src="https://honzajavorek.cz/images/this-is-fine-meme-218964059.jpg" class="img-fluid figure-img rounded"></figure>
<h2 id="zmeny-v-klubu">Změny v klubu<small class="permalink"><a href="#zmeny-v-klubu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Řekl jsem si, že klub by si po delší době zasloužil nějakou lásku a šel jsem vymetat pavučiny a přesunovat regály.</p>
<ul>
<li>Poladil jsem <a href="https://support.discord.com/hc/en-us/articles/10394859532823">Discordí onborading</a> do klubu a tzv. <em>Server Guide</em>.
Zajímavá funkce.
Měl jsem tam jeden zásek, kdy jsem dokonce napsal na support, ale nakonec se mi to povedlo opravit samotnému.</li>
<li>Zrušil jsem zprávu, která v uvítacích vláknech vybízela k networkingu formou hry: „Napiš o sobě tři krátké věty. Dvě pravdy a jednu lež. Ostatní můžou hádat, co z toho není pravda 😎“
Nefungovalo to, nikdo na to nereagoval.
Když to napíše bot, asi to působí neosobně.</li>
<li>Místo toho jsem přidal zmínku o tom, že lidi mohou své představení dodatečně upravit nebo rozšířit přes editaci příspěvku.</li>
<li>Bot v klubu zdraví sám sebe.
Opravil jsem to, akorát že vůbec.
Zjevně mi někde něco uniká.</li>
<li>Vytvořil jsem speciální kanál na týdenní plánování.
Ještě chci automatizovat zakládání nových vláken každé pondělí.
Udělal jsem i dobrovolnou roli pro lidi, kteří se chtějí tohoto rituálu účastnit.
Rituál zavedl jeden z aktivních moderátorů a nejdřív to celé dělal ručně v rámci existujících kanálů.
Celkem se to osvědčilo, tak pracuji na tom, abych to institucionalizoval.
Super, že něco takového vzniklo odspoda!</li>
<li>Kanál na CVčka a na výrobky jsem konečně převedl na typ „fórum“.
Do budoucna si dovedu představit je ještě vylepšit pomocí drobné automatizace.</li>
</ul>
<h2 id="lepsi-tydenni-shrnuti">Lepší týdenní shrnutí<small class="permalink"><a href="#lepsi-tydenni-shrnuti" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Bot každý týden do klubu posílá shrnutí, kde jsou nejlepší příspěvky za poslední týden.
Jednak jsem v něm chtěl udělat pár drobných úprav, jednak jsem tam chtěl přidat i kanály, kde se nejvíc diskutovalo.
Přijde mi totiž, že některé zajímavé diskuze ve vláknech prostě pro spoustu lidí zapadnou.</p>
<figure class="figure"><img alt="Týdenní přehled" src="https://honzajavorek.cz/images/screenshot-2023-06-30-at-20-02-19.png" class="img-fluid figure-img rounded"></figure>
<p>Data mám v databázi, takže šlo jen o to je správně dostat ven přes Peewee, otestovat to, nějak to zobrazit na Discordu.
Nebere se v úvahu kolik se napsalo příspěvků, ale kolik se celkem napsalo písmenek.</p>
<p>Když jsem se snažil přehled zobrazit, přišlo mi, že je to takové prázdné a přemýšlel jsem, jakou informaci tam ještě dát.
Počet znaků mi nepřišel užitečný, ale pak mě napadlo odhadnout tam dobu čtení.
Jenže všechny vzorce na dobu čtení se počítají ze slov a já mám v databázi jen počet znaků.
Všiml jsem si ale, že <a href="https://cs.wikipedia.org/wiki/Normostrana">normostrana</a> má údaj kolik je to přibližně slov.
Díky tomu jsem dokázal vypočítat přibližnou dobu čtení i z počtu znaků.</p>
<p>V přehledu nej zpráv se zobrazuje i kousek z textu každé zprávy.
Jedno z malých neviditelných vylepšení, které jsem udělal, bylo očištění tohoto textu.
To se doteď nedělo, takže pokud tam bylo nějaké formátování nebo nové řádky, do shrnutí se to projevilo.</p>
<p>Pojal jsem to tak, že jsem text příspěvku protáhl přes Markdown parser, tím jsem dostal HTML, a toto HTML jsem zbavil tagů.
Očištění o tagy není úplně triviální záležitost, když člověk chce podchytit všechny chytáky, ale měl jsem na to už hotovou funkci z dob, kdy jsem dělal bota na pracovní nabídky.
Zjistil jsem však, že tato funkce nefunguje a plodí nesmysly.
Pak jsem zjistil, že ta funkce nemá testy.
A když jsem ji opravil, tak jsem zjistil, že najednou bot do Discordu nasypal asi 10 nových pracovních nabídek 😱
Raději nechci vědět, jak dlouho to bylo rozbité a jestli kvůli tomu bot náhodou nezahazoval hromady použitelných nabídek práce…</p>
<p>Pozitivní je, že jak čas čtení, tak opravu funkce na očištění HTML tagů jsem měl docela rychle díky tomu, že jsem se podobnými věcmi zabýval už tady na blogu.
Potěší, že jsem znovupoužil něco, co jsem myslel, že dělám jen pro radost a nikdy žádný větší užitek mít nebude.</p>
<p>Jo a taky jsem zjistil, že bot při vyhodnocování „karmy“ jednotlivých příspěvků nepočítal emoji 💪 jako pozitivní reakci, přičemž tato je jedna z nejpoužívanějších v klubu.
Nevím, jak mi to mohlo uniknout.
Docela to pak zamíchalo s pořadím týdenního přehledu a kdo ví, možná i s karmou různých lidí v klubu…</p>
<figure class="figure"><img alt="This is fine" src="https://honzajavorek.cz/images/this-is-fine-meme-218964059.jpg" class="img-fluid figure-img rounded"></figure>
<h2 id="pokusy-o-naladovani-irl-srazu-do-klubu">Pokusy o naládování IRL srazů do klubu<small class="permalink"><a href="#pokusy-o-naladovani-irl-srazu-do-klubu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Mám v plánu, že by bot sledoval srazy vybraných komunit a zakládal pro ně v klubu Discord eventy, aby si jich členové všimli.
Taky pak půjde vidět, kolik lidí z klubu se tam chystá.
Za junior.guru neplánuju dělat žádné IRL akce, chci aby se junioři mísili s ostatními na již existujících srazech.
A aby se tam potkávali ti lidi z klubu, kteří mohou a chtějí.</p>
<p>Zdánlivě jednoduchý plán.
Prostě nasosám iCalendar exporty z meetup.com a pyvo.cz, nějak to v Pythonu přechroustám a vytvořím příslušné akce.</p>
<p>Jenže z meetup.com se, zatímco jsem pár let nedával pozor, stala <em>walled garden</em>!
Jako ze všeho na dnešním internetu.
Už mě to fakt štve.</p>
<p><a href="https://wordpress.org/support/topic/trouble-with-meetup-calendars-please-read/">Tady to pěkně popsal</a> autor nějakého WordPress pluginu.
Odkazy na iCalendar existují, ale nefungují.
Tedy fungují, ale jen pro přihlášeného uživatele, což je ale úplně k ničemu, protože s tím si žádný software na kalendáře neporadí.
Odkazy na RSS nebo Atom pro jistotu nefungují vůbec.</p>
<p>Našel jsem, že <a href="https://www.meetup.com/api/">meetup.com má API</a>.
Pohled do dokumentace na nějaké šílené <a href="https://www.meetup.com/api/authentication/#p04-jwt-flow-section">JWT Flow</a> mě sice vyděsil, ale říkal jsem si, že by mi s tím snad nějak ChatGPT pomohlo a že bych měl být především rád, že to jde vůbec použít bez interakce s uživatelem.
To bývá velký problém u všech API založených na OAuth a znemožňuje to jejich použití v samostatně běžících skriptech.
Jelikož tvořím jen samostatně běžící skripty, taková API nenávidím.</p>
<p>Nuže jal jsem se založit si tam appku, přes kterou dostanu přístupy atd. a kroutil jsem hlavou, že prostě nemůžu použít normálně ten iCalendar a musím se trápit s nějakým API.
Ale po založení appky se u ní objevilo <em>pending</em> a musel jsem čekat.
A druhý den mi přišlo mailem, že to zamítli, protože si nejdřív mám platit meetup.com přes nějaké jejich Meetup Pro!
No tak to se už úplně po…</p>
<p>Tolik práce a přitom taková blbost!
Nechť všechny <em>walled gardens</em> dnešního internetu shoří v pekle!</p>
<p>Vytáhl jsem tedy <a href="https://playwright.dev/python/">Playwright</a> a napsal jsem pár řádků, které se přihlásí do meetup.com a stáhnou ten iCalendar.
Dalo mi zabrat udělat to stahování, ale povedlo se.
Udělal jsem si na to separátní účet, aby mi případně nezablokovali můj.
To taky nebylo hned, nebyli mi schopni ani doručit ověřovací e-mail.
Povedlo se mi založit nový účet až napotřetí, s e-mailem na doméně @centrum.cz.</p>
<p>Nakonec se mi povedlo opravdu vytvořit skript, který se přihlásí na meetup.com a stáhne dva iCalendar soubory s exportem událostí pro Frontendisty a React Girls srazy.
Když mi to fungovalo, ještě párkrát jsem to pustil a stránka s iCalendar exportem začala vracet HTTP 500, chyba serveru.
V tu chvíli jsem to vzdal a uvidím, jak a kdy budu v tomto úkolu pokračovat.</p>
<figure class="figure"><img alt="This is fine" src="https://honzajavorek.cz/images/this-is-fine-meme-218964059.jpg" class="img-fluid figure-img rounded"></figure>
<h2 id="optimalizace-buildu">Optimalizace buildu<small class="permalink"><a href="#optimalizace-buildu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Opravil jsem fungování cache na CircleCI.
Ještě to má nějaké mouchy, ale najednou mi začaly fungovat věci, které byly dlouho rozbité a nevěděl jsem proč.
Řešení bylo prohodit tři řádky v YAMLu.</li>
<li>Protože začala fungovat cache, zjistil jsem, že potřebuji mergovat různé verze různých souborů.
Soubory ze <code>.scrapy</code> cache jsem se rozhodl nějak neřešit.
Soubory s daty scraperů nabídek práce bych ale i celkem řešil.
Naprogramoval jsem slučování <code>.jsonl.gz</code> souborů, ale je to pomalé a ještě to ladím.
A možná bych to taky mohl přeskočit, ještě to musím promyslet, zda nedělám zas nějaké zbytečné věci.</li>
<li>Opravil jsem cesty k <code>og:image</code> obrázkům a ověřil, že to jede.</li>
<li>Dal jsem formátování kódu do separátního plánovaného buildu, který se spustí jednou denně v noci.
Předtím to bylo po každém <code>git push</code> a to bylo otravné.
Navíc vznikaly konflikty, pokud tentýž build chtěl formátovat kód a zároveň zapsat nějaká data v souborech zpět do gitu.</li>
<li>Mentální poznámka: Až budu zas někdy řešit optimalizaci PNG, měl bych použít jak pngquant, tak oxipng.
Podle <a href="https://github.com/kornelski/pngquant/issues/386#issuecomment-952899561">komentáře autora pngquant</a> dělá totiž každý něco jiného.</li>
</ul>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>.
Konečně jsem prošel většinu nahromaděných restů a shodil ze sebe stres z toho, jak věci celý červen akorát hrnu před sebou.</li>
<li>Zašel jsem si do kina na <a href="https://www.seznamzpravy.cz/clanek/kultura-reziser-z-instagramu-filmy-wese-andersona-jsou-chytrejsi-nez-se-zda-232961">Asteroid City</a>.
Do <a href="https://www.kinoaero.cz/">nejlepšího kina</a>.</li>
<li>
<p>Na správu účtů používám Memberful.
Tam je super funkce referalů, tzn. slev pro lidi, kteří doporučí další lidi.
Jenže doteď to nešlo použít dohromady s kupóny, které používám fakt hodně.
A odteď už to prý jde!</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Member referrals is one of the most effective ways to grow your membership business. With this latest update, your members can enjoy the perks of both referral-earned discounts and promotional coupons at the same time!</p>
</blockquote>
</figure><p>Takže jsem si udělal poznámku, že bych mohl nějaký referal program zavést.</p>
</li>
<li>
<p>Četl jsem si, <a href="https://www.entrepreneur.com/science-technology/linkedin-changed-its-algorithms-heres-how-your-posts/454728">jak LinkedIn změnil algoritmus</a>.</p>
</li>
<li>Zkusil jsem přes <a href="https://github.com/IsaacMarovitz/Whisky">Whisky</a> nainstalovat <a href="https://en.wikipedia.org/wiki/Original_War">Original War</a>, ale nešlo mi to.
Zkusím to ještě znovu, až budu mít někdy zase čas.</li>
<li>Dělal jsem review jednomu textu, který má vyjít na základě rozhovoru se mnou.</li>
<li>Prošel jsem si sloupec v Trellu s různými úkoly a pročistil jej.
Smazal jsem věci, které už nejsou relevantní, nebo jsou dávno hotové.</li>
<li>Zablokoval jsem v botovi další firmu, která spamuje LinkedIn pozicemi každý den opakovaně otevíranými a rušenými.</li>
<li>Zaplatil jsem poprvé nájem za kancelář a upravil jsem svoje skripty, aby tyto platby uměly rozpoznat a v grafech obarvit odlišeně.</li>
<li>Četl jsem si, jak Discord maká na <a href="https://discord.com/blog/server-subscriptions-updates-media-channels-tier-templates-and-more">server subscriptions</a> a je to hustý.
Jestli tohle dotáhnou, udělají velkou čáru přes rozpočet všem patreonům, herohero, pickey, apod.
Je to teda zatím jen pro USA, pokud vím.</li>
<li>Tinuki dotáhl stříhání záznamu přednášky s Nelou a máme z toho <a href="https://youtu.be/FIijszEVQHY">toto veřejné video</a>.</li>
<li>Domluvil jsem na pondělí call s ENGETO Academy, kterým bude končit partnerství.
Navíc nám vypadla kamarádka, která nám měla pomoci s dotažením ankety mezi juniory, tak to budeme muset nějak vyřešit.</li>
<li>Během 8 dní jsem ujel na kole 17 km. Celkem jsem se hýbal 4 h a zdolal při tom 17 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Naprogramovat ještě nějaká vylepšení pro klubového bota.</li>
<li>Opravit <a href="https://junior.guru/open/">/open/</a>, pokud to nějak půjde.</li>
<li>Nějak uzavřít překopávání toho, jak se buildí frontend junior.guru.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://podcasters.spotify.com/pod/show/pickey/episodes/Jak-zmknout-novou-dovednost-e25sdvf">Jak zmáknout novou dovednost — TVŮRCAST</a><br>Sice pro tvůrce, ale jsou tam dobré tipy vlastně pro kohokoliv, kdo se učí něco nového: „Bez toho, abyste si na zahrádce ušpinili ruce nikdy nic nevypěstujete!“</li>
<li><a href="https://www.mediar.cz/konecne-vydali-pravdu-o-dezinformacich/">Konečně vydali pravdu o dezinformacích</a><br>„Západ a Východ, demokracie a autoritářství, budoucnost a minulost, rozum a emoce, my a oni – ospravedlní jakékoliv prostředky, současně celý problém dezinformací i jednoduše vysvětlí. Příběh Česka, kterému hrozí únos ze Západu, všichni známe. Někteří politici i novináři skrze něj vysvětlují téměř každé volby. V delikátních otázkách pravdy a faktů převládl přístup, ve kterém bojuje dobro a zlo. Práce Alexandry Alvarové, Evropských hodnot či Českých elfů má ovšem velké slabiny.“</li>
<li><a href="https://askhistorians.libsyn.com/askhistorians-podcast-episode-208-pirates-and-public-history-with-rebecca-simon">AskHistorians Podcast Episode 208 - Pirates and Public History with Rebecca Simon — The AskHistorians Podcast</a><br>Máte rádi piráty? Pásky přes oči, zakopané poklady, papoušci na rameni, černé vlajky? A víte, jak to bylo doopravdy? A proč máme vlastně piráty dneska rádi?</li>
</ul></div></div></div></div>Týdenní poznámky: Optimalizace obrázků a Jamiroquai2023-06-23T00:00:00+02:002023-06-23T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-06-23:/blog/tydenni-poznamky-optimalizace-obrazku-a-jamiroquai/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-strakovka-podcast-inboxy/">posledních poznámek</a> už utekl nějaký ten týden (16. 6. až 23. 6.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-strakovka-podcast-inboxy/">posledních poznámek</a> už utekl nějaký ten týden (16. 6. až 23. 6.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<p>O víkendu jsem byl s kamarády na chatě a vším, co jsem tam dělal, ať už to bylo požívání, běh, či tanec, jsem se zničil natolik, že jsem se z toho dostával až do úterního večera.
Sešlo se to navíc s tím, že dceři rostly zuby, takže jsem nemohl nic v noci dospat a byla to úplná krize.</p>
<p>Do toho různí doktoři a jiné pochůzky.
V pondělí jsem šel na první návštěvu k psychiatrovi kvůli diagnostice ADHD.
Byl to fajn pokec, ale ještě budeme mít několik sezení, než vydá verdikt.</p>
<p>Ve čtvrtek jsme šli se ženou na Metronome festival.
Cílem bylo sejít se s kamarády z Brna a vidět Jamiroquai, ale stihli jsme i Auroru a trochu Aiko.
PSH jsme vzdali, protože budova, kde hráli, měla příšernou akustiku.
Zvuk bolel v uších a ze slov nebylo rozumět nic, což zrovna u rapu celkem vadí.</p>
<p>Bylo to poprvé od narození dcery, co jsme se s manželkou takhle pozdě večer někam vypravili.
Babička přijela z Moravy a statečně se pokusila o uspání dítěte, které bez nás ještě nikdy neusnulo.
A povedlo se to!
Nám se zase pro změnu povedlo vyhnout se nějaké té příšerné bouřce, která se řítila na Prahu z Německa.</p>
<figure class="figure"><img alt="Jamiroquai" src="https://honzajavorek.cz/images/img-4309.jpg" class="img-fluid figure-img rounded"></figure>
<p>Tím se uzavírá můj divoký červen, do něhož se mi z důvodů koordinace všelijakých termínů vložily prakticky veškeré aktivity, které jsem chtěl letos v létě dělat.
Jsem z toho poměrně vyčerpaný a těším se, že budu mít konečně nějaký týden, kdy budu jen v práci nebo doma.
Myslím, že junior.guru se těší taky, protože teď bylo celkem zanedbáváno 😞</p>
<h2 id="prednaska-s-nelou">Přednáška s Nelou<small class="permalink"><a href="#prednaska-s-nelou" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>V úterý večer byla v klubu po dlouhé době opět přednáška.
Poprvé jsem si ji chtěl vzít z nové kanceláře.</p>
<p>Minuty před začátkem jsem však zjistil, že byť mi jede Discord na chat, nejede mi na zvuk a video.
Nepřipojí se.
Naštěstí byl v kanceláři zrovna kamarád <a href="https://milavotradovec.cz/">Míla</a> s neomezeným internetem v mobilu a připojil mě přes LTE.
Z toho jsem vzal nakonec celou přednášku.
Co bych bez něj v tu chvíli dělal, to upřímně nevím.
Takže Mílo, ještě jednou fakt díky!</p>
<p>Další den jsme to pak vyřešili.
Discord potřebuje na volání nějaké porty, které byly blokované na místním routeru.</p>
<p>Nela měla pomalejší tempo vyprávění, ale jinak proběhlo všechno v pohodě.
Přednáška to byla hezká, diskuze výživná.
Záznam bude veřejný a dáme ho pak zase na stránku <a href="https://junior.guru/handbook/mental-health">Psychika na cestě do IT</a>, ale nejdřív musí Tinuki dokončit jeho stříhání ✂️</p>
<figure class="figure"><img alt="Nela" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/20230620-8831c9f9d7408f8d23462a58fa6d6c0278db3046d79cbabb3f069d0cfdadf644-yt.png"></figure>
<h2 id="optimalizace-obrazku">Optimalizace obrázků<small class="permalink"><a href="#optimalizace-obrazku" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Během týdne jsem se nepříjemně zamotal do optimalizace obrázků na junior.guru.
Přemýšlím, že bych generované obrázky commitoval zpět do repozitáře, aby se tím kešovaly a nevytvářely pokaždé znova.
Jednak se příliš nemění, občas akorát nějaký přibude, jednak jejich generování trvá dost dlouho.</p>
<p>Jenže aby nezabíraly v Gitu moc místa, chtěl jsem je mít co nejmenší.
A to lze docílit jen optimalizacemi.
Jde o celkem dost obrázků a bude jich jen přibývat, takže rozdíly jsou v MB, možná desítkách MB, a to už se po čase při <code>git pull</code> pozná.</p>
<p>Napadlo mě, zda bych se nemohl na všechny optimalizace vyprdnout a prostě použít třeba WebP, který má určitě vše už vyřešené.
U screenshotů měl oproti JPEG celkem dobré výsledky, tak jsem to předělal.
U generovaných PNG to ale nevycházelo líp a hlavně nejde WebP přetáhnout např. jako obrázek ke statusu na LinkedIn, což je pro mě problém.</p>
<p><a href="https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html#png">Pillow má option</a> <code>optimize</code>, což jsem nevěděl, napověděl mi to při psaní GitHub Copilot. Moc velkou parádu to však neudělalo.</p>
<p>Hodně se mi líbil <a href="https://pngquant.org/">pngquant</a> v kombinaci s <a href="https://github.com/shssoichiro/oxipng">oxipng</a>.
Prakticky nerozeznatelné PNG mělo místo 300 kB třeba jen 70 kB.
Jenže se mi nějak nepovedlo to jednoduše dostat na CI.
Vyžadovalo to instalaci přes <code>apt-get</code>, což je vždy opruz a čas buildu navíc, a taky se mi nepovedlo najít adekvátní balíček pro oxipng.
Hledal jsem, zda by to nešlo udělat nějak nativně v Pythonu a našel toto:</p>
<ul>
<li><a href="https://github.com/nfrasser/pyoxipng">pyoxipng</a></li>
<li><a href="https://github.com/python-pillow/Pillow/pull/1889">Pillow quantize()</a>: <code>image.quantize(method=Image.Quantize.LIBIMAGEQUANT)</code></li>
<li>Omezení palety pomocí Pillow: <code>image = image.convert('P', palette=Image.Palette.ADAPTIVE, colors=256)</code> Jenže jak je to jen 256 barev, tak to bylo dost hnusné.</li>
</ul>
<p>Několik dní jsem se v tom motal a zkoušel různá řešní.
Ten <code>pyoxipng</code> mi třeba fungoval krásně lokálně, ale na CI se záhadně zasekával.</p>
<p>Nakonec jsem to vzdal a obrázky se generují neoptimalizované.
Budu jejich velikost muset řešit jinak.
Buďto je zmenším před commitem lokálně, nebo je nebudu commitovat, ale využiju třeba <a href="https://circleci.com/docs/caching/">CircleCI cache</a>, nevím.
Každopádně mám pocit, že na to, jaká je to blbost, jsem v tom utopil strašně moc času.</p>
<p>Aspoň se mi povedlo na několika místech výrazně zrychlit generování obrázků i jinak:</p>
<ul>
<li>Místo dočasného adresáře pro každý generovaný obrázek se používá jeden jako sdílená keš.</li>
<li>Místo toho, aby se pokaždé kompilovaly SCSS soubory a kopírovaly se fonty, děje se to jen jednou.</li>
<li>Místo toho, aby se SCSS kompilovalo ručně, pak se ručně kopírovaly fonty a přepisovaly jejich cesty, dělá to teď speciálně nastavený <code>esbuild</code>.</li>
</ul>
<p>Ten poslední bod mě potrápil, protože <code>esbuild</code> se rozbije o relativní cesty k fontům v balíčku <a href="https://www.npmjs.com/package/@fontsource/inter">@fontsource/inter</a>.
Procházel jsem nějaké pluginy, ale nakonec je řešením <code>precompile</code> přímo v rámci <a href="https://github.com/glromeo/esbuild-sass-plugin">SCSS pluginu</a>:</p>
<pre class="highlight"><code><span></span><code><span class="k">await</span><span class="w"> </span><span class="nx">esbuild</span><span class="p">.</span><span class="nx">build</span><span class="p">({</span>
<span class="w"> </span><span class="p">...</span>
<span class="w"> </span><span class="nx">plugins</span><span class="o">:</span><span class="w"> </span><span class="p">[</span>
<span class="w"> </span><span class="nx">sassPlugin</span><span class="p">({</span>
<span class="w"> </span><span class="nx">precompile</span><span class="p">(</span><span class="nx">source</span><span class="p">,</span><span class="w"> </span><span class="nx">pathname</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">pathname</span><span class="p">.</span><span class="nx">endsWith</span><span class="p">(</span><span class="s1">'@fontsource/inter/index.css'</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">source</span><span class="p">.</span><span class="nx">replaceAll</span><span class="p">(</span><span class="s1">'./files/'</span><span class="p">,</span><span class="w"> </span><span class="s1">'../../node_modules/@fontsource/inter/files/'</span><span class="p">)</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">source</span>
<span class="w"> </span><span class="p">},</span>
<span class="w"> </span><span class="p">}),</span>
<span class="w"> </span><span class="p">],</span>
<span class="p">})</span>
</code></code></pre>
<p>Taky jsem při ladění nejrůznějších problémů dost překopal jak mi funguje logging.
Objevil jsem třeba <a href="https://stackoverflow.com/a/57820456/325365">record_factory</a>, pomocí níž si loguji z jakého procesu je záznam, ale pouze pokud není v tom hlavním.
Zrušil jsem logování do souboru, protože ho nepoužívám, a přidal jsem si <code>--debug</code> do CLI, které zapne detailnější logování.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Pomáhal jsem <a href="https://cz.pycon.org/2023/">PyCon CZ</a> týmu propagovat <a href="https://cz.pycon.org/2023/cfp/">možnost přihlásit si na letošní konferenci přednášku nebo workshop</a>.
Výzvu jsem dal do asi desítky Facebookových skupin, ale zdá se mi, že nakonec ze všeho nejvíc frčí <a href="https://www.linkedin.com/posts/honzajavorek_python-cfp-pyconcz-activity-7077574515693645824-WkJA">můj status na LinkedIn</a>.
Vyhodnocuji si z toho pro osobní účely, že Facebook je už asi opravdu mrtvý.</li>
<li>Sdílel jsem <a href="https://www.linkedin.com/posts/kveselovska_16-kate%C5%99ina-lesch-deloitte-o-um%C4%9Bl%C3%A9-inteligenci-activity-7071741104039047168-IxR-/">status Kateřiny Lesch</a> o tom, že byla u nás v podcastu.</li>
<li>Přihlásil jsem se na podzimní půlmaraton v Blansku a nejspíš na jednu letní šifrovačku v Brně.</li>
<li>Opravil jsem nějaké malé chybky na junior.guru.
Rozbité cesty k souborům, špatně generované adresy, atd.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>.
Od dovolené jsem ještě stále ve skluzu co se týče čtení klubu.</li>
<li>Během 8 dní jsem naběhal 19 km. Celkem jsem se hýbal 3 h a zdolal při tom 19 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Věnovat se v klidu rodině a práci a nic dalšího 🙏</li>
<li>Dohnat všechny možné resty z posledních týdnů.</li>
<li>Nějak uzavřít překopávání toho, jak se buildí frontend junior.guru.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=xNvvK-gPXUo">Call for Proposals: Přihlaš si přednášku, workshop nebo sprint na PyCon CZ 23</a><br>A už jsem tady psal, že právě můžete poslat návrh na přednášku nebo workshop pro letošní PyCon CZ, českou Python konferenci? Letos tam bude i celá sekce pro začátečníky. Pusťte si Dana na videu, vysvětlí vám, jak to funguje 🙂 V popisku je pak odkaz přímo na formulář. A neváhejte, ten formulář nebude už otevřený moc dlouho.</li>
<li><a href="https://www.youtube.com/watch?v=Cg1g27MUd_0">Gaming On Mac Just Got WAY Better - A Developer's Perspective</a><br>Áčkové hry na macOS? Wow.</li>
<li><a href="https://overcast.fm/+1O3lj1Evs">O Pyvci s Bárou Drbohlavovou (Rohlík.cz) — ProgramHRování - váš HR průvodce světem IT</a><br>Konečně jsem si pustil tohle a super. Díky Báro za super promo pro Pyvec a Python komunitu ❤️ (jsem taky ve výboru)</li>
<li><a href="https://www.wired.com/story/flawless-korea-beauty-elise-hu/">Digital Culture Is Literally Reshaping Women's Faces</a><br>„While fixing individuals reduces prejudice directed toward particular individuals, it increases prejudice in general.“ Nebo: „We assume that desire is objective or subjective, but in reality it rests on a third party who gives value to objects. This third party is usually the one who is closest, the neighbor. When the entire internet population is your neighbor, this is a recipe for conflict.”</li>
</ul></div></div></div></div>Týdenní poznámky: Strakovka, podcast, inboxy2023-06-16T00:00:00+02:002023-06-16T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-06-16:/blog/tydenni-poznamky-strakovka-podcast-inboxy/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-dovolene-spousta-drobnosti-a-build-frontendu/">posledních poznámek</a> už utekl nějaký ten týden (1. 6. až 16. 6.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Strakovka" src="https://honzajavorek.cz/images/img-4187.jpg" class="img-fluid figure-img rounded"></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální …</p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-dovolene-spousta-drobnosti-a-build-frontendu/">posledních poznámek</a> už utekl nějaký ten týden (1. 6. až 16. 6.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Strakovka" src="https://honzajavorek.cz/images/img-4187.jpg" class="img-fluid figure-img rounded"></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="dovolena">Dovolená<small class="permalink"><a href="#dovolena" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>První delší rodinná dovolená v zahraničí byla fajn.
Neměli jsme raději žádná velká očekávání.</p>
<p>Letěli jsme do Itálie.
Měl to být kompromis válení a poznávání, což se nakonec asi povedlo, akorát naše dítě se moc válet neumí, takže bychom teď svým způsobem potřebovali asi další dovolenou, ideálně s babičkou 😀</p>
<figure class="figure"><img alt="Pláž" src="https://honzajavorek.cz/images/img-3896.jpg" class="img-fluid figure-img rounded"></figure>
<figure class="figure"><img alt="Hřiště" src="https://honzajavorek.cz/images/img-4127.jpg" class="img-fluid figure-img rounded"></figure>
<p>Rozhodně to splnilo účel v tom, že jsme to nějak prolomili a nabrali nějaké <em>know how</em> ohledně toho, co obnáší dovolená s dítětem a na co si dát příště pozor, nebo co není vůbec problém.</p>
<p>Mě se zase povedlo si snad poprvé od roku 2019 plně odpočinout na celý týden od práce.
Na junior.guru jsem vůbec nemyslel, prací se nezabýval, Discord jsem ani jednou neotevřel 💆♂️
A světe div se, nic se nezhroutilo!
Příjemné.</p>
<h2 id="schuzky">Schůzky<small class="permalink"><a href="#schuzky" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Tento týden jsem měl hned čtyři schůzky:</p>
<ul>
<li>V úterý na Úřadu vlády, tzn. ve Strakovce.
Tam jsem se sešel se dvěma členkami týmu pod Ivanem Bartošem, které připravují Czech Digital Week.
To má být velká akce pro veřejnost v listopadu tohoto roku.
Výsledkem schůzky je, že na této akci se budu podílet jak jen budu umět.
Kontakt na mě jim dali z <a href="https://cesko.digital/">Česko.Digital</a>, čímžto jim převelice děkuji!</li>
<li>Ve středu jsem šel ke kadeřníkovi.</li>
<li>Spolu s <a href="https://www.linkedin.com/in/lucietvrdikova/">Lucií Tvrdíkovou</a> mě Jurij Starynec pozval do svého podcastu <a href="https://www.starynec.cz/category/vsechny-clanky/podcasty/">IT svět podle Jury</a>, takže tam jsem šel natáčet hned po kadeřníkovi.
Souběh s termínem kadeřníka je čistě náhodný, netočilo se video 😀
Rád jsem Lucii i Juru poznal osobně.
Lucii jsem hned pozval i do klubu.
Na podcast jsme si s Lucií připravili spoustu nějakých diskuzních okruhů.
Natáčení bylo dlouhé.
Přišlo mi, že přeskakujeme od jedné věci k druhé, že zůstává spousta věcí nedořečeno a že je to chaos, ale naštěstí vím, že s odstupem a po sestříhání tyhle věci dopadnou většinou nakonec dobře.</li>
<li>Ve čtvrtek jsem šel na návštěvu do Mews.
Tam jsem se seznámil s jejich novou „komuniťačkou” a spolu s Janem Meissnerem jsme probrali směřování další spolupráce.
Vzápětí jsem poslal do Mews fakturu 😏
A těším se, jak spolu zase od základů překopeme mentoring v klubu, jako každý rok 😀</li>
</ul>
<h2 id="co-je-czech-digital-week">Co je Czech Digital Week?<small class="permalink"><a href="#co-je-czech-digital-week" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Tady jsou dva slajdy, které asi nejlíp vysvětlují, co bude CDW.</p>
<figure class="figure"><img alt="Slajd 1" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-06-13-at-15-47-45-vyznam-digitalniho-vzdelavani-pro-czech-digital-week.png"></figure>
<figure class="figure"><img alt="Slajd 2" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-06-13-at-15-48-39-vyznam-digitalniho-vzdelavani-pro-czech-digital-week.png"></figure>
<h2 id="inboxy">Inboxy<small class="permalink"><a href="#inboxy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Po dovolené jsem procházel všechny možné „inboxy“, kde mi lidi píšou.
Stále ještě některým dlužím odpovědi.</p>
<ul>
<li>Prošel jsem přes 100 e-mailů a zbylo jich 6, z nichž si tam některé bohužel syslím už od Vánoc.</li>
<li>Projít <a href="https://junior.guru/club/">klubový Discord</a> nakonec nebylo tak hrozné, jak jsem se obával.
Dělo se tam toho dost, ale stačilo tomu věnovat jedno odpoledne a většinu jsem si stihl projít.
Ještě mi zbývají uvítání nových členů, pár vláken a něco velmi dlouhého ve „zdraví mysli“, tam mi to píše 50+ nepřečtených zpráv.</li>
<li><a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a> byl taky výživný, ale nakonec tam nebylo zas tak moc věcí, na které bych musel reagovat.</li>
<li>Messenger, Telegram…</li>
<li>Zprávy na LinkedIn.
Ty jsou nejhorší, protože se nedají označit jako nepřečtené tak, aby stále svítily jako notifikace.
Takže jakmile člověk nakoukne do inboxu, už musí na vše hned odpovědět, jinak zapomene, že mu někdo vůbec psal.</li>
</ul>
<h2 id="novy-build-frontendu">Nový build frontendu<small class="permalink"><a href="#novy-build-frontendu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Před odjezdem na dovolenou jsem rozpracoval změnu toho, jak funguje build frontendu.
Ač dělám <em>continuous deployment</em>, tohle jsem si <a href="https://github.com/honzajavorek/junior.guru/pull/1158">schoval do Pull Requestu</a>.
Teď jsem se k tomu vrátil a ve volných chvilkách tuto velkou změnu šťouchal směrem k produkci.</p>
<p>Asi nemá smysl tady popisovat detaily.
Bylo to sice v podstatě připravené na puštění do produkce, ale postupně bylo potřeba opravit desítky drobných věcí, které se někde rozbily, protože jsem si je neuvědomil, nebo je někde přehlédl.</p>
<p>Po několika kontrolách jsem to na produkci opravdu pustil a zatím to vypadá, že vše fakt funguje.
Až mě to udivuje!</p>
<p>Další den jsem si k tomu ještě doplnil vývojový server s reloadem.
Využil jsem balíček <a href="https://pypi.org/project/livereload/">livereload</a>.
Chvíli mi trvalo to poladit, ale zdá se, že vše funguje tak, jak potřebuji.</p>
<p>Výsledkem je, že build nezabere deset minut, ale pár sekund.
A i ten development server se mi zdá rychlejší.
Do budoucna bych to chtěl celé ještě jednodušší a rychlejší, ale k tomu se potřebuji zbavit nějakých starých záležitostí v kódu a to ještě potrvá.</p>
<p>Negativním efektem změn je prodloužení času, který je potřeba na build dat, ze kterých se webová stránka staví.
Přesunulo se do nich totiž generování „og:image“ náhledů stránek, a to zabírá hromadu času.
S tím mám ale v plánu hned něco udělat.
Takže další kroky budou:</p>
<ul>
<li>Kešování generovaných obrázků mezi buildy.</li>
<li>Optimalizace obrázků a dalších věcí v nějakém samostatném buildu.</li>
</ul>
<p>Pak už toho asi nechám a budu se zas věnovat užitečnějším věcem.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Pokud chcete přednášet na letošním PyCon CZ, <a href="https://cz.pycon.org/2023/cfp/">napište to sem</a>!
Zbývá týden času.</li>
<li>V červenci bude v Praze <a href="https://ep2023.europython.eu/">EuroPython</a>, největší Evropská konference o Pythonu.
EuroPython je putovní, takže je to asi jako by kolem Prahy zrovna letěla kometa.
Bude to fakt velký festival pro všechny pythonisty, sjedou se z celého kontinentu a možná z celé zeměkoule.
Chtěli by tam udělat workshop programování pro děti.
Poprosili mě, jestli bych jim nepomohl najít v Česku někoho, kdo by něco takového připravil, nebo se na tom byl schopen nějak podílet.
Tak pokud o někom víte, napište mi!</li>
<li>Chodil jsem do své nové kanceláře, ale jen sporadicky, protože jsem si ráno nedával záměrně budík a odpoledne jsem měl schůzky.
Přísnější režim si dám až od dalšího pondělí.</li>
<li>Zajímavý počin a podle mě něco, co bude mít okamžitě zaplněnou kapacitu: <a href="https://geekpower.cz/">Angličtina pro ajťáky</a>.
Jestliže umíte učit angličtinu a víte, jaká angličtina je potřeba v IT, lidi vám utrhnou ruce.
Díra na trhu.</li>
<li>Vypnul jsem na CircleCI buildy pro forked Pull Requests, protože jsem stejně neměl věci nastavené tak, aby mohly projít.
Jednou to vyladím, ale teď nemá smysl, aby se něco spouštělo, když všichni víme, že to tak či tak spadne.</li>
<li>Dělal jsem na LinkedIn <a href="https://www.linkedin.com/feed/update/urn:li:activity:7074697427642929153/">promo našemu nejnovějšímu dílu podcastu s Kateřinou Lesch</a>.</li>
<li>Dolaďovali jsme s Nelou popis přednášky, která bude v úterý: <a href="https://junior.guru/events/#2023-06-20T18-00-00">Jak se jako ajťák/čka zbavit pochyb a pocitu, že nejsem dost</a>.
Ukončili jsme dotazník o psychickém zdraví juniorů a odebral jsem z webu proužek, který na dotazník upozorňoval.
Dělal jsem přednášce <a href="https://www.linkedin.com/feed/update/urn:li:activity:7075438644286640129/">promo na LinkedIn</a>.</li>
<li>Prodlužoval jsem platnost domény junior.guru.
I když mám všechny domény u Wedosu, tuhle mám u subreg.cz, protože u Wedosu nešly .guru domény v roce 2019 koupit.
Vzhledem k tomu, jak „intuitivní“ bylo zaplatit za prodloužení a vzhledem k tomu, že se zdá, že Wedos už .guru domény umí, dal jsem si do kalendáře upomínku za rok, že to chci převést.
Ideálně bych to udělal hned, ale nevím, jak funguje přesně to placení.
Doména .guru stojí skoro tisícovku, takže bych to nerad platil dvakrát jen pro to, abych měl v doménách pořádek.</li>
<li>Chvíli padalo API ČNB na kurzy mezi měnami a nemohl jsem kvůli tomu půl dne udělat build webu.
Přepočítávám tím jedno číslo na <a href="https://junior.guru/open/">téhle stránce</a>.
Je otázka, zda by šlo věci udělat tak, aby šlo stránku postavit i bez toho, ale popravdě, je to složitější, než se to zdá.
Takových služeb tam mám hromadu.
To máte ČNB, Memberful, Discord, Fio API…
Systém, který by se bez jednotlivých dat obešel a dokázal by na webu zobrazit místo čísla „tady teď chybí data, sorry“, by byl dost sofistikovaný a byť je to smutné a trochu blbé, nemá smysl to nejspíš řešit.
Prostě musím počkat a hotovo.
Ono by stejně mělo být junior.guru postaveno tak, aby se nic strašného nestalo, když se tam něco rozbije a já budu týden na dovolené 🤷♂️
Tak co.</li>
<li>Spolu s Dariou a Miou z <a href="https://cz.pycon.org/">PyCon CZ</a> týmu jsme si psali kvůli <a href="https://cz.pycon.org/2023/cfp/">CfP PyCon CZ</a>, začátečnickému tracku, který na konferenci bude, a mému zapojení v celé věci.</li>
<li>Některé firmy berou LinkedIn útokem a přes nějakou integraci vytváří každý den novou nabídku práce, pak ji zruší a vytvoří tentýž inzerát, ale pod jiným ID.
To způsobí, že se jim neustále ukazuje jako čerstvý a nový.
Také to způsobí, že už po dni na ten původní inzerát nelze reagovat.
Nebo že to spamuje <a href="https://junior.guru/jobs/">můj job board</a> a inzeráty v klubu, protože můj robot to neumí vyfiltrovat.
Takže jsem je <a href="https://github.com/honzajavorek/junior.guru/commit/9fa88cdba5a0b90c5ef2e09264496fda5d8c91ff">prostě zabanoval</a> 🤷♂️</li>
<li>Během 16 dní jsem na túrách nachodil 19 km, ujel na kole 32 km. Celkem jsem se hýbal 19 h a zdolal při tom 51 km.
Ve skutečnosti jsem toho teda v Itálii nachodil mraky, ale neměřil jsem to všechno.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Po dlouhé době zase přednášku v klubu!</li>
<li>Kešování generovaných obrázků mezi buildy.</li>
<li>Optimalizace obrázků a dalších věcí v nějakém samostatném buildu.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://samizdat.cz/datazurnal-005/">#5: Philip Marlowe + Excel = data noir</a><br>„Honza B. v posledních měsících bez nadsázky prokopal cestičku novému žánru – označení se ještě neusadilo, váháme mezi datovou detektivkou a data noir. Pátrání po rozdílech v počtu léků oficiálně dodaných do lékáren a počtu léků v lékárnách oficiálně vydaných lidem ho přivedlo do mnoha potemělých oblastí českého, ba dokonce i evropského zdravotnictví. Pár domnělých nekalostí se nakonec ukázalo být čurbesem ve státních datech a pojmosloví, ale pak je tu inhalátor Symbicort Turbuhaler, kterého zmizelo za stovky milionů a nejpravděpodobnějším vysvětlením zůstává nelegální reexport. Jako správná detektivka to vyšlo jako seriál, a to trojdílný… Trilogie mimo jiné ukazuje, jak pomalá, komplikovaná a komplexní datová žurnalistika je a kolik se toho při ní nachodí. Excel, RStudio nebo Pandas jsou jen začátek.“</li>
<li><a href="https://zdopravy.cz/sz-reaguje-zkraceni-jizdnich-dob-prinesou-az-rychle-trate-v-nove-stope-165031/">SŽ reaguje: Zkrácení jízdních dob přinesou až rychlé tratě v nové stopě - Zdopravy.cz</a><br>„Platí, že při současné zátěži stávajících tratí mohou zkrácení cestovních dob přinést až vysokorychlostní tratě vybudované v nové stopě.“ Tak toho se nemám šanci dožít 🤯</li>
<li><a href="https://www.lupa.cz/clanky/neco-je-spicka-jine-casti-jsou-zastarale-co-cekat-od-vr-bryli-apple-vision-pro/">Něco je špička, jiné části jsou zastaralé. Co čekat od VR brýlí Apple Vision Pro</a><br>Někdo, kdo tomu rozumí, sepsal dojmy z Apple brýlí.</li>
<li><a href="https://www.voxpot.cz/nekonecny-ukrajinsko-madarsky-pribeh-strida-krize-za-krizi-povalecnych-point-muze-mit-nekolik/">Nekonečný ukrajinsko-maďarský příběh střídá krize za krizí. Poválečných point může mít několik - VOXPOT</a><br>Proč Maďarsko nechce pomáhat Ukrajině.</li>
<li><a href="https://www.marginalia.nu/log/82_killing_community/">Killing Community</a><br>„The only way to make money is to grow, and the only way to grow is to kill the community.“</li>
<li><a href="https://podcasters.spotify.com/pod/show/pickey/episodes/Co-vte-o-strategick-prokrastinaci--Zkuste-to-e24q6gc">Co víte o strategické prokrastinaci? Zkuste to! — TVŮRCAST</a><br>Óda na nicnedělání!</li>
<li><a href="https://adamtooze.substack.com/p/chartbook-209-the-sudan-crisis-and">Chartbook #209 The Sudan crisis and the Sahel gold rush</a><br>„As it has swept from East to West, the gold rush has been rearranging populations, economic, social, political and military relations across the Sahel.“ „Gold sales rose from ten percent of Sudan’s exports to 70 percent.“ „…in 2022 $13.4 billion worth of gold production was smuggled out of Sudan.“ A pokračuje to dál - Rusové, boje o nadvládu nad Súdánem, atd.</li>
<li><a href="https://franklantz.substack.com/p/the-afterlife-of-go">The Afterlife of Go</a><br>Všichni si mysleli, že když AlphaGo porazilo nejlepšího hráče světa, že tím Go prostě končí, roboti vyhráli. AI je, alespoň v této úzké doméně, lepší než člověk. Trvalo 7 let, než se přišlo na to, že si AI vůbec neporadí s naprosto stupidní hrou, kterou zvládne i začátečník. Nemělo se ji kde naučit. Člověk by proti člověku takhle nehrál, protihráčem by to hned prokoukl. AI nic neprokoukne. Není inteligentní. Je pouze naučené na vzorcích minulého chování.</li>
<li><a href="https://www.pbs.org/newshour/show/greenland-unveils-draft-constitution-in-push-for-complete-independence-from-danish-control">Greenland unveils draft constitution in push for complete independence from Danish control</a><br>Odpojí se Grónsko od Dánska?</li>
<li><a href="https://doklidumag.cz/moje-studio-se-vejde-do-ctyr-brasen-a-basy-s-naradim/">Moje studio se vejde do dvou brašen a basy s nářadím | Doklidu</a><br>„Mou největší konkurencí je zatím plotr: je rychlejší, dostupnější a levnější než já.“ Daniel Plavecký se snaží obnovit tradici ručně psaných cedulí a o písmomalířského řemesla.</li>
</ul></div></div></div></div>Týdenní poznámky: Dovolené, spousta drobností a build frontendu2023-06-01T00:00:00+02:002023-06-01T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-06-01:/blog/tydenni-poznamky-dovolene-spousta-drobnosti-a-build-frontendu/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-uklid/">posledních poznámek</a> už utekl nějaký ten týden (18. 5. až 1. 6.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-uklid/">posledních poznámek</a> už utekl nějaký ten týden (18. 5. až 1. 6.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/b5bb05d439c71b800ca520b63c5ae9ab261d10d19681ff2bc2acce0c/">Glance Media</a>, <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<p>Po napsání předchozích poznámek jsem s kamarádem odjel na prodloužený víkend na cykloexpedici po Žatecku.
Bylo to fajn, ale spálil jsem se a měl jsem pak rýmu, možná i nějaký úžeh, takže s tím jsem se pak potýkal ten další týden.
Pořád však lepší než dva předchozí ročníky, kdy jsme vždy akorát zmokli a vloni dokonce chytili covid.</p>
<figure class="figure"><img alt="Kolo" src="https://honzajavorek.cz/images/img-3327.jpg" class="img-fluid figure-img rounded"></figure>
<figure class="figure"><img alt="Zichovec" src="https://honzajavorek.cz/images/img-3350.jpg" class="img-fluid figure-img rounded"></figure>
<p>V pátek jsem nějak neměl sílu napsat poznámky, takže je píšu až teď, zpětně za dva týdny.
Kdy napíšu další nevím, protože teď budu pro změnu odjíždět na rodinnou dovolenou.</p>
<p>Bude to od založení junior.guru v roce 2019 první dovolená dlouhá aspoň týden, během které nemám v plánu vůbec koukat na práci.
Udělat si takovou dovolenou bylo <a href="https://github.com/orgs/juniorguru/projects/1/views/1?pane=issue&itemId=23841635">jedním z mých cílů na letošní rok</a>.
A bude to taky první pořádná dovolená s dítětem.
Tak snad si to užijem a nebude to nějaké peklíčko!</p>
<h2 id="vitani-novych-clenu-v-klubu">Vítání nových členů v klubu<small class="permalink"><a href="#vitani-novych-clenu-v-klubu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Snažíme se v klubu nové členy vítat, a to jak automatizovaně, tak ručně.
V ideálním případě by automat poskytl praktické informace, které se stále opakují a jejich psaní stejně působí roboticky.
Lidé by pak poskytli ten vřelý, lidský element typu „jé, vítej, já jsem původně taky z Karviné“.</p>
<p>K tomu má zatím vítání ještě dost daleko, ale teď jsem se k ideálu dost přiblížil.
Trochu jsme probrali s moderátory, ale i s členy klubu, jak by to mohlo fungovat, a vypadlo z toho pár dobrých nápadů na vyzkoušení.</p>
<ul>
<li>Změnil jsem, jak funguje role „Vítací typ“ pro lidi, kteří mají zájem nové lidi vítat.
Diskutovali jsme, zda má tato role smysl a jaký, zda ji vlastně lidé využívají k tomu, k čemu byla zamýšlena, a proč v klubu vítají jen 2-3 lidi, z nichž někteří tu roli ani nemají.</li>
<li>Předělal jsem, jak bot přidává do uvítacích vláken lidi s nějakou rolí.
Standardní přidávání uživatelů po jednom na Discordu vytvářelo spoustu rušivého „smetí“.
Teď bot do vlákna přidá zprávu, kde je mention na tu roli.
Tato zpráva je tzv. silent, aby přidala lidi, ale příliš nerušila.
Okamžitě po odeslání se zpráva sama smaže (je zajímavé, že toto je přímo funkce API Discordu).</li>
<li>Zvýšil jsem logování v <a href="https://github.com/juniorguru/juniorguru-chick/issues">realtime botovi</a>, abych zjistil, proč některé věci nefungují.</li>
<li>Migroval jsem realtime bota na <a href="https://community.fly.io/t/fly-migrate-to-v2-automatic-migration-to-apps-v2/11984">Fly v2</a>.
Nevím, co je Fly v2, ale přišlo mi mailem, že to mám udělat, tak jsem to udělal.
Klikl jsem, vše jelo, takže dobrý.
Akorát že vůbec.
Při prvním pokusu o deploy se to celé rozsypalo a hodinu dvě jsem debugoval, co mám kde opravit a změnit.
Zase se mi ani <a href="https://community.fly.io/t/eror-failed-to-start-remote-builder-heartbeat-failed-building-options-failed-probing-personal-context-deadline-exceeded/10708">nedařilo připojit na platformu</a>, což už jsem jednou řešil.
Nakonec pomohlo nějaké náhodné přehození řádků v Dockerfile 🤷♂️</li>
<li>Realtime bot umí nyní zakládat uvítací vlákna, psát do nich zprávy, přidávat do nich lidi, reagovat na uvítání pomocí emoji.
Přidal jsem i emoji reakce na základě jednoduché analýzy textu, takže když člověk zmíní Python, bot reaguje pomocí Python loga.
O tom jsem zatím nikomu neříkal a byl jsem zvědavý, kdo si toho všimne první, ale nikdo se mě na to zatím nezeptal.
Takže jsem právě prozradil tajemství, resp. překvapení 😀</li>
<li>Dali jsme do uvítání i malou hru, na které se může podílet kdokoliv.
Mohlo by to debatu v uvítacích vláknech strhnout od kariérového poradenství víc k samotnému vítání a poznávání nových členů.
Jsem zvědav, zda a jak to zafunguje.</li>
</ul>
<h2 id="opusteni-pythoncz">Opuštění python.cz<small class="permalink"><a href="#opusteni-pythoncz" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Opustil jsem roli maintainera <a href="https://python.cz/">python.cz</a>.
Je to součástí mé čistky osobních projektů, kterým se stejně nedokážu věnovat.
Na Pyvec Slack jsem k tomu napsal:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Jak jsem avizoval po Novém roce, uvolňuji místo jako správce python.cz. Od ledna jsem tam nic neudělal a dnes jsem to napsal i do README a odhlásil se z notifikací. Kdo byste s tímto webem měli nějaké plány, ozvěte se tady ve vlákně nebo v #pyvec. Já s ním měl plánů milion, ale je na čase si přiznat, že nemám paralelní život, a nechci stát v cestě někomu, kdo by tomu webu mohl pravidelně dávat lásku, klidně s tím, že jej od základů předělá.</p>
<p>Kdysi jsem python.cz vytvořil jako jednoduchou stránku, kde byl seznam pár hlavních informací o české Python komunitě. To mi přineslo spoustu nových kamarádů, příležitostí a slávy :) A taky věřím, že to pomohlo českou Python komunitu zcelit napříč městy. Bylo by fajn, kdyby tenhle rozcestník v nějaké, klidně minimalistické podobě zůstal, ale já už za kormidlem být nemůžu.</p>
</blockquote>
</figure><p><a href="https://github.com/pyvec/python.cz/pull/555">Upravil jsem README</a> a snažil jsem se odebrat z e-mailů, které chodí, když spadne GitHub Action.
Dostávám je rád, ale logicky pouze pro projekty, kterým se věnuji.
Proto nepřipadalo v úvahu vypnout si tyto e-maily plošně, což na mnoha místech radili.
V <a href="https://docs.github.com/en/actions/monitoring-and-troubleshooting-workflows/notifications-for-workflow-runs">dokumentaci</a> jsem se nakonec dočetl, že notifikace dostává jen ten, kdo vytvořil daný build, nebo kdo jej nějak zapnul 🤯</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Notifications for scheduled workflows are sent to the user who initially created the workflow. If a different user updates the cron syntax in the workflow file, subsequent notifications will be sent to that user instead. If a scheduled workflow is disabled and then re-enabled, notifications will be sent to the user who re-enabled the workflow rather than the user who last modified the cron syntax.</p>
</blockquote>
</figure><p>Protože build na python.cz stejně už několik měsíců padá, já to úspěšně ignoruji a nikomu dalšímu to nevadí, řekl jsem si, že je tedy nejlepší cestou to vypnout. Kdo se tomu pak bude věnovat, tak to zapne a začne dostávat notifikace. Jenže jsem nebyl schopen najít ani tlačítko na vypnutí. Udělal jsem to zase až s pomocí <a href="https://docs.github.com/en/actions/managing-workflow-runs/disabling-and-enabling-a-workflow">příslušné dokumentace</a>.</p>
<h2 id="jak-si-vybrat-kurz-nova-stranka-v-prirucce">Jak si vybrat kurz? Nová stránka v příručce<small class="permalink"><a href="#jak-si-vybrat-kurz-nova-stranka-v-prirucce" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Měl jsem v plánu psát do příručky novou stránku o kurzech, abych podpořil vznik <a href="https://junior.guru/courses/">katalogu</a>, ale nakonec jsem v tomto směru mnoho neudělal.
Na psaní potřebuji klid a ten jsem vůbec neměl.
První týden jsem byl doma s rýmou a dítětem, které nemělo zrovna nejklidnější období.
Druhý týden už jsem měl kancelář, ale zase se moje myšlenky zabývaly spíš tím, abych stihl vše podstatné před odjezdem na dovolenou.
Povedlo se mi aspoň následující:</p>
<ul>
<li>Publikoval jsem <a href="https://junior.guru/handbook/course/">připravovanou osnovu</a> nové stránky a dal jsem ji už do menu.</li>
<li>Zběžná analýza klíčových slov, abych věděl, co lidi v souvislosti s kurzy hledají.
Nejsem na to žádný expert, takže odborník by se mi asi vysmál, že to, co nazývám „analýzou klíčových slov“ je ve skutečnosti jen nějaké šimrání vyhledávačů.</li>
<li>Upravil jsem textace v katalogu, aby bylo pochopitelnější, že pokud je tam nějaký kurz, znamená to, že „existuje“, ne že jej junior.guru „doporučuje“.</li>
</ul>
<figure class="figure"><img alt="Nová stránka" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-06-01-at-14-42-10-jak-vybrat-kurz-programovani.png"></figure>
<h2 id="predelavani-buildu-frontendu">Předělávání buildu frontendu<small class="permalink"><a href="#predelavani-buildu-frontendu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když jsem viděl, jak se mi nedaří psát novou stránku do příručky, rozhodl jsem se před dovolenou zaměřit na něco jednoduššího, co nevyžaduje tolik soustředění.
Jal jsem se zrychlovat build frontendu.
Je to jedna z mých priorit na tento rok, protože build už dlouho nevyhovuje a s přibývajícími obrázky a stránkami se stává až neskutečně pomalým.</p>
<p>To jsem ale netušil, že začnu tahat za šňůrku a budu tahat a tahat a tahat…
Takže dodělané to nemám.</p>
<ul>
<li>Přešel jsem z Rollupu na <a href="https://esbuild.github.io/">esbuild</a>.
Pomohl mi článek <a href="https://jvns.ca/blog/2021/11/15/esbuild-vue/">Some notes on using esbuild</a> od Julie Evans.</li>
<li>Díky tomu jsem mohl vymazat spoustu věcí a nakonec i celý původní build založený na Gulpu.</li>
<li>Některé věci jsem přesunul do Python skriptů, teď když už mám plnohodnotné CLI s <a href="https://click.palletsprojects.com/">clickem</a>.</li>
<li>Všude už používám <code>import</code> místo <code>require</code>.</li>
<li>Jedno největší zdržování způsobují og:image obrázky, které generuji <em>on demand</em> během generování každé HTML stránky.
Generování og:image zahrnuje spuštění prohlížeče a uložení screenshotu, takže je to fakt pomalé.
Dalo mi to dost práce, ale nejspíš se mi povedlo celou tuhle věc přesunout do skriptu, který se dá pustit nezávisle na buildu stránek v rámci všeho ostatního, co mi stahuje data potřebná pro vygenerování webovky.</li>
<li>Druhé největší zdržování způsobují různé optimalizace obrázků, které se dějou pokaždé a opět <em>on demand</em> při každém buildu.</li>
<li>Pokud jde o generované obrázky (např. ty og:image nebo plakáty k přednáškám a podcastu), chtěl bych optimalizace přesunout přímo do míst, kde se generují, aby výsledný obrázek byl už optimalizovaný i za cenu delšího generování, protože to bude stejně vždycky hrozně pomalé.
Obrázky pak budu nejspíš commitovat do Gitu, aby se negenerovaly znova pokaždé, ale pouze při změnách.</li>
<li>Pokud jde o různé manuálně přidávané obrázky, ty už v Gitu jsou, takže stačí udělat něco, co by je jednou za čas optimalizovalo, ať na to nemusím myslet.
Výsledek by se commitnul zpět do repozitáře.
Takže ideální věc do CI, podobně jako tam už mám formátování kódu.</li>
</ul>
<p>No jsem zvědavý, jestli se k tomu po dovolené vrátím a kdy to dodělám.
Každopádně mi to pak nejspíš zrychlí a zpříjemní úplně všechnu další práci kolem samotného webu.</p>
<h2 id="ankety">Ankety<small class="permalink"><a href="#ankety" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Udělal jsem review nějakých věcí ohledně ankety pro juniory, kterou se snažíme rozjet spolu s ENGETO Academy.
Bohužel osoba, která nám na to měla hodit odborné oko, to má někde na konci priorit, takže náš postup stagnuje a obávám se, že do léta to spustit nestihneme.</p>
<p>Mezitím svou anketu dokončila <a href="https://www.nelaprovazi.cz/">Nela Slezáková</a>, se kterou děláme kapitolu v příručce s názvem <a href="https://junior.guru/handbook/mental-health/">Psychika na cestě do IT</a>.
Chtěla by ji teď doplnit a vylepšit, takže udělala dotazník, kde chce zjistit, s čím se junioři reálně potýkají.
Na dotazník jsem hodil oko a pak jsem s ním otapetoval internet, abychom měli respondenty.
Dal jsem ho i do modrého proužku na každou stránku na junior.guru.
Pokud jste junioři, <a href="https://forms.gle/CvcrqJLwaU9bSLzf7">vyplňte nám to prosím</a>!</p>
<figure class="figure"><img alt="Upoutávka" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/nelaform-001.png"><figcaption class="figure-caption">
Tohle jsem maloval snad dvě hodiny.</figcaption></figure>
<h2 id="festival-o-psani">Festival o psaní<small class="permalink"><a href="#festival-o-psani" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Nepovedlo se mi najít nikoho, kdo by chtěl lístek na <a href="https://festivalopsani.cz/">Festival o psaní</a>.
Tento týden jsem ho nabízel už i zadarmo, ale každý už má asi na víkend program.
Lístek tedy propadne.
Mrzí mě to, protože nebyl levný, ale termín dovolené prostě vyšel takhle a nedá se nic dělat.
Někdy člověk asi musí věci i odepsat a neřešit.</p>
<p>Škoda, že jsem udání lístku věnoval v posledních týdnech celkem dost energie, takže výsledná bilance jde ještě víc do záporu.
Dokonce už jsem měl kontakt i na jednu studentku, které bych to poskytnul jako stipendium (tzn. za 0 Kč, pro mě stále ztráta, ale aspoň bych měl dobrý pocit).
Ta si to však potom ještě rozmyslela.
Přitom to podle mě bude super akce, na kterou bych jinak moc rád šel.</p>
<h2 id="podcast">Podcast<small class="permalink"><a href="#podcast" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Pavlína natočila podcast, ale přišlo jí, že se to vlastně moc po obsahové stránce nepovedlo.
Pustil jsem si to a souhlasil jsem.
Blbá situace, ale rozhodli jsme se, že se hostovi omluvíme a epizodu nevydáme.
Tak se i stalo.
Pro Pavlínu funguji jako redakce, takže jsem za to vzal zodpovědnost a sepsal jsem citlivou omluvu.
Host to naštěstí vzal v pohodě, takže dobrý.
Možná spolu nakonec vymyslíme něco jiného.</p>
<p>Mimochodem, zkoušel jsem, zda mi je schopno se sepsáním omluvy pomoci ChatGPT, ale vyhazovalo to věci, které mi přišly necitlivě asertivní a nevhodné pro danou situaci.
Nevím jak vás, ale mě AI zjevně ještě nenahradí.</p>
<p>Pája pak rychle natočila další epizodu a ta vyšla dnes, <a href="https://junior.guru/podcast/">tak si ji pusťe</a>.
Když jsem to dával na YouTube, vyskočilo na mě upozornění, že YouTube už v Česku pomalu spouští svoje speciální funkce pro podcastery.
Označil jsem tedy náš playlist jako podcast a jsem zvědavý, co se bude dít.
<a href="https://www.youtube.com/podcasts">Tahle stránka</a> u nás zatím nefunguje.
Musím si pak znova pustit <a href="https://www.youtube.com/watch?v=feMd_GvZSf4&t=1s">tohle</a>, ať vím, co čekat.</p>
<p>A jen připomenu, že máte ještě osm dní na hlasování v anketě <a href="https://www.podcastroku.cz/">Podcast roku</a> 😉</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Ataccama <a href="https://junior.guru/open/ataccama/">prodloužila partnerství</a>!</li>
<li>Souhlasil jsem, že budu přednášet na <a href="https://frontendisti.cz/konference">FrontKonu</a>.</li>
<li>Anežka z Česko.Digital mě doporučila jako partnera pro <a href="https://www.beautiful.ai/player/-NUvGiV9GVn6KcmXFcmx/Vyznam-digitalniho-vzdelavani-pro-Czech-Digital-Week">CDW</a>.
Takže jsem si poprvé v životě psal s někým, komu končí e-mail <code>@vlada.cz</code> a mám domluvenou schůzku, která bude ve Strakovce.</li>
<li>Vylepšil jsem, jak se scrapují a <a href="https://github.com/honzajavorek/junior.guru/commit/2586e2143eb129ac09ecf36794d474250a86f587">ukládají</a> čísla ohledně mých followers na vybraných platformách.
Pak jsem to konečně <a href="https://junior.guru/open/#marketing">hodil do grafu</a>.</li>
<li>Zpracoval jsem jedno stipendium.</li>
<li>Sehnal jsem kancelář!
Odteď budu každé dopoledne pracovat ze sklepního prostoru u Jiřáku, kam v pohodě dojdu pěšky a v němž NEJSOU ŽÁDNÉ DĚTI.
Doufám že moje produktivita stoupne aspoň o tolik, o kolik klesne můj příjem kvůli nájmu kanceláře.</li>
<li>Můj build na CircleCI umí některé věci uložit zpátky do repozitáře a pushnout zpět.
Akorát že to dělal i na vedlejších větvích, ne pouze na <code>main</code>.
Tak jsem to chtěl opravit a u toho zjistil, že na to mají <a href="https://circleci.com/docs/using-branch-filters/">pěknou novou syntaxi</a> a nemusí se to už hackovat v shellu.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, LinkedIn zprávy.
Hlavně klubu jsem věnoval během těch dvou týdnů opravdu hodně času.</li>
<li>Hádal jsem se s podporou <a href="https://www.nextbikeczech.com/">NextBike</a>, že jsem správně umístil kolo a nezasloužím si pokutu, a potom že jsem ho teda sice neumístil správně, ale UI jejich aplikace je v tomto směru naprosto debilní a poskytlo mi dokonalou iluzi toho, že jsem vše udělal správně.
Pomocí pěti e-mailů jsem pokutu za špatně zaparkované kolo snížil z 300 Kč na 200 Kč a zkouším teď zase používat víc <a href="https://www.rekola.cz/">Rekola</a>.
Tak či tak, stejně je super, že můžu v rámci Lítačky skočit na kolo a kousek se svézt.
Na spoustu tras kolem mého bydliště je to mnohem rychlejší a pohodlnější než jít pěšky nebo jet MHD.</li>
<li>Zazdil jsem zase společný call Pyvec výboru.
Už mi to přijde trapné, takže uvažuji nad tím, že si zřídím nějakou věc, která mi před callem vytvoří PagerDuty incident a ten mě postupně upozorní e-mailem, SMSkou a voláním.
<a href="https://www.pagerduty.com/">PagerDuty</a> je do pěti lidí zdarma, takže nějak to půjde.
Jen nevím, jak to propojit s kalendářem.</li>
<li>
<p>Ozval jsem se opět některým firmám a překvapilo mě, že hned dvě prosily o víc času, protože se tam předává agenda:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Chystám se na odchod na mateřskou a připravuji vše pro novou kolegyni, aby její nástup byl co nejhladší :)</p>
</blockquote>
</figure><p>Nebo</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>…já odcházím a pomalu začnu předávat vše mému nástupci, a i toto rozhodnutí má smysl, aby udělal on…</p>
</blockquote>
</figure><p>Škatule hejbejte se!</p>
</li>
<li>
<p>Během 15 dní jsem ujel na kole 266 km. Celkem jsem se hýbal 103 h a zdolal při tom 266 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</p>
</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Užít si dovolenou.</li>
<li>Po dovolené nějak projít klub a maily a zajít na domluvené schůzky.</li>
<li>Dodělat ten frontendový build.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.telegraph.co.uk/news/2023/05/25/coming-russian-revolution-unleash-horrifying-new-demons/">The coming Russian revolution will unleash horrifying new demons</a><br>„Don’t expect another Mikhail Gorbachev. Instead, we could well be looking at a protracted scenario of chaos, violence, rebellion and repression, with fighting between the Russian army, national guard, security services, the plethora of private armies and perhaps Prighozin’s vision of mobs on the streets with pitchforks.“</li>
<li><a href="https://www.linkedin.com/posts/yablko_silicon-valley-by-nemal-by%C5%A5-cie%C4%BE-wpeter-activity-7067114278029275136-9FR9/">Roman Hraška on LinkedIn: Silicon Valley by nemal byť cieľ w/Peter Širka #65</a><br>Yablko perfektní status. „v tech sektore ľudia akoby zabudli, že je dovolené len vyrábať vec a predávať ju. vyrábať ju, lebo ťa to baví. lebo chceš, aby práve táto vec existovala. tvoriť si svet, kde firma je len potrebná formalita, nie cieľ.“ (Podcast, na který odkazuje, jsem ještě neslyšel)</li>
<li><a href="https://technomancers.ai/eu-ai-act-to-target-us-open-source-software/">EU AI Act To Target US Open Source Software - Technomancers.ai</a><br>Tohle je šílený. Giganti nemají žádný reálný náskok před open source modely a postupně se dostáváme do situace, že drobné, dostatečně užitečné AI, by si mohl v pohodě každý natrénovat na lepším noťasu. Jenže s novými pravidly se vše zreguluje. Hraju si se Stable Diffusion, je to super. Na obrázek čekám minuty, ale baví mě to. Každý den někdo vymyslí nový způsob, jak to vylepšit, nebo zrychlit. Jdou dělat lepší obrázky. Ale celý ten pokrok stojí na tom, že to je přístupné každému. Je to krásná ukázka toho, co open source dokáže a buduje se kolem toho pěkná komunita. A tohle celé by mohlo být ilegální 🤯 Jediný, kdo bude mít dost peněz projít regulacemi, budou giganti… a na mě naběhne SWAT komando oknem za to, že mám vlastní natrénovaný model na noťasu, díky kterému si můžu vygenerovat svou vlastní fotku s elfíma ušima.</li>
</ul></div></div></div></div>Týdenní poznámky: Úklid2023-05-18T00:00:00+02:002023-05-18T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-05-18:/blog/tydenni-poznamky-uklid/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-katalog-kurzu-a-uklid-v-trellu/">posledních poznámek</a> už utekl nějaký ten týden (12. 5. až 18. 5.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-katalog-kurzu-a-uklid-v-trellu/">posledních poznámek</a> už utekl nějaký ten týden (12. 5. až 18. 5.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/b5bb05d439c71b800ca520b63c5ae9ab261d10d19681ff2bc2acce0c/">Glance Media</a>, <a href="https://junior.guru/jobs/dbbb7bf406b3c33aeba36cae817919d44bfb368a08fb1b4899dba130/">Processand</a>, <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<p>Poznámky píšu už ve čtvrtek, protože v pátek si beru volno a jedu na prodloužený víkend na kolo s kamarády.</p>
<h2 id="shaneni-kancelare">Shánění kanceláře<small class="permalink"><a href="#shaneni-kancelare" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Hned na pondělí jsem si sjednal dvě schůzky ohledně kanceláře na Žižkově.
Na obchůzky jsem se vydal s dvouletou dcerou a kvůli vlastní prokrastinaci asi o hodinu později, než jsem potřeboval, takže <em>what could possibly go wrong</em>.
Jednu schůzku jsem zvládl a stihl, i když z ní dcera nebyla zrovna nadšená a musel jsem jí to pak vynahradit hraním na písku.
Jednu schůzku jsem vůbec nezvládl a nestihl, třikrát jsem se za to omluvil a doteď se stydím, ale tak snad už dobrý.</p>
<p>Ta první schůzka naštěstí vedla k nějakému výsledku.
Vypadá to, že jsem kancelář našel.
Ještě se tam v pondělí znova podíváme i s kamarádem a pak to snad už definitivně potvrdíme.
Doma se pracovat fakt už moc nedá.</p>
<h2 id="uklid-kolem-prirucky">Úklid kolem příručky<small class="permalink"><a href="#uklid-kolem-prirucky" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Pokračoval jsem v úklidu Trella, jak jsem ho už popisoval v předchozích poznámkách.
Dodělal jsem poslední sloupec, kde bylo přes 500 kartiček.</p>
<p>Pak jsem si šel odpočinout a předělal jsem <a href="https://junior.guru/open/#prirucka">tohle</a> z tabulky na graf.
O dost přehlednější!</p>
<figure class="figure"><img alt="Graf" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-05-18-at-17-11-20.png"></figure>
<p>Na řadu přišel úklid v uložených zprávách na Discordu.
Napadlo mě, že tohle už by šlo nějak zautomatizovat.</p>
<p>Přiřadil jsem ke každé stránce v příručce unikátní emoji.
Pak mám skript, který projede všechny zprávy z klubu, které jsem si nechal botem uložit do soukromé konverzace.
Pokud má zpráva reakci s určitou emoji, uloží se obsah zprávy a odkaz na zprávu do poznámek v souboru pro danou stránku příručky.
Asi to zní zmateně, tak třeba to půjde pochopit aspoň z obrázků:</p>
<figure class="figure"><img alt="Uložené zprávy" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-05-18-at-13-14-50.png"><figcaption class="figure-caption">
Takhle vypadají uložené zprávy, kterým přiřazuji emoji.</figcaption></figure>
<figure class="figure"><img alt="Skript" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-05-18-at-13-16-58.png"><figcaption class="figure-caption">
Projedu skriptem a ten mi zprávy roztřídí a uloží do komentářů ve zdrojových souborech příručky.</figcaption></figure>
<figure class="figure"><img alt="Příručka" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-05-18-at-13-18-08.png"><figcaption class="figure-caption">
Modifikované soubory, kam přibyly nové poznámky.</figcaption></figure>
<figure class="figure"><img alt="Hotovo" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-05-18-at-13-17-40.png"><figcaption class="figure-caption">
Zpracované zprávy skript označí, aby je pak už neřešil.</figcaption></figure>
<p>Nejsložitější bylo vymyslet, jak to má fungovat.
<a href="https://github.com/honzajavorek/junior.guru/blob/a1044b12c619b22af7079a3361750f470e051e2f/juniorguru/cli/notes.py">Výsledný skript</a> je už celkem jednoduchý a napsal jsem ho rychle.</p>
<p>Prošel jsem pak na Discordu přes 200 uložených zpráv a přiřadil jim emoji podle kapitol příručky, ke kterým si je chci přidat do poznámek.
Skript mi je uložil a tím je to celé hotovo.</p>
<p>Když si budu v budoucnu ukládat nějaké zprávy na Discordu, stačí je pak v soukromé konverzaci roztřídit pomocí emoji a spustit zase skript.
Jen je škoda, že Discord má omezený počet emoji, takže je tam nemůže bot předchystat, v příručce už je příliš mnoho stránek.
Musím je vždy hledat a dávat ručně.</p>
<p>I tak to ale bude velký posun k organizovanějším poznámkám kolem příručky a věřím, že mi tohle pomůže psát nové kapitoly rychleji a efektivněji.</p>
<h2 id="stable-diffusion">Stable Diffusion<small class="permalink"><a href="#stable-diffusion" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Ve volném čase si pořád ještě hraju se Stable Diffusion a stále studuju nové techniky a zahazuju staré. Akorát pro pracovní věci je mi to k ničemu, je to jen relax.</p>
<p>I když jsem objevil i LoRA, které dokázaly generovat docela konzistentní ilustrace v určitém stylu a to jsem si už říkal - aha, tohle by se dalo využít na webu. Ten si ilustruju sám, ale je to vždycky strašná práce. Mohl bych ty ilustrace generovat a byly by kvalitní a po celém webu konzistentní. Příklady:</p>
<ul>
<li><a href="https://civitai.com/models/51458/pen-and-ink">Pen and ink</a></li>
<li><a href="https://civitai.com/models/56082/watercolor-painting-vizsumit-or-lora">Watercolor</a></li>
<li><a href="https://civitai.com/models/45058">Wood</a></li>
<li><a href="https://civitai.com/models/65466/fashion-watercolor">Fashion watercolor</a></li>
</ul>
<figure class="figure"><img alt="Fashion watercolor LoRA" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-05-18-at-18-48-51.png"></figure>
<p>Ten poslední styl si úplně umím představit jako generátor ilustrací k článkům Heroine.cz třeba.
Škoda, že <a href="https://technomancers.ai/eu-ai-act-to-target-us-open-source-software/">se chystá legislativa</a>, která má open source modely a podomácku vyrobené LoRA naprosto zničit a rozprášit.
Asi je to <a href="https://simonwillison.net/2023/May/4/no-moat/">jediný způsob</a>, jak zajistit, že AI bude pěkně zregulované, v rukou monopolů, které na to mají dost peněz, a ne že si s tím bude hrát každý doma na noťasu.</p>
<p>V příští verzi AUTOMATIC1111 UI bude už <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/9256">tomesd</a>, nový způsob jak zrychlit generování větších a náročnějších obrázků.
Díval jsem se na nějaký <a href="https://github.com/brkirch/stable-diffusion-webui/releases">neoficiální build UI vyladěný přímo pro macOS</a>, ale nepozoroval jsem žádné zrychlení, tak jsem to zase smazal.
Kdo máte intelovský MacBook, kde AUTOMATIC1111 UI vůbec nefunguje, tak to ale zkuste, možná to díky tomu rozjedete.</p>
<p>Celkově mi ale trochu docházejí nápady a prvotní nadšení opadlo.
Nemám na to ani už tolik času.
Možná to nechám chvíli ležet a počkám, až přijde zas nějaká inspirace.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Prošel jsem připravovanou anketu, kterou chystá <a href="https://www.nelaprovazi.cz/">Nela</a>, a dal jí na to feedback.</li>
<li>Byl jsem na Pyvu, srazu Pythonistů.
Jedna z věcí, které mě tam zaujaly, je, že <a href="https://docs.apify.com/sdk/python/">Apify mají nově podporu pro Python</a>.
Pecka!
Nutnost psát scrapery v JavaScriptu mi bránila to na cokoliv použít.
Pamatuju si, že jsem to kdysi zkoušel a fakt jsem se snažil, ale vzdal jsem to a napsal jsem si scrapery sám v Pythonu.</li>
<li>Další firma mi napsala, že neprodlouží o rok partnerství.
Šetří.
Chápu.
Nebylo to moc peněz, tak to není velká tragédie, ale trend je asi jasný.</li>
<li>Dal jsem na web proužek, že mají lidi hlasovat pro Junior Guru podcast v anketě <a href="https://www.podcastroku.cz/">podcastroku.cz</a>.</li>
<li>Kamarád mě upozornil na <a href="https://github.com/leafac/kill-the-newsletter">kill-the-newsletter</a>, věc, která umožňuje odebírat newslettery pomocí RSS.
Ani bych si to <a href="https://kill-the-newsletter.com/">nemusel hostovat sám</a>.
Ale neměl jsem ještě čas se na to vlastně podívat.</li>
<li>Naučil jsem se používat <a href="https://support.apple.com/guide/mac-help/tag-files-and-folders-mchlp15236/mac">tagy ve Finderu na macOS</a>.
Zajímavá fičurka!
Kolem Stable Diffusion je asi pět různých složek, kam se potřebuji pravidelně přepínat.
Otagoval jsem si je a mám je všechny rychle přístupné.
Cool.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>.</li>
<li>Během 7 dní jsem při procházkách nachodil 5 km, ujel na kole 15 km. Celkem jsem se hýbal 7 h a zdolal při tom 20 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Psát novou stránku v příručce: Jak si vybrat kurz</li>
<li>Napsat různým lidem a firmám různé maily.</li>
<li>Vylepšit vítání členů v klubu a přeskupit v klubu zase trochu kanály.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.economist.com/finance-and-economics/2023/05/07/your-job-is-probably-safe-from-artificial-intelligence">Your job is (probably) safe from artificial intelligence</a><br>Fakt hodně dobrých postřehů (vycházejících z různých studií). Ochutnávka: „The biggest corporate winner so far from the new ai age is not even an ai company. At Nvidia, a computing firm which powers AI models, revenue from data centres is soaring.“ „Smartphones have been in widespread use for a decade, billions of people have access to superfast internet and many workers now shift between the office and home as it suits them. Official surveys show that well over a tenth of American employees already work at firms using ai of some kind, while unofficial surveys point to even higher numbers. Still, though, global productivity growth remains weak.“ „Blue-collar work, such as construction and farming, which accounts for about 20% of rich-world gdp, is one example. An llm is of little use to someone picking asparagus.“ „It is even possible that the ai economy could become less productive. Look at some recent technologies. Smartphones allow instant communication, but they can also be a distraction. With email you are connected 24/7, which can make it hard to focus.“</li>
<li><a href="https://www.economist.com/leaders/2023/05/11/is-chinese-power-about-to-peak?utm_medium=social-media.content.np&utm_source=twitter&utm_campaign=editorial-social&utm_content=discovery.content">Is Chinese power about to peak?</a><br>„Beijing’s economic power may be peaking, but no other country is so capable of challenging America globally“</li>
<li><a href="https://overcast.fm/+Wv2QlvpYA">Strejček: Beru velké prachy za debilní ilustrace, umělé inteligence se nebojím, i když většina lidí půjde od válu - Prostor X podcast — Prostor X</a><br>Fajn rozhovor s výtvarníkem. Sebere mu Stable Diffusion práci?</li>
<li><a href="https://www.voxpot.cz/pravo-samospravy-na-sebedestrukci-obce-nestihaji-planovat-rozvoj-a-krotit-developery-skody-jsou-trvale/">Právo samosprávy na sebedestrukci. Obce nestíhají plánovat rozvoj a krotit developery, škody jsou trvalé - VOXPOT</a><br>„Praha přímo sousedí s katastry zhruba 40 obcí. Téměř 500 jich pak leží v prstenci označovaném jako Pražská metropolitní oblast. V České republice je celkem 6254 obcí, nejvíce na obyvatele v celé Evropské unii. Každá z nich si schvaluje územní plán sama. Prostor pro korupci či i legální ovlivňování postojů veřejnosti a zastupitelů – například skrze sponzorské dary chudým obcím či místním spolkům – je tak obrovský.“</li>
<li><a href="https://www.telegraph.co.uk/business/2023/05/07/poland-europe-superpower-communism-putin-military/">Poland will be wealthier than Britain by 2030 – it’s time we took notice</a><br>„What this means is that Poland may well soon possess the largest and best land fighting capabilities of all the European members of Nato. Even France, with only some 200,000 front-line troops, may soon find itself outnumbered by Poland.“ „Adjusted for purchasing parity, GDP per head in Poland is now £28,200 compared with £35,000 in the UK, £34,200 in France and £39,800 in Germany. At its current trajectory rate, Poland will overtake the UK by 2030.“</li>
</ul></div></div></div></div>Týdenní poznámky: Katalog kurzů a úklid v Trellu2023-05-12T00:00:00+02:002023-05-12T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-05-12:/blog/tydenni-poznamky-katalog-kurzu-a-uklid-v-trellu/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-propojeni-katalogu-s-partnery-stable-diffusion/">posledních poznámek</a> už utekl nějaký ten týden (8. 5. až 12. 5.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-propojeni-katalogu-s-partnery-stable-diffusion/">posledních poznámek</a> už utekl nějaký ten týden (8. 5. až 12. 5.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/b5bb05d439c71b800ca520b63c5ae9ab261d10d19681ff2bc2acce0c/">Glance Media</a>, <a href="https://junior.guru/jobs/dbbb7bf406b3c33aeba36cae817919d44bfb368a08fb1b4899dba130/">Processand</a>, <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="katalog-kurzu">Katalog kurzů<small class="permalink"><a href="#katalog-kurzu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Tento týden se mi na rozdíl od předchozího povedlo s katalogem docela pohnout vpřed 💪</p>
<ul>
<li>Do katalogu jsem přidal <a href="https://junior.guru/courses/programkonet/">Programko.NET</a>, <a href="https://junior.guru/courses/cs50/">CS50</a>, <a href="https://junior.guru/courses/lovelydata/">Lovely Data</a>, <a href="https://junior.guru/courses/skolakodu/">Škola kódu</a>.</li>
<li>Partnerské firmy mají v seznamu kurzů odkaz, který nemá <em>nofollow</em>, takže jim to zlepší SEO.</li>
<li>Obarvil jsem partnerské firmy v seznamu kurzů i na podstránkách.
Vysvětlil jsem tam, co to znamená, že firma je partnerská.</li>
<li>Propojil jsem seznam kurzů s podstránkami, takže když se teď v seznamu klikne na nějaký kurz, člověk je stále na junior.guru a až tam se dá prokliknout na samotnou webovku kurzů.
Na podstránce zatím nic moc není, ale chci tam postupně doplňovat různé informace.</li>
<li>Předělal jsem, jak můj kód dělá screenshoty, nebo řekněme jak zjišťuje, jaký screenshot jaké URL má udělat.
Potřeboval jsem to proto, že poprvé mám na webu kartu se screenshotem (web kurzu), která ale odkazem vede jinam (na podstránku).
Předtím můj skript v podstatě scrapoval moje vlastní vygenerované HTML a hledal v něm karty s odkazy.
Teď jsem to udělal explicitnější, přes <code>data-</code> atributy v HTML, kde mohu přesně specifikovat, co chci aby se dělo.</li>
<li>Vymyslel jsem ceník pro vzdělávací agentury.
Ceník mám dlouhodobě v Google Docs, takže jsem jen šel do dokumentu a upravoval ho, dokud se mi to nelíbilo.
Původně jsem se snažil <a href="https://twitter.com/levelsio/status/1430876859885969413">myslet na Levelse</a>, ale <a href="https://junior.guru/pricing/">nakonec je to mnohem jednodušší</a>.</li>
<li>Hned jsem to poslal všem vzdělávacím agenturám, se kterými jsem se v minulosti o katalogu bavil (5 firem).
S jednou z nich mám zcela nedořešené vztahy a tarif, zůstalo to nějak na půl cesty, takže tam bych to rád dořešil a buď s nimi partnerství ukončil, nebo jej zařadil do jedné ze škatulek.</li>
<li>Katalog jsem poslal i Yablkovi, ať na to mkrne a napíše mi, co si o tom vůbec myslí.</li>
</ul>
<figure class="figure"><img alt="Katalog" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-05-12-at-19-13-08-kurzy-programovani.png"></figure>
<h2 id="hledani-kancelare">Hledání kanceláře<small class="permalink"><a href="#hledani-kancelare" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Hledám malou kancelář na Žižkově s nájmem kolem 2.000 Kč měsíčně maximálně. Možná by se přidal kamarád, potom bychom se ve dvou složili a mohlo by to být za 4.000 Kč celkem.</p>
<p>Mám minimální nároky, zásuvka, internet, záchod 🙂 Přístup tak, aby nebyl problém přijít v 7 ráno nebo odejít ve 21:00 večer. Stůl bych si asi zvládl sehnat, židli nepotřebuji. Teoreticky by to mohlo být s někým i sdílené, ale ideálně abych si tam mohl bezpečně nechat pár věcí a abych tam občas večer mohl mít nikým nerušený videohovor.</p>
<p>Koukal jsem se po různých coworcích, ale ceny mají vyšší a většinu jejich služeb nevyužiji (hledám spíš klid než lidi).</p>
<p>Nevíte někdo o něčem? Předem díky.</p>
</blockquote>
</figure><p>Takhle jsem to napsal <a href="https://www.facebook.com/groups/praha3/posts/1452151182259027/">do sousedské skupiny</a>, no někdo se mi ozval, někdo se mi vysmál.
Uvidím, co z toho bude.
Pokud o něčem víte, dejte vědět.</p>
<h2 id="statistiky-na-prd">Statistiky na prd<small class="permalink"><a href="#statistiky-na-prd" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když jsem zkoumal, proč některé grafy na <a href="https://junior.guru/open/">stránce s čísly</a> vypadají divně, zjistil jsem, že jsem asi o nějaká historická čísla prostě přišel.
Au.</p>
<figure class="figure"><img alt="Příchody" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-04-19-at-13-16-16.png"></figure>
<figure class="figure"><img alt="Odchody" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-04-19-at-13-16-20.png"></figure>
<p>Po zdražení členství jsem si uklízel v administraci a smazal jsem staré tarify.
Tím se mi však povedlo omylem nenávratně smazat historická data, tedy všechny údaje o předplatných navázané na objekty těch tarifů.
Takže grafy přestaly dávat smysl.</p>
<p>Zatím jsem jen ořízl časové osy a věci související s členstvím začínají všechny až v březnu 2023.
Přes administraci Memberful jsem zjistil, že mají kromě evidence tarifů a předplatného i nějakou denormalizovanou časovou osu „aktivit“, která je i v API a asi by z ní nějaké údaje šly zpětně vyčíst.
Jenže to bych teď musel jít a všechny ty statistiky naprogramovat znova.
Takže třeba někdy.</p>
<figure class="figure"><img alt="Příchody po ořezání" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-05-12-at-22-07-35.png"></figure>
<h2 id="realtime-bot">Realtime bot<small class="permalink"><a href="#realtime-bot" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Mrknul jsem po delší době na <a href="https://github.com/juniorguru/juniorguru-chick/issues">realtime bota</a> a přidal do něj nové funkce:</p>
<ul>
<li>Když někdo ručně přidá pracovní inzerát pro juniory, bot mu hned dá emoji "ďk".
Jednak je fajn, když si někdo dá tu práci a do klubu inzerát vloží, jednak se mi to pak lépe rozlišuje od inzerátů, které tam sype samotný bot.</li>
<li>Když někdo vloží pracovní poptávku, tzn. popíše kdo je a co hledá, bot mu hned dá emoji s palcem nahoru.</li>
<li>Když se někdo představí v kanálu #ahoj, bot okamžitě vytvoří vlákno a přidá tři první emoji jako reakce.
Ještě by tam časem měla být i nějaká uvítací zpráva, ale to je složitější, chci to celé předělat, takže to zatím dělá pomalý bot jen jednou denně.
Krůček po krůčku.</li>
</ul>
<h2 id="firmy">Firmy<small class="permalink"><a href="#firmy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Napsal jsem čtyřem firmám, kterým bude brzy končit partnerství s junior.guru.
Zatím odepsala jen jedna.</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Pokud jde o prodloužení partnerství, tak zde mám špatnou zprávu, prodlužovat ho nebudeme. Bohužel se mi z tvého kanálu nedostal do rukou žádný kandidát, kterého bychom připustili do alespoň druhého kola pohovorů a celkově ta kvalita byla spíše horší. To samozřejmě není tvá chyba, jen říkám, jak to je. Úroveň kandidátů, kteří k nám jdou od jinud, je jednoduše výrazně vyšší a stojí nám za investici víc.</p>
</blockquote>
</figure><p>Nečte se to dobře, ale je to realita.
Můžeme se bavit o tom, jaké měli nároky a zda jsme se pochopili v tom, jak vypadá úplný začátečník v oboru, nicméně to není jejich problém.
To je můj problém, abych prostě tu <em>experience</em> zlepšil, abych to lépe vysvětlil, a hlavně abych dodal hodnotu.
Abych prodával něco, po čem si firma řekne: „Jo, to bylo dobrý, něco nám to vyřešilo“.
A já časem docházím k názoru, že pracovní inzeráty na juniory tenhle efekt nemají a mít nebudou, i kdybych se na hlavu postavil.</p>
<p>Myslím si, že vím, co mám firmám nabídnout (viz <a href="https://honzajavorek.cz/blog/strategie-na-2023/#kurzy">bermudský trojúhelník</a>), ale zatím to nabídnout neumím, takže se nedá nic dělat.
Letos mám v prioritách katalog kurzů, tohle holt musí počkat na 2024.
Možná už bude i lepší situace na trhu a bude dávat i větší smysl investovat do toho energii.</p>
<p>Očekávám, že z těch dalších třech firem prodlouží jen jedna, ale nechám se překvapit.
Každá firma do toho šla s jiným očekáváním a z jiných důvodů, takže záleží, jak si to vyhodnotí a kolik peněz mají.
V září jsem zdražoval a měnil ceník tak, abych měl méně firem za víc peněz.
Do toho je <a href="https://archiv.hn.cz/c1-67168170-zchlazeni-na-trhu-prace-v-it-firmy-jez-pred-rokem-inzerovaly-pet-volnych-mist-nyni-nabizeji-jen-dve">zbrždění trhu, firmy šetří</a>.</p>
<p>Tohle všechno se kombinuje dohromady a vychází z toho, že mi dost firem letos partnerství neprodlouží.
Částečně záměrně, takže se z toho nesypu.
Ale zbystřuji, protože už mi neprodloužily i firmy, které by prodloužit chtěly, jen na to prostě teď nemají peníze.
Pokud nebudou nové příjmy díky katalogu a stoupne mi zase režie (zvýšení cen, inflace, energie, teď zase změny v daních pro OSVČ…), tak je otázka, zda mě nečeká nějaký nouzový režim.</p>
<p>Znamenalo by to nechat všeho, co dělám, přitlačit na <em>sales</em>, a prostě hledat peníze, kde to půjde, místo abych se zabýval tvorbou hezkých věcí.
Junioři si mě v klubu platí, ale je to „jen“ 52 % mých příjmů.</p>
<h2 id="stable-diffusion">Stable Diffusion<small class="permalink"><a href="#stable-diffusion" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Po večerech jsem se naučil nějaké nové věci kolem Stable Diffusion, ale vlastně jsem je na nic zajímavého zatím nepoužil.
Spíš se s tím učím a přemýšlím, co bych s tím mohl vyrobit, ale nějak mi došly vlastně nápady.
Taky hraje roli to, že ty pokročilé věci mi jedou fakt pomalu, takže jsem se zase vrtal v tom, zda to nejde nějak zrychlit.</p>
<ul>
<li>Naučil jsem se základy používání Control Net a prozkoumal trochu víc img2img.</li>
<li>Koukal jsem na <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/7453">How to improve performance on M1 / M2 Macs</a>.
Autor dokonce udržuje nějaký <a href="https://github.com/brkirch/stable-diffusion-webui/releases">svůj vlastní fork automaticu</a>, kde má vylepšení pro Apple zařízení.
To jsem zatím nezkoušel, ale pokukuju po tom.</li>
<li>Dřív se mi nepovedlo rozchodit <a href="https://github.com/dbolya/tomesd">tomesd</a>, možná by to teď šlo.
Zatím jsem nezkoušel.</li>
<li>Ladil jsem výkon a <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/9133#issuecomment-1544511246">diskutoval v issues</a>.</li>
</ul>
<h2 id="uklid-v-trellu">Úklid v Trellu<small class="permalink"><a href="#uklid-v-trellu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Jako další úkol jsem si zadal napsat novou stránku do příručky, která by popisovala, jak si mají lidi vybírat kurzy.
Než začnu, chci si udělat pořádek v poznámkách, které si ukládám k příručce.</p>
<p>Doteď to bylo velké množství sloupců v Trellu podle jednotlivých kapitol.
Přemýšlel jsem, zda na to mít separátní Trello, nebo to dát do Notionu, nebo GitHub Issues.
Nakonec jsem si řekl, že stejně když jdu psát kapitolu, tak si vše nakopíruju do HTML komentáře pod Markdown a pak to postupně zpracovávám, takže to tak prostě rovnou udělám.</p>
<p>Vytvořil jsem si novou stránku pro každou kapitolu, kterou chci do příručky přidat.
Ty, na kterých nic není, nejsou zapojeny do navigace a běžný člověk se k nim neprokliká, ale soubory už tam jsou.
A v těch souborech jsou komentáře a v nich všechny moje poznámky.
U stránky o pohovorech jsem rovnou vyřízl kus z původní příručky a je z toho <a href="https://junior.guru/handbook/interview/">tahle nová stránka</a>.</p>
<p>Do tohoto zdánlivě chaotického a nestrukutovaného, ale mě nejspíš vyhovujícího formátu, jsem zatím přemístil asi deset sloupců z Trella.
Zbývá už jen jeden, kde je ale přes 500 karet.
Potom si chci projít ještě uložené zprávy z Discordu, těch je podle mě přes 100, možná i 200.
To vše si přepíšu do těch HTML komentářů a přetřídím.</p>
<p>Nové poznámky už si budu zapisovat nějak rovnou do těch souborů.
To ještě uvidím.</p>
<p>Abych měl trochu přehled, udělal jsem si nějaké statistiky a dal jsem si je na <a href="https://junior.guru/open/#prirucka">stránku s čísly</a>.
Upřímně si nejsem jistý, jak moc je tento „graf“ užitečný, ale pro začátek asi lepší než nic.</p>
<figure class="figure"><img alt="Statistiky, příručka" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-05-11-at-13-00-13-jak-se-dari-provozovat-junior-guru.png"></figure>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Snažím se prodat lístek na <a href="https://festivalopsani.cz/">Festival o psaní</a>, kam jsem chtěl jít, ale pojedu v tom termínu nakonec na dovolenou.
Moje cena 1.500 Kč.</li>
<li>Udělal jsem konečně <a href="https://www.linkedin.com/posts/honzajavorek_engineering-pohovory-interviews-activity-7061736620999221248-6_Rs?utm_source=share&utm_medium=member_desktop">promo na náš poslední díl podcastu</a>.</li>
<li>Dostal jsem pozvánku na <a href="https://www.hackercamp.cz/">Hacker Camp</a>, ale obávám se, že na to vlastně nemám peníze 😀
No ještě to prozkoumám.
Myslím, že budu rád, když letos zvládnu <a href="https://blog.python.cz/Letni-sprinty-Python-komunity-v-Msenem">Python sprint</a>.</li>
<li>Zdá se, že jsem našel někoho, kdo by mohl dělat rozhovory s juniory.
Sice je nemám kde publikovat a kdo ví, kolik na to mám vůbec peněz, ale… krůček po krůčku, ono to nějak půjde.
Tento týden jsem mu konečně předal dlouho slibované podklady.</li>
<li>Zjistil jsem, že existuje projekt WhiteNoise.
Zajímavá je především sekce <a href="https://whitenoise.readthedocs.io/en/stable/#infrequently-asked-questions">Infrequently Asked Questions</a>.</li>
<li>Vyměnil jsem si nějaká eura, ať máme čím platit na dovolené.
Pořídili jsme kočárek golfák, ať máme do čeho na dovolené dát dítě.</li>
<li>Účastnil jsem se akce Prague Professional Community o Salary Transparency.
Je z toho <a href="https://www.linkedin.com/posts/jeannetrojan_the-prague-professional-community-tackled-activity-7061650300201246720-XroW/">fotka</a>.
Byl jsem tam jediný, kdo narovinu řekl, kolik vydělává 😀
Chystá se směrnice EU, která má do roku 2025 mimo jiné nařídit, aby všechny nabídky práce uváděly i mzdové rozpětí.
Některým přítomným to přišlo jako úplné sci-fi.
Na Slovensku to mají už dávno 😀</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>.</li>
<li>Během 5 dní jsem při procházkách nachodil 3 km. Celkem jsem se hýbal 2 h a zdolal při tom 3 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Dodělat úklid v Trellu.</li>
<li>Psát novou stránku v příručce: Jak si vybrat kurz</li>
<li>Shánět kancelář.</li>
</ol>
<p>Pokud si budu chtít od psaní odpočinout, tak bych mohl vylepšit vítání členů v klubu a přeskupit v klubu zase trochu kanály.</p>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://simonwillison.net/2023/May/4/no-moat/?utm_source=tldrnewsletter&utm_medium=email">Leaked Google document: “We Have No Moat, And Neither Does OpenAI”</a><br>„While our models still hold a slight edge in terms of quality, the gap is closing astonishingly quickly. Open-source models are faster, more customizable, more private, and pound-for-pound more capable. They are doing things with $100 and 13B params that we struggle with at $10M and 540B. And they are doing so in weeks, not months.“</li>
<li><a href="https://www.foreignaffairs.com/ukraine/world-beyond-ukraine-russia-west">The World Beyond Ukraine</a><br>Článek detailně popisuje, jak válka na Ukrajině sjednotila Západ, ale ne svět. Proč? Protože ostatni státy Ukrajina nebo rivalita s Čínou akorát zdržuje od důležitějších věcí. Je to pro ně stejně nedůležité, jako pro nás válka v Jemenu. Západ také ztrácí důvěru tím, jak hodně mluví, ale málo koná. Nebo nastavuje pravidla, ale sám je porušuje. „According to the Economist Intelligence Unit, two-thirds of the world’s population live in countries that are officially neutral or supportive of Russia. These countries do not form some kind of axis of autocracy; they include several notable democracies, such as Brazil, India, Indonesia, and South Africa.“ „The preferred Western framing of the war in Ukraine—as a contest between democracy and autocracy—has not resonated well outside Europe and North America.“</li>
</ul></div></div></div></div>Týdenní poznámky: Propojení katalogu s partnery, Stable Diffusion2023-05-08T00:00:00+02:002023-05-08T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-05-08:/blog/tydenni-poznamky-propojeni-katalogu-s-partnery-stable-diffusion/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-clanek-o-ai-webexpo-a-katalog-kurzu/">posledních poznámek</a> už utekl nějaký ten týden (28. 4. až 8. 5.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Cyklistky" src="https://honzajavorek.cz/images/00009-457809728-4.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Cyklistky, výsledek mého hraní si se Stable Diffusion. Nemají kolo, protože na tom si AI …</figcaption></figure></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-clanek-o-ai-webexpo-a-katalog-kurzu/">posledních poznámek</a> už utekl nějaký ten týden (28. 4. až 8. 5.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Cyklistky" src="https://honzajavorek.cz/images/00009-457809728-4.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Cyklistky, výsledek mého hraní si se Stable Diffusion. Nemají kolo, protože na tom si AI naprosto vyláme zuby.</figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/b5bb05d439c71b800ca520b63c5ae9ab261d10d19681ff2bc2acce0c/">Glance Media</a>, <a href="https://junior.guru/jobs/dbbb7bf406b3c33aeba36cae817919d44bfb368a08fb1b4899dba130/">Processand</a>, <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="frontendova-prednaska-s-martinem-kolarem">Frontendová přednáška s Martinem Kolářem<small class="permalink"><a href="#frontendova-prednaska-s-martinem-kolarem" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>V klubu proběhla přednáška od <a href="https://martinkolar.eu/">Martina Koláře</a> o tom, jak si nastavit nový projekt.
Dalo nám práci najít termín, dokonce jsem to i posouval.
Promo na přednášku jsem pak dělal trochu na poslední chvíli, ale účast byla slušná.</p>
<p>Nic se nepokazilo a bylo to fajn.
Martin to měl jako trénink na nějaké konference, které bude objíždět, takže se snažil vlézt do půl hodiny.
Díky tomu byl velký prostor pro otázky a lidi měli dotazů spoustu, takže paráda.</p>
<figure class="figure"><img alt="Martin Kolář" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/20230502-3f3aaec5b7c5e252772147bbd1c1050b64fc6e43ee24e27d09bc9fb8502270de-dc.png"></figure>
<h2 id="katalog-kurzu-zapaseni-s-peewee">Katalog kurzů: Zápasení s Peewee<small class="permalink"><a href="#katalog-kurzu-zapaseni-s-peewee" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Pokračoval jsem ve vylepšování katalogu kurzů, ale můj postup se výrazně zasekl při pokusu propojit dvě databázové tabulky.
Možná to bylo i tím, že když jsem se do toho pustil, měl jsem zrovna den s trochu rozstřeleným soustředěním, ale prostě jsem se do toho strašně zamotal a nemohl jsem uvěřit tomu, že něco takového řeším déle než hodinu.
Řešil jsem to nakonec několik dní.</p>
<p>Zjistil jsem, že když chci propojit databázovou entitu „poskytovatel kurzů“ s entitou „partnerská firma“ skrze 1:1 vztah, dostanu se s <a href="https://docs.peewee-orm.com/en/latest/">Peewee</a> do zacyklujících se importů.
Vždy jsem vymyslel nějaký jiný způsob, jak to udělat, a vždy mě to zase hryzlo.
Zabil jsem různým refactoringem a drbáním na hlavě několik dní.
Ani AI mi nepomohlo.
Prohledával jsem řešení na internetu, ale bez úspěchu.
Našel jsem akorát několik issues přímo na Peewee repozitáři, kde se autor knihovny konzistentně a opakovaně <a href="https://github.com/coleifer/peewee/issues/1158">vyjadřuje v tom smyslu</a>, že tohle celé je tzv. „problém někoho jiného“ a ty, kdo to potřebují vyřešit, háže přes palubu:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Your issue is a circular import. That's not really an issue peewee is designed to solve.</p>
</blockquote>
<figcaption class="blockquote-footer"> Charles Leifer</figcaption>
</figure><p>Týden se prostě nesl v duchu opraváře traktoru („kvůli jediné pi*ovince musíš rozebrat celý traktor“).
Bylo velice frustrující zjistit, že v SQLAlchemy by stejná věc byla <a href="https://docs.sqlalchemy.org/en/20/orm/basic_relationships.html#one-to-one">na pět minut a mají ji přímo v dokumentaci</a>.
Došlo to tak daleko, že jsem dokonce zvažoval, kolik by reálně vzalo času celé junior.guru přepsat na SQLAlchemy.</p>
<p>Peewee jsem kdysi vybral proto, že to bylo malé sympatické ORM a na webísek se třemi stránkami jsem „žádný větší overkill nepotřeboval“.
Dnes bych se vytahal za uši.
SQLAlchemy je standard, který používají všichni, návodů je plný internet (tzn. napovídal by mi to GitHub Copilot), umí to všechno.</p>
<p>Každopádně nakonec jsem to nějak vyřešil přes cizí klíč, překopání návrhu modelů a iterace přímo v Pythonu místo toho, aby se určité věci děly přímo v SQL dotazech.
Efekt na výkon to má nulový, bavíme se o desítkách záznamů.
Možná jsem se měl zastavit už v začátku a udělat to nejrychlejší možnou cestou, byť ne teoreticky nejsprávnější, ale prostě mě zaskočilo, že ta nejsprávnější cesta je v mém ORM prakticky neuskutečnitelná a nemohl jsem tomu několik dní uvěřit.
Radost z toho celého nemám, ale je to vyřešeno a je na čase se posunout dál.</p>
<figure class="figure"><img alt="Zvýrazněné firmy" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-05-05-at-20-05-15-kurzy-programovani.png"></figure>
<p>Po týdnu snažení mám katalog, kde jsou partnerské firmy označeny a seřazeny jako první podle tarifu, který mají zaplacený.
Zaplacené kurzy mají odkaz bez <em>nofollow</em>.</p>
<h2 id="relaxovani-se-stable-diffusion">Relaxování se Stable Diffusion<small class="permalink"><a href="#relaxovani-se-stable-diffusion" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Snažím se dodržovat státní svátky, takže včetně dneška mám dva dny volna navíc.
První prodloužený víkend jsme podnikali rodinné výlety, druhý víkend bylo horší počasí i zdraví, tak jsme byli spíš doma.
Sice se jela F1 v Baku a Miami, ale oboje byla strašlivá nuda.
Takže jsem relaxoval hlavně u Stable Diffusion.</p>
<figure class="figure"><img alt="Klobouky" src="https://honzajavorek.cz/images/00009-457809728-2.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Holky v klobouku, výsledek mého hraní si se Stable Diffusion.</figcaption></figure>
<p>Jede mi to hodně pomalu, takže vždy zadám nějaké vstupy, spustím to a jdu něco dělat.
Pak se vrátím a podívám se, co tam na mě vyjelo za překvapení.</p>
<figure class="figure"><img alt="Žehličky" src="https://honzajavorek.cz/images/00009-457809728.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Se ženou jsme zkoušeli generovat chlapa v havajské košili, který žehlí. AI má zjevně s žehličkami problém a dost jsme se u toho nasmáli.</figcaption></figure>
<p>Pokoušel jsem se vyřešit tu rychlost, ale je to zapeklité.
Na M1 MacBooku to jede, ale nedokáže to využít celý potenciál jeho HW.
Navíc je potřeba strašně moc RAM a já mám jen 8 GB.
Protože M1 strašně rychle a efektivně swapuje na strašně rychlý disk, můj běžný provoz málo paměti vůbec neomezuje a vše je velmi rychlé, ale na Stable Diffusion tenhle trik neplatí.</p>
<figure class="figure"><img alt="Star Wars" src="https://honzajavorek.cz/images/00009-457809728-1.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Moje pokusy vygenerovat něco jako Star Wars bojovnici, která běží džunglí.</figcaption></figure>
<h3 id="invokeai">InvokeAI<small class="permalink"><a href="#invokeai" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<p>Nejdřív jsem si dělal naději, že by mohlo pomoci <a href="https://invoke-ai.github.io/InvokeAI/">InvokeAI</a>, které navíc na videích vypadá fakt dobře.
Instaloval jsem to půl dne, nastahoval gigabajty dat, ale nakonec jsem s tím nic nevyprodukoval.
Cokoliv jsem zkusil, napsalo mi to akorát, že mi vytekla aplikační paměť a mohl jsem akorát restartovat celý MacBook.
Tohle se mi s <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui">AUTOMATIC1111</a> ani <a href="https://diffusionbee.com/">DiffusionBee</a> nikdy nestalo.</p>
<h3 id="coreml">CoreML<small class="permalink"><a href="#coreml" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<p>Všiml jsem si, že <a href="https://twitter.com/pcuenq/status/1620080393226706945">existují způsoby</a>, jak využít plný výkon M1.
Jmenuje se to CoreML a využívá to čip, který má M1 přímo na výpočet věcí kolem machine learningu.</p>
<p>Zkusil jsem <a href="https://github.com/huggingface/swift-coreml-diffusers">Diffusers</a>, ale nejdou tam dát vlastní modely a výsledky byly rychlé, nicméně mizerné.
Když jsem pátral dál, našel jsem <a href="https://github.com/godly-devotion/MochiDiffusion">MochiDiffusion</a>, appku, která je někde mezi DiffusionBee (skoro tak dobrá) a tím Diffusers (využívá CoreML).
Podporuje vlastní modely, ale aby šlo použít CoreML, je potřeba je konvertovat do Applího formátu.
Na to jsou nějaké skripty, což vyžaduje nějakou znalost Pythonu, je potřeba mít nainstalované Xcode, což vyžaduje stáhnout další gigabajty na disk, a ještě to trvá strašně dlouho.
Šťoural jsem do toho víc a víc a pochopil jsem, že CoreML jde pouštět i přímo z příkazové řádky.
Dost mi pomohl návod <a href="https://mybyways.com/blog/fast-stable-diffusion-using-core-ml-on-m1">Fast Stable Diffusion using Core ML on M1</a> od C. Y. Wonga.</p>
<p>Povedlo se mi to rozběhat!
Vytváření obrázků bylo fakt rychlé a šlo použít vlastní model.
Jenže výsledky opět mizerné, až bych řekl směšné.
Lze použít jen velmi krátký prompt a jen jedno rozlišení, nelze nastavit sampler.
Oproti tomu, co umí AUTOMATIC1111, je to jako se z moderní doby vrátit někam k otesávání pazourků.</p>
<p>Své zkušenosti jsem popsal <a href="https://github.com/divamgupta/diffusionbee-stable-diffusion-ui/issues/416#issuecomment-1532359672">do issue na repozitáři DiffusionBee</a>, které jsem původně založil, abych autory namotivoval tuhle technologii přímo zahrnout do jejich appky.
Většina omezení plyne přímo z toho, co (ne)podporuje samotné CoreML od Applu, takže je nikdo hned tak nevyřeší.
Tím jsem uzavřel své pátrání co se týče rychlejšího výkonu a smířil se s tím, že jestli chci kvalitu a nejrůznější triky, musím se smířit s rychlostí a možnostmi, jaké nabízí AUTOMATIC1111.
Na M1 je to v současnosti nejfunkčnější řešení.</p>
<h3 id="pytorch-v2">PyTorch v2<small class="permalink"><a href="#pytorch-v2" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<p>Nakonec jediné zrychlení, které se mi povedlo dosáhnout, měl na svědomí samotný AUTOMATIC1111.
Vydal novou verzi, kde se používá PyTorch v2 a je to u mě znatelně rychlejší!
Stačilo udělat <code>git pull</code> a aktualizovat závislosti.
A <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/10096#discussion-5161302">vyřešit jeden zásek v tom</a>, že původní nastavení výkonu se muselo smazat.</p>
<h3 id="vychytavky">Vychytávky<small class="permalink"><a href="#vychytavky" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<ul>
<li><a href="https://liner.ai/">Liner</a>, appka na trénování vlastních modelů.
Nezkoušel jsem zatím.</li>
<li>Zajímavá galerie pro inspiraci: <a href="https://github.com/joelparkerhenderson/stable-diffusion-image-prompt-gallery/tree/main">joelparkerhenderson/stable-diffusion-image-prompt-gallery</a></li>
<li>Napsal jsem si krátký Python skript, který mi monitoruje složku, kam se generují obrázky, a pošle mi nové obrázky na Telegram.
Můžu tedy nastavit generování hromady obrázků, nechat to běžet, jít třeba ven a v pauzách se na mobilu těšit z toho, co to generuje.
Většinu toho skriptu mi pomohl napsat GitHub Copilot.</li>
<li>Naučil jsem se <a href="https://www.youtube.com/watch?v=bQK5diN59NA">dynamic prompts</a> a je to super.</li>
</ul>
<h3 id="co-neumim">Co neumím<small class="permalink"><a href="#co-neumim" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h3>
<p>Zatím jsem si hrál pouze s tzv. txt2img, protože je to nejrychlejší.
Zároveň je to ale dost omezené co se týče toho, co jde vygenerovat.
V podstatě všechny osoby akorát pózují jak na instáči.</p>
<figure class="figure"><img alt="Pózičky" src="https://honzajavorek.cz/images/00009-457809728-3.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Vygenerovat holku, která drží zmrzlinu, nebo si ji třeba kupuje, je problém. Holky sedící ve vlaku se mi dařily víc, ale polovina z nich sedí bokem jako v metru.</figcaption></figure>
<p>Různými triky jde dosáhnout toho, že generované osoby mají relativně normální ruce, správný počet rukou, nebo celkem pěkný obličej.
Udělat ale cokoliv navíc, třeba dát jim do ruky zmrzlinu, mobil, žehličku, knížku, nebo kolo, je nadlidský úkol.
Zkoušel jsem se <a href="https://www.reddit.com/r/StableDiffusion/comments/138frrr/tips_on_prompting_other_than_pinup_or_portrait/">ptát na Redditu</a> a odpověď je, že mám používat img2img a control nets.
<a href="https://www.youtube.com/watch?v=zmobGnOjnAE">Tenhle návod</a> ukazuje, co vše s tím jde dělat.
Takže budu teď asi zkoušet tohle.
Při psaní poznámek jsem zkusil první obrázek a trvalo to věčnost, ale vypadá to celkem slibně.
Na první pokus jsem takový úspěch rozhodně nečekal!</p>
<figure class="figure"><img alt="Elfka" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-05-08-at-13-23-25-stable-diffusion.png"><figcaption class="figure-caption">
Z lučištnice Elfka pomocí img2img.</figcaption></figure>
<h2 id="heroes-na-macos-pres-porting-kit">Heroes na macOS přes Porting Kit<small class="permalink"><a href="#heroes-na-macos-pres-porting-kit" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Díky náhodnému čtení Redditu jsem narazil na <a href="https://www.reddit.com/r/macgaming/comments/1325he7/comment/ji407pn/?context=3">komentář, který zmiňuje Porting Kit</a>.
Myslel jsem, že znám už snad všechny způsoby, jak se dají na macOS rozběhat staré Windows hry, ale zjevně ne.
O Porting Kitu jsem doteď neslyšel!</p>
<p>Žena si už několikrát posteskla, že na macOS nejedou Heroes of Might and Magic, které má celý život moc ráda.
Tak jsem zkusil ten Porting Kit a ono to fakt funguje!
Hru jsme koupili přes GOG, nainstalovali přes Porting Kit podle jejich návodu, a hotovo.</p>
<p>Ne že bychom měli při výchově malého dítěte na cokoliv moc čas, ale když už se někde půlhodina najde, je dobré, pokud máme každý nějakou možnost relaxovat.
Tohle je nová pecka v repertoáru manželky a mám velkou radost z toho, že se to povedlo rozjet.</p>
<p>Bohužel moje vysněná hra nejede ani přes tenhle Porting Kit.
Zkoušel jsem to a smůla.
Jak na macOS, navíc Apple Siliconu, bez Windows rozběhat <a href="https://www.gog.com/en/game/original_war">Original War</a>, to zůstává nedořešenou otázkou století.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Do Prahy se stavil kamarád z Indie, resp. nyní z Londýna, a jeden večer jsme propařili.</li>
<li>Sešel jsem se s Martinem Kavkou a dlouho jsme si povídali.
Brzo někde něco vyjde!
Sledujte <a href="http://newslettery.cz">newslettery.cz</a> a <a href="http://tvurcast.cz">Tvůrcast</a>!</li>
<li>Psal jsem autorům filmu <a href="https://dafilms.cz/film/12793-nova-sichta">Nová šichta</a>, zda si ho můžeme nějak pustit společně online v klubu.</li>
<li>Dělali jsme spolu s Red Hatem v klubu anketu, která zjišťovala mezi juniory zájem o part time a důvody.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>.
V klubu byl fakt velký provoz, takže jsem strávil hodně hodin jen čtením a odpovídáním.</li>
<li>Zaregistroval jsem se do nějakého nového Strava Developer programu.
Mám obavu, že můj skript na analýzu kolik jsem toho naběhal a najezdil na kole za poslední týden, nevyhodnotí jako něco, co je pro ně zajímavé, nebo co <a href="https://developers.strava.com/guidelines/">dodržuje jejich branding guidelines</a>, a zaříznou mě.
<a href="https://github.com/honzajavorek/honzajavorek.cz#-weeknotes">Přidal jsem si do README jejich logo</a>, bude to stačit? 😅</li>
<li>Během 11 dní jsem ujel na kole 36 km. Celkem jsem se hýbal 6 h a zdolal při tom 36 km.
Detaily na <a href="https://www.strava.com/athletes/31242569">Strava</a>, jediné sociální síti, kde si napsání statusu musíte zasloužit.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Napsat čtyřem firmám, kterým bude končit partnerství s klubem.</li>
<li>Propojit výpis kurzů s podstránkami, zvýraznit partnery na podstránkách.</li>
<li>Vymyslet speciální ceník pro vzdělávací agentury.</li>
</ol>
<p>Hned zítra jdu na jeden ranní event a taky bych neměl zanedbávat administrativu a čtení klubu.
No, bude toho zase nějak hodně.</p>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://mimo-agendu.ghost.io/r/d3ffb1ed?m=66ba468d-5bc9-4c14-bd0c-21f5c52e7ed0">Jak se ničí novináři</a><br>„Říct, že novinářka a moderátorka Linda Bartošová ‚odešla‘ z Twitteru, by bylo v lecčem nepřesné. Linda totiž neodešla. Lindu z této sociální sítě vyštvaly dlouhodobě nenávistné, toxické a útočné reakce, které by se bez nadsázky daly označit za kyberšikanu.“ „Byl jsem svědkem situací, kdy se novináři po takové kampani zhroutili či skončili na antidepresivech. Faktem je, že neexistuje způsob, jak říct dost. S útočníky se nedá domluvit. Jde jen doufat, že si brzy najdou nový terč, vydržet to, nebo se stáhnout z veřejného prostoru.“</li>
<li><a href="https://www.voxpot.cz/svou-obec-si-zastavi-a-k-nam-se-chodi-rekreovat-unetice-trapi-naval-turistu-a-nedostatek-penez/">„Svou obec si zastaví a k nám se chodí rekreovat.“ Únětice trápí nával turistů a nedostatek peněz - VOXPOT</a><br>„Největší rozdíly mezi lidmi nejsou v tom, kdy a kde se kdo narodil nebo co dělá. Ale v tom, že někoho prostě vůbec nezajímá, co se děje za jeho plotem. Vysadí si vysoké túje a za nimi je schovaný. A někdo to má úplně naopak. Ne proto, že by se chtěl nějak obětovat, ale prostě ho to zajímá. Naplňuje ho, když kolem sebe vidí pěkné věci. A ty, které pěkné nejsou, chce samozřejmě změnit.“</li>
<li><a href="https://www.mujrozhlas.cz/rapi/view/episode/8e596841-4b25-351a-b975-4a5f5159fc43">Vztah není švýcarák pro život – nevyřeší vše. O singles s poradenským psychologem Jiřím Procházkou — Balanc</a><br>Dobrý postřeh s tím, že člověk by měl mít hlavně rád sebe a být v pohodě sám (se sebou). A do toho teprv míchat vztah s někým.</li>
<li><a href="https://www.novinky.cz/clanek/kultura-salon-martin-reiner-o-straslive-gentrifikaci-brnenskeho-bronxu-i-literarni-reportaz-z-cyklu-ceske-bolesti-40406158">Martin Reiner: O strašlivé gentrifikaci brněnského Bronxu I. Literární reportáž z cyklu České bolesti - Novinky</a><br>Dva díly zajímavého pojednání o gentrifikaci brněnského Bronxu. „Chceme být fér? Pak je naší povinností říct, že ten Bronx, co dnes Bára Bažantová a někteří další hájí před gentrifikací, je Bronxem, jenž právě skrze gentrifikaci, která začala před patnácti lety, dospěl k vysoké formě integrace.“</li>
<li><a href="https://www.youtube.com/watch?v=V4gGJ7XXlC0">Mojo Lang… a fast futuristic Python alternative</a><br>Dost dobrý!</li>
<li><a href="https://www.novinky.cz/clanek/kultura-salon-stanislav-biler-brno-hrbitov-verejneho-prostoru-literarni-reportaz-z-cyklu-ceske-bolesti-40409035">Stanislav Biler: Brno, hřbitov veřejného prostoru. Literární reportáž z cyklu České bolesti - Novinky</a><br>„Snižte svou perspektivu do výše očí dětí a náhle přestanete přes hradby aut vidět. Svět zmizí a veškerý výhled zablokují kapoty. Ze světa se stane obludné místo.“</li>
<li><a href="https://www.seznamzpravy.cz/clanek/ekonomika-za-prodej-osobnich-udaju-dostal-cesky-avast-rekordni-pokutu-350-milionu-korun-229885">Za prodej osobních údajů dostal český Avast rekordní pokutu 350 milionů korun</a><br>Asi by nemělo zapadnout, jak se ke svým uživatelům choval Avast. Kam se ve sledování a prodávání dat hrabou žabaři jako Facebook a spol.</li>
</ul></div></div></div></div>Týdenní poznámky: Článek o AI, WebExpo a katalog kurzů2023-04-28T00:00:00+02:002023-04-28T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-04-28:/blog/tydenni-poznamky-clanek-o-ai-webexpo-a-katalog-kurzu/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-velikonoce-stable-diffusion-a-testy/">posledních poznámek</a> už utekl nějaký ten týden (15. 4. až 28. 4.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="WebExpo" src="https://honzajavorek.cz/images/343228396-696432845571903-4561680607208791413-n.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil Riki Fridrich. Teda vlastně WebExpo. Tedy nějaký jejich fotograf. Prostě jsem to stáhl <a href="https://www.facebook.com/photo.php?fbid=929257691840211&set=pb.100042679671612.-2207520000.&type=3">tady …</a></figcaption></figure></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-velikonoce-stable-diffusion-a-testy/">posledních poznámek</a> už utekl nějaký ten týden (15. 4. až 28. 4.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="WebExpo" src="https://honzajavorek.cz/images/343228396-696432845571903-4561680607208791413-n.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil Riki Fridrich. Teda vlastně WebExpo. Tedy nějaký jejich fotograf. Prostě jsem to stáhl <a href="https://www.facebook.com/photo.php?fbid=929257691840211&set=pb.100042679671612.-2207520000.&type=3">tady z Facebooku</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/b5bb05d439c71b800ca520b63c5ae9ab261d10d19681ff2bc2acce0c/">Glance Media</a>, <a href="https://junior.guru/jobs/dbbb7bf406b3c33aeba36cae817919d44bfb368a08fb1b4899dba130/">Processand</a>, <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<p>Píšu až po dvou týdnech hlavně kvůli tomu, že jsem po vydání článku o AI neměl vůbec náladu nic dalšího psát a navíc by se to s WebExpem stejně nestíhalo.</p>
<h2 id="clanek-o-ai">Článek o AI<small class="permalink"><a href="#clanek-o-ai" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Během víkendu po napsání minulých poznámek mělo pršet, tak jsem se rozhodl, že napíšu článek na blog.
Hlavou se mi honilo strašně moc myšlenek kolem AI, tak jsem si je chtěl uspořádat.
A jedno staré moudro praví, že psaní je myšlení.
U mě to jednoznačně platí.</p>
<p>Jenže těch myšlenek bylo nějak strašně moc.
Rozbíhaly se do všech stran a já cítil, že to je na deset článků, ne na jeden.
No nedalo se nic dělat, deset článků jsem napsat nechtěl a než bych je postupně vydal, už by zastaraly, takže jsem to prostě natlačil do jednoho dlouhého.</p>
<figure class="figure"><img alt="Článek" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-04-17-at-22-14-00-empowered-by-ai-why-junior-devs-have-the-winning-edge-javorove-listky.png"></figure>
<p><a href="https://honzajavorek.cz/blog/empowered-by-ai-why-junior-devs-have-the-winning-edge/">Empowered by AI: Why junior devs have the winning edge</a> jsem psal většinu soboty… neděle… pondělí…
V úterý jsem měl už fakt stres, protože se na mě hrnuly různé pracovní a životní povinnosti a od středy začínalo WebExpo.
Jenže já věděl, že musím prostě nejdřív dokončit ten článek.
Že pokud ho nedodělám teď, tak už nikdy.
Každý týden se objevují novinky kolem AI, takže jsem chtěl co nejrychleji zachytit své myšlenky v tento konkrétní moment.
A taky jsem to chtěl mít po několika dnech psaní už z krku.</p>
<p>Ještě jsem nechal ChatGPT opravit mi angličtinu a v úterý večer jsem to konečně vydal.
V noci jsem pak dodělával nějaké povinnosti, které nešlo odložit, abych mohl další dny zmizet zase na WebExpo.</p>
<p>Po vydání jsem pak v klubu dostal jemnou spršku, že jsem stopadesátý člověk, který AI nerozumí, ale vyjadřuje se k němu 😀
Na HackerNews to dostalo nula hlasů a na Redditu mínus jeden hlas.
Nějaký malý ohlas to mělo <a href="https://www.linkedin.com/posts/honzajavorek_empowered-by-ai-why-junior-devs-have-the-activity-7054129577920487425-Mpms">na LinkedIn</a>.
Dal jsem to ze zoufalství i <a href="https://twitter.com/honzajavorek/status/1648414346500796417">na Twitter</a>, ale odezva spíše vlažná.</p>
<p>Určitě hraje velkou roli, že je to strašně dlouhé a nikomu se to číst prostě nechce.
Navíc je to anglicky, zatímco můj zásah je spíš na lidi v Česku.
Mám pocit, že většina lidí v Česku je líná číst anglické věci, i když anglicky umí.
Potřebujou to přežvýkané do češtiny 🤷♂️</p>
<p>Kvůli tomu, že jsem tomu hodně obětoval a zároveň to nebyla po vydání jednoznačně pecka, měl z toho celého nakonec dost smíšené pocity.
Promluvil jsem si o tom s manželkou a ta mě podpořila a dodala mi sebedůvěru ❤️
Připomenula mi, že jsem to psal hlavně sám pro sebe, abych si uspořádal myšlenky a zanalyzoval situaci kolem junior.guru, tak bych měl mít radost, že to mám.</p>
<p>No a postupně jak to lidi čtou, tak se nakonec dostavuje i externí validace, <a href="https://navolnenoze.cz/novinky/pripravi-ai-vyvojare-o-praci/">česky</a> i <a href="https://freelancing.eu/news/developers-empowered-by-ai/">anglicky</a> 🙂
Tak třeba se to ještě nějak rozšíří, ale já už jsem s tím v míru a je mi to fuk.
Chtěl jsem na WebExpu stihnout <a href="https://webexpo.net/sessions/discomfort-zone-will-ai-take-our-jobs/">Discomfort zone: Will AI take our jobs?</a>, ale úplně jsem to zazdil.
Aspoň jsme to pak s <a href="https://www.linkedin.com/in/fczbkk/">Rikim</a> nebo s <a href="https://www.linkedin.com/in/wvi/">Vildou</a> trochu probrali u piva.</p>
<h2 id="community-builders-breakfast">Community builders breakfast<small class="permalink"><a href="#community-builders-breakfast" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Už minule jsem psal, jak jsem šel na akci do Deloitte.
Ve vylézání ze své <em>homeoffice</em> díry jsem pokračoval.
V úterý 18.4. dopoledne jsem se účastnil akce <a href="https://talkbase.io/event/breakfast-for-community-builders/czech-community">Community builders breakfast</a>, kterou pořádá skvělá <a href="https://join.slack.com/t/cz-community/shared_invite/zt-1mqzq7ddy-EyUHyfb99EIZttF3iuLz2A">Czech Community of Community Builders</a> (odkaz rovnou na Slack).</p>
<p>Bylo to za rohem v Karlíně, byla tam snídaně, zajímavá panelová diskuze.
Čím dál víc si uvědomuji, jak mě akce nebo podcasty o vedení komunity, psaní, marketingu, nebo řízení byznysu teď baví mnohem víc, než akce programátorské.</p>
<p><a href="https://pyvo.cz/">Pyvo</a> je samozřejmě srdcovka, za ty léta tam mám vyloženě kamarády.
Ale motivaci navštěvovat něco jiného vyloženě pro programátory mám teď dost slabou, protože mě to neposouvá v těch směrech, kde cítím slabiny, ale naopak v oblasti, v níž se cítím nejsilnější a jsem v ní mistr světa amoleta.</p>
<p>Na Community builders breakfast jsem potkal hodně lidí, které znám a s nimiž jsem si rád pokecal.
Stále si tam ale připadám spíš jako nesmělý návštěvník.
Ačkoliv jsem byl teda jeden z mála, kdo zvedli ruku, když se ptali, kdo má komunitní práci na full time 😀</p>
<h2 id="webexpo">WebExpo<small class="permalink"><a href="#webexpo" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Jako VIP osoba jsem dostal lístek na WebExpo zdarma.
Nebyl jsem si jistý, zda ho využiju a půjdu, ale nakonec jsem si vymyslel následující systém:</p>
<ul>
<li>Warm-up párty vynechám,</li>
<li>oba konferenční dny budu dopoledne doma a postarám se o dítě,</li>
<li>po obědě půjdu na konferenci a budu si pouze povídat s lidmi,</li>
<li>plynule navážu večer a půjdu na obě večerní párty,</li>
<li>budu se při networkingu ptát lidí, jaké přednášky se jim líbily a jen ty, které budou rezonovat mezi více lidmi, si pak <a href="https://slideslive.com/webexpo/webexpo-2023">pustím ze záznamu</a>.</li>
</ul>
<p>Protože, jak už jsem tady na blog kdysi psal, <a href="https://honzajavorek.cz/blog/konference-nejsou-o-prednaskach/">konference nejsou o přednáškách</a>.
Jaké to bylo?
Naprosto skvělé!
Moc jsem si to užil.</p>
<figure class="figure"><img alt="Blanka a Honza" src="https://honzajavorek.cz/images/343219530-1039906706971164-9177279744116744637-n.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
S <a href="https://www.linkedin.com/in/blanka-semanov%C3%A1/">Blankou</a> na afterparty, foto <a href="https://www.facebook.com/photo/?fbid=929254668507180&set=a.929255298507117">WebExpo</a></figcaption></figure>
<p>Udělal jsem si tyto poznámky:</p>
<ul>
<li><a href="https://www.linkedin.com/in/roman-schejbal-b71b3447/">Roman Schejbal</a> mi ukázal, že existuje knížka <a href="https://natureofcode.com/">Nature of Code</a>, kde je perfektně vysvětlená matematika a fyzika animací.
Od stejného autora je i <a href="https://thecodingtrain.com/">The Coding Train</a></li>
<li>Seznámil jsem se s <a href="https://www.linkedin.com/in/visible/">Filipem Hráčkem</a>.</li>
<li>Už tradičně jsem se na párty viděl s <a href="https://www.linkedin.com/in/mayermartin/">Martinem Mayerem</a>, který má firmu s dokonalým názvem <a href="https://www.nehoupat.cz/">Nehoupat</a>, a vedli jsme filozofické debaty.
Bavili jsme se o konceptu <em>mastermind group</em> a tom, že by mi to mohlo pomoci při sólo podnikání.</li>
<li><em>My Life With You, Niko Marks.</em>
Nevím.
Možná písnička, kterou hráli na párty a <a href="https://www.shazam.com/">vyshazamoval</a> jsem si ji?</li>
<li>Seznámil jsem se s <a href="https://www.linkedin.com/in/bartusekjiri/">Jiřím Bartuškem</a>.
Dal mi tip na <a href="https://flipperzero.one/">Flipper Zero</a>, <a href="https://www.thecatch.cz/">The Catch</a>, <a href="https://ctftime.org/">CTFTime</a>, <a href="https://ecsc.eu/">European Cybersecurity Challenge</a>.
Napadlo mě, jak to využít v klubu.</li>
<li>Existují iniciativy za to, aby mohla bez problémů vznikat kreativní díla pracující s tématy intimity, nahoty, sexuality a erotiky.
<a href="https://www.nepuritan.cz/">Nepuritán</a>, <a href="https://www.bohemiantaboo.com/">Bohemian Taboo</a>.</li>
<li>Povídal jsem si na stánku se zástupci <a href="https://nofluffjobs.com/">NoFluffJobs</a>.
Mám jim napsat, možná dostanu API 😀</li>
<li>Ostrava Dubina je anglicky Oakland.</li>
</ul>
<p>Akorát jsem teda po těch dvou dnech nemohl mluvit a potřeboval jsem nejen dospat zhruba deset hodin, ale taky dobít svoje introvertní baterky, které jsem během socializace vyždímal až na dno.
Hned druhý den po konferenci však na návštěvu přijeli moji upovídaní rodiče, takže <em>networking</em> mi plynule pokračoval i potom 😅</p>
<h2 id="aktivita-v-klubu">Aktivita v klubu<small class="permalink"><a href="#aktivita-v-klubu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Během týdne jsem si víc a víc začal všímat, jak to v klubu utichá.
Lidi nediskutují, nedávají reakce, prostě to umírá.
A ne pouze jeden týden, ale že je to nějaký dlouhodobější trend.</p>
<p>Probíral jsem to s lidmi na Community builders breakfast i na WebExpu.
Na WebExpu se mi povedlo od jedné členky klubu dostat dost upřímný feedback na to, jak se jí tam líbí, a bylo to velmi poučné.
Probíral jsem to s moderátory v klubu.
Vymýšlel jsem.
Hypnotizoval jsem <a href="https://junior.guru/open/">grafy</a> a všiml jsem si, že jsou jednak divné a v datech jsou asi chyby, jednak že počet členů v klubu od zdražení stagnuje.
Zároveň počet napsaných znaků nijak nevybočuje, takže pokles aktivity je sice sdílený, ale nejspíš subjektivní dojem.</p>
<figure class="figure"><img alt="Písmenka" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-04-28-at-18-25-00.png"><figcaption class="figure-caption">
Prosincové navýšení aktivity je díky <a href="https://adventofcode.com/">Advent of Code</a></figcaption></figure>
<p>Smíšené pocity, protichůdné indicie.
Po WebExpu jsem se chtěl pustit do katalogu kurzů, ale vypadalo to, že budu asi muset přeskládat priority a věnovat se zase hlavně klubu.</p>
<p>No a nakonec se to nějak vyřešilo samo.
Snažil jsem se od pondělí intenzivně věnovat klubu.
Všechno číst, všude přispívat, aktivně se starat o svou zahrádku.
Navíc se vrátil <a href="https://www.linkedin.com/in/danielsrb/">Dan Srb</a> z dovolené a ještě přišel do klubu <a href="https://www.linkedin.com/in/petr-pegak-glaser/">Petr Glaser</a>, který je taky hodně aktivní, takže stačilo pár hodin a už jsem ani nestíhal číst, co všechno se v klubu děje 😅</p>
<h2 id="prednaska-v-klubu-s-martou">Přednáška v klubu s Martou<small class="permalink"><a href="#prednaska-v-klubu-s-martou" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Na úterý byla naplánována přednáška s <a href="https://www.linkedin.com/in/marta-k-586110243/">Martou</a>.
Z Marty vždycky vyzařuje velká energie a je s ní sranda, takže jsem věděl, že to bude super.</p>
<figure class="figure"><img alt="Přednáška s Martou" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/20230425-bf929c42fc0335c533cc28468c1ae755fd3ded34d26bca87a2c715a22210af51-yt.png"></figure>
<p>Dokonce jsme se domluvili, že se stavím do její firmy do kanclu v Karlíně a že po přednášce půjdeme na pivo, kam pozveme i ostatní z klubu.
Do kanceláře jsem přijel pozdě, jen deset minut před začátkem, a to ještě pouze díky poslednímu sdílenému kolu, které zrovna na tom mojem kopci zůstalo.</p>
<p>Brzy po připojení jsme zjistili, že když Marta sdílí obrazovku, je tam nějaké podivné echo.
Řešili jsme to dvacet minut, ale naštěstí se nám to povedlo přerámovat jako komedii.
Zvuky, kvůli kterým jistě některým posluchačům vykrvácely uši, někdo vtipně pojmenoval jako „zvuky z vesmíru“ a nakonec jsme se tomu všichni zasmáli.
Dopadlo to tak, že jsme vysílali oba společně z mého počítače.</p>
<figure class="figure"><img alt="Komedie 1" src="https://honzajavorek.cz/images/1.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Foto Dan Srb</figcaption></figure>
<p>Být takovýmto způsobem na přednášce „se speakerem“ mělo svoje kouzlo a byla to mnohem větší šou, i přes technické obtíže.
Také jsme společně odpovídali na dotazy.
Všem se to moc líbilo a Marta mi psala, že někdo byl dokonce smutný, když na záznamu těch počátečních 20 minut nenašel 😂</p>
<figure class="figure"><img alt="Komedie 2" src="https://honzajavorek.cz/images/2.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Foto Dan Srb</figcaption></figure>
<p>Mám teorii, proč to celé blbnulo, ale bylo v tom více faktorů (Discord, Windows v němčině, Martiny sluchátka, nějaký prapodivný device u Marty v zasedačce na stole…), tak je asi zbytečné to tady rozvádět.</p>
<p>Zpětně jsem si uvědomil, že se to sice z velké části pokazilo, ale že jsem u toho neměl velký stres.
Myslím, že je to díky tomu, že jsem věděl, že o nahrávání záznamu se stará Tinuki a že stačí vyřešit nás dva s Martou a okecat to celé.
Prostě Tinuki byl Houstonem našeho Apolla 13 a možná jen díky němu jsem se vlastně z toho celého v tu chvíli neposral.</p>
<p>Pivo po přednášce dopadlo dobře.
Každého z příchozích jsem už někdy viděl, ale bylo fajn je mít všechny pohromadě a poznat je víc.
Bylo zajímavé poslouchat příběhy jednotlivých lidí a jejich zkušenosti např. s <a href="https://www.linkedin.com/in/valentapetr/">testováním ve Warhorse</a>.</p>
<figure class="figure"><img alt="Pivo v Karlíně" src="https://honzajavorek.cz/images/img-2962.jpg" class="img-fluid figure-img rounded"></figure>
<h2 id="katalog-kurzu">Katalog kurzů<small class="permalink"><a href="#katalog-kurzu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Konečně jsem se do toho pustil.
Za jedno dopoledne jsem měl <a href="https://junior.guru/courses/">novou stránku v menu</a> a hotový seznam vzdělávacích agentur.
Záměrně jsem se nezabýval tím, že to menu na menším mobilu přeteče.
Místo abych se s tím trápil dva dny, opravím to později.</p>
<figure class="figure"><img alt="Menu" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-04-28-at-17-15-17-kurzy-programovani-1.png"></figure>
<p>Snažím se dělat co nejvíc <em>continuous delivery</em> a dávat ven každý jeden malý kousek, který udělám.
Každé jedno vylepšení.
A snažím se vždy zamyslet nad tím, co je nejmenší možný další inkrement, který přidává nějakou hodnotu.</p>
<figure class="figure"><img alt="Katalog kurzů" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-04-28-at-17-57-06-kurzy-programovani.png"></figure>
<p>I když jde pouze o seznam, dal jsem to rovnou do klubu a začal se ptát na zpětnou vazbu.
A <a href="https://www.facebook.com/groups/144621756262987/posts/1268714287187056/?__cft__[0]=AZWoNQ1MVTk_UWELuof3d4PGIwxqcdjI1sKtl4qw8ABbPN9e0bhRxePQJBAZSJYqoIlwCulAtkffqpWIIFy2RByQev1zvLPa7vlMxFKXElhGPDJQFltrAPPxPl0cxlmybFLwmG-8rbwVad0Uq-q3YEpq7lB2CQ6NkkdR2pd30fnz4XkJkSg0LxmgJmjlhrWMnx4&__tn__=%2CO%2CP-R">ptám se i na Facebooku</a>.
Překvapilo mě, že pro někoho je užitečné už jen to, že jsou ty odkazy na jednom místě a vidí, že existuje výběr.
Lidi mi taky okamžitě našli nejrůznější chyby a nesrovnalosti, kterých jsem si sám ani nevšiml.
Samozřejmě aby to bylo užitečné, chtělo by to minimálně nějaké filtrování.
Narazil jsem na <a href="https://www.linkedin.com/posts/michaelalosekoot_dobryobsah-activity-7056874727679619072-CRqu/">tenhle status Michaely Losekoot</a> a v kontextu budování katalogu je to až příliš relevantní!</p>
<p>Začal jsem pouze s abecedním seznamem.
Vlastně jsem tam jen přesunul něco, co <a href="https://junior.guru/handbook/practice/#kde-hledat-kurzy-a-workshopy">už jinde na junior.guru bylo</a>, a doplnil to o další data.
Doplnil jsem screenshoty a při té příležitosti jsem aktualizoval screenshoty na celém junior.guru.
To vždy zahrnuje ladění různých CSS selektorů v mém screenshotovači, aby na screenshotech nebyly kraviny jako cookie lišty apod.
Až zpětně mě napadlo, že by možná šlo do <a href="https://playwright.dev/">playwrightu</a> nějak nainstalovat adblock, abych to nemusel vždy ručně ladit, ale nezkoušel jsem to.</p>
<p>Seznam byl staticky vepsaný do Markdown souboru, dokonce jeho abecední pořadí bylo ručně a proto v něm byly i chyby.
Až v dalších dnech jsem to změnil tak, aby byl zdroj dat v YAML souborech a seznam se generoval.
Kromě seznamu jsem začal generovat i podstránky.
Na ty se zatím nedá dostat jinak než z patičky, ale pomalu je připravuji a brzy bude proklik mířit ne na weby jednotlivých firem, ale na moje podstránky.</p>
<figure class="figure"><img alt="Podstránky" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-04-28-at-17-48-08-kurzy-programovani.png"><figcaption class="figure-caption">
Nové podstránky v patičce</figcaption></figure>
<p>Na webu jsem měl už dlouho tzv. SEO lapače pro jednotlivé kurzy.
Dlouhodobě mají slušnou návštěvnost z vyhledávačů, což mě mimo jiné přesvědčilo, že mám katalog udělat.
Podle plánu jsem je teď začal migrovat na nové podstránky.
Zbudou pak už jen čtyři: <a href="https://junior.guru/topics/adventofcode/">Advent of Code</a>, <a href="https://junior.guru/topics/cs50/">CS50</a>, <a href="https://junior.guru/topics/javascript/">JavaScript</a>, <a href="https://junior.guru/topics/python/">Python</a>.
Jsou příliš dobré na SEO, abych je smazal, ale zároveň se jich fakt chci zbavit, protože jsou na staré infrastruktuře, kterou pak budu moci vyčistit z kódu.
Ještě nemám jasný plán, co s nimi udělám.</p>
<figure class="figure"><img alt="Czechitas lapač" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-04-28-at-14-07-37-zkusenosti-s-czechitas.png"><figcaption class="figure-caption">
Původní SEO lapač na Czechitas</figcaption></figure>
<figure class="figure"><img alt="Czechitas v katalogu" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-04-28-at-14-07-43-zkusenosti-s-czechitas-1.png"><figcaption class="figure-caption">
Nová katalogová podstránka o Czechitas</figcaption></figure>
<p>Pohlídal jsem si také aby odkazy na kurzy měly <em>nofollow</em>.
V budoucnu plánuju, že když mi firma zaplatí, <em>nofollow</em> odeberu.</p>
<p>Při tom všem jsem naprogramoval i věc, která umí přečíst Markdown soubory vytvořené pro <a href="https://www.mkdocs.org/">MkDocs</a> a uloží mi do databáze jejich meta data.
Měl jsem z toho velkou radost, ale pak jsem zjistil, že to nepotřebuju a že to nakonec vlastně celé udělám jinak 🤷♂️
Tak teď nevím, jestli to mám smazat, je mi to trochu líto.
Ale asi to smažu, no.</p>
<h2 id="schuzky">Schůzky<small class="permalink"><a href="#schuzky" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>S <a href="https://www.linkedin.com/in/mat%C4%9Bjkotrba/">Matějem Kotrbou</a> a <a href="https://restarty.dev/">Alicou Kačengovou</a>, abychom natočili <a href="https://www.youtube.com/channel/UCWDEyOgYzmDEAIJriflF-CQ">Očima ajťáka</a>.</li>
<li>S <a href="https://coreskill.tech/">Danem Srbem</a>, abychom pokecali o životě, o dovolené, o klubu a o budoucnosti.</li>
<li>Se třemi dalšími kamarády, s kočárkem i bez.</li>
</ul>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Kamarád tvoří <a href="https://yuko.cz/">aplikaci na učení japonštiny a čínštiny</a>.
Chce to do pár týdnů spustit, tak pokud vás něco takového zajímá, určitě na to pak mrkněte.</li>
<li>Bot neoznamoval přednášky, opravil jsem to.</li>
<li>Konečně jsem se pověnoval <a href="https://junior.guru/jobs/b5bb05d439c71b800ca520b63c5ae9ab261d10d19681ff2bc2acce0c/">inzerátu od Glance Media</a>.
Dodali mi pracovní verzi, já jim to přepsal, oni upravili pár slov a šoupli jsme to na web.
Musím ale opravit zobrazování loga, protože to se bere z favicony a ne z SVG loga, které mám u partnerských firem.</li>
<li>Koukal jsem ve volném čase na Kašpárkovo <a href="https://github.com/michalkasparek/gusta">gusta</a>.
Nainstaloval jsem to, navrhl nějaké úpravy, poslal Pull Requesty.</li>
<li>Volné chvíle jsem věnoval generování obrázků přes Stable Diffusion.
Zkoušel jsem místo DiffusionBee nainstalovat <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui">stable-diffusion-webui</a>.
Na macOS ale vlastně nic moc, i přes <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Installation-on-Apple-Silicon#poor-performance">návod, jak to zrychlit</a>.
Brousím si zuby na <a href="https://github.com/invoke-ai/InvokeAI">InvokeAI</a>.
Objevil jsem další zdroj modelů, <a href="https://civitai.com/">Civitai</a>.</li>
<li>Upgradoval jsem <a href="https://github.com/pyvec/docs.pyvec.org">docs.pyvec.org</a> na Python 3.11 a aktualizoval jsem tam různé závislosti.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>.
Přidal jsem v klubu mentora z Mews.
Plánoval jsem nadcházející přednášku v klubu.
Mrknul jsem na jedno CVčko.
Nasdílel jsem v klubu info o akci <a href="https://talkbase.io/event/motherhood-and-career-in-stem-s1/sentinelone">Motherhood & Career in STEM</a>.
Red Hatu jsem pomohl udělat v klubu anketu o tom, jestli mají lidi zájem o part time úvazky.</li>
<li>Během 14 dní jsem při procházkách nachodil 17 km, ujel na kole 6 km. Celkem jsem se hýbal 10 h a zdolal při tom 23 km.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Udělám promo úterní přednášky, promo posledního dílu podcastu.</li>
<li>Propojím podstránky se seznamem kurzů.</li>
<li>Propojím kurzy s partnerskými firmami.
Partnerské firmy budou v seznamu první a zvýrazněné, nebudou mít <em>nofollow</em> odkaz.
Bude transparentně zmíněno, že si to platí.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://podcasters.spotify.com/pod/show/pickey/episodes/Mte-syndrom-podvodnka--Jak-ho-petlait-e22sc0u">Máte syndrom podvodníka? Jak ho přetlačit — TVŮRCAST</a><br>Prima díl o syndromu podvodníka. Sice je to podcast pro tvůrce, ale zdaleka se to netýká jen jich.</li>
<li><a href="https://www.reddit.com/r/Showerthoughts/comments/12q7ve0/leonardo_is_the_only_one_among_the_four_turtles/jgp6vr8/">r/Showerthoughts on Reddit: Leonardo is the only one among the four Turtles that uses a weapon that was actually designed to kill</a><br>Želvy ninja mají zbraně, které jim Tříska dal, aby kompenzovaly a vyvažovaly jejich jednotlivé charaktery.</li>
</ul></div></div></div></div>Empowered by AI: Why junior devs have the winning edge2023-04-18T00:00:00+02:002023-04-18T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-04-18:/blog/empowered-by-ai-why-junior-devs-have-the-winning-edge/<div><div><div><div><p>Is the rise of AI a threat or an opportunity for devs? Many fear that AI will replace human software engineers or make it harder for junior programmers to break into the field.
But what if the truth is quite the opposite? As someone in the business of helping people …</p></div></div></div></div><div><div><div><div><p>Is the rise of AI a threat or an opportunity for devs? Many fear that AI will replace human software engineers or make it harder for junior programmers to break into the field.
But what if the truth is quite the opposite? As someone in the business of helping people switch careers and learn coding through my website <a href="https://junior.guru/">junior.guru</a>, I believe that in the age of AI, junior devs may actually hold the winning edge.</p>
<figure class="figure"><img alt="Empowered by AI: Why junior devs have the winning edge" src="https://honzajavorek.cz/images/woman-programming-on-her-laptop.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
I found her on <a href="https://lexica.art/prompt/9be96fa9-4d86-40c7-bcb9-2ef287062032">Lexica.art</a></figcaption></figure>
<p>Hype aside, here are some facts: AI has the potential to make previously unscalable tasks scalable and seemingly impossible tasks achievable. Unlike recent hypes <a href="https://blog.mollywhite.net/is-web3-bullshit/">like blockchain</a>, people can immediately recognize the value that AI tools provide. Moreover, the cost of using these tools is often free or reasonably cheap. Almost anyone can come up with tasks where AI can be beneficial, including your hairdresser. This has the potential to be a game-changer, akin to the impact of calculators, cars, personal computers, or smartphones.</p>
<h2 id="how-smartphone-augments-my-abilities">How smartphone augments my abilities<small class="permalink"><a href="#how-smartphone-augments-my-abilities" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Let's take a closer look at how the latest of these inventions has changed our lives.</p>
<p>When I get lost in the streets and look at my iPhone, I can immediately see exactly where I am. I can look up the closest ATMs and walk to one of them. I can use contactless Apple Pay to withdraw some cash, and that's just a fraction of what the phone can do. It augments my abilities in such a way that my grandfather, in his 30s, would think it's all just pure sorcery.</p>
<p>At any place, at any moment, I have easy access to most of the information collected by humans, in all its breadth and depth. In contrast, my grandfather had a limited set of books, maybe a radio. But I have the internet, Google, Wikipedia, Stack Overflow, and so much more.</p>
<figure class="figure"><img alt="Kniha Lidé a informace" src="https://honzajavorek.cz/images/img-2861.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Book <a href="https://www.databazeknih.cz/knihy/lide-a-informace-146195">People and information</a> by Vladimír Smetáček, 1981, photo by me</figcaption></figure>
<p>I'm also way more ambitious with what I work on. With all the parallel conversations, tasks, and projects, I'm probably 100 times more effective and productive than my grandfather. I don't say this is only good; fetishizing productivity and trying to get more done in every second of our lives <a href="https://www.oliverburkeman.com/posts">has its own problems</a>, but the fact is that thanks to technology augmenting my abilities, I <em>can</em> do more than my ancestors.</p>
<p>My smartphone or personal computer also compensate for my limitations. I'm so bad at math that I can't do 12 + 42 in my head without an embarrassing amount of effort. So I type even simple stuff like that into the calculator (to be precise, into the Spotlight or Google search fields). I might feel silly doing it, but at the same time, I know I can rely on it. Anytime. Thanks to that, I'm not afraid of adding. Not even multiplying! And with <a href="https://www.wolframalpha.com/">WolframAlpha</a>, I'm downright invincible.</p>
<h2 id="ai-stands-for-new-cool-tool">AI stands for 'new cool tool'<small class="permalink"><a href="#ai-stands-for-new-cool-tool" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Now, back to AI. Today, the terms AI and ChatGPT are often used interchangeably, but it's important to understand what AI actually means. Essentially, every time humans invent something that allows computers to do tasks they couldn't do before, we call it artificial intelligence.</p>
<p>AI has been playing against us in single-player games since the early days of computers. It's behind the face detection in our cameras for better photos, the translations in Google Translate, and the spell check in Google Docs, to name just a few examples. AI is already all around us in various forms. As we become accustomed to its presence, the AI label shifts to something newer, which is more <em>wow</em>. This is called the <a href="https://en.wikipedia.org/wiki/AI_effect">AI effect</a>.</p>
<figure class="figure"><img alt="0 A.D. screenshot" src="https://honzajavorek.cz/images/screenshot-2023-04-15-at-22-15-20.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
AI in my favorite computer game, <a href="https://play0ad.com/">0 A.D.</a></figcaption></figure>
<p>Simon Willison describes <a href="https://simonwillison.net/2023/Apr/2/calculator-for-words/">LLMs like GPT as calculators for words</a>, and I find this analogy to be useful for predicting the future as well. We will learn how to use these "calculators", adapt to them, get bored, and eventually move on to something new.</p>
<p>The first iPhone was released in 2007, when I was 20 years old. While smartphones have revolutionized many aspects of my life and given me seemingly unimaginable superpowers in the eyes of my ancestors, today the device is no longer <em>wow</em>, it's boring.</p>
<p>With my tasks and projects, I have naturally transitioned to a higher level of abstraction. To find something, my grandfather had to rely on paper maps, understand how to locate himself on the map, and comprehend the intricacies of map usage. Today, I can simply type "kebab" into Google Maps, tap on an arrow, and a voice tells me where to go. I can focus on the task at hand and forget about the details.</p>
<h2 id="llms-are-the-next-level-of-augmentation">LLMs are the next level of augmentation<small class="permalink"><a href="#llms-are-the-next-level-of-augmentation" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Some people say LLMs (large language models) make mistakes and that's why they're downright <em>useless</em>. But in this world, nothing is perfect. Humans are okay doing some extra steps if there's a tool that's just <em>good enough</em>. If it solves <a href="https://en.wikipedia.org/wiki/Pareto_principle">80% of the problem with 20% of the effort</a>, great! This is true for cars, phones, planes, computers, all software, and it applies to LLMs, too.</p>
<p>In just a few months after the ChatGPT launch, we now have <a href="https://openai.com/research/gpt-4">GPT-4</a>, which is much better, and <a href="https://openai.com/blog/chatgpt-plugins">plugins</a>, which further revolutionize the game. Still, as of now, asking ChatGPT to return facts or other exact information isn't the best way to use it. However, it is already an amazing tool for mentoring, learning, and brainstorming.</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Instead of blindly copy/pasting the code that ChatGPT generates, go through it line-by-line, and make sure you understand. Ask it for clarification. And double-check things that seem suspicious with an authoritative source (eg. the official documentation). Keep in mind that LLMs are 100% confident, but not 100% accurate.</p>
</blockquote>
<figcaption class="blockquote-footer"> Josh Comeau, <a href="https://www.joshwcomeau.com/blog/the-end-of-frontend-development/">The End of Front-End Development</a></figcaption>
</figure><p>See how last December, Simon Willison <a href="https://simonwillison.net/2022/Dec/5/rust-chatgpt-copilot/">used ChatGPT and GitHub Copilot to learn Rust</a>. I've seen people telling the LLM to behave like a tutor who never answers directly but guides you to come up with the solution yourself by giving you questions and little hints. This can be further enhanced with <a href="https://www.youtube.com/watch?v=91IPJ6LFmto">links to relevant docs and additional explanations</a>. Despite its imperfections, it's already very, very useful!</p>
<h2 id="junior-stands-for-less-experience">Junior stands for 'less experience'<small class="permalink"><a href="#junior-stands-for-less-experience" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Some say that ChatGPT or GitHub Copilot produce code that is already similar to what an entry-level software engineer would write. They conclude that this means junior devs won't be needed anymore.</p>
<p>First of all, being a junior is just a career phase. People try something, get better, become juniors, get better, become seniors. Tools can make the transition easier or faster, but they cannot replace juniors specifically.</p>
<p>As far as I know, AI can't clone people yet. Although I've seen many companies neglecting the truth and spending immense money and resources on hiring seniors instead of nurturing junior talent, the only way seniors can really reproduce is by teaching those who are less experienced.</p>
<p>It may seem obvious, but it apparently needs to be stated: there are no seniors without juniors. Juniors are the future seniors, and all seniors were once juniors.</p>
<p>As I've mentioned, AI already makes the transition from junior to senior faster and easier. However, it cannot eliminate the difference between individuals with varying levels of experience in the job.
If the difference ceases to exist, it would imply that the job is unnecessary altogether.
And I don't think that AI will render all devs obsolete (more on that later).</p>
<h2 id="why-junior-devs-have-the-best-timing">Why junior devs have the best timing<small class="permalink"><a href="#why-junior-devs-have-the-best-timing" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>If there is a new tool augmenting our abilities and learning is suddenly faster and easier, what's the outcome?
Better juniors and seniors!</p>
<figure class="figure"><img alt="Chart" src="https://honzajavorek.cz/images/juniors.svg" class="img-fluid figure-img rounded"></figure>
<p>This is a bit silly chart, but you probably get how I think about it.
It's gonna be the same as with personal computers.
The accountants still exist, they just transformed into <em>personal computer operators</em>.</p>
<figure class="figure"><img alt="Design" src="https://honzajavorek.cz/images/screenshot-2023-04-15-at-15-52-25.png" class="img-fluid figure-img rounded"></figure>
<p>Do you see the lines, numbers, and letters?
The architects used to <a href="https://en.wikipedia.org/wiki/Architectural_drawing">draw all this manually</a>.
Today they have AutoCADs.
The advent of software for architects did not render junior architects obsolete; rather, it elevated them to a higher level of abstraction in their work. They can now skip technicalities and focus on the task at hand. And perhaps thanks to that their teams can pursue more ambitious projects, such as <a href="https://en.wikipedia.org/wiki/Organic_architecture">organic architecture</a>, which goes beyond straight lines and right angles.</p>
<p>The AI revolution will disrupt the job market, but not necessarily in a way that makes junior developers obsolete. Depending on the pace of change, companies will gradually or suddenly start favoring individuals who are fluent with the new AI superpowers, similar to how they once favored those who were skilled in MS Word 97. Do you recall the era when "computer skills" were highlighted on CVs, along with computer courses for adults?</p>
<p>Those who were studying accounting or architecture at that time were in a prime position. They had to do everything on paper during their studies, which may have been tedious if they had a sense that computers could automate those tasks. However, in their careers, they became the first operators of personal computers in their respective fields. As for those who were already established in their careers, they had to learn and adapt to computers, which became the new norm.</p>
<p>The more savvy among beginner devs are already utilizing AI as their mentor. They won't have to alter their habits, routines, tools, or approach. They won't need to abandon their perfectionism and meticulous code crafting, as they are already accustomed to scanning through larger suggested code chunks with suspicion. They won't need to learn how to prompt ChatGPT or GitHub Copilot.
For them, it will be natural.
Soon, some juniors skilled in augmenting their capabilities with AI may even be preferred over senior devs who are resistant to working with these new tools.</p>
<p>This is a true revolution. The old class system is collapsing, and a <a href="https://youtu.be/EdddrKJgUJg?t=630">new one is about to be established</a>. Those who quickly learn how to adapt will benefit from the shake-up, achieving successful careers and becoming respected authorities. On the other hand, those who cling to their old ways will be pushed aside.</p>
<figure class="figure figure-blockquote figure-tweet"><blockquote class="twitter-tweet blockquote-tweet blockquote"><p lang="en" dir="ltr">AI will not replace you. A person using AI will.</p></blockquote>
<figcaption class="blockquote-footer"> Santiago (@svpino) <a href="https://twitter.com/svpino/status/1610984481342771200?ref_src=twsrc%5Etfw">January 5, 2023</a></figcaption></figure><p>You may think this doesn't apply to you, right?
It's about that old fart daily commuting to a cubicle in a big office building, <a href="https://vickiboykis.com/2019/05/10/it-runs-on-java-8/">working on some Java 8 systems</a>.
But no, all seniors are inflexible.
Python 3.5, which introduced <a href="https://peps.python.org/pep-0484/">type hints</a>, was released in 2015.
First time I tried using them in my project?
Few weeks ago.
It took me 8 years to just <em>try</em> them.</p>
<p>I'm not worried that AI will replace juniors. I'm afraid that juniors, augmented by AI, may eventually replace us seniors.</p>
<h2 id="closing-the-university-gap">Closing the university gap<small class="permalink"><a href="#closing-the-university-gap" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>I already mentioned that I help people learn coding and find their first job as a dev. While I'm happy to support computer studies graduates in their efforts, my main focus is on those who are switching careers from a different job.</p>
<p>The usual approach for career switchers is to bet on one of the most in-demand programming ecosystems, such as frontend or Python, and then laser-focus on learning it. Once they are able to produce useful code, they apply for entry-level jobs. However, as they progress in their careers and become vital members of engineering teams, they may realize that they still lack some knowledge compared to those who studied computer science at university.</p>
<p>Everyday React components? Sure, no problem. But then some tasks require a deeper understanding of operating systems, algorithms, databases, and perhaps even compilers. In such cases, career switchers may either attempt to reinvent the wheel or admit that they don't know how to approach the problem and ask for guidance.</p>
<p>No matter how well-prepared university graduates were for their exams, they have been exposed to numerous subjects and concepts. While they may not remember all the details, they have a sense that solutions for certain problems already exist with specific names. Even if they don't recall them precisely, they can rely on Google for help. They may tap into an old memory, search for "philosophers fork algorithm", and find the Wikipedia page for the <a href="https://en.wikipedia.org/wiki/Dining_philosophers_problem">Dining philosophers problem</a> to read about the solutions. They have general overview of the field and they know what they don't know.</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Students will understand all the layers of the computer based systems including hardware (semiconductor components, logic networks, processors, peripheral devices), software (control and data structures, object orientation, programming languages, compilers, operating systems, databases), as well as their common applications (information systems, computer networks, artificial intelligence, computer graphics and multimedia). They will understand foundations of computer science (discrete mathematics, formal languages and their models, spectral analysis of signals, modelling and simulation). Graduates will be able to analyse, design, implement, test, and maintain common computer applications. They will be able to work efficiently in teams.</p>
</blockquote>
<figcaption class="blockquote-footer"> <a href="https://www.fit.vut.cz/study/program/7886/.en">Degree Programme Details</a>, Faculty of Information Technology, Brno University of Technology</figcaption>
</figure><p>The issue with career switchers is that they are often unaware of what they don't know. This means they struggle to identify what to look for and what questions to ask.</p>
<p>I believe this is, in essence, a problem of information discoverability. In the past, schools focused on memorizing facts to provide us with a general overview. Nowadays, schools are more relaxed, but still expect us to have a basic foundation of facts memorized. The data points we remember give us some guidance, and we can fill in the gaps <a href="https://en.wikipedia.org/wiki/Lean_manufacturing">just-in-time</a> using the internet.</p>
<p>While we have access to Google and Stack Overflow, when we are trying to solve tasks, we still need to know what to search for in order to augment our abilities with existing knowledge on the topic. Conducting our own research can be tedious, as it is challenging to distinguish between noise and signal without reliable sources.</p>
<p>Asking questions in the right way can also be tedious. Effectively using Google is a skill that juniors need to be trained in. Asking questions on forums can be tricky as well. The <a href="http://www.catb.org/~esr/faqs/smart-questions.html">classical guide</a> on how to ask questions on the internet without angering those being asked is 65,825 characters long.</p>
<p>Let's say I want to efficiently display billions of pins on a <a href="https://leafletjs.com/">Leaflet</a> map. Basic tutorials are easy to read, but won't take me far enough. Hardcore academic papers, on the other hand, are hard to read (especially on a phone screen with two-column PDFs) and may go into too much detail. Moreover, my task may have some specific requirements that make many existing resources irrelevant or difficult to apply.</p>
<p>That's where LLMs, like ChatGPT, come in as the missing piece. We can simply ask this calculator for advice on how to efficiently display billions of pins on a Leaflet map, and the ensuing conversation can provide us with various existing approaches and their names.</p>
<p>Another example. You know some Python and want to write a program that detects the beats per minute (BPM) of songs or do other cool things with sound. Instead of spending a week on research, a single conversation with LLM can inform you about concepts like <a href="https://en.wikipedia.org/wiki/Fourier_transform">Fourier transforms</a> and what they entail. It can help you to use Wolfram Alpha to calculate what you need and explain how these concepts are relevant to <em>your specific project</em>. And if you ask nicely, it can explain everything to you in simple terms, <a href="https://www.howtogeek.com/694298/what-does-eli5-mean-and-how-do-you-use-it/">like you're five</a>.</p>
<p>This is big! The availability of tools like ChatGPT is closing the gap between graduates and career switchers in terms of gaining a general overview. While there may still be differences in other areas, such as opportunities, contacts, and networking, when it comes to solving challenging tasks, the divide is narrowing.</p>
<p>The education system in my country has taken decades to acknowledge the existence of the internet. This is yet another blow to its outdated, 19th-century-like structure. It's high time for our society to truly contemplate what schools should be focusing on.</p>
<figure class="figure figure-blockquote figure-tweet"><blockquote class="twitter-tweet blockquote-tweet blockquote"><p lang="en" dir="ltr">Since ChatGPT launched in Nov'22, <a href="https://twitter.com/StackOverflow?ref_src=twsrc%5Etfw">@StackOverflow</a> traffic dropped 24% from peak, 13% from avg. What other categories of websites - other than technical forums - got affected ? <a href="https://t.co/rBctmGPPEW">pic.twitter.com/rBctmGPPEW</a></p></blockquote>
<figcaption class="blockquote-footer"> Mohamed ElAdany (@mohadany) <a href="https://twitter.com/mohadany/status/1642544573137158144?ref_src=twsrc%5Etfw">April 2, 2023</a></figcaption></figure><h2 id="diversity-and-communication-skills-preferred">Diversity and communication skills preferred<small class="permalink"><a href="#diversity-and-communication-skills-preferred" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>I also believe that tools like ChatGPT will revolutionize the skillset of developers. Nowadays, companies are increasingly valuing teamwork and collaboration skills over solitary genius traits. This shift can be challenging for some, as previous generations of developers were often individual geeks, and strong communication or teamwork skills were not prioritized in the job requirements. Those who fail to adapt may now be labeled as "brilliant jerks" and marginalized.</p>
<p>As noted by Simon Willison in his article <a href="https://simonwillison.net/2023/Feb/21/in-defense-of-prompt-engineering/">In Defense of Prompt Engineering</a>, crafting effective AI prompts requires excellent communication skills. Prompting for complex tasks can quickly become challenging without at least some background in linguistics, human psychology, philosophy, etc. In the case of image generation, those with expertise in digital art or art history have a significant advantage.</p>
<p>If technical skills alone are insufficient for devs in today's world, I believe this will be even more true in the future. The question then arises: is it easier to teach coding to communicative individuals with backgrounds in art or psychology, or to enhance the communication skills of professional coders? I believe the former is more likely, and career switchers have a significant advantage in this regard.</p>
<p>In <a href="https://junior.guru/podcast/">our latest podcast episode</a> (in Czech), Marián Kameništák also mentions that companies may start preferring domain knowledge over technical skills. We are already witnessing career transitions from accountants, artists, dentists, biologists, train drivers, bankers, chemists, and other diverse fields to the tech industry. These folks bring unique domain expertise as well as diverse backgrounds to the table.</p>
<p>We already know that solutions are better tailored to people's needs when they are developed by a diverse group of devs. Diversity in tech is not just about "women in tech", it goes as far as "single parents in tech", "remote mountain dwellers in tech," or "former dentists in tech". And I believe that in the era of AI-augmented software engineering, the importance of diversity in the industry will only become more apparent.</p>
<h2 id="llms-are-not-replacing-all-devs">LLMs are not replacing all devs<small class="permalink"><a href="#llms-are-not-replacing-all-devs" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>But is it even worth learning coding anymore? What if AI becomes so advanced that it can not only generate basic "hello world" React components, but entire apps and complex systems? What if it becomes capable of understanding and maintaining all legacy codebases, ultimately making software engineers obsolete? Josh Comeau already wrote what I think about this, so let me quote from his article <a href="https://www.joshwcomeau.com/blog/the-end-of-frontend-development/">The End of Front-End Development</a> (which is definitely worth reading in its entirety):</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>…there is an <em>enormous</em> difference between generating a 50-line HTML document and spitting out a production-ready web application. (…)</p>
<p>Even with 95% accuracy rate, this would be <em>incredibly</em> difficult to debug. It would be like a developer spending <em>months</em> building a huge project, without <em>ever</em> actually trying to run any of the code, until it was 100% finished. This is the stuff of nightmares.</p>
<p>AI isn't magic. It's only as good as its training data. Code <em>snippets</em> are all over the internet, and are often generic. By contrast, every <em>codebase</em> is unique. There are very few large open-source codebases. How's the AI supposed to learn how to build big real-world projects?</p>
<p>We're very quickly reaching the point where non-developers can sit down with a chatbot and crank out a small self-contained project, the sort of thing that folks currently use tools like Webflow to build. And that's awesome!</p>
<p>But I think we're still a <em>very long way</em> from major tech companies letting go of their developer staff and replacing them with prompt engineers. It seems to me like there are several potentially-unsolveable problems that stand in the way of this becoming a reality.</p>
<p>(…) My personal belief is that for the most part, working professionals will find ways to integrate this technology into their workflows, increasing their productivity and value. Certain <em>tasks</em> might be delegated to an AI, but not many <em>jobs</em>.</p>
</blockquote>
<figcaption class="blockquote-footer"> Josh Comeau, <a href="https://www.joshwcomeau.com/blog/the-end-of-frontend-development/">The End of Front-End Development</a></figcaption>
</figure><p>Moreover, I think that software engineering is about understanding peoples' needs and translating them to a <em>very comprehensive and precise specification</em>. And that spec is called code.</p>
<figure class="figure"><img alt="Commit Strip" src="https://honzajavorek.cz/images/strip-les-specs-cest-du-code-650-finalenglish.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
<a href="https://www.commitstrip.com/en/2016/08/25/a-very-comprehensive-and-precise-spec/">A very comprehensive and precise spec</a>, famous Commit Strip from 2016</figcaption></figure>
<p>Code is the best representation of what should happen when, and cannot be fully replaced by vaguely worded prompts. While code initially emerged as a set of technical instructions for computers, since the advent of <a href="https://en.wikipedia.org/wiki/High-level_programming_language">high-level programming languages</a> we're gradually stepping up the abstraction ladder. I believe that today, a majority of the code written is closer to describing <a href="https://en.wikipedia.org/wiki/Business_logic">business logic</a> rather than managing memory.</p>
<p>Code is transforming from being a contract between humans and computers to a contract between humans themselves. While LLMs can indeed augment our ability to draft these contracts, I hold the belief that the essential task of understanding people's needs and accurately translating them into that <em>precise spec</em> cannot be fully automated. We will continue to perform the same job, just at a higher level of abstraction.</p>
<h2 id="devaluation-of-devs">Devaluation of devs<small class="permalink"><a href="#devaluation-of-devs" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Let me repeat and point out this part I already quoted:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>We're very quickly reaching the point where non-developers can sit down with a chatbot and crank out a small self-contained project, the sort of thing that folks currently use tools like Webflow to build. And that's awesome!</p>
</blockquote>
<figcaption class="blockquote-footer"> Josh Comeau, <a href="https://www.joshwcomeau.com/blog/the-end-of-frontend-development/">The End of Front-End Development</a></figcaption>
</figure><p>I see this already happening. My friend <a href="https://www.jirichlebus.cz/">Jiří Chlebus</a> is an excellent freelance designer, but his dream is to build his own product. For years he's been working on an app that disrupts graphic manuals, <a href="https://visualbook.pro/">Visualbook</a>.</p>
<p>He doesn't know how to code, so he was left with learning random bits from the internet, gluing no-code building blocks, and getting advice from friends. ChatGPT has changed everything for him. He can do things he didn't think he'd be able to do. Translating the app to multiple languages took him a fraction of the time, because ChatGPT is able to translate whole HTML chunks. It's dope!</p>
<p>What does this illustrate?
AI not only makes the transition from junior to senior dev faster and easier, but it goes as far as democratizing coding for the masses. This is good for the progress of humankind, but will have consequences for devs. I see two possible scenarios.</p>
<h2 id="insatiable-demand-for-devs">Insatiable demand for devs<small class="permalink"><a href="#insatiable-demand-for-devs" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>In one scenario, AI could potentially increase the supply of developers who are "good enough", which would help to balance out the seemingly insatiable demand. Such end of the scarcity would mean, first of all, drop of our high salaries.
Perhaps also end to the elevated celebrity status of our occupation.
This would be good for the society though, as developing software becomes easier and cheaper.</p>
<p>Although we are currently experiencing an economic downturn, I believe that this is just a temporary detour caused by current geopolitical factors. According to a 2018 poll conducted by the <a href="https://www.czso.cz/csu/czso/na-trhu-je-nedostatek-ict-odborniku">Czech Statistical Office</a>, two-thirds of Czech companies reported difficulties in filling IT roles. Furthermore, the State of European Tech survey in 2018 revealed that <a href="https://2018.stateofeuropeantech.com/">IT is growing five times faster than any other segment</a>. In 2021, the same survey projected that a staggering <a href="https://2021.stateofeuropeantech.com/">$100B has been invested to European IT in just one year</a>, which is ten times more than when the survey started in 2015.</p>
<p>While your present personal experience as a junior dev struggling to get invited for interviews may feel different, the long-term global trend is clear. As more and more human activity shifts to the internet, computers, and phones, backed by software engineering to a greater extent, the demand for developers is expected to continue to rise.</p>
<p>The question remains, how much would the supply of "good enough" developers need to increase in order to balance out this demand? Are we talking about tens of thousands of newcomers entering the field? Perhaps hundreds of thousands? And how long would it take for them to undergo training and become "good enough," even with the assistance of ChatGPT?</p>
<h2 id="induced-demand-for-devs">Induced demand for devs<small class="permalink"><a href="#induced-demand-for-devs" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>In another scenario, which I believe is more likely, there will be <a href="https://en.wikipedia.org/wiki/Induced_demand">induced demand</a>.</p>
<p>What is induced demand? If an additional lane is added to a congested highway, it may initially seem like it would reduce congestion. However, as the paradox of induced demand describes, making commuting by car easier, more accessible, and more comfortable can actually lead to more people using cars and utilizing the new lane. Similarly, if cycling paths in a city are <a href="https://mestemnakole.cz/en/prague-cycle-route-system/">unsafe or scarce</a>, they won't be widely used. As soon as you make them easy to use, you suddenly <a href="https://www.theguardian.com/lifeandstyle/2021/mar/12/europe-cycling-post-covid-recovery-plans">generate hundreds of cyclists</a> who didn't exist previously.</p>
<p>Anyone can make music, and that is awesome.
Anyone can sing, <a href="https://www.youtube.com/results?search_query=bucket+drummer">flip a few plastic buckets</a>, or install <a href="https://lmms.io/">LMMS</a>.
YouTube is filled of lessons and tutorials, making it easier than ever to learn to play musical instruments.
Anyone can employ their creativity and make their own music.
Does it mean there are no professional musicians?
No.
Do LMMS and YouTube augment everyones' abilities and make us all more ambitious?
Yes!</p>
<p>Imagine what it took to be a photographer in the 19th century.
Today, everyone has a camera in their phone, and it's common for people to capture tens, and even hundreds of photos every day.
Did it make the photographer profession go away?
Did employing AI in modern professional cameras make the occupation disappear?
No.
Does it augment everyones' abilities and make us all more ambitious?
Yes!</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Believe it or not, the number of professional photographers has been <em>increasing</em>, year over year. The US Bureau of Labor Statistics expects the number of jobs to increase 9% year-over-year for the next decade. For context, the average across all industries is 5%</p>
</blockquote>
<figcaption class="blockquote-footer"> Josh Comeau, <a href="https://www.joshwcomeau.com/blog/the-end-of-frontend-development/">The End of Front-End Development</a></figcaption>
</figure><p>With platforms like WordPress, Webflow, Wix, Shopify, and the rise of the "no-code" and "low-code" hype, people already have the ability to solve coding problems on their own without extensive coding skills.
And that's good!
Some don't even need that, because for their business it's just enough to have an Instagram profile with a few photos and a phone number.
This didn't make devs redundant.
It opened up new opportunities and we could move to more ambitious projects, such as custom development and SaaS applications, where our expertise is still highly valued.</p>
<p>All professionals, be it musicians, photographers, or devs, possess one important quality:
They know what they're doing, and why.
The ease and accesibility of taking pictures didn't lead to wedding photographers going bankrupt.
Rather, it enabled ordinary people to take pictures of their butts.
Or coffee cups.
Or dogs.</p>
<p>The paradox of induced demand applies to your personal life, too. Did washing machines, robot vacuums, or smartphones make you more relaxed than your ancestors? No. It allowed you to be more ambitious. Your ancestors knew they could fit two activities into their day and wished they could manage to get five done. You can fit 20 and wish you could manage to get 50 done. Guess what happens with LLMs like ChatGPT? Let me quote Simon Willison:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>As an experienced developer, ChatGPT (and GitHub Copilot) save me an enormous amount of “figuring things out” time. For everything from writing a for loop in Bash to remembering how to make a cross-domain CORS request in JavaScript—I don’t need to even look things up any more, I can just prompt it and get the right answer 80% of the time.</p>
<p>This doesn’t just make me more productive: it lowers my bar for when a project is worth investing time in at all.</p>
<p>In the past I’ve had plenty of ideas for projects which I’ve ruled out because they would take a day—or days—of work to get to a point where they’re useful. I have enough other stuff to build already!</p>
<p>But if ChatGPT can drop that down to an hour or less, those projects can suddenly become viable.</p>
</blockquote>
<figcaption class="blockquote-footer"> Simon Willison, <a href="https://simonwillison.net/2023/Mar/27/ai-enhanced-development/">AI-enhanced development makes me more ambitious with my projects</a></figcaption>
</figure><p>The fact that AI-augmented Simon is as capable as a team of devs doesn't lead to devs losing jobs. It leads to Simon being able to do more tasks that were not possible before. If building software becomes easier and more accessible, it will only make us all more ambitious.</p>
<h2 id="more-indie-hackers">More indie hackers<small class="permalink"><a href="#more-indie-hackers" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>There will definitely be a shake-up in the job market though. If a company needed 100 people to do something and now only 10 are enough, this will have a significant impact. In smart companies, the remaining 90 people will be reassigned to work on ambitious projects the company didn't think could be working on before. In other companies, however, the 90 people may lose their jobs.</p>
<p>On the other hand, after a layoff, those people can now explore new opportunities that they probably wouldn't have even dreamed of before. Tim Ferriss' book, <a href="https://en.wikipedia.org/wiki/The_4-Hour_Workweek">The 4-Hour Workweek</a>, advises people to check their email only once a day and outsource small daily tasks to <em>virtual assistants</em>. Since 2007! I guess this option will now become more viable than ever, at least until the majority catches up with all the new technology.</p>
<p>But let's say you want to add value to this world. New tools for content creators, such as YouTube or Substack, have greatly augmented people's abilities to the point that careers such as newsletter author, podcast host, beauty influencer, YouTube video producer, or Twitch streamer now seem viable. The same trend will likely happen with startups.</p>
<p><a href="https://levels.io/">Pieter Levels</a> gained fame for showcasing how tools like <a href="https://stripe.com/">Stripe</a> make it possible to build an entire startup product as a single person. There are already <a href="https://www.indiehackers.com/">communities of indie hackers</a> and individual makers who aspire to have their own scalable business. Not just a freelance business where they sell their time for money, but a business that allows them to live an independent life, whatever that may mean to them.</p>
<p>If 100 employees can be replaced by 10 AI-augmented employees, then what about a single AI-augmented entrepreneur? What if one bootstrapped founder becomes as capable of delivering a product as whole teams in Silicon Valley?</p>
<p>Just as YouTube disrupted TV production and made it possible for anyone to have their own TV channel, AI has the potential to disrupt Silicon Valley. If access to capital or experienced employees becomes less crucial in delivering a useful product, could we see more apps emerging from unexpected places like <a href="https://honzajavorek.cz/blog/jessica-upani-about-python-events-in-namibia-you-have-to-be-pure-in-terms-of-your-why/">Namibia</a> or <a href="https://blog.pythonghana.org/">Ghana</a>?</p>
<h2 id="keep-your-fomo-at-bay">Keep your FOMO at bay<small class="permalink"><a href="#keep-your-fomo-at-bay" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Now, you might be concerned that if you're not keeping up with all the latest announcements, you're already falling behind. But let me reassure you that the majority of people in the world are not yet using ChatGPT. Keep calm!</p>
<p>Next time you commute on a tram, take a look around and consider how many of the people you see might have their own sophisticated ChatGPT or Stable Diffusion promptbook. None? One? Two?</p>
<p>This could potentially lead to significant societal division between those who have access to AI and those who don't. Remember how <a href="https://cc.cz/sbirka-pocitacu-od-cesko-digital-pomohla-2-800-rodinam-s-online-vyukou-pod-kridla-ji-nove-bere-clovek-v-tisni/">we learned</a> during the pandemic, that many families in Czechia don't even have reliable access to computers?
While there may be some opportunities for AI-induced social mobility, I'm afraid it could end up like it always does - with the rich getting richer and the privileged becoming even more privileged.
We should be definitely worried about that.</p>
<p>But don't succumb to the <em>fear of missing out</em>! The fact that you're reading this article likely means you're already among the top 0.1% of early adopters. If you've interacted with ChatGPT more than five times, you're probably among the top 0.001%.</p>
<p>Check out this <a href="https://www.reddit.com/r/ChatGPT/comments/12o29gl/gpt4_week_4_the_rise_of_agents_and_the_beginning/">weekly report on new developments in AI</a>. Even experts in the field struggle to keep up. We're whitnessing a mass exploration of technology, which is easy to use and accessible to basically anyone, including children. However, much of what's out there is:</p>
<ul>
<li>Hyped-up snake oil selling.</li>
<li>Demos that break when faced with inputs slightly more complex than those shown in a screencast.</li>
<li>Not as easy to use as it appears at first glance.</li>
</ul>
<figure class="figure"><img alt="Sell me this pen" src="https://honzajavorek.cz/images/img-1750.jpg" class="img-fluid figure-img rounded"></figure>
<h2 id="waiting-for-products">Waiting for products<small class="permalink"><a href="#waiting-for-products" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Most of the stuff announced also isn't a proper product.
Not even the ChatGPT interface, which is officially labeled as a <a href="https://openai.com/blog/chatgpt">research preview</a>.</p>
<p>I've <a href="https://honzajavorek.cz/blog/jak-jsem-si-zacal-hrat-s-generovanim-obrazku-pomoci-ai/">tried experimenting with Stable Diffusion</a> on my own machine, and I was quite surprised by how challenging it is to generate images that are even remotely as appealing as those showcased online.
It's possible, but far from simple or easy.
The prompting process is convoluted, and there are numerous models, techniques, and complexities to navigate.
While Stable Diffusion is a powerful and free tool, it's still a raw resource.</p>
<p>It feels like learning how to prompt now is akin to learning how to build an engine, rather than learning how to drive a car for long-distance transportation.
To effectively augment our capabilities, we need real, user-friendly products.
Waiting for such products may mean missing out on the gold rush to create them, but it will make it much easier to utilize the new superpowers for other purposes.</p>
<p>Every day, I contemplate ways to integrate AI into my own products and workflow.
If I hadn't spent so much time thinking and started working on it already, I would have been done by now.
Yet, with each new announcement every week, it feels like getting the job done is becoming simpler and simpler.
I've saved myself a lot of unnecessary work!
While I may not be the first person to integrate AI into an existing product, I believe that if I can do it in 2023, I'll still be among the first 5%.
And it's only going to get easier with time.</p>
<h2 id="checking-my-bias">Checking my bias<small class="permalink"><a href="#checking-my-bias" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>That's all, folks!
Thanks for reading.
Now, the only thing left is: how can I be so sure about all this?
Well, truth be told, I'm not sure at all!
Based on the chart below, I believe I fall somewhere between the utopianist and the entrepreneur.</p>
<figure class="figure"><img alt="r/ChatGPT classes" src="https://honzajavorek.cz/images/ph8h1yjb6aua1.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
<a href="https://www.reddit.com/r/ChatGPT/comments/12ohyf8/choose_your_class_or_add_one/">r/ChatGPT classes</a>, Reddit</figcaption></figure>
<p>I'm an indie hacker in the business of helping more people learn coding.
Perhaps I'm only seeing what I want to see.
Maybe I've spent several days writing this just to come up with a reasoning why AI won't render my work useless and negate everything I've been doing for decades.</p>
<p>This blog post is filled with various predictions, so it's likely to be outdated in about two weeks, if I'm lucky.
That's also why I've decided to consolidate all my thoughts on the topic into a single post.
If I were to split them, some of the individual posts could become outdated before I manage to publish them, and the whole thing wouldn't hold together anymore.
This way, at least I can say this was my wishful thinking about AI in the middle of April 2023.</p>
<p><em>Thanks to Simon Willison, my internet idol, for all he does, and ChatGPT for <a href="https://github.com/honzajavorek/honzajavorek.cz/commit/37c375c5aac1aeec5ceac25a30fef0e106e8844a">helping me with grammar and stylistics</a>.</em></p></div></div></div></div>Týdenní poznámky: Velikonoce, Stable Diffusion a testy2023-04-15T00:00:00+02:002023-04-15T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-04-15:/blog/tydenni-poznamky-velikonoce-stable-diffusion-a-testy/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-rychlejsi-spendliky-a-ai/">posledních poznámek</a> už utekl nějaký ten týden (31. 3. až 14. 4.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/img-2845.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Pohled z terasy Deloitte</figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-rychlejsi-spendliky-a-ai/">posledních poznámek</a> už utekl nějaký ten týden (31. 3. až 14. 4.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/img-2845.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Pohled z terasy Deloitte</figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/dbbb7bf406b3c33aeba36cae817919d44bfb368a08fb1b4899dba130/">Processand</a>, <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="volno">Volno<small class="permalink"><a href="#volno" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Na Velikonoce jsme odjeli k babičce.
Rozhodl jsem se, že nebudu pracovat a pojmu to jako volno.
Nevyšlo moc počasí, tak jsem přečetl hromady věcí na internetu, hrál jsem si se Stable Diffusion, plánovali jsme dovolenou, uspořádával jsem archiv rodinných fotek…</p>
<h2 id="psani">Psaní<small class="permalink"><a href="#psani" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Velikonoční pauzu jsem využil k napsání hned několika článků na blog:</p>
<ul>
<li><a href="https://honzajavorek.cz/blog/notion-as-a-replacement-for-pocket/">Notion as a replacement for Pocket</a></li>
<li><a href="https://honzajavorek.cz/blog/clutter-be-gone-reclaiming-reading-on-the-internet-with-a-single-button/">Clutter be gone: Reclaiming reading on the internet with a single button</a></li>
<li><a href="https://honzajavorek.cz/blog/jak-jsem-si-zacal-hrat-s-generovanim-obrazku-pomoci-ai/">Jak jsem si začal hrát s generováním obrázků pomocí AI</a></li>
</ul>
<p>Na další mám nápady, případně je mám i rozepsané.
Titulky anglických článků jsem začal konzultovat s ChatGPT.
Většinou je to delší konverzace, brainstorming, než že by mi to na první dobrou dalo něco, s čím bych byl spokojený.
Někdy jsem titulek vymyslel sám, ale díky podnětům, které mi poskytlo AI.</p>
<p>Že by mi to šetřilo čas se říct nedá, ale rozhodně mi to pomáhá vymyslet něco lepšího, než bych dokázal sám.
Na titulky jsem úplně marný a jejich vymýšlení mě ani nijak zvlášť nebaví.
ChatGPT tento blok odbourává.
Navíc, pokud jde o angličtinu, navrhuje mi úderná slova, která by mě samotného nenapadla.</p>
<h2 id="ai">AI<small class="permalink"><a href="#ai" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Jak jsem už psal, <a href="https://honzajavorek.cz/blog/jak-jsem-si-zacal-hrat-s-generovanim-obrazku-pomoci-ai/">hrál jsem si hodně se Stable Diffusion</a>.
Ale hrál jsem si i s ChatGPT a myslím, že jsem vymyslel způsob, jak jej využít na vítání nových členů v klubu, nebo na třídění nabídek práce.
Specifický způsob promptování mě napadl už dřív, ale až teď jsem to vyzkoušel a k mému velkému překvapení se zdá, že to funguje.</p>
<figure class="figure"><img alt="ChatGPT" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-04-15-at-10-03-14-chatgpt.png"></figure>
<h2 id="newsletter">Newsletter<small class="permalink"><a href="#newsletter" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>První z článků nějak záhadně přesvědčil MailChimp, že má poslat newsletter.</p>
<figure class="figure"><img alt="Newsletter" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-04-01-at-13-16-21.png"></figure>
<p>To mě dost překvapilo, protože jsem měl za to, že to prostě nefunguje.
V nastavení jsem vůbec nic neměnil.
Poslalo to pak i druhý a třetí článek.
Tak jsem zvědav, jestli to pošle i tyhle poznámky!</p>
<p>Pokud chcete, aby vám do mailu náhodně chodily nebo nechodily mé články, tak se <a href="http://eepurl.com/ifI06H">přihlašte zde</a>.</p>
<h2 id="opravy-na-juniorguru-a-testy">Opravy na junior.guru a testy<small class="permalink"><a href="#opravy-na-juniorguru-a-testy" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>I přesto, že jsem měl volno, neubránil jsem se několika rychlým opravám:</p>
<ul>
<li>Jedna <a href="https://www.linkedin.com/jobs/view/junior-v%C3%BDvoj%C3%A1%C5%99-simula%C4%8Dn%C3%ADch-model%C5%AF-a-n%C3%A1stroj%C5%AF-pro-testov%C3%A1n%C3%AD-%C5%99%C3%ADdic%C3%ADho-sw-trak%C4%8Dn%C3%ADch-pohon%C5%AF-vhodn%C3%A9-pro-studenty-at-siemens-3541984424/?originalSubdomain=cz">nabídka práce</a> měla nekonečně dlouhý titulek: „Junior vývojář simulačních modelů a nástrojů pro testování řídicího SW trakčních pohonů (vhodné pro studenty)“
Na Discordu to spadlo, protože ten má zjevně limit na počet znaků pro název vlákna.
Ořízl jsem to v Pythonu na menší počet znaků.</li>
<li>Spadlo mi CI, protože jsem nedomyslel něco kolem souborů.
Opravil jsem to a dopsal jsem k tomu testy.</li>
<li>Uvítalo to v klubu automaticky firmu, kterou to uvítat nemělo.
Změnil jsem tedy algoritmus, kterým bot vybírá, jakou firmu uvítat.</li>
</ul>
<p>V tomto týdnu jsem hlavně doháněl e-maily a klub.
Ženu a dítě přemohla rýma, tak jsem si nedělal velké ambice a pracoval jen tak napůl.
Doplnil jsem aspoň testy pro velké množství kódu, který jsem napsal v předešlých týdnech.</p>
<p>Dnes Pavlína poslala <a href="https://github.com/honzajavorek/junior.guru/pull/1106">Pull Request na další díl podcastu</a>, tak jsem ho připravil k vydání.
Venku to bude zítra.</p>
<h2 id="qa-zive-v-klubu-i-na-youtube">Q&A živě v klubu i na YouTube<small class="permalink"><a href="#qa-zive-v-klubu-i-na-youtube" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Hned po příjezdu od babičky, pár hodin po tom, co jsme přijeli vlakem, jsem měl na večer plánovanou tu svou první Q&A.
Měl jsem trochu nervy, ale nakonec v pohodě.</p>
<p>Záznam je <a href="https://www.youtube.com/watch?v=vN235cq8xP4">tady na YouTube</a>.
Je tam i replay chatu, takže jdou vidět dotazy.
Zvláštní je, že chat se nezobrazil hned po nahrání streamu, ale <a href="https://www.reddit.com/r/youtube/comments/uvygbn/comment/i9q3v9t/?utm_source=share&utm_medium=web2x&context=3">muselo se na něj počkat</a>.
To mě dost zmátlo.</p>
<p>Co se týče failů, tak Tinuki ze začátku trochu přepálil zvuk a mě se vybily sluchátka, protože jsem je po cestě vlakem zapomněl nabít.
Takže konec už je bez sluchátek.
Za mě dobrý, na to, že to bylo poprvé!
Odškrtávám si jeden další velký milník a na podzim naplánuju další.
Pouhým okem mi přišlo, že počet nově příchozích do klubu se těsně před a po Q&A mírně zvýšil, ale nehodlám to nijak exaktně měřit.</p>
<p>Jako fail by se jinak dalo počítat i to, že můj brácha v klubu šířil inzeráty na nějaké pozice u nich ve firmě a už měl i zájemce, ale ten z toho po mé Q&A vycouval, protože jsem tam juniorům nedoporučil do začátku práci „na IČO“.
Ups!</p>
<figure class="figure"><img alt="Marc Rebillet" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-03-13-at-10-43-01-rainy-sunday-youtube.png"><figcaption class="figure-caption">
Přesně takhle vypadala moje Q&A s chatem na YouTube</figcaption></figure>
<h2 id="zneuzivani-14-dni-zdarma">Zneužívání 14 dní zdarma<small class="permalink"><a href="#zneuzivani-14-dni-zdarma" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Moderátoři a jeden další člen klubu mi nezávisle na sobě dali tip, že někdo nejspíš zneužívá 14 dní zdarma v klubu.
Týpek s nápadně podobnými přezdívkami a nápadně podobnými dotazy.
Vždy, když potřebuje něco vyřešit, nejspíš dokonce do práce, udělá si nový účet, jde zdarma do klubu a využívá jej.</p>
<p>Nechtěl jsem si kazit Velikonoce, tak jsem se na to pořádně podíval až v tomto týdnu.
A fakt že jo.
Nakonec jsem zjistil, že si takhle vytvořil dokonce osm, možná až devět účtů.</p>
<p>Nemyslím, ze má smysl to kvůli jednomu kazit pro ostatní, tedy zavádět nějaké nové systémové pravidlo, ale zase musím ty, kdo pomáhají, trochu chránit aby věděli, ze se tady nebudou vysilovat na někoho, kdo jen bere ale nemá chuť dat něco zpátky.
Zatím jsem mu jen napsal.
Přemýšlím, co se dá s takovými lidmi dělat, aniž bych uvalil nějaké nové restrikce i na ostatní.</p>
<figure class="figure"><img alt="Zneužívání" src="https://honzajavorek.cz/images/screenshot-2023-04-14-at-20-57-53.png" class="img-fluid figure-img rounded"></figure>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li><a href="https://www.linkedin.com/posts/honzajavorek_kfc-bootcamp-kurzy-activity-7048655097991450624-OIjK">Propagoval jsem</a> poslední díl našeho podcastu.</li>
<li>Udělal jsem si pořádek v jednom Trello sloupci z osmdesáti.</li>
<li>Komentoval jsem <a href="https://www.linkedin.com/posts/lucietvrdikova_junior-startvit-pohovor-activity-7046356549253922816-pO5N">pod LinkedIn příspěvkem o juniorech</a>.
Trochu jsem si povolil vodítko a pojal jsem to jako za starých facebookových časů.</li>
<li>Šel jsem na <a href="https://www.deloitte-digital.cz/event-page">příjemnou vývojářskou akci do Deloitte</a>.
Pěkná terasa!
Potkal jsem tam lidi z klubu, seznámil se s nějakými novými lidmi a v baráku plném auditorů jsem se zakecal o tom, zda by šlo nějak spolupracovat a kontrolovat marketingová prohlášení vzdělávacích agentur.</li>
<li>Michal Kašpárek vytvořil <a href="https://github.com/michalkasparek/gusta">svoje vlastní udělátko nad ChatGPT</a>, tak se na to plánuji někdy brzo mrknout.</li>
<li>Přihlásil jsem se do bizarního „obrazového“ newsletteru <a href="https://www.readjpeg.com/">readjpeg.com</a>.
Jsem zvědav, co mi bude chodit.</li>
<li>Losoval jsem výherce slevy na lístky na WebExpo a pak i jednoho lístku úplně zdarma, který věnovala <a href="https://www.linkedin.com/in/adina-foxova/">Adina</a>.</li>
<li>Před časem jsem dával na Discord <a href="https://mimo-agendu.ghost.io/">Mimo Agendu</a> inzerát na někoho, kdo by dělal pro junior.guru rozhovory s juniory.
A teď se mi na to někdo ozval!
Tak jsem zvědavý, co z toho bude.</li>
<li>Četl jsem si <a href="https://www.linkedakademie.cz/blog/">články o tom, jak mám mít vytuněný LinkedIn</a>.</li>
<li>Zjistil jsem, že RSS pro playlisty na YouTube obsahuje jen prvních pár videí od začátku, ne od konce.
Takže pak nepřibývají nové.
Zjišťoval jsem, zda to jde nějak řešit, ideálně bez programování, ale muselo by se jít přes API.
Tak místo toho sleduji celé ty kanály, tam naštěstí RSS funguje tak, jak bych očekával.</li>
<li>Koukal jsem na <a href="https://obcan.petrbrzek.cz/">ObčanGPT</a> a přemýšlel, jak udělat totéž pro příručku na junior.guru.</li>
<li>Koukal jsem na <a href="https://picocss.com/">PicoCSS</a>, jestli bych na to nemohl přehodit blog.
Štve mě, že tu nemám <em>dark mode</em>, ale nechce se mi to vůbec řešit.</li>
<li>Koukal jsem na <a href="https://cron.com/">cron.com</a> a na <a href="https://retool.com/">retool.com</a>, aby mi neujel vlak, ale přijde mi, že ani jedno z toho nevyužiju.</li>
<li>Radil jsem kamarádovi s rozjížděním <a href="https://richbull.co/">RichBull</a>.</li>
<li>Všiml jsem si, že na irozhlas.cz <a href="https://www.irozhlas.cz/pocasi/585068">je i počasí</a> a že je (subjektivně, pro moje potřeby) mnohem přehlednější, než pocasi.cz.</li>
<li>Zapnul jsem si na iCloudu <a href="https://support.apple.com/en-us/HT212520">Advanced Data Protection</a>.</li>
<li>Zapomněl jsem na call výboru Pyvce a připojil se až na posledních 10 minut.
Domlouvám sraz s naší advokátkou, abychom probrali něco ohledně voleb do výboru.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>.
Vyřídil jsem jedno stipendium.</li>
<li>Během 15 dní jsem naběhal 27 km, ujel na kole 29 km. Celkem jsem se hýbal 8 h a zdolal při tom 56 km.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Půjdu na <a href="https://talkbase.io/event/breakfast-for-community-builders/czech-community">sraz komuniťáků</a> a na <a href="https://www.webexpo.net/">WebExpo</a>.
V pátek přijede rodina a budu se jí věnovat.
Ve zbylém čase asi stihnu jen klub, nějakou režii, možná opravy chyb v kódu.</p>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://zerotomastery.io/blog/programmers-guide-to-the-big-tech-companies/">Programmer’s Guide to the Big Tech Companies 💻 | Zero To Mastery</a><br>Jaké jsou motivace velkých firem jako Google nebo Apple?</li>
<li><a href="https://cc.cz/jako-slovak-mam-po-navsteve-izraele-vzkaz-pro-cechy-prestante-uz-konecne-s-tim-malym-narodem/">Jako Slovák mám po návštěvě Izraele vzkaz pro Čechy: Přestaňte už konečně s tím „malým národem“</a><br>„…průměrný Čech je bohatší než průměrný Izraelec. K tomu ještě malá zajímavost. Česko má HDP na obyvatele vyšší i než Japonsko.“</li>
<li><a href="https://changelog.com/podcast/534">LLMs break the internet — The Changelog: Software Development, Open Source</a><br>Rozhovor se Simonem Willisonem o LLMs (AI jako je GPT) a o tom co všechno to může do budoucna způsobit, co to už způsobuje, jak to využít, použít, jak s tím začít.</li>
<li><a href="https://nemil.com/2020/01/29/the-user-is-king-and-not/">The User is King (And Not)</a><br>„You think the user is just like you. In some contexts—developer tools, open source software—you’re actually a pretty good proxy for the actual user. But especially today where tech is used by billions of people from all walks of life, you’re only one small group—and probably not the most important one.“ … „If you haven’t interacted with some of your users, you’re doing software wrong.“ A podle mě nejlepší způsob jak toho v běžné firmě dosáhnout je sednout si občas k user supportu a odpovídat.</li>
<li><a href="https://ericsink.com/entries/sqlitepclraw_sustainability.html">SQLitePCLRaw and open source sustainability</a><br>Je pěkné si jednou za čas přečíst i „success story“ od open source maintainera, jestli se tomu tak dá říct. Není to úplně duhy a jednorožci, je to o hranicích a vyváženém vztahu.</li>
<li><a href="https://bigvilik.com/2023/04/06/mm23-206-krsa-predstav-o-budoucnosti/">M&M23 206: Krása představ o budoucnosti</a><br>„Poslední měsíce „vizionáři“ předvídají, co nás čeká s umělou inteligencí. Stává se z toho otravná záležitost, protože asi nás všechny už unavují hahapokusy ve volně dostupných aplikacích, kterými se na sociálních médiích prsí kdekterý hejhula z obecní čítárny. To, že skutečně profesionální modely AI změní svět, to je jisté. Jenom si to pořád představujeme jako kreslíři z pařížského magazínu LP 1900, co ukazovali, jak podle nich bude vypadat rok 2000.“</li>
<li><a href="https://houdekpetr.blogspot.com/2023/04/kureci-svickova.html">Kuřecí svíčková</a><br>Bageta. Tiramisu. Fish and Chips. Tequila. Sushi. Losos. Poké. Guláš. Nic z toho není doopravdy „tradiční“ a existuje to jen pár desítek let.</li>
<li><a href="https://overcast.fm/+lh3JfSp_M">#6 Smějí se mému českému přízvuku. Vietnamci druhé generace v Česku — Vysílač</a><br>Malá sonda do toho, jak se žije druhé generaci Vietnamců v Česku, jak vyrůstali, jaký vztah mají k Vietnamské kultuře, apod.</li>
<li><a href="https://simonwillison.net/2023/Apr/2/calculator-for-words/">Think of language models like ChatGPT as a “calculator for words”</a><br>LLM jako ChatGPT je kalkulačka na slova. Není to vyhledávač a není moc dobrý na sdělování faktů. Užitečná analogie. „So many of the challenges involving language models come down to this: they look much, much easier to use than they actually are.“ http://simonwillison.net/2023/Apr/2/calculator-for-words/#</li>
<li><a href="https://bnet.substack.com/p/the-machines-text-is-good-enough">the machine's work is good enough</a><br>„Writing, for most people, is not a job; it's just a thing you have to do in the course of a different, actual job. Boilerplates exist for a reason. Sure, I wince a little when I see a reply-all in the vein of, "Thanks for sharing these learnings! It's so important to amplify our impact when connecting with our partners and stakeholders" — but I also understand that coming up with unique text is almost always wasted effort. Exponentially more of this type of writing is done manually by people all over the world on a daily basis than is, say, a longform narrative investigation or a funny blog post.“</li>
<li><a href="https://www.youtube.com/watch?v=1LV1K69885E">The weird future of music</a><br>Budoucnost hudby?</li>
<li><a href="https://www.youtube.com/watch?v=qLGmj86-j4k">Unreal Engine 5.2 is getting too real</a><br>Tohle je paráda. Nový level toho, co dokáže počítačová grafika ve hrách.</li>
<li><a href="https://www.voxpot.cz/stavky-a-demonstrace-se-v-cesku-moc-nenosi-poucime-se-z-francouzskych-a-britskych-protestu/">Stávky a demonstrace se v Česku moc nenosí. Poučíme se z francouzských a britských protestů? - VOXPOT</a><br>„V Česku to naopak občas vypadá, jako by důstojnost byla jakousi nadstavbou, když už je práce hotová, nebo když na ni zbydou peníze. Pracovat je potřebné, i když mzda není adekvátní. Pracuji, tedy jsem. Kdo nepracuje, ať nejí. Jako by lidská důstojnost byla až odměnou za odvedenou práci.“</li>
<li><a href="https://www.voxpot.cz/flash-news/mnozici-se-escobarovi-hrosi-poputuji-pryc-z-kolumbie-cesta-bude-stat-35-milionu-dolaru/">Množící se Escobarovi hroši poputují pryč z Kolumbie, cesta bude stát 3,5 milionu dolarů - VOXPOT</a><br>Kdo taky viděl Narcos?</li>
<li><a href="https://www.economist.com/leaders/2023/03/23/the-world-according-to-xi">The world according to Xi | The Economist</a><br>„China’s “Global Civilisation” argues that Western advocacy of universal human rights, in Xinjiang and elsewhere, is a new kind of colonialism… To many, the invasion of Iraq in 2003 exposed the West’s double standards on international law and human rights…“</li>
</ul></div></div></div></div>Jak jsem si začal hrát s generováním obrázků pomocí AI2023-04-14T00:00:00+02:002023-04-14T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-04-14:/blog/jak-jsem-si-zacal-hrat-s-generovanim-obrazku-pomoci-ai/<div><div><div><div><p>Během Velikonoc jsem si udělal volno a během něj jsem si začal hrát se Stable Diffusion.
Jaké jsou moje první dojmy?</p>
<figure class="figure"><img alt="DiffusionBee" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-04-14-at-21-39-47-diffusionbee-stable-diffusion-app-for-ai-art.png"></figure>
<p>Do této chvíle jsem nic o generování obrázků pomocí AI nevěděl, ani bych nedokázal říct, jaký je rozdíl mezi DALL-E, Stable Diffusion, nebo Midjourney.</p>
<p>Procházel jsem si během volna …</p></div></div></div></div><div><div><div><div><p>Během Velikonoc jsem si udělal volno a během něj jsem si začal hrát se Stable Diffusion.
Jaké jsou moje první dojmy?</p>
<figure class="figure"><img alt="DiffusionBee" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-04-14-at-21-39-47-diffusionbee-stable-diffusion-app-for-ai-art.png"></figure>
<p>Do této chvíle jsem nic o generování obrázků pomocí AI nevěděl, ani bych nedokázal říct, jaký je rozdíl mezi DALL-E, Stable Diffusion, nebo Midjourney.</p>
<p>Procházel jsem si během volna Fireship videa, což je můj nový oblíbený kanál na YouTube.
A <a href="https://www.youtube.com/watch?v=nYqeHIRKboM">tohleto</a> mě namotivovalo zkusit si taky vygenerovat nějaké ty obrázky.
Šel jsem na Midjourney Discord, zaregistroval se, ale napsalo mi to, že servery jsou přetížené a musím zaplatit, jestli něco chci.</p>
<p>To mě naštvalo.
Otevřel jsem <a href="https://diffusionbee.com/">DiffusionBee</a>, což je appka na macOS, která zjednodušuje použití Stable Diffusion.
To je model, který je open source a když to člověk rozchodí na svém počítači, za nic neplatí.
Už před časem jsem si DiffusionBee ze zvědavosti nainstaloval, ale neměl jsem čas to vyzkoušet.</p>
<p>Nedařilo se mi však vygenerovat žádné dobré věci, tak jsem se do toho trochu zavrtal a snažil se pochopit, co dělám blbě.
No a dost mě to chytlo.
Přidal jsem se do různých Discordů, subredditů, postahoval nějaké upravené modely, pochopil rozdíly mezi různými AI.
V noci se mi o tom zdálo.</p>
<ul>
<li><a href="https://github.com/divamgupta/diffusionbee-stable-diffusion-ui/blob/master/DOCUMENTATION.md#custom-models">Jak do DiffusionBee přidat vlastní modely</a></li>
<li>Podcast: <a href="https://changelog.com/podcast/506">Stable Diffusion breaks the internet</a></li>
<li>Reddity: <a href="https://www.reddit.com/r/ChatGPT/">r/ChatGPT</a>, <a href="https://www.reddit.com/r/DiffusionBee/">r/DiffusionBee</a>, <a href="https://www.reddit.com/r/StableDiffusion/">r/StableDiffusion</a></li>
<li>Discordy: <a href="https://discord.gg/QCjYd4eQQD">DiffusionBee</a>, <a href="https://discord.gg/craiyon-1065723932109451284">Craiyon</a>, <a href="https://discord.gg/midjourney">Midjourney</a> (aktuálně největší Discord server na světě), <a href="https://discord.gg/openai">OpenAI</a>, <a href="https://discord.gg/prompthero-1026222136790110259">PromptHero</a>,</li>
<li>Různé další modely a galerie: <a href="https://www.craiyon.com/">Crayon</a>, <a href="https://lexica.art/">Lexica</a>, <a href="https://arthub.ai/">ArtHub</a>, <a href="https://civitai.com/">Civitai</a></li>
<li>Většina lidí nepoužívá DiffusionBee, ale <a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui">Stable Diffusion web UI</a>, které je nejspíš promakanější.
Nezkoušel jsem.</li>
<li>Modely jde najít na <a href="https://huggingface.co/">HuggingFace</a>.
DiffusionBee podporuje zatím jen některé typy.
Zajímavé modely: <a href="https://huggingface.co/prompthero/openjourney">openjourney</a>, <a href="https://huggingface.co/wavymulder/portraitplus">portraitplus</a>, <a href="https://huggingface.co/nitrosocke/Nitro-Diffusion">Nitro-Diffusion</a>, <a href="https://huggingface.co/dreamlike-art/dreamlike-photoreal-2.0">dreamlike-photoreal-2.0</a>, <a href="https://huggingface.co/wavymulder/modelshoot">modelshoot</a>, <a href="https://huggingface.co/22h/vintedois-diffusion-v0-1">vintedois-diffusion-v0-1</a></li>
</ul>
<figure class="figure"><img alt="Prompt okopírovaný z internetu" src="https://honzajavorek.cz/images/screenshot-2023-04-08-at-14-51-54.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Prompt okopírovaný z internetu, který náhodou dopadl dobře</figcaption></figure>
<p>Většina promptů, které jde najít na internetu, je nepoužitelných bez dalších informací.
Výsledek závisí na modelu a na jeho nastavení: kolik pixelů na kolik, počet kroků…
Různé modely se chovají různě.
Některé dávají lepší výsledky s pětislovnými zadáními, jiné je potřeba otesávat pomocí dvaceti a více slov a třeba i s nějakými číselnými váhami nebo závorkami.
Takže samotný prompt vám je většinou k ničemu, maximálně může posloužit jako inspirace.
K tomu ještě můžete využít i negativní prompt, který by měl nějaké věci vyloučit.</p>
<figure class="figure"><img alt="Můj vlastní prompt" src="https://honzajavorek.cz/images/screenshot-2023-04-09-at-18-03-39.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Můj vlastní prompt</figcaption></figure>
<p>Nakonec jsem byl schopen generovat i celkem obstojné obrázky.
Kvalit toho, co jde najít na internetu, to však nedosahuje.
Stable Diffusion je sice zdarma, ale o to těžší je vymačkat z něj něco pořádného.
Když to srovnám v podstatě jakýmkoliv online placeným modelem, např. <a href="https://lexica.art/">Lexica</a>, kam napíšu tři slova, dostanu co chci a graficky je to pecka, tak nekonečné vyšívání nad Stable Diffusion je někdy k uzoufání.</p>
<p>O to větší respekt u mě mají všichni, kdo z toho dokážou ty dobré věci dostat.
Teď vidím, že v tom jsou hodiny a hodiny zkoušení.</p>
<p>A hlavně ten nedeterminismus!
Dám prompt, vygeneruje to osmkrát něco jiného.
Na stejný prompt.
Jako vývojář nejsem zvyklý pracovat s něčím, kde měním vstup a výstup se sice nějak upravuje podle toho, ale někdy taky ne, a někdy si dokonce dělá úplně co chce.
I magie v pohádkách a fantasy funguje tak, že pokud správně řeknu zaklínadlo, stane se něco, co mohu očekávat a předpovídat.
Tohle je z 50 % prostě náhoda!</p>
<p>Časem jde oko trochu vytrénovat, najít společné rysy vygenerovaných obrázků a odtušit, jakým směrem to ladit.
Výsledkem je však závislost, jakou si představuji, že mají lidi na automatech.
Tahám za páčku, tahám tahám a toužím po třech citróncích.
Ještě jeden pokus.
Ještě.
A ještě jeden, teď už to musí vyjít…</p>
<p>Taky jsem se přes Velikonoce hrabal ve starých fotkách a zkusil jsem upscalovat nějaké ze starých mobilů.
Některé ty fotky jsou menší než 640×480px a na mojí retině vypadají jako malý obdélníček uprostřed obrazovky.
Objevil jsem následující:</p>
<ul>
<li><a href="https://jpghd.com/">jpgHD</a>, který je online a nad rámec dema za peníze.</li>
<li><a href="https://github.com/upscayl/upscayl">upscayl</a>, který je open source a jde nainstalovat a použít lokálně.</li>
</ul>
<p>Ten druhý jsem zkusil a na to, co jsem do toho dával, to mělo celkem obstojné výsledky.
Možná by to ale šlo i líp.
Možná by k tomu šlo použít i to Stable Diffusion!
Jenže to jsem zatím nezkoumal.</p>
<p>Pokud jste ve zkoušení dál než já, dejte vědět nějaké tipy!
A jestli jste ještě Stable Diffusion nezkoušeli, třeba vám tenhle článek pomůže začít.</p></div></div></div></div>Clutter be gone: Reclaiming reading on the internet with a single button2023-04-07T00:00:00+02:002023-04-07T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-04-07:/blog/clutter-be-gone-reclaiming-reading-on-the-internet-with-a-single-button/<div><div><div><div><p>Are you tired of reading through the clutter of cookie prompts, advertisements, and notification prompts?
What if I told you there is a single magic button which gets you just the information you're interested in?
And what if you don't need to install any extensions, because this button is already …</p></div></div></div></div><div><div><div><div><p>Are you tired of reading through the clutter of cookie prompts, advertisements, and notification prompts?
What if I told you there is a single magic button which gets you just the information you're interested in?
And what if you don't need to install any extensions, because this button is already in your browser?</p>
<figure class="figure"><img alt="Clutter be gone: The art of reading articles online" src="https://honzajavorek.cz/images/screenshot-2023-04-07-at-11-18-52.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
The <a href="https://www.e15.cz/">E15 magazine homepage</a> in Google Chrome</figcaption></figure>
<h2 id="why-ad-blockers-suck">Why ad blockers suck<small class="permalink"><a href="#why-ad-blockers-suck" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>The screenshot above is just an example of how the current internet experience looks like for a regular user.
On desktop I use <a href="https://ublockorigin.com/">uBlock Origin</a> to eliminate most of the clutter, but it has a few drawbacks:</p>
<ul>
<li>You need to install the extension.</li>
<li>Sometimes it breaks websites and you need to remind yourself that the ad blocker could be the reason.</li>
<li>If it breaks a website, you need to figure out some exception rules in the clunky UI of the extension.</li>
<li>It isn't available for phones.</li>
<li>It requires my trust, because I give it permission to do basically anything on any page I'm browsing.
Effectively, the extension is a <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">Man-in-the-middle</a>.
It is like police, a thing which is legally allowed to use force to keep order, but can easily get out of hand if unchecked.</li>
</ul>
<p>The above points are okay-ish for me, a power user with affinity to make my life a bit more miserable for the sake of privacy and better internet experience.
However, they're deal breakers for regular users.</p>
<p>Also, half of my browsing and reading happens to be on my phone.
Yeah, there is a thing called AdGuard and others, but here we are again with the trust.
The installation step where I'm supposed to give it permissions to do almost anything with my phone makes me uneasy.
And even though I gave it the access, I didn't manage to get it working properly.</p>
<h2 id="why-this-all-is-so-annoying">Why this all is so annoying<small class="permalink"><a href="#why-this-all-is-so-annoying" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>If clicking on cookie clutter and avoiding ads is annoying on desktop, on a phone it is downright infuriating.
You want to get stuff done quickly, because you're in a tram and need to check something.
Or perhaps quietly, because you're reading while someone is sleeping next to you.</p>
<p>You open a link and—cookies! Video ads! Pop-ups!
Websites forcing you to play a fat-fingering game, different kinds, different levels of difficulty.
Exhausting your patience.
Making your short stay in this world shorter and more miserable.</p>
<p>On iPhone, you can long-press any link and get a preview of what you're clicking on.
In the preview, you might see the title, the lead paragraph, the main photo, right?
You can then decide whether you want to actually go to that page, read it later, or let it be.
You know what all my previews look like?
Like a giant cookie prompt.</p>
<figure class="figure"><img alt="iPhone preview" src="https://honzajavorek.cz/images/img-2735.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
The title of the cookie prompt starts with: „Do you enjoy our content?“ What?! What content are you even talking about?</figcaption></figure>
<p>This is also how all websites my in-app browsers look like.
Even if I confirm the cookie prompt in the standalone Safari, the in-app browser windows don't share cookies with it, so I'm prompted again.</p>
<p>I have a beard, I'm an old man.
I remember how the web used to be.
Yes, we had banners.
Yes, we had pop-up windows.
But back then, the browsers at least didn't collaborate with advertisers.
They seemed to care about user experience.
They guarded us against the most infuriating practices, so we could have a better time reading the internet.
Today, Google Chrome has a monopoly.
A browser developed by an advertising company.
As of now it takes <a href="https://cookie-script.com/blog/google-delays-blocking-third-party-cookies">four years of delays</a> to implement even the most basic protection of its users.</p>
<p>Go here: <a href="https://how-i-experience-web-today.com/">how-i-experience-web-today.com</a>
Laughing or crying?
I'm crying, because I've been laughing for too long and after a decade of more and more of these obstructions, I feel like it's just not funny anymore.
Coping by joking stopped working for me.
We, users of the internet, need to take action.</p>
<p>If it didn't produce CO₂, I'd wish the most infuriating websites burned down.
It does produce CO₂ to burn servers and my tapping fingers don't have the superpower to do it anyway, so I'm left with looking for a different approach.</p>
<h2 id="yes-to-privacy-aware-browsers-and-reader-modes">Yes to privacy-aware browsers and reader modes<small class="permalink"><a href="#yes-to-privacy-aware-browsers-and-reader-modes" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>I use browsers which at least pretend to protect users by blocking the most basic stuff.
I use Firefox on my desktop and Safari on my phone.</p>
<p>Both these browsers also feature a magic button, which hides everything but content on any given page.
It's quite hidden, but it's there:
See <a href="https://support.mozilla.org/en-US/kb/firefox-reader-view-clutter-free-web-pages">how-to for Firefox</a>, <a href="https://support.apple.com/guide/safari/hide-ads-when-reading-sfri32632/mac">how-to for Safari</a>.
It's called Reader Mode.</p>
<figure class="figure"><img alt="Reader Mode in Safari" src="https://honzajavorek.cz/images/screenshot-2023-04-07-at-11-20-42.png" class="img-fluid figure-img rounded"></figure>
<figure class="figure"><img alt="Reader Mode in Firefox" src="https://honzajavorek.cz/images/screenshot-2023-04-07-at-11-21-46.png" class="img-fluid figure-img rounded"></figure>
<p>It respects your dark mode settings, so no more bleeding eyes from white backgrounds when you're trying to read something in the middle of the night.
Not sure about Safari, but Firefox offers font settings and is even able to read the article out loud by a robotic voice.</p>
<p>The best thing is that you don't need to click on anything else.
You land on a page?
Don't mind any pop-ups, cookie prompts, or ads.
Just hit the Reader Mode button and be done with it.</p>
<p>No, actually, you know what's even better?
I discovered that Safari has an option to turn this on by default!</p>
<figure class="figure"><img alt="Reader Mode by default on desktop" src="https://honzajavorek.cz/images/screenshot-2023-04-07-at-12-09-00.png" class="img-fluid figure-img rounded"></figure>
<figure class="figure"><img alt="Reader Mode by default on iOS" src="https://honzajavorek.cz/images/img-2733.jpg" class="img-fluid figure-img rounded"></figure>
<p>Since I use Safari on my phone, this is pure bliss.
Liberation.
Deliverance!
I don't have to tap on anything anymore.
Most of the stuff I open turns into a nice column of text, immediately and automatically.</p>
<p>Sometimes I don't want it turned on or it doesn't process the page well.
But I figured out this is a minority of pages I open and I'm okay to do the single tap to opt-out, case by case.
Majority of the websites are utter mess though, so to me, ocassionally opting-out from Reader Mode makes more sense than opting-in.</p>
<h2 id="is-it-ethical">Is it ethical?<small class="permalink"><a href="#is-it-ethical" title="Link to this heading"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>What about those poor content providers relying on ads?
Well, in the first place, nobody asked me whether it's ethical to track me everywhere and fuck up the internet to the extent it's almost unusable in its default form.</p>
<p>I refuse personal responsibility, I don't care how ethical this is.
This is coping.
Surviving in a broken and fucked-up system.</p>
<p>You may say: If you don't like it, don't visit that website!
If you don't display ads, you're a stowaway!
Well this works only until you actually have a choice.
The internet got to a state where it's practically impossible to implement a personal policy of avoiding annoying websites.
All of them are annoying.</p>
<figure class="figure"><img alt="Old man yells at cloud" src="https://honzajavorek.cz/images/3ad-1362626647.jpg" class="img-fluid figure-img rounded"></figure>
<p>I do play the meaningless personal responsibility game to make the world a better place, but I have to choose battles.
I'm already drinking from pulpy paper straws and I sort my trash by colors to fight climate change.
I don't have any capacity left to click on cookie prompts and watch ads to save the publishers.</p>
<p>Folks, let's be honest.
If you didn't put the ads all over that page, I wouldn't be motivated to block them.
If you didn't track me, there would be no cookie prompts to avoid.
If you didn't prompt me to do five hops before I'm able to get to the content, I wouldn't be giving up on how you designed the site.</p>
<p>My <a href="https://junior.guru/">junior.guru</a> currently <a href="https://junior.guru/open/">earns 2.322€ net profit per month</a> and it doesn't have ads, tracking cookies, nor newsletter prompts.</p>
<p>And yes, I do have some <a href="https://simpleanalytics.com/junior.guru">analytics</a>.
Detailed analytics based on tracking people are overrated.
And it's an evil thing to do.
That's why the EU wants you to stop doing this!
If you cannot figure out a better business model than one based on tracking me, I have no respect.
Protecting my internet privacy and experience takes priority.</p></div></div></div></div>Notion as a replacement for Pocket2023-04-01T00:00:00+02:002023-04-01T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-04-01:/blog/notion-as-a-replacement-for-pocket/<div><div><div><div><p>I know <a href="https://www.notion.so/">Notion</a> exists, but until now I didn't pay much attention to it.
With my recent transition from social media and <a href="https://getpocket.com/">Pocket</a> to good old RSS feeds, I've been looking for a way to save random internet articles to a single feed, which I could then put to my …</p></div></div></div></div><div><div><div><div><p>I know <a href="https://www.notion.so/">Notion</a> exists, but until now I didn't pay much attention to it.
With my recent transition from social media and <a href="https://getpocket.com/">Pocket</a> to good old RSS feeds, I've been looking for a way to save random internet articles to a single feed, which I could then put to my RSS reader.</p>
<p>I had a hunch that Notion could help me with that (and perhaps with other stuff, too!) so I've finally found some time to properly play with it.
And indeed, it can really work as a replacement for Pocket, with a little bit of coding.</p>
<figure class="figure"><img alt="Notion as a replacement for Pocket" src="https://honzajavorek.cz/images/screenshot-2023-03-26-at-16-13-57.png" class="img-fluid figure-img rounded"></figure>
<p>The problem with Pocket is that there is no good way how to get the articles out of it:</p>
<ul>
<li>It has RSS feeds, but they only contain 30 items.
That is a fact which I not only observed, but also confirmed with their support.</li>
<li>It has <a href="https://getpocket.com/export">data export</a>, but I'd need to somehow scrape that.</li>
<li>It has an API, but it's 3-legged OAuth 2.0, which means it requires user interaction.
Such APIs are useless for unattended personal automation.</li>
</ul>
<p>So I tried Notion:</p>
<ul>
<li>I've made a Notion page with a "database".</li>
<li>I've installed Notion on my phone and I've added their <a href="https://addons.mozilla.org/en-US/firefox/addon/notion-web-clipper/">Web Clipper</a> to my browser.
At this point I had a place where to put links and an easy way to put them there from all my devices.</li>
<li>I've looked at their API and I was very pleasantly surprised!
It has amazing docs.
It has an unrivaled approach to auth.
Everything is very well explained.
If I want access only to my own data, I just click at the right buttons to get my "integration" created, I get an API token and I can do anything I want with it.</li>
<li>I've struggled a bit with a step where I was supposed to share the page with my "integration", because I've been following a tutorial which was based on outdated UI.
Without this step the "integration" doesn't see the page and can't access the data.
It took me a while to figure it out, but I like that the permissions are so fine-grained!</li>
<li>In a very short time I've been able to write a <a href="https://github.com/honzajavorek/honzajavorek.cz/blob/a762d2a548dca6f5437930d0c2a10358198e7ac9/blog/reading.py">Python script</a>, which uses <a href="https://github.com/ramnes/notion-sdk-py">notion-sdk-py</a> and <a href="https://github.com/lkiesow/python-feedgen">python-feedgen</a>.
It reads the links and generates RSS.
The core of the program has exactly 15 lines.</li>
<li>I use GitHub Actions to generate the file once in a few days and publish it to GitHub Pages.
I've added the URL of my RSS to <a href="https://netnewswire.com/">NetNewsWire</a>.
Done!</li>
</ul>
<p>Now I can browse the internet and easily send random articles to my RSS reader.
As a bonus, I have the history in my Notion.
With reader mode (<a href="https://support.mozilla.org/en-US/kb/firefox-reader-view-clutter-free-web-pages">Firefox</a>, <a href="https://support.apple.com/guide/safari/hide-ads-when-reading-sfri32632/mac">Safari</a>), the reading is as comfortable as in Pocket.</p>
<figure class="figure"><img alt="Screenshot nastavení přístupu do Notion API" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-03-31-at-16-07-01-notion-the-all-in-one-workspace-for-your-notes-tasks-wikis-and-databases.png"><figcaption class="figure-caption">
Notion API auth setup</figcaption></figure>
<p>Besides using Notion for storing links to read, I'll probably move my notes there, too.
I'm not satisfied with Apple Notes and I think Notion might be better fit even for some stuff I use Trello for.
I really like:</p>
<ul>
<li>The flexibility about what you can put there.</li>
<li>Combination of text and machine-readable data.</li>
<li>Ease of use of their API.
I can invent all sorts of personal automations like this.
It feels like my data is there for me to work with, it's not a hostage to their walled garden.</li>
<li>They even <a href="https://www.youtube.com/watch?v=0DIn0Ws9yTE">have AI now</a>!</li>
</ul>
<p>I'm curious about what else I can build on top of this all.
A page with my personal to-do or with bookmarks related to vacation planning might be a good beginning to get a grip of the UI, but the tool feels much, much more powerful!</p>
<p><strong>Bonus:</strong> When doing some research, I stumbled upon these two additional links: <a href="https://github.com/FujiHaruka/notion-into-sqlite">notion-into-sqlite</a> and <a href="https://datasette.io/tools/apple-notes-to-sqlite">apple-notes-to-sqlite</a>.</p></div></div></div></div>Týdenní poznámky: Rychlejší špendlíky a AI2023-03-31T00:00:00+02:002023-03-31T00:00:00+02:00Honza Javorektag:honzajavorek.cz,2023-03-31:/blog/tydenni-poznamky-rychlejsi-spendliky-a-ai/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-zamotany-v-kodu/">posledních poznámek</a> už utekl nějaký ten týden (24. 3. až 31. 3.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-zamotany-v-kodu/">posledních poznámek</a> už utekl nějaký ten týden (24. 3. až 31. 3.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/dbbb7bf406b3c33aeba36cae817919d44bfb368a08fb1b4899dba130/">Processand</a>, <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="rychlejsi-spendliky">Rychlejší špendlíky<small class="permalink"><a href="#rychlejsi-spendliky" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Většinu týdne jsem se hrabal v kódu, ale na rozdíl od minula z toho mám při pátku dobrý pocit.
Když někdo v klubu přidá reakci špendlíku 📌 k nějaké zprávě, můj bot mu ji uloží do soukromých zpráv.
Je to užitečné, ale jak jsem psal minule, toto ukládání nebylo naprogramované dobře a trvalo už skoro 10 minut.
Během týdne se mi to povedlo zrychlit na 0.3 minut.</p>
<ul>
<li>Z minulého týdne jsem měl hotové šifrování databáze, takže jsem do ní mohl začít ukládat i neveřejné věci.</li>
<li>Přebudoval jsem bota, aby stahoval do databáze i obsah soukromých zpráv.
Díky tomu se nemusí špendlíky ověřovat přes API.
Zprávy už jsou v databázi a lze v tom pohodlně lokálně hledat přes SQL.</li>
<li>Uložil jsem si ke každé zprávě, zda je veřejná nebo soukromá a upravil všechny dotazy a operace tak, aby to respektovaly.
Jako soukromé jsem označil i zprávy, které jsou v kanálech, kam nemají přístup všichni z klubu.
Všechen ostatní kód jsem upravil tak, aby počítal s tím, že kanály mohou být jak veřejné, tak i soukromé.</li>
<li>Kód celého „stahovače“ zpráv z Discordu do databáze jsem přebudoval od základů a nejspíš i zefektivnil.</li>
<li>Mnoho věcí jsem předělal tak, aby se děly už při ukládání do databáze a pak se mohly jen číst a prohledávat, ne aby se to řešilo za běhu.</li>
<li>Na ukládání globálního stavu, ať už jde o nastavení služeb, do kterých má program povolené zapisovat, nebo nastavení logování, jsem použil <em>environment variables</em>.
Při použití <a href="https://docs.python.org/3/library/multiprocessing.html">multiprocessing</a> to bylo nejvíc <a href="https://en.wikipedia.org/wiki/KISS_principle">KISS</a>.</li>
<li>Moc jsem toho neotestoval, takže to bych měl v ideálním případě dodělat.</li>
</ul>
<figure class="figure"><img alt="Špendlík" src="https://honzajavorek.cz/images/screenshot-2023-03-31-at-17-04-29.png" class="img-fluid figure-img rounded"></figure>
<h2 id="objevovani-asyncio">Objevování asyncio<small class="permalink"><a href="#objevovani-asyncio" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když už mám ten Python 3.11, tak jsem chtěl použít místo <code>asyncio.gather()</code> novinku, <em><a href="https://docs.python.org/3/library/asyncio-task.html#task-groups">task groups</a></em>.
Začal jsem se však dostávat do obskurních problémů, od <em>segmentation fault</em> až po <a href="https://github.com/Pycord-Development/pycord/issues/1986">visící program neschopný zpracovat výjimku</a> (pod <em>issue</em> je komentář s vysvětlením, proč se to děje).
Zabil jsem s tím jedno dopoledne a pak jsem to z kódu raději vyházel.</p>
<p>Naučil jsem se však při tom, že nemusím na <code>asyncio</code> tasky čekat hned, že je mohu vytvářet a až postupně si sbírat jejich výsledky, klidně třeba zrovna přes <code>asyncio.gather()</code>.
Zní to triviálně, ale mě to původně fakt nedošlo.
Všechny příklady totiž vždy vypadají takto:</p>
<pre class="highlight"><code><span></span><code><span class="kn">import</span> <span class="nn">asyncio</span>
<span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">gather</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">something</span><span class="p">(),</span> <span class="n">something</span><span class="p">(),</span> <span class="n">something</span><span class="p">()])</span>
</code></code></pre>
<p>Takže až teď mi došlo, že můžu udělat tohle:</p>
<pre class="highlight"><code><span></span><code><span class="kn">import</span> <span class="nn">asyncio</span>
<span class="n">tasks</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">tasks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">asyncio</span><span class="o">.</span><span class="n">create_task</span><span class="p">(</span><span class="n">something</span><span class="p">()))</span>
<span class="n">tasks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">asyncio</span><span class="o">.</span><span class="n">create_task</span><span class="p">(</span><span class="n">something</span><span class="p">()))</span>
<span class="n">tasks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">asyncio</span><span class="o">.</span><span class="n">create_task</span><span class="p">(</span><span class="n">something</span><span class="p">()))</span>
<span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">gather</span><span class="p">(</span><span class="o">*</span><span class="n">tasks</span><span class="p">)</span>
</code></code></pre>
<p>A ty věci se začnou dělat už při volání <code>asyncio.create_task()</code>.
Aspoň teda myslím.</p>
<p>Taky jsem zjistil, že synchronní věci mohu velmi snadno volat pomocí <a href="https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.run_in_executor">něčeho, co se jmenuje <em>executor</em></a> a nebudou mi nic blokovat.
To je perfektní, protože tím můžu obalit volání do databáze, která mám synchronní.</p>
<p>Celé mě to přivedlo na myšlenku, že by možná měl být celý backend junior.guru asynchronní a do synchronních věcí by si to mělo jen odskakovat 🤯
Protože těch asynchronních věcí je tam čím dál víc a odskakuje se do nich dost složitě (v podstatě spouštím celý nový proces a v něm <em>loop</em>), zatímco z asynchronních do synchronních se odskakuje snadno.
Jenže to by znamenalo v podstatě všechno přepsat a to je samozřejmě blbost.
Uvidím, jestli mě napadne nějaké řešení, které by na to šlo postupně.</p>
<p>Každopádně se postupně víc a víc seznamuji s <code>asyncio</code>, které jsem ještě před nedávnem vůbec neuměl.
A vlastně se mi to celkem líbí.
Škoda, že zatím není víc high-level věcí jako např. <code>TaskGroup()</code>, které by obalily občas nevzhledné přehazování <em>tasků</em> vidlema sem a tam.
A škoda, že když už něco jako <code>TaskGroup()</code> existuje, tak to dost zvláštně (ne)funguje.</p>
<p>Taky je škoda, že jsem se rozhodl použít <a href="http://docs.peewee-orm.com/">Peewee</a>, které sice má nějakou <a href="https://github.com/05bit/peewee-async">asynchronní verzi</a>, ale ta zase nepodporuje SQLite.
Věřím, že mainstreamovější SQLAlchemy by zvládla všechno.
Ani nevím, proč jsem kdysi vybral zrovna Peewee.
Možná jsem měl dojem, že na ty moje dvě tři tabulky bude stačit něco minimalistického.
Tak teď mám tabulek třicet nebo kolik, v nich desetitisíce záznamů…
Přejít z jednoho ORM na druhé by byla samozřejmě šílená práce.</p>
<h2 id="objevovani-typu-a-copilot">Objevování typů a Copilot<small class="permalink"><a href="#objevovani-typu-a-copilot" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>VS Code mi přestal z neznámého důvodu napovídat, tak jsem něco poklikal v nastavení a napovídat zase začal.
Ale zaškrtl jsem i něco, co se jmenuje <em>inlay hints</em> a teď mi to ukazuje, co si VS Code myslí, že funkce vrací, nebo jaké mají parametry typy.
No a když už jsem to tam viděl, tak jsem tam ty typy začal dopisovat.
Poprvé v životě jsem sám od sebe v Pythonu použil typy.
A když jsem je tam už měl, tak, světe div se, začalo VS Code napovídat ještě o dost lépe!</p>
<figure class="figure"><img alt="Inlay hint" src="https://honzajavorek.cz/images/screenshot-2023-03-31-at-17-06-02.png" class="img-fluid figure-img rounded"></figure>
<p>Je to návykové.
Zatím se to celé teprve učím, ale líbí se mi to.
Na malé programy nebo prototypy je to zbytečné, ale přesně na kód, který jsem teď psal, je to super.
Ukládání Discord <code>message</code> do databáze, vytahování <code>message</code> z databáze, proměnné se jmenují stejně, ale každá má jiný typ…
Zmatek.</p>
<p>No a když už jsem byl u toho, řekl jsem si, že zkusím i <a href="https://github.com/features/copilot">GitHub Copilot</a>.
Je to na 60 dní zdarma.
Když to bude dobré, budu za to klidně platit.
Kdo jiný než sólo programátor a podnikatel by měl víc benefitovat z toho, že mu bude AI napovídat?
V korporátech jim bude trvat roky, než vůbec svým lidem povolí takové věci používat.
Já to můžu používat hned a věřím, že vložené peníze se mi mnohonásobně vrátí.</p>
<p>První dojmy?
Nuže, napovídá to při psaní.
Bál jsem se, že mě to bude štvát, že mi bude každou chvíli napovídat nějakou blbost, ale vůbec.
A zatím většina věcí, co napoví, se mi celkem hodí.
Asi to vyladili tak, že napovídá jen když si fakt věří, že napovídá něco užitečného.</p>
<p>Akorát na to nejsem zvyklý, takže mě vždy strašně překvapí, když mi napoví celý kus kódu a já to odkliknu a je to napsané. Nejdřív na to čumím jako na zázrak, pak na to čumím, jestli je to fakt dobře.
Tím pádem se jakákoliv úspora zatím stírá 😀</p>
<figure class="figure"><img alt="GitHub Copilot" src="https://honzajavorek.cz/images/screenshot-2023-03-31-at-17-08-00.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Tyto dvě funkce za mě napsal GitHub Copilot, stačilo začít názvem. A pak se podívat, zda nenapsal blbost.</figcaption></figure>
<h2 id="objevovani-notionu">Objevování Notionu<small class="permalink"><a href="#objevovani-notionu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>O víkendu jsem se podíval na <a href="https://www.notion.so/">Notion</a>.
Vím o téhle věci už dlouho, ale vždy jsem to pouze viděl používat ostatní, nikdy jsem si s tím nezkoušel hrát sám.
Hned se mi to zalíbilo!</p>
<p>Přesunul jsem tam okamžitě svoje Tudů na běžné dny, udělal jsem si tam stránku s odkazy na dovolenou, zapsal jsem si tam nějaké úkoly související s úklidem v osobních a rodinných financích, apod.
Nejspíš to budu používat místo Apple Notes, které se mi nakonec nepoužívají moc dobře, a možná i místo Trella.</p>
<p>Také jsem si tam udělal seznam zajímavých odkazů k AI a seznam odkazů na články, které bych si mohl chtít přečíst.
Jak jsem psal minule, <a href="https://getpocket.com/">Pocket</a> nemá z více důvodů použitelné RSS a má OAuth 2.0 API (tzn. API k ničemu), takže jsem to zkusil vytvořit s Notionem:</p>
<ul>
<li>V Notion jsem si udělal databázi na odkazy.</li>
<li>Nainstaloval jsem si Notion na mobil a do prohlížeče jsem si dal jejich <a href="https://addons.mozilla.org/en-US/firefox/addon/notion-web-clipper/">Web Clipper</a>.
Snadné přidávání vyřešeno.</li>
<li>Mrkl jsem na jejich API a byl jsem unešen z toho, jak jednoduše a prakticky je vyřešen přístup do něj.
Jde to přehledně naklikat a vše je perfektně vysvětlené a zcela zřejmé.
Pokud chcete přístup jen ke svým datům, tak nemusíte nic řešit a jedete přes token, žádné OAuth 2.0 s interakcí.
A celá dokumentace k API je hodně promakaná.</li>
<li>Za chviličku jsem měl hotový <a href="https://github.com/honzajavorek/honzajavorek.cz/blob/main/blog/reading.py">skript</a>, který používá <a href="https://github.com/ramnes/notion-sdk-py">notion-sdk-py</a> a <a href="https://github.com/lkiesow/python-feedgen">python-feedgen</a>.
Přečte odkazy a vygeneruje RSS.
Jádro programu má přesně 15 řádků.</li>
<li>Dal jsem si to na GitHub a jednou za čas se mi přes GitHub Actions vygeneruje RSS soubor.
Ten jsem si přidal do <a href="https://netnewswire.com/">NetNewsWire</a> a hotovo!
Teď mohu chodit po internetu a posílat si náhodné články do RSS čtečky a ještě mám jejich databázi v Notionu.</li>
</ul>
<figure class="figure"><img alt="Notion" src="https://honzajavorek.cz/images/screenshot-2023-03-26-at-16-14-39.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Databáze odkazů</figcaption></figure>
<figure class="figure"><img alt="Screenshot nastavení přístupu do Notion API" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-03-31-at-16-07-01-notion-the-all-in-one-workspace-for-your-notes-tasks-wikis-and-databases.png"><figcaption class="figure-caption">
Nastavení přístupu do Notion API</figcaption></figure>
<figure class="figure"><img alt="Screnshot NetNewsWire" src="https://honzajavorek.cz/images/screenshot-2023-03-26-at-16-13-57.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Výsledek!</figcaption></figure>
<p>Když už jsem tyhle věci zkoumal, tak pokud by někdo chtěl vysypat věci z Notion nebo Apple Notes do SQLite, může se hodit <a href="https://github.com/FujiHaruka/notion-into-sqlite">notion-into-sqlite</a> nebo <a href="https://datasette.io/tools/apple-notes-to-sqlite">apple-notes-to-sqlite</a>.</p>
<h2 id="mvp-katalogu-kurzu">MVP katalogu kurzů<small class="permalink"><a href="#mvp-katalogu-kurzu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Vymyslel jsem si MVP katalogu, na kterém bych chtěl začít co nejdříve pracovat.
Každý krok by mělo být něco, co mohu v rámci <em>continuous deployment</em> hodit hned na produkci.</p>
<ol>
<li>Udělám stránku s kurzy, kam se přesune <a href="https://junior.guru/handbook/practice/#kde-hledat-kurzy-a-workshopy">současný seznam</a>, a která má svoje tlačítko v menu.</li>
<li>Seznam bude abecedně.</li>
<li>Menu přeteče, takže ho vyladím pro každé rozlišení.
Možná ho budu muset celé předělat.</li>
<li>Informace o kurzech přesunu na samostatné stránky, kde budu mít název, JEDNU VĚTU a upoutávku na klub.</li>
<li>Stránky z <code>/topics/</code> (<a href="https://junior.guru/topics/engeto/">příklad</a>) přesměruju na tyto nové stránky.</li>
<li>Zvýrazním stránky, které jsou o partnerských firmách.
Propojím je s <a href="https://junior.guru/open/#firemni-partnerstvi">přehledem firemních partnerství</a>.</li>
<li>Seznam bude řazen tak, že první budou partneři a potom bude abecedně.</li>
<li>Firmy začnu štítkovat a budu generovat stránky pro jednotlivé štítky.
Díky tomu půjde mezi kurzy nějak filtrovat.</li>
<li>Doplním postupně další a další data (odkaz, založení firmy, logo…).</li>
<li>Vymyslím ceník pro tyto firmy, skoro nic nedám zadarmo.</li>
<li>Ozvu se hned několika firmám, které mám rozjednané a de facto už jen čekají na to, až bude katalog existovat.</li>
<li>Vytvořím „návod“ na kurzy do příručky a propojím ho s katalogem.
Popíšu obecně jejich výhody i úskalí.</li>
</ol>
<p><strong>Bonus:</strong> Převedu zbytek <code>/topics/</code> (<a href="https://junior.guru/topics/python/">příklad</a>) někam do příručky a zabiju starou infrastrukturu, na které tyto stránky běží.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Propagoval jsem slevu na WebExpo a <a href="https://www.youtube.com/watch?v=vN235cq8xP4">svou Q&A, která bude po Velikonocích</a>.
S tou Q&A jsem otapetoval všechny aspoň trochu relevantní skupiny na FB, kde jsem.</li>
<li>Z <a href="https://linkedin.zendesk.com/hc/en-us">LinkedIn API Supportu</a> jsem dostal rychlé a užitečné odpovědi.
Bohužel však o tom, že všechna jejich API, která bych chtěl použít, mají jen OAuth 2.0.
Myslím, že napíšu článek o tom, proč jsou OAuth 2.0 API nejvíc na hovno a nepoužitelná API, která z hloubi duše nenávidím.</li>
<li>Green Fox Academy se rozhodli napsat článek na základě jedné z epizod <a href="https://junior.guru/podcast/">našeho podcastu</a>.
Poslali mi text a já jim to schválil.</li>
<li>Existuje internetový tvůrce, kterého sleduji, obdivuji, žeru vše co dělá a čerpám z jeho výtvorů inspiraci pro směřování svého byznysu.
Má svou vlastní stránku na Wikipedii.
Teď jsem se oklikou přes kamaráda dověděl, že ví o mé existenci.
A nejen to!
Dokonce mi velmi fandí a sleduje, jak se mi daří.
Tak jsem se s tímto svým internetovým hrdinou hned propojil.
A on se mi hned ozval a domluvili jsme se na schůzce, že něco vytvoříme spolu.
Těšte se!</li>
<li>Všiml jsem si <a href="https://obcan.petrbrzek.cz/">Občan GPT</a> a přesně něco takového bych chtěl pro klub a junior.guru.
Je to pecka.
Bavil jsem se o tom s kamarádem <a href="https://milavotradovec.cz/">Mílou</a>, který do toho vidí trochu víc a vymýšleli jsme, co a jak by šlo v tomto směru udělat.</li>
<li>Tři firmy nejspíš neprodlouží partnerství s junior.guru.
Jedna kvůli ochlazení na trhu, dvě spíš proto, že jsem změnil ceník a už to pro ně nebude dávat smysl.
S takovou restrukturalizací jsem při změnách v ceníku počítal, chtěl jsem spíš méně firem za více peněz, než mnoho firem za méně peněz.
Můj čistý měsíční příjem se mezitím dostal na 54.000 Kč.</li>
<li>Při pátečku jsem si naprogramoval stahování kurzovního lístku z ČNB a udělal jsem si <a href="https://junior.guru/open/#cisty-zisk">tady</a> přepočet toho čistého měsíčního zisku do dolarů a eur.
Občas si čtu o zahraničních podnikavcích, kteří taky otevřeně sdílí svoje výdělky.
Mají to však v jiné měně, tak se mi to špatně srovnává.
Už mě nebavilo to pořád přepočítávat ručně, tak jsem si to naprogramoval.</li>
<li>Věnoval jsem se anketě mezi juniory, kterou připravujeme s ENGETO Academy.
Připravil jsem poslední kousek, který jsem měl na starost.
Naplánovali jsme si na dnešek call i s <a href="https://www.linkedin.com/in/baradrb/">Bárou</a> a doladili na něm jak a co bude dál.</li>
<li>Nainstaloval jsem si <a href="https://diffusionbee.com/">DiffusionBee</a>, ale neměl jsem čas ani náladu si s tím zatím nějak hrát.</li>
<li>Přidal jsem <a href="https://docs.python.org/3/library/logging.html">logování</a> do souboru.
Doteď jsem měl na produkci <code>INFO</code> a lokálně <code>DEBUG</code>.
Produkce teď ale šifruje artefakty, tak se tam může <code>DEBUG</code> ukládat do souboru a třeba mi to jednou pomůže s laděním.
Lokálně mi zas přišlo, že je těch <code>DEBUG</code> výpisů už moc, tak jsem je vypnul a pro detaily si buď půjdu do souboru, nebo si level dočasně snížím.</li>
<li>Povedlo se mi <a href="https://apple.stackexchange.com/questions/259093/can-touch-id-on-mac-authenticate-sudo-in-terminal">zapnout TouchID na zadávání <code>sudo</code> hesla v terminálu</a>.
O dost pohodlnější!</li>
<li>Dal jsem nějaké věci do skupiny <a href="https://www.facebook.com/groups/1155320448138033/">Vše za odnos Žižkov</a>.
Většina z domu zmizela v řádu hodin.</li>
<li>Dnes jsem byl naposled v „podarovaném“ coworkingu.
Nový jsem zatím nenašel.
Komunikuji s <a href="https://www.pracovna.cz/">Pracovnou</a>, ale na Velikonoce budeme pryč, tak budu pokračovat až se vrátíme do Prahy.</li>
<li>Zjistil jsem, že můj někdejší velmi oblíbený učitel španělštiny dnes <a href="https://www.ceskatelevize.cz/porady/10435049455-dobre-rano/423236100071027/cast/967934/">vystupuje v televizi</a> a dělá všelijaké prospěšné věci kolem vzdělávání dětí.</li>
<li>Dostal jsem DIČ.
Hned jak mu <a href="https://ec.europa.eu/taxation_customs/vies/#/vat-validation">začala platnost</a>, zadal jsem ho do Simple Analytics, ImprovMX, Memberful, a pro jistotu i na GitHub, kdyby mi poslal fakturu za Copilot.</li>
<li>Přepsal jsem skript, který zastavuje předchozí buildy na hlavní větvi na CircleCI, aby taky používal <a href="https://github.com/alpinweis/pycircleci">pycircleci</a> (viz předchozí poznámky).</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>.
Psal jsem si s doktory, firmami, připomínal jsem lidem jejich úkoly, proplácel jsem nějaká špatně zaplacená členství, přidával mentory, uděloval stipendia.
Dělal jsem si pořádek v osobních a rodinných financích.</li>
<li>Odmítl jsem jednu neplacenou spolupráci, ve které jsem neviděl benefity pro junior.guru.
Myslel jsem si, že si před tím projdu <a href="https://www.starterstory.com/how-to-say-no">How to say no</a> a to mi dodá odvahu, ale nakonec jsem to zvládl i bez toho.</li>
<li>Koupil jsem si nosič na kolo, ale chyběly tam nějaké šrouby a nenamontuju ho.
Tak ho dneska ponesu zpět do prodejny.
Nemají skladem další, tak snad nebudu celé jaro čekat na vyřešení.</li>
<li>Během 8 dní jsem při procházkách nachodil 6 km, ujel na kole 18 km. Celkem jsem se hýbal 7 h a zdolal při tom 24 km.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Udělám si jarní velikonoční pohodičku na Moravě.</li>
<li>Pokud budu pracovat, mohl bych dopsat testy na věci kolem špendlíků.</li>
<li>Pokud budu pracovat, mohl bych si pohrát s AI:
Šlo by použít AI na vítání nových členů v klubu?
Nebo na analýzu pracovních inzerátů?</li>
</ol>
<p>Až se vrátím, chtěl bych začít tvořit ten katalog.
Je duben, nejvyšší čas pověnovat se i věcem, které jsem označil za největší priority tohoto roku!</p>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.seznamzpravy.cz/clanek/domaci-zivot-v-cesku-konec-domacich-ukolu-deti-pretezuji-znechucuji-jim-skolu-a-jsou-diskriminacni-225907">Konec domácích úkolů? Děti přetěžují, znechucují jim školu a jsou diskriminační</a><br>Co si myslíte o domácích úkolech? Měly by být jen dobrovolné? Nebo nechat? Zrušit?</li>
<li><a href="https://mimo-agendu.ghost.io/atomovy-kufrik-petra-pavla/">Atomový kufřík Petra Pavla</a><br>Návod jak rozchodit OpenAI Whisper pro české texty. Super postřeh o tom, jak si politici mohou vytvořit vlastní médium, kde nebudou nikým konfrontováni. A když jsem četl úderné „wake up!“ v závěru, měl jsem dojem, že se v tu chvíli v Economii musely roztřát okenní tabulky.</li>
<li><a href="https://www.nytimes.com/interactive/2023/03/14/opinion/middle-age-millennials.html">Opinion | This Isn’t What Millennial Middle Age Was Supposed to Look Like</a><br>Krize středního věku neexistuje. A jestli vůbec někdy pro někoho existovala, tak mileniálové mají úplně jiné starosti. Nemají na krizi středního věku ani čas, ani klid, ani peníze.</li>
<li><a href="https://www.youtube.com/watch?v=dgd88zE3O38&t=110s">The BIGGEST BREAKTHROUGH in Mac gaming!</a><br>Windows hry na Macu! Možná si jednou to svoje oblíbené Original War fakt ještě zahraju 😄</li>
<li><a href="https://daniel.haxx.se/blog/2023/03/20/twenty-five-years-of-curl/">twenty-five years of curl | daniel.haxx.se</a><br>Curl má 25 let. „It just took 21 years to make curl my job.“ píše Daniel Stenberg, maintainer a držitel několika ocenění.</li>
<li><a href="https://samkriss.substack.com/p/wokeness-is-not-a-politics">Wokeness is not a politics</a><br>„The problem is that intellectuals—myself included—are a weird, clammy, undersocialised lot, who spend a lot more time floating around in the bubbly otherworld of ideas than engaging with actual people. What happens if you ask a woke person what wokeness is? They’ll tell you that actually, there’s no such thing as wokeness. It’s not an ideology. It’s not a belief system. It’s just basic decency. It’s just being a good person.
They’re right. Wokeness is an etiquette.“</li>
<li><a href="https://www.joshwcomeau.com/blog/the-end-of-frontend-development/">The End of Front-End Development</a><br>„At every company I've worked at, we had tons of stuff we wanted to do, but we were constrained by the number of developers we had. What would happen if developers suddenly became 2x more productive? More bugs would be fixed, more features would be shipped, more profit would be made. There's no shortage of stuff to build, and so it's not like we'd run out of work for the devs to do. I actually think that this could increase the total # of developer jobs.“</li>
<li><a href="https://www.seznamzpravy.cz/clanek/kultura-pod-carou-cist-mene-encyklopedii-vic-beletrie-jinak-nad-ai-nezvitezime-228364">Pod čarou: Číst méně encyklopedií, víc beletrie. Jinak nad AI nezvítězíme</a><br>„Řada programátorů také propadá panice při poznání, že AI systémy dokážou docela dobře psát kód. Teoreticky jim tak sice zbyde více času na přemýšlení o tom, jaké lidské potřeby má příslušný software naplňovat a jak celou věc dobře komunikovat s uživateli i samotnou umělou inteligencí, ale to je opět věc, ke které jsou potřeba ony nenahraditelné a beletrií vytvářené schopnosti ztotožnění s jinými lidmi a pochopení hlubších zákonitostí jazyka i neverbální komunikace… Pokud to začneme s psaním a čtením literatury faktu příliš přehánět na úkor beletrie a budeme ke knihám přistupovat jen jako ke zdroji rychle a prakticky využitelných informací, nakonec můžeme paradoxně skončit jako lidská obdoba AI systémů.“</li>
<li><a href="https://www.youtube.com/watch?v=FSD5ps9bLQ0">The £100BN Railway Dividing a Nation</a><br>V Británii staví mega vysokorychlostní železnici. Vůbec jsem o tom projektu nevěděl, toto je krátký dokument o tom, jak se to staví a jaké to má problémy. Dopadne české VRT podobně?</li>
<li><a href="https://www.youtube.com/watch?v=Bf-dbS9CcRU&t=912s">The Future of Work With AI - Microsoft March 2023 Event</a><br>Sledoval jsem to jak přistání na Měsíci. Změní se všechno. To, co je ve videu, je obdoba toho, když někdo dokázal vyrobit telefon bez drátu. Přemýšlíme v zajetých kolejích a AI si tam jen sypeme jako koření. Až doopravdy pochopíme, co všechno s tím můžeme dělat, to bude teprve jízda. Jako když přišel smartphone.</li>
<li><a href="https://medium.com/@pravse/the-maze-is-in-the-mouse-980c57cfd61a">The maze is in the mouse</a><br>V Oraclu bylo slovo customer o dost víc přítomné, ale jinak mi to přijde dost podobné. Některé věty přímo rozbrněly moje pozapomenuté PTSD z korporátu. „Does anyone at Google come into work actually thinking about “organizing the world’s information”? They have lost track of who they serve and why. Having worked every day at a startup for eight years, the answer was crystal clear for me — I serve our users. But very few Googlers come into work thinking they serve a customer or user. They usually serve some process or some technology. They serve their manager or their VP. They serve other employees. They will even serve some general Google technical or religious beliefs. This is a closed world where almost everyone is working only for other Googlers, and the feedback loop is based on what your colleagues and managers think of your work. Working extra hard or extra smart doesn’t create any fundamental new value in such a world. In fact, in a bizarre way, it is the opposite.“</li>
<li><a href="https://www.youtube.com/watch?v=0DIn0Ws9yTE">NOTION AI IS HERE – 10 Mind-Blowing Examples!</a><br>Notion už má taky AI. Týpek ve videu ukazuje hned několik věcí, na které se to hodí.</li>
<li><a href="https://twitter.com/TheAnkurTyagi/status/1638550570704224265">(něco na Twitteru)</a><br>Přesný</li>
</ul></div></div></div></div>Týdenní poznámky: Zamotaný v kódu2023-03-24T00:00:00+01:002023-03-24T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2023-03-24:/blog/tydenni-poznamky-zamotany-v-kodu/<div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-pruzkumy-pripravy-a-podcast/">posledních poznámek</a> už utekl nějaký ten týden (17. 3. až 24. 3.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo …</a></p></div></div></div></div></div><div><div><div><div><p>Jak se mi daří v jednom člověku provozovat a rozvíjet <a href="https://junior.guru/">junior.guru</a>?
Od <a href="https://honzajavorek.cz/blog/tydenni-poznamky-pruzkumy-pripravy-a-podcast/">posledních poznámek</a> už utekl nějaký ten týden (17. 3. až 24. 3.), tak nastal čas se opět ohlédnout a utřídit si myšlenky.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/markus-spiske-RiSAjGsa0vg-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotil <a href="https://unsplash.com/@markusspiske">Markus Spiske</a></figcaption></figure>
<div class="alert alert-warning" role="alert">
<p><strong>Čísla:</strong> Finanční výsledky, návštěvnost a další čísla k junior.guru <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/dbbb7bf406b3c33aeba36cae817919d44bfb368a08fb1b4899dba130/">Processand</a>, <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></p>
<p><strong>Plány:</strong> Četli jste, co <a href="https://honzajavorek.cz/blog/strategie-na-2023/">letos plánuji</a>?
Svůj postup zaznamenávám do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.</p>
</div>
<h2 id="programovani-nesmyslu">Programování nesmyslů<small class="permalink"><a href="#programovani-nesmyslu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Minule jsem psal:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Pak jsem ještě přepracoval způsob, jakým vypínám a zapínám, zda může bot zapisovat do různých služeb.
Chci totiž, aby se muselo explicitně zapnout, že může zapisovat změny do Discordu nebo do Memberful API.
Na produkci je to vše zapnuté, ale při vývoji mi to brání udělat nevratné chyby ledabylým spouštěním příkazů.
Nebudu to tady rozepisovat, bylo by to dost technické, ale s výsledkem jsem dost spokojen.</p>
</blockquote>
</figure><p>Samozřejmě to nebylo tak jednoduché.
Našel jsem v tom spoustu nedomyšleností a chyb.
Strávil jsem s tím postupně pondělí, úterý, středu…
Poznatky:</p>
<ul>
<li>Když mám v Pythonu globální proměnnou a pak si přes <code>multiprocessing</code> udělám proces, tak ten ji nemá.
Tohle jsem zjistil při debugování, proč mi nic nefunguje a byl to velký heuréka moment, ale radost jsem vlastně moc neměl.
Data si explicitně předávám mezi procesy a už to nechávám tak, ale zpětně si říkám, zda nakonec nebyly přepínače přes <em>environment variables</em> víc <a href="https://en.wikipedia.org/wiki/KISS_principle">KISS</a>.</li>
<li>Povedlo se mi napíchnout do Discord klienta a při vypnutém zapisování do Discordu nechat kód spadnout, pokud se pokusí přes HTTP poslat nějakou metodu, která není <a href="https://developer.mozilla.org/en-US/docs/Glossary/Idempotent">idempotentní</a>.
Perfektní pojistka!
Hned mě to upozornilo na několik situací, které jsem neošetřil.</li>
</ul>
<p>Asi vám nemusím popisovat, zda mám po tomto týdnu pocit z dobře odvedené práce.
Zamotal jsem se do kódu, seděl nad tím dny a výsledkem je akorát „lepší kód“, místo abych dokončil něco, co má reálně dopad na uživatele.</p>
<h2 id="anketa">Anketa<small class="permalink"><a href="#anketa" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Z ENGETO Academy přišly poslední dílky ankety, ale já jsem nezvládl dodat svůj poslední dílek.
Zato jsem sepsal vše pro <a href="https://www.linkedin.com/in/baradrb/">Báru</a>, která nám má s anketou pomoci.</p>
<p>Mezitím koukám, jak vychází ankety <a href="https://www.czechitas.cz/blog/dvere-do-it-maji-juniori-otevrene-zajem-o-it-je-podle-firem-dulezitejsi-nez-diplom">všude možně jinde</a>.</p>
<h2 id="prednaska-a-youtube">Přednáška a YouTube<small class="permalink"><a href="#prednaska-a-youtube" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p><a href="https://www.linkedin.com/posts/honzajavorek_daedtafx-djangogirls-python-activity-7043536893803667456-bWYS">Propagoval jsem</a> úterní přednášku v klubu s <a href="https://www.sedlakovi.org/">Nasťou Sedlákovou</a> o tom, jak zvládat kariéru s dětmi za zády.
Přednáška vyšla parádně, opravovali jsme pak akorát trochu zvuk, ale i to zajistil můj pomocník Tinuki.
Ohlasy <a href="https://witter.cz/@banterCZ/110068564967005849">nadšené</a>.</p>
<figure class="figure"><img alt="Nasťa" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/20230321-44f42c2275ac69c98bd565bff92ffd41b19644079e3cfd8155a76067ef13521d-yt.png"></figure>
<p>Našel jsem kanál <a href="https://www.youtube.com/channel/UCkRfArvrzheW2E7b6SVT7vQ">YouTube Creators</a>, kde vychází novinky pro tvůrce na YouTube.
Přidáno do RSS čtečky.
YouTube se snaží se svými Shorts čelit nástupu TikToku, teď chystají <a href="https://www.youtube.com/watch?v=feMd_GvZSf4">velkou ofenzivu na podcasty</a> (zatím nedostupné v ČR), z čehož asi nemá radost Spotify.
Už teď tam mám přednášky (pro členy), podcast (přes <a href="https://www.headliner.app/">Headliner</a>), budou tam moje live Q&A.
Čím dál víc mi dává smysl rozvíjet tam <a href="https://www.youtube.com/channel/@juniordotguru">kanál</a> a publikum, bez ohledu na formáty, kterým se chci do budoucna věnovat.</p>
<figure class="figure"><img alt="Moje Q&A" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/20230411-2882f31d997e2dc52be20720fdcb875c5d608d57f4a0c66de27147cd55918894-dc.png"></figure>
<p>PyLadies jsem slíbil, že do konce týdne poskytnu informace k chystané Q&A.
Doladil jsem tedy titulek, popisek a plakátek.
Výsledek k vidění přímo na YouTube: <a href="https://www.youtube.com/watch?v=vN235cq8xP4">Honza Javorek: Programování jako kariéra? Ptej se! (Q&A)</a>
Sdílejte všem, kdo by se mě mohli chtít na něco zeptat 😅</p>
<h2 id="pracovni-misto">Pracovní místo<small class="permalink"><a href="#pracovni-misto" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>S koncem března mi bude končit „podarované“ pracovní místo v Karlínském coworkingu.
Bylo perfektní, že jsem to mohl vyzkoušet a donutilo mě to zkusit přeskládat každodenní režim.
V práci odjinud než z domova bych rád pokračoval, ale ne tam, kam jsem teď chodil.</p>
<p>Uvažoval jsem o <a href="https://www.pracovna.cz/en/cowork">Pracovně</a>, ale Nasťa mi dala tip, že v <a href="https://www.dumradost.cz/cs/pronajem/kancelare">Radosti nabízí levné kanceláře</a>, tak to omrknu nejdřív tam.
Poslal jsem jim poptávku.
Pobavilo mě, že „malá zasedačka“ je pro 25 lidí, velká pro 70–100 osob.</p>
<h2 id="spendliky-a-sifrovani">Špendlíky a šifrování<small class="permalink"><a href="#spendliky-a-sifrovani" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když někdo dá v klubu reakci špendlíku k libovolné zprávě, bot mu ji uloží do soukromých zpráv.
Tato funkce je implementovaná příšerně.
V listopadu 2021 jsem si udělal poznámku, že zpracování špendlíků trvá moc dlouho, 2,5min.
A že to mám přepsat.</p>
<p>Pak mám poznámku z června 2022, že to trvá 6min.
Teď to trvá 7,2min a bot mi kvůli tomu čím dál častěji spadne.
Tak jsem si řekl, že jsem chtěl sice dělat jiné věci, ale tohle už hoří, tak to předělám.</p>
<p>Jeden z problémů je, že bot neumí efektivně pracovat s historií soukromých konverzací, které vede s členy klubu.
Bylo by snadné zprávy uložit do SQLite, ale jsou to soukromé zprávy a i když jsou mezi botem a uživatelem, členové si nejspíš nemyslí, že když tam něco napíšou, objeví se to pak někde v zipu ke stažení.</p>
<p>Jako první jsem tedy přistoupil k tomu, co jsem chtěl stejně udělat už dávno, a to k zašifrování záloh databáze.
Pro jednoduchost jsem zvolil symetrické GPG.
Nechal jsem 1Password vygenerovat silné heslo a napsal jsem si nové příkazy do svého CLI v <a href="https://click.palletsprojects.com/">click</a>u, které umí zašifrovat zip, odšifrovat, stáhnout z CircleCI.</p>
<ul>
<li>Chtěl jsem použít nějakou „novou“ šifru <code>ed25519</code>, ale nepovedlo se mi to na macOS rozchodit, tak jsem to vzdal.</li>
<li>ChatGPT mi pomohlo správně formulovat jednotlivé GPG příkazy.</li>
<li>Nejdřív jsem chodil na CircleCI API jen tak z <code>requests</code>, ale čím víc toho bylo, tím to byla větší otrava.
Použil jsem místo toho <a href="https://github.com/alpinweis/pycircleci/">pycircleci</a>.</li>
<li>Příkaz na zašifrování a rozšifrování si dokáže heslo přečíst z mého 1Passwordu.
Není to sice moc přenositelné, ale pro mě velice pohodlné a se svým týmem vývojářů, čítajícím pouze mou osobu, jsme se shodli, že to tak být může.</li>
</ul>
<figure class="figure"><img alt="ChatGPT a GPG" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-03-24-at-17-58-10.png"></figure>
<h2 id="dane">Daně<small class="permalink"><a href="#dane" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Odeslal jsem daně a přehledy za rok 2022.
S datovkou a <a href="https://www.mojeid.cz/">MojeID</a> to bylo za 10 minut hotové.</p>
<p>Daňař mi poslal dokument k podepsání.
Do PDFka jsem na jeden klik plácl <a href="https://support.apple.com/guide/preview/fill-out-and-sign-pdf-forms-prvw35725/mac">podpis v macOS Preview</a> a pak jsem to prohnal přes <a href="https://github.com/rwv/lookscanned.io">lookscanned.io</a>.
Hotovo!
Od 25.3.2023 jsem <a href="https://www.jakpodnikat.cz/identifikovana-osoba-k-dph.php#anid0">identifikovanou osobou</a>, další velký úkol splněn.</p>
<h2 id="doktori">Doktoři<small class="permalink"><a href="#doktori" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Zhoršily se mi vrozené potíže s kůží.
Nejdřív jsem to nějak „jako vždycky“ odbýval, ale najednou to nestačilo, tak se to vymklo kontrole.
Pokorně jsem tedy najel na přísný režim, zrušil sporty, nasadil masti.
A jal se najít dermatologa, který by mě po letech přijal do dlouhodobé péče.
Doktora jsem našel.
Na květen 😀
Naštěstí ale režim zafungoval a už to mám zase pod kontrolou.</p>
<p>Obvodní lékařka mi neodepisovala na e-mail (prosbu o recept), tak jsem jí zavolal.
Minulý týden měla dovolenou.
Tohle se mi stalo už poněkolikáté, přitom je to vždy u ní na webu v aktualitách.
Napadlo mě, zda nemají RSS.
Mají!
Takže už ve své RSS čtečce odebírám i aktuality své obvoďačky.
Moc jich není, ale o to důležitější bývají.</p>
<figure class="figure"><img alt="Aktuality" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-03-24-at-18-00-12.png"></figure>
<h2 id="rozbilo-se-samo">Rozbilo se samo<small class="permalink"><a href="#rozbilo-se-samo" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Blbla mi instalace projektu, tak jsem upgradoval na nejnovější <a href="https://python-poetry.org/">Poetry</a>.
To způsobilo <a href="https://github.com/python-poetry/poetry/issues/7184">další problémy</a>.
Tak jsem upgradoval Python z 3.10 na 3.11, na hlavním repozitáři i na realtime botovi.</p>
<p>Přestala fungovat normalizace adres u pracovních inzerátů.
Seznam totiž <a href="https://developer.mapy.cz/rest-api/">přesunul HTTP API Mapy.cz na jiné místo a změnil režim přístupu</a>.
Psal jsem si s nimi, ale během „beta“ režimu neumí zatím nabídnout menší balíček, než <a href="https://developer.mapy.cz/cena/cenik-premioveho-uziti/">800 Kč/měs</a>.
To pro mě nedává vůbec smysl.
Mám prý počkat, až to bude pro veřejnost a sledovat <a href="https://developer.mapy.cz/">developer.mapy.cz</a>.
Tak jsem to nějak zatím hacknul a čekám.</p>
<figure class="figure"><img alt="API zmizelo" src="https://honzajavorek.cz/images/screenshot-2023-03-21-at-14-23-12.png" class="img-fluid figure-img rounded"></figure>
<p>V pátek GitHub <a href="https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/">změnil SSH host klíč</a> a rozbil tím půl vývojářského internetu.
Musel jsem to opravit lokálně a na CircleCI upgradovat <a href="https://github.com/guitarrapc/git-shallow-clone-orb">git-shallow-clone-orb</a>, kde autor naštěstí urychleně vydal novou verzi.</p>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li><a href="https://github.com/juniorguru/juniorguru-chick/issues/">Zaznamenal jsem</a> pár dalších nápadů pro realtime bota.</li>
<li>Dočetl jsem <a href="https://www.goodreads.com/book/show/52930474-the-middle-ages">The Middle Ages: A Graphic History</a>.
Pěkné to bylo!</li>
<li>Experimentuji s <a href="https://getpocket.com/">Pocketem</a>.
Napadlo mě, že bych si tam mohl posílat náhodné články z internetu a pak je přes RSS vytáhnout do své RSS čtečky.
Bohužel jejich RSS má jen 30 položek (na supportu mi potvrdili, že to je <em>feature</em> a ne <em>bug</em>).
A není tam nic než nadpisy a odkazy.
Neznáte jiný nástroj, kam jde snadno z počítače i z mobilu posílat odkazy a pak je dostat jako neomezené RSS?</li>
<li>Sešel jsem se s kámošem Jožou, probrali jsme spolu drby ze světa práce, plány s junior.guru mentoringem nebo katalogem kurzů, vypili kafe, půjčil mi komixy.</li>
<li>Navštívila nás babička, tak jsem byl na rande s manželkou.</li>
<li>Zavolal jsem si s Iry, které jsem potkal v listopadu díky kamarádům z Afriky, kteří jeli do Prahy na Ubuntu Summit.
Bavili jsme se o životě a o tom, jak zvládáme podnikání.
Oni ve dvou lidech dělají <a href="https://zorin.com/">Zorin OS</a>.
Poradili mi, že až budu řešit rozúčtovávání DPH do každé země zvlášť, jako musí oni, může se mi hodit vědět, že existuje <a href="https://www.paddle.com/">Paddle</a>.</li>
<li>Narazil jsem na článek na <a href="https://navolnenoze.cz/novinky/blog/">blogu portálu Navolnénoze.cz</a>.
Ten blog znám, vychází tam dobré věci, ale v RSS čtečce jsem ho neměl.
Tak si ho jdu přidat a najednou koukám, že <a href="https://navolnenoze.cz/novinky/">Novinky</a> jsou úplně přesně to, co jsem v předešlých poznámkách popsal jako svůj „záměr s newslettery“ 😀</li>
<li>Svůj postup při plnění <a href="https://honzajavorek.cz/blog/strategie-na-2023/">svých plánů</a> jsem přesunul do <a href="https://github.com/orgs/juniorguru/projects/1/">tabulky na GitHubu</a>.
Když jsem naposledy zkoušel používat GitHub Projects, vůbec to nebylo tak nabušené jako teď!
Příjemné překvapení, používá se to suprově.</li>
<li>Udělal jsem změny v šabloně pro týdenní poznámky, abych ji co nejvíc zestručnil a změnil jsem úvodní obrázek, aby si lidi všimli, že je něco jinak.
Poznámky samotné se mi bohužel opět nepovedlo napsat kratší.</li>
<li>E-maily, <a href="https://junior.guru/club/">klubový Discord</a>, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>.
Napsal jsem (konečně) firmám, kterým bude brzy končit partnerství.
V Python komunitě jsem věnoval hodně času formulování svých myšlenek co se týče účelu a budoucnosti <a href="https://blog.python.cz/">blog.python.cz</a>.
Řešil jsem jeden ztracený login na Discord a dvě stipendia.</li>
<li>Během 8 dní jsem při procházkách nachodil 5 km, na túrách nachodil 6 km, ujel na kole 18 km. Celkem jsem se hýbal 7 h a zdolal při tom 29 km.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví:</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Přebuduji funkci na špendlíky.</li>
<li>Rozmyslím MVP katalogu vzdělávacích agentur.</li>
<li>Promo mojí Q&A a poslední epizody podcastu.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel:</p>
<ul>
<li><a href="https://www.voxpot.cz/dvacet-let-od-invaze-do-iraku-vedla-k-chaosu-i-nastupu-islamskeho-statu-ameriku-stala-duveryhodnost-rika-analytik/">20 let od invaze do Iráku. Vedla k chaosu i nástupu Islámského státu, Ameriku stála důvěryhodnost, říká analytik - VOXPOT</a><br>„…ať už šlo o ten nepravdivý argument zbraněmi hromadného ničení, či o invazi bez souhlasu Rady bezpečnosti OSN, Abú Ghrajb nebo rozpad iráckého státu – to vše poměrně výrazně podlomilo roli, kterou USA měly na začátku 21. století.“</li>
<li><a href="https://www.youtube.com/watch?v=oDzfZOfNki4">Kara Lawson: Handle Hard Better</a><br>Motivační formulka 💪</li>
<li><a href="https://twitter.com/brdskggs/status/1637114268876144640">(něco na Twitteru)</a><br>GPT usnadnilo rozesílání necíleného spamu, protože dokáže bez vynaložení jakékoliv energie vytvořit zprávu, která cíleně vypadá. Vypadá to však, že to jde řešit 😄</li>
<li><a href="https://twitter.com/jacksonfall/status/1636107218859745286">(něco na Twitteru)</a><br>AI dostala $100 a úkol co nejrychleji z nich udělat co nejvíc peněz. Twitter vlákno.</li>
<li><a href="https://www.theguardian.com/science/2023/mar/16/nasa-reveals-new-spacesuit-for-artemis-moon-landing">Nasa reveals new spacesuit for Artemis moon landing</a><br>Nové astronautské obleky NASA</li>
</ul></div></div></div></div>Týdenní poznámky: Průzkumy, přípravy a podcast2023-03-17T00:00:00+01:002023-03-17T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2023-03-17:/blog/tydenni-poznamky-pruzkumy-pripravy-a-podcast/<div><div><div><div><p>Utekl zas nějaký ten týden (10. 3. až 17. 3.) a tak <a href="https://honzajavorek.cz/blog/tydenni-poznamky-nabidky-prace-realtime-bot-brno-a-mnoho-dalsiho/">stejně jako minule</a> sepisuji, co jsem dělal a co jsem se naučil.
Tvořím <a href="https://junior.guru/">junior.guru</a> a nemám šéfa, kterému bych reportoval každý svůj krok, ale mám <a href="https://junior.guru/club/">klub</a> a členy by mohlo zajímat, co dělám.
Psaní poznámek mi taky …</p></div></div></div></div><div><div><div><div><p>Utekl zas nějaký ten týden (10. 3. až 17. 3.) a tak <a href="https://honzajavorek.cz/blog/tydenni-poznamky-nabidky-prace-realtime-bot-brno-a-mnoho-dalsiho/">stejně jako minule</a> sepisuji, co jsem dělal a co jsem se naučil.
Tvořím <a href="https://junior.guru/">junior.guru</a> a nemám šéfa, kterému bych reportoval každý svůj krok, ale mám <a href="https://junior.guru/club/">klub</a> a členy by mohlo zajímat, co dělám.
Psaní poznámek mi taky pomáhá nezbláznit se a nepropadat pocitu, že je konec týdne a já jsem nestihl nic udělat.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/jan-kahanek-g3O5ZtRk2E4-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotka od <a href="https://unsplash.com/@honza_kahanek">Honzy Kahánka</a></figcaption></figure>
<h2 id="zamer-s-newslettery">Záměr s newslettery<small class="permalink"><a href="#zamer-s-newslettery" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Sepsal jsem si svůj záměr s newslettery, které chystám.
Toto mám k osobnímu newsletteru, který by měl fungovat tady v rámci mého blogu:</p>
<ul>
<li>Můj osobní newsletter bude lidem posílat seznam odkazů, které teď dávám na Telegram a seznam článků, které jsem vydal na blogu.
Na konci by byla upoutávka, že mám ještě jeden newsletter, který se týká JG, s ukázkou toho, co dostanou, např. s odkazem na poslední vydání toho JG newsletteru.</li>
<li>Ještě nevím, jak vyřeším archiv newsletteru.
Vydat to jako další článek na blogu mi přijde divné.</li>
<li>Na blog přidám štítky, aby přes ně šlo filtrovat a aby je šlo přes RSS separátně odebírat.
Ono to teda už vlastně jde a štítky tu jsou, ale nikde se nezobrazují.</li>
<li>Předělám blog tak, aby tady všude byly upoutávky na to, že mám newsletter.
Líbí se mi, jak to dělá Substack nebo jak to má <a href="https://www.pavlinaspeaks.com/">Pavlína Louženská</a>.</li>
<li>Můj osobní newsletter by se mohl <a href="https://www.linkedin.com/help/linkedin/answer/a522525">propisovat jako články na můj LinkedIn</a>, pokud API dovolí.
Lidi by mě mohli pak odebírat i tam.</li>
</ul>
<p>Toto mám k newsletteru/blogu na JG:</p>
<ul>
<li>Na JG vytvořím novou sekci, která bude sdružovat veškerý <em>time-sensitive content</em>.
Tedy věci, které nejsou statická příručka, ale vycházejí v čase.
Moje statusy na LinkedIn, podcasty, články na budoucím blogu JG, newslettery, přednášky.</li>
<li>Mohlo by se to jmenovat „Log“.
Líbí se mi, že to vychází z blogu (což vychází z <em>web log</em>, ehm) a zároveň je slovo <em>log</em> obecnější a v programátorské hantýrce používané pro protokol o běhu programu.
Tohle bude protokol o běhu JG 😀</li>
<li>Časem by se tam daly přidávat další a další události.
Vítání firem, inzerce práce, založení vlákna v #práce-hledám, upozornění na IRL srazy, svátky aj. akce.</li>
<li>Každá taková věc se bude kategorizovat štítkama, podle kterých to půjde filtrovat.</li>
<li>Na LinkedIn bych mohl psát mnohem častěji a dávat tam „rychlé“ statusy jako dřív na Twitter, které budou upozorňovat na zajímavosti z oboru.
Mohl bych je třídit pomocí hashtagů.
Byl by to nějaký flexibilní systém, který by mi umožňoval vymýšlet nové štítky za pochodu.
Tipy, drby, přednášky, kritika článků v médiích, atd.</li>
<li>Log by si ty statusy stáhl k sobě, archivoval by jejich text a publikoval i na webu, hezky roztřízené.
LinkedIn bych tedy využil jako platformu, kam bych ručně psal novinky, ale zároveň bych měl zálohu a až ta síť shoří v pekle, mohu se přesunout klidně jinam.</li>
<li>Jednou za čas se pošle newsletter, který bude inteligentním souhrnem událostí z „Logu“ od posledního newsletteru.
Vygeneruji to automaticky, ale díky ručně psaným statusům z LinkedInu apod. tam bude prostor pro lidský element.
V něčem mi také může pomoci ChatGPT API.</li>
<li>Newsletter má archiv v rámci „Logu“.</li>
<li>Web JG bych pak chtěl prošpikovat (nenásilně) upoutávkami na to, aby se lidi přidali do newsletteru.</li>
<li>Newsletter by se mohl také <a href="https://www.linkedin.com/help/linkedin/answer/a522525">propisovat jako články na můj LinkedIn</a>, pokud API dovolí.</li>
<li>Cílem newsletteru by bylo poskytnout zajímavé informace z oboru, ne dělat vyloženě reklamu na JG.
Nejspíš tam bude informační koutek o tom, co se děje na JG, ale chci, aby jádrem těch e-mailů byl užitečný obsah, který nikde jinde moc není.</li>
<li>Do ceníku přidám, že pracovní nabídky se posílají i do newsletteru.
Nebude to nejspíš stát nic navíc.</li>
</ul>
<h2 id="pruzkum-openai">Průzkum OpenAI<small class="permalink"><a href="#pruzkum-openai" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Napadlo mě, že bych mohl použít OpenAI tady na blogu.
Nějaká drobnost, díky které bych si ale vyzkoušel jejich API a zjistil, jak to funguje a naučil se s tím.
Tož API je fajn a povedlo se mi z Pythonu posílat na ChatGPT dotazy a dostávat odpovědi.</p>
<p>Akorát jsem chtěl udělat třeba to, že by ChatGPT vymyslelo shrnutí článku do pár vět pro ty, komu se to nechce celé číst.
A to moc dobře nejde, protože mu mohu poslat jen omezený počet znaků 😀
Zkoušel jsem i nějaký <a href="https://www.reddit.com/r/ChatGPT/comments/11aoci0/how_to_get_around_the_chatgpt_prompt_size_limit/">trik z Redditu</a>, ale bez úspěchu.</p>
<p>Budu se tedy ve svých nápadech soustředit zatím jen na věci, které mají zhruba do 2.000 znaků.</p>
<h2 id="pruzkum-ecomailu">Průzkum Ecomailu<small class="permalink"><a href="#pruzkum-ecomailu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Už před časem jsem si všiml, že existuje <a href="https://www.ecomail.cz/">Ecomail</a>, česká služba na mailing, <a href="https://blog.ecomail.cz/ecomail-vs-mailchimp/">konkurence MailChimpu</a>.
Šel jsem to konečně prozkoumat a jsem silně nakloněn tomu, že svoje newslettery, které plánuju, rozjedu tam.
Vychází to lépe finančně, budu mít českou podporu a kvalitní doručování do českých schránek a tak dále.
A když jsem zabloudil až k nim na YouTube, našel jsem tam dokonce <a href="https://www.youtube.com/watch?v=ExKnvsENu-U">video s novinkami</a>, které zrovna popisuje, jak přidali podporu pro mailing na základě RSS!
V neposlední řadě, API dokumentaci <a href="https://ecomailczv2.docs.apiary.io/">mají v Apiary</a>, kde jsem pracoval, takže po <a href="https://fakturoid.docs.apiary.io/">Fakturoidu</a> opět moment nostalgie.</p>
<p>Jediná nevýhoda je, že kontakty z Memberful bych si musel do Ecomailu načíst sám, kdežto s MailChimpem to má integraci.
Memberful má ale API, které jsem už několikrát použil, takže to asi není nic zásadního.</p>
<h2 id="pruzkum-linkedin">Průzkum LinkedIn<small class="permalink"><a href="#pruzkum-linkedin" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>LinkedIn má API a už dřív jsem si tam v nastavení připravil OAuth aplikace, přes které jej mohu použít.
Tak jsem si řekl, že zkusím napsat program, který přes API stáhne odkazy na všechny moje příspěvky na profilu, které jsem na LinkedIn napsal.
Mám totiž pár nápadů, jak by to šlo využít a zároveň bych zjistil, jak se s tím API pracuje.
Možná by to šlo i scrapnout, ale naivně jsem si myslel, že by to přes API mohlo být jednodušší.</p>
<figure class="figure"><img alt="LinkedIn API" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-03-12-at-16-49-09-linkedin-api-documentation-linkedin.png"></figure>
<p>Dokumentace API je ale složitá a je to spousta klikání a čtení, tak jsem to vzdal a zkusil ChatGPT.
Zeptal jsem se nejdřív toto:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>I have a profile at LinkedIn and I add posts there so that others can read them. They are public. How do I use the LinkedIn API to list my own posts using Python 3?</p>
</blockquote>
</figure><p>Hned mi vyhodil kód, který šel prakticky <em>copy-paste</em> použít.
Jenže to bylo mnou nenáviděné OAuth 2.0, které nejde použít bez interakce s uživatelem (se mnou), tzn. pro účely nějaké automatizace na JG je to nepoužitelné.
Zkusil jsem tedy doplňující dotaz:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Is there a way to do this without user interaction? This requires me to open a browser and do something as a human. I'd like to have a Python 3 script, which runs on a server, without human interaction.</p>
</blockquote>
</figure><p>A šup, měl jsem krásný příklad, jak to udělat jinak.
Ten bohužel nefunguje, ale za to ChatGPT nemůže:</p>
<pre class="highlight"><code><span></span><code><span class="p">{</span>
<span class="s1">'error'</span><span class="p">:</span> <span class="s1">'access_denied'</span><span class="p">,</span>
<span class="s1">'error_description'</span><span class="p">:</span> <span class="s1">'This application is not allowed to create application tokens'</span><span class="p">,</span>
<span class="p">}</span>
</code></code></pre>
<p>Tak jsem zkoušel a hledal, kde bych to nějak vyřešil, ale bez šance.
<a href="https://learn.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow?context=linkedin%2Fcontext">Dokumentace praví</a>, že mám „Reach out to the LinkedIn Relationship Manager or Business Development team to get the necessary access“, což netuším co znamená.
Napsal jsem jim na support (<a href="https://gist.github.com/honzajavorek/9f9db686888715ee09ce877cccb70feb">zhruba 4.000 znaků textu</a>, ehm) a k mému překvapení do několika hodin odpověděli.
Akorát že tohle:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>In terms of your questions, we have dedicated resources for APIs that you can find here:</p>
<p>https://developer.linkedin.com/<br>
https://learn.microsoft.com/en-us/linkedin/<br>
https://www.linkedin.com/help/linkedin/answer/a526157<br></p>
<p>Additionally any specific questions you have regarding your app can be directed to our API helpdesk: https://linkedin.zendesk.com/hc/en-us/requests/new</p>
</blockquote>
</figure><p>Pokračování někdy příště.
Koukal jsem ještě na GitHub, jestli už někdo něco s LinkedIn API neřešil, ale je tam hlavně hromada pokusů o scrapování LinkedIn.
Nejhustější je projekt <a href="https://github.com/tomquirk/linkedin-api">linkedin-api</a>, který zřejmě používá hodně lidí a má i sponzory, ale přímo v README má tohle:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>This project violates Linkedin's User Agreement Section 8.2, and because of this, Linkedin may (and will) temporarily or permanently ban your account. We are not responsible for your account being banned.</p>
</blockquote>
</figure><p>Jako nevím, no.
Ještě to oficiální API nebudu vzdávat.</p>
<h2 id="priprava-qa">Příprava Q&A<small class="permalink"><a href="#priprava-qa" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Dotáhl jsem tento týden výběr termínu Q&A.
Bude 11.4. v šest večer, <a href="https://youtube.com/live/vN235cq8xP4">tady na YouTube</a>.
Posouval jsem to několikrát.
Snažil jsem se domluvit s PyLadies, aby to bylo i pro ně a nebylo to v den, kdy mají večer kurz.</p>
<p>Bude to fungovat tak, že se připojím na Discord, tam mě Tinuki nahraje a odstreamuje to na YouTube.
Na Discordu i na YouTube je chat.
Členové se mohou ptát na Discordu, ostatní na YouTube na chatu.
Budu se to snažit sledovat a na vše postupně odpovídat.
V záznamu budou oba chaty, protože jeden bude přímo ve snímaném obrazu, druhý uchovává YouTube spolu s videem a při přehrávání záznamu se budou komentáře postupně objevovat, jako by to bylo v reálném čase.</p>
<p>Jsem zvědav, jaké to bude a jak to zvládneme technicky.
Zatím to budu šířit jen v klubu a mezi PyLadies.
Napodzim udělám další Q&A a o té už dám vědět třeba i do dalších komunit.</p>
<p>Spolu s tímhle jsem doladil i termín jedné z budoucích přednášek v klubu.</p>
<h2 id="mentoring">Mentoring<small class="permalink"><a href="#mentoring" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Udělal jsem si pořádek v mentorech z Mews, kde mi nějak neseděly počty a měl jsem pocit, že mi někdo chybí v seznamu, a přitom se nabízel na mentoring.</p>
<p>Svůj záměr s mentoringem, který jsem popsal v minulých poznámkách, jsem poslal mentorům v klubu a požádal je o zpětnou vazbu.
Zároveň jsem se konečně po třičtvrtě roce dokopal k tomu, abych zpracoval poznámky z někdejšího callu s Linhem, nejaktivnějším mentorem v klubu, a nasdílel je s ostatními mentory, aby se mohli vyjádřit.
Linh pojmenovával mnoho různých bolestí současného fungování mentoringu a mě zajímá, jestli to vidí stejně, nebo zda vidí třeba i nějaké další věci, které by bylo dobré řešit.</p>
<p>V mentoringovém programu v klubu je 23 lidí, ale vyjádřili se k tomu zhruba 3, takže zatím jsem moc zpětné vazby neposbíral.
Vypadá to ale, že případné změny by snad mohly jít dobrým směrem.
Minimálně by nejspíš řešily většinu problémů, které identifikoval Linh.</p>
<h2 id="anketa">Anketa<small class="permalink"><a href="#anketa" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Opět jsme si volali s ENGETO Academy ohledně ankety.
Jsme v podstatě ve finále.
Máme posledních pár drobností, co chceme doladit.</p>
<p>Sehnal jsem ještě kamarádku <a href="https://www.linkedin.com/in/baradrb/">Báru</a>, která rozumí anketám a podívá se na to, než to pustíme do světa.
Taky to pak chceme ještě na zkoušku projít třeba s třemi lidmi a pozorovat je, jak to vyplní.</p>
<h2 id="pyvo">Pyvo<small class="permalink"><a href="#pyvo" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Ve středu bylo v Praze <a href="https://pyvo.cz/praha-pyvo/">Pyvo, sraz programátorů v Pythonu</a>.
Už strašně dlouho jsem tam nebyl, tak jsem vyrazil.</p>
<p>Před srazem jsem se ještě na pivu sešel s Tatankou, členem klubu, a pár kamarády.
Pak jsme šli na Pyvo a tam jsem si povídal s mnoha lidmi o všem možném, od komunity a konferencí až po ADHD a autismus.
Potkal jsem se tam i s již zmíněnou Bárou a řešili jsme i tu anketu.
Rozdal jsem pár JG samolepek.</p>
<h2 id="podcast">Podcast<small class="permalink"><a href="#podcast" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Green Fox Academy si na JG zaplatili nejvyšší tarif a v rámci něj je epizoda podcastu.
Domluvili jsme kdo bude hostem a Pája to natočila.
Povedlo se nám najít hosta, který má dokonce vztah i k JG klubu, takže super.</p>
<p>Výrobu podcastu ale provázela určitá nejistota, protože to byl první takový placený díl a navíc jde o vzdělávací agenturu.
Já si přitom hodně <a href="https://junior.guru/faq/#vzdelavaci-agentury">hlídám střet zájmů</a>.
Pavlína mi před vydáním poslala sestříhaný draft a ten jsem si poslechl.
Líbilo se mi to a nepřišlo mi, že by to po obsahové stránce vyžadovalo nějaké změny nebo opatrnější našlapování.
Lukáš je v podcastu skvělý a vysvětluje jak věci kolem GFA, tak poskytuje i obecnější rady pro ty, kdo se chystají změnit kariéru.</p>
<p>Chci však, aby takové díly byly transparentně označeny.
Tento týden jsem na tom pracoval, právě proto, že měla vyjít tato epizoda.
Myslel jsem, že při tom předělám i obrázky pro epizody a upoutávky, ale na to nakonec nedošlo, protože jsem se zamotal v refactoringu všeho možného.
Epizody vytvořené ve spolupráci s firmou jsem označil na webu, na Discordu, v popisku v XML feedu podcastu.</p>
<figure class="figure"><img alt="Označený podcast" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-03-17-at-23-52-08.png"></figure>
<p>Na webu jsem přemístil tlačítko vedoucí na YouTube, aby bylo první.
Uvědomil jsem si, že pokud si lidi vybírají, tak preferuji, aby lidi sledovali můj YouTube účet, než aby šli na Spotify, protože na YouTube toho dávám a budu dávat víc.</p>
<figure class="figure"><img alt="Preference YouTube" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-03-17-at-23-54-31.png"></figure>
<p>Když už jsem upravoval oznamovačku podcastu v klubu, tak jsem ji změnil celou a vylepšil.
Jsou tam teď taky tlačítka.</p>
<figure class="figure"><img alt="Podcast na Discordu" src="https://honzajavorek.cz/images/screenshot-2023-03-17-at-23-55-30.png" class="img-fluid figure-img rounded"></figure>
<p>Jeden kamarád, kterého nebudu jmenovat, si opakovaně stěžuje na zvukovou kvalitu podcastu.
Vedl jsem o tom s ním debaty a potom i s Pájou.
Stojím si za tím, že priority jsou takové, jaké jsme si s Pavlínou nastavili na začátku:</p>
<ol>
<li>Podcast existuje a Páju baví.</li>
<li>Kvalita obsahu.</li>
<li>Kvalita zpracování.</li>
</ol>
<p>Podcast jsme založili jako <em>low-effort</em> projekt, který musí být možné stíhat rodičovské.
Máme svoje limity.
Když budeme tlačit na kvalitu zvuku, bude to větší závazek a Pavlínu to bude méně bavit.
Navíc ani já, ani Pavlína nejsme audiofilové a současná kvalita nám stačí.
Jasně, občas se stane nějaká chyba, která nás mrzí, ale jinak si myslíme, že to není potřeba moc řešit.
Za nás je to <em>good enough</em>.</p>
<p>Poslal jsem e-mail do GFA, že podcast je hotov.
Reakce byla:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Skvělé! Moc děkuju, mám z toho radost!</p>
</blockquote>
</figure><h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>V klubu jsem obnovil kanály #python, #csharp a #php.
Přidal jsem kanál #java.
K tomu jsem překopal <em>onboarding</em> na Discordu, kde si lidi vybírají oblasti zájmu.
Nově jsou tam i přímo takhle jazyky a lidé dostanou i role, např. „Zajímá mě: Python“.
Tyto role jdou rovnou v chatu označit a poslat tím notifikaci.
„Tajnou“ skupinku Django Coders jsem potom přesvědčil, že už existuje dost vhodnějších míst, kde mohou realizovat totéž, a po domluvě jsme kanál archivovali.
Měl jsem spoustu nápadů, jak bude bot na Discordu hlídat, že každý kanál pro daný jazyk má svou roli a že popisky jsou všude stejné apod., ale nakonec jsem si zabránil to hned začít programovat a udělal jsem vše jen ručně.</li>
<li>Na <a href="https://discord.gg/Ee8sV6MrPN">Discordu Jakuba Zelenky</a> „Mimo Agendu“ jsem napsal <a href="https://discord.com/channels/809699708557721610/812644125953359882/1085303527993245736">něco jako inzerát na novináře</a>, kterého bych najmul, ale zatím spíš bez odezvy.</li>
<li>Koupili jsme letenky na dovolenou.
Zjistil jsem, že na <a href="http://festivalopsani.cz/">Festival o psaní</a> nebudu v Praze a přemýšlím, co s lístkem.
Napsal jsem jim e-mail, ale zatím bez odpovědi.</li>
<li>Přepsal jsem kód, který mi vyrábí obrázky pomocí screenshotů, aby pokaždé nespouštěl prohlížeč.
Hypotéza byla, že se to tím hrozně zdržuje.
Vytáhl jsem to tedy do separátního procesu, který běží na pozadí a když dostane úkol něco screenshotovat, tak to udělá a pošle výsledek.
Zabralo mi to jedno celé dopoledne a bohužel to nic zásadně nezrychlilo 😂
Zrušil jsem aspoň vytváření upoutávky na přednášku pro Instagram a pro web.
Vytváří se jen pro YouTube a pro Discord.</li>
<li>Vyřídil jsem dvě stipendia.</li>
<li>Opravil jsem Jobs.cz scraper, aby správně stahoval loga firem.</li>
<li>Povedlo se mi upravit <a href="https://github.com/honzajavorek/isublime">iSublime</a> tak, že si umí načíst heslo k iCloudu z mého 1Passwordu.
Nechtěl jsem ho mít jen tak hozené do <em>environment variable</em>.
Teď když to spustím, vyskočí na mě akorát že mám přiložit palec ke čtečce otisků prstů na mém Macbooku a když ho přiložím, program se přihlásí a synchronizuje soubory.</li>
<li>Prokrastinoval jsem maily firmám, které mají končit v březnu, a bylo mi trapné, abych se jim ozýval dva týdny před koncem partnerství.
Jednu firmu jsem rovnou vyřídil a poslal fakturu na další období, protože jsme byli domluvení z osobní schůzky.
Povedlo se mi při tom udělat chybu a způsobil jsem, že firma zmizela na pár dní z webu.
Trochu <em>faux pas</em>, ale snad nic hrozného.
Chyba to nebyla vyloženě lidská, spíš to byla nedostatečně otestovaná situace v kódu, takže jsem doplnil testy a opravil to.
Spolu s tím jsem opravil i pár dalších drobností v evidenci firem.
Ostatním jsem prodloužil partnerství do dubna a pokusím se jim co nejdřív ozvat.</li>
<li>Chtěl jsem dnes předělat vítání nových členů v klubu, ale když jsem se podíval do kódu, nějak jsem se neubránil a začal přepisovat pár věcí.
Soubor <code>club.py</code> jsem rozdělil asi na pět menších.
Na různé konstanty jsem použil <a href="https://docs.python.org/3/library/enum.html">Enum</a>.
Pak jsem ještě přepracoval způsob, jakým vypínám a zapínám, zda může bot zapisovat do různých služeb.
Chci totiž, aby se muselo explicitně zapnout, že může zapisovat změny do Discordu nebo do Memberful API.
Na produkci je to vše zapnuté, ale při vývoji mi to brání udělat nevratné chyby ledabylým spouštěním příkazů.
Nebudu to tady rozepisovat, bylo by to dost technické, ale s výsledkem jsem dost spokojen.</li>
<li>Řešil jsem nějaké problémy s účty u členů klubu, změny v předplatných, vracení peněz.</li>
<li>Doklepli jsme s daňařem přiznání, akorát ty věci musím ještě nahrát na příslušné portály.
Pokročili jsme v tom, abych se stal idenfitikovanou osobou.</li>
<li>Přišla mi pozvánka na vyzkoušení Bingu s AI, ale pak to po mě chtělo, abych si stáhl Edge nebo co, tak jsem to zavřel a neřešil.</li>
<li>Jordi Bruin vydal <a href="https://goodsnooze.gumroad.com/?recommended_by=library">novou verzi MacGPT a další aplikace</a>, která už umí i to jejich nové API, ale nakonec stejně chodím spíš k nim na web.</li>
<li>Na realtime botovi jsem do <a href="https://github.com/juniorguru/juniorguru-chick/issues">Issues</a> nasypal nápady na půl roku dopředu.</li>
<li>Prošel jsem svá trička a vyházel stará.
Koupil jsem si pak nová trička.
Různě na internetu a v infocentru Prahy 3.</li>
<li>Byl jsem pro něco do Alzy a když jsem šel na zastávku tramvaje, uviděl jsem, že zrovna jedna jede.
Rozběhl jsem se a pak si jen pamatuju, že jsem hodně zblízka viděl chodník.
Tramvaj jsem stihl.
Na přestupu mě trochu ošetřil pán v kebabu.
Je to týden, tak se už díry v rukou hojí, ale první dny byly celkem blbé.
Zničil jsem si gatě, ale jinak žádné větší škody.</li>
<li>Byli jsme s děckem v kavárně v <a href="https://www.dox.cz/">DOX</a>u a je tam super herna pro děti.</li>
<li>Teploty se dnes vyšplhaly na 15°C, takže jsem vzal děcko podruhé na kolo a objel s ním celkem slušný kus Prahy kolem Rokytky.</li>
<li>Odpovídání v klubu, e-maily, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, atd.
Upgradování závislostí na vlastních i Pyvec projektech (zpracovávání Pull Requestů, které průběžně posílá Dependabot).</li>
<li>Během 8 dní od 10. 3. do 17. 3. jsem při procházkách nachodil 10 km, ujel na kole 18 km. Celkem jsem se hýbal 8 hodin a zdolal při tom 28 kilometrů.</li>
<li>Finanční výsledky, návštěvnost a další čísla k JG <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/dbbb7bf406b3c33aeba36cae817919d44bfb368a08fb1b4899dba130/">Processand</a>, <a href="https://junior.guru/jobs/aac817ee027512f150caf872e149e12ef9246815b1ecf880501b877d/">Red Hat</a></li>
</ul>
<h2 id="povedlo-se">Povedlo se<small class="permalink"><a href="#povedlo-se" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Udělal jsem něco z <a href="https://honzajavorek.cz/blog/strategie-na-2023/">plánů na rok 2023</a>?</p>
<ul>
<li>„Začneme označovat epizody, které jsou finančně podpořené spoluprací s firmami“ je hotovo!</li>
<li>„Rozjedu pravidelné Q&A pro komunity“ skoro hotovo!</li>
<li>„Pohraju si s AI“ je hotovo!
Jako lepší by bylo, kdybych s tím něco i vytvořil, ale asi si to odškrtnu už teď.</li>
<li>Přemýšlím nad „umožním lidem odebírat tento blog a novinky na junior.guru skrze newsletter“.</li>
<li>Makám na „stanu se identifikovanou osobou“.</li>
<li>Makám na „budu se podílet na anketě mezi juniory“.</li>
<li>Makám na „dvakrát do roka si dám dovolenou, která bude aspoň týden v kuse“.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví.</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Vylepším automatické vítání lidí v klubu.</li>
<li>Rozmyslím MVP katalogu vzdělávacích agentur.</li>
<li>Administrativa:<ul>
<li>Zpracuji poslední kousek ankety.</li>
<li>Odešlu daňové přiznání.</li>
<li>Kontaktuji firmy, kterým brzo končí partnerství.</li>
<li>Promo přednášky, Q&A, podcastu.</li>
<li>Úterní přednáška.</li>
</ul>
</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel toto:</p>
<ul>
<li><a href="https://zdopravy.cz/omezeni-aut-v-centru-prahy-mistni-by-to-privitali-ukazal-pruzkum-149407/">Omezení aut v centru Prahy? Místní by to přivítali, ukázal průzkum - Zdopravy.cz</a><br>Tak třeba se něco pohne.</li>
<li><a href="https://www.e15.cz/rozhovory/cesi-jako-prchaluv-byznys-vuci-emocim-nema-sanci-nikdo-rika-nekdejsi-babisuv-guru-marketingu-1397114">Češi jako Prchalův byznys. Vůči emocím nemá šanci nikdo, říká někdejší Babišův guru marketingu</a><br>Rozhovor s Prchalem</li>
<li><a href="https://openai.com/research/gpt-4">GPT-4</a><br>„We’ve created GPT-4, the latest milestone in OpenAI’s effort in scaling up deep learning. GPT-4 is a large multimodal model (accepting image and text inputs, emitting text outputs) that, while less capable than humans in many real-world scenarios, exhibits human-level performance on various professional and academic benchmarks.“</li>
<li><a href="https://zdopravy.cz/francouzske-statni-drahy-chteji-zkoumat-levitujici-vlaky-i-pro-provoz-na-lokalkach-148952/">Francouzské státní dráhy chtějí zkoumat levitující vlaky i pro provoz na lokálkách - Zdopravy.cz</a><br>Levitující vlaky na konvenční trati? Hustý. To by mohl být celkem game-changer.</li>
<li><a href="https://apple.stackexchange.com/questions/430158/how-do-i-control-where-links-open-on-ios">How do I control where links open on iOS?</a><br>Nevím, jak je to na Androidu, ale od začátku, co používám iOS, mi přijde všechno kolem in-app browseru naprosto chaotické. Nenávidím ho. Každý odkaz se otevře jinak, každý musím zpracovat jinak, pokud jej chci dostat do standardního Safari, nemluvě např. o Firefoxu. Každá aplikace to má jinak a neexistuje globální nastavení, které by in-app browser třeba zakázalo a vše by se muselo otevřít přímo v Safari (nebo v příslušné appce, pokud to umí).</li>
<li><a href="https://maxread.substack.com/p/matt-yglesias-and-the-secret-of-blogging">Matt Yglesias and the secret of blogging</a><br>„…there is currently no real economic punishment for content overproduction. You will almost never lose money, followers, attention, or reach simply from posting too much… No one wants to pick “quantity” over “quality” when it comes to their own work, and most readers, given the explicit choice, would say they prefer one great newsletter a week over five “coherent” ones. But the fact is that as much as people might complain that a given newsletter appears too frequently for them to read it, or that a person's byline is ubiquitous, in practice, the vast majority will not unsubscribe or mute or ignore.“</li>
<li><a href="https://newslettery.substack.com/p/unor-2023">Únor 2023: O přínosu nicnedělání</a><br>„Však si zkuste v práci pár hodin jen tak přemýšlet. Rychle na vás někdo nastoupí a pokusí se vás „zaměstnat“. Paradoxní je, že kdybyste místo přemýšlení bezmyšlenkovitě vyřizovali desítky nebo stovky e-mailů, svět kolem vás bude spokojený… zaneprázdněnost je intelektuálním ekvivalentem fast foodu a pro kreativní práci má zhruba stejnou výživovou hodnotu.“</li>
<li><a href="https://www.youtube.com/watch?v=wzA2zNeVLmY">Valtteri Bottas: The Untold Story of Mental Health in F1</a><br>Bottas se podělil o své zážitky s mlýnkem na maso jménem F1. Psychické zdraví, váha, poruchy příjmu potravy. Vůbec jsem nevěděl, že F1 nedávno zaváděla nová pravidla, která určují minimální váhu pilotů, aby ti nemuseli řešit nějaké šílené hubnutí 🙈</li>
<li><a href="https://simonwillison.net/2023/Mar/11/llama/?utm_source=tldrnewsletter">Large language models are having their Stable Diffusion moment</a><br>Jak mít celé to slavné AI na vlastním počítači 😱</li>
<li><a href="https://simonwillison.net/2023/Mar/10/chatgpt-internet-access/">I promise you ChatGPT can’t access the internet, even though it really looks like it can</a><br>Zajímavé. ChatGPT neumí pracovat s odkazy, ale bude vás přesvědčovat o tom, že umí.</li>
<li><a href="https://aella.substack.com/p/the-identity-of-tits">The Identity of Tits</a><br>Opět Aella. Zajímavá úvaha nad tím, jak atraktivita nebo to, že je někdo „sexy“ a chová se „sexy“ sice zvyšuje pozornost ostatních, ale zároveň způsobuje to, že ostatní danou osobu přestanou respektovat a neberou ji vážně. Proč to tak je? „Often when people ask why I’m popular, others respond, “tits.” And maybe this is partially true, but it immediately kicks the legs out from under the serious stuff I’ve done, frames me as someone who people only are pretending to respect… I probably would have way fewer followers if not tits. But maybe I would have more respect if not tits? It also threatens the reputations of those who do respect me, because now they’re vulnerable to being accused as manipulated by or secretly just into tits… I like the idea of seeing if I can get people to take me seriously while presenting as someone people should not take seriously.“</li>
<li><a href="https://twitter.com/levelsio/status/1634457854957723648">(něco na Twitteru)</a><br>Zajímavý postřeh o „prompts“. Možná budou běžným uživatelům skryté a nikoho zajímat nebudou, kromě „inženýrů“.</li>
</ul></div></div></div></div>Týdenní poznámky: Nabídky práce, realtime bot, Brno a mnoho dalšího2023-03-10T00:00:00+01:002023-03-10T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2023-03-10:/blog/tydenni-poznamky-nabidky-prace-realtime-bot-brno-a-mnoho-dalsiho/<div><div><div><div><p>Utekl zas nějaký ten týden (24. 2. až 10. 3.) a tak <a href="https://honzajavorek.cz/blog/tydenni-poznamky-tyden-zdravi-a-dokonceni-evidence-firem/">stejně jako minule</a> sepisuji, co jsem dělal a co jsem se naučil.
Tvořím <a href="https://junior.guru/">junior.guru</a> a nemám šéfa, kterému bych reportoval každý svůj krok, ale mám <a href="https://junior.guru/club/">klub</a> a členy by mohlo zajímat, co dělám.
Psaní poznámek mi taky …</p></div></div></div></div><div><div><div><div><p>Utekl zas nějaký ten týden (24. 2. až 10. 3.) a tak <a href="https://honzajavorek.cz/blog/tydenni-poznamky-tyden-zdravi-a-dokonceni-evidence-firem/">stejně jako minule</a> sepisuji, co jsem dělal a co jsem se naučil.
Tvořím <a href="https://junior.guru/">junior.guru</a> a nemám šéfa, kterému bych reportoval každý svůj krok, ale mám <a href="https://junior.guru/club/">klub</a> a členy by mohlo zajímat, co dělám.
Psaní poznámek mi taky pomáhá nezbláznit se a nepropadat pocitu, že je konec týdne a já jsem nestihl nic udělat.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/jan-kahanek-g3O5ZtRk2E4-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotka od <a href="https://unsplash.com/@honza_kahanek">Honzy Kahánka</a></figcaption></figure>
<p>Před týdnem jsem poznámky nestihl, protože jsme odjeli do Brna na prodloužený víkend a ve vlaku se mi chtělo spíš programovat.
Takže píšu zpětně za dva týdny.
Může se to zdát dlouhé, ale standardně jsou poznámky na 10 minut čtení a tohle je na 20, takže to vychází 😀</p>
<h2 id="vitani-firem">Vítání firem<small class="permalink"><a href="#vitani-firem" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Po dokončení evidence firem jsem se vrhnul na úpravy vítání firem v klubu.
Vždy, když uzavřu partnerství s novou firmou, uvítá ji bot viditelně v klubu a popíše, co jsme si domluvili.
Původní verze byla vzhledem k nové evidenci firem už zastaralá, takže jsem to celé přepisoval.
Nejvíc práce dalo vymyslet nové uvítání tak, aby bylo co nejpřehlednější.</p>
<figure class="figure"><img alt="Vítačka" src="https://honzajavorek.cz/images/screenshot-2023-03-10-at-14-43-40.png" class="img-fluid figure-img rounded"></figure>
<h2 id="vylepsovani-nabidek-prace">Vylepšování nabídek práce<small class="permalink"><a href="#vylepsovani-nabidek-prace" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>V bodech jsem si sepsal záměr, jaký mám s nabídkami práce do budoucna:</p>
<ul>
<li>Inzeráty jsou jednak inzeráty, jednak data, která mohu podarovat (Czechitas, Aj Ty v IT) nebo prodat dál.</li>
<li>Propisují se do klubu v podobě fóra, do kterého přispívá bot, ale může tam přispět i někdo jiný.</li>
<li>Kariérní věci se probírají v #kariéra nebo #pohovory.</li>
<li>Existuje #práce-inzeráty (kam padají inzeráty), #práce-hledám (kam píšou lidi).</li>
<li>Náhled na inzeráty je na webu, ale víc informací k nabídkám práce se lidi doví v klubu.</li>
<li>Informace k nabídkám lze donekonečna vylepšovat zlepšováním dat, což přináší hodnotu klubu i datům.</li>
<li>Data zatím nebudu sbírat do historie a nebudu se tím trápit…
Na GitHubu nebo na CDN bych možná mohl mít data warehouse, ale pokud by odběratelům stačila průtoková data, je to pro mě jednodušší.
Zase bez historie nejsem schopen sám data nějak analyzovat a dělat k firmám např. graf jak často hledají juniory apod.</li>
<li>Algoritmus třídění nabídek zjednoduším.
Najít 20 % práce, která vyřeší 80 % věcí.
Analyzovat složitě texty inzerátů je asi overkill, nejspíš by šlo dosáhnout podobného výsledku s pár klíčovými slovy a dobře mířenými reguláry.
Netrápit se tolik tím, pokud proklouzne seniornější nabídka nebo občas něco nerelevantního, ale spíš tím, že nespravědlivě vyhážu 30 juniorních.</li>
<li>Implementace AI je bonus a pokud by se mi povedlo udělat nový algoritmus dostatečně dobrý, možná to dělat vůbec nebudu.
Pokud AI bude, tak v klubu bude ještě forum #práce-inzeráty-koš (výchozí emoji bude 👍) a dobrovolná role, kterou si mohou vzít lidi, kteří chtějí s nabídkami práce pomáhat.
Mohou se probírat košem a učit AI, že něco neměla vyhodit.</li>
<li>Bylo by dobré zefektivnit stahování inzerátů, aby to odsýpalo.</li>
<li>Bylo by dobré si ke scraperům vytvořit monitoring a dát třeba na <a href="https://junior.guru/open/">/open/</a> nějaké statistiky, ať vím, co se ve skutečnosti děje.
Při posledním předělávání inzerátů jsem monitoring smazal a doteď jej ničím nenahradil.</li>
</ul>
<p>Nový vzhled pracovních inzerátů v klubu jsem tedy udělal pomocí Discord kanálu typu fórum.
Krátkým skriptem jsem ověřil, že lze do vláken ve fórech přidávat embedy, tlačítka, apod.
Náhledový obrázek mi ale přidat nešlo.
<a href="https://github.com/Pycord-Development/pycord/discussions/1948">Zeptal jsem se</a> a pak jsem si sám odpověděl, protože jsem našel <em>workaround</em>.
Nicméně jde o bug a autoři pycordu jej už opravují.</p>
<p>Následně jsem překopal kanály, které řeší pracovní inzeráty.
Měl jsem v klubu #práce a #práce-bot.
Nyní je tam #práce-inzeráty, kam přispívá jak bot, tak lidi, a #práce-hledám, kde mohou lidé práci poptávat.
Bota jsem naučil zakládat v #práce-inzeráty vlákno pro každou nabídku zvlášť, s logem a tlačítky, a hned jsem to pustil na produkci.
První reakce od členů v klubu nebyly jednoznačné, ale budu doufat, že je to lepší, než co tam bylo předtím.
Těžko členům teď vysvětlovat, že jde o úplně prvotní verzi a výhody nového uspořádání vyniknou až s dalšími změnami a vylepšeními.</p>
<figure class="figure"><img alt="Inzeráty" src="https://honzajavorek.cz/images/screenshot-2023-03-10-at-17-10-28.png" class="img-fluid figure-img rounded"></figure>
<p>Například mohu ke každému inzerátu přidat do vlákna zprávu s dalšími informacemi o firmě.
Mohu každou nabídku obohatit dalšími odkazy, daty, grafy.
Lidé mohou pod inzeráty diskutovat.
Je to na Discordu, takže tam mohu mít i věci, které bych veřejně na web raději nedával.
Zároveň je to přidaná hodnota pro členy klubu a další důvod platit za klub, což mi pomáhá tuhle práci financovat.</p>
<p>Následně jsem skoro celý jeden pracovní den strávil s tím, že jsem procházel svoje historické poznámky a úkoly k pracovním inzerátům na JG.
Byl to jeden dlouhý sloupec v Trellu, který jsem roztřídil na tři jiné:</p>
<ul>
<li>Vylepšování <a href="https://junior.guru/jobs/">webové verze inzerátů</a>,</li>
<li>vylepšování dat kolem inzerátů (např. normalizace názvu firmy, deduplikace…),</li>
<li>nové zdroje inzerátů, ze kterých by je šlo stahovat (asi 30 nápadů).</li>
</ul>
<p>Několika kartičkám jsem se samozřejmě pouze zasmál a smazal je.
Některé staré nápady byly fakt naivní.</p>
<p>Pak jsem udělal <em>proof of concept</em> na scraper Jobs.cz.
Ten jsem postupně vylepšoval a vylepšoval.
Zatím to neumí inzeráty, které jsou na samostatných klientských portálech, ale základní inzeráty to zvládne.
Poslední vylepšení jsem dělal během dneška, tak uvidím, jak to bude fungovat a co bude potřeba opravit.
Až to chvíli pojede, napíšu do Czechitas, že už si Jobs.cz nemusí stahovat samy.</p>
<figure class="figure"><img alt="XPath" src="https://honzajavorek.cz/images/screenshot-2023-03-07-at-18-41-19.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Překvapilo mě, jak pěkně umí ChatGPT napovídat se složitými XPath dotazy. Odpověď na toto bych na Google hledal hodinu, tady jsem vložil konkrétní HTML a přirozeným jazykem AI nasměroval k tomu, co potřebuji vyřešit.</figcaption></figure>
<p>Nějvětší paráda je, jak se mi to celé daří dělat v rámci <em>continuous deployment</em>.
V podstatě každý commit šel hned na produkci a mohl jsem se tak průběžně vždy radovat z hotové práce.</p>
<h2 id="realtime-bot">Realtime bot!<small class="permalink"><a href="#realtime-bot" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>OpenAI <a href="https://openai.com/blog/introducing-chatgpt-and-whisper-apis">vydalo API</a> a to mě zase nakoplo, abych si pospíšil s realtime botem.</p>
<p>Jde o to, že můj standardní bot se spouští jen zhruba jednou denně.
Už delší dobu jsem měl nápad, že by mohl existoval ještě realtime bot, který by pomáhal s nenáročnými drobnostmi, jmenovitě:</p>
<ul>
<li>Okamžité zakládání vláken v některých kanálech,</li>
<li>okamžité vítání nových členů,</li>
<li>okamžité ukládání špendlíků do soukromých zpráv,</li>
<li>a další.</li>
</ul>
<p>Bot by vycházel pouze ze stavu Discordu, neměl by žádnou databázi nebo napojení na zbytek JG.
Kdyby spadnul, nic zásadního by se nestalo, asynchronní pomalý bot by to pak někdy udělal za něj.</p>
<p>No a já si brousím zuby na to, že by tihle moji boti mohli lidi vítat s pomocí ChatGPT.
Je to příležitost, jak být mezi prvními, kdo se naučí využívat ChatGPT v praxi, ve svém produktu, a získat tak v téhle zásadní oblasti náskok.</p>
<p>Nemám na to ale vlastně moc čas.
Naštěstí jsem objevil pomocníka jménem <a href="https://github.com/Mandlemankiller">Mandlemankiller</a>, který se do tvorby realtime bota s nadšením pustil.
Pro něj je to pěkný projekt, na kterém se může učit, a mě to řeší reálné potřeby a reálné <em>R&D</em>.
Organizaci na GitHubu jsem vytvořil už minule, teď jsem přidal <a href="https://github.com/juniorguru/juniorguru-chick/">repo</a>.</p>
<p>Nejvíc času nám zabralo vymyslet název.
Nakonec jsem vymýšlení vzdal a nazval to <code>juniorguru-chick</code> (bot se jmenuje kuře), ačkoliv to z různých důvodů není úplně ideální, ale chtěl jsem se po hodině vymýšlení posunout už někam dál.</p>
<figure class="figure"><img alt="Nové repo" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-03-10-at-17-11-55-issues-juniorguru-juniorguru-chick.png"></figure>
<p>Zatím bot umí okamžité zakládání vláken ve dvou kanálech, kde se to v klubu hodí.
Vítání uděláme v první verzi bez AI, ale i tam nám to ještě zabere nějaký čas, protože tam to bude chtít promyslet a bude to víc práce.</p>
<p>Mandlemankillerovo nadšení do práce mě strhlo a snažil jsem se, aby se na věci co nejvíc učil, aby měl nové výzvy, a abych jej nezadusil tím, že nebudu po ruce.
Bylo vlastně osvěžující po letech práce v jednom člověku zase jednou sepisovat README a dělat věci jako Issues, reviews, nebo Pull Requesty.</p>
<p>Chtěl jsem, aby to celé bylo <em>continuous deployment</em> a aby hned viděl výsledky své práce.
Jako runtime jsem zvolil <a href="https://fly.io/">Fly.io</a>, kde už jednu soukromou appku mám a zdá se mi to tam v pohodě.
Inspiroval jsem se <a href="https://jonahlawrence.hashnode.dev/hosting-a-python-discord-bot-for-free-with-flyio">tady</a>, ale nakonec jsem řešil hned několik zádrhelů.</p>
<p>Fly neumí v Python buildpacku instalovat pomocí <a href="https://python-poetry.org/">Poetry</a> a řešení je vlastní <code>Dockerfile</code>.
Jenže ten zas neumím já.
Nefungoval mi deploy a než jsem přišel na to, čím to je, myslel jsem, že mám chybu v <code>Dockerfile</code> a skoro jsem už i nainstaloval Docker a smiřoval se s tím, že se jej budu muset konečně naučit.
Bylo to ale tím, že se mi <code>flyctl</code> lokálně zneschopnilo kvůli nějakému problému se sítí (<em>wireguard</em>, který <a href="https://community.fly.io/t/deployments-not-working-error-connecting-to-docker/3992/40">mám resetovat</a>, ehm, vůbec netuším o co jde).
Řešil jsem to snad hodinu nebo dvě.</p>
<p>Další problém byl, že bot nemá žádný interface, na kterém by mohlo Fly kontrolovat, jestli žije.
Trvalo dost dlouho, než mi došlo, že deploy neprojde, protože se Fly snaží zjistit, zda bot jede, ale nemá jak.
Smazal jsem tedy kontroly, které mi Fly vygenerovalo do konfiguráku a už to jelo.</p>
<p>Později jsem se naučil, jak k realtime Discord botovi <a href="https://github.com/juniorguru/juniorguru-chick/issues/1">přidat i nějakou HTTP stránku přes aiohttp</a>.
Tohle jsem nikdy nedělal, takže pomohlo <a href="https://stackoverflow.com/a/54462411/325365">StackOverflow</a> a dokumentace.
Nakonec se mi <a href="https://github.com/juniorguru/juniorguru-chick/pull/9/">podařilo</a> vystavit jednoduchou JSON odpověď, přes kterou mohu kontrolovat, že bot žije.
Dělám to jak přes Fly, kam jsem vrátil kontroly, tak přes <a href="https://github.com/honzajavorek/junior.guru/blob/e570f9bcf1b7fdf2216ce113d1337b1168ca2f4c/juniorguru/cli/check_bot.py">nový skript</a> na hlavním repu.
Ten se podívá, jestli bot žije a pokud ne, tak build selže.
Neshodí to ale celý build.
Podobně jako kontrola rozbitých odkazů v příručce mi tohle jen zahlásí do e-mailu, že se něco nepovedlo, ale nezávisí na tom vše ostatní.</p>
<p>Vypisuje se tam i <em>uptime</em> a hned při prvním pokusu mi přišlo, že je nějaký malý.
V logu na Fly jsem pak zjistil, že se bot nemohl připojit v jednu chvíli na Discord, tak spadl, ale Fly jej nahodilo zpět.
Takže paráda!
Máme realtime bota, který už s něčím pomáhá v klubu a máme na něj i primitivní monitoring, který jednou denně zkontroluje, jestli bot žije.</p>
<h2 id="mentoring">Mentoring<small class="permalink"><a href="#mentoring" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Sešel jsem se s Mews a s Pure Storage.
V Mews mají super střechu s výhledem a v Pure Storage spoustu balkónů, kde mohou lidi pracovat, jíst, nebo prostě chillovat a dýchat u toho čerstvý vzduch.</p>
<p>Obě schůzky byly v podstatě debriefingem k aktuální podobě firemního partnerství.
V mnohém to bylo podobné, protože obě firmy se mnou spolupracují na 1:1 mentoringu v klubu.</p>
<p>Na základě zpětné vazby mi dává smysl do budoucna změnit, jak mentoring funguje.
Nyní se junioři s mentory domlouvají napřímo a nemám nad tím prakticky žádnou kontrolu, žádný vhled.
Nemohu se tím pádem starat o kvalitu a životní štěstí ani jedné ze stran.
Nejsou jasná očekávání a i pokud jsou někde napsaná, lidé je ne vždy respektují, nebo si je uvědomují.
Individuální mentoring poskytovaný dobrovolníky je možná až příliš dobrá nabídka na to, že to je dostupné všem v základní sazbě za klub a u juniorů to přispívá k tomu, že si této nabídky někdy dostatečně neváží.
Junioři přicházejí s jednorázovými problémy či úkoly, jsou na schůzky nepřipravení, nebo vůbec netuší, co od toho celého chtít.
Mentoři netuší, zda mohou někoho odmítnout a jak, někdo nemá dostatečně silné osobní hranice a souhlasí pak se vším, ale je mu z toho následně smutno.</p>
<p>Řešení, které mě zatím napadá, je zavést přihlašovací formulář, podobně jako u stipendia.
Junior do několika políček popíše, jaké jsou její nebo jeho cíle, co potřebuje řešit, atd.
Fakt, že bude potřeba vyplnit formulář, odradí lidi, kteří do toho nechtějí vložit žádnou energii.
Formulář také přinutí člověka zodpovědět si položené otázky i sám pro sebe, ujasnit si myšlenky, cíle, motivaci.
Celé to bude působit víc dojmem „jdu se tady přihlásit k něčemu dlouhodobějšímu a vím, co od toho chci“, než jako jednorázová konzultace.</p>
<p>Další věc je, že odpovědi na formulář by padaly do privátního kanálu #mentoři.
Tam by se sami mentoři mohli rozhodnout, zda mají danému juniorovi co nabídnout a v případě zájmu by se ozvali.
Tím by se zajistilo alespoň základní párování.
Junioři nebudou muset psát neznámým lidem podle několika klíčovým slovům a mentoři nebudou muset řešit, že se jim ozval někdo, komu vlastně neumějí pomoci.
Veřejný seznam mentorů v současné podobě by nejspíš úplně zmizel.</p>
<h2 id="anketa">Anketa<small class="permalink"><a href="#anketa" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Pokračoval jsem ve tvorbě ankety pro juniory, na které pracuji spolu s ENGETO Academy.
Nakonec jsme ale schůzku posunuli na příští týden.</p>
<p>Zmínil jsem se na několika místech, že uvítáme někoho, kdo by nám s tím pomohl.
Dostal jsem díky tomu hned několik kontaktů, koho oslovit.
Tohle je text mého „inzerátu“:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p><strong>Sháním někoho, kdo rozumí anketám, dotazníkům, statistice.</strong> Připravuji za junior.guru a spolu s ENGETO Academy anketu mezi juniory/začátečníky v programování a ocenili bychom před vypuštěním do světa review od odborníka (sociolog, statistik, prostě někdo, kdo nedělá anketu poprvé). Hledám tedy někoho, kdo by rozebral naše naivní představy na kousky a pomohl nám to zase složit dohromady. Jsme schopni za to zaplatit. Pokud máte tip, nebo se hlásíte, napište mi prosím.</p>
</blockquote>
</figure><h2 id="qa">Q&A<small class="permalink"><a href="#qa" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Chtěl jsem vyplnit mezeru mezi přednáškami svou vlastní večerní Q&A.
Nestihl jsem to však nijak propagovat a nakonec jsem si z víkendu v Brně přivezl strašnou rýmu, tak jsem to posunul.
Mám připravený <a href="https://www.youtube.com/watch?v=vN235cq8xP4">stream na YouTube</a> a měl bych teda nějak určit finální datum a začít to propagovat.</p>
<h2 id="tipy-pro-novacky-v-klubu-onboarding">Tipy pro nováčky v klubu (onboarding)<small class="permalink"><a href="#tipy-pro-novacky-v-klubu-onboarding" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Napadlo mě, jak řešit do budoucna tipy pro nováčky, které jsem programoval velkou část loňského roku a nakonec s nimi narazil na spoustu technických obtíží i na svou vlastní nechuť dál tuhle funkci rozvíjet.
Říkejme tomu třeba verze 1.
Toto je zpráva, kterou jsem napsal moderátorům v rámci přemýšlení nad verzí 2:</p>
<figure class="figure figure-blockquote"><blockquote class="blockquote">
<p>Co kdyby byl jeden kanál typu fórum, kde by byly všechny tipy?
Buď by je tam spravovalo kuře (má větší schopnosti, např. embedy a tak), nebo bych je tam psal já ručně (jednodušší a rychlejší na psaní a editaci).
Zakládat nové tipy bych mohl jen já/kuře, lidi by mohli jen číst a komentovat ve vláknech.</p>
<p>Když by přišel nováček, udělal bych z něj akorát pomyslnou figurku, která by chodila po těch tipech.
Pořadí tipů bych měl tímhle pod kontrolou bez ohledu na to, kdy byly napsány. Implementace „chození“ mě napadly dvě:</p>
<p>1. Kuře by mu udělalo v ten den mention do vlákna pod konkrétní tip, tím by mu přišla notifikace.
Pak by tu zprávu hned smazalo, ale notifikace by přišla.
2. Kuře by posílalo člověku do soukromé zprávy odkaz na tip, podobně jako teď posílá špendlíky.
Díky embedu atd. lze vytvořit docela pěkný náhled a odkaz, i když nejsou DM součástí klubu.</p>
<p>Kdo by si tip přečetl, dal by na něj nějakou reakci.
Kuře by udělovalo roli „přečetl jsem všechny tipy“ (samozřejmě by ji snadno někdo mohl nafejkovat, prostě by vše poklikal, ale to je jedno).</p>
<p><strong>Co by to řešilo?</strong>
Mnohem méně kódu, mohl bych se komplet zbavit managementu tisíce kanálů pro nováčky na Discordu.
Existoval by veřejný registr tipů.
Viděli bychom, zda to lidi čtou a které tipy.
Lidi by si tipy mohli číst i volně bez ohledu na pořadí, klidně pět najednou, pokud mají chuť. Tipy by šlo ilustrovat obrázky nebo gify.
Tipy by šlo kategorizovat tagy (Discord, placení, psaní do klubu...).</p>
<p><strong>Co by to neřešilo?</strong>
Zpětnou vazbu od lidí bych sbíral jinak.
Kanály na tipy na tohle stejně nefungují.
Už teď jsem jednu z těch otázek dal přímo do checkoutu na Memberful, lidi to vyplňují, když jdou do klubu.</p>
<p>Nemám úplně vymyšlené, jak by to člověk vypnul, ale možná by prostě jen kuřeti napsal nějakou zprávu (to by vedlo spíš k variantě 2 ).</p>
</blockquote>
</figure><p>Líbí se mi, jak některé nápady postupně zrají, když se jim dá čas.
Najednou to někam zacvakne a hned je jasné, jak to má být.
Vidím to teď po několika letech provozu JG na všech frontách.</p>
<h2 id="ruzna-vylepseni">Různá vylepšení<small class="permalink"><a href="#ruzna-vylepseni" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Během těch dvou týdnů se mi několikrát stalo, že jsem měl menší chvilku času a chuť programovat.
Využil jsem to tedy k vyřešení několika drobných úkolů, které měly nízkou prioritu:</p>
<ul>
<li>Bot v klubu nyní kontroluje, zda je životnost Discord vláken nastavena na nejdelší možnou dobu.
Výchozí doba je myslím tři dny, toto způsobuje, že vlákna se sama archivují až po týdnu.
Při vytváření nových kanálů jsem to vždy zapomínal ručně nastavit.</li>
<li>Upravil jsem bota, abych dokázal lépe pracovat s konceptem rodičovského kanálu.
Od dob, co jsou na Discordu vlákna a teď navíc fóra, mohou být kanály jakoby uvnitř jiných kanálů.
Bot tohle zatím moc nevnímal.
Nyní může vypsat do týdenního souhrnu v rámci jakého rodičovského kanálu se téma řešilo, nebo mu mohu říct, že některé kanály nemá vůbec číst, a to na základě ID rodičovského kanálu.</li>
<li>Udělal jsem nějaké upgrady závislostí.</li>
<li>Začal jsem scrapovat počty svých <em>followers</em> na YouTube a LinkedIn, abych je mohl případně sledovat v čase.
Musím říct, že ani jedna z těch stránek není moc vlídná k tomu, aby z ní šlo něco programem zjistit, takže se mi tento malý úkol rozložil hned do několika dní.
Nakonec se mi to ale <a href="https://github.com/honzajavorek/junior.guru/blob/e570f9bcf1b7fdf2216ce113d1337b1168ca2f4c/juniorguru/sync/followers.py">povedlo</a>.
Čísla si ukládám perzistentně tak, že je <a href="https://github.com/honzajavorek/junior.guru/blob/e570f9bcf1b7fdf2216ce113d1337b1168ca2f4c/juniorguru/data/followers.jsonl">commituji zpátky do repozitáře</a>.
Jde o JSONL soubor, kam se vždy přidá nový záznam pro nový měsíc.
Až toho bude víc, dám to na <a href="https://junior.guru/open/">/open/</a>.</li>
<li>Používám Fakturoid a mám ho napojený na bankovní účet, aby pároval faktury s transakcemi a automaticky je uměl označit jako zaplacené.
Problém je, že od začátku JG mi na účet chodí i spousta věcí, které fakturu nemají.
Dobrovolné příspěvky.
Členství v klubu.
A tak dále.
Upozornění o nespárované platbě jsou jen upozornění a mohl bych je snadno všechny označit jako přečtené a neřešit je.
Chtěl jsem nad tím však mít větší kontrolu a zachytit případné podezřelé platby.
Na JG mám už dávno skript, který mi stahuje transakce z účtu na Fio a kategorizuje je.
Stačilo tedy přidat něco, co se podívá i na Fakturoid a upozornění související se známými transakcemi by označilo jako přečtené.
Tento úkol jsem rovněž očekával jednodušší a roztáhlo se mi to na několik dní.
Zjistil jsem, že API Fio banky nejspíš vrací částky v JSONu jako float, místo aby je poslalo jako string a šlo z toho udělat <a href="https://docs.python.org/3/library/decimal.html">decimal</a> a následně deterministicky porovnat částky.
Chtěl jsem kvůli tomu <a href="https://github.com/honzajavorek/fiobank">předělat celou svou knihovnu</a>, ale nakonec jsem si v tom zabránil, nechal změny ležet na disku a vymyslel jiný způsob, jak to celé řešit.
Nakonec jsem vyřešil ještě pět jiných zádrhelů, kvůli kterým se transakce nepárovaly s upozorněními ve Fakturoidu.
Už to nicméně funguje.
Objevil jsem díky dvě nebo tři podivné transakce, ale všechny měly nějaký dobrý důvod (např. vrácené daně z FÚ).
Účel to tedy plní.
Mimochodem, API Fakturoidu je <a href="https://fakturoid.docs.apiary.io/">zdokumentováno v Apiary</a>, kde jsem dřív pracoval.
Zamáčkl jsem slzu.</li>
</ul>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Předplatil jsem si svého oblíbeného tvůrce podcastů.
Uvědomil jsem si, že od něj poslouchám (nebo jsem poslouchal) snad už deset různých podcastů.
A že chodím na jeho web, když chci vědět, co je ve světě nového.
Nemá Patreon ani HeroHero, ale nějaký <a href="https://poplatek.rozhlas.cz/">svůj formulář</a>.
Naklikané to však bylo rychle a vygenerovalo to QR kód, který jsem hned zaplatil mobilní appkou své banky.
Jde to zaplatit na rok dopředu, vychází to na pár stokorun.
To mi přijde jako směšná cena za to všechno, co využívám.</li>
<li>Poladil jsem barvy rolí v klubu, aby se nepletli lidi, kteří hodně pomáhají a moderátoři.
Zdokumentoval jsem v klubu na nástěnku nějaké nové dobrovolné role, které jsem nedávno přidal.</li>
<li>Poslal jsem konečně daňařovi podklady pro přiznání.</li>
<li>Green Fox Academy se zeptali, zda by mohli do klubu posílat studenty.
Napsal jsem jim, jak to funguje.
Doteď jsem měl tohle jen se Software Development Academy a stále nevím, zda je to funkce, kterou bude chtít víc firem, nebo mám ten kód smazat.
Jsem zvědav, zda se jim to bude líbit a půjdou do toho.</li>
<li>Dělal jsem promo nové epizodě našeho <a href="https://junior.guru/podcast/">podcastu</a>.
Mě se epizoda s Tomášem Ervínem Dombrovským moc líbila a zřejmě jsem nebyl sám.
Na LinkedIn to <a href="https://www.linkedin.com/posts/honzajavorek_deeptalks-data-trh-activity-7035958087731544064-DQze">mělo celkem dost sdílení a interakcí</a>.</li>
<li>Snažil jsem se po kouskách dělat pořádak v rodinných a osobních financích.
Počítal jsem si zpětně složený úrok p.a. z několika bizarních podílových fondů, jež jsem si kdysi dávno zřídil.
Ani s kalkulačkou na <a href="https://www.wolframalpha.com/">WolframAlpha</a>, která umí komplexní čísla a všemožné rovnice, se mi to ale nepovedlo.
Nicméně jsem mnohem lépe pochopil, jak to celé funguje, a co bych měl s fondy do budoucna udělat.
Zrušil jsem účet na Revolut a vše přesunul k Wise.
Nakoupil jsem nějaká Eura na dovolenou, protože jsou teď levná.</li>
<li>Byli jsme v Brně na prodloužený víkend.
Klasicky <a href="https://honzajavorek.cz/blog/bez-auta/">vlakem</a>, tentokrát jsme vzali i kočár.
Měli jsme strašně nabitý program jak jsme se snažili vidět co nejvíc kamarádů a rodiny a stihnout co nejvíc akcí (běh, <a href="https://www.hrasendvic.cz/">Sendvič</a>, <a href="https://www.artbar.club/events/mutanti-hledaj-vychodisko-don-juan-disco">koncert</a>).
Myslím, že jsme to trochu přehnali a měli jsme si to dát víc lážo plážo.
Místy utrpělo naše zdraví i psychika.</li>
<li>Účastnil jsem se uživatelského testování appky <a href="https://richbull.co/">RichBull</a>, nového nástroje pro trackování investic.
Dělá na tom kámoš a držím mu s tím palce.</li>
<li>Propagoval jsem v klubu kurz pro začátečníky, který v Praze organizuje Pure Storage.</li>
<li>Zase jsem někde <a href="https://twitter.com/honzajavorek/status/1632675967859605506">prosil o RSS</a>.
Pokud vám stačí e-mail, odebírejte, vypadá to fajn.</li>
<li>Udělal jsem po delší době zálohu fotek a systému.
Dokončil jsem <a href="https://github.com/honzajavorek/isublime">program</a>, který mi umožňuje nahrávat soubory na iCloud tak, že to vypadá, jako by je tam dalo jiné zařízení.
To mi dovoluje nahrát tam spoustu archivních souborů, které si můj počítač stahuje až podle potřeby.
Program je strašně pomalý a knihovna <a href="https://github.com/picklepete/pyicloud/">pyicloud</a>, nad kterou je postavený, má spoustu chyb, ale nějak to funguje a pár souborů jsem si takhle už „zazálohoval“.</li>
<li>Udělil jsem hned několik stipendií a další na mě čekají v e-mailu.</li>
<li>Užil jsem si první závod letošní sezóny F1.
Alonso je borec!</li>
<li>Odpovídání v klubu, e-maily, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, atd.
Upgradování závislostí na vlastních i Pyvec projektech (zpracovávání Pull Requestů, které průběžně posílá Dependabot).</li>
<li>Během 15 dní od 24. 2. do 10. 3. jsem naběhal 25 km, při procházkách nachodil 14 km. Celkem jsem se hýbal 12 hodin a zdolal při tom 39 kilometrů.
Část z těch naběhaných kilometrů byl <a href="https://gici.behaj.cz/bbp-9-2023-beh-kolem-myslivny/">závod</a>.</li>
<li>Finanční výsledky, návštěvnost a další čísla k JG <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/dbbb7bf406b3c33aeba36cae817919d44bfb368a08fb1b4899dba130/">Processand</a>, <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></li>
</ul>
<h2 id="povedlo-se">Povedlo se<small class="permalink"><a href="#povedlo-se" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Udělal jsem něco z <a href="https://honzajavorek.cz/blog/strategie-na-2023/">plánů na rok 2023</a>?</p>
<ul>
<li>„Vylepším zobrazení inzerátů na Discordu“ v podstatě hotovo!</li>
<li>„Přidám Jobs.cz“ v podstatě hotovo!</li>
<li>Dělám na „Budu se podílet na anketě mezi juniory“</li>
<li>Dělám na „vymýšlení MVP s tipy pro nové členy v klubu“</li>
<li>Blížím se k „Rozjedu pravidelné Q&A pro komunity“</li>
<li>Blížím se k „Pohraju si s AI“</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví.</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>Rozplánovat přednášky a Q&A, promovat svoje Q&A.</li>
<li>Kontaktovat 5 firem, kterým má brzo končit členství a dořešit prodlužování nebo loučení.</li>
<li>Vytvořit nové plakáty na podcast a implementovat označení epizod, pokud jde o „spolupráci“.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel toto:</p>
<ul>
<li><a href="https://www.voxpot.cz/rez-u-bachmutu-rusove-muzou-na-kazdeho-z-nas-vystrelit-stokrat-my-musime-trefit-vzdycky/">Řež u Bachmutu. „Rusové můžou na každého z nás vystřelit stokrát. My musíme trefit vždycky“ - VOXPOT</a><br>„Západ posílá hlavně vyřazené stroje. Tankům přestane fungovat motor třeba i uprostřed boje. Jeden z velitelů nám ostatně už v dubnu vyprávěl, že protitankové střely NLAW doručené z Británie měly často vadné spouštěcí baterie. Když s nimi voják vyběhl do boje, někdy teprve tváří v tvář tanku zjistil, že systém nefunguje – a s tankem v zádech musel rychle utíkat pryč. „Všechny vaše armády se na Ukrajině zbavují toho, co by už stejně musely vyřadit…“</li>
<li><a href="https://davekarpf.substack.com/p/how-long-does-twitter-have-left">How long does Twitter have left?</a><br>Otázka není, jestli se Twitter zhroutí, ale kdy.</li>
<li><a href="https://www.youtube.com/watch?app=desktop&v=WZ8Qpn7E2EQ">Sú ženy súčasťou našej technologickej budúcnosti? | Petra Kotuliaková | TEDxBratislava</a><br>Na Slovensku je 15 % žen v IT. Co bychom za to v ČR dali 😓</li>
<li><a href="https://www.youtube.com/watch?v=HlW2QdzZuZ8">OnlyFans star Aella on the ethics of pornography</a><br>Zajímavé interview s jednou z nejvíc vydělávajících žen na OnlyFans, o její minulosti, morálce, etice pornografie, směřování pornografie, atd. V nejednom momentě mě překvapilo, jak dobře byl ten rozhovor vedený a jak byly otázky skvěle podány a zacíleny.</li>
<li><a href="https://www.youtube.com/watch?app=desktop&v=Sqa8Zo2XWc4">Artificial Intelligence: Last Week Tonight with John Oliver (HBO)</a><br>Dobře vysvětleno. A ten Clippy!</li>
<li><a href="https://studio.ribbonfarm.com/p/text-is-all-you-need">Text is All You Need</a><br>Venkatesh Rao o AI. „This isn’t the world’s elite chess or Go players. This is us in our billions, in a remarkably unflattering mirror, but it is us. The real us.“ Stačí text, abyste druhou stranu vnímali jako osobu. „Either piles of mechanically digested text are spiritually special, or you are not.“ „The fact that we routinely use an apparently impoverished vocabulary of emoji instead of sending authentic facial expression selfies to each other reveals just how textualized personhood is.“</li>
<li><a href="https://www.irozhlas.cz/zpravy-svet/ukrajina-satelitni-snimky-valka-krym-lyman-vuledar-severodoneck_2302230650_cib">Zničené ukrajinské domy či mosty, ale i ruské zákopy. Válečnou zkázu ukazuje srovnání satelitních snímků</a><br>Srovnání satelitních snímků před válkou a rok poté.</li>
<li><a href="https://www.seznamzpravy.cz/clanek/kultura-jaky-byl-sex-za-komunismu-kniha-otevira-dvere-do-ceskoslovenskych-loznic-226655">Jaký byl sex za komunismu? Kniha otevírá dveře do československých ložnic</a><br>„Někteří sexuologové a sexuoložky na konci 50. let tvrdili, že se muži mají více zapojovat do výchovy dětí a domácích prací, což mělo být jedinou cestou k ženskému orgasmu. Zároveň ale explicitně varovali před myšlenkou, že se dá kvalitnějšího sexu dosáhnout rozvíjením sexuálních technik. Tvrdili, že sexuální neduhy, a především ty ženské, může vyléčit jedině nové uspořádání rodiny, ve kterém si muž a žena budou rovni, budou si vědomi vzájemných závazků a budou se skutečně milovat… V šedesátých letech však přišel obrat. Pozornost se přesouvá z matky na dítě, jeho psychickou pohodu. Čím dál častěji je vyzdvihována role matky a obecně nastává návrat k tradičnímu pojetí rodiny a genderu.“</li>
<li><a href="https://www.irozhlas.cz/sport/nocni-ulici-kolem-popraviste-nova-sezona-f1-je-rekordni-ve-sportovnich-i_2303030630_ksp">Noční ulicí kolem popraviště. Nová sezona F1 je rekordní ve sportovních i politických ohledech</a><br>F1 už dnes!</li>
<li><a href="https://simonwillison.net/2023/Feb/21/in-defense-of-prompt-engineering/">In defense of prompt engineering</a><br>Bude nebo nebude prompt engineering reálná pozice a kariéra?</li>
<li><a href="https://markething.cz/jak-ukrajina-vyhrava-informacni-vojnu">Jak Ukrajina vyhrává informační válku</a><br>Ukrajinská propaganda.</li>
<li><a href="https://zdopravy.cz/obrazem-prostranstvi-pred-brnenskym-nadrazim-se-promeni-prace-zacnou-v-breznu-146396/">Obrazem: Prostranství před brněnským nádražím se promění, práce začnou v březnu - Zdopravy.cz</a><br>Konečně. Proč to trvalo nekonečně dlouho?</li>
<li><a href="https://seznam-zpravy.u.mailkit.eu/mc/VUQVVPIW/DEQZYFBVAWUQDSLBJP/CUULVWECWMM">Pod čarou: Města jsou velká a plná lidí. Prostě se s tím smiřte.</a><br>„Iracionální láska k automobilismu je ale jen jedním z mnoha projevů myšlení, které zhoršuje život ve velkých městech a brání jejich rozvoji. Řada lidí totiž města a s nimi spojený životní styl ve skrytu duše nesnáší, a i když v nich musí dobrovolně či z donucení pracovat a pobývat, odmítají se podvolit jejich vnitřní mechanice a všude si s sebou nosí jakousi mentální vesnici.“</li>
</ul></div></div></div></div>Týdenní poznámky: Týden zdraví a dokončení evidence firem2023-02-24T00:00:00+01:002023-02-24T00:00:00+01:00Honza Javorektag:honzajavorek.cz,2023-02-24:/blog/tydenni-poznamky-tyden-zdravi-a-dokonceni-evidence-firem/<div><div><div><div><p>Utekl zas nějaký ten týden (17. 2. až 24. 2.) a tak <a href="https://honzajavorek.cz/blog/tydenni-poznamky-schuzky-a-nekonecna-administrativa/">stejně jako minule</a> sepisuji, co jsem dělal a co jsem se naučil.
Tvořím <a href="https://junior.guru/">junior.guru</a> a nemám šéfa, kterému bych reportoval každý svůj krok, ale mám <a href="https://junior.guru/club/">klub</a> a členy by mohlo zajímat, co dělám.
Psaní poznámek mi taky …</p></div></div></div></div><div><div><div><div><p>Utekl zas nějaký ten týden (17. 2. až 24. 2.) a tak <a href="https://honzajavorek.cz/blog/tydenni-poznamky-schuzky-a-nekonecna-administrativa/">stejně jako minule</a> sepisuji, co jsem dělal a co jsem se naučil.
Tvořím <a href="https://junior.guru/">junior.guru</a> a nemám šéfa, kterému bych reportoval každý svůj krok, ale mám <a href="https://junior.guru/club/">klub</a> a členy by mohlo zajímat, co dělám.
Psaní poznámek mi taky pomáhá nezbláznit se a nepropadat pocitu, že je konec týdne a já jsem nestihl nic udělat.</p>
<figure class="figure"><img alt="Poznámky" src="https://honzajavorek.cz/images/jan-kahanek-g3O5ZtRk2E4-unsplash.jpg" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Fotka od <a href="https://unsplash.com/@honza_kahanek">Honzy Kahánka</a></figcaption></figure>
<h2 id="tyden-zdravi">Týden zdraví<small class="permalink"><a href="#tyden-zdravi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>V sobotu jsme šli do <a href="https://www.praha3.cz/aktualne-z-trojky/zpravy/zizkovsky-masopust-plny-hudby-her-nbsp-i-nbsp-jitrnic-n1156943.htm">masopustního průvodu na Praze 3</a>.
Měl jsem děcko za krkem skoro celou dobu a protože tam hrála hudba, tak jsem dost i poskakoval do rytmu.
Byl silný chladný vítr.</p>
<p>Výsledkem bylo, že jsem se v neděli zase složil.
Především fyzicky, ale v souvislosti s tím i psychicky.
Záda jsem měl úplně rozlámané, bolely mě ledviny nebo co a celkově jsem si připadal jako troska.
V pondělí jsem nikam nešel a neduhy se pokusil vyležet.</p>
<p>Domluvili jsme se doma, že uděláme vše pro to, abych se jako troska už necítil a abych už byl taky jednou chvíli zdravý a třeba i dobře vyspaný.
Změnili jsme, kde a jak spím.
Vymyslel jsem si režim na tento týden, který mi spaní umožňuje: žádné akce, žádný alkohol, žádné kafe.
Dávám si vitamíny a beru léky, které brát mám.
Jím ovoce.
Vstávám v 7:45 a snažím se jít spát kolem 23:00, i když si pak třeba ještě čtu.
Dopoledne chodím pracovat do coworku a snažím se věnovat hluboké práci, odpoledne dělám ještě nějakou administrativu a pak se věnuji rodině nebo něčemu, co by se dalo nazvat jako volný čas.</p>
<p>Dnes je pátek a cítím se nebývale dobře.
Tenhle režim je zatím spíš pokus a nevím, jak dlouho mi to vydrží.
Ani nevím, jestli takhle chci dlouhodobě žít.
Potřeboval jsem ale nějaký restart, nabrat energii.
Dokud mě to bude bavit, budu v tom pokračovat.</p>
<h2 id="evidence-firem">Evidence firem<small class="permalink"><a href="#evidence-firem" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Povedlo se mi dodělat <a href="https://junior.guru/open/#firemni-partnerstvi">evidenci firem</a>.
Jediné, co chybí, je čtvrtletní e-mail, který by se firmám posílal.
To si ale asi nechám na jindy a pro teď už to prohlásím za hotové tak jak to je.
Nechci další týden věnovat tomu, že budu programovat e-mail firmám, potřebuji už změnit činnost.</p>
<ul>
<li>Na každé stránce popisující detaily partnerství s firmou je poznámka, že je veřejná, ale že tam nemohou vyhledávače.</li>
<li>Vysvětlil jsem tam, že ne všichni lidé, které někam zveme do podcastu nebo na přednášku, jsou nutně placená spolupráce.
Přesunul jsem to pak <a href="https://junior.guru/faq/#neoznacena-spoluprace">do FAQ</a>.</li>
<li>Přidal jsem tam odkazy na statistiky inzerátů, pokud firma nějaké má.
Doteď tyto odkazy chodily firmám e-mailem.</li>
<li>Zobrazil jsem v evidenci odkaz na oznámení spolupráce s firmou na sociálních sítích.
Je to jeden z benefitů a chtěl jsem, aby bylo dohledatelné, kdy jsem to udělal a jak to vypadalo.</li>
<li>Otevřel jsem si stránky partnerství s firmami v mobilu a opravil nejhorší prohřešky.</li>
<li>Obarvil jsem v <a href="https://junior.guru/open/#firemni-partnerstvi">přehledu</a> firmy, které budou brzy končit, abych věděl, že jim mám napsat.</li>
<li>Pokud jde o vzdělávací agenturu, přidal jsem na stránku text o konfliktu zájmů.
Pak jsem ho zkrátil a zbytek dal <a href="https://junior.guru/faq/#vzdelavaci-agentury">do FAQ</a>.</li>
<li>Neplánovaně jsem aktualizoval a přepsal i <a href="https://junior.guru/faq/#partnerstvi-s-firmami">další odstavce ve FAQ</a>, které se týkají firem.
Výsledek je zbytečně dlouhý a celé FAQ by potřebovalo aktualizovat a přepsat, ale už tak jsem s tím strávil celé jedno dopoledne a musím od toho dát rychle ruce pryč, jinak bych se v tom šťoural do Vánoc a ladil tam každé slovo.
Někdy se k tomu vrátím.</li>
<li>Přebudoval jsem kompletně jak bot vítá nové firmy v klubu.
Hrál jsem si s tím snad celý jeden den.
Dám sem screenshot, ale i ten je zastaralý, protože jsem to pak ještě vylepšoval.</li>
</ul>
<figure class="figure"><img alt="Green Fox Academy" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-02-24-at-16-12-04-partnerstvi-s-firmou-green-fox-academy.png"><figcaption class="figure-caption">
Stránka popisující partnerství firmy s junior.guru</figcaption></figure>
<figure class="figure"><img alt="Oznámení firmy v klubu" src="https://honzajavorek.cz/images/screenshot-2023-02-24-at-16-11-20.png" class="img-fluid figure-img rounded"><figcaption class="figure-caption">
Vítání firem v klubu</figcaption></figure>
<h2 id="opravy-ve-stahovani-inzeratu">Opravy ve stahování inzerátů<small class="permalink"><a href="#opravy-ve-stahovani-inzeratu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>V poslední době se mezi inzeráty pro juniory objevovalo stále více a více chyb.
Hlavně tam padaly nějaké věci z elektro světa, které vůbec nebyly relevantní.
Už to začínalo smrdět syndromem rozbitých oken.</p>
<p>Jednoho rána jsem se už naštval a šel to opravit.
Samozřejmě mi to pak sežralo celý jeden pracovní den.</p>
<ul>
<li>Přidal jsem blocklist, kam jsem nasypal všechny ty elektro věci.</li>
<li>Všiml jsem si, že inzeráty z LinkedIn se stahují pomalu a prapodivně neefektivně.
Poladil jsem nastavení scraperů a snad jsem to trochu zlepšil.</li>
<li>Zjistil jsem, že remoteok.com změnilo API a můj scraper kvůli tomu vytváří spoustu zbytečných requestů s redirecty.
Spravil jsem to a počet potřebných requestů jsem odhadem snížil na polovinu.</li>
<li>Do seznamu FB skupin vhodných na hledání práce, který máme v klubu, jsem přidal jednu další.</li>
</ul>
<figure class="figure"><img alt="Opravování inzerátů" src="https://honzajavorek.cz/images/screenshot-2023-02-24-at-16-14-37.png" class="img-fluid figure-img rounded"></figure>
<h2 id="prednaska-v-klubu">Přednáška v klubu<small class="permalink"><a href="#prednaska-v-klubu" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>V úterý byla přednáška od Lukáše Pavelky.
Lukáš byl jedním z prvních členů klubu po jeho založení.
Pamatuji si, jak si hledal práci a dělali jsme mu review CVčka.
Teď juniorům přednášel 🐣
Promoval jsem to tímhle stylem i <a href="https://www.linkedin.com/posts/honzajavorek_csharp-dotnet-windows-activity-7033421183077249024-2YkF/">na LinkedIn</a>.
Zdálo se mi, že to sdílelo hodně Lukášových kolegů, fandí mu 💪</p>
<figure class="figure"><img alt="Lukáš Pavelka" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/20230221-05d9cefc1d546427a86308899b81654dd15f5c4c9074cfed016a4128ec3321f9.png"></figure>
<p>Jak jsem psal minule, máme teď od Discordu na přednášky super vyladěný <em>stage</em> kanál.
S Tinukim jsme ho vyzkoušeli.
Já jsem při tom omylem udělal notifikaci všem v klubu, ale nějak se to přežilo.
Zjistil jsem, že nemůžu do chatu na <em>stage</em> před přednáškou nic napsat botem, protože je to nová věc a moje Discord knihovna to ještě neumí.
Založil jsem <a href="https://github.com/Pycord-Development/pycord/issues/1934">issue</a>.
Díky tomu jsem se dozvěděl, jak to mezitím mohu udělat jinak.</p>
<p>Když mám teď 24/7 coworking, tak mě napadlo, že bych mohl vzít přednášku odtamtud, abych s tím doma nerušil rodinu.
Přednášky se někdy protáhnou a dítě by už šlo spát, ale nemůže, protože mám pracovní místo v ložnici.
Chvíli mi trvalo na to přijít, jak si rezervovat v coworkingu zasedačku.
Když jsem na to přišel, tak jsem zjistil, že rezervace končí 17:30, pak už je to všem jedno.
Takže jsem nic na přednášku v 18:00 nerezervoval 😀</p>
<p>Samotná přednáška byla v pohodě a nestalo se během ní nic zvláštního.
Tedy někdy uprostřed se mi úplně vybila sluchátka, ale zrovna jsem nemusel nic zhruba půl hodiny říkat, tak jsem si stihl odejít pro adaptér, sluchátka dobít a zase si je nasadit.
Protože nenahrávám, ale jen moderuji, tak nikdo nic nepoznal a bylo to úplně bez stresu.</p>
<h2 id="bezstavovy-realtime-bot">Bezstavový realtime bot<small class="permalink"><a href="#bezstavovy-realtime-bot" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Nikdy jsem nechtěl na junior.guru žádnou „běžící aplikaci“, celé to běží asynchronně jednou denně na CI.
Na pár drobností v klubu by se však malý realtime pomocník hodil, ani by nemusel mít žádnou databázi, žádný stav.
Kdyby náhodou spadl kvůli chybě, nic zásadního by se nestalo.
Reagoval by jen na konkrétní situace a vylepšoval je, např. by hned založil vlákno pod příspěvek, aby měli moderátoři v některých případech méně otravné práce.</p>
<p>Sám jsem na to neměl čas, ale řekl jsem o tom jednomu (zatím tajnému) nadšenému programátorovi a ten to hned začal tvořit.
Každý druhý den mi posílá výsledky své práce a teď už mi poslal i hotový kód.
Valím bulvy!
A mám z toho velkou radost.</p>
<p>Teď ale musím vymyslet, jak to nasadíme a jak to budeme provozovat.
Problém je, že můj asynchronní bot bude potřebovat některé věci udělat úplně stejně, tak by se hodilo sdílet kód.
Zase mi přijde zbytečné takto jednoduchou a oddělenou věc dávat do tak velkého projektu s tolika závislostmi.
Zatím se kloním k tomu, že realtime bot bude mít svoje repo a zbytek junior.guru kódu si ho nějak nainstaluje jako závislost a použije některý kód jako sdílený.</p>
<p>Každopádně potřebuji další repo.
A už dřív jsem vytvořil repozitáře pro logo.junior.guru a podcast.junior.guru.
To už by byly celkem 4 repa a každý slušný člověk si na něco takového udělá na GitHubu organizaci.
Tak jsem ji vytvořil: <a href="https://github.com/juniorguru/">github.com/juniorguru</a>
Ještě tam není ani nové repo, ani hlavní repo.
Vyplňoval jsem nastavení, ověřoval domény, nahrával obrázek, vyplňoval profil, zval lidi.</p>
<figure class="figure"><img alt="Organizace" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-02-24-at-16-01-37-junior-guru.png"></figure>
<p>Koukal jsem, co se rozbije, když přesunu repa, kde jsou GitHub Pages.
Jsou tam nějaké ofuky s ověřováním domén přes nějaké TXT záznamy, ale jinak v pohodě.</p>
<figure class="figure"><img alt="GitHub Pages" class="img-thumbnail img-fluid figure-img rounded" src="https://honzajavorek.cz/images/screenshot-2023-02-24-at-16-01-01-build-software-better-together.png"></figure>
<h2 id="dalsi">Další<small class="permalink"><a href="#dalsi" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ul>
<li>Vymyslel jsem, jak vyřešit problém s oprávněním na vytváření událostí na Discordu.
Chtěl jsem všem v klubu dát možnost vytvářet události, ale u tohoto oprávnění Discord vyžaduje 2FA.
Všem v klubu tedy začalo vyskakovat, že si mají zapnout 2FA.
Změnil jsem to tak, že existuje samoobslužná role „Organizuju akce“.
Je u ní poznámka o 2FA a ti, kdo si ji nakliknou, vědí do čeho jdou.
Zároveň si ji může nakliknout kdokoliv má zájem.</li>
<li>Vytvořil jsem dedikovanou stránku pro stipendium: <a href="https://junior.guru/finaid/">junior.guru/finaid</a>
Jen přesměrovává na formulář, ale mohu na to teď snadno odkazovat.
Všechny odkazy na webu jsem upravil tak, aby mířily na tuto stránku.
Prošel jsem všechny maily, které posílám přes Memberful, a upravil to i všude tam.</li>
<li>Přidal jsem <a href="https://blog.zvestov.cz/">Luboše</a> do mentorů.
Nabídl se, že by mohl občas udělat pohovor nanečisto s Javou, kdyby měl někdo zájem.</li>
<li>Využil jsem 20% slevu na F1 TV na roční předplatné.
Těším se na nové Drive to Survive.</li>
<li>Řešili jsme v klubu, zda si lidé mohou do svých deníčků komentovat, nebo ne.
Každý to preferoval jinak.
Vytvořili jsme štítky, které umožňují lidem předem signalizovat, co preferují.</li>
<li>Udělil jsem další stipendium.
Jde hlavně o samoživitelky, tohle je snad pátá.</li>
<li>Volali jsme si s ENGETO Academy a pokračovali v tvorbě ankety pro juniory.
Blížíme se do finiše.
Neznáte někoho, kdo umí dělat ankety a mohl by nám na to hodit odborné oko?
Nějaký sociolog, statistik, někdo takový.
Zaplatili bychom.</li>
<li>Doplňoval jsem informace k přednášce, kterou bude mít v klubu <a href="https://www.linkedin.com/in/anastazie-sedlakova/">Nasťa</a>.</li>
<li>Udělal jsem ještě na poslední chvíli v klubu promo na pohovory nanečisto s Ataccamou, ale pak jsem zjistil, že přihlášky jsou už uzavřené.
Ups!
Šárka mi potvrdila, že je to tak.
Členům jsem se omluvil.</li>
<li>Poprvé jsem vzal dítě na cyklosedačku a projel jsem se s ním po Žižkově.</li>
<li>Napsal jsem jednomu borcovi, který na YouTube učí lidi Swift, jestli by nechtěl do klubu.
Psal jsem mu už přes LinkedIn, ale nic, tak zkouším e-mail.
Pak to asi vzdám.
Neznáte někoho, kdo umí dělat iOS appky a chtěl by pomoci pár juniorům v jejich snažení?</li>
<li>Byl jsem na kafi s <a href="https://www.linkedin.com/in/marta-k-586110243/">Martou</a> a domlouvali jsme přednášku pro klub.
Uvědomil jsem si díky ní zajímavou věc:
Lidi v klubu se díky komunikaci přes Discord učí spolupracovat na dálku, asynchronně, učí se cally, ovládat něco jako Slack, atd.
Práce na dálku je skill a junioři v klubu se v tom vlastně mimoděk trénují.</li>
<li>Ze stránky s grafy jsem odstranil odkaz na nomadlist.com/open, protože už to autor webu odebral 🤷♂️
Škoda.</li>
<li>Změnil jsem jak v klubu fungují studijní skupinky.
Starý způsob byly privátní kanály, nový způsob jsou vlákna v kanálu typu „fórum“ pro každou skupinku.
Diskutovalo se to i v klubu, někteří členové nechápali, proč jsou tam separátní uzavřené skupiny.
Při revizi starých skupin jsme zjistili, že dvě už můžeme i smazat, takže jsem to udělal.</li>
<li>Vybral jsem si psychiatra (viz <a href="https://honzajavorek.cz/blog/tydenni-poznamky-schuzky-a-nekonecna-administrativa/">minulé poznámky</a>) a objednal jsem se, tuším někam na červen.</li>
<li>Odpovídání v klubu, e-maily, <a href="https://docs.pyvec.org/operations/support.html#sit-kontaktu">Pyvec Slack</a>, atd.
Upgradování závislostí na vlastních i Pyvec projektech (zpracovávání Pull Requestů, které průběžně posílá Dependabot).</li>
<li>Během 8 dní od 17. 2. do 24. 2. jsem ujel na kole 5 km. Celkem jsem se hýbal 1 hodinu a zdolal při tom 5 kilometrů.</li>
<li>Finanční výsledky, návštěvnost a další čísla k JG <a href="https://junior.guru/open/">mám přímo na webu</a>.
Aktuální nabídky práce pro juniory: <a href="https://junior.guru/jobs/dbbb7bf406b3c33aeba36cae817919d44bfb368a08fb1b4899dba130/">Processand</a>, <a href="https://junior.guru/jobs/ade40e530211c36a309fa370d270da7650ad18462c03c95b0b38de57/">Red Hat</a></li>
</ul>
<h2 id="povedlo-se">Povedlo se<small class="permalink"><a href="#povedlo-se" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Udělal jsem něco z <a href="https://honzajavorek.cz/blog/strategie-na-2023/">plánů na rok 2023</a>?</p>
<ul>
<li>Hotovo: „Já i firma musíme mít včas informaci, že se blíží konec.“</li>
<li>Hotovo: „Firma musí vědět vše o svém předplatném, v jakém je stavu, kolik čeho zbývá.“</li>
<li>Podílel jsem se na anketě mezi juniory.</li>
</ul>
<div class="alert alert-warning" role="alert">
<p><strong>Okénko duševního zdraví.</strong>
Máte dojem, že na rozdíl ode mně nic nestíháte?
Buďte v klidu, <a href="https://honzajavorek.cz/blog/neni-to-zavod/">není to závod</a>!</p>
</div>
<h2 id="planuji">Plánuji<small class="permalink"><a href="#planuji" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<ol>
<li>POŠLU PODKLADY PRO DAŇOVÉ PŘIZNÁNÍ.</li>
<li>Vymyslím a naplánuji Q&A pro komunity.</li>
<li>Vylepším zobrazení inzerátů na Discordu.</li>
<li>Zpropaguju novou epizodu podcastu.</li>
</ol>
<h2 id="zaujalo-me">Zaujalo mě<small class="permalink"><a href="#zaujalo-me" title="Odkaz na tento nadpis"><i class="bi bi-link-45deg"></i></a></small></h2>
<p>Když na něco narazím a líbí se mi to, sdílím to <a href="https://mastodonczech.cz/@honzajavorek">na Mastodonu</a>.
Od posledních poznámek jsem sdílel toto:</p>
<ul>
<li><a href="https://www.respekt.cz/tydenik/2023/8/rusko-odeslo-z-evropy?gift=uj40hq1owi">Rusko odešlo z Evropy</a><br>„Evropa má nyní ve své východní polovině otevřenou ránu: sen o svobodném, mírumilovném a otevřeném kontinentu je mrtvý.“</li>
<li><a href="https://protiproudu.libsyn.com/adam-gebrian-architektura-je-zhmotnnm-mezilidskch-vztah-za-hnusn-msta-si-meme-sami">Adam Gebrian: Architektura je zhmotněním mezilidských vztahů. Za hnusná města si můžeme sami. — Proti Proudu</a><br>Fajn rozhovor o různých věcech, o riskování, zodpovědnosti, prosazování, veřejném a soukromém.</li>
<li><a href="https://www.metro.cz/kdykoli-patrick-swayze-sunda-tricko-je-v-sale-velke-halo-rika-reditel-zizkovskeho-kina-aero-ghl-/praha.aspx?c=A230216_160903_metro-praha_ireve">Kdykoli Patrick Swayze sundá tričko, je v sále velké haló, říká ředitel žižkovského kina Aero - Metro.cz</a><br>Kino Aero se ženou milujeme. Teď máme mimino, tak tam nechodíme, ale předtím jsme tam byli neustále. A moc rádi. Nejlepší kino s nejlepší dramaturgií a atmosférou. V článku se dovíte, proč se jmenuje Aero a ten důvod je dokonalý 😀</li>
</ul></div></div></div></div>