A lot of things just makes me sad and/or angry on a regular basis and I felt like sharing. Perhaps this is going to explain, to at least some extent, the insatiable NIH syndrome in me. I will be happy to see disproving information. Entries go from newest to oldest.

I sincerely apologise for the lack of updates lately. Please see Tonsky's Blog to receive fresh disappointment. I do not always agree, though.


September 50 Unix Era

  • Punched tape legacy in all of your super fancy equipment, possibly forever. Oh, how despicable ASCII is. What’s worse, to detect the Backspace key in Unix, you need to check for both DEL and BS as other means are unreliable.

December 49 Unix Era

  • termux fails to upgrade and the maintainer gives us the middle finger.

  • D-Link DSP-W118, like many other Internet of Shit products, fails to function without an Internet connection, and doesn’t remember its state when disconnected from mains power. It also evades basic attempts at reverse engineering so that one could circumvent the restriction—​there are no specifications, all communication is encrypted using TLS, and the firmware file doesn’t look like anything remotely recognisable. I haven’t tried using MITM methods yet, though.

June 48 Unix Era

  • Midnight Commander’s ‘Tree’ panel mode is completely bonkers. You can't collapse open subtrees, yet you can just delete arbitrary items without even touching the filesystem. The dynamic mode of it is also somewhat useless.

January 48 Unix Era

  • Debian erased Qt Creator from their testing repository, hopefully by accident. This happens about a month after they break ZFS on Linux, further reinforcing my view that Debian testing is no more stable than Archlinux. Maybe I should switch back and regain working systemd user journals in the process, in exchange for losing parallel kernel installs. In the end, to solve my real problem with their absence I could just make sure to preload some kernel modules on boot, namely filesystems.

  • A Linux kernel update introduced a regression causing USB sound cards to lose volume controls in alsamixer, prompting me to reboot into a Meltdown-patched kernel. ‘Awesome.’

  • Golang’s archive/zip may generate invalid ZIP64 extra fields. The real issue here is overly concise and somewhat unclear wording of PKWARE’s APPNOTE.TXT. Actually reported.

  • Microsoft’s Open XML SDK misvalidates tables in spreadsheets that follow the ECMA-376 specification and its ‘strict’ namespaces. Actually reported.

  • LibreOffice’s OOXML import ignores ST_Xstring escaping, where ‘Xstring’ presumably signifies ‘escaped string’ and the type serves no further apparent purpose—​how could they miss it?

    LibreOffice doesn’t support ZIP64. Maybe documents that need this extension wouldn’t load in it successfully anyway (above 216 files, or parts having un/compressed size over 4 gibibytes, or the total size of the archive exceeding that size) but telling the user that their document is ‘corrupt’ and failing to ‘repair’ it afterwards really isn’t helpful at all. The ZIP reading code is also a horrible mess.

    LibreOffice doesn’t support table styles predefined by ECMA-376. In fact, it doesn’t seem to share the concept of a styled table at all. At least it loads their autofilters.

    LibreOffice is sometimes just randomly broken. I can’t be bothered with screenshotting.

July 47 Unix Era

  • TrueColor is lame. I don’t like banding. Could I have 10 bits right now, in all software?

  • Can’t find any Firefox addon to convert shitty Unicode emoji to tolerable ASCII.

June 47 Unix Era

  • You can’t reset the prompt from within a bind -x handler in GNU Bash—​and here I’ve almost forgotten why I use zsh instead: it doesn’t suck. Luckily there’s a passable workaround.

  • rxvt-unicode flickers when I switch virtual desktops. Who needs double buffering, right? At least it’s an opportunity to learn a few things about rendering in X11.

  • Trivial video editing on Linux is a very, very sad story. It doesn’t load, it crashes, it glitches, it’s incorrect, the UI is unusable. Apparently moving pictures are a hard problem.

  • Evince can’t do subpixel font antialiasing at all, not even optionally, because reasons.

  • VIM is pretty complicated and some behaviour doesn’t make any sense. I’m not aware of a way to force it to show as much of the document as fits on the screen. When you turn off line numbers, the only indication is ‘Top’ changing to ‘0%’ and even that goes away with vim-airline.

  • EIZO ColorEdge CS2730: rather expensive, low top brightness, low contrast (which is to be expected), distinctly darker left and right edges near the bottom of the screen. Neither DDC/CI nor MCCS over USB works and the exposed proprietary HID usage page seems to be useless for general picture control, which annoys me quite a bit. Looks decent. My summary here is that backlight is a shitty concept and EIZO are no wizards.

May 47 Unix Era

  • Rust just doesn’t feel like a serious language. Consider the following snippet:

    static font: [Char; 1] = [
      Char { code: '-', width: 2, advance: 3, rows: [0x00, 0x00, 0x00, 0xc0, 0x00, 0x00] },

    The compiler can’t infer the length of the array, it can’t infer the type of what you put in it, and it can’t infer field names. You either have to repeat yourself all the way, or use an ugly macro. It’s as if no one even thought about having any data in their code.

    Add that to a lazy compiler and overall complexity and you’ll see why Go, also being a pretty new compiled programming language, is way more popular: it just sucks less. Obviously it’s questionable to compare languages with such different memory management design choices but Rust vandals have high aspirations and propose it as a panacea, so I feel rather justified.

    Truth be told, I don’t know what to program in. I’ve learnt enough C to be able to make all sorts of things with it but all the micromanagement and unwieldiness tend to get annoying. C++ is a mixed bag—​the latest version seems to be okay feature-wise and the infrastructure is there but overall the language is ugly and complex, STL iterators awkward to use and compile times increase significantly for some reason. Go solves many of C’s problems but it has no native concept of macros and it’s painful to debug, as I’ve already mentioned in February.

    Maybe one day I’m going to teach myself to write compilers for something more productive than Brainfuck.

  • Open Build Service has been down for over a day. GitHub also worked shitty one day, getting randomly stuck on cloning. Teaches you not to rely on water vapor services.

  • GitHub releases don’t include submodules. Useless for building.

  • I can’t stand ~24/~25/~30 frames per second films. Can we just bury those idiotic last-century formats? I think I could make a coffee in the time it takes for another frame to show up in action scenes. People should finally come to terms with the way reality looks. (Note that I rarely watch any films at all, mostly just a few cartoons here and there.)

  • VirtualBox 5.0/5.1 has been broken with tiling window managers for about a year now, turning it almost unusable. And Qt 5 seems to be to blame.

April 47 Unix Era

  • The Meson build system has a very limited configuration language that makes anything non-trivial either annoying, complicated, or impossible. No functions, no file-level includes, no file reading, ‘configuration data’ objects cannot be reused or copied, and other arbitrary constraints to make sure your life is just that tiny bit more miserable. Apparently it’s not even about purity, with top-level functions like jar() and vcs_tag(). Their website is terrible to use as well, with the menu not loading w/o Javascript or when the browser is too narrow, and no table of contents to quickly navigate within a document.

  • RPM is a disaster. The binary format with its plentiful constants makes it troublesome to generate a package with a simple script, and rpmbuild just makes it suck differently. Quick and dirty packaging for Debian and Archlinux, in comparison, is easy.

  • ninja developers still don’t feel like acknowledging the importance of the standard error stream, so IDEs cannot distinguish between status messages and error reports.

  • Qt Creator appears to hardcode en_US.UTF-8 for LC_MESSAGES somewhere deep down its guts, and Perl keeps bitching about being unable to set the locale. (This program has lots of issues but it’s indispensable to me.)

  • I’ve bought a Cherry G84-4100 keyboard and I’ve finally concluded that it is a piece of crap. While the physical dimensions and the low profile are pretty awesome for a mechanical keyboard, it has some serious issues.

    First, the switches. Cherry ML have often been described as ‘scratchy’ and that they are. If you don’t press the key dead center, it’s going to resist hard. I’ve tried lubing the stems (only the visible part as they’re nearly impossible to open) but to little avail. The much bigger MX switch doesn’t have this problem.

    Another thing I’m not too happy about is the use of retarded Caps Lock, Backspace and right Shift keycaps instead of installing some damned stabilizers into the mount holes in the PCB. I can tolerate it however, since at least it makes it easier to recognize the keys by touch.

    My biggest problem though is probably the electronics. I use a Czech variant of the Dvorak layout with Ctrl and Caps Lock swapped, and that seems to be something engineers didn’t count with and QC didn’t test. For example, I can’t type Ž (left Shift + AltGr + /) because it turns on Caps Lock instead. And when I type sequences like chl (ijp) or whi (,jg) fast, it inserts a Caps Lock before the third key press. Those are pretty common in Czech and and English respectively.

    To think I actually had hopes of there being a decent portable keyboard on the market… Instead I get further reinforcement of my ‘expect the new thing to be shit’ rule.

  • OpenBSD 5.9 used to freeze my trusty netbook, so I replaced it with a more powerful machine. Then, because of hardware incompatibilities, I had to put it under a Linux hypervisor. And now, OpenBSD 6.1 freezes under that, within about an hour of running.

    At least cgit stopped crashing on half of my repositories.

    If I’m unable to find a workaround, I guess it’s back to Linux, with the added benefit of greater performance and better software availability. And at the cost of a more complex, less secure system. One that works, nonetheless.

  • Seeing entitled retards hating on basically everything Canonical does—​these days that would be Unity 8 and Mir—​makes me want to stop reading the Internet altogether. The popular argument is that they should instead work on existing alternatives, completely disregarding that they’d be told to fuck off with their changes (and indeed have been) because they’re in fact trying to make something different in the first place.

    And that’s completely independent on the fact that their licensing model is fucked from the ‘free software’ perspective.

  • Haiku is probably the only truly usable open-source, GUI-centric operating system in existence. (And it’s basically stuck in C++98/03, which is highly annoying to write in.)

    Is it so hard to replicate the half a century old idea with modern resources? Have we got stuck in a rabbit hole, making OS development seem to require much more work than it would, had we not strayed from the simple path? Were feature-rich GUI desktops just a fad? Does anyone even care anymore?

    Because GUIs seem to be in a dire situation overall.

    Amazing tools have been made in and around the 90s (that would be 20s UE). When Microsoft was king: Turbo Vision, Visual Basic, Delphi—​all massively popular. Today, following the weakening of MS’s monopoly, and Internet access becoming widely available, we have what? The web is a disaster of silly proportions. Microsoft hasn’t really moved anywhere, arguably only making everything more complicated to go with the times (things were already pretty complex to begin with because of backward compatibility). GNOME is distinctly programmer-hostile from many perspectives. Maybe Qt, at least finally acknowledging the existence of C++11, is what’s left as a hope for the future? Or phones with their convoluted development environments and terribly inefficient human interface devices?

  • Analogue watches are circular because of the hands. But why on Earth are almost all digital watches circular? It makes very little sense other than tradition. And it looks awful.

    Smart watches, on the other hand, don’t even last a single month on batteries (with Apple Watch you only get some ridiculous eighteen hours), and are thus practically useless.

    The only class of devices that got it somewhat right is heart rate monitors. Still, the most you can get out of those is about a week, therefore they can’t be taken as a serious replacement for a classic digital watch either.

March 47 Unix Era

  • Hobis furniture doesn’t have all important screw holes predrilled or at least marked (unlike IKEA, even though they don’t mark them very accurately), and it doesn’t fit together too well either. Consider having them build it for you, so that you have someone to blame at least.

February 47 Unix Era

  • nmtui doesn't respond to terminal resizes, and it doesn’t fully respond to ^L either. Quite problematic in the age of virtual terminals.

  • Most LCD panels suffer from significantly uneven backlight, which can get very disturbing to anyone spending any considerable time in front of a computer. The technology most producers use is cheap and defective.

    In addition to that, while IPS may be an improvement over the notoriously crappy TN, it’s likewise bad, as witnessed by the term ‘IPS glow’, since now both black and white are wrong. (Sadly while MVA seems to be a good middle ground, it doesn’t come in all sizes and DPIs.)

    To top it all off, reliable and affordable OLEDs are not going to be available for several more years. Only Dell has tried so far, but eventually decided to cancel the entire thing because of ‘drifting colours’.

  • It’s practically impossible to find a desirable laptop these days. They all have a host of various issues, such as: 1/ Windows pre-installed (most of the market), 2/ island-style keyboards (everything being sold today), 3/ nonsensical numeric keyboards throwing everything off-centre (all 15" except for Apple), 4/ the battery cannot be easily detached, 5/ they’re just ridiculously hard to get into. Maybe, maybe the new ‘retro’ ThinkPad will at least bring us back something remotely comfortable to type on but that’s about all the hope I have right now.

    At least my Microsoft-free Dell 3340 isn’t all that terrible once I’ve removed the useless keyboard cover. Actually, it still has that retarded ISO layout…​

  • Markdown has a stupid syntax and generally sucks (just like reStructuredText), yet that’s what most applications support. Asciidoc, being the one markup that doesn’t actively irritate me, has merely two implementations, however: the worse, original one in Python, and a significantly improved one in Ruby. This makes it harder to integrate into various software. Update 2022: I use libasciidoc now, which is slowly approaching ‘production quality’.

  • The PDF format is full of schizophreny. On one hand, you need a textual parser. On the other hand, it can contain arbitrary sequences of binary data in so called streams, where the length is specified by a number that may be indirectly referenced, so you may have to go through an offset table at the end of the file and start reading tokens from elsewhere in order to continue. The grammar sometimes makes you use a stack, and sometimes you need to look ahead. The {} delimiters are left over from PostScript but have no assigned meaning. The cross-reference table is textual but entries are fixed-length.

  • Debugging Go can get terribly painful very fast. Stepping in gdb is practically broken, often finishing execution of your function by accident. It also jumps into garbage collector assembly. As of Go 1.7, `-race -gcflags "-N -l“ fails the compilation. go get -race…​ tries to overwrite system libraries.

  • GNOME has apparently stopped producing prebuilt libraries for Windows, making my solution obsolete and cross-compiles troublesome because msys2’s mintty seems to segfault on WINE. Why do I even have to jump through all these hoops.

  • Midnight Commander doesn’t restore the title of the terminal after exiting.

  • cgit segfaults on OpenBSD while trying to show about half of my repositories. Thanks to its old-fashioned CGI nature, it’s also tricky to set up and debug, and I don’t know of any good alternative.

  • Currently used archive formats suck. Either they’re proprietary (RAR), not seekable (tar.*), obscure (7z) or just thoroughly flawed (ZIP). At least I’m not the only one to acknowledge this.

  • libclang is a steaming pile of shit that doesn’t work as it should. It’s just exposed innards of a compiler, not a proper building block. Impossible to get full syntax highlighting.

  • Counting years using the Anno Domini era feels retarded. While acknowledging that any origin is going to be arbitrary in some way or another, why organize our lives around a popular fairy tale? And why natural numbers only? I think I’m just going to use the Unix epoch for personal purposes. The last digit stays the same, anyway.

January 47 Unix Era

  • ASCII is pretty much arbitrary as well as outdated. `, ~, ^ is a stupid subset of diacritic marks that use up an entire cell and _ is a fucking underline. That is teletype stuff. Similarly useless are about 30 of the 32 control characters, $ forces dollars on everyone and \ just makes no sense. Is it going to stay with us forever?

  • tmux has changed the configuration for mouse at least three times already, and I’m tired of fixing the errors on all my boxes.

  • tar -cJ only uses one CPU core and decompression of the resulting archive cannot be parallelized either. If xz supported it, anyway. Luckily we have pixz, and XZ_DEFAULTS=-T0.

  • OpenBSD is so fucking slow at literally everything. Just use Linux if performance matters.

Also, this is my life right now (counting since ):


Use e-mail, webchat, or the form below. I'll also pick up on new HN, Lobsters, and Reddit posts.