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
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.8
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.
So someone complained to my bosses boss about some internal page where I collected some of our own funny git commit messages, because they were not "meaningful", and I had to take down said page.
Fuck that narrow-minded seriousness, why be so German? If we have to debug multi-threaded C++ programs, we need that bit of fun and sarcasm to stay sane. But probably that someone is a member of some of these "professional" Agile teams that waste a day a week with fucking retros, sprint planning or other mind-crippling meta stuff, then evaluating frameworks and tools, while we are doing motherfucking programing.
Simultaneously opening ssh sessions to test and production system, finally stopping the application in the factory.
It was me.
If ever there was something like dark ages, then we are living it: which programmer still knows what his statement does through the whole software stack down to the CPU (and could also account for what a modern CPU does with all its cores, caches, pipelines and -1, -2, -3 rings). Piled higher and deeper. I know nothing. So it's like being a cargo cult sorcerer, conjuring copy&pasted spells from SO to invoke Bjarne's, Linus' or whomevers forlorn spirit, so this shit won't break.2
If you take only the 2nd half:
They can delete the space, rly? ALTER TABLE spacetime DROP COLUMN x1, x2, x3 or what?
Out of the frying pan, into the fire:
So in my first job, I thought it's just us operating so crazy: meddling with arcane C/C++ code from the 80's, shooting our code to production without testing, fixing hundred of customers data base entries by hand, letting an intern alter some core component (to have more logging) and directly push it to prod...
I mean I suspected, that maybe it's not only this tiny little company acting wild, that also the bigger companies with all their ISO certified processes, agile blabla, professional tooling whatsoever - will also have their skeleton in the closet,.. like some obscure assembler part buried in the heart of your code base nobody dares to touch...
How Pieter Hintjens asked about the state of the industry and all the fads so bluntly put it:
"It's all bullshit."
But we are humans, so we better jump on the bandwagon if we want to keep our jobs... and somehow try to keep that trashy house of cards from crashing down.
How on earth is there any "sane" software (eco-)system or will it always be so crazy because as pieter hintjens might have said all this soft- and hardware is created by this social animal called human, with all it's faults and aberrations...
So it was just, that I could not print - probably because of this bug: https://bugs.debian.org/cgi-bin/... - couldn't install a newer ghostscript. So I would scp my files inside an Ubuntu-VM from which I could print. Sometimes I could pdf2ps some files or transfer back the ps-file and print on my host machine, but mostly not... U n t i l today when I installed the fucking debug symbols package for ghostscript and I could just fucking print. Heisenbug, ghost error or what?1
Not here nor in my prior workplace I have seen any prank. And actually I like this a lot. Don't we have enough shit to go through to tease each other with antiquated, stupid tricks that weren't even funny in the century of their invention? Maybe I am just a humorless German,.. but wouldn't that be part of any professional attitude?
h3ll seemed to express a similar thing, but probably she deleted her account. So we are in devrant without hell. May the memes rule like in fezbook-h3ll.7
Once on my old job I had several ssh sessions and I was running some tests where I frequently restarted the application... Until I entered the restart command in the terminal of the production system and shutdown the whole application. - Still gives me the creeps today, was just lucky the customer was in a break and we could remotely restart it, so probably nobody even noticed.
Now today I run a "rm -rf *" on a folder that is supposed to be local, but after some time I get suspicious because it is taking too long.. Only to discover that the mount point of the remote resource points to my "local copy". Shit.
What is next? The "delete from ...;" without where clause? Fuck, aren't you supposed to get more experienced and cautious?4
Who needs Mr. Robot or all that hacker shows, if reality is just as crazy:
Dear Xcode, \n you are out of your non-existing mind! The clunkiness and awkwardness I experience working with you, I attribute mostly to myself, being unfamiliar with the way of the Mac(TM) and far too lazy to take the time to properly set you up - BUT are you sure you need friggin' 14.25 GB free disk space just to perform a little update?
I hate, hate, hate sockets! All the mysterious way they can fail. The subtleties, different API's if you switch between Linux to Mac, etc.
If the communication between (supposedly) deterministic machines is already such a clusterfuck, how do we even get sentences across humans and act as if we understood?10
I know this place has "rant" in it for a reason, but two things are a bit unsettling for me:
1) That there is still all this OS-war content. Sure, with my Linux boyhood I have seen quite some complaints about "M$" 'n shit, but that was like 10 years ago and shouldn't we grow up some time and see the bigger picture, or at least try not to have one's head stuck up one's arse?
2) Even if you take those quality rants from h3ll or Letmecode, isn't it still: everyone is stupid except of us. Developers, developers! We are the hub of the universe.2