Details
-
AboutMy skills are out of date. Academics is interesting. Industry seems mostly incompetent
-
SkillsPHP, js, react native, c#, minecraft modding, c++, go
-
LocationBelgium
-
Website
-
Github
Joined devRant on 7/9/2016
Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
-
After a week’s vacation, I felt the briefest feeling of being a person again. I was able to do something small and enjoy it, and even planned to do another small thing.5
-
Trash, trash, trash.
Who the fuck writes this shit?
Who the fuck lets these trash should-be-junior devs roll their own crypto? and then approves it?
The garbage heap of a feature (signing for all apis) doesn't follow Ruby standards, doesn't follow codebase conventions, has `// this is bridge` style comments (and no documentation), and it requires consumer devs to do unnecessary work to integrate it, and on top of all this: it leaks end-user data. on all apis. in plaintext.
Fucking hell.8 -
Had QA call my "simple, quick" ticket a "monster ticket" in front of everyone. Hear it and weep, micromanager!
Also had them tell me i thought of everything, it was beautiful, and that i have a knack for frontend :)8 -
!!fml
"Root, go fix this bug. It'll take you two days."
The "bug" is a feature that was never implemented for one particular payment type.
The code in question is two years old, full of typos, smells, junior-isms, and is convoluted AF. The feature's commit touched 190 files and implemented many other features as well. Thus far, I have been unable to narrow down where this particular feature's code lives for the other payment types, nor which code or payment paths lead to it. Burned out, I can barely focus on the screen, let alone follow its many twisting and dynamically-inferred paths. I hint as to the ticket's scavenger hunt nature during standup.
"But I wrote comments on the ticket telling you exactly where to look to fix it," Thundercunt admonishes in front of the team.
"Sure, you did," Root replies. "You reworded what the original dev had said in the comments 20 minutes prior, and agreed with him. His comments were helpful, but it doesn't tell me how any of it works," she continues.
TC scoffs and closes the meeting.
Root stares blankly, seeing neither code nor screen, questions her life decisions, and recalls the previous tickets she has worked on: nearly every one of them busywork, fixing other people's bugs. Bugs she never could have gotten away with if she tried.
"Why do I put up with this?" She asks. "They don't care, and it's killing me."
But the bills remain, and so must she.
"Fuck my life" she finally decides.20 -
So, I was going to complain about JS being finicky and not making a damned bit of sense, but it turns out that it wasn't JS's fault. Not entirely, anyway. It was the halfassed JS minifier middleware (written by the legendary dev himself) that was breaking the JS while writing it to the page.
The original problem:
My code worked. I removed some comments. Big ol' block of //'s. And suddenly $() isn't a function. But if I call $(); at the top, it all works!
It turns out the "minifier" caused JS to think my code was chaining off the previous JS line in the rendering pipeline instead of being a separate statement. so all it really needed was a `;` at the start. What threw me, though, was the last line of the previous blob of (non-minified) JS was a comment, so it should be a separate statement, right?
But as it turns out...
```
console
// JS really is finicky.
.log('Sigh.');
```16 -
I built a feature. I asked questions for days. Nobody helped. I built it anyway, and while I'm not sure it's quite right, it works.
During a code review, I asked for clarification on who the fuck it's for. Simple fucking question. Didn't get an answer. I did get the same crap response twice, though. It's great because it both doesn't answer my question and makes things worse.
Let's refer to this as "branding." Here we go!
------
Root: "Should this be changed to blue? I'm not sure who the end-user is."
TC: "should be purple, then call it something more convenient" (...what?)
Root: "Better phrasing: if we use the feature, it should match our colors and be blue. If customers use it, it should match their colors and be red. It shouldn't be both. I looked through everything again, and i'm convinced that it's only for us, so it should be blue so it matches everything."
TC: "this should be purple, and then call it something [sic] red" (...what!? also: lolcopypaste)
------
But like, that's wrong in every single way. It's internal, not external. Doing both makes it confusing. Doing both and calling it external is fucking stupid. Did she even read the PR? or any of my questions? ugh.
I swear, it's like arguing with a boulder and expecting it to listen. An ugly, oversized boulder that comically resembles Jabba the Hutt. No joke.
Whatever, it can be purple. Later, if someone complains that it's confusing, I'll just link them to the damned PR. Then again, almost everything here is confusing AF, so I doubt anyone will actually notice.
Screw this place. So glad I'm on my way out.rant thundercunt the ugly boulder responds jabba the hutt root asks questions root has a code review6 -
Root: Fleshes out missing data in some factories. Tests affected code and finds the change breaks some specs (but shouldn’t).
Root: Reaches out to spec author.
Root: Messages thundercunt (the ticket’s code reviewer) on slack about the specs and the reaching out. No response.
Root: Works on another ticket while blocked.
Root: Logs off.
Root: Talks with spec author chick in the morning. Decide to pair on specs later.
TC: Still no slack response.
Root: Gives update in standup. Mentions factories and broken specs. Mentions pairing with spec chick.
TC: Still no slack response.
Root: Pulled off tickets in favor of prod issue. Gets ignored by everyone else diagnosing prod issue. Investigates prod issue by herself. Discovers prod issue isn’t from bad code, but bad requirements — code works as requested. Communicates this with details. Gets ignored by people still diagnosing prod issue. Tries again. Gets ignored. Gives up. Works on non-blocked tickets instead.
TC: Still no slack response.
Hours later:
TC: Comments on PR telling me I broke specs (how did I not notice?), that I need to reach out to spec chick and work with her, and that I can’t resolve the ticket until it’s fixed and passes code review.
TC: Still no slack response. (21 hours later at this point)
TC: Logs off. Still no response (25 hours at this point)
———
Ignoring the prod issue for the moment…
I broke specs. No shit.
I need to talk with spec chick. No shit.
I can’t resolve the ticket. No shit!
Bitch, I told you all of this 21 fucking hours prior, and again 3 hours prior during standup. But no, I clearly “don’t communicate” and obviously have no bloody clue what I’m doing, either, so I need everything spelled out for me.
And no, I didn’t resolve the fucking ticket. Why the fuck would I if it still has pending changes? Do you even check? Ugh!
And what the fuck with that prod issue? I’m literally giving you the answer. fucking listen! Stupid cunts.
Why is it all of the women I work with are useless or freaking awful people? Don’t get me wrong, many of the men are, too, but I swear it’s every single one of the women. (Am I awful, too?)
Just. Ugh.
I can’t wait to leave this sewer of a company.
Oddly still a good day, though. Probably because I talked to recruiters and sent out my resume again.rant oh my root gets ignored. root swears oh my root talks in third person root solves a prod issue thundercunt root communicates root wants to leave root gets ignored15 -
Well, I was the One that was scolded. Because I basically took over without asking permission to fix a critical outage.
I fixed it within 3 minute, while the person in question have been trying for 2 hours.
He then got very angry and told me infront of everyone that "dont ever help me out".
Said and done. I never helped him ever since, even if he clearly struggled with everything.
He got fired recently due to incompetense6 -
- Hey I have to add new field, but this class is autogenerated, I do not know what tool generates it"
- Your fingers
- But this class has over 20k lines of codes and the header says it is autogenerated.
- It is a inside joke, it was generated by hand6 -
Excerpts from "Bastard devops from hell" checklist:
- Insistently pronounce git with a soft "G" and refuse to understand people not using that pronunciation, the same goes for jithub, jitlab, jit lfs, jitkraken etc.
- Reject all pull requests not in haiku format, suggest the author needs to be more culturally open minded when offending.
- increment version numbers ONLY based on percentage code changed: Less than 1% patch increment, less than 5% minor increment, more than that major version increment.
- Cycle ALL access keys, personal tokens, connection strings etc. every month "for security reasons"
- invent and only allow usage of your own CI/CD language, for maximum reuse of course. Resist any changes to it after first draft release23 -
expect([
row[‘blah’][0][1],
row[‘blah’][1][1],
row[’blah’][2][1],
row[‘blah’][3][1],
row[‘blah’][4][1],
]).to contain_exactly(
a.name(user), # “John doe”
c.name(user), # “John doe”
e.name(user), # “John doe”
b.name(user), # “John doe”
d.name(user), # “John doe”
)
(Note: The comments are mine.)
See the problem? No, not the ugly code (which is actually worse than what i posted here).
It’s using the same ridiculous getter (if you can call it that) that pulls a name out of the passed user object, and then expecting each row to have that name, in order. Not that order matters when they’re all the same.
Upon inspection, all objects created by the spec have the exact same name, so the above test passes (as long as there are 5 rows). It passes, but totally not because it should: those aren’t the objects that are actually in the table. All of the specs — all 22 of them — only check for that shared name on various rows, and no other data. And it’s not like this is the only issue, either.
Fuck me these are bad.
And this guy is a senior dev earning significantly more than me. Jesus what the fuck Christ.18 -
I’m updating my résumé, and want to redo it from scratch — I’ve just been migrating the same document between OpenOffice (and later LibreOffice) versions for 15+ years, so it’s pretty buggy now.
As I’m redoing it from scratch anyway, does anyone have any suggestions on what I should build it in/with instead? Is there anything that works particularly well?
I’ve been considering learning and using Latex, but I’m not sure.30 -
funniest thing today: PM asking me to create a Jira subtask for EACH class / data type of the data model that I'm CURRENTLY concipating / designing in this story.
maybe I should write a Jira / Enterprise Architect integrated tool that updates Jira tasks based on my modeling actions, and count minutes until our sysadmin arrives at my desk.
jeez, that guy really has a fetish for kafkaesque bureaucracy.🤦♀️4 -
*CTO in panic, as always, invites everyone to the war room*
CTO: We have a MAJOR problem where 0.0001% of our customers are not receiving SMS confirmations.
Me: Cool. But, 0.0001% is very less compared to the other problems we are solving.
CTO: You don't understand, this is critical issue that needs to be addressed immediately.
Me: But even those.0.0001% customers are receiving e-mail confirmations, so this is not even blocker as we have other channels working.
CTO: I am emotional at this point. You need to prioritise this now.
Me: Okay, do we know the root cause of this problem?
Engineering head: we have blacklisted those numbers in past as our system detected them abusing our platform.
Me: Cool. Let's whitelist them, nothing much to worry here.
CTO: Floyd, you need to understand that 0.0001% of the customers are not receiving the SMS and the solution you are proposing is incorrect.
Me: Okay, what do you suggest?
CTO: We stop sending the SMS to all the customers.
Everyone on the call: 😨18 -
Currently watching a bunch of drunk Irish people try different whiskeys and drunkenly banter with one another, while myself sipping Irish whiskey. It’s nice.
Slàinte! 🥃6 -
ahaha. The white Slack emoji skintone is frowned upon at $work, and we're encouraged to use the yellow one instead to be "inclusive" -- but fear not, the brown ones are totally fine.
Gotta love woke companies.20 -
!rant
!!pride
I tried finding a gem that would give me a nice, simple diff between two hashes, and also report any missing keys between them. (In an effort to reduce the ridiculous number of update api calls sent out at work.)
I found a few gems that give way too complicated diffs, and they're all several hundred lines long. One of them even writes the diff out in freaking html with colors and everything. it's crazy. Several of the simpler ones don't even support nesting, and another only diffs strings. I found a few possibly-okay choices, but their output is crazy long, and they are none too short, either.
Also, only a few of them support missing keys (since hashes in Ruby return `nil` by default for non-defined keys), which would lead to false negatives.
So... I wrote my own.
It supports diffing anything with anything else, and recurses into anything enumerable. It also supports missing keys/indexes, mixed n-level nesting, missing branches, nil vs "nil" with obvious output, comparing mixed types, empty objects, etc. Returns a simple [a,b] diff array for simple objects, or for nested objects: a flat hash with full paths (like "[key][subkey][12][sub-subkey]") as top-level keys and the diff arrays as values. Tiny output. Took 36 lines and a little over an hour.
I'm pretty happy with myself. 😁6 -
bitchface micromanager keeps telling me i don't communicate enough, don't do enough, am not fast enough, etc.
So i've been sending her a weekly summary of ~50 bullet points of things I did during the week, issues encountered, workarounds found, research findings, who i talked to, etc. all organized by task with links to the tickets.
My work volume hasn't increased (probably decreased, actually) but it certainly looks like I'm doing a lot. probably because i am? but she doesn't listen during standup, so... victory by a hundred bullet points it is!28 -
Shopping for fridge with sister in law.
"Yeah that one is nice but it doesn't have an app"
"Why do you need an app for your fridge"
"I don't know, but this other fridge has an app, so I think if it doesn't have an app it's not that good"
"But it's very energy-efficient, silent and spacious. The one with the app is the same size, has a worse energy rating, is noisier and is more expensive as well"
"Yeah I know but if there's no extra features that's kind of boring"
"You are everything that's wrong with modern consumers"28 -
Current PM in the morning: "Startup flexibility! I'm at the beach chilling in the sun! I trust you can do standup without me! #tech-detox #positive-energy"
Current PM in the afternoon: "ARE ALL THE FUCKING TASKS FUCKING DONE YET? THERE ARE ONLY 9 DAYS LEFT IN THE FUCKING SPRINT! WHY HAS NOTHING BEEN DEPLOYED YET?"
This is why I hate wireless earbuds: You don't have a wire available for strangling coworkers.13 -
Code works.
Rename a variable for clarity.
Third-party lib behaves differently, breaks things.
Change the var names back.
Still broken.
Stash changes and checkout previous commit.
Everything works.
Diff with stash.
No notable changes. (some comments, ...)
Checkout branch again, pop stash.
Broken again.
... What?19 -
STUPID RAILS!
WHY CAN'T YOU JUST BUILD THE BLOODY QUERY WITHOUT DOING FANCY UNNECESSARY SUBQUERY SHIT?!
OR PUT THE LIMIT WHERE IT MAKES SENSE AND DOESN'T CAUSE MYSQL TO TELL YOU TO FUCK OFF?
WHY WHY WHY WHY WHY
THIS ISN'T HARD18 -
micromanager: "Quick and easy win! Please have this done in 2-3 days to start repairing your reputation"
ticket: "Scrap this gem, and implement your own external service wrapper using the new and vastly different Slack API!"
slack: "New API? Give me bearer tokens! Don't use that legacy url crap, wth"
prev dev: "Yeah idk what a bearer token is. Have the same url instead, and try writing it down so you don't forget it?"
Slack admin: "I can't give you access to the slack integration test app, even though it's for exactly this and three others have access already, including your (micro)manager."
Slack: "You can also <a>create a new slack app</a>!" -- link logs me into slack chat instead. After searching and finding a link elsewhere: doesn't let me.
Slack admin: "You want a new test slack app instead? Sure, build it the same as before so it isn't abuseable. No? Okay, plan a presentation for it and bring security along for a meeting on Friday and I'll think about it. I'm in some planning meetings until then."
asdfjkagel.
This job is endless delays, plus getting yelled at over the endless delays.
At least I can start on the code while I wait. Can't test anything for at least a week, though. =/17 -
Why do Android apps not clear their own irrelevant notifications?
For example: If I mark all notifs as read within the devRant app, or archive an email in Gmail, or read a message in the Jira app, why does it not clear the status bar notification?
Is there a good reason, or is it just often overlooked by developers to perform a cleanup action like this?6 -
Manager: THE SERVER IS DOWN THE SERVER IS DOWN!!!!
Dev: Ok I’ll look into it
*5 mins later
Dev: Wow these are really strange logs, it’s like config values are being changed all over the place while I’m looking at it
Manager: Well I figured while you were looking into it I’d go i to the server settings and change everything I could find in order to try and get the server back up again. Two sets of hands are better than one, Is it up yet???
Dev: …No.
Manager: I THOUGT YOU SAID YOU’D LOOK INTO THIS. I NEED ANSWERS NOW. WHAT IS TAKING SO LONG?!?!?
Dev: …13 -
Hi everyone, long time no see.
Today I want to tell you a story about Linux, and its acceptance on the desktop.
Long ago I found myself a girlfriend, a wonderful woman who is an engineer too but who couldn't be further from CS. For those in the know, she absolutely despises architects. She doesn't know the size units of computers, i.e. the multiples of the byte. Breaks cables on the regular, and so on. For all intents and purposes, she's a user. She has written some code for a college project before, but she is by no means a developer.
She has seen me using Linux quite passionately for the last year or so, and a few weeks ago she got so fed up with how Windows refused to work on both her computers (on one of them literally failing to run exe's, go figure), that she allowed me to reinstall both systems, with one of them being dualbooted Windows 10 + Linux.
The computer that runs Linux is not one she uses very often, but for gaming (The Sims) it's her platform to go. On it I installed Debian KDE, for the following reasons:
- It had to be stable as I didn't want another box to maintain.
- It had to be pretty OOTB, as first impressions are crucial.
- It had to be easy to use, given her skill level.
- It had to have a GUI abstraction to apt, the KDE team built Discover which looks gorgeous.
She had the following things to say about Linux, when she went to download The Sims from a torrent (I installed qBittorrent for her iirc).
"Linux is better, there's no need to download anything"
"Still figuring things out, but I'm liking it"
"I'm scared of using Windows again, it's so laggy"
"Linux works fine, I'm becoming a Linux user"
Which you can imagine, it filled me with pride. We've done it boys. We've built a superior system that even regular users can use, if the system is set up to be user-friendly.
There are a few gripes I still have, and pitfalls I want to address. There's still too many options, users can drown in the sheer amount of distro's to choose from. For us that's extremely important but they need to have a guide there. However, don't do remote administration for them! That's even worse than Microsoft's tracking! Whenever you install Linux on someone else's computer, don't be all about efficiency, they are coming from Windows and just want it to be easy to use. I use Mate myself, but it is not the thing I would recommend to others. In other words, put your own preferences aside in favor of objective usability. You're trying to sell people on a product, not to impose your own point of view. Dualboot with Windows is fine, gaming still sucks on Linux for the most part. Lots of people don't have their games on Steam. CAD software and such is still nonexistent (OpenSCAD is very interesting but don't tell me it's user-friendly). People are familiar with Windows. If you were to be swimming for the first time in the deep water, would you go without aids? I don't think so.
So, Linux can be shown and be actually usable by regular people. Just pitch it in the right way.11