František Řezáč o softwarovém inženýrství - blog, projekty a jiné zajímavosti

Blog

  1. K čemu je vlastně pravda

    25. 3. 2023

    TODO článek o programování. Pravda se jako nejvyšší hodnota i největší ctnost line celými lidskými dějinami. O její nalezení a výklad se snaží všechna náboženství, filosofické směry i věda. Máloco má v lidské kultuře větší roli než pravda. Proto jsem se vždycky styděl položit dvě zcela přízemní a zdánlivě samozřejmé otázky: “Co to vlastně je?” a ještě důležitější “K čemu je to dobré?”, které by mi pomohly trochu prakticky chápat, proč je pravda pro lidi tak strašně důležitá, že jí zasvěcují celý život a hynou po milionech. Vážně - jaký je smysl pravdy? Kde je v ní nějaká hodnota?

  2. Soukromý a veřejný prostor v digitálním světě

    1. 10. 2022

    Opravdu je soukromí v digitálním světě ztraceno, jak se v poslední době zdá? Nevybíravý nátlak téměř všech, kdo v digitálním světě operují se skutečně zdá neúměrně velký naší osobní i kolektivní kapacitě si soukromí bránit. Možná ale jen zatím neumíme soukromý digitální prostor vytyčit a proto nevíme, jaká očekávání kde aplikovat. Aneb o soukromí jako poznané nutnosti.

  3. Rozhodování v distribuovaných systémech

    15. 4. 2022

    Už několik let pracuji na tradingu ČEZ, kde jsme na zelené louce postavili platformu pro algoritmický trading na energetických burzách a ještě jsem tu nepublikoval žádný článek přímo z toho oboru, tak to dnes napravím. Možná se to podle nadpisu nezdá, ale burzy a obchodníci na nich působící jsou naprosto archetypálním příkladem distribuovaného systému se všemi těžkostmi, které to s sebou může nést. Provádět na burzách jakákoli automatizovaná rozhodnutí znamená nutnost si je uvědomovat a vypořádat se s nimi.

  4. Redundance dobrá a zlá

    30. 1. 2021

    My programátoři z podstaty své legendární lenosti neustále hledáme způsob, jak napsat co nejméně kódu. DRY princip je cosi jako svaté přikázání. Hodně lidí jde ještě dál a snaží se napsat co nejméně znaků a nemusí se to týkat jen délky identifikátorů. Víte třeba o tom, že v Javascriptu je ve většině případů možné vynechat středník? To už může být kontroverzní praktika, protože podvědomě cítíme, že některá úsporná opatření mohou být kontraproduktivní. V jakém rámci to ale můžeme hodnotit? Existuje něco jako “dobrá” redundance?

  5. Pekař ve válce

    24. 1. 2021

    Jednou výjimečně nic o programování. Dokončil jsem OCR a základní korektury šťastně nalezeného opisu deníku mého pradědečka z první světové války. Pravděpodobně díky svojí profesi pekaře dokázal přežít hrůzy jednoho z nejkrvavějších konfliktů lidské historie celých pět let přímo na frontě a jeho osobní svědectví o tom je úžasně poutavé, poučné a lidské.

  6. Programování je matematika

    17. 11. 2020

    Když jsem byl mladší, interpretoval jsem vzdělávací a podvědomou spojitost programování a matematiky tak, že “programování je jako matematika” - čísla, exaktnost, logické myšlení a tak. Tato chyba byla následkem dvou drobností. 1. Nevěděl jsem, co je matematika a 2. Nevěděl jsem, co je programování. Teď, když po vysoké škole a 15 letech praxe začínám chápat základy obou oborů, mi pomalu dochází, že “programování je matematika”.

  7. Tváře softwarového inženýrství

    10. 10. 2020

    Člověk má po tolika letech čtení Hacker news a jiných informačních kanálů pocit, že už o programování četl snad ze všech úhlů pohledu, které existují. Probírá se tam skutečně úplně všechno. Alespoň se to tak zdá.

  8. Wittgenstein, modely a distribuované systémy

    30. 5. 2020

    Pár nahrubo setříděných poznámek a výpisků k předchozímu tématu podivných vlastností modelů v mezních situacích.

  9. Make computers tools again

    9. 5. 2020

    Důvěřujete kladivu? Jak mě jednoduchá otázka přivedla k hluboké filosofii o dvojí povaze software, jejíž vynález se dnes přelévá do všech ekonomických produktů.

  10. Opisování z kvantové fyziky

    22. 1. 2020

    Nedávná práce mě zavedla k zajímavému vystřízlivění ohledně “magických” vlastností kvantové fyziky. Uvědomil jsem si to, když jsem si všiml, že vlastnosti jednoho mého inženýrského řešení začínají nápadně připomínat jednotlivé interpretace kvantové fyziky.

  11. Podivný případ funkcí fold a reduce

    17. 8. 2019

    Kdo se nestydí za svoje tweety z minulého roku, ten se málo vzdělává.

  12. Mýty o fotovoltaice

    29. 7. 2019

    Před půl rokem jsem dostal nápad na malý programátorský startup a začal prozkoumávat jeho realizovatelnost malým prototypem. Zatímco technickou náročnost jsem vzhledem ke svým zkušenostem odhadl celkem dobře, moje povědomí o byznys doméně - rezidenční fotovoltaice - se ukázaly být založené na třicet let starých popkulturně anekdotických legendách.

  13. Produkty a nástroje

    7. 7. 2019

    Když chce malíř vytvořit obraz (produkt) vezme štětec (nástroj) a namaluje ho. Jasné jako facka. Co ale vlastně dělá malíř, když vezme tužku a namaluje si nejdřív skicu?

  14. Používejte distribuční balíčky

    16. 3. 2019

    Rozmohl se mi na projektech takový nešvar. ‎Z různých důvodů provozáci nebo architekti klienta nepoužívají, nebo požadují od nás nepoužívat, připravené balíčky použité linuxové distribuce pro instalaci potřebných komponent (databáze, servery atd.). Vzhledem k tomu, že si (v českých podmínkách) neumím představit situaci, kdy by to byl rozumný kompromis prakticky s jakýmkoli jiným požadavkem, začal jsem blíže zjišťovat logiku takového rozhodnutí. Přišlo mi, že zatímco argumenty proti použití balíčku jsou velmi promyšlené konstrukce často nepřímých souvislostí, povědomí o přímých dopadech (resp. nákladech) takového rozhodnutí je spíše mlhavé. Prostě se stáhnou zdrojáky a udělá se .configure & make. To je bohužel naprosto tragicky naivní představa, kterou bych chtěl alespoň trochu poopravit.

  15. Otevřený dopis mým zástupcům v EP

    10. 3. 2019

    Poslední pokus kontaktovat mnou volené zástupce v Evropském Parlamentu.

  16. Modularita 3: Mosty, katastrofy a bajtkód

    3. 3. 2019

    Přepis (resp. původní textová verze) mojí přednášky z jOpenSpace 2018 na téma spolehlivosti software a komplexních systémů.

  17. Volně ložený startup

    23. 2. 2019

    Pár posledních měsíců jsem ve volném čase prozkoumával potenciál jednoho nápadu na startup. Bylo to zábavné, zajímavé a poučné, ale nepodařilo se mi nakonec zkonstruovat byznys model robustní natolik, abychom do toho já a moji přátelé mohli jít naplno. Bylo by mi ale líto, kdyby celá ta snaha přišla úplně vniveč, takže dávám k dispozici klíčové poznatky a know how, které jsem získal a doufám, že třeba pro někoho mladšího, s menšími závazky to bude schůdnější. Zkuste pokračovat tam, kde já jsem ztratil dech.

  18. O povinných soutěžích na veřejné zakázky

    19. 2. 2019

    Nedávno mi jeden klient otevřel oči, když pregnantně formuloval myšlenku, která je v retrospektivě zcela evidentní a pro dělání IT byznysu dost zásadní. Já si ji však nikdy explicitně neuvědomil a to přesto, že jsem se v jejím přímém vlivu v poslední době pohyboval hned několikrát. O co jde?

  19. Neřešme detaily

    13. 2. 2019

    Mám už dlouho rozepsaný monstrčlánek na téma notoricky chybných očekávání a mylné intuice lidí, kteří se bez zkušenosti nad rámec běžných uživatelů dostanou do nějaké role v softwarovém vývoji. Pak šlo ale kolem fantastické Twitterové vlákno Davida Majdy a já jsem si uvědomil, že v těch pár řádcích je ve skutečnosti obsaženo jádro všeho, co jsem lopotně psal a mnohem víc. Se svolením autora proto thread překládám do češtiny a doplňuji pouze pár vlastních poznámek ve vztahu k původnímu tématu.

  20. Operátory nejsou (vždy) funkce

    21. 5. 2018

    Začalo to zcela nenápadnou poznámkou pod čarou v Real world Haskell, že OR operátor (||) je v Haskellu definován jako běžná funkce a zároveň zkratuje (short circuit - první nalezený true ukončí vyhodnocování). Proč někdo považuje za důležité tak běžný fakt explicitně rozebírat mi začalo vrtat hlavou a na konci vedlo k odhalení jedné fundamentální neznalosti.

  21. Není open source jako open source

    4. 5. 2018

    Vlivem GPL panuje o open source intuitivní představa jako o realizaci utopického komunismu. Můžete si vzít co co potřebujete, když si pak zase může kdo chce vzít co potřebuje od vás. Spoustu chytráků to svádí k lákavé představě oběda zadarmo na účet naivních idealistů, kteří svojí práci jen tak rozdávají. V praxi ale často zjistí, že naopak oni naivně sedli na lep krvežíznivým kapitalistům a open source byla jen třpytivá návnada.

  22. Proč Dagi není programátor

    6. 3. 2018

    Pokračuji v reflexi témat z jOpenSpace. Tentokrát o Dagiho ‎příspěvku o tom, že programátory po čtyřicítce zůstávají jen looseři. ‎Dagiho určitě není možné podezřívat ze zaujatosti vůči technikům a jeho motivací byl spíš ušlechtilý cíl odvést debatu od přílišného zaujetí technickými hračkami k přemýšlení o tom, čeho jimi chceme dosáhnout. Argumentace byla ale postavená tak, že jsem musel kategoricky nesouhlasit snad s každou jednotlivou větou.

  23. Modularita 2: Taxonomie

    21. 2. 2018

    Druhý díl mých poznámek na téma modularita. Přečíst nejdřív první díl o ekonomických motivech modularity není úplně nutné, ale doporučeníhodné.

  24. JDBC připojení do PostgreSQL přes Unix socket

    10. 2. 2018

    Připojovat se z aplikace do databáze přes její síťové rozhraní je pro většinu lidí taková samozřejmost, že je ani nenapadne, že by to mohlo být jinak. Přitom s sebou tento způsob nese několik nevýhod, které ve velkém procentu deployment scénářů trpíme zcela zbytečně. Předně je to overhead průchodu síťovým stackem, pokud aplikace běží na stejném stroji jako DB. V takovém scénáři je možné použít místo připojení přes localhost nějakou jinou metodu IPC, v unixovém světě klasicky socket.

  25. Fantastická zvířata a jak je zabít

    10. 2. 2018

    Myšlenka tak malá, nepodstatná a okrajová, až je zajímavá.

  26. Neuralink vs umělá inteligence

    17. 11. 2017

    (Pokračování reportu z ne-konference jOpenSpace, reakce na přednášku Honzy Novotného o Neuralink)

  27. jOpenSpace

    17. 11. 2017

    Dostat se na konferenci typu jOpenSpace a být tam platným účastníkem byl ten nejvzdálenější cíl, který jsem si představoval, když jsem začínal před dvěma roky psát blog. Splnilo se mi to mnohem dříve, než bych čekal a stálo to za to.

  28. SAT problém v typové inferenci

    6. 6. 2017

    Věděli jste, že Java generika mohou pro kompilátor představovat SAT problém? A že v důsledku toho může být čas kompilace exponenciální? Mě by to ani nenapadlo do chvíle, kdy jsem začal zjišťovat proč build jednoho z našich menších modulů trvá abnormálních pět minut.

  29. Analýza slabého klíče v Diffie Hellman

    4. 6. 2017

    Pár poznámek z řešení nedávného problému. Používejte jen na vlastní nebezpečí.

  30. 100% code coverage

    1. 6. 2017

    V poslední době jsem četl hodně článků lametujících na vynucování vysoké code coverage. I když s tím v zásadě souhlasím, nebyl bych to já, aby mě to nevyprovokovalo k protiargumentaci. Jeden aspekt vysoké code coverage se mi totiž strašně líbí.

  31. YubiKey 4 v Debian Jessie

    26. 2. 2017

    YubiKey a U2F jsou jedny z nejlepších věcí, které se staly v počítačové bezpečnosti posledních let. Je to čipová karta a zároveň usb čtečka v balení, které se zcela schová do usb portu (verze nano). Nijak tedy nevyčnívá a je možné ho třeba v notebooku prostě nechat jako takovou simku na které máte hardwarově chráněné všechny svoje kryptografické klíče, protože tahle titěrnost zvládá prakticky všechny standardizované bezpečnostní technologie. Jeho využití je ve skutečnosti tak široké, že nastavit ho v plném rozsahu je vlastně dost práce. Proto tady nechám svoje poznámky z takového nastavování v Debian Jessie, může to někomu pomoct.

  32. Modularita 1: Ekonomie

    26. 2. 2017

    Vágnost významu slova modularita jej přímo předurčuje ‎k ovládnutí marketingových materiálů. Modularita je sice všude, ale všude taky znamená něco jiného. Rozplést tenhle chuchvalec myšlenek a přijít na to, co modularita ve skutečnosti je, mi trvalo mnoho let a sepsat to dalších mnoho měsíců. Tato první část se věnuje ekonomické motivaci k modularitě, ta druhá pak technické záludnosti modularity.

  33. Co je Rx?

    18. 12. 2016

    Už po několikáté jsem se nechal nechytat bezelstnou otázkou “Co je vlastně to Rx?”. Kdo už to někdy zkoušel vysvětlit ví, že jakkoli dobře zamýšlená odpověď zní ve výsledku jako pomatené mumlání šíleného vědce na drogách. Je to jev společný doopravdy inovativním technologiím - je obtížné popsat, co vlastně jsou, protože k vysvětlování není možné použít existující základ, resp. podobnost s něčím jiným je tak vzdálená, že je spíš matoucí.

  34. Nic

    17. 11. 2016

    Programování je jen aplikovaná matematika a matematika je jen filosofie exaktními prostředky. Tahle souvislost je většinou pohřbena hromadou technikálií a často i zuřivě odmítána. Když ale vybublá na povrch, je zábava. Náhodný kolemjdoucí pak občas nedokáže poznat, jestli se se projednává kus kódu nebo scholastika Tomáše Akvinského. Tak jsme se jednou dostali s kolegou do ostré pře o tom, co je nic.

  35. O softwarovém inženýrství

    5. 10. 2016

    Mám ho! Mám tagline pro svůj blog! Od chvíle kdy jsem na GeoCities umístil v rámci prvních pokusů s HTML svojí sebeprezentaci jsem jej zoufale hledal. Zatímco ostatní používali vtipné slovní hříčky, citáty slavných nebo oduševnělá moudra. Já cítil, že to musí být něco hlubšího. To místo v nadpisu stránky si přece zaslouží něco zásadního, nejlépe obecný destilát smyslu života a osobní životní misi v jednom. Bohužel najít dnes myšlenku s takovými parametry a ještě k tomu originální je jako kupovat značkové tepláky ve vietnamské tržnici. Přestože mi formuláře profilů na sociálních sítích trýznivě připomínaly neukojenou potřebu sebeurčení, zůstávaly prázdné. Až doteď.

  36. Skrytý půvab standupu

    26. 8. 2016

    Jak sbalit holku a vést vývojářský standup.

  37. Method level caching

    1. 7. 2016

    Mám rád slovo “kurvítko”. Je takové hezky české a přes zdánlivou lidovost má pro mě exaktní význam, který bych jinak musel vyjadřovat poměrně nudným opisem. Je to součástka, která má v nějakém větším celku objektivně malý nebo diskutabilní význam, ale která ho zároveň dokáže solidně rozjebat. Svět samozřejmě není černobílý, takže je u součástek lepší mluvit o “kurvítko indexu”, který vyjadřuje poměr mezi zmíněnými vlastnostmi. Ze zkušenosti mám u různých vývojářských praktik přiřazený svůj interní kurvítko index, který hodně ovlivňuje moje architektonická rozhodnutí. Pro zajímavost, víte co má u mě nejvyšší kurvítko index? Suverénně Caching a High availability (což je caching v bledě modrém).

  38. Objektové vs. funkcionální programování

    24. 4. 2016

    V poslední době se čím dál tím víc mluví o nástupu funkcionálního programování a jeho nadřazenosti nad objektovým. Že to slyším od testosteronem nadopovaných mladíků hledajících způsob vyjádření dominance je naprosto v pořádku, byl jsem jedním z nich, ale že to začínám slýchat i od seniorních inženýrů mě trošku děsí. ‎Proto bych chtěl k téhle debatě přidat pár střízlivých faktů.

  39. Programování, stav a web frontend

    18. 4. 2016

    Už mě nebaví diskuze o frontendových architekturách. I od základního MVC existuje nekonečné množství variant a specializací, které se liší nuancemi v tom, odkud kam vedou jakým stylem malované šipky. Diskuze o tom končí na argumentech typu kam co “patří”, kde je co “přehlednější”, v čem je “nejmíň duplicity” a dalších subjektivních pocitech jejichž reálný dopad je přinejmenším diskutabilní.

  40. Pohovory

    24. 3. 2016

    Už dlouho mě svrbí prsty k napsání článku o zážitcích z hledání práce a technických pracovních pohovorů, ale zatím jsem to nemohl publikovat veřejně. Původně jsem chtěl sepsat několik těch nejzábavnějších historek, ale během poslední doby jsem potkal několik článků, které absurdní situaci na trhu práce popisují seriózněji, takže připojím jen pár ironických komentářů.

  41. Generování modelu z XSD

    1. 2. 2016

    Nedávné řešení problémů s m2e (adaptace Mavenu pro Eclipse) mě přivedlo k tématu, které je v profesionální Javě prakticky dogmatické a už se o něm ani moc nepřemýšlí - generování Java tříd z XSD. Termín “contract first” už prakticky splynul s tímto úkonem a nikoho už nenapadne, že by to mohlo být i úplně jinak.

  42. Přesun webu na Jekyll

    27. 12. 2015

    Vytvořil jsem novou verzi svého webu, tentokrát pomocí nástroje Jekyll. Ještě bude chvíli trvat, než to k něčemu bude, proto se zatím raději dívejte na předchozí verzi.

O mně

  1. Backup shell script using rsync

  2. Tools for management and use of Czech qualified digital signature

  3. Using Octave for business strategy evaluation

  4. Split XML to separate files with XSLT 2

  5. Multiline log message grep using Lex

  6. Reverse proxy using netcat

  7. Some experiments with IOCTL

  8. Yet another solution for the password madness

  9. Blog moved to Jekyll and GitHub

  10. Modification of Adafruit fingerprint sensor library

  11. Task list app using RX

  12. HospIS integration project

  13. Graduation from University of West Bohemia

    Master's degree in Distributed systems.
  14. Communism collapsed

    Yep, I'm so old that not only I have lived in two millenia, I have even experienced totalitarian regime first hand.
  15. Chernobyl exploded

    I must have been bitten by a radioactive bug back then since I have a superpower to write really buggy code.
  16. Born