zmrd

daily occasional dose of nihilism🌗

Výhodný bonz

Máme u nás všemožné fízlovací systémy, které údajně brání daňovým únikům, ačkoliv nikdo nedokáže spočítat, zda tomu tak skutečně je, nebo zda nemají přímo opačný efekt. Máme Účtenkovku, tedy státem provozovanou loterii. Když nakupuju já, tak prostě buď akceptuju cenu a zaplatím, nebo nakoupím jinde, či vůbec. Zaplacením pro mě obchod končí, co s penězi udělá obchodník mě nezajímá. Existují lidé, kteří za součást obchodu považují navíc dodatečnou kontrolu úředníkem a za šanci nižší, než jakou mají ve Sportce, neváhají obětovat hodiny opisováním účtenek.

V porovnání s americkou IRS je podpora udavačství u nás však mizerná. Zatímco my rozhazujeme drobné mezi pitomce a odměňujeme úředníky za výkon (což je ve státní správě věc jinak nevídaná, pomineme-li čárkový systém), ve Spojených státech náleží bonzákům podíl z kořisti. Vznešeně se tomu říká whistleblower.

Česká pošta

Nesnáším vyřizování čehokoliv na pobočkách České pošty. Je to asi částečně způsobeno tím, že se tomu vyhýbám jako čert kříži, takže i pro někoho triviální úkony shledávám komplikovanými. Není mi jasné, proč mám psát adresu příjemce na balík a ještě na samostatný lístek, ze kterého úřednice na přepážce všechno přepisuje do počítače. Nešlo by to opsat z toho balíku? A jaký je rozdíl mezi jednotlivými druhy zásilek? Mám prostě věc, kterou chci někomu poslat. Od pošty očekávám, že si ode mě balíček převezme a druhý den ho někomu jinému dá. Balíček se neztratí, nepoškodí, neskončí v popelnici ani v rukou někoho jiného.

Výdejní systém pořadových lístků je kapitola sama o sobě. Buď chci něco poslat, nebo si jdu pro balík. To druhé je obzvláště zapeklité, protože je potřeba jít k tomu správnému okénku, podle toho, o jaký druh zásilky se jedná. Jediná informace, kterou mi pošta lístkem ve schránce zanechá je, že mám na poště balík. Někdo z toho jistě snadno pozná, co má pak zmáčknout na výdejním automatu, já volím náhodně a mám odpozorováno, že nejsem jediný. Logickým řešením by asi bylo systém zjednodušit tak, aby pro vypatlance mého kalibru existovalo tlačítko „Přišel jsem si pro zásilku“. Zásilku, rozdíl mezi balíkem a psaním je pod mé rozlišovací schopnosti.

Uznávám, že za nemalou část selhání nesu spoluvinu. Před několika lety jsem si šel založit datovou schránku a zapomněl jsem si telefon v kanceláři. Nepřipadalo mi to jako zásadní problém, prostě předložím občanku a požádám pracovníka pošty, aby si dohledal moje IČ (jo, nepamatuju si ho - proč taky?) v rejstříku. Byla chyba na to spoléhat; nemají prý přístup na internet! Předpokládám tedy, že na pobočkách mají databázi obchodního rejstříku na kamených tabulkách, nedokážu si jinak vysvětlit, jak dokázali po mém návratu jenom na základě IČ doplnit všechny zbývající údaje.

Několik posledních let jsem žil v domnění, že mě tato firma už nemůže nikterak překvapit; datovou schránkou jsem minimalizoval nutnost veškeré interakce a balíky si vyzvedávám tak, že buď trefím ke správné přepážce, nebo se nechám přesměrovat. Občas není potřeba ani to - něco si nechám doručit na adresu, kde to za mě převezme recepční já se nemusím rozčilovat s výdejním automatem.

Tuhle jsem si objednal nějaké oblečení z Amazonu (pochopitelně z USA - ten, kdo někdy viděl sortiment německého Amazonu, ví proč). Ze skladu v Americe k nám zásilka putovala asi 2 dny a další týden se válela ve skladu vyclívací pošty v Praze. O celním řízení jsem byl informován pochopitelně dopisem, ne datovou schránkou (kterou provozuje ČP…), plná moc a prohlášení jde naštěstí zaslat e-mailem. Jen pro zajímavost - plnou moc jsem podepsal, ale prohlášení jsem prostě vyexportoval z Wordu do PDF. Trochu jsem čekal, že mi to vrátí, ale buď se to neřeší, nebo si i na poště někdo položil logickou otázku, jak se vlastně liší hodnověrnost ofoceného papíru s podpisem a nepodepsaným PDF. Klidně bych to opatřil elektronickým podpisem, ale pošta a státní správa neuznává žádný podpis od celosvětově uznávaných certifikačních autorit, místo toho je potřeba si za několik stovek na rok platit nikým neuznávaný certifikát od PostSignum (nasrat).

Po pár dnech balík skuteně dorazil a upřímně, trochu mi to rozhodilo plán. Po celním řízení se na zásilku přilepí papír o celním poplatku a zelená nálepka VYBRAT CLO. To je, technicky vzato, poněkud zavádějící, protože do $150 jsou zásilky od cla osvobozeny, platí se nicméně DPH (od $20) a poplatek poště za celní řízení. Připadalo mi proto trochu zvláštní, že mi pošta nechala na recepci balík bez toho, aniž by za něj kdokoliv zaplatil.

Nepřipadalo mi jako dobrý nápad to nechat být. Ne, že by mě nesrala nutnost doplatit DPH a tu raketu za vyclení, zároveň ale nechci dlužit zrovna celníkům.

Rozhodl jsem se tedy zajít na pobočku pošty i s balíkem (jak se později ukázalo, brát ho s sebou byla chyba). Z přepážky jsem byl přesměrován (tak to mám rád!) na reklamační oddělení, kde vedoucí směny z počítače zjistila, že balík je stále na depu k doručení další den. Oba jsme se pohledem na balík ujistili, že tato informace neodpovídá skutečnosti. Následně paní zavolala na depo, chvíli se vyptávala a začala se domlouvat na dalším postupu. Nemám sice s Českou poštou bohaté zkušenosti, ale už jsem zažil, že by mi balík nedorazil. Jiný se mi zase vrátil. Ale úplně poprvé se mi stalo, že by mi pošta chtěla již doručený balík vzít a doručit mi jej znova. Zřejmě chtěli dostat příležitost to zvorat znova, zcela novým a originálním způsobem. Pobočka pošty, kde se tohle odehrávalo, má reklamační oddělení hned vedle hlavního vchodu. Zcela vážně jsem zauvažoval, že se pro balík, toho času v sevření vedoucí směny, natáhnu a dám se na útěk. Dluh by tak ale zůstal nevyřešen.

Po zavěšení telefonu jsem se referentky zeptal, jaký má z toho nápadu pocit. Třeba já měl pocit, že si ze mě snad dělají prdel a že to, co se děje, vlastně není a nemůže být skutečné. Upozornil jsem na to, že kdybych tušil, že mi balík vezmou, jistě bych na pobočku nechodil a jde mi jen o zaplacení vyměřeného poplatku. Po chvíli domlouvání jsme dospěli k uspokojivému řešení - byla mi vystavena stvrzenka, já zaplatil, tedy hned po tom, co jsem si zašel za roh vybrat peníze, protože z nějakého důvodu to nešlo uhradit kartou (alespoň tohle proběhlo dle očekávání).

Jak jsem byl vyrozumněn, dluh by za mě musel vyrovnat doručovatel, který předal balík bez převzetí předepsané částky. Mohlo by být i hůř, kdybych třeba popřel, že mi nějaký balík vůbec došel (ostatně samotná pošta tvrdila, že ne).

Nesnáším vyřizování čehokoliv na pobočkách České pošty.

So it’s not impossible to forget or lost a VPN password and Windows doesn’t tell. I was looking for it in the Windows password manager - there are credentials for networks, websites (if you, for some reason, use an Internet Explorer), shares, DAV and so forth.

VPN credentials are not stored there, though. Not really sure about this, but I assume it’s because the RDP is much more older than the password manager. Who knows.

Anyway, there’s dialupass. You just basically run it and it shows all the stored VPN credentials with readable passwords. Neat.

I use Git for Windows installer, which comes with some GNU coreutils binaries (ls, head, grep, …). History, auto-completion and sane behaviour in general is handled by clink, so in the standard Windows command line, I can do pretty much anything I could in Linux. Oh, and there’s ConEmu, an awesome emulator.

But every time I install it on a new computer, I have a problem with non-ASCII characters in output of ls, find or any program dealing with file names, really.

The final answer is LC_ALL=C.UTF-8. This could save me some time in the future.

Typed properties

PHP 7.4 is out and everyone seems to be happy about the typed properties.

I’m not. Don’t get me wrong, having an option to enforce property type and presence is a good thing, I won’t argue on that one. But every feature will eventually get misused and this is especially true when it comes to PHP developers. Every time there’s a discussion about PHP 7.4, I hear people saying things like: „We can finally get rid of that getter and setter boilerplate!“

Can we, though? When it comes to accessors in general, I’m the very last person defending it. I hate getters and setters, I truly do. It’s one of the reason I hate Java so much. I don’t like writing it and using it. But typed public property isn’t the answer.

Consider this:

class Product
{
    public float $weight;
}

So, how about this one? We don’t want $weight to be a non-positive number. How to deal with that? Yeah, you have to make it private and write an accessor for it. Sure, it could be an immutable property (so you need a getter for it anyway), or you could use a magic access, which, however, you can already do prior to PHP 7.4.

Think of an existing class exposing a public property. Later in the development process, you might want to restrict the value somehow. In that case, you have to introduce magic access support, unless you’re fine with breaking your API. Also, can you imagine using an API where half of the properties is exposed and the other one is hidden behind accessor methods?

I can’t think of a reasonable use case, with an exception of static public properties, which are, however, rarely used. Also, how often do you actually introduce a bug by assigning a value of an invalid type to your property?

Long story short, ditching accessor methods in favor of typed properties is most likely a bad idea.

There’s also another problem. PHP doesn’t profit from type-hints in any way; it’s just a runtime type check so it actually just makes your program slower. This doesn’t really stop me from using it, as I doubt it would make a measurable difference most of the time, but consider this:

class Generator
{
    private int $n;

    function run(): void
    {
        for (;;) {
            $this->n++;
            // ...
        }
    }
}

This is a no-no, once there’s a lot of iterations. Why? Because every time you assign a value to the $n, PHP will perform a type check. I believe there will be some optimizations made for such scenarios, but so far, this will slow execution down.

EDIT: In latest release, this exact code doesn’t seem to cause any performance degradation.

Did I mention this feature introduces an uninitialized state?

If a typed property does not have a default value, no implicit null default value is implied (even if the property is nullable). Instead, the property is considered to be uninitialized.

I sort of understand the reasoning behind it and I can definitely live with that, but I don’t like the behavior. Implicit null where possible and throwing an error when there’s an uninitialized property after the constructor call while maintaining the uninitialized property access check would make more sense, I guess.

Typed properties are a good thing in general, especially for static analysis and stuff like that. However, they’re not actually meant to reduce boilerplate. Accessor methods are still a thing you can’t avoid. In my opinion, the answer we’re looking for is something like properties in C#. That’s how you make a great API. I’ll stick with the Nette SmartObject, for now.