Aboutdev, physicist, rantee
Joined devRant on 6/12/2016
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Fucking linker options on Ubuntu. Somehow it seems to have --as-needed turned on by default. This leads to stripping libraries we had referenced in our target_link_libraries. Then our application won't start because of the unresolved libraries it cannot find in the Rpath, although they would be there. Thank you clever fox.
Now we have to add another stupid linker flag, just to run again.
Write a novel about code and digitalization - not so much dev'ish.
Rral dev thing: finish reading SICP and really plunge in one of the functional languages2
So it's not just through reading your own code later that you can realize how stupid you are. All the great card house of the belief in your own superiority collapsing instantly.
Currently intense time with my son. Can be hard being around one another 24h non-stop... And then realizing that a lot of the stubbornness and quirks of his that drive me crazy: is actually me! (Be it that it's in my character as well or he was reacting to a stupidness of mine)2
Facing some down - simultaneously somehow as dev and privately.
The dev part partly triggered by another burning project. Our team deep in shit up to the chin... And this unanswerable question: who is to blame? Everyone is working up their arses, but the result is still some sparkling firework ship wreck, that only held together for the demo to the board. It's not that we are stupid or lazy, yet we push some unmaintainable spaghetti, because this shit just gotta work.
Dunno, somehow this object orientation / pattern ideologies were also kind of depressing to me: partly because they smell like attempt to enlighten the inept by stupid receipts - and of course then deep down there's this nagging question if I'm not one of this inept not knowing the newest fashion template from the catalogue..
Then this Clean Code - Craftsmanship shit is bugging me similarly. Liked Robert C. Martin's book, but now I picked up some "Clean C++" and.. I kinda feel dumbed down if they try to sell the KISS principle to a 36 year-old physicist/engineer. Good for them that all our legacy shit und own fuck ups nourish this whole industry of well-meaning advisers. Argh, just fuck it, you priests, sell your obvious calendar mottos elsewhere, they are are just as useful as telling a griever that "rain follows sunshine". - As if they would not some time use the raw pointer that their coworker gave 'em, to ship shit tomorrow?
Third (or fourth) AI winter coming in despite global warming. Cold war level shit cyber warfare.
C/C++ not dead, Java zombie still in the businesses.
Still no usable IDE (on Linux)5
The Return of Mr. Gitmaster:
So there is this colleague I already ranted about several times. After my previous team lead had confronted him about not doing much work, there was some irritation because he showed not up at work, but it turned out the external training he did was just a week earlier. Then he was ill a week, another week vacation so we didn't see him much. Not that his pre- or absence makes much difference to our repo: When his and my team lead looked at his commits of the past three months they found like the one copy-pasted HTML-form that wouldn't even show.
Fast forward to now, where we have a new team lead and we were going to lunch with Mr. gitmaster. So we got some more hero stories from the great work he was doing in the previous company. How he was graphically monitoring the heap fragmentation that stupid glibc was causing to their search engine, and how much better it became with tcmalloc.
I still don't understand how he bridges that cognitive dissonance from all the superior tech knowledge he displays to not actually writing any code at all. Not that I would not have experienced some states of feeling low, in paralysis unable to write a single line of code... but he seems so full of confidence, always commenting how trivial and easy all these tasks would be, as if it's all so lightyears below his abilities. Maybe he should just become a manager - but not mine.
How can people stand this bitten apple? With this mojave update I now feel in the most unfriendly desert for developers.
Not only did your update render all my VM's unusable, but the new AppStore seems a joke. This new icon there if a piece is downloading or installing or whatever. I cannot tell what it should tell me. That an alien took a crap on my display? There's no percentage, nothing indicating what's actually happening. Is this your understanding of user experience through obscurity? - shunning the user from any useful information, hiding everything behind some nice looking vapourware?9
What we will miss, if he really softens:
In fact, if the reason is stated as "it makes debugging easier", then I fart in your general
direction and call your mother a hamster.
In short: just say NO TO DRUGS, and maybe you won't end up like the Hurd people.
Of course, I'd also suggest that whoever was the genius who thought it was a good idea to read things ONE F*CKING BYTE AT A TIME with system calls for each byte should be retroactively aborted. Who the f*ck does idiotic things like that? How did they not die as babies, considering
that they were likely too stupid to find a tit to suck on?
Gnome seems to be developed by interface nazis, where consistently the excuse for not doing something is not "it's too complicated to do", but "it would confuse users".
I think the stupidity of your post just snuffed out everything
I think the OpenBSD crowd is a bunch of masturbating monkeys, in that they make such a big deal about concentrating on security to the
point where they pretty much admit that nothing else matters to them.
That is either genius, or a seriously diseased mind. - I can't quite tell which.
Christ, people. Learn C, instead of just stringing random characters together until it compiles (with warnings).
"and anybody who thinks that the above is
(b) efficient (even with the magical compiler support)
(c) particularly safe
is just incompetent and out to lunch.
The above code is sh*t, and it generates shit code. It looks bad, and
there's no reason for it."
Do you all sometimes have this strange feeling, that.. actually humanity would not lose anything, if we killed all that useless tech we earn our money with?
Yeah, we get all that propaganda how technical prowess is empowering and sure we all know it's a nice feeling if you can apply the right clicks and bit flips to make the machine do as you want so you feel like the apprentice's sorcerer.
BUT even if you believe your user story adds some business value to some abstract package - what do these devices mostly do? Distract, diffuse your focus, envy other eye-porn provider, endless aberration of clips.
Fuck social media!
(Yes, I know I am on one, but this is because I haven't given up hope on this one.)6
The CLI is my $HOME, the place where I feel most comfortable. Yes, I despise bash syntax and if it's used for actual production code (with #LOC>10³) - like we do. The pipes, grep, awk - it's usually a breeze.
BUT yesterday my illusion of the superiority of my CLI just got shattered badly: There was some zip with a core file I wanted to investigate, but gunzip and zcat just were unable to decompress it, while with a simple double click I could open the freaking folder.
Starting to wonder why I tend to like our QA people so much: they often seem so much saner. Yes, sometimes they quibble as with the complaints about a page that is hidden from the user anyway, but they would usually not creep to deep into the hole creating most unintuitive workflows and abysmal logic.
Disclaimer: We're more like backend devs, but we had to do a UI which was beautifully slaughtered by the CEO messing with it - guess what's happening with the new one - and because of that... thing I already nearly smashed my Mac because stupid entered credentials for updating software would only be applied if you defocused once out of the password entry box. Fucked up stuff like this, which devs meddle with, give up, just shrug it off and dump it on the (l)user.
Or a more recent example: So PM wanted a stupid "Apply to all" buttons on a list that can be filtered. Guess to which items the actions should be applied if you filtered it and you currently only see a small selection in your window! Yes, of course it still applies to all items in the universe. QA guy who's just trying the buttons comes to me: "Hey, you sure this "apply all"-stuff supposed to work like that?"
Third example to end this long QA-praise: So there is this virtual appliance we build and we should support another stupid hypervisor.. and he found the kernel modules I have to activate additionally so we can just convert the existing image without having to create a new build system.5
Built the most generic file importer.
So a customer had his SAP system giving us some 5 million barcodes in a csv which we needed to parse. But as there could be different file types and I thought the handling would always include the same steps I made them configurable through function pointers. - Did not want to make it as spooky as the rest of the code base where the function pointers were buried deep in some shared memory configs, which might even change at run time, but rather I statically used the member functions of my class. Just to poke fun on the ugly C++ syntax of member function pointers. I still shudder at the thought some poor soul now has to maintain that code.
(For the actual parsing I actually used a one liner in awk which was churning through the records in one minute which was faster than the SAP guys seemed to be accustomed to.)
Had one of my spookiest meetings today. Mr git master still had the dailies in the calendar, but he's the scrum master without a scrum and I was the only one to join. Some bitter remarks alluded to the fight with my boss, but otherwise he was mostly going on about how we should build a docker container to automatically build our build system and how to achieve this perfection in his previous company they needed three month - while our current project is already due in December including testing. I don't know.. still - theoretically he seems to know his stuff, but in the end you have to compile shit and make it fly, or at least not let it drown to heavily.
Anyway, awkward silence setting in, when he's still talking on and my boss enters the meeting room. Some heavy sand in the works.
Should I rejoice like them?
Continuation (no. 2): So because of my bad conscience I was very polite and friendly to the colleague I pestered about... but my boss was not. Instead he broke loose his second fight with Mr. git master. He's joking about that he now already had a fight with almost anybody (mostly team leads). He's leaving the company anyway, so he needn't care, but I start to love his love for conflicts. Some PM or upper boss already said something along the lines: "If something's wrong, I know you'll escalate." Of course you should not for every triviality, but nothing is worse than those lingering, dormant time bombs of projects that went so awry they're just waiting to explode... or silently be canceled.
Well, so they clashed again, and Mr git / scrum master fought for his concern that my boss, who's also product owner, must not enter the team. I looked at the git logs: Mr git master's only contribution - he's supposed to be a member of the team - since joining (like over a month) were 300 LOC, which was actually copy pasting our old copy right form, peppering it with some html tags to ensure it would not work without recompiling the 3rd party lib with a fucking webengine.
My boss now rather wants to remove "agile" as it's not fitting. Just let the three or four of us yank out the code so we actually have a chance to deliver in three months. He told the upper boss that we can take our tasks ourselves so independently we even need no team lead, but could report directly to him. It's still not clear what's gonna happen, but it's like they could let us loose, free radical elements who just do motherfucking programming. Feels awesome.
Now I feel a bit bad about the guy I ranted about before, who did all the talk but none of the work. I started to tell my colleagues and even my boss about my impression. And my boss concurred, was actually so fed up with him that he confronted him...
Later on turned out he was the only one able to repair our mangled git history. Dunno how it'll pan out. The guy is also our 'scrum master'. Maybe doesn't always have to be love, peace and harmony. Time to explore our darker sides and yank out some motherfucking code.1
Had nice nightly writing session with some good ol' Soundgarden and Pearl Jam, so when I just moved to the monitor I still had this music in my head:
[Whatsoever I've feared has come to life
Whatsoever I've fought off became my life]
"Just when everyday seemed to greet me with a smile."
Just to see this:1
I really hate all kinds of tattle that sweeps the hallways of corporations, the gossip behind one's back, BUT this colleague of mine starts pissing me off. Recently joined that team where he should support us getting the Agile thing going. And he can go on for hours of how it should go and how flawlessly it worked in his previous company - all that needless meta talk - so much that a team member jokingly even said: yeah, shut up asshole. But he is all talk. When the name of a library was dropped his experience in using it went to upstream patches. His Linux experience lets us speechless. He is so convincing, I'm even doubting my accusations. Yet his only contribution in code wouldn't show and other team member wasted hours upon hours to recompile plugins to show that shit. Man, just leave us alone watching your youtube live-streams so we can get the shit done.
I knew concurrency is *bad*, but *that* bad‽, just shocked: https://blog.bugsnag.com/bug-day-ra...2
Linux is great - to tinker, to pull in all your FOSS, mess around...
But it's so fucked up, if you actually build and maintain a product on it, i.e. try to distribute s.th. in binary for money even. It's just not intended. If you offer your code for free, you can always say: "Ah, just compile it yourself. You might need these 29 dependencies, of which 2 are not even checked by configure, oops, and now it crashes, maybe in that qt library version, you picked there's still a bug?.. you know, it worked on my machine, sorry."
But if you sell it, it better install and run! And even if you target only the main distros of all that fragmented Linuverse - let's say, Debian, Ubuntu, RHEL, CentOS, Fedora, and if you're in Germany OpenSuSE and SLES, you'll start to see the crap of work you're up with. What you could try is to orchestrate a docker fleet with one container per distro, where you take the oldest version you still support compile a newer gcc there (to at least have C++11) and all your third party libs and then hope the resulting binary runs on all the newer versions of that distro, too.
(You could even be so brave as to try to pick a deb and rpm distro to build for all other distros.)
But ABI incompatibility can still bite you. For instance we once had the insane case, that our GUI would no longer start just by switching the Window-Manager to KDE.7
So easy to DOS a whole software company.
Someone (accidentally) started a script or similar, generating so many requests on StackOverflow that our IP got banned.
In the company chat people already joking how they cannot work. This is "critical infrastructure" in 2018: faulty IP in our network is taken offline. Let's see if we can access SO again today.2
So when installing an rpm there is a file collision check. When you add a file to an rpm package with cmake / cpack it unfortunately adds parent directories your file goes into, which will give you conflicts with other packages. But well you have that beautiful feature to exclude directories from being added:
Now somehow it failed. Turned out it would not work if my path ended with a backslash. Brush my banana! Like "/etc/sysctl.d" is a different animal than "/etc/systclt.d/". - But at least that's nothing against the strangeness of the "mv" command in those respects.
TIL that Debian package names are not allowed to have underscores in their names. Toast my tomatoes. As if file name conventions, like discouraging colons, would not be enough, you just added another useless bit of entropy to all the clusterfuck information just because you established a naming scheme yourself where you delimited the versions and date with an underscore from the package name.2
After coming back to my desk I cannot unlock my screen. So again I have to go to my Mac or even Windows to google my shitty Linux problem. Nothing particular turns up. So I switch to another tty and rummage through the process list. Kill some java that took 11GB of RAM and Firefox that always keeps some zombies. Nothing.
Grep the processes: oh let's nuke "light-locker". Bingo.
The only downside of this brutal unlock: I cannot lock the screen again. So in any case another reboot? Wasn't this the standard repair method of that other OS that should not be named?3
Fuck you Linux! I thought user password validation would be a piece of cake, like bash one liner. How wrong could I be!
Yeah, it's already ugly to grep hash and salt from /etc/shadow, but I could accept that. But then give me a friggin' tool to generate the hash. And of course the distro I chose has the wrong makepswd, OpenSSL is too old to have the new SHA-512 built in, as it should be a minimal installation I don't want to use perl or python...
And the stupid crypto function that would do me the job is even included in glibc. So it's only one line of C-code to give me all I want, but there is no package that would provide me this dull binary? Instead I will have to compile it myself and then again remove the compiler to keep image small?9
Spend like 3 weeks in mem-checking with valgrind and ASAN, because there seemed to be some leaks. So painful and scary. You loose all confidence in your software, the checking tool, your own sanity.
Some spurious result prevailed, could only move it around. Boss could not reproduce the problem on his machine; Ubuntu 18 with GCC 7, mine was Debian 9 with GCC 6, so I tried older Ubuntu with GCC 5. Also no problem.
Fuck it, I'm switching to clang.
Theorem 2.71 All software is shit.
Corollary 3.14 So stop the braindead OS wars. All OS are shit, too.
Proof. The only software that can stay beautiful and clean is software that is never used. Maybe if you are Dijkstra or live in a Haskellian world, you might come away with it, but for the rest of us our artifacts have to interact with other artifacts or are build upon strange historically grown systems, they have to deal with users who will put it to creative use.. and in the process we also actually might have to alter some state.
Or put another way: code is a social construct. Like science are the beliefs and superstitions grown by a scientific community, software is the montainous dunghill produced by our laborious efforts to make shit even work. Of course this only piles the stack higher and higher until you can already smell it from the moon.