Joined devRant on 5/14/2019
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Me: "Omg, I'm so not sorry you didn't get a response to your 2:00am text sent to my private phone number about that super duper not important thing that a four year old could solve... but my girlfriend gave me a wrist band thingy that puts my phone on silent whenever it thinks I'm sleeping."
Product Owner: "And you can't set it up properly!? Your title says `señor software engineer` for god's sake!"
Me: "Yeah, it does. This is a hardware issue, though."
...is what I told her and she bought it. 🤷♂️3
Most... Awkward... Video call... Ever!
Ended about 7 minutes ago. This one guy... Seriously! I mean... 🤷♂️ Everyone thought he's just uncomfortably open but when he finally got out of the shower he panicked, screamed like a girl, fell down and covered his camera asking: "Guys, when you were talking just now... Was there anything... Like... *Weird* on my stream?"9
We worked with that freelancer some time ago. Most talented coder I've ever known. Coding for only 3 years, and only 1 technology, but technical thinking already up to par with my own 15+ years of experience. Very rude but to the point. We loved it - "one of us". We hired that asshole for different remote projects over 20 times in 3 years. We send spec, answer questions, collaborate on chat, review work on svn, add tickets, get solutions. After about a year working like that we had minor issue with finance that revealed our prized freelancer is a chick.
How come when posting a rant I can keep coherent paragraphs like so:
...but when I post a comment the same text looks like this:
WTF devRant? Be consequent with your formatting.6
A dev adds a nice range of categories that content creators can select from. Users get a neat filtering system to restrict the unwanted content.
And then...! People post everything in default category.3
During a health and safety course today I was asked to talk about the workspace ergonomics. Part of that course is to make sure everyone knows how to customise their seat, screen, keyboard, etc., so I told everyone to unfold those little feet on the bottom of their keyboards and everyone did... Everyone but a cheeky little customer service girl who was more interested in taking selfies of her skirt coincidentally matching the carpet. I cleared my throat and said again:
- "Please, unfold your keyboard's feet."
Nothing. Coughed. Nothing. Finally, quite annoyed, I repeated myself for the 3rd time:
- "Unfold the feet, please!"
She jumped. Eyes wide. Noticed everyone staring. And very very slowly, with a look of complete puzzlement, she spread her legs.7
This girl from financial department pissed me off so badly I took 15 minutes of my private time to slightly modify CSS and JS for her user in our intranet panel, made everything pink and blue, animate all the buttons to randomly barrel roll and made the mouse cursor explode colourful star particles with each click.
She *liked* it, said it was *sweet* and *apologized* for being an ass. Robbed me of all the satisfaction. :(7
WTF is going on in web development nowadays that makes people ask me to compile C# projects to Electron?
Let that sink. I'm being asked to compile a C# project that can run as a beautifully integrated seamless *native* and lightning fast application... to JS so it would run as a *website* in the Electron *browser*. Am I the only one seeing how much cancer that is?10
To all the masochists who spent hours debugging misspellings:
1. Learn your tools
2. Learn good practice
Every IDE should point out when you're not using a variable you've initiated or using an uninitiated variable as well as at least highlight, if not simply list, every occurrence of the variable under your cursor and let you find all references or even display the number of references next to a variable at all times, and finally, every IDE should autocomplete for you so when it doesn't you know you've messed up. Good IDE makes all the easy mistakes hard and all of the hard tasks easy. Including running tests. If you don't know how to configure your IDE to do all these things take time and learn it. If you still can't figure it out, replace your IDE maybe...?
Also use the debugger. Preferably one that nicely integrates with your IDE. If you don't, check point 1.
Also write tests and *run them*.
Also if your misspellings tend to consist of a missing `s` at the end of a plural noun just call it `entityCollection` instead of `entities`. And read up on more good programming practices and naming conventions.7
My No.1 interview question for UX developers:
What are the CSS default text and background colours?
The correct answer is: "undefined-on-undefined".
If your 1st thought was "black-on-white", you're the reason we can't have nice things.26
Today, during deployment on server without remote access:
Me (on the phone calling our data centre Admin): "There's a permissions mismatch. The following paths need write access from the following users..."
Admin: "Okay, okay, slow down... I'm still in the elevator." - 10 minutes later - "Okay, ready."
And I gave him the paths and he said: "Try now."
And I tried and it still didn't work. And then we tried all that again. And again. And finally he said:
Admin: "Okay, I give up, I'm going back down to get the screen."12
Guy: - "Your restart script doesn't work."
Me: - "What do you mean?"
Guy: - "It does nothing."
Me: - "It should kill every processes that's running within the project and start them again. Wait... Why do you terminate it?"
Guy: - "I don't. It just stops."
Me: - "It says `Terminated` here. You killed it. Just let it do it's job, don't kill it."
Guy: - "I'm not killing it! It just stops!"
(...two hours later...)
Me: - "Wait... Where do you run it from?"
Guy: - "What do you mean? I just run the script you gave me."
Me: - "Yeah, but where do you run it from? Where did you put it?"
Guy: - "It's part of the project so I put it in the project, d'oh!"13
September 13th, 2013 at 06:20 AM
~$ cd /mnt/backupdisk
backupdisk$ make_backup --output=./~
Cannot access storage: /mnt/backupdisk/~
backupdisk$ rm -rf ~
^C ^C ^C ^C ^C
...never name your backup same as your home directory.5
Seven months ago:
Project Manager: - "Guys, we need to make this brand new ProjectX, here are the specs. What do you think?"
Bored Old Lead: - "I was going to resign this week but you've convinced me, this is a challenge, I never worked with this stack, I'm staying! I'll gladly play with this framework I never used before, it seems to work with this libA I can use here and this libB that I can use here! Such fun!"
Project Manager: - "Awesome! I'm counting on you!"
Six months ago:
Cprn: - "So this part you asked me to implement is tons of work due to the way you're using libA. I really don't think we need it here. We could use a more common approach."
Bored Old Lead: - "No, I already rewrote parts of libB to work with libA, we're keeping it. Just do what's needed."
Cprn: - "Really? Oh, I see. It solves this one issue I'm having at least. Did you push the changes upstream?"
Bored Old Lead: - "No, nobody uses it like that, people don't need it."
Cprn: - "Wait... What? Then why did you even *think* about using those two libs together? It makes no sense."
Bored Old Lead: - "Come on, it's a challenge! Read it! Understand it! It'll make you a better coder!"
Four months ago:
Cprn: - "That version of the framework you used is loosing support next month. We really should update."
Bored Old Lead: - "Yeah, we can't. I changed some core framework mechanics and the patches won't work with the new version. I'd have to rewrite these."
Cprn: - "Please do?"
Bored Old Lead: - "Nah, it's a waste of time! We're not updating!"
Three months ago:
Bored Old Lead: - "The code you committed doesn't pass the tests."
Cprn: - "I just run it on my working copy and everything passes."
Bored Old Lead: - "Doesn't work on mine."
Cprn: - "Let me take a look... Ah! Here you go! You've misused these two options in the framework config for your dev environment."
Bored Old Lead: - "No, I had to hack them like that to work with libB."
Cprn: - "But the new framework version already brings everything we need from libB. We could just update and drop it."
Bored Old Lead: - "No! Can't update, remember?"
Bored Old Lead: - "You need to rewrite these tests. They work really slow. Two hours to pass all."
Cprn: - "What..? How come? I just run them on revision from this morning and all passed in a minute."
Bored Old Lead: - "Pull the changes and try again. I changed few input dataset objects and then copied results from error messages to assertions to make the tests pass and now it takes two hours. I've narrowed it to those weird tests here."
Cprn: - "Yeah, all of those use ORM. Maybe it's something with the model?"
Bored Old Lead: - "No, all is fine with the model. I was just there rewriting the way framework maps data types to accommodate for my new type that's really just an enum but I made it into a special custom object that needs special custom handling in the ORM. I haven't noticed any issues."
Cprn: - "What!? This makes *zero* sense! You're rewriting vendor code and expect everything to just work!? You're using libs that aren't designed to work together in production code because you wanted a challenge!?? And when everything blows up you're blaming my test code that you're feeding with incorrect dataset!??? See you on Monday, I'm going home! *door slam*"
Project Manager: - "Cprn, Bored Old Lead left on Friday. He said he can't work with you. You're responsible for Project X now."25
Few years ago a girl from our HR was hitting on my co-worker. She was asking all kinds of personal and professional favours just so he would come by her place, etc. One time she asked him to send her few C/C++ questions that she could use to thin the crowd of potential candidates before inviting them for the formal interview that he'd conduct later on. Obviously she wouldn't know if the answer is good or not but hell with it, he was ready to storm that pink fortress! So he came up with some mind twisters. She left two days later before he even reached the drawbridge. Sad.
So about six months ago he got fed up with some bullshit and left the company. Yesterday we had dinner. He was interviewing for quite some time being picky about which offer to accept and, surprisingly, during his last interview he got asked very familiar set of questions. He answered each. Then he couldn't resist and asked if the girl works there. The guy confirmed and, without a warning, called her. As if it wasn't awkward enough this is how I was told the conversation went:
- "Joan! You won't guess who I've got here! Your very good friend, Peter! Nope. Yeah, that one - how did you kn... Uh-huh. Oh? Yeah. Are you sure? I mean, I wouldn't. Deal!"
Then he turned out to Peter and said:
- "You know what? I wasn't going to hire you for shit because in my opinion your knowledge on the subject matter, how to put that gently, sucks ass... But apparently Joan here says you're professional and can handle everything we'll be able to throw at you. So when can you start?"
Needless to say he took the job. The fortress fell soon after and he wanted to meet to ask if I'm coming for the bachelor party. I'm ordering t-shirts with "batch mode off" in monospace.9
"Yeah, I got your e-mail, I see the subject. Oh no, dude, it says urgent so it went straight to the URGENT queue. Yeah? Ah. Sure, I'll get to it as soon as I get through the ASAP, NOW and YESTERDAY queues. Well, if you wanted me to read it right away you should've say there's NO HURRY - I read only one no-hurry e-mail a day but there's currently 0 tasks on that queue."
So after 6 months of asking for production API token we've finally received it. It got physically delivered by a courier, passed as a text file on a CD. We didn't have a CD drive. Now we do. Because security. Only it turned out to be encrypted with our old public key so they had to redo the whole process. With our current public key. That they couldn't just download, because security, and demanded it to be passed in the fucking same way first. Luckily our hardware guy anticipated this and the CD drives he got can burn as well. So another two weeks passed and finally we got a visit from the courier again. But wait! The file was signed by two people and the signatures weren't trusted, both fingerprints I had to verify by phone, because security, and one of them was on vacation... until today when they finally called back and I could overwrite that fucking token and push to staging environment before the final push to prod.
Only for some reason I couldn't commit. Because the production token was exactly the same as the fucking test token so there was *nothing to commit!*
BECAUSE FUCKING SECURITY!5
Long time ago, back in a day of Microsoft Office 95 and 97, I was contracted to integrate a simple API for a payment service provider.
They've sent me the spec, I read it, it was simple enough: 1. payment OK, 2. payment FAILED. Few hours later the test environment was up and happy crediting and debiting fake accounts. Then came the push to prod.
I worked with two other guys, we shut down the servers, made a backup, connected new provider. All looked perfectly fine. First customers were paying, first shops were sending their products... Until two days later it turned out the money isn't coming through even though all we are getting from the API is "1" after "1"! I shut it off. We had 7 conference calls, 2 meetings, 3 days of trying and failing. Finally, by a mere luck, I found out what's what.
You see, Microsoft, when you invent your own file format, it's really nice to make it consistent between versions... So that the punctuation made in Microsoft Word 97 that was supposed to start from "0" didn't start from "1" when you open the file in Microsoft Word 95.
Also, if you're a moron who edits documentation in Microsoft Word, at least export it to a fucking PDF before sending out. Please.