František Řezáč o softwarovém inženýrství - blog, projekty a jiné zajímavosti
Blog
-
Limity modelů vyrobených z informací
7. 9. 2024Moje největší fascinace ve fyzice je to, že informace se zdá být fyzikální, objektivně existující, experimentálně měřitelnou veličinou. Viz Shannonova redefinice termodynamických zákonů, Landauerův princip, Bekensteinova hranice atd. Ostatní fyzikální koncepty jsou reflexí nějakého evidentního fenoménu: hmota, prostor, vlna, pole… Ale informace? Vždyť je to na první pohled zcela abstraktní koncept. Jak může být něco zároveň tak výsostně abstraktní a zároveň hmatatelně existující?
-
Odpovědnost
1. 9. 2024Odpovědnost je jako Koruna. Když si jí chce někdo nasadit na hlavu sám, nebývá to s dobrými úmysly a špatně to končívá.
-
Ekonomie automatizace
1. 9. 2024Hodně lidí v poslední době ohrnuje nos nad termínem abstrakce, takže bych rád věnoval jeden článek připomenutí toho, proč je vymýšlení abstrakcí při programování nezbytné, aby to programování vůbec mělo nějaký smysl.
-
K čemu je vlastně pravda
25. 3. 2023Pravda 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é?”, jejichž odpovědi vy vysvětlovali, 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?
-
Soukromý a veřejný prostor v digitálním světě
1. 10. 2022Opravdu 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.
-
Rozhodování v distribuovaných systémech
15. 4. 2022Už 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.
-
Redundance dobrá a zlá
30. 1. 2021My 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?
-
Pekař ve válce
24. 1. 2021Jednou 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é.
-
Programování je matematika
17. 11. 2020Když 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”.
-
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á.
-
Wittgenstein, modely a distribuované systémy
30. 5. 2020Pá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.
-
Make computers tools again
9. 5. 2020Dů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ů.
-
Opisování z kvantové fyziky
22. 1. 2020Nedá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.
-
Podivný případ funkcí fold a reduce
17. 8. 2019Kdo se nestydí za svoje tweety z minulého roku, ten se málo vzdělává.
-
Mýty o fotovoltaice
29. 7. 2019Př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.
-
Produkty a nástroje
7. 7. 2019Když 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?
-
Používejte distribuční balíčky
16. 3. 2019Rozmohl 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. -
Otevřený dopis mým zástupcům v EP
10. 3. 2019Poslední pokus kontaktovat mnou volené zástupce v Evropském Parlamentu.
-
Modularita 3: Mosty, katastrofy a bajtkód
3. 3. 2019Přepis (resp. původní textová verze) mojí přednášky z jOpenSpace 2018 na téma spolehlivosti software a komplexních systémů.
-
Volně ložený startup
23. 2. 2019Pá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.
-
O povinných soutěžích na veřejné zakázky
19. 2. 2019Nedá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?
-
Neřešme detaily
13. 2. 2019Má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.
-
Operátory nejsou (vždy) funkce
21. 5. 2018Zač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. -
Není open source jako open source
4. 5. 2018Vlivem 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.
-
Proč Dagi není programátor
6. 3. 2018Pokrač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.
-
Modularita 2: Taxonomie
21. 2. 2018Druhý 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é.
-
JDBC připojení do PostgreSQL přes Unix socket
10. 2. 2018Př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.
-
Fantastická zvířata a jak je zabít
10. 2. 2018Myšlenka tak malá, nepodstatná a okrajová, až je zajímavá.
-
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)
-
jOpenSpace
17. 11. 2017Dostat 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.
-
SAT problém v typové inferenci
6. 6. 2017Vě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.
-
Analýza slabého klíče v Diffie Hellman
4. 6. 2017Pár poznámek z řešení nedávného problému. Používejte jen na vlastní nebezpečí.
-
100% code coverage
1. 6. 2017V 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í.
-
YubiKey 4 v Debian Jessie
26. 2. 2017YubiKey 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.
-
Modularita 1: Ekonomie
26. 2. 2017Vá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.
-
Co je Rx?
18. 12. 2016Už 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í.
-
Nic
17. 11. 2016Programová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.
-
O softwarovém inženýrství
5. 10. 2016Má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ď.
-
Skrytý půvab standupu
26. 8. 2016Jak sbalit holku a vést vývojářský standup.
-
Method level caching
1. 7. 2016Má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).
-
Objektové vs. funkcionální programování
24. 4. 2016V 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ů.
-
Programování, stav a web frontend
18. 4. 2016Už 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í.
-
Pohovory
24. 3. 2016Už 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ářů.
-
Generování modelu z XSD
1. 2. 2016Nedá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.
-
Přesun webu na Jekyll
27. 12. 2015Vytvoř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ě
-
Backup shell script using rsync
-
Tools for management and use of Czech qualified digital signature
-
Using Octave for business strategy evaluation
-
Split XML to separate files with XSLT 2
-
Multiline log message grep using Lex
-
Reverse proxy using netcat
-
Some experiments with IOCTL
-
Yet another solution for the password madness
-
Blog moved to Jekyll and GitHub
-
Modification of Adafruit fingerprint sensor library
-
Task list app using RX
-
HospIS integration project
-
Graduation from University of West Bohemia
Master's degree in Distributed systems. -
Communism collapsed
Yep, I'm so old that not only I have lived in two millenia, I have even experienced totalitarian regime first hand. -
Chernobyl exploded
I must have been bitten by a radioactive bug back then since I have a superpower to write really buggy code. -
Born