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.
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.
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.
Žá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í.
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.
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!
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:
- 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.
- 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.
- 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ámCIRCLE_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ělatgit pull --rebase origin main
, potompoetry install
,playwright install
anpm 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 naplaywright 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é.
Okénko duševního zdraví. Máte dojem, že na rozdíl ode mně nic nestíháte? Buďte v klidu, není to závod!
Plánuji
- Pokročím ve zpracování evidence spolupráce s firmami a nechám bota uvítat Green Fox Academy v klubu.
- Projdu všechny kupóny na Memberful a upravím je, aby šly použít na nové tarify.
- 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:
- Genders.WTF
Lidi, kteří tvoří formuláře, zjevně opravdu zápasí s dotazem na gender - Programming, Fast and Slow | Almad's Changelog
Po čase jsem si to znova přečetl a nemohu než souhlasit. Na základě zkušeností z práce, hobby projektů a komunitních projektů: Vidím to úplně stejně. - Cruel optimism (and lazy pessimism)
„Cruel optimism boils down to the folly of suggesting personal solutions to systemic problems. It’s about advice given from a position of privilege to people who will never be able to apply it to their own lives–because the cards are stacked so unfairly against them–but who will nonetheless interpret their failure as a personal one“ - Milá ČT, oslovili jsme za Tebe expertky do volebního vysílaní. Přišlo by jich 37
Dobrý stěr 😀 - My si nezačali, tvrdí lidé z Babišovy marketingové mašiny. Kampaň je brutálnější, než čekali
Ze zákulisí Babišova marketingového týmu. - Nadchází doba nenápadného plýtvání: nespotřebovaných předplatných
Kolik služeb si platíte vy? - Agent Babiš, rozvědčík Pavel. Co mají společného? — Vinohradská 12
Zajímavý pohled na oba kandidáty z hlediska jejich angažmá za minulého režimu. Přesně pro tyhle díly, které překročí tuny hnojometů a najdou si odstup a užitečný pohled na věc, Vinohradskou 12 rád poslouchám. - Why 97% of Namibia is Empty
Zajímavé video o Namibii (kde jsem byl na PyCon NA a kam byste měli jet taky)