Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "hmm"
Boss: Our customer's data is not syncing with XYZ service anynmore!
Me: Ok let me check. Did the tokens not refresh? Hmm the tokens are refreshing fine but the API still says that we do not have permissions. The scopes are fine too. I'll use our test account... its... cancelled? Hey boss, why is our XYZ account cancelled?
Boss: Oh, "I haven’t paid since I didn’t think we needed it" (ad verbatim)
Interviewer: "Using this 2D array and calculate.."
Me: "This input isn't a 2D array though. Do you want me to parse or construct a 2D array then.."
"It is a 2D array."
"Uh.. ok..and if it's not what if we.."
"Look my notes say you must use this input, and treat it as a 2D Array"
"What if I wrote a function for a 2D array similar to this input, but actually a 2D array"
"You must use only the input provided"
Me: does rain dance code for 20 minutes.
Interviewer: "hmm, maybe it wasn't a 2D Array. I like your efforts but that's all the time we have today."
I promise I can code, sometimes. It does help to have correct questions to give correct answers.1
My most f*cked up client process I ever had to deal with:
I seriously asked if they were joking on me… Wasn't the case.
The process was: Get E-Mail, print out, scan, archive (digitally).
Nobody could explain to me the necessity for this bullsh*t.
"Hmm... Kinda always worked this way, I guess"
The client was a big company. My coworker aged 5x faster during that project. I swear to god, I'm not joking.16
Worst meeting. Hmm..
Embarrassment wise maybe the one where my boss called me the queen of porn in front of everyone. Yes, classy AF. (Just have to know him to know his sense of humor I guess).
Most cringe worthy meeting was probably when our out of state national director came in and basically told us he has no clue what we do nor does her care to learn. We brought up salaries to him as well as we're in the bottom 8th percentile for the industry in our area with HUMONGOUS work loads, like 20 sites per developer at once. This is a huge multi-million dollar corporation, mind you. We told him some of us have to have 3 jobs to survive and he basically said well you're an at will employee so there's the door. He also took phone calls and sent emails during my one on one meeting which we never finished even though he promised to. But he bought us a shirt, so you know, it's all cool. 🙄11
there is another team in our company that has its site in the US. we haven't been working with them for very long, but we do have some common topics on which we work loosely together and exchange some information from time to time. i have met the guys only once in person when they visited Germany.
PM asked one of the devs of this team if he could move to another time zone, so it would be easier for us in Europe to arrange meetings with him.
move to another timezone. within the US. to the other side of the country where there's noone he knows. also, no site of ours.
only so it's easier for PM to arrange fucking meetings with him.
can you believe that? i cringed so hard when PM told me about that. (of course the guy refused, shocked pikachu)
and when he thought aloud that maybe he should ask the guy to move to Germany, i told him that the colleague wouldn't do that and that this was a terrible idea. he was really surprised and asked "hmm, you think?"
dafuq, hell yeah i think?!3
Suddenly some some strange noice from the kitchen... Hmm my wife's laptop sounds like it plays some TV series but no one is logged in.
Conclusion: windows update restarted her computer while it was paused on Netflix, after reboot chrome opens to latest url where it autoplays trailers.
I need a new 'main' language to do all my projects in as java is kind of grinding away at my psyche.
Golang I liked quite a lot when I used it for my job a year ago, I'll give that a try..
Golang installed and up and working fine.
Oh, I know lets see if there are GLFW bindings for golang. And sure there are lets go!
Oh I need gcc and mingwex + mingw32 which I will acquire through cygwin.
hmm.. mingwex + mingw32 not found and my drive is almost full. I'll reinstall on my D:\ drive before continuing troubleshooting.
> Delete C:\Cygwin Access denied.
> cmd rmdir c:\test /s /q Access denied.
> Change permissions Access denied.
No problem I just don't own this object!
> Change to be the 'object owner' Success!
> Change permissions Success!
> Delete C:\Cygwin Access denied.
> cmd rmdir c:\test /s /q Access denied.
> takeown /F C:\Cygwin /A /R /D Y Success!
> cmd rmdir c:\test /s /q Access denied.
At this point it would be more efficient to manually open up my ssd, and using a fridge magnet change every single bit to be exactly what I want it to be.
Or install linux.7
meeting with PM, 1:1
me: well, to be honest, i think there is also some room for improvement concerning communication in our meetings. the discussion culture in our meetings could be more open.
PM: what do you mean? i don't know what you're talking about.
me: well, i feel sometimes that in meetings, you overly challenge what colleagues suggest. on the other hand, it's really hard to argue against what you are saying. what you say is often like engraved into stone and it is hard to argue against that, but the next day you might have changed your mind again and then things are different, but engraved into stone again.
PM: hmm. can you give me some more concrete example?
me: well... (gives some examples) it's just that it would be nice if you would listen more to what people say in meetings and try to understand what they actually mean or want to say, instead of saying "nah, that's not how we do it" or "no, that's wrong"... just.. well, have more trust in our skills, try to find out what people mean before you discard what you think they said... a bit more of appreciation and openness.
PM: oh, i can tell you, i'm the MOST open manager in this whole company.
PM: but anyway, i will think about it.
me: well... okay. also i see there are some challenges within our team concerning intercultural communication. i mean, communication between Germans and Indians is in general a bit problematic in our company, and maybe it is a good idea to have some workshop together concerning intercultural competences... i think we could benefit from that. (what i actually meant is, these problems exist, but currently i see them more on his side or between him and Indian colleagues, because e.g. he tends to harshly criticize people in daily standups, and if we "direct" Germans already feel affronted by his behavior, how must Indian guys feel about it? in fact, 2 Indian devs already left the project. also communication doesn't really work well, in a way that there's often a great mismatch between his expectations and what Indian devs actually think they have to do)
PM: i can tell you, i really understand our Indian colleagues, i really know how to work with them. also, their working style has greatly improved since project start. (which doesn't feel quite right after he totally ripped apart the work of one guy in the last sprint review meeting)
of course, that's not the whole conversation, but it's kind of a symptomatic example for the whole situation...11
The joys of using overpriced enterprise software...
Me: Hey, I tried connect to the server, but I'm getting a "connection refused" error. Is it really running.
Other: hmm, I'll check
Other: The host restarted, but I'll get the software up again, no problemo
Other: I started the server again, but there's, but it's throwing errors while initializing. Time to write customer support
And then you get that premium customer support that think we don't know how to use their software at times. And once they realize we do, they don't know much better either. And once they realize we know how to use it there are 3 possibilities:
* They need our help to debug stuff before knowing what is going on
* They need to release a new version and accidentally break backwards compatibility and create enough work for us to burn through the clients contact hours
* They provide helpful advice (secret ending)
These fuck don't even release a proper changelog for their software nor their manuals.1
so i had the "miscommunication" meeting with PM today. he criticized me for "not following his orders", allegedly having worked on stuff during this sprint that did not help fulfill his sprint goal, and that i should have aligned my work with him. i didn't even realize this exact goal existed specifically for my user story (even though it was at least mentioned with one single word in story description, must have read over it). however, during the whole fucking sprint, he never mentioned a single time i should align with him. every daily i'm explaining what i'm going to do, every day he sees subtasks that i created for this story, and he never disagreed or mentioned this topic, so i assumed i'm on track. and now suddenly, when sprint is over, he blames me for the misalignment?
he also criticized me for having said something rude to him during a team meeting, but he couldn't rephrase or specify what i had said, he couldn't give any details at all, and also i couldn't understand or remember what he meant. what shall i respond to that?🤷♀️
also, aligning my work with that of a colleague and brainstorming with him about how our API could look like for our stakeholders was "not on track / following his orders" for him, even though i had announced it in the daily and he hadn't disagreed.
either this guy has alzheimer's or he has a down on me, dunno what to make out of all that.
and then he mentions i appear "somewhat aggressive" to him.
hmm weird, why should someone become aggressive when they have to deal with this bullshit all the time 🤦♀️12
how often does it happen that you have to prevent terrible architectural decisions from being made, because people who are in charge but obviously have no clue, make really weird suggestions and are really confident that this is a good idea?
PM: so please analyze functionalities X with dev Y, since module Y that dev Y develops shall provide these functionalities.
me: as i said yesterday, module Y will use my module X and shouldn't care about how this is going to be implemented.
PM: yeah, but module Y shall be able to... (lists some functionalities)
me: yes, that's what i'm currently working on in module X. my current state of the API can be used in a way that... (lists different low level functions and how a combination of them can be used to provide these functionalities)
PM: okay, hmm... i just realize that module Y will actually be a user of module X...
i always thought that was crystal clear?? 🤦♀️10
me: i looked into the customer dev's project and even though it's C#, i can use it as a source of inspiration for my own C++ library.
PM: okay, maybe we can even still use it, so that you use a C# dll with your C++ code.
other colleague: that's a bad idea. it can already be a challenge to use unmanaged c++ in dotnet, but the other way round it's even more difficult. C# and C++ are languages that behave quite differently and it will be hard to implement a correctly working interface.
PM: okay. well... then please analyze this project's complexity in terms of LOC and create a class diagram, so we get an idea of how complex it is.
PM: hmm... maybe we should split this topic. since dev x will also rely on your library, analyze this project together with him, each of you look at another part of the classes.
me: that's.... i think that's a bad idea. implementing this functionality in this library is my job, not of dev X. he won't be involved in implementing any of the funcionalities and for him, it shouldn't matter how this works.
PM: yeah, but since we are prototyping, maybe we should just violate the "separation of concerns" rule.
me (internally): (ノಠ益ಠ)ノ彡┻━┻
in the end i could convince him to do it my way, but for fuck's sake... when was the last time he actually succesfully implemented something? 🤦♀️
Things that are no big deal but piss me off endlessly:
People who can't mute their mic in online meetings.
We don't need to hear your breathing, the constant "hmm"s, or the conversation of your room mate who doesn't use a headset and instead yells into the telephone on speaker mode all the time2
So, I've had a personal project going for a couple of years now. It's one of those "I think this could be the billion-dollar idea" things. But I suffer from the typical "it's not PERFECT, so let's start again!" mentality, and the "hmm, I'm not sure I like that technology choice, so let's start again!" mentality.
Or, at least, I DID until 3-4 months ago.
I made the decision that I was going to charge ahead with it even if I started having second thoughts along the way. But, at the same time, I made the decision that I was going to rely on as little external technology as possible. Simplicity was going to be the key guiding light and if I couldn't truly justify bringing a given technology into the mix, it'd stay out.
That means that when I built the front end, I would go with plain HTML/CSS/JS... you know, just like I did 20+ years ago... and when I built the back end, I'd minimize the libraries I used as much as possible (though I allowed myself a bit more flexibility on the back end because that seems to be where there's less issues generally). Similarly, any choice I made I wanted to have little to no additional tooling required.
So, given this is a webapp with a Node back-end, I had some decisions to make.
On the back end, I decided to go with Express. Previously, I had written all the server code myself from "first principles", so I effectively built my own version of Express in other words. And you know what? It worked fine! It wasn't particularly hard, the code wasn't especially bad, and it worked. So, I considered re-using that code from the previous iteration, but I ultimately decided that Express brings enough value - more specifically all the middleware available for it - to justify going with it. I also stuck with NeDB for my data storage needs since that was aces all along (though I did switch to nedb-promises instead of writing my own async/await wrapper around it as I had previously done).
What I DIDN'T do though is go with TypeScript. In previous versions, I had. And, hey, it worked fine. TS of course brings some value, but having to have a compile step in it goes against my "as little additional tooling as possible" mantra, and the value it brings I find to be dubious when there's just one developer. As it stands, my "tooling" amounts to a few very simple JS scripts run with NPM. It's very simple, and that was my big goal: simplicity.
On the front end, I of course had to choose a framework first. React is fine, Angular is horrid, Vue, Svelte, others are okay. But I didn't want to bother with any of that because I dislike the level of abstraction they bring. But I also didn't want to be building my own widget library. I've done that before and it takes a lot of time and effort to do it well. So, after looking at many different options, I settled on Webix. I'm a fan of that library because it has a JS-centric approach. There's no JSX-like intermediate format, no build step involved, it's just straight, simple JS, and it's powerful and looks pretty good. Perfect for my needs. For one specific capability I did allow myself to bring in AnimeJS and ThreeJS. That's it though, no other dependencies (well, at first, I was using Axios because it was comfortable, but I've since migrated to plain old fetch). And no Webpack, no bundling at all, in fact. I dynamically load resources, which effectively is code-splitting, and I have some NPM scripts to do minification for a production build, but otherwise the code that runs in the browser is what I actually wrote, unlike using a framework.
So, what's the point of this whole rant?
The point is that I've made more progress in these last few months than I did the previous several years, and the experience has been SO much better!
All the tools and dependencies we tend to use these days, by and large, I think get in the way. Oh, to be sure, they have their own benefits, I'm not denying that... but I'm not at all convinced those benefits outweighs the time lost configuring this tool or that, fixing breakages caused by dependency updates, dealing with obtuse errors spit out by code I didn't write, going from the code in the browser to the actual source code to get anywhere when debugging, parsing crappy documentation, and just generally having the project be so much more complex and difficult to reason about. It's cognitive overload.
I've been doing this professionaly for a LONG time, I've seen so many fads come and go. The one thing I think we've lost along the way is the idea that simplicity leads to the best outcomes, and simplicity doesn't automatically mean you write less code, doesn't mean you cede responsibility for various things to third parties. Those things aren't automatically bad, but they CAN be, and I think more than we realize. We get wrapped up in "what everyone else is doing", we don't stop to question the "best practices", we just blindly follow.
I'm done with that, and my project is better for it!
HR declared day as holiday.
You Resume work next day and Git commits channel had 400 unread messages,
Silently telling at you like - hmm lazy lots get back to work!
To the hard workers You could’ve waited to push your commits the next day brother, we know you don’t like holidays like we do.
More and more, I am getting frustrated/depressed from the attitude of our customers who complain, moan and get angry about issues in their infrastructure, while at the same time, refusing to pay more so the issues could be mitigated.
Like, a client's angry with us today for having one of their non-production-critical databases inaccessible for... Hmm... About 8 hours now (So a whole workday).
Like... I get it, some of your employees couldn't work with it offline, but like... What the hell do we do? You keep data from as far back as several years ago in there, without partitioning, without exports, in a mix of innodb and myisam, so when the DB crashes, and its replication has to be reset from zero, reimporting all the data takes hours upon hours, and importing .sql files just takes time.
Or another client who got angry when their app fell out of the internet, cuz one of their myisam-based log tables crashed, and had to be repaired, with data spanning several years back, meaning it took hours to fix...
The more I work with these "basic" and "simple" infrastructure designs that is *not* redundant, or HA, the more I wonder -- How do the big names out there do it? How do you design systems with fault tolerance so a single DB table crash doesn't lead to the whole app getting inaccessible?
We have... One, exactly one, client, who uses MariaDB with Gallera, and that cluster is *amazing*, it just keeps chugging along, without a care in the world. But it cost them quite a lot, as they had to buy 3 DB servers, instead of 1...1
Thats top notch design.
All actions happening on the page go to one endpoint. Removing old trusted computers, changing the password, changing 2FA, you name it.
Now if you want to remove all old trusted devices, you cannot remove all at once, there is no button for it. So you click one after the other. And then it stops working. Ok, then do the normal password rotation. Hmm, button has a loading spinner and then nothing happens.
Looking into the browser console:
- All requests go to /myaccount/security/graphql
- All requests get a 429 Too many requests
- Even if you just click a panel, it tracks the action to the graphql endpoint. Or at least tries to because even that gets shot down with a 429
Pretty dumb, eh? Must be some small shitty website. It's not. It's fucking paypal.1
Programming at a job to me is no longer creating something fun and valuable; it's more like figuring out why shit doesn't work, con-stant-ly.
It' s like coming in to your desk every morning, dreading the day because there's yesterday's shit to fix. "Hmm, what shall today be like? Oh yes, troubleshooting why my database model doesn't work, redesign it completely and break my mind over db details. The next day? Having to redesign my classes to implement new patterns because apparently the current design isn't good enough." Even if you work on new deliverables, that's just new problems in disguise anyway.
Pleasant? Not really.
Okay, I have a desktop and a laptop. I don't think that's surprising.
I do sync the contents of both via git. Also not surprising.
But I thought, hmm, I hate having to do temporary git commits. Stuff like
git add .
git commit -m temp
Just so I can remove it alter via
git reset HEAD^
I hate it because it forces me to force push. So, how do I sync stuff I do not want to commit yet?
Well, I just set up an instance of owncloud. Was easy. 20 minutes and everything is running. Can recommend. But...
For some reason it doesn't work. It syncs stuff just fine... But it also syncs my .git directory... I thought it wouldn't be a problem.
Saves me a pull. Don't have to pull what's synced, right? Also setting up new projects should be terribly simple. Just add it normally. So, git just versions and does pipelines. And I copy everything inside the git directory over.
Also allows me to have more private .git/info/exclude files and hooks...
But for some reason... everything is synced. Dot-files are being synced as well. Everything works... But running git status on one side tells me everything is commited... Doing it on the other side it tells me there are new files.
How is that possible??? I kind of expected that even a branch checkout would be synced... Was curious if that would lead to issues, but I didn't expect it just not recognizing changes. Git doesn't hold projects in memory, does it? Nah, that doesn't make any sense. So, why does git status disagree? Git log is identical... Git status is not...
It makes no bloody sense.11
Caused by: UcanaccessSQLException: UCAExc:::4.x.x external routine invocation exception: null value not allowed
Hmm.. Who could've thought `where rows_numbered.rownum = grouped.item_index` would ever yield a null...
Sometimes I can be such an idiot6
That feeling when you are on call and a report comes in of a feature not working correctly for a system you know nothing about. Sure, I’ll dig in a bit and troubleshoot before throwing over the fence. Hmm, feature was never coded - not in a shelve-set or branch…just never done. Was supposed to be done over a year ago I’m told. Humanity is too sick to survive.1
I hate debating on if a question is too stupid to ask stackoverflow.
But I've already spent 20 minutes searching for the solution myself and I've come to the conclusion either I don't know the right thing to search, or I don't understand what I'm really looking for.
Both of which lead me to stackoverflow. Hmm 🤔🤔1