Týdenní poznámky: Jeseníky a fóra na Discordu

Utekl zas nějaký ten týden (27. 1. až 27. 1.) a tak stejně jako minule sepisuji, co jsem dělal a co jsem se naučil. Tvořím junior.guru a nemám šéfa, kterému bych reportoval každý svůj krok, ale mám klub 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.

Hory

Dovolená v Jeseníkách

Minulý týden jsem pracoval jen dva dny a v pátek jsem byl na horách, tak jsem poznámky nepsal. Do Jeseníků jsme jeli vlakem. Dítě v nosítku, nějaké ty baťohy a já táhl ještě boby, ale přišlo mi, že se vše odehrálo v dobré náladě a bez stresu. Jeden přestup v Zábřehu, vlak s bistro vozem, bistro vůz s řízkem a kafíčkem, pohoda. Dítě už konečně začíná vnímat, co vidí za oknem, tak máme zase novou zábavu.

Nádraží Ramzová

Trochu blbé je, že jsme si z hor odvezli zase nějakou chorobu. Naštěstí nic vážného. Kašlíček a rýmička. I tak už mě to ale unavuje, v podstatě měsíc v kuse nejsem fit. Smrkání a zalévání coldrexů mi taky bere energii pouštět se do nových věcí.

Fóra na Discordu

Konečně jsem na to sedl a udělal to. Přidal jsem do bota podporu pro to, aby uměl číst kanály typu fórum, které Discord před časem přidal.

Když už jsem měnil kód, zkusil jsem bota naučit i nový, pohodlnější způsob načítání klasických vláken. Tento nový způsob dřív neexistoval, ale pycord už nějakou chvíli tyhle věci má.

Při tom jsem zjistil, že nový a starý způsob vrací různý počet vláken. Nemohl jsem přijít na to proč. Skončilo to až u toho, že jsem si všechna vlákna nechal vyjet jako CSV a pak použil tohle (šikovná věc!), abych je porovnal.

Zjistil jsem, že někdy lidé založili vlákno, ale pak si to rozmysleli a smazali jeho počáteční zprávu. Zbytek vlákna však zůstal viset v paměti Discordu jako sirotek. Starý způsob je nenašel, ale nový tyto sirotky přečte. Záhada odhalena, vše je v pořádku.

Každopádně jsem tedy do klubu přidal první kanál typu fórum. Nahradil jsem jím starou poradnu, protože tam to dává největší smysl.

Původní poradna
Původní poradna
Nová poradna
Nová poradna

Žádné další velké změny jsem nedělal, abych lidi nezahltil, a aby si měli čas prohlédnout, jak fórum funguje a co umí. Ponoukl jsem členy, aby mi psali nápady, kde všude by se to dalo dále využít. Strhla se zajímavá debata o tom, jak by šlo přeuspořádat klub.

Fórum umí i tagovat témata. Přidával jsem v poradně tagy: Python, JavaScript, Java… ale brzy jsem narazil na strop. Limit je 20 tagů na fórum, takže s nimi musím šetřit. Aby tagy co nejvíc kopírovaly dosavadní realitu, vyjel jsem si všechna témata ze staré poradny a očima analyzoval, do jakého tématu zhruba spadají.

Tagy

Změny jsem pak všude v klubu s velkým jásotem oznámil a starou poradnu archivoval.

Nástěnka a přednášky

Přednášek je už tolik, že se nevešly na nástěnku. Discord má limit znaků na tzv. embed u příspěvku a ten už přednášky přesáhly.

Myslel jsem, že bych vytvořil celý nový kanál jen na přednášky. Nejspíš kanál typu fórum, kde by každé vlákno bylo pro jednu přednášku. Spravoval by to bot a byl by to takový pěkný archiv záznamů přednášek.

Pak mi ale došlo, že je to hodně programování, které v plánech na rok 2023 nemám. A že to jde zatím řešit i jednodušeji. Zaznamenal jsem si to jako nápad a nástěnku jsem upravil tak, aby ukazovala jen posledních deset přednášek. Nenechal jsem se unést! Držím směr! Musím se pochválit.

Seznam záznamů přednášek
Na screenshotu je chyba, poslední věta je nalepená na poslední přednášku. Všiml jsem si toho díky psaní těchto poznámek a hned jsem to v kódu opravil.

Discord Server Template

Naučil jsem bota vytvářet a každý den aktualizovat tzv. server template. Je to způsob, jak si na Discordu zazálohovat aspoň nastavení serveru, když už nic.

Bylo to hodně jednoduché na vytvoření. Ale jak to teď tak píšu, došlo mi, že to má vadu. Když mi někdo zlikviduje klub, mohlo by se stát, že se pak nad ránem spustí bot a změny automaticky uloží. Přepíše zálohu. To budu muset asi ještě promyslet!

Podcast

Pavlína vydala novou epizodu podcastu. Poslechl jsem si ji a moc se mi líbila. Na LinkedIn jsem ji ale promoval až včera.

Začínám se s Pavlínou dělit o zisk, který mám díky spolupráci s firmami. Domluvili jsme se, že mi bude posílat fakturu za každou epizodu.

Začneme také označovat epizody, které jsou finančně podpořené spoluprací s firmami. Zatím takové nebyly, ale budou. Pozvání do podcastu mám teď normálně v ceníku.

Epizodu s Lukášem z Fakturoidu jsme nedělali na základě aktuálního tarifu z ceníku. Fakturoid si však od začátku existence junior.guru platí nejvyšší tarify a příprava epizody odpovídala spíš spolupráci. Bude to tedy taková epizoda na pomezí, kterou asi nakonec jako spolupráci označím.

Zkusil jsem si do podcastového YAMLu přidat údaj o firmě, ale zatím se to neprojevuje ani na webu, ani v popiscích epizod.

Blog

Povedlo se mi zjistit, proč mi v GitHub Actions nefungoval PAT (personal access token) na to, aby commit zpět do repozitáře udělaný z Actions vyvolal další build. Podle dokumentace se musí token nastavit pro actions/checkout@v3. To jsem dělal a nefungovalo to. Teď jsem si všiml, že mám v buildu ten checkout dvakrát! Jednou na začátku, kam jsem ten PAT dával, ale uprostřed buildu jsem potřeboval resetovat Git, tak jsem tam měl checkout znova a ten jsem úplně přehlédl. Ten tedy použil zase vestavěný GITHUB_TOKEN, který nestačí, a proto to celou dobu nefungovalo. Opraveno, funguje.

Když teď napíšu článek a udělám git push na GitHub, spustí se GitHub Action, která jej publikuje na GitHub Pages, následně vezme odkaz na článek a ten mi pošle soukromou zprávou na Telegram. To způsobí, že Telegram načte náhledový obrázek. GitHub Action chvíli počká a pak tentýž odkaz dá do mé telegramové skupiny. Vezme URL telegramového příspěvku a vepíše jej zpět do zdrojového kódu článku. Tuto změnu commitne, pushne zpět na GitHub, a tam se opět publikují GitHub Pages. V této nové verzi už je článek zpětně propojený s telegramovým příspěvkem, takže pod ním jdou načíst komentáře. Krásné!

Co není krásné? Že mi asi nefunguje ten newsletter. Zdá se, že ačkoliv jsem minule vydal poznámky, nikomu to nic neposlalo. Zřejmě není tak snadné udělat si vlastní Substack, jak jsem myslel.

Ale klidně se tam hlašte. Ať už to nakonec vyřeším jakkoliv, ten seznam e-mailů použiju a rozesílat to začnu.

Když jsem psal tyto poznámky a chtěl jsem sem nahrát fotky z hor, zjistil jsem, že můj skript na automatické vcucnutí fotek do Markdownu neumí .HEIC. Jakožto Apple ovce mám v .HEIC všechno, tak jsem přidal do skriptu podporu pro tento formát (použil jsem pillow-heif) a naučil jej konvertovat takové fotky do .jpg.

Firmy

S Engetem jsem si měl volat kvůli připravované anketě mezi juniory, ale kvůli různým věcem jsme to několikrát posunuli.

Poslal jsem mail do dvou vzdělávacích agentur, se kterými jsem dřív komunikoval. Nastínil jsem jim nový produkt, katalog agentur. Jedna napsala, že to vypadá dobře, ale že zrovna řeší rozpočet a budoucnost na tento rok a potrvá to, tak se ozve později. Druhá napsala, že to vypadá dobře a rádi budou spolupracovat.

Následně jsem tento týden dotáhl deal s Green Fox Academy, který souvisí s mým novým záměrem dělat v určitých mezích byznys i se vzdělávacími agenturami. Logo je na webu, faktura poslána!

Green Fox Academy na příručce
Green Fox Academy mají nejvyšší tarif, takže je jejich logo i na příručce.

V klubu je bot ještě neuvítal, protože jsem to na chvíli vypnul. Chci tuto funkčnost zrovna revidovat a vylepšit. K tomu ale potřebuji dokončenou novou evidenci firem.

Evidence firem

Začal jsem připravovat nový způsob evidence závazků, které mám k firmám. Jednak moje Excelová tabulka přestává trochu stačit, jednak chci být transparentní i v tomto, především kvůli tomu, aby lidi znali moje závazky se vzdělávacími agenturami a mohli zvážit, jak moc nezávislý jsem.

Začal jsem si do YAMLu přepisovat ceník a seznam firem. Zatím to není na nic napojené, akorát jsem skriptem ověřil, že údaje o firmách jsou totožné s údaji v Excelu a že jsem se někde při přepisování nespletl.

Chtěl bych mít stránku pro každou firmu, kde budou informace o tom, co si objednali, co jsme už udělali, co ještě zbývá udělat, kdy končí jejich spolupráce, apod. Nejspíš to bude někde v rámci /open/.

Bylo by super, kdybych tam mohl mít i malinkou klientskou sekci, kde by viděli i poslední faktury, nebo by tam měli odkaz, přes který mohou posílat lidi do klubu. To však nejsou veřejné věci a můj web jsou statické stránky. Existuje nejspíš hodně složitých způsobů, jak to řešit. Z těch jednoduchých se mi líbí zatím tři:

  1. Zaheslovat to nějak přes PageCrypt. Má to různé nevýhody, ale nejdůležitější je podle mě z hlediska UX. Vůbec nevím, co by mělo být heslo, aby si ho někdo, kdo se mnou v té firmě vyjednává partnerství, pamatoval i za půl roku. Údaje jako faktury nebo odkaz do klubu tam chci mít, aby je ti lidi měli po ruce a neptali se mě na to. Tohle by jen změnilo jejich dotaz na dotaz ohledně zapomenutého hesla.
  2. Poslat jim tyto rozšířené informace mailem. E-mail by mohl chodit čtvrtletně, to mi přijde jako rozumná frekvence vzhledem k tomu, že spolupráce s firmami mám roční a naše aktivity mívají spíš pomalejší tempo.
  3. Udělat to variantou 2., ale ne teď. Nechat to na jindy jako možné vylepšení, protože je to jen blbina navíc.

Pokud zjistím, že těm lidem stejně potřebuji něco posílat e-mailem (např. že bude končit spolupráce a měli bychom se bavit o tom, jestli chtějí prodloužit), tak udělám variantu 2. Jinak 3.

Audit vzdělávacích agentur

Volal jsem si se zakladatelem Green Fox Academy a bavili jsme se o katalogu vzdělávacích agentur a o nezávislém auditu bootcampů. V Maďarsku to existuje a kultivuje to tamní trh vzdělávacích agentur.

Přišlo mi, že by to mohl být zajímavý krok, jak vylepšit můj budoucí katalog a jak mu dodat velkou váhu. Chtělo by to ale spojit se v tomto s nějakou seriózní institucí, které budou ostatní věřit víc, než brýlatému týpkovi s webovkou, která má v názvu „guru“.

Zkusil jsem hned hodit e-mail do DigiKoalice, když už jsem členem, jestli to není náhodou něco, co by je zajímalo. Když to bude vlažné, tak zkusím, co by mi poradili v Česko.Digital.

Infrastruktura

  • Zjistil jsem, že mi na CircleCI nefungují některé věci. Bylo to tím, že po jejich nedávném security incidentu (až by se dalo říct fuckupu) nejspíš pro jistotu invalidovali všechny svoje tokeny. Takže jsem si udělal nové a pak už vše jelo.
  • Zjistil jsem, že můj geniální systém na paralelizaci buildu nepočítá s tím, že na CircleCI použiju funkci „restartuj build, ale jen od toho místa, kde to failnulo“. Prostudoval jsem ještě jednou environment variables, které mám k dispozici. Místo CIRCLE_WORKFLOW_ID teď používám CIRCLE_WORKFLOW_WORKSPACE_ID a zdá se, že to funguje přesně tak, jak potřebuji.
  • Vytvořil jsem si příkaz jg install, který mi umožní jednoduše při vývoji udělat git pull --rebase origin main, potom poetry install, playwright install a npm ci.
  • Všiml jsem si, že playwright install stahuje tři prohlížeče, ale já používám jen jeden. Tak jsem to změnil na playwright install firefox. Díky tomu jsem zjistil, že mi vše spadlo, protože ten jeden prohlížeč, který jsem v kódu používal, bylo ve skutečnosti Chromium. Tuto herezi jsem napravil a nyní kód všude používá jediný správný prohlížeč, Firefox.
  • Trochu neplánovaně jsem se pustil do zkoumání, zda a jak obtížné je udělat commit ze CircleCI zpátky na GitHub. Pomohlo by mi to s perzistencí některých dat. Navíc by to umožňovalo sledovat i historické změny, pokud bych to potřeboval. Četl jsem si tohle a tohle. U toho jsem si uvědomil, že commity ze CircleCI na GitHub už dávno dělám, protože odtamtud dělám deploy na GitHub Pages. To není nic jiného, než commit a push do gh-pages větve. Na zkoušku jsem naimplementoval automatické formátování kódu pomocí isort. Trochu jsem se do toho celého zavrtal a zjednodušil jsem dost věcí v konfiguraci CircleCI. Také jsem vyhodil CircleCI Orb na GitHub Pages a vyměnil jej za léty ověřený ghp-import. Udělal jsem to především proto, že jsem konfiguraci pushování na GitHub sdílel na více místech a potom už nedávalo moc smysl ten Orb používat.

Další

  • Zeptal jsem se, jestli můj oblíbený strictyaml umí i něco jako Date, protože častěji potřebuji jen datum, než datum a čas.
  • Měli jsme v klubu přednášku s Týnou Doležalovou o Analýze geoprostorových dat, GIS a geospatial data science. Mě se moc líbila a vypadá to, že lidem taky a pouští si ji dost i ze záznamu. O vytvoření záznamu se opět postaral Tinuki a stále si strašně užívám, jak jednoduché pro mě teď ty přednášky jsou.
  • Ozval se mi Štefan Prokop a plánujeme přednášku na téma security.
  • Napadlo mě, že by click mohl umět automaticky generovat tasky pro VS Code. Ale možná je to blbost. Zeptal jsem se, jestli je to blbost, nebo jestli to už neexistuje.
  • Stát mi vytvořil třetí datovou schránku. Proč musím mít zvlášť schránky jako smrtelník a jako živnostník, to mi fakt uniká. Nepřišel jsem na to, jak se mohu mezi svými schránkami přepínat bez toho, abych se musel odhlásit. Nainstaloval jsem aplikaci Datovka. Jsem rád, že existuje, ale vypadá jak nějaký linuxový e-mailový klient z devadesátek. Po otevření na mě vyskočil formulář s dvaceti políčky. Pro vyplnění bych potřeboval návod, takže jsem aplikaci zase zavřel. Nastavím ji a využiju až pokud mi bude chodit pět zpráv do datovky týdně.
  • Bavil jsem se s Memberful supportem. Jako obvykle skvělá zkušenost. Zajímalo mě, jak přesně funguje funkce na přesunutí lidí mezi tarify. Pak jsem chtěl vědět, zda mohu přes API vytahovat informace o custom fields (kde lidi narazili na junior.guru) a cancellation surveys (proč ruší předplatné), abych to mohl analyzovat, nebo si to někam posílal. Zatím to nejde. Custom fields jen přes nějaké webhooky. Cancellations však mohou odesílat automatický e-mail, kde mohu lidem něco napsat. Chtěl bych to využít k tomu, že když někdo zruší předplatné kvůli penězům, v tomto e-mailu bych nabídl, ať zkusí stipendium.
  • Prdla nám žárovka v digestoři, tak jsem koupil novou. Při té příležitosti jsem koupil i nové filtry. Dnes jsem to vyměňoval a zevnitř jsem to i trochu očistil. Překvapilo mě, že vnitřek digestoře není ve skutečnosti žlutý, ale bílý. Jedna z nevýhod bydlení v nájmu je, že pokud děláte nějakou údržbu spotřebičů, nejspíš jste první člověk v historii bytu, který se do toho pustil.
  • Nainstaloval jsem si konečně na počítač osmou verzi 1Password. Zaujala mě pak novinka, použití 1Password pro CLI nástroje.
  • Šel jsem volit. Nepotřeboval jsem se tentokrát o ničem rozhodovat, takže jsem v rámci zachování duševního zdraví vynechal všechny články a debaty na téma prezidentských voleb. Podle zoufání kamarádů, kteří se neubránili, to považuji za výborné rozhodnutí.
  • Odpovídání v klubu, e-maily, Pyvec Slack, atd. Upgradování závislostí na vlastních i Pyvec projektech (zpracovávání Pull Requestů, které průběžně posílá Dependabot). První týden jsem doháněl e-maily ještě z Vánoc, potom se to už trochu uklidnilo. V klubu jsme řešili spoustu věcí, takže tam jsem strávil fakt hodně času.
  • Během 15 dní od 13. 1. do 27. 1. jsem při procházkách nachodil 5 km, na túrách nachodil 13 km. Celkem jsem se hýbal 8 hodin a zdolal při tom 18 kilometrů.
  • Finanční výsledky, návštěvnost a další čísla k JG mám přímo na webu. Aktuální nabídky práce pro juniory: Processand, Red Hat

Povedlo se

Udělal jsem něco z plánů na rok 2023?

  • Přidal jsem úplně základní podporu pro forum kanály a pozoruji, jak to lidi používají.
  • Komunikoval jsem se vzdělávacími agenturami a zjišťoval zájem o MVP katalogu.
  • Udělal jsem kroky, které mi umožní mít ceník přímo na webu.
  • Udělal jsem kroky, které mi umožní mít na webu přehled spolupráce s firmami: „Firma musí vědět vše o svém předplatném, v jakém je stavu, kolik čeho zbývá. Já i firma musíme mít včas informaci, že se blíží konec.“
  • Udělal jsem kroky, které mi umožní označovat epizody, které jsou finančně podpořené spoluprací s firmami.
  • Začnu se s Pavlínou dělit o zisk, který mám díky spolupráci s firmami.
  • Měl jsem dovolenou. Byla ale krátká a chodil jsem během ní občas do klubu. Ve strategii jsem si nařídil delší dovolené.

Plánuji

  1. Pokročím ve zpracování evidence spolupráce s firmami a nechám bota uvítat Green Fox Academy v klubu.
  2. Projdu všechny kupóny na Memberful a upravím je, aby šly použít na nové tarify.
  3. Pořádek v Trellu.

Zaujalo mě

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