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
Search - "practisesafehex"
-
Fixing a parents iPhone, episode 1.
Problem: "Whatsapp is gone off my phone"
Debugging:
Me: *unlocks phone and sees whatsapp*, it's right here.
Mam: no, I no that I can't see my messages.
Me: ok, that is definitely not what "whatsapp is gone off my phone means".
*opens whatsapp*
*inside add contact screen*
App seems ok, your trying to add a contact?
Mam: that's a problem, whenever I open it I only see that page.
Me: *taps cancel button with shocked face*
Mam: omg there's my messages, how did you do that?
Me: ... ... ... I tapped the very easy to see, large cancel button in the top right hand corner.
Mam: but why was it opened there?
Me: *looks at opened message from unknown number*
If I was to hazard a guess, now stay with me on this one as it's a bit complex. I think ... I THINK ... you clicked the "add to contacts" button on the screen in front of you.
I am suspicious of one thing though.
Mam: what's that?
Me: how you managed to click the add contacts button, and when brought to the add contacts screen, you assume the app is broken.
Mam: oh will you **** off you sarcastic little ****. Thank you very much.
Me: no prob, 4 year computer science course put to great use.20 -
My morning:
Me: Why did you just delete the failing unit tests?
Intern: I debugged it for a while and found one of the other developers broke it with his recent changes. I couldn't fix it.
Me: Did you let him know he broke it?
Intern: No.
Me: So you just deleted it and decided to pretend the feature isn't broken?
Intern: ... No ... I mean ... well you told us yesterday we needed to have all the tests passing.
(I NEED a stress ball people)30 -
Best Valentine’s Day present ever! She knows me so well. This will be VERY useful in work.
Thanks @Number0, love you10 -
Good Morning!, its time for practiseSafeHex's most incompetent co-worker!
Todays contestant is a very special one.
*sitcom audience: WHY?*
Glad you asked, you see if you were to look at his linkedin profile, you would see a job title unlike any you've seen before.
*sitcom audience oooooooohhhhhh*
were not talking software developer, engineer, tech lead, designer, CTO, CEO or anything like that, No No our new entrant "G" surpasses all of those with the title ..... "Software extraordinaire".
*sitcom audience laughs hysterically*
I KNOW!, wtf does that even mean! as a previous dev-ranter pointed out does this mean he IS quality code? I'd say he's more like a trash can ... where his code belongs
*ba dum tsssss*
Ok ok, lets get on with the show, heres some reasons why "G" is on the show:
One of G's tasks was to build an analytics gathering library for iOS, similar to google analytics where you track pages and events (we couldn't use google's). G was SO good at this job he implemented 2 features we didn't even ask for:
- If the library was unable to load its config file (for any reason) it would throw an uncatchable system integrity error, crashing the app.
- If anything was passed into any of the functions that wasn't expected (null, empty array etc.) it would crash the app as it was "more efficient" to not do any sanity checks inside the library.
This caused a lot of issues as some of the data needed to come from the clients server. The day we launched the app, within the first 3 hours we had over 40k crash logs and a VERY angry client.
Now, what makes this story important is not the bugs themselves, come on how many times have we all done something stupid? No the issue here was G defended all of this as the right thing to do!
.. and no he wasn't stoned or drunk!
G claimed if he couldn't get the right settings / params he wouldn't be able to track the event and then our CEO wouldn't have our usage data. To which I replied:
"So your solution was to not give the client an app instead? ... which also doesn't give the CEO his data".
He got very angry and asked me "what would you do then?". I offered a solution something like why not have a default tag for "error" or "unknown" where if theres an issue, we send up whatever we have, plus the file name and store it somewhere else. I was told I was being ridiculous as it wasn't built to track anything like that and that would never work ... his solution? ... pull the library out of the app and forget it.
... once again giving everyone no data.
G later moved onto another cross-platform style project. Backend team were particularly unhappy as they got no spec of what needed to be done. All they knew was it was a single endpoint dealing with very complex model. There was no Java classes, super classes, abstract classes or even interfaces, just this huge chunk of mocked data. So myself and the lead sat down with him, and asked where the interfaces for the backend where, or designs / architecture for them etc.
His response, to this day frightens me ... not makes me angry, not bewilders me ... scares the living shit out of me that people like this exist in the world and have successful careers.
G: "hhhmmm, I know how to build an interface, but i've never understood them ... Like lets say I have an interface, what now? how does that help me in any way? I can't physically use it, does it not just use up time building it for no reason?"
us: "... ... how are the backend team suppose to understand the model, its types, integrate it into the other systems?"
G: "Can I not just tell them and they can write it down?"
**
I'll just pause here for a moment, as you'll likely need to read that again out of sheer disbelief
**
I've never seen someone die inside the way the lead did. He started a syllable and his face just dropped, eyes glazed over and he instantly lost all the will to live. He replied:
" wel ............... it doesn't matter ... its not important ... I have to go, good luck with the project"
*killed the screen share and left the room*
now I know you are all dying in suspense to know what happened to that project, I can drop the shocking bombshell that it was in fact cancelled. Thankfully only ~350 man hours were spent on it
... yep, not a typo.
G's crowning achievement however will go down in history. VERY long story short, backend got deployed to the server and EVERYTHING broke. Lead investigated, found mistakes and config issues on every second line, load balancer wasn't even starting up. When asked had this been tested before it was deployed:
G: "Yeah I tested it on my machine, it worked fine"
lead: "... and on the server?"
G: "no, my machine will do the same thing"
lead: "do you have a load balancer and multiple VM's?"
G: "no, but Java is Java"
... and with that its time to end todays episode. Will G be our most incompetent? ... maybe.
Tune in later for more practiceSafeHex's most incompetent co-worker!!!31 -
wk87 is a dangerous topic for me, i've been through a lot. I apologise for what I am about to inflict on this network over the coming week.
Most incompetent co-worker, candidate 1, "T".
T was an embedded C developer who talked openly about how he's been writing code since he was 14, knew all the C system libraries and functions like the back of his hand. For the most part, he did ... but not how to actually use them, as (based on his shocking ... well everything) he was inflicted by some sort of brain disorder not yet fully understood by medical science. Some highlights:
- Myself and the CTO spent 4 days teaching him what a circle buffer was and how to build one.
- His final circle buffer implementation had about 3 times as much code as he actually needed.
- When the code was running too slowly on the device, we didn't try find any performance improvements, or debug anything to see if there was anything taking too long. No not with T, T immediately blamed TCP for being inefficient.
- After he left we found a file called "TCP-Light" in his projects folder.
- He accused the CTO of having "violent tendencies" because he was playing with a marker tossing it up in the air and catching it.
- He once managed to leave his bank statements, jumper and TROUSERS in the bathroom and didn't realise until a building wide email went out.
- He once .... no hang on, seriously his fucking trousers, how?
- He accused us all of being fascists because we gave out to him for not driving with his glasses, despite the fact his license says he needs to (blind as a bat).
... why were his trousers off in the first place? and how do you forget ... or miss the pile of clothes and letters in a small bathroom.
Moving on, eventually he was fired, but the most depressing thing of all about T, is that he might not even be top of my list.
Tune in later for more practiceSafeHex's most incompetent co-worker!!!11 -
Its Friday, you all know what that means! ... Its results day for practiseSafeHex's most incompetent co-worker!!!
*audience: wwwwwwooooooooo!!!!*
We've had a bewildering array of candidates, lets remind ourselves:
- a psychopath that genuinely scared me a little
- a CEO I would take pleasure seeing in pain
- a pothead who mistook me for his drug dealer
- an unbelievable idiot
- an arrogant idiot obsessed with strings
Tough competition, but there can be only one ... *drum roll* ... the winner is ... none of them!
*audience: GASP!*
*audience member: what?*
*audience member: no way!*
*audience member: your fucking kidding me!*
Sir calm down! this is a day time show, no need for that ... let me explain, there is a winner ... but we've kept him till last and for a good reason
*audience: ooooohhhhh*
You see our final contestant and ultimate winner of this series is our good old friend "C", taking the letters of each of our previous contestants, that spells TRAGIC which is the only word to explain C.
*audience: laughs*
Oh I assure you its no laughing matter. C was with us for 6 whole months ... 6 excruciatingly painful months.
Backstory:
We needed someone with frontend, backend and experience with IoT devices, or raspberry PI's. We didn't think we'd get it all, but in walked an interviewee with web development experience, a tiny bit of Angular and his masters project was building a robot device that would change LED's depending on your facial expressions. PERFECT!!!
... oh to have a time machine
Working with C:
- He never actually did the tutorials I first set him on for Node.js and Angular 2+ because they were "too boring". I didn't find this out until some time later.
- The first project I had him work on was a small dashboard and backend, but he decided to use Angular 1 and a different database than what we were using because "for me, these are easier".
- He called that project done without testing / deploying it in the cloud, despite that being part of the ticket, because he didn't know how. Rather than tell or ask anyone ... he just didn't do it and moved on.
- As part of his first tech review I had to explain to him why he should be using if / else, rather than just if's.
- Despite his past experience building server applications and dashboards (4 years!), he never heard of a websocket, and it took a considerable amount of time to explain.
- When he used a node module to open a server socket, he sat staring at me like a deer caught in headlights completely unaware of how to use / test it was working. I again had to explain it and ultimately test it for him with a command line client.
- He didn't understand the need to leave logging inside an application to report errors. Because he used to ... I shit you not ... drive to his customers, plug into their server and debug their application using a debugger.
... props for using a debugger, but fuck me.
- Once, after an entire 2 days of tapping me on the shoulder every 15 mins for questions / issues, I had to stop and ask:
Me: "Have you googled it?"
C: "... eh, no"
Me: "can I ask why?"
C: "well, for me, I only google for something I don't know"
Me: "... well do you know what this error message means?"
C: "ah good point, i'll try this time"
... maybe he was A's stoner buddy?
- He burned through our free cloud usage allowance for a month, after 1 day, meaning he couldn't test anything else under his account. He left an application running, broadcasting a lot of data. Turns out the on / off button on the dashboard only worked for "on". He had been killing his terminal locally and didn't know how to "ctrl + c a cloud app" ... so left it running. His intention was to restart the app every time you are done using it ... but forgot.
- His issue with the previous one ... not any of his countless mistakes, not the lack of even trying to make the button work, no, no, not for C. C's issue is the cloud is "shit" for giving us such little allowances. (for the record in a month I had never used more than 5%).
- I had to explain environment variables and why they are necessary for passwords and tokens etc. He didn't know it wasn't ok to commit these into GitHub.
- At his project meetups with partners I had to repeatedly ask him to stop googling gifs and pay attention to the talks.
- He complained that we don't have 3 hour lunch breaks like his last place.
- He once copied and pasted the same function 450 times into a file as a load test ... are loops too mainstream nowadays?
You see C is our winner, because after 6 painful months (companies internal process / requirements) he actually achieved nothing. I really mean that, nothing. Every thing was so broken, so insecure / wide open, built without any kind of common sense or standards I had to delete it all and start again ... it took me 2 weeks.
I hope you've all enjoyed this series and will join me in praying for the return of my sanity ... I do miss it a lot.
Yours truly,
practiseSafeHex20 -
Dev: this task is done, can I put it in review and do something else?
Me: sure, of course.
Dev: cool, just be aware I'll make some changes to it later.
Me: ... wait, then it's not done.
Dev: no it is, I just need to re-read it and make some changes.
Me: yeah, so it will be done when those changes are made.
Dev: but I don't know what those changes are.
Me: ... I get that ... but ... ok I'm extremely confused. Why do you think it's done.
Dev: because I've written everything I need to and I'm happy with it.
Me: ok so why do you want to make changes.
Dev: I don't.
Me: ... ... ... ... you ... you are really not being clear. If you don't want to make changes, and you are happy with it, why are you planning on making changes later ... after marking the task as done.
Dev: well if I re-read it and see something I don't like, I would like to change it.
Me: ok, so re-read it as many times as you like and make as many changes as you like. But don't mark it as done until it is done.
Dev: but it is done.
Me: no it's not.
Dev: it is, look.
Me: ... yeah looks ok at a quick glance.
Dev: ok so I can mark it as done?
Me: are you going to make more changes?
Dev: yes.
Me: then no.
Dev: why?
Me: BECAUSE ITS NOT DONE.
Dev: ok maybe I'm not explaining it clearly.
Me: ... we can both agree on that. Ok so to summarise, we don't mark something as done until we have stopped touching it. We don't half finish something and say it's done and comeback to it later. We mark it as done when we are happy with i.....
Dev: but I am happ.....
Me: *raises hand* I repeat, if it's done, we lock it away and stop touching it. If someone reads it and complains, we can come back to it with a new ticket. But it's not done until we think we are ready to send it on.
Dev: I am ready to send it, I just may want to change it.
Me: ... ... ... ... ... due to a new policy implemented just now, we are only allowed to send 1 email to a person each week. So unfortunately we can only send on 1 copy. So when you have that 1 copy, let me know.
Dev: ok, let me re-read it a few more times then.
Me: there you go.32 -
Working with a team of interns, pointed out a bunch of unit tests are failing, they said they would take care of it.
10 mins later they opened a pull request to delete the tests that were failing.
fml, fml, fml, fml ... and ... oh yeah fml10 -
PM: You know that screen that pops up at the start of the app asking for permission to access health data?
Me: Yeah the iOS HealthKit permission screen. What about it?
PM: Can you take that out. I don't think people are going to agree to it. I want people to use the app.
Me: Well we can't do that, apple says if we want to use HealthKit we have to ask for permission. We shouldn't be touching that data without permission anyway.
PM: Oh no permission is fine I get that, but is it not implied by downloading the app, its clearly a health app. I really don't want people to download it and then uninstall it because they don't like this.
Me: Not really, not everyone will know what data is needed, some of it might be sensitive to them.
PM: Nah I don't buy into that. I asked 5 of my friends on the golf course at the weekend and 3 of them said they wouldn't agree to it, thats 60% of our user base, we can't have that.
Me: ... ok, well I don't agree that your 5 friends is a fair sample to judge the whole world by, either way we have no choice.
Pm: No this isn't going to fly, can we not build our own HealthKit that doesn't have this kind of permission screen? Maybe we could start our own, and invite our partners to use it?
Me: ... no
Pm: why not? We'll have legal draw up something we put in the terms and conditions.
Me: ... it will take months to build for all the different types of devices we have, if they even let us get access to them, and then we will have a different standard to everyone else.
Pm: ... no your not seeing the big picture, i'll run the idea up the ladder.
**It was approved up the ladder, and subsequently cancelled when they realised the scale of the work involved which is both a "thank god" and a "wtf" moment**7 -
Me: *sends email 45 minutes before a meeting*.
Boss: *20 mins into meeting*, any updates about the issues found yesterday?
Me: Yep I sent an email with an update on everything.
Boss: ok great, *shares screen*, *opens email*.
Ok want to walk us through it?
Me: ...... walk through my email?
Boss: Yeah we have everyone here in the meeting.
Me: ...... yeah I included all of them on the email.
Boss: Right, but it would be good to go through it for everyone’s benefit.
Me: *Reads email word for word, from the screen share*
I will now refer to him from this day forth as “The Time Vampire”.20 -
Current mood:
- Referred to manager as "Mein fuhrer" to a colleague in slack.
- Reading an email from a recruiter.13 -
Recruiter: Hi, i'm recruiting for xyz, your profile looks like a great fit. Would you be interested in discussing further?
Me: Hi, your company website says you only have an office location in Berlin. I've marked my profile as not interested in relocation, only interested in jobs in my country and said the same in my description. Are you expanding to my country?
Recruiter: You are correct, this role is based in AMAZING Berlin. Are you interested in relocating?
Me:19 -
For this episode of practiseSafeHex's most incompetent co-worker were going to move past developers and go straight to a CEO.
*sitcom audience oooooohhhhhhh*
I know! , always risky, everyone has a bad story, but lets try bring it home. Here we go, Most incompetent co-worker, candidate 2, "R".
R was ... now how do I say this ... R was a special kind of Bastard. A perfect blend of impatient, arrogant, a dickhead and to borrow a phrase from family guy "below the line of mental retardation".
I've actually spoken about him recently here: https://devrant.com/rants/1141873/...
I won't bother duplicating the content here, but its worth a read.
Some of the other highlights of R include:
- Not understanding that my first demo was UI / Frontend only (despite frequent explanations). I didn't slack off for the next 2 weeks, I was busy making all those buttons actually do stuff and connect to the server. Shockingly "Test 1", "Test 2" and "Lorem ipsum" wasn't our content.
- He once asked how long a bunch of tasks was going to take, I told him 2 weeks and he gave me 2 and a half days. He pulled me into a meeting the next week to see where it all was, and I literally sat there saying "I asked for 2 weeks" over and over until he shut up.
- R's favourite phrase was "when I was a developer", typically followed by some sort of insult, forever labelling him "asshole" by everyone who has ever worked for him.
- When apple launched iOS 7 and changed the UI and the methods you could use, he refused to invest the time in upgrading to iOS 7, but demanded the app look like an iOS 7 app. No amount of "There is no method to access the status bar in iOS 6" could make him comprehend the issue at hand.
- The worst was when I was dealing with an issue to do with 64bit being introduced (which I tried to explain ... christ give me strength). When another dev fixed a similar but unrelated issue he stood up in front of the office and said loudly "pfft practiseSafeHex tried to tell me this was something to do with 64bit, which made absolutely no sense, guess he doesn't know what he's talking about"
Thankfully I handed in my notice ... after less than 2 months, making in abundantly clear why. Will R make it to the top of the list of most incompetent?
Tune in later for more practiceSafeHex's most incompetent co-worker!!!12 -
IT: Hi, how can I help?
User: Hi, I can't get onto the wifi / internet, my computer says "No Signal".
IT: Hm, we don't have wifi, your on a cable, what exactly is saying no signal?
User: Its just on the screen here.
IT: No but where, are you inside a browser, or is it a popup down the bottom corner?
User: No I haven't got that far yet, it just says no signal on a black screen, then it flashes and says no signal in another position.
IT: ...... did you turn on your computer after turning on the monitor ... thats the screen saying no signal from the computer.
User: ah yep, thats it, thanks!3 -
Welcome back to practiseSafeHex's most incompetent co-worker!
*sitcom audience cheers*
Thank you, thank you. Ok so far we've had a developer from hell and a CEO who shot to fame for being the first rectum to receive a passport and be given a job.
2 pretty strong entrants if you ask me. But its time to slow it down and make sure everyone gets a fair chance. Its not all just about the psychopaths and assholes, what about the general weirdo's and the stoners who just made life awkward?
So here we go, Most incompetent co-worker, candidate 3, "A".
"A" was a bit of an unusual developer, despite having a few years experience in his home country, he applied for an unpaid internship to come work with us ... probably should have rang alarm bells but hey we were all young and dumb back then.
I had to say I felt very bad for A, as he suffered from 2 very serious, and job crippling personal conditions / problems
- Email induced panic attacks
- Extreme multifaceted attachment disorder (also known in layman terms as "get the fuck away from me, and do your job" syndrome)
While he never openly discussed these conditions, it was clear from working with him, that he had gone undiagnosed for years. Every time an email would come in no matter how simple ... even the services team asking to confirm his staff ID, would send him into a panic causing him to drop everything he was doing and like a homing missile find me anywhere in the building and ask me what to do.
Actually "A" also suffered from a debilitating literacy issue too, leaving him completely unable to read our internal wiki's himself. Every week we had to follow a set of steps to upgrade something and every week to mask his issue, he'd ask me what to do instead ... no matter how many times I sat with him previously ... must have been truly embarrassing for him.
But "A"'s finest moment in the company, by far, was the day where out of the blue, at the top of his voice (as if wearing headphones ... without wearing headphones) he asked
"DO YOU KNOW ANYONE WHO SELLS POT?"
... why no, manager of the entire department standing behind you, I do not
... why no, tech lead talking to manager, I do not
... why hello 50% of my team staring at me ... no "A", I do not!
Needless to say all our team meetings were a little awkward for the next few weeks after that but hey who doesn't like being thought of as a stoner / drug dealer by their team mates huh?
Will A make it to the top of the list of most incompetent? Well he has some truly logic defining competition yet to be announced.
Tune in later for more practiceSafeHex's most incompetent co-worker!!!15 -
One of my worst meetings, as the sheer rage was unbelievable.
Backstory:
Architect: "Stop duplicating code", "stop copy pasting code", "We need to reuse code more", "We need to look at a new pattern for unit tests" etc.
Meeting:
Architect: What did you want to talk about?
Me: I built a really simple lightweight library to solve a lot of our problems. Its built to make unit testing our code much easier, devs only need to change a small bit of how they work.
Architect: I like the pattern a lot, looks great ... but why a library? can we not just copy the code from project to project?
... do you have a twin or something?2 -
*came in this morning to see this conversation in slack from the remote teams*
Dev: Hey guys, I'm trying to push to the develop branch, telling me its locked. Is there a new process?
Lead dev: Yes I locked it because the repo is now dead, the last release that went out is the last for this year and ever for this app. Were merging this app with another, starting from the last release's code. We'll all have to swap over to the new repo soon.
Dev: ... eh ok I didn't put anything in the last release branch as it wasn't urgent. Normally our process is anything in /develop goes out in the new year. I've been merging to /develop for the last few weeks ... is that code now gone?
*14 question mark emoji reactions*
Lead dev: Yes
*27 angry emoji reactions*
Engineering manager: WHAT? when was this decided? When was it communicated?
Lead dev: oh I assumed my product counterpart had been spreading the messages around, have they not?
Several teams: no, nope, first i'm hearing of it.
Lead dev: Ok, i'll ask them what happened. Be aware then that most of the stuff thats going into develop now, most likely won't be allowed in until March. They want to prioritise releasing this new merged app and don't want anything to impact it.
Dev: So wait, i'm working on stuff now. What do I do? Where do I base the branch? Where do I merge?
<no response>
*My team comes into the office*
Dev: eeehhh ... what does this mean for our past 4 weeks of work? and all the stuff needed to go out in January?
Me: not.a.fucking.clue16 -
practiseSafeHex’s most incompetent co-worker follow up: Candidate 1, “T”.
(For those wondering WTF I’m talking about: https://devrant.com/rants/1148190/...)
Forgot to mention something that happened with T that I find hilarious. T had a pretty profound effect on the company / team. It was a small startup, CEO + 4 of us, so we were all kinda close.
The day T was fired we decided this was too big of a moment to forget, so we created T_____ day, and to this day despite all working in different places we still meet up for drinks on October 24th to celebrate getting rid of that nut bag.2 -
Its that time of the morning again where I get nothing done and moan about the past ... thats right its practiseSafeHex's most incompetent co-worker!!!
Today I'd like to tell you the story of "i". Interesting about "I" is that he was actually a colleague of yesterdays nominee "G" (and was present at the "java interface" video call, and agreed with G!): https://devrant.com/rants/1152317/...
"I" was the spearhead of a project to end all projects in that company. It was suppose to be a cross-platform thing but ended up only working for iOS. It was actually quite similar to this: https://jasonette.com/ (so similar i'm convinced G / I were part of this but I can't find their github ID's in it).
To briefly explain the above + what they built ... this is the worst piece of shit you can imagine ... and thats a pretty strong statement looking back at the rest of this series so far!
"I" thought this would solve all of our problems of having to build similar-ish apps for multiple customers by letting us re-use more code / UI across apps. His main solution, was every developers favourite part of writing code. I mean how often do you sit back and say:
"God damn I wish more of this development revolved around passing strings back and forth. Screw autocomplete, enums and typed classes / variables, I want more code / variables inside strings in this library!"
Yes thats right, the main part of this bullshittery was putting your entire app, into JSON, into a string and downloading it over http ... what could possibly go wrong!
Some of my issues were:
- Everything was a string, meaning we had no autocomplete. Every type and property had to be remembered and spelled perfectly.
- Everything was a string so we had no way to cmd + click / ctrl + click something to see somethings definition.
- Everything was a string so any business logic methods had to be remembered, all possible overloaded versions, no hints at param types no nothing.
- There was no specific tooling for any of this, it was literally open up xcode, create a json file and start writing strings.
- We couldn't use any of the native UI builders ... cause strings!
- We couldn't use any of the native UI layout constructs and we had to use these god awful custom layout managers, with a weird CSS feel to them.
What angered me a lot was their insistence that "You can download a new app over http and it will update instantly" ... except you can't because you can't download new business logic only UI. So its a new app, but must do 100% exactly the same thing as before.
His other achievements include:
- Deciding he didn't like apple's viewController and navigationBar classes and built his own, which was great when iOS 7 was released (changed the UI to allow drawing under the status bar) and we had no access to any of apples new code or methods, meaning everything had to be re-built from scratch.
- On my first week, my manager noticed he fucked up the login error handling on the app I was taking over. He noticed this as I was about to leave for the evening. I stayed so we could call him (he was in an earlier timezone). Rather than deal with his fucked up, he convinced the manager it would be a "great learning experience" for me to do it ... and stay in late ... while he goes home early.
- He once argued with me in front of the CEO, that his frankenstein cross-platform stuff was the right choice and that my way of using apples storyboards (and well thought out code) wasn't appropriate. So I challenged him to prove it, we got 2 clients who needed similar apps, we each did it our own way. He went 8 man weeks over, I came in 2 days under and his got slated in the app store for poor performance / issues. #result.
But rather than let it die he practically sucked off the CEO to let him improve the cross platform tooling instead.
... in that office you couldn't swing a cat without hitting a retard.
Having had to spend a lot more time working with him and more closely than most of the other nominees, at a minimum "I" is on the top of my list for needing a good punch in the face. Not for being an idiot (which he is), not for ruining so much (which he did), but for just being such an arrogant bastard about it all, despite constant failure.
Will "I" make it to most incompetent? Theres some pretty stiff competition so far
Tune in later for more practiceSafeHex's most incompetent co-worker!!!6 -
Rough analysis of LinkedIn inmail’s I get:
Hi <5% of time, not my name>,
I was looking at your profile <97% a lie>. I was very impressed with your <10% something I’ve never done> experience working for <5% a company I’ve never heard of>. Would you be interested in hearing more about <60% a job I’m not suited for>, they offer amazing benefits and have a great culture!
... no8 -
I’ve been told my rants are being missed, since I left my hellhole of a job. So here’s a filler until something major goes wrong.
Right so here’s what my life is like at the minute. I’m working remotely from home. So this morning, instead of spending 2 hours in traffic, I got up at a reasonable hour and brought the dog for a walk. I don’t know who these people think they are, fucking up my routine like this. The audacity of them thinking it’s no big deal really pisses me off.
I’m the only iOS developer in the company. Normally I get bombarded with “why not use react-native” or “RxSwift is the future” and other shitty tools. Last week I said “i’d like to do X this way”. Do you know what those absolute bastards said to me? You ready? Hope you are sitting down ... they said ... “ok, sounds good” .... the fucking c***s.
Oh oh and the big one, wait for this now. Fridays are demo days, last Friday I showed what I was working on. Afterwards the CEO comes along, stares me in the eyes and without a care in the world what his comments might do to my self-esteem the fucker says “wow great job”. He fucking makes me SICK!!!
Feels good to get all that off my chest. I’ve missed venting. At this rate, I’ll be back very soon!8 -
Fixing family / friends technical problems, episode 2.
Problem: "I lost my iPhone, I know there's a thing that lets you find it. Can you help?"
Debugging:
Me: sure, it's called "find my iPhone"
Friend: ah yes that's it. How do I use it?
Me: I'll show you, just login here and ... oh you didn't set it up?
Friend: Probably not, I don't know much about this computer stuff.
Me: ... when you setup your phone for the first time, it's a full screen thing that says "do you want us to locate your phone if it's lost. Yes / No". It's hardly writing an encryption algorithm now is it?
Friend: no it's not, but still I just didn't know. I probably clicked no for everything.
Me: ... says here you clicked yes for iCould ... and yes for photo sync ... so you read the one about your pictures but not about lost or stolen property ... nice.
Friend: ... so you can't find it then.
Me: No, natural selection took it away from you.
Friend: oh **** off.6 -
So i've been a dev manager for a little while now. Thought i'd take some time to disambiguate some job titles to let everyone know what they might be in for when joining / moving around a big org.
Title: Senior Software Engineer
Background:
- Technical
- Clever
- Typically has years experience building what management are trying to build
Responsibilities:
- Building new features
- Writing code
- Code review
- Offering advice to product manag......OH NO YOU DON'T CODE MONKEY, BACK TO WORK!
Title: Dev Manager
Background:
- Technical
- Former/current programmer
- knows his/her way around a codebase.
Responsibilities:
- Recruiting / interviewing new staff
- Keeping the team focused and delivering tasks
- Architecture decisions
- Lying about complexity of architecture decisions to ensure team gets the actual time they need
- Lying about feature estimations to ensure team gets to work on critical technical improvements that were cancelled / de-prioritised
- Explaining to hire-ups why we can't "Just do it quicker"
- Explaining to senior engineers why the product manager declined their meeting request
Title: Product / Product Manager
Background:
- Nothing relevant to the industry or product line what so ever
- Found the correct building on the day of the interview
- Has once opened an Excel spreadsheet and successfully saved it to a desktop
Responsibilities:
- Making every key decision about every feature available in the app
- Learning to ignore that inner voice we like to call "Common sense"
- Making sure to not accidentally take some advice from technical staff
- Raising the blood pressure of everyone below them / working with them
Title: Program Lead / Product Owner
Background:
- Capable of speech
- Aware of what a computer is (optional)
Responsibilities:
- Sitting down
- Talking
- Clicking random buttons on Jira
- Making bullet point lists
Title: Director of Software Engineering
Background:
- Allegedly attended college/university to study computer science
- Similar to a technical product manager (technical optional)
Responsibilities:
- Reports directly to VP
- Fixes problems by creating a different problem somewhere else as a distraction
- Claiming to understand and green light technical decisions, while having already agreed with product that it will never happenrant program lead practisesafehexs-new-life-as-a-manager management explanation product product owner9 -
The bloke that I share my office with is asleep on the job. Ffs, can I get any support around here?
This working remotely from home thing, just isn’t panning out13 -
Had a PR blocked yesterday. Oh god, have I introduced a memory leak? Have I not added unit tests? Is there a bug? What horrible thing have I unknowingly done?
... added comments to some code.
Yep apparently “our code needs to be readable without comments, please remove them”.
Time to move on, no signs of intelligent life here.39 -
Sorry if I make a typo, my hands a still a little shaky, just had to stop myself from crying.
This morning I came in, opened my email, saw an automated response from Jira saying .... saying ..... saying the backend team provided details about their new endpoint.
After a year of screaming, they finally did it. It was so beautiful I fell to the floor and wept like a baby.
Thank you all for your support through this difficult time. Together we can accomplish anything!!!7 -
“Hybrid is the future, it’s faster to develop, more efficient and has no real downside or impact”20
-
Things have been a little too quiet on my side here, so its time for an exciting new series:
practiseSafeHex's new life as a manager.
Episode 1: Dealing with the new backend team
It's great to be back folks. Since our last series where we delved into the mind numbing idiocy of former colleagues, a lot has changed. I've moved to a new company and taken a step up as a Dev manager / Tech lead. Now I know what you are all thinking, sounds more dull and boring right? Well it wouldn't be a practiseSafeHex series if we weren't ...
<audience-shouting>
DEALING! ... WITH! ... IDIOTS!
</audience-shouting>
Bingo! so lets jump right in and kick us off with a good one.
So for the past few months i've been on an on-boarding / fact finding / figuring out this shit-storm, mission to understand more about what it is i'm suppose to do and how to do it. Last week, as part of this, I had the esteemed pleasure of meeting face to face with the remote backend team i've been working with. Lets rattle off a few facts to catch us all up:
- 8 hour time difference to me
- No documentation other than a non-maintained swagger doc
- Swagger is reporting errors and several of the input models are just `Type: String`
- The one model that seems accurate, has every property listed as optional, including what must be the primary key
- Properties go missing and get removed at the drop of a hat and we are never told.
- First email I sent them took 27 days to reply, my response to that hasn't been answered so far 31 days later (new record! way to go team, I knew we could do it!!!)
- I deal directly with 2 of them, the manager and the tech lead. Based on how things have gone so far, i've nick named them:
1) Ass
2) Hole
So lets look at some example of their work:
- I was trying to test the new backend, I saw no data in QA. They said it wouldn't show up until mid day their time, which is middle of the night for us. I said we need data in our timezone and I was told: a) "You don't understand how big this system is" (which is their new catch phrase) b) "Your timezone is not my concern"
- The whole org started testing 2 days later. The next day a member from each team was on a call and I was asked to give an update of how the testing was going on the mobile side. I said I was completely blocked because I can't get test data. Backend were asked to respond. They acknowledged they were aware, but that mobile don't understand how big the system is, and that the mobile team need to come up with ideas for the backend team, as to how mobile can test it. I said we can't do anything without test data, they said ... can you guess what? ... correct "you don't understand how big the system is"
- We eventually got something going and I noticed that only 1 of the 5 API changes due on their side was done. Opened tickets. 2 days later asked them for progress and was told that "new findings" always go to the bottom of the backlog, and they are busy with other things. I said these were suppose to be done days ago. They said you can't give us 2 days notice and expect everything done. I said the original ticket was opened a month a go *sends link* ......... *long silence* ...... "ok, but you don't understand how big the system is, this is a lot of work"
- We were on a call. Product was asking the backend manager (aka "Ass") a question about a slight upgrade to the new feature. While trying to talk, the tech lead (aka "Hole") kept cutting everyone off by saying loudly "but thats not in scope". The question was "is this possible in the future" and "how long would it take", coming from management and product development. Hole just kept saying "its not in scope", until he was told to be quiet by several people.
- An API was sending down JSON with a string containing a message for the user with 2 bits of data inside it. We asked for one of those pieces to also come down as a property as the string can change and we needed it client side. We got that. A few days later we found an edge case and asked for the second piece of data to be a property too. Now keep in mind, they clearly already have access to them in order to make the string. We were told "If you keep requesting changes like this, you are going to delay the release of the backend by up to 2 weeks"
Yes folks, there you have it, the most minuscule JSON modifications, can delay your release by up to 2 weeks ........ maybe I should just tell product, that they don't understand how big the app is, and claim we can't build it on our side? Seems to work for them
Thats all the time we have for today,
Tune in for more, where we'll be looking into such topics as:
- If god himself was an iOS developer ... not
- Why automate when you can spend all day doing it by hand
- Its more time-efficient to just give everything a story point of 5
- Why waste time replying to emails ... when you can do nothing instead
See you all next week,
practiseSafeHex14 -
Manager: I just think you are being too negative. Like sometimes other people have opinions too and we should hear them out before saying no.
Me: Well your opinion is the devs shouldn't be able to estimate their own tasks and you should decide on our behalf how long something should take.
You also want to decide what tech stack we use, because you followed a "Hello World" tutorial last night and it worked out for you.
Just because you got a simple webpage up and running in 2 hours doesn't mean all websites take 2 hours with the tech. Were not sitting in the corner laughing that you think its taking us 3 weeks to build this.
I'm not being negative simply because I don't agree with you. I'm not being unreasonable if I say I can do 6 weeks work in 2 weeks. And although it sounds offensive, i'm actually doing you a favour by telling you to get your head out of your ass11 -
Million dollar app/service idea.
Automatically reply to all LinkedIn inmail’s with “I don’t have any experience with that on my profile”.
Even without any NLP I estimate over a 90% success rate.12 -
Boss: lets set the domain to <productName>1.com.
Me: ok ... why 1?
Boss: ... because its version 1 of the software.
Me: .....
Boss: People will get it6 -
My linkedin profile = ~7 years as an iOS developer. All of my job titles are "iOS Developer", "iOS Engineer" or "Mobile lead".
Recruiter: Hi, your profile looks great, I have a number of open roles matching your skills. Would you be free for a call to discuss your salary expectations, skills, what you are looking for etc.
Me: Hi, sorry I don't have time for a call right now, here are answers to your questions. Can you send me on any iOS job specs you have and i'll review. <answers>
Recruiter: Sorry I have no open iOS roles at this time.
Bitch ... ima find you and make you understand5 -
I greeted my staff this morning with the phrase
"Morning, mind if I ruin your Friday?"
They laughed, but won't be soon enough. The task we've been working on for weeks, ripping apart the codebase changing it to work a different way, fixing a tonne of bugs, making it faster and simpler to add features too. Well business has decided they want us to stop, undo it, spend a month on something "with higher ROI" and then finish it off after that.
Business are expecting this to have no impact on any of the timelines and just to be like flipping a switch. Now obviously I won't let that happen and fight back for more time, but yet another session of compromises, arguments, and yelling. YIPEEE!!!!!!12 -
Me: we only got 40 minutes notice that we had to stay in late for a meeting with the USA team. Can we politely ask them to give us like a days notice in future? I can’t just stay late at any time, neither can the guys with kids to collect.
Manager: oh ok. I’m very sorry this has affected you. Here, let me explain why this is going to keep happening and you’ll need to deal with it.16 -
Me: Oh I see were using a non-standard architecture on this app. I like this bit but what is this doing? never seen it before.
Him: Ah we use that to abstract the navigation layer.
Me: oh ok, interesting idea, but that means we need an extra file per screen + 1 per module. We also can't use this inbuilt control, which I really like, and we've to write a tonne of code to avoid that.
Him: Yeah we wanted to take a new approach to fix X, this is what we came up with. Were not 100% happy with it. Do you have any ideas?
**
Queue really long, multi-day architecture discussion. Lots of interesting points, neither side being precious or childish in anyway. Was honestly fantastic.
**
Me: So after researching your last email a bit, I think I found a happy middle ground. If we turn X into a singleton, we can store the state its generating inside itself. We can go back to using the in-built navigation control and have the data being fetched like Y. If you want to keep your dependency injection stuff, we can copy the Angular services approach and inject the singletons instead of all of these things. That means we can delete the entire layer Z.
Even with the app only having 25% of the screens, we could delete like 30+ files, and still have the architecture, at a high level, identical and textbook MVVM.
Him: singleton? no I don't like those, best off keeping it the way it is.
... are you fucking kidding me? You've reinvented probably 3 wheels, doubled the code in the app and forced us to take ownership of something the system handles ... but a singleton is a bad idea? ... based off no concrete evidence or facts, but a personal opinion.
... your face is a bad idea15 -
PM: 2 months? no thats way too long, do it in 1.
Director: I had a chat with someone else who doesn't work on this team, he says that developer you complained about is a good guy and we should keep him on the team.
Business: No, we don't have time for tech debt, lets build these new features as quick as possible and lets see where we are.
everyone: WHAT DO YOU MEAN IT CRASHED AGAIN??? THIS IS UNACCEPTABLE6 -
*finds royalty free clipart*
*clicks "free download" button*
*Brought to "purchase subscription page"*
What in the name of fuck is going on with this misleading ass website.9 -
*deep breath*
Remain calm, don’t freak out, remain calm, don’t freak out.
*deep breath*
Ok, so my sort of new manager (had a slightly different manger-ish role on the team), has for the third time in as many months, just sent an email criticizing the dev team for our working from home-ness (which for the record has not been that bad, 2/3 or 3/3 have been in everyday for the past month)
In this same period, there has been late nights, weekends, successful releases, I’ve been invited to talk at a conference about my work (not a particularly big one, but still). Point is, everything is going well, very well in fact.
There has been no emails discussing our great work, thanking us for extra work, thanking us for picking up slack from other teams who are down a few people etc. no our major concern it seems is the “optics” of our team not being present in the open space.
Our contracts list flexible working hours, and his boss has frequently told us WFH is fine when things are too busy. But no he is complaining for us to get our hours in the office in line and make sure we are in the office more.
It’s been a particularly long and frustrating week, and I’m very tempted to inform him that if he is concerned about my chair and desk looking empty, that I can put them somewhere for him where they will always be occupied until a surgeon can remove them.
However, thanks to the deep breaths, I’ve managed to restrain myself long enough to run this past you all first and ask advice.
Please help,
Sincerely,
My sanity15 -
Boss: Great news, we are getting another backend dev from another team to help us out.
Me: Cool, hopefully we don’t have the same trouble as the others, not replying, never writing anything down etc.
Boss: No, I’ve worked with her before. She’s much more passionate about doing things right, using best practices and all that stuff.
Me: Oh that’s perfect, great news!
Boss: Yep! ... just be aware she has a tendency to get very easily confused. She delivers the wrong thing from time to time and might need to redo stuff semi-regularly.
Me: ... ... ...
Boss: It’ll all work out. Don’t worry. Ok gotta run.15 -
Write a small js function using setInterval to fire a request every second ... then copy paste the code 450 times (literally, not an exaggeration) into a massive file to create a load test script.
This load test script also had no means to gather metrics or test response times or anything useful. It was literally a “did the server crash” test.9 -
Me: *sends meeting request*
Attendee: *3 days later*, hi is there anything in particular you needed to discuss?
Me: ... nope, none what so ever. Decided to take 30 mins out of my busy day to talk to you, a person I don't know, for 30 mins. Definitely the title of the meeting request has nothing to do with it, I wouldn't bother reading that now, since you haven't yet anyway. Cheers!5 -
Just got this email with no body, and a vague subject / title in all caps.
... you ask questions on stackoverflow don't you12 -
Me: So i've cloned the iOS project, i've run carthage, but it won't build.. Have I done something wrong?
Devs: Oh read this doc on github, we do loads of custom stuff. The depenedncy manager can't do it all by itself. You need to run `./scripts/boostrap.sh`
Me (another day): I've switched branches and i'm getting all these errors. Any ideas?
Devs: Ah this happens when someone modifies xyz. Read this pinned slack message. Run `./scripts/bootstrap.sh` again.
Me (another day): I've switched branches again, getting different errors, re-running boostrap didn't fix it.
Devs: Ah yeah, this happens when someone modifies abc. You need to run `./scripts/nuke.sh` and then boostrap when this happens.
Me (another day): Guys When I try to run the prod app its not building any ideas?
Devs: Ah yes have a look at this confluence link. You need to run `./scripts/setup_debug_release.sh`, then nuke, then boostrap and you'll be good.
Me: .... ok
Devs: Oh btw very important! do not commit any changes from `./scripts/setup_debug_release.sh`. It will break everything!
Me: ... no i'm sorry we have a much bigger problem than that. We need to talk ... like right now7 -
Just found out the backend developer I’m always complaining about. The one who:
- Can’t implement OAuth, and we have to have app users login every 24 hours because we have no way to generate new refresh tokens.
- Who used the phrase “your time zone is not my concern” to avoid building something that would let us inject test data.
- Who’s been debugging a critical bug affecting many users since December.
- Who can’t conduct API tests from external internet (you know, like the way the app will be in the wild) because it takes too much time.
- Who replies to Jira tickets only on a blue moon.
- Who has been 90% of the reason for my blood pressure situation
... is a fucking principal engineer in this company. In pecking order, his opinion should be considered more valuable than mine and everyone on my team.
I’ve just lost the will to live. How are big organizations THIS bad. Seriously, what promotion discussion did he go into
“So, you are a complete and utter bastard, nobody can stand to speak to you and you’ve yet to deliver anything of worth that actually works, over the course of several years ... ... ... interested in having your pay doubled??”20 -
External company HR: We are sorry to hear you've decided to turn down our offer. You made a great impression and we thought you'd be a good fit. If you change your mind please let us know.
Me: I too am sorry you didn't tell me you were moving to the other-side of the county in two weeks, making it impossible for me to travel to and from work. I too have feelings about having done all the interviews and this being the end result. Thank you8 -
Friend: Why don't you just quit your job?
Me: I want to, I just can't right now, it would cause too many issues.
Friend: oh really? Will it affect your health insurance or pension?
Me: No my office is the shipping address for my new iPhone. Haven't got it yet.
Friend: Oh ffs .... seriously?7 -
IT: Its controlled via SSO, everyone has access by default
Me: oh i'm sorry, you are correct, I don't have an error message on my screen saying I don't have access. I made it all up. Thank you, you may close the support ticket2 -
Mam: Hey can I ask you a question about Facebook?
Me: (Christ give me strength) ... sure whats up?
Mam: You know when you get a notification and you click on it and see what someone uploaded?
Me: ... you are not on Facebook, you can't be getting notifications
Mam: well I do. Is it possible to...
Me: No hang on a second, it is 110% not possible for this to happen. Something else is going on that you think is a notification.
Mam: You know when you are on, and you see a message like "12 new notifications"
Me: on? on what? this is happening on your phone is it? Can I see?
Mam: No its on my laptop at home.
Me: ... you have an old laptop with an old windows, you can't get notifications on it.
Mam: OH FOR GOD SAKE! ... you know when you are in your emails and it says "12 new notifications"?
Me: ... right so we are talking about EMAILS about unread notifications and not getting notifications on your phone. So you have an old account then that you don't use?
Mam: Yeah I don't know the password to it, haven't logged in, in years.
Me: of course
Mam: Right anyway. When I get one and click on it, lets say its about you, can you see me reading your notifications?
Me: ..... you can't not read my notifications.
Mam: uh, can you see me reading your emails then smart arse?
Me: ... can't do that either.
Mam: So what the hell am I doing then?
Me: You are reading a post someone uploaded, which you got alerted to from an email.
Mam: Right, can you tell when I've read your POST then?!?!?!
Me: no
Mam: was that so hard?
Me: ... yep7 -
Newspaper: This CEO is one of the top entrepreneurs in the country, a true tech visionary shaping the future.
--- 3 months previous ---
Lead dev: O2 have said they are will pre-install the app on all their Androids but they need documentation from us.
CEO: documentation? on what?
Lead dev: Our unit test coverage, bugs found / fixed, security scan results, performance assessment, if and where its storing any data etc.
CEO: Ah were not doing any of that crap, bloody unit tests, its not necessary, tell them no.
lead dev: ..... eh ok
O2: *approved*
... true visionary, well done to everyone involved.3 -
iPhone app riddled with memory leaks from a team of interns. Big series of demos coming up. Managements solution?
Send instructions to the person giving the demo to kill the app every 20 mins or so.1 -
Welcome back to practiseSafeHex's new life as a manager.
Episode 2: Why automate when you can spend all day doing it by hand
This is a particularly special episode for me, as these problems are taking up so much of my time with non-sensical bullshit, that i'm delayed with everything else. Some badly require tooling or new products. Some are just unnecessary processes or annoyances that should not need to be handled by another human. So lets jump right in, in no particular order:
- Jira ... nuff said? not quite because somehow some blue moon, planets aligning, act of god style set of circumstances lined up to allow this team to somehow make Jira worse. On one hand we have a gigantic Jira project containing 7 separate sub teams, a million different labels / epics and 4.2 million possible assignees, all making sure the loading page takes as long as possible to open. But the new country we've added support for in the app gets a separate project. So we have product, backend, mobile, design, management etc on one, and mobile-country2 on another. This delightfully means a lot of duplication and copy pasting from one to the other, for literally no reason what so ever.
- Everything on Jira is found through a label. Every time something happens, a new one is created. So I need to check for "iOS", "Android", "iOS-country2", "Android-country2", "mobile-<feature>", "mobile-<feature>-issues", "mobile-<feature>-prod-issues", "mobile-<feature>-existing-issues" and "<project>-July31" ... why July31? Because some fucking moron decided to do a round of testing, and tag all the issues with the current date (despite the fact Jira does that anyway), which somehow still gets used from time to time because nobody pays attention to what they are doing. This means creating and modifying filters on a daily basis ... after spending time trying to figure out what its not in the first one.
- One of my favourite morning rituals I like to call "Jira dumpster diving". This involves me removing all the filters and reading all the tickets. Why would I do such a thing? oh remember the 9000 labels I mentioned earlier? right well its very likely that they actually won't use any of them ... or the wrong ones ... or assign to the wrong person, so I have to go find them and fix them. If I don't, i'll get yelled at, because clearly it's my fault.
- Moving on from Jira. As some of you might have seen in your companies, if you use things like TestFlight, HockeyApp, AppCenter, BuddyBuild etc. that when you release a new app version for testing, each version comes with an automated change-log, listing ticket numbers addressed ...... yeah we don't do that. No we use this shitty service, which is effectively an FTP server and a webpage, that only allows you to host the new versions. Sending out those emails is all manual ... distribution groups?? ... whats that?
- Moving back to Jira. Can't even automate the changelog with a script, because I can't even make sense of the tickets, in order to translate that to a script.
- Moving on from Jira. Me and one of the remote testers play this great game I like to call "tag team ticketing". It's so much fun. Right heres how to play, you'll need a QA and a PM.
*QA creates a ticket, and puts nothing of any use inside it, and assigns to the PM.
*PM fires it back asking for clarification.
*QA adds in what he feels is clarification (hes wrong) and assigns it back to the PM.
*PM sends detailed instructions, with examples as to what is needed and assigns it back.
*QA adds 1 of the 3 things required and assigns it back.
*PM assigns it back saying the one thing added is from the wrong day, and reminds him about the other 2 items.
*QA adds some random piece of unrelated info to the ticket instead, forgetting about the 3 things and assigns it back.
and you just continue doing this for the whole dev / release cycle hahaha. Oh you guys have no idea how much fun it is, seriously give it a go, you'll thank me later ... or kill yourselves, each to their own.
- Moving back to Jira. I decided to take an action of creating a new project for my team (the mobile team) and set it up the way we want and just ignore everything going on around us. Use proper automation, and a kanban board. Maybe only give product a slack bot interface that won't allow them to create a ticket without what we need etc. Spent 25 minutes looking for the "create new project" button before finding the link which says I need to open a ticket with support and wait ... 5 ... fucking ... long ... painful ... unnecessary ... business days.
... Heres hoping my head continues to not have a bullet hole in it by then.
Id love to talk more, but those filters ain't gonna fix themselves. So we'll have to leave it here for today. Tune in again for another episode soon.
And remember to always practiseSafeHex13 -
So I've been screaming for months that push notifications are not reliable enough to build critical functionality on top of. Management won't listen and keep pushing ahead with making teams use it because its cheap and easy.
Been debugging an issue on/off for several weeks. Turns out someone in management asked the backend team to cut the expiration time of items down to 5 minutes to increase throughput (without telling mobile). Notifications are regularly taking +4 mins to get to the phones, leaving our users with barely any time to react. They are now complaining.
I swear if there is a single IQ point available between the whole team i've yet to see any evidence of it8 -
"years of experience" basically means nothing, both for people and organisations. You can work with someone who has 30 years experience who knows nothing, and someone with 1-2 years who's practically an expert.
Joined a large multi-national fresh out of college, that had been around for +90 years. I expected them to know software development inside and out. Didn't expect to see so many failed projects for stupid reasons, so many over sights, so many .... morons, to be honest.
Worked for a startup company where most only had 1 or 2 years more experience than me and learned so much.
Worked for a small company where everyone had 1.5 - 2 times my experience, where I learned the meaning of "bewilderment".
Never feel small, or less valuable because of a number. Theres a good chance you are working with jackasses - practiseSafeHex7 -
My LinkedIn profile bio:
... however I’m not interested in hybrid mobile or contract work.
My LinkedIn “notes to recruiters”:
... I’m not interested in hybrid mobile or contract work.
My preferences:
- ticked full time permanent
- listed native technologies in the tag selector.
Email this morning:
Hi are you interested in the below role:
Role: Hybrid mobile developer
Salary: xxxxx
Type: 6 - 12 month contract.
No I am not you fucking fucktard. Read my fucking profile or go fuck yourself with a fucking cactus!9 -
So the remote manager who won't reply to my emails or slacks, won't invite me to meetings with product / design, won't ask for my opinion on deadline dates and won't tell me whats being said in meetings (despite repeated effort on my part to change this);
Has decided to send an angry email, cc'ing a bunch of people, about "constant deadline slippage" and poor planning on our part focusing on features that should have been de-prioritised.
ahem
*clears throat for maximum yelling rant-ability*
<rant>
I HAVE BEEN EMAILING YOU FOR FUCKING WEEKS ASKING TO TALK ABOUT THE DEADLINES YOU FUCKING COLOSSAL ASS CLOWN.
I'VE BEEN REPEATEDLY TOLD THAT THESE FEATURES ARE A MUST HAVE AFTER ASKING TO DE-PRIORITISE THEM, AND HAVE TOLD YOU THE DATES ARE NOT FEASIBLE.
ONE MORE, ONE MORE EMAIL OR BAD COMMENT AND I'M EXPENSING A TRIP OVER THERE, TO KICK YOU SQUARE IN THE NUTS AS HARD AS HUMANLY POSSIBLE. I'LL HAPPILY BREAK MY FOOT OFF IF NECESSARY, YOU USELESS PIECE OF SHIT.
</rant>
... the above is work appropriate to email back to him and all the higher ups right?12 -
Acceptable places to leave your bag when you get in, in the morning:
- Under your desk
- On your desk
- Infront of your locker
- On the back of your chair
- etc.
Unacceptable, is to throw your bag behind you and to the right, so it ends up in the middle of the floor and behind my chair.
Consistent use of this space, and me tripping over it will result in 2 things:
1. I will intentionally run over your bag, back and forth until I am satisfied everything is broken.
2. I will then pickup said bag and throw it, with force, at your head.4 -
Senior development manager in my org posted a rant in slack about how all our issues with app development are from
“Constantly moving goalposts from version to version of Xcode”
It took me a few minutes to calm myself down and not reply. So I’ll vent here to myself as a form of therapy instead.
Reality Check:
- You frequently discuss the fact that you don’t like following any of apples standards or app development guidelines. Bit rich to say the goalposts are moving when you have your back to them.
- We have a custom everything (navigation stack handler, table view like control etc). There’s nothing in these that can’t be done with the native ones. All that wasted dev time is on you guys.
- Last week a guy held a session about all the memory leaks he found in these custom libraries/controls. Again, your teams don’t know the basic fundamentals of the language or programming in general really. Not sure how that’s apples fault.
- Your “great emphasis on unit testing” has gotten us 21% coverage on iOS and an Android team recently said to us “yeah looks like the tests won’t compile. Well we haven’t touched them in like a year. Just ignore them”. Stability of the app is definitely on you and the team.
- Having half the app in react-native and half in native (split between objective-c and swift) is making nobodies life easier.
- The company forces us to use a custom built CI/CD solution that regularly runs out of memory, reports false negatives and has no specific mobile features built in. Did apple force this on us too?
- Shut the fuck up5 -
Dev manager: great news guys. We’ve built a new tool to do automated testing on apps. We’ve gotten rid of the old Appium solution we were using and built this new one.
Me: why not just use the inbuilt native stuff? Click to record works really well.
Manager: nah we thought it would be more flexible to build it ourself.
Me: ... ok ... moving on ... how does it work?
Manager: well this new .jar, you download it, pass in a config file, setup up your simulator and appium and the jar will do everything for you.
Me: ... wait you said you hate Appium? Now you’ve built a wrapper around it? And it doesn’t even set everything up, you’ve to do it all by hand?
Manager: oh we had too, would be too much effort to replace it. Don’t worry we can now write all our tests in .yaml config files instead of using Appium.
Me: so we’ve lost the ability of auto-complete and type ahead, everyone has to upskill on a new tool, it offers no new features over what’s available out of the box and we’ll have to deal with new bugs and maintenance and stuff our self ... because we need more flexibility?
Manager: oh don’t worry. The guy who built it is staying here. He’s going to deal with bug fixes and add features. He’s only one guy, but he’s really sharp, it’ll be great for us and the team.
Me: ... ... ...
*audible noise of soul breaking*
Me: ... ok thank you. I’ll look into this new tool3 -
A tool I built for my past company just got nominated for a European Data Science and AI award!!!
I'm over the moon that something I built is up for such an award. Be early next month before winners are announced. Oh and given I don't work there anymore, how I was told about it is a REALLY funny story .... I wasn't.
Saw a Linkedin post from my ex-manager congratulating the company and the org for great work done. He/They just forgot to mention the fact that me and another ex-employee did everything, left it practically finished and completely changed the direction of the project within the first month as their plans made no sense.
fuckers.8 -
Product sending an email: Can I confirm feature A is all set for its release on April 30th?
Me: ... what? no that feature is going out with Feature B, that was pushed back to June because of the server issue.
Product: No, the release plan document says April 30th for this.
Me: ... theres 6 copies of this doc now. Someone is after deleting my comments saying "releasing with Feature B". Oh look heres a link to another doc that says this. See Feb14th "Will go out with Feature B". This is because they are touching the same code, we can't separate them now without re-writing it.
*Me to myself*: Ha product are going to hate this, their shitty processes have finally caught up with them.
*next day*
Other manager: So heres my plan for the app release x, y, z.
*Me to myself*: ... his plan? this is my app, I mange this. What the hell is this?
*reads email thread*
*Me to myself*: ... oh so product really didn't like my reply, took me off the thread, sent a response to all the other managers asking for alternatives, CC'ing upper management. The same upper management I had a private conversation with yesterday about how shit our product team are.
*cracks knuckles*
I'm going to enjoy writing this reply.12 -
If the below is you, please stop. I'm starting a revolution called #AnswerTheQuestion
A: Hey, just checked your code, you have a huge security issue in XYZ, you should really address that.
B: Oh god I had no idea, how do I fix it?
A: Well it depends on how you *want* to fix it, no one solution is always the right one.
B: ... Ok, well could you give me some advice?
A: Well, there are many ways to approach this kind of work, but all I can say is that this way, is definitely not the correct one.
B: ... Ok, well how would you do it?
A: That would depend on the customer requirements.
B: ... the requirements is to have a website that isn't easily hackable, what do I do?
A: Nowadays, its pretty hard to make a website completely not hackable.
B: ALL THE SERVERS ARE SHOWING RED, PLEASE HELP ME!!!
A: ........ you really shouldn't prejudge colours. The colour red doesn't always mean danger, depends purely on the use case.9 -
Me: *Installs travis*
Dev: oh what's travis?
Me: it's a continuous integration tool I wanna setup.
Dev: ... contin.... ?
Me: continuous integration, a tool that performs builds.
Dev: ah!, is it the new version of that deprecated tool we were using "client access"?
Me: ... no ... that's an authentication service that generates and stores oauth tokens. This is the continuous integration tool I told you about yesterday (and last week and the week before).
Dev: ... contin....
Me: ... con ........ continuous integration. It listens to branches on GitHub, downloads, builds, tests and then deploys the code.
Dev: ah ok ok, cool.
I would bet my monthly fucking salary he can not repeat what I said, tell me what oauth is, or explain what he's working on at the minute.
Jesus at this rate I'd bet my salary he can't tell me my name.7 -
Having a server with a lower spec CPU and RAM than dev machines, to ensure that if it works on the dev machine it will always run perfectly on the server.
This means we can avoid any debugging tools or techniques (including console logs), because “it will be perfect and it’s not necessary”.4 -
Remote manager: Hey, that contractor you are working with that sits with me. We are thinking of sending him over to you guys, get him a visa, pay relocation and all that stuff and have him sit with you guys as a full time employee. What do you think?
Me: .... eh ... look I have to be honest, that guy is awful. He doesn't listen to me, constantly working on other things, and the architecture he forced onto the rest of the team is some of the worst i've ever seen.
RM: hhhmmmm, ok but what if we have him report to you, can you whip him into shape?
Me: Honestly I think theres too much effort involved. We are very short staffed. I'd prefer to hire someone else here who has more experience. Its a firm no from us on this guy.
RM: Ok, understood, thanks.
*2 weeks later*
Contractor: Hey guys, was chatting to my manager last week and he said the company is finally looking to convert me to a full time employee, and best of all he wants to move me over to sit with you guys. Isn't that great?
..... not really no7 -
- "Finance are too busy to look at this"
- "Finance have too much to do"
- "We can't this sorted at the minute because finance are overloaded"
Finance just sent me a request for "detailed description" for each business trip i've made. Attached is a spreadsheet report with 122 columns detailing every facet of my travel expenses that they have recorded so far. Not even just one row per trip, but one row per item, like:
- Trip 1 - Airport parking: .....
- Trip 1 - Airfare Outbound: ....
- Trip 1 - Airfare Inbound: ....
This is way you are too busy, because this is fucking ridiculous. Fix your shitty process and stop bitching.
FYI, your "detailed descriptions" can be found in the contracts we've signed, which outline all the travel needs, which you've already reviewed and signed off on. Get your shit together and stop bugging me4 -
Spent most of the day debugging issues with a new release. Logging tool was saying we were getting HTTP 400’s and 500’s from the backend. Couldn’t figure it out.
Eventually found the backend sometimes sends down successful responses but with statusCode 500 for no reason what so ever. Got so annoyed ... but said the 400’s must be us so can’t blame them for everything.
Turns out backend also sometimes does the opposite. Sends down errors with HTTP 200’s. A junior app Dev was apparently so annoyed that backend wouldn’t fix it, that he wrote code to parse the response, if it contained an error, re-wrote the statusCode to 400 and then passed the response up to the next layer. He never documented it before he left.
Saving the best part for last. Backend says their code is fine, it must be one of the other layers (load balancers, proxies etc) managed by one of the other teams in the company ... we didn’t contact any of these teams, no no no, that would require effort. No we’ve just blamed them privately and that’s that.
#successfulRelease4 -
Product replying to Jira ticket: We think this issue has been resolved. Can you please reach out to the user and confirm?
Customer care: User xxx has responded to say she "has given up in frustration, and the app simply doesn't work". She has requested to have her account deactivated. This user has requested to not be contacted any further by the program.
Hows your day going devrant? mines going VERY well5 -
What a day and what an achievement!!!
Today ladies and gentlemen I broke my record for number of passive aggressive “as per last email” comments, in a single email.
I now stand at 11
Today is a great day and I’d like to thank everyone not reading my emails who got me to this point. You guys are the real record holders!5 -
Sales manager: Hi all, we are launching a new internal hackathon. Form up a team with the right expertise to help with address the problem statement and get going!
Me: what’s the problem statement?
Sales manager: you have to sign up first. There’s proprietary company info with our plans for next year involved. You have to agree to terms and conditions before continuing. Legal say so.
Me:
*signs up*,
*fills in docU-sign*,
*clicks through 3 other screens*
Ok let’s see this problem statement.
“What new and magical customer experience can you create and launch to win in our markets”
... that’s not a fucking problem statement ... and why the fuck does that require filling out a docu-sign form to see?
I REALLY fucking hate legal / sales people. Wasting everyone’s time.4 -
HR: Hi we got your application. We'd like to schedule a call. Can you fill this out to pick a time?
Me: Sure, sorry first I'd like to ask a question. You are based on the other side of the country and i'm not able to relocate. Are you open to remote workers? Your job spec didn't mention either way.
HR: GREAT question! At this moment no we are not. We need people here on site. If you'd like, we can have a call to discuss if you fill out the form.
Me: ..... take time out of my day so you can tell me "No" again? ..... i'm alright thanks13 -
Well today I got a fantastic surprise (truthfully). We hired a dev some months ago, who was on 6 months probation and, to put it politely, he was not going to pass it.
*side note: for details of some of the above, read my last 10 or so rants. They are pretty much all him.
Anyway, management put him on an improvement plan to make sure everything was fair, it wasn't working out, but they said we had to finish it to be fair.
So we had another 2 weeks left when he announced last night he's leaving for a new junior role, technical but not a dev.
Months of stress, heartache, bewilderment, late nights and weekends all just came to an end.
The English language fails me to express my overwhelming joy at this moment. The only way I can come close to it is to say that when he made his announcement, a colleague told me I should stop smiling as it could be taken as being rude.
I'd like to take this moment to thank the community for supporting me over the past few difficult months. Without you I probably would have tried to kill him with my dev rant stressball.
Thanks,
practiseSafeHex8 -
CS lecturer and I were sitting in the canteen trying to discuss something on my laptop. While waiting for it to load this is what we discussed:
Me: funny story, this weekend I was out with my friends an.......
Lecturer: *hang on* ... you have friends?5 -
Me: Why is there such a delay between the app and the hardware device?
Colleague: Ah, same old same old, TCP is just an inefficient protocol. We should stop development and build our own replacement to TCP.
(PS. The actual problem was his code)9 -
Recruiter: hi, I have an iOS Developer role. Would you be interested?
Me: sure, send me on the spec.
Recruiter: ok great so for this Full stack app developer role we are looking for someone with:
- 5+ years embedded C/C++ experience
- 5+ years of working with Windows and Linux
- Native Android development
- As well as Native iOS experience
Interested?
Me: ......... ok buddy, you and me are going to have a little chat about what “iOS Developer” means17 -
Got very little sleep last night, not in a great mood to begin with. Came into work to find someone borrowed one of my cables that I need and hasn't returned it. It was wrapped around a few things to keep it tidy, all of which have been moved, stretched, bent etc. Now my battery is running low and he has emailed to say won't be in for 30 minutes.
Think the only reasonable course of action in a just world, is for me to strangle him with the cable when he gets in. I mean come on, whats the alternative? Still haven't gotten that pen back from last year ... this place is going downhill fast!8 -
Had a follow up meeting today to resolve the issue of Product ignoring our comments about possible issues, better ways to do it etc.
New rules:
- We are allowed to suggest to Product that they might be doing something wrong
- We are not allowed to tell product they are doing something wrong
- If Product don’t listen, that’s fine, we will document our comments to protect us later.
Conclusion:
Product are too sensitive to have a conversation with. We are now going to let them fuck everything up, make some notes and say “I told you so” at a later date.
Maturity at its finest ladies and gentlemen.5 -
Me: Hi Guys, theres no docs on our custom push notification / deeplinking implementation. I've tried to work backwards from a QA testing doc to add new links. Can someone tell me if this is all ok? It seems to behave a little weird.
Dev: Looks ok, but we've moved to the braze platform for sending notifications. You'll need to trigger braze notifications now. Test that it works ok with that <confluence-link>
*hour later*
Me: I've tried the debugging tool, both with my payload and one of the samples from the link. It displays on the phone, but tapping it doesn't trigger the deeplinking.
Dev: No it works, try one of these <screenshot of samples I used>
*hour later*
Me: Tried it again on the real device to make sure, as well as on develop and master. Not working with those samples or mine.
Dev: No it does. It comes in here in this library <github link to line of code>
Me: ... Nope, debugged it, it doesn't get passed the next 'if' check on the next line as its missing a key/value. The whole function does nothing.
Dev: Oh do you want to send a braze notification?
Me: ..... you told me I had too .... yes I guess.
Dev: ok for a braze notification it works different, send this <entirely different sample no where on the link>
Me: ...... but ..... this is only for braze notifications ..... why .... all the samples have deeplink url's .... but they don't ....... are you ..... FFS!!!!! !@#?!
(╯°□°)╯︵ ┻━┻
┻━┻ ︵ヽ(`Д´)ノ︵ ┻━┻
(ノಠ益ಠ)ノ彡┻━┻
┌П┐(ಠ_ಠ)1 -
Me: hey I have a major issue I need to discuss. Would you be free tomorrow at any of these times: A, B or C?
Him: Yes
Me: ... ... ... ok I’ve a new issue I need to discuss with you right now!16 -
So i've been put in charge of bringing the devs together to form a small dev team, instead of having 3 separate devs (including me) sitting apart on separate projects. The idea was to have us talk more, work together more, learn more about the other projects, reuse more code etc.
(I've been arguing to let us do this for a while)
So I asked my manager could we move to the 4 desks in the corner, so we can have our own space, talk without having to book a meeting room each time etc. Its also a bit quieter over there and we all really need that in our noisy office.
Manager sent me an IM today while I was working from home to tell me we can have the desks. Was super happy, messaged the devs to tell them they can start moving.
Just got a message from one of them to say our manager has started moving his stuff over too. Seems he agreed with me that it is quieter over there and he doesn't like the noise either ... so he's joining us.
A huge part of the move was us wanting to work on side projects to automate and speed up various things in the team, that he has been against. We know we can make huge improvements but he doesn't see it. He's only interested in Word, Excel and Powerpoint.
So now we have our space, and anytime we try to work on something we are actually interested in, we'll have a little voice in the corner to pop up and point out what other things he deems more important and tell us to stop wasting our time.
Pretty fucking annoyed to be so happy and then get shot down like that. Happy weekend everyone!!9 -
“Your time zone is not my concern” - manager of the backend team
I asked if there’s another way for us to get test data into QA. That doesn’t involve us staying on until 9pm to get a backend dev to modify the db manually, everyday.6 -
Subject: FW: Twilio integration
Date: 20th June
From: <program-lead>
PractiseSafeHex I need you to fill in the dev completion dates for the Twilio task for the mobile team by EOD today. Backend have already supplied theres. Otherwise I will be forced to mark the task as “At Risk”. Please let me know if there is an issue or you are blocked.
—- Begin Forwarded Mail ——
Subject: Twilio integration
Date: 18th June
From: <program-lead>
Hi All,
Documenting today’s meeting minutes. Backend confirmed they will handle the Twilio integration from their side entirely. There will be no mobile work required for this task.
Thank you,
<program-lead>11 -
Them: We really need you to fill out this sheet today with estimated release dates.
Me: I really need you to respond to any of the emails I’ve sent over the past week, asking questions about what these tickets mean.2 -
My morning (RO = remote office):
Me: Your xxx implementation is very strange.
RO: Yes we are following a new example from experts in this field. See this link.
Me: Paragraph 1, use xxx class in these situations. Were not doing that.
RO: Yes we had problems with that, we decided to skip that.
Me: Paragraph 2, always use xxx when accessing data. Were not doing that.
RO: Yes that create many bugs, we skipped that.
Me: This section on debugging says to enable this flag while in development to allow the IDE to alert you to issues.
RO: Yes this causes the app to crash constantly. So we took it out.
Me: ... because its finding issues ... and telling you where the problem is, with an error message.
... your not following the experts at all.
RO: We are!, please read the link we provided.
... this will be discussed on my exit interview6 -
Yes of course we can have a fourth meeting this week to discuss possible KPI’s for the project.
I have a suggestion though, since the first deliverable is 3 weeks away and it doesn’t work yet, maybe I could spend time ON the project ... so I can build something that could be a KPI ... and not piss off the other companies for delivering nothing.
Of course I’m not a manager, so what do I know, but this shit might be why people keep leaving the team. Perhaps devs don’t enjoy having no time on the project while simultaneously being yelled at for not getting it done.2 -
Recruiter: Hi practiseSafeHex, I’ve looked at your LinkedIn profile and you look like a perfect fit for my new client. The role is a lead Java developer with experience in .......
Me: Where on my profile have I listed or mentioned Java in any way?
LinkedIn Notification: a person who chose to remain anonymous, with the title “Recruiter” just viewed your profile.
Wow, I wonder who could it possibly be? I’m stumped!
Also probably the first time he did look. Getting fed up with these asshats9 -
Dev: To send push notifications, please open a ticket to get access to the new tool we are using which is dedicated to managing push notifications and push notification campaigns.
Me: ok done.
*5 days later*
Tool owner: Can you please add to the ticket the reason you need access?
Me: “To use it”2 -
The 4 stages of collaboration:
- Stage1:
Hey dude, I setup some online docs and left some instructions / discussion points in slack, but you haven't been logged in. Can you login and have a look when you get a chance?
- Stage 2:
Oh Hey, did you ever get a chance to have a look at those docs / discussion points?
- Stage 3:
Hey, look this is due by close of business tomorrow, can you take spend an hour on it before you leave?
- Stage 4:
*loads shotgun* HEY YOU! ... sit here, login to that ..... STOP CRYING AND HURRY UP ..... see that right there? thats missing your input, you have 15 minutes left ... GO!
I'm fast approaching stage 4 and loading my efficiency shotgun as we speak.5 -
So we had a dev on our team who was on a performance improvement plan, wasn't going to pass it, but decided to quit before it was over saving us 2 weeks.
I was ecstatic when he left (caused us hell). I knew updating his code wouldn't be great, but he was only here 6 months
"how bad could it be" - practiseSafeHex - moron, idiot, suicidal.
A little run down would be:
- Despite the fact that we use Angular 2+, one of his apps is Angular 1 ... Nobody on the team has ever used Angular 1.
- According to his package.json he seems to require both mongoDb and Cloudant (couchDb).
- Opened up a config file (in plaintext) to find all the API keys and tokens.
- Had to rename all the projects (micro services) because they are all following a different style of camelcase and it was upsetting my soul.
- All the projects have a "src" folder for ... you know ... the source code, except sometimes we've decided to not use it for you know, reasons.
- Indentation is a mess.
- He has ... its like ... ok I don't even know wtf that is suppose to be.
- Curly braces follow a different pattern depending on the file you open. Sometimes even what function you look at.
- The only comments, are ones that are not needed. For example 30+ lines of business logic and model manipulation ... no comment. But thank god we have a comment over `Fs.readFile(...)` saying /* Read the config file */. Praise Jesus for that one, would have taken me all week to figure that out.
Managers have been asking me how long the "clean up" will take. They've been pushing me towards doing as little as possible and just starting the new features on top of this ... this "code".
The answer will be ... no ... its getting deleted, any machine its ever been on is getting burned, and any mention of it will be grounds for death.6 -
“No we don’t use the time zone info you send on each request. We get all the drivers for the store ID, choose one of them randomly and take their time zone. We have been assuming it will always be the same for all drivers for each store.”
This is my new favorite response to a Jira ticket in this company.
I may have to print it out and hang it on my desk3 -
Friend: you really should give Windows another chance, it's really not that bad.
Me: are you in possession of the only Windows computer that doesn't blue screen whenever there's a strong breeze outside?
Friend: No ... That does happen every now and then.
Me: So what's great about it then?
Friend: Look at this cool wallpaper, it's a slideshow of pictures of my kids.
Me: ... stop talking to me immediately ... and sit over there.12 -
I'll be moving to a new job soon. Myself and a colleague are working on a new feature before I leave. He's building an IoT device, i'm doing the backend work. Were testing a "ping" style system, where his IoT device replies to a message from the backend.
The JSON payload he's sending is {traitor: true}3 -
Today @ 4pm:
New dev: I need help with this issue, i've been stuck on it all day.
Me: ok let's look ...... ok, and did you try google this?
New dev: ... no
Me: ... why?
New dev: well this is clearly my issue, why would I google it? I only google for things I don't know
Me: ... ok ... we'll do you know what this bug is then?
New dev: haha ok, fair point, I'll give that a try. Thanks for the tip.
Seriously, should I be worried? I feel worried13 -
Colleague: Hey want to get access to our repo so we can see each others code, collaborate, discuss design patterns etc?
Me: Yeah sounds like a great idea. Would love to get to know a bit more about how others are building mobile apps in the company.
Colleague: Heres the link to the iOS app: xxxxxxxxxx
*Opens link*
*looks around a bit*
*Opens cocoapods folder*
*Sees 89 dependencies*
Me: .......... actually, you know what, I have major deadlines coming up. I can't look at this right now. Lets talk in the new year.
*closes slack*5 -
Following on from: https://devrant.com/rants/1345037/...
I sent a polite but very frank email to the manager telling him I don't agree and think its extremely unfair to overlook the breath and scale of work we have done in the past few months. Instead to criticise us for this.
He didn't reply, or really speak to us for a week. Then suddenly one day the developers were all in a meeting room and he butted in to talk.
He first of all said he wanted to let things settle before talking to us, which gave me high hopes as I expected him to then say something like we miss understood, or he didn't realise etc.
... but no ... the next words out of his mouth were "I'm not apologising for anything, and I don't want to be told to piss off in an email".
A) Piss off = completely untrue and a massive exaggeration.
B) Go fuck yourself with a cactus.
C) See point B.
In that meeting we discussed the massive amount of meetings and work we have to do which was described as "just the job".
We were told we all have to be in until 5pm, but that we also don't. We need to be in the office more, but its fine if we can't be. And we need to cut down on WFH, but its ok to WFH ... so yeah everything is crystal clear.
I haven't written any code in 3 - 4 weeks. I'm now dealing with GDPR shit, and our internal processes to handle it (despite having no legal background). Have to fill out 140+ question surveys about each of our projects, which are the most vaguest things i've ever seen.
"Are you processing large scale data" - The fuck is large scale, oh wait heres a definition. "Large scale is determine by volume or percentage of population size" - How in the name of christ is that a definition? Fucking lawyers and their bullshit.
The next round of applications for research funding is coming around soon and were being told to work on proposals (which are huge and a lot of effort). While being told we need to define and improve on our KPI's for the year. While trying to find time to ... you know ... do ... work?
I'm just so fucking bored and pissed off with this place. I have to do the work of 6 people, nothing is ever good enough, devs have to do very non-dev tasks with little to no support. Bosses are just annoyed about everything, everyones in a bad mood and everything sucks.
A friend put me forward for another senior role in another company. Thought this would be my saving grace. They have a strict interview process with white-boarding (which I hate) and will likely ask about algorithms etc which I suck at. I'm so burnt out from this place I just can't find the motivation to go study up or prepare properly.
I just wanna write code, why is there so much bullshit in life11 -
follow on from my last rant.
I've finally gotten my new Jira project. Only thing I seem to have access to change is the Kanban board columns. Still has 50+ fields when creating a ticket etc.
Asked the support team handling the request if this was a mistake. He said no, i'll need to open another ticket to have those changes requested.
Opened and got a reply. Currently there are 2 versions of Jira running. They are working on consolidating them atm and won't help me right now until this is done. I've been asked to re-open my request after the consolidation is done in March 2019.
5 ... fucking ... months, so I can have a competent ticketing process.
He pointed me to a page explaining the move and listing all the changes taking place. Well lets look at the changes they are making that are so critical:
Change 14: Rename "More info" status to "Needs more info".
... Oh pardon me. I didn't realise such critical show stoppers were being addressed. Please do continue. Don't mind me, i'll just be over here taking 4 hours to create an Epic and 6 stories. As you were9 -
"Simply log into our portal to access a list of toolkits designed from the ground up to help with your given needs. Using our unique tailored framework we can .... "
Sandra, calm the fuck down. You have a website with some reading material, a form and a few buttons. Get over yourself.2 -
YOU CAN'T JUST SWAP THESE DATES AROUND WITHOUT TELLING US AND EXPECT IT TO BE FINE, YOU USELESS FUCKING SKIDMARK!
... ahem ... sorry about that, just needed to vent ... as you were1 -
QA: When I open the app I get this strange error message that includes "No data connection could be established" near the start of it.
Me: I'll clean up how thats displayed, but the error means your phone doesn't have internet connection.
QA: No that can't be it, I do.
Me: You screenshot shows no WiFi or 3g / 4g symbols.
QA: No those are never there, please investigate.
Me: I have investigated and found that every other one of your screenshots had a WiFi or a 3g symbol. Example: <link>. Please check your connection and try again, i'll clean up the error display.
PM: Oh i've had an issue something like this before. We really need to show users an error screen. We can't just leave them on this screen with no error message at all.
Me: ... we have an error, thats what QA is complaining about, its not loading the text and displaying the error object.
Anyone else want to not pay attention and complain about something else that doesn't make sense? ... no? ... ok good, back to work then7 -
Mobile app crashed a lot after latest release. Everyone called for a meeting to discuss the issue and find resolutions.
Engineering lead for backend team: well part of our problem is we haven’t had time to test everything fully. Maybe product could give us a list of all the features that can’t go down and we’ll prioritize those for testing?
Product: ... ... ... all of them?
Me: laughing hysterically while on mute2 -
Have a week off, no yelling over email, no sarcastic slack messages, no shouting to myself in the office ... honestly have no idea what to do with myself ... might try this “being happy” thing everyone is always going on about4
-
My teams current process is:
1) Asked by product to create “T-Shirt size” estimates, also known as a WAG (wild ass guess). The process is the mental equivalent of throwing darts while blindfolded, after being spun around in a circle and pointed in the wrong direction.
2) Product make firm commitments to upper management based off these. Ensuring them that all these features will make it out in Q2.
3) 4 days before Q2 starts, product ask engineering to figure out the real estimates based off no concrete information what so ever.
4) 4 Weeks into Q2, product provide the missing information.
5) Engineering inform product that the estimates are out by a factor of 1.5 - 3 times the original estimates.
6) Product sends angry email to upper management that through not fault of product, engineering are unable to meet the deadlines.
7) Everyone shout and complain until 1 week before Q3, then see point 1.
Following this process, you and your team can be just as delightful as me.
That’s the practiseSafeHex guarantee!4 -
"Hi xxx, please stop asking me the same question. I've answered it 4 times already via email, slack and in person on our zoom calls, over the past 2 weeks. I do not own the ticket and have no idea of the status or the dates. Ask the owner."
- slack response I was forced to write this morning to the guy my company put in charge of the entire product (mobile, multiple backends, frontend etc.).7 -
10am: meeting invite for 9:30pm my time.
*decline with comment: can’t attend*
9:40pm: email, “is anyone from engineering going to attend?”
*ignored*
10:05pm: email, ok the results of the call were X, Y and Z. But we’ve been asked to supply architecture diagrams (which don’t exist). Can we do this today?
*ignore*
10:45pm: email, guys this is urgent can we do this ASAP!
*ignore*
... welcome to the new world bitches, bite me6 -
Don't cha just love it when you download your "native" desktop application to host a meeting, only to find out its actually a wrapper around a browser?
How did I find out? Well I innocently tried to drag and drop an image to share, only to have the browser open and render that file instead of uploading it, killing the application it was running behind it, closing the meeting for everyone on it ... and not even be able to access a back button to re-open the session.
viva la hybrid!2 -
Today I was asked to decide on a handheld or "madonna" microphone for a conference I have to speak at in 2 weeks. Its time to come clean, I never thought the day would actually come, i'm far too terrified to actually go through with it. I just wanna write code in my dark little corner and be left alone. I wonder can I get out of this or is it too late4
-
I've been wondering for a while, how the backend my team has to use could have so many issues. I was convinced they had no alerting system in place and have been commenting on it for a while now, and complaining about it.
Was on a Zoom call with one of the backend devs today, he shared his screen and had his email open. I saw a folder he had setup called alerts, and sub folders under that. One of them was named the name of the service/app we are using ... it had over 360,000 un-reads ... and emails are automatically deleted after 4 months in my company.
So they have alerts setup, they just don't care ... problem solved. Enjoy your weekend folks!2 -
Got a LinkedIn message from a recruiter looking to know if I’m interested in a full stack developer role, to only work on front end. The requirement is that I know one of:
“go, node.js, rails, python, C# .NET, RoR etc”.
I wonder who it is that doesn’t have a clue, company or recruiter (or both?).
I’m actually going to reply to this one for fun to try figure out this mess (yes I’m that bored)19 -
12 - 1pm is lunch time. What the hell is it with this team and arranging meetings for this time, does nobody eat?
*Propose new time*
Justification: ... i'm fucking hungry4 -
Admin work, because its all manual:
- Each new project has to fill out an Excel tab in a workbook, with a list of all the major tasks and who is responsible. This then needs to be used to create a Gantt chart, manually, in the same tab, showing in what month a task starts and ends.
- Every month we have to manually enter status updates into a powerpoint slide on a shared deck. Which has a collision at least once per month.
- Once a quarter we need to do something similar as the powerpoint slides, but into a word doc instead.
- Once a week we need to track our time on projects in a tool that can't be integrated with (no API or anything). Meaning we can't link up a ticket tracking system to it, so again, all manual.
- Once every 6 months a new round of research funding opens up and we write proposals. The status for which are tracked in another Excel spreadsheet, manually, once a week until the deadline.
- The instructions for what to do with the proposals are so vague and badly documented that there is an unwritten rule, that for the first time you will have to ask a bunch of questions to the project manager. This is accepted by everyone and its just the done thing.
- Everything is stored in a dropbox style system, which has become so cluttered I can only find resources by saving the links sent out previously.
- Some of these updates / reports also get a 1 hour meeting for everyone to stand up and read out what they've entered.
- From time to time random things will need to be reported on to the higher ups (how many publications, research papers, patents, times and dates etc.). Again rather than a tool, a new Excel spreadsheet is whipped up and emailed to everyone on the team. Whoever sent it out, then has to merge the 20+ copies into 1 doc.
- Some of the staff (mostly the devs), use a ticket tracking system to keep track of everything. Management refuse to use it to track the things they need. Instead we have to copy paste from it into the word docs, powerpoint, excel etc.
- By far the most annoying. Management force all the above as they need the info for finance, accounting, legal etc etc. So we have to do it, but whenever there is a question from legal, management send the question to us. So despite having documented every facet of everything imaginable, it all gets ignored in favour of endless emails.
I once tried to to put an end to all of this madness by proposing the use of a ticket tracking system, and then building reporting tools on top of it.
... I was told that it "wasn't appropriate". Still don't know what that means.9 -
Should you use webpack in your next front end application? Well heres one question to ask yourself to help you decide:
While developing your application, do you feel your application could benefit from the introduction of 14,372 impossible to understand errors, each requiring hours of research to debug ...
you do? well boy are you in luck!6 -
Internal support article to get access to a tool:
"To get access click 'NO' in the 'was this article helpful section' and open a support ticket, making sure to mention the tool you are looking to get access to"
What fucking fresh hell is this? Why not have the article, contain the fucking link to open the ticket.
You have intentionally put up a useless article, in order to hack your way around this stupid system.2 -
Colleague started a slack channel for our team, management wanted nothing to do with it. We used it to work and have a bit of fun.
Some push / drive came form somewhere and now all the managers are on it. Yesterday I was told my screenshot and "snarky comment" are not appropriate for the workplace and to delete my slack message.
My comment was a joke about about a new app the company has to use "to increase efficiency" that broke and wouldn't let me do what I needed. It wasn't offensive, demeaning, sexist to anyone or even contain any bad language.
How petty and childish to be monitoring a private channel making sure everything is positive. We all joked that from now on our meme's must be about how awesome the company is and how much time we are saving on a daily basis.
God forbid we're allowed to speak honestly and openly or have a bit of fun.7 -
One of my top 10 worst meetings, was for an interview for a job I really wanted. The guy started off the technical interview by asking me about language features that had been replaced since before I started learning the language. Told him when I started learning and his reply was:
"Yeah I see that on your CV, but come on, you MUST know this stuff".
eh no asshole, because its been removed for 4 years, you MUST know its not relevant10 -
Colleague: Oh i've noticed your PR uses tabs instead of spaces, we use spaces, can you change yours please?
Me: ..... can you leave the building immediately, for your own safety21 -
keeping up with the ridiculous job titles, WTF is an "iOS King"?
I would actually avoid applying for that job as I couldn't bare to call myself that, or have others10 -
If you haven't seen the video instructions for how to factory reset GE's smart light bulbs.
STOP WHAT YOU ARE DOING AND WATCH: https://youtube.com/watch/...
Theres also a twitter thread about this which includes screenshots of their instructions on how to count 2 seconds: https://twitter.com/NumbersMuncher/...
This is what happens when you hire a product manager with no experience and put them in charge of engineering, design, UX (who we kidding they def don't have one of these) etc. This is just magical16 -
Random dev online: Any chance you could help me figure out how to use something the company you worked for wrote? I need to do XYZ
Me: I didn't write it but sure. Theres a doc here about the full process of doing XYZ <link>
Random dev 5 seconds later: But how do I actually do it? The link doesn't show how to do it via code.
Me: You'll find if you actually read it, that it does. Because I checked. Good day2 -
Team quarterly capacity planning:
- Confluence document created with a big table (+100 rows) by product / business. Each row is something that needs to be worked on for the coming quarter.
- Row 1 could be an Epic with 15 tickets attached. Row 2 could be adding a single log to our analytics. No consistency.
- For each row, we create a separate confluence document with the "technical details". 75% of the time these remain blank. 1% of the time there is something useful, the rest its a slightly longer version of the description from the bigger document.
- Each row gets a high level estimate by the leads. 50% of the time without sufficient background info to actually do get it accurate.
- These are then copied into the teams excel spreadsheet, where it will calculate if we are over/under capacity.
- We will go backwards and forwards between confluence and excel until we are "close enough" to under capacity without being too much.
- Once done, we then need to copy them into the org/division's excel spreadsheet. This document is huge, has every team on it and massive 50pt text saying "Do not put a filter on this document".
- Jira tickets + Epics will now be created for each one, with all the data be copied over by hand, bit by bit, by product. Often missing something.
- Last week, at the end of this process for Q2 (2 weeks late), 6 of the leads were asked to attend a 30 minute meeting to discuss how to group the line items together because we had too many for the bigger excel spreadsheet.
- This morning I was told business weren't happy with one of our decisions to delay one line item. Although they were all top priority (P0), one of them was actually higher than that again (P-1?) and we need to work it back in.
... so back to step 1
- Mid way through Q2, a new document will be created for Q3. Work items that didn't make the cut will be manually copied from one to the other. 50/50 whether anything that didn't get done on time in Q2 will make its way to the Q3 doc.
- "Tech excellence" / "Tech debt" items (unit/UI tests, documentation, logging, performance, stability etc) will never be copied over. Because product doesn't understand them and assumes therefore that they are unimportant.
==================
PS: I'd like to say this was a rare event for Q2, but no. Q4 and Q1 were so bad, we were made assurances from the director of engineering that he would fix this process for Q2. This is the new and improved process (I shit you not) that has resulted in nothing tangible.7 -
Typically my low motivation stems from some form of management dickhead-itis, too much red tape or restrictive processes (current place took 3.5 months + 2 forms to order a webcam our client had paid for as part of the project ... it was €45).
How I deal with it? I try to give a go changing it, talking with managers, explaining the issues, suggesting alternatives. Such as removing your head from your ass, when done, it can have a wonderful impact to the team.
When that fails (not if) ... I quit. Which I actually just have. Got a job offer last week, although I really wasn't a fan of how things were going on this team, I was working on some cool projects and wasn't sure what was right for me, career-wise.
Then I had a argument with a new manager as he doesn't remember agreeing to allow the developers to estimate their own tasks. He was annoyed I told him we can't do X in 2 weeks, we previously asked for 2 months.
That was enough to knock me over the edge, so I handed in my notice, took the job with much more management style responsibility and hoping for a fresh start.1 -
It's getting close to that time of year when we are all encouraged to think of others and spread joy around the world. I've decided to go against my usual snarky/anti-social nature, and do something to help others this year.
I'm announcing the practiseSafeHex charitable fund, to give back and help others.
This fund will invest in cutting edge medical research to detect the genetic abnormality in humans that results in project managers not being able to comprehend the simplest of concepts.
Together we can find the reason why the concept "more meetings = less work" is uncomprehendible.
Together we can discover why we can't use an automated bot to generate reports, instead of spending hours in excel spreadsheets.
And together we will find a reason why the answer to the question "can we please just try it?" is always "No".
We do this not for ourselves for short term gains, we do this for the greater good. Together we can find the cause and build a test to filter these people out. So that never again will stressed out developers have to deal with these petty ridiculous issues.
Together, we will solve this!
Thanks,
practiseSafeHex, CEO and managing director of the practiseSafeHex charitable fund for the betterment of developer sanity10 -
Was asked to help a team of interns in a remote country, finish an app. Not only were they terrible at literally every aspect of development, but were arrogant and argued their "new" ways were right.
Spent weeks on the project being nice, trying to help them, sending them links to standards and documents, pointing out unit tests shouldn't be failing, everyone needs to have the same versions of the tools etc. You know, basic shit.
Things got quite heated a few weeks in when they started completely ignoring me. Shit was breaking all over the place and crashing, as I thought we were going to build it one way, and they went and built it another.
Was practically begging the team architect and my manager for help dealing with them. Only reply I got was the usual "were aware of the problem and looking into it" bullshit.
Eventually after the app was done, a mutual agreement was reached that the 2 teams would split (I maintain they were kicked out). All the local devs were happy, managers had mentioned how difficult they were and it would be great for us to finally work on our own.
So I thought everything was fine ... until my end of year performance review came along.
Seems I'm quite poor at "working with others" and I "don't try hard enough with others", it was clear I was struggling with the remote team and "made no effort".
WELL FUCK RIGHT OFF
Not being cocky, but I've never had anything like that in a performance review for the past 7 years. I'm a hard worker, and never have trouble making friends with colleagues. Everyone in the country complained about these remote fuckers, even the manager, who I begged for help. And the end result is I need to work harder.
I came in early, stayed late to fit their timezone, took extra tasks, did research for them, wrote docs. And I was told to work harder.
Only reason I didn't quit, was my internal transfer request was approved lol. New team is looking at projects orders of magnitude more impressive, never been happier.3 -
WWDC was last night. Joined my companies "iOS" slack channel this morning expecting to see lots of activity about SwiftUI, Combine, Federated Login, New iPad updates ... but no. The only comment
"Does anyone else feel like the event artwork is lazy and uninspired?"
... I am just fundamentally in the wrong company12 -
1. Finally publish some of my open source projects.
2. Career progression (move to more of a tech leadership role).
3. Stop taking shit from managers who know nothing about code. -
Me: well guys, after the 4th attempt and a week of waiting, I’ve gotten a response from the remote backend team about the errors affecting this release. Which are the same issues affecting the last release 2 months ago. The findings are: “there is in fact some issue with the API”.
I’d like to thank everyone who put in so much effort to get us to this momentous step forward. We can expect a fix any year now.
*equally sarcastic colleague on another team listening in*:
oh wow, this months long thing has just been “some issue” all this time? Well that’s fantastic. You should mark the ticket as “done” and reply “thank you” for all their hard work.
..... I laughed so hard at how ridiculous all this is and the joke, that I nearly did, hoping someone from product/business would have to review it1 -
Me: Anytime 9am - 12 my time suits me fine.
Him: Sure, noon our time suits us fine.
Me: *talking to myself* I said no later than 12 my time, theres a 2 hour difference. FFS, uh, I'll have to cancel this, move that around, skip that, ARGH!!! fucking hell jackass ... FINE!!!
...
Him: That calendar invite is for 4pm our time, thats a little too late for us.
Me: ...... but they are 2 ..... 2 hours ahead so ..... oh, thats 10am my time .... oh shit2 -
Have I mentioned lately how much I LOVE the stability of slack (and electron apps in general)?
Got notified of a new message in slack, clicked the channel and this is what I see, even after a restart. No content or UI controls of any kind are being rendered. No workspaces, no loading spinners, no errors, no warnings ... just nothing.
I don't give a fuck about your integrations, apps, giphy, video calls, search, threading ... I just want to read text.
Piece of fucking shit9 -
Last night I met up with some old colleagues for food and drinks to have a catchup. Things have been stressful in work, was great to get out and have a bit of a rant and just relax ... until I saw the menu.
Hamburger:
xyz dressing / sauce, crispy onions ... and cheddar cheese.
That sir, is a fucking cheese burger, and just piss poor documentation. How have you managed to stay in business with such misleading information and false advertisements in your menu.
Thank you for ruing my evening!6 -
Working on a project where the coordinator is insisting on using OneDrive. Lost the link he sent out in an email so decided to:
- Google "OneDrive": Eventually brought me to "office.live.com/...." with a view of my settings and apps ... no OneDrive.
- Spent a while using a bit of logic to click around and find it, forgot logic doesn't work well with MS products and ended up on Outlook instead.
- Spent a while searching for the original email with the link, found it, brings me to "...sharepoint.com/....".
- Inside sharepoint (OneDrive?) the banner says "Office 365".
- But the browser tab says OneDrive.
Are Microsoft just afraid of consistency at this point? I mean seriously, pick a name and use it everywhere. Why is that so hard? why is that so complicated?6 -
"Users don't need or like detailed error messages. Just use a generic phrase like `an error occurred`. Visually it looks nicer and they won't read it anyway"
- Lead UI / UX Designer, large m.n.c, 10+ years experience10 -
Boss: We need health data for this iOS app.
Me: Cool, so we'll use apples HealthKit.
Boss: No that requires the user agrees to it.
Me: ... well yeah ... its private data.
Boss: No we need it to work regardless. If the user says no to HealthKit, just give them textfields for all the metrics HealthKit has and they can enter manually.
Me: .... but ... eh ....
Boss: and we'll partner with some companies and support their devices.
Me: ... see, the thing is ...
Boss: We also need to store it locally and then sync it to the cloud app. What do you think?
Me: ... ... ... no2 -
Co-worker keeps cursing in Spanish and then smacking the table.
When it happens I have 2 choices:
1. Keep suppressing the rage until I can't take it anymore and book a meeting room just to get away.
2. Ask him to keep it down, to which he replies sorry followed immediately by "can you take a look at this?", which turns into 20 mins of teaching him how to use google.
I'm one bad day away from taking a swing at him.11 -
I've come to a conclusion today: Management are fucking with me. I know it sounds far fetched, but its the only thing that makes sense.
I was in a meeting today, discussing some bad emails back and forth. Part of my issue was the amount of time spent on useless meetings, or waiting around to give demos.
The meeting got cut short, so I could prepare a demo for a VP ... after an hour and a fucking half of waiting around ... theres no time to see my demo.
What the actual fuck, seriously .... seriously what the actual fuck. What if the name of mother fucking christ is going on with this team, that they call me into a mother fucking meeting to discuss the "developers attitude" only to go and cut it short ... so they can fucking waste my time ... for the second time in 3 mother fucking days.
Oh i'd rather fuck myself with a cactus than spend the rest of my days dealing with this utter bullshittery. -
Starting to work with a new senior designer in the remote office (red). Spent 4 days explaining to him that we need .png's in multiple sizes for the app, trying to teach him to use Zeplin to let us export them. Everything failed, his manager told him to just send us the .png's via slack ..... has he seen a computer before?11
-
It fucking staggers me how many backend/devops-y people don't understand what a client side "request timeout" is, versus a server side one.
What does it mean:
The client was fed up with the servers bullshit, and decided to piss off and not wait around for the server to take forever to respond, because life's too short.
How not to solve/debug this issue:
- "I've checked the API request in tool xyz, and it works fine for me"
Congratulations, you've figured out how to call an API once, in isolation to the rest of the application, and without any excessive load. And using a different client to me, with a different configuration. Lets get back to actually looking at the issue shall we?
- "I only see HTTP 200's in the logs"
Yep, you probably will in most circumstances, because its the client complaining about it taking too long, not the server. If the server was telepathetic and knew what the client was thinking/doing at all times, we wouldn't have half of the errors we do.
- "Ah ok, I understand ... so how do I solve this?"
Your asking me? I don't fucking know, I didn't build the server! Put better logging in place and figure out why sometimes it takes forever.
Jesus fucking christ14 -
Currently in the middle of quarterly planning (its been fun so far). Needs to be signed off by business today.
- My team has ~25 man weeks available in terms of capacity.
- Looking at only priority 0 tasks, last night we calculated the ask from product stands at 64.
- Including P1's, P2's etc. its well over 100 man weeks.
- Email was sent around from business with a list of tasks, asking which can be dropped, de-scoped etc.
Product (non technical) response this morning:
- This one can't take 2 weeks, its not that complicated.
- This one needs to stay, It was originally a Q1 task.
- Can we make this one smaller? (currently only a 3 week task)
- 14 comments on other teams items.
<extreme-sarcasm>
... ah perfect, that cut down the items by less than half. We are now ready for the deadline in 4 hours to have all this signed off on. Great job everyone. Thanks for all the insightful discussions. Go team!
</extreme-sarcasm>6 -
Well I’ve had my LinkedIn status to open for a little while now. Time to check what exciting offers (me, an iOS developer / team lead) has received.
- Senior python engineer with multiple years machine learning experience.
- a job 3000 miles outside the only city I’ve marked myself as interested in.
- Architect for a .NET team.
- Senior UX Researcher.
- The same job for a bank 6 times. But each time they won’t initially give the name of the company. Only “my fav client to work with” until I respond.
... not much hope in this process9 -
Backend: Sorry the fix we had isn't going to work. Turns out app is sending an "undelivered" status after you call the API where you claimed we had an issue. This is in fact the cause, please address it.
Me: We do not have an "undelivered" status anywhere in our codebase. We do not do this.
Backend: *CC product* turns out this issue is only affecting 0.1% of users, its very minimal. Lets push ahead with the release.
Product: Ok, lets go live.
Me: ... ... ... we all just gonna ignore that "undelivered" bullshit? ... ok ... very stable release, here we go.3 -
Do Travis CI's email subjects really need to say "Still failing". As if I don't feel bad enough.
Fuck you Travis i'm trying!!!1 -
So i've spent the day:
a) Finding evidence (again) of product not doing their job, to send on to one of my managers. So we can again discuss why she's still here.
b) Explaining to my iOS developer that although all the devs are in agreement that 2 of them are not pulling their weight and shouldn't be here ... they will definitely still be here because management actually want to keep our multi-timezone setup as they see it as beneficial. We, do not.
c) Having a meeting with another manager, in a different department. (Backstory, a member of their team has had many complaints filed against them by various members of the building, including one from my team). To let them know that my employee felt like you ignored her concerns and complaints and are going to allow this person pass their probation without considering the implications.
I hope to actually find some time in the reminder of the day to actually achieve something, rather than just telling skidmarks that they are in fact skidmarks.
... but probably won't due to 3 hours of pointless back to back meetings, where we answer the same few questions every week.
I really do love being a tech lead. So refreshing. -
Me: Requirements changed a lot since we first started. If we re-write a few sections of the app we can drastically reduce bugs, crashes, improve debug-ability etc.
PM: sure let me push back this unnecessary feature and you can do that next.
*woke up*
*cried at the thought of how amazing life would be* -
practiseSafeHex:
software engineer, iOS developer, mobile developer, professional "here is the answer I gave you the last time you asked me the same question" responderrant wasn't busy anyway ... not stop asking me the same f**king thing apparently nothing better to do bad day3 -
PM: Ok Android, i've reviewed the latest build, you are good to release. Waiting on iOS's build to test.
Me: ... are we not holding all builds until we hear back from backend about that bug?, as we likely have to change something on our side?
PM: Which bug?
Me: ... the only one we discussed yesterday in the team meeting.
PM: How many customers is it affecting?
Me: that we know of, one ... the CEO of our company
PM: oh that one, yeah were not doing that anymore.
Me: WHAT? i've been waiting all day / night to hear back. Why are we not doing this?
PM: ¯\_(ツ)_/¯ ... Everything is too messy at the minute anyway, the release plan is changing every day. Need to keep it back in line.
Me: ... the plan has changed exactly once. We had a plan at the start of last week for the last release, we changed it YESTERDAY to include 2 critical bug fixes. The only issue with the plan changing is nobody telling us these aren't bugs anymore
PM: We can discuss tomorrow in the team meeting.
CEO: oh hey guys, yeah we pulled that bug fix. Its not really a bug, more like a missing feature. No way it will get done before xmas. Going to live with the way it works for now and fix it properly next year.
Me: Ok, fair enough, but we really need to be told these decisions.
CEO: sure, sorry, didn't think anyone was blocked by this. What was the blocker?
Me: ..... you asked me yesterday to get this bug fix in the build ... you asked for the final build to be made today so we can go through the app store review. As we all discussed yesterday, today is kind of the last day we can really do this.
CEO: ok, its late, we can discuss this tomorrow in the team meeting.
Me: ..... ..... ..... ..... sure7 -
Although I dislike Microsoft tremendously, I had faith that they wouldn't be stupid enough to fuck up Github. Until I just read an article that the new CEO of Github will be the former CEO and co-founder of Xamarin, who says he wants to "make Github better at being Github".
A hybrid tool creator wants to make Github better. Ladies and gentlemen, we are fucked.6 -
Me: Right, its Monday, time for a fresh start. Things have been unbearable, but i've nowhere else to go just yet. I gotta just dig deep, ignore everything bad and just get it done, It's all about positivity right? Lets just ignore the little things and keep moving.
*My morning so far, 2 hours in*
Remote dev: (timezone 5 hours earlier than me) Hey so whats the plan for this quarter?
Me: ... I posted a big detailed plan in the group chat on Friday night so you wouldn't be delayed ... but anyway, lets just move on. I need you to work on A, B and C. A is just copying what Android has already done, for B one of the backend guys working next to you is doing this, he'll be able to help you. C is all documented in the ticket.
Remote dev: cool thanks.
Local dev: So I was just chatting with remote dev ... yeah he told me he has no idea what he's suppose to do.
Me: ..... Ok i'll book a video call with him in the morning. Can't do it right now.
==========
Remote dev: Hey i'm helping the BE team do some testing. I found a bug in Android. Homepage says theres no trips. But Offers screen says there is.
Me: Ok so just to confirm, The "available" offers screen has offers to accept, but the white notification on the homepage saying "You have X offers to accept" is not showing up?
Remote dev: Correct!
*debugging for 5 mins*
Remote dev: actually no, the "accepted" offers tab has offers, but the homepage says there are no upcoming offers to work on.
Me: ..... ok, thats very different ... but sure, let me have a look.
Me: Right so the BE are ... again ... sending down expired offers. Looks like the accepted tab isn't catching it and the homepage is.
Remote dev: Right i'll open a ticket for Android.
Me: ... and BE team.
Remote dev: why?
Me: ... because they once again have timezone issues. This keeps causing issues in random places. BE need to fix this everywhere.
Remote dev: right, i'll chat to them and see if they can fix it.
==========
Product: So this ticket xxxxx is clear right?
Me: eh, kind of, so you want us to add feature X to user type A?
Product: correct.
Me: right but I don't see anywhere talking about the time it will take to build the screen for feature X
Product: What do you mean the screen?
Me: ... well, feature X is only accessible on screen Y ... we would have to change screen Y to support user type A ... you know ... so they can ... use the feature
Product: .... hhhhmmm .... i suppose you are right. Well we can't just add screen Y, we'll have to add W and Z, it won't make sense without them.
Me: ... ok sure, but our estimates put us over for this quarter. I don't think we can just add in 3 screens.
Product: No this is a must have.
Me: Ok so we'll have to drop something else.
Product: hhhmmm, don't think we can ... let me get back to you.
==========
Backend team invited me to a meeting at 6am my time on Friday.
==========
... 2 hours into Monday ... there must be vodka around here somewhere -
Everyone given the iPhone a hard time over no headphone jack, while Samsungs are exploding.
Decision time:
- living with an adapter
- living with chargrilled testicles
Choose14 -
Have I? You're asking me?
I have no fucking clue Lync, I don't see anything. Why don't you tell me if I have ... and then where it is!1 -
When you can't figure out where you are supposed to add your code in the teams massive android spaghetti codebase. So you just add logs to every function that might be related to track down the function you need.1
-
Client: “I’m sorry I just don’t understand the issue with the contract?
You said logging into Facebook was easy, what’s the issue with feature X (= complex graph API queries based on opinions and sentiment) and displaying images and videos, it’s the same thing!!!”
... no sir, it is NOT2 -
Ah, new feature submission to app store day.
- Tests passing = check!
- App built = check!
- App manually tested = check!
- App store content = check!
- Boilerplate answers to the same 6 questions from PM, every time we go through this = check!
Ready to go baby!! -
Managements definition of an MVP:
- Integrate our backend and database with a similar-ish, older internal system built on a different tech stack and different rules.
- Merge the functionality and delete the old one.
- Modify our system to accept 2 types of logged in users.
- Have 2 versions of our API that return different values.
- Update our mobile app to render different data based on which user is logged in.
- Onboard the old system users to this new system.
My definition of an MVP:
- Tell the store we are taking over, that they have to print their labels from our tool, and onboard the users to our app.9 -
When you find a tool / service online, go to the pricing page and it has a "get a quote now" button.
You can already tell its a massive rip off, but they feel the need to explain to you why.1 -
Right i'm building a new interview test. Short and simple, I give the potential hire a laptop with a browser open on this: http://jasonette.com/
If he / she recoils in horror, they are hired.20 -
Recruiter: Hi practiseSafeHex, you were speaking to one of my colleagues recently and I know at the time you said you weren't interested in interviewing with us. I just wanted to check is that still the case?
Me: Yes I haven't changed my mind since last week. You still have awful things on your glassdoor page for my country, and its still a role / area i'm not interested in. Please read my responses and please fuck off2 -
IBM job requirements:
- 12+ years kubernetes experience
- kubernetes is 6 years old
IBM, never change cheered me up today
https://theregister.com/2020/07/...4 -
Dev lead on another team: Ok we can build that API for the mobile apps, we'll generate everything, generate printable images for the labels, persist it all and do all the relevant lookups and checks. Do you need an SLA?
Director: Yes, 9ms
*silence*
Lead: Sorry .... 9ms?
Director: yeah, its a must have
Lead: ... the speed of light wouldn't even let us transmit it that fast18 -
Californian PM: Hi team, can I get confirmation from you if your team will be picking up this ticket xyz, currently assigned to California team, in Q4 please. Thanks
Local Manager: Why would we pick it up if its assigned to the California team?
... tomorrow is my last day here ... i'm not unhappy about this9 -
Dev: Hi Guys, we've noticed on crashlytics that one of your screens has a small crash. Can you look?
Me: Ok we had a look, and it looks to us to be a memory leak issue on most of the other screens. Homepage, Search, Product page etc. all seem to have sizeable memory leaks. We have a few crashes on our screens saying iPhone 11's (which have 4gb of ram) are crashing with only 1% of ram left.
What we think is happening is that we have weak references to avoid circular dependencies. Our weak references are most likely the only things the system would be able to free up, resulting in our UI not being able to contact the controller, breaking everything. Because of the custom libraries you built that we have to use, we can't really catch this.
Theres not really a lot we can do. We are following apples recommendations to avoid circular dependencies and memory leaks. The instruments say our screens are behaving fine. I think you guys will have to fix the leaks. Sorry.
Dev 1: hhhmm, what if you create a circular dependency? Then the UI won't loose any of the data.
Dev 2: Have you tried looking at our analytics to understand how the user is getting to your screens?
=================================
I've been sitting here for 15 minutes trying to figure out how to respond before they come online. I am fucking horrified by those responses to "every one of your screens have memory leaks"2 -
New job was killing me. remote team has an 8 hour time difference to us, and no understanding of it. Constant last minute invites to meetings at 10pm my time. Made worse by the fact that many were unnecessary, duplicates or just plain pointless. So for the last few weeks of last year I made in my mission to clean it up.
New plan: move my hours around on Mondays, stay later, move all the meetings back to back and get everything out of the way for the rest of the week.
First day back and heres how the new plan is shaping out:
- 5:30pm meeting organiser decided we actually need 2 almost identical meetings instead. Sends out a big team meeting for the same time as my 1st meeting at 5pm, as well as the existing one for 5:30pm. Already agreed on by everyone else, so had to go.
- Cancelled my original 5pm meeting for today, said we'll re-arrange it for earlier going forward (not enough time for notice for remote team).
- Went into my new 5pm meeting, turns out we don't need 2. Got everything done by 5:30pm.
- Just to be safe though, a new invite will be sent around for the hour of 5 - 6 "Just in case".
- My 6pm meeting just got cancelled as she has a conflict (despite setting it up 2 months ago)
- Now I have to wait around, after hours for my 6:30 meeting.
..... believe it or not, this is progress.
Happy new year!6 -
Product manager: ah ok I understand. So is the plan still to do xyz?
Me: .... STILL?? ... when was that ever the plan? .... ok when you said “I understand” what did you mean?3 -
Me: I just can’t keep working these hours. I’m on calls and emails 8pm and 9pm 4 times a week.
Boss: ok, but come on, Office X does be on for the same calls but it’s midnight their time.
Me: ... How does that make anything better?4 -
What is it with this team and the developers it attracts. 2 devs joined and left, both had several years of experience, both couldn’t google an issue to save their lives and needed to be helped 24/7.
Now we are mentoring a PHD student for a piece of his project. Dude was left stumped by an error message that said “Can’t find file at path ...” because the path didn’t exist. He spent a few hours trying to fix it before asking for help.
How, HOW are people getting through college / university without being able to read, or debug such a simple fucking error message2 -
Follow up to yesterday’s “hybrid/cross-platform is shit” rant about Electron apps being blocked from the Apple App Store.
See the below image of the github issues template on the Electron repo, to file an issue for this problem.
Yes, this is such a common issue with their product, they’ve made it easier to file a github issue. Let’s not address the fact that there is a fundamental flaw in the approach they are using, let’s just make it easier to open a ticket while everyone waits to see if we are allowed to ship our app.
I’ve also heard talk that under some circumstances it’s possible for them to patch out the libraries causing issues. Apple provides tools to identify these libraries ... therefore Electron is doing fuck all to adresss this issue, and adopting a “wait until someone complains” style of approach.
A+7 -
So after a llllllloooooonnnnnnngggggg struggle with the team i've been working with, today is the day that my group move to a different org and start working with a different team.
This is a huge step in the right direction for us and we are so happy. This new team is much bigger, but has been around for a lot longer and has proper processes in place and works a lot smoother. Never going to be perfect, but still going to be much more workable and we are so ...... thats an interesting linter file, hhhmmm they have disabled all the checks for the stuff that will cause crashes, like force unwrapping ... but they've enabled the rule to make sure our imports are sorted alphabetically
... nope, cant do it, no sign of intelligent life in this company at all. linkedin here I come.7 -
Describe your stress level in one sentence.
I'll kick it off:
"If he sends me one more passive aggressive email, or moronic statement, I will hit him with my chair until he stops moving"3 -
New dev: I need help with this issue. I've been debugging it all day.
*2 hours later*
Me: spent a while debugging it, eventually came across a stack overflow post that says you can't do that.
New dev: oh I saw that earlier, didn't think it applied.
Me: ... why ... accepted answer "It is not possible to do this, this way".
New dev: hhhmm, ok
... get the fuck out of this building immediately.3 -
Recruiter: Hi practiseSafeHex, how are things? 😎
———————————————
Bitch we aren’t friends. Where’s the job spec?8 -
Why do people insist on moving stuff on my desk!
I've very particular about my desk, have my monitors, laptop stand, stands for devices etc. setup the way I like them, and every so often someone sits at my desk when i'm not in and just shoves everything around.
Last company I worked for, I came back from holidays to a thunderbolt cable, the connector of which, had been crushed under the wheel of a chair, because someone left it on the floor.
... Is it wrong or not "proper", to send around an email saying the next person to touch my stuff gets stabbed?10 -
"Ah no, reusable frameworks and libraries are a terrible idea. What you need is a bunch of very lightweight files that you can copy / paste from project to project"
- Mobile Architect, Large m.n.c, 10+ years experience.4 -
Joined a new company / team to work on an iOS app that has 2 different backend environments "Dev" and "Prod". Also being referred to in iOS speak as "Debug" and "Release".
Been trying to get accounts on these backends (no sign up in app, its controlled via another process). Eventually get access to "Dev" for one of the regions, so I load up "Debug" and its not working.
This is odd, so I open the Android app and load "Dev" and it works? I then Notice Android has "Dev", "QA", "Staging" and "Prod" for every region where as iOS only has 2 of these.
So I go back to iOS and find the file for the settings and it has iOS Debug assigned a variable for the backend Dev ... which is actually pointing to QA. Because they use QA to Debug and not Dev.
... confused? join the club4 -
WTF is with the entire Angular2 eco system and "half instructions". Started learning it and every inch is a struggle, out dated docs and code samples and then this style of shit:
Google: "Angular2 and bootstrap"
Result: "Install ng-bootstrap to get native bootstrap components written in Angular by the Angular UI team"
Me: Install != work
Google: "ng-bootstrap not working"
Result: "You also need to install bootstrap css, heres how"
Me: Install, plus try component
Error: "Bootstrap requires jQuery"
Google: "Installing jQuery in Angular 2"
Result: <Instructions>
Me: Install, still not working
Google "Angular2 ng-bootstrap bootstrap jQuery"
Result: "Don't forget to also include Tether"
WHY DID THE FUCKING "ANGULAR-UI" TEAM NOT MENTION ANY OF THIS6 -
PSA:
Next time you plan on changing all your model names from "xxxxx" to "xxxxxModel", under a minor version bump so that everyones CI breaks, in order to deliver no benefit whatsoever ..... don't8 -
Me: Hey can you sign up for tool X. Our company has an enterprise license, theres an internal form to fill out.
Him: Sure, I filled out a form and it says i'm on a waiting list, not sure if I used the right link.
Me: Was it a form on our companies intranet site?
Him: Yes.
Me: Did it say tool X on the top?
Him: Yes.
Me: Did it say sign up / create account?
Him: Yes.
Me: So I asked you to sign up for tool X under our companies license. You went onto our companies intranet, and filled out a form for that tool, that said create an account ... where exactly is the confusion? If there was more than one way to do it, I probably would have said something.5 -
Backstory: Offering manager brings a project through a few months of requirements gathering / feasibility study etc. Project spends 8 months with a R&D team to flesh out. Our team gets 6 months to turn it into a ship able product. 4 months in, offering manager calls a meeting.
OM: ok so you are all working on project X, well I need your input on something
Team: Ok, go ahead
OM: what do you think the app needs to do?
Team: ... I'm sorry?
OM: well we've been looking at it, and we don't think it does very much compared to existing apps. We need a killer feature but we don't know what. Any ideas?
Team: well we were looking at project Y originally, which was a lot more advanced. But you pulled the plug in favour of this.
OM: yeah, believe me customers will want project X a lot more. It just needs to do something interesting ... you know what I mean?
Team: not really, if it doesn't have anything, why did we go for it?
OM: ok I don't think I'm being clear. Point is, if anyone has any ideas let me know, we need to ship it in 2 months and it needs to be killer
I handed in my notice that week and was asked why ... let's just say I told them. -
A dev I know has changed his LinkedIn job title to “software extraordinaire”
... and he’s hopeless so it’s not even true2 -
My new favourite response to a bug ticket:
"But do you not remember we tested the implementation and it worked?"
... yes ... then it broke under other circumstances.
... must be terrorists or something2 -
Manager: Hey, what you working on?
Me: cough-finding another team-cough.
Manager: I didn't catch that.
Me: Sorry my throat is acting up today, i've been bug fixing all day.
Manager: Ah great, thanks.1 -
Colleague: v1 of your Bot + dashboard is due the end of March right? Hows it going?
Me: Well they say a picture speaks a thousand words so:2 -
Zoom: Don't worry everyone we'll deploy a work around to stop this venerability while keeping all the functionality in place.
Public: wouldn't it be safer to just remove some of these features? Someone will likely find another way around it.
Zoom: We feel comfortable with our decision and stand by our approach.
Apple: Fuck that - https://techcrunch.com/2019/07/...7 -
So Android phone makers have been lying about installing security patches for years. Hhhmmmm https://twitter.com/wired/status/...2
-
Friend: "You are very opinionated about mobile apps aren't you?"
Me: "Yeah, but I have the right opinions"1 -
“No it’s better this way, it’s an enterprise grade architecture design” - someone who was no idea how to build an app2
-
The new mobile app codebase i'm working with, was clearly written by someone who just read a book on generics and encapsulation.
I need to pull out 2 screens into a separate library to have it shared around. The 1 networking request used is wrapped up in a 'WebServiceFactory' and `WebServiceObjectMapper`, used by a `NetworkingManager` which exposes a generic `request` method taking in a `TopLevelResponse` type (Which has imported every model) which uses a factory method to get the real response type.
This is needed by the `Router` which takes a generic `Action` which they've subclassed for each and every use case needing server communication.
Then the networking request function is part of a chain of 4 near identical functions spread across 4 different files, each one doing a tiny bit more than the last and casting everything to a new god damn protocol, because fuck concrete types.
Its not even used in that many places, theres like 6 networking calls. Why are people so god damn fucking stupid and insist on over engineering the shit out of their apps. I'm fed the fuck up with these useless skidmarks.3 -
In today’s episode of hybrid/cross platform tools are shit:
Electron 6 and 7 use private API’s on Mac OS, violating apple App Store rules, and apps now can’t be submitted.
The responses also say that continued attempts to try to hide private api usage may result in developer accounts being terminated.
So by using electron, you may get your Apple developer account closed down permanently .... rightly so for picking electron in my mind
Source:
https://david.dev/you-cannot-submit...12 -
Debate (with rant-ish overtones):
FYI, while it is a debate, its a practiseSafeHex debate, which means there is a correct answer, i'm just interested in your responses/thoughts.
Ok lets kick off. So the remote team I work with had an opening for a new iOS developer (unrelated to anything to do with me). They interviewed and hired a guy based off his "amazing" take home challenge.
The challenge consists of 4 screens and was for a senior level position. For the challenge the interviewee created a framework (a iOS library) for each screen, included all the business logic for each screen inside, each one needs to be built separately, exposed some API/functions from each one and then created a main project to stitch it all together.
Now, my opinion is, this is highly unscalable and a ridiculous approach to take as it would add so much unnecessary overhead, for no benefit (I am correct btw).
The interviewee said he did it like this to "show off his skills and to stand out". The remote team loved it and hired him. The challenge said "show us the code standard you would be happy to release to production". I would argue that he has only demonstrated 1 extra skill, and in exchange delivered something that is unscalable, going to be a nightmare to automate and require huge on-boarding and a paradigm shift, for no reason. To me thats a fail for a senior to not realise what he's doing. This person will be required to work alone (in part), make architecture decisions, set the foundation for others etc. Having someone who is willing to just do mad shit to show off, is really not the type of person suited to this role.
Debate!11 -
We have to use this tool in work for classifying new and existing projects for GDPR. Long story short you have to fill out a REALLY long questionnaire, then it gets reviewed by someone in legal. The tool will also assign you tasks and suggest actions to common issues (e.g. suggesting a banner to explain cookie policy if you tick a certain box).
I have spent about an hour trying to re-assign the assessment I started, as i'm due to leave the company in a few days, to the guy taking over from me.
1. There is a “generate shareable URL” button, with the ability to click a button that says “replace me with the logged in user who opens this”. All it does is duplicate the name and description fields and send a new copy to that person, with no access to any of my other content or answers.
2. I did find a re-assign button eventually, again all it does it create a duplicate, and throws and error saying names must be unique when I try to save it.
3. While I couldn’t find a way to do that, I did find another button to at least assign the reviewer. It told me i’m forbidden to change the reviewer on assessments i’ve created.
This is THE WORST piece of nonsensical shit on earth. The entire application is absolute garbage and sssssssooooooo slow.
When you first create an assessment it brings you to a page that has all the questions, makes sense right? Wrong. All the questions are in read-only mode, and they are simply there as a "this is what you can expect to see later on", telling you whether or not they will be freeform, multiple choice etc.
The way to actually answer the questions is to click the "start survey" button hidden in the "status" dropdown.
I don't have much advice to anyone around GDPR, but please stay the hell away from TrustArc. -
In my view, there is exactly 1, very specific occasion, when hybrid / app wrappers / webviews etc. are the right approach for a mobile app.
1. Never8 -
Theres a debate in my company about whether or not to be using RxSwift on iOS apps. I'm not 100% convinced. Today we had two submissions for a coding challenge come in. One uses nearly all the same Rx modules this company does, one was vanilla Swift.
Just by chance noticed the vanilla app writer contributed ~5k lines of code to the challenge overall. Including libraries, the Rx one contributed ~45k.
That to me is just bat shit crazy. It would want to be the most amazing, time saving, bug reducing thing the world has ever seen to justify that volume of code.4 -
Best:
Having one of my projects go so well, that the co-ordinators asked me to speak at a conference they are hosting next year (will be my first time).
Worst:
Hiring 2 developers in a row, for the same position, both unable to debug a problem, both unable to use google, both with a tendency to just stop working if they get blocked.
Sadly my 2018 interviews will now contain these questions:
- *opens www.google.com*, Have you ever seen this?
- What do you do with it?
- *shows screenshot of a 'file not found' command line error*, tell me what this means?
- Bonus question, how do you fix it?1 -
5 of us working for a larger team were tasked with doing some R&D, we blew everyone away and were given funding to start a new team and hire people to make the project come to life.
One of the high level sales / product managers we were reporting to, secretly had another team work on a similar idea because he needed it quicker (i.e. no time for research, just build it).
After forming new team, we were asked to work on his project instead because it was further along. 4 months later, big knob comes to a meeting and basically says "You know what, this doesn't look like we have enough features, we need more, but I don't know what".
Project blew up 2 months later, head of the unit kicked up a shit storm saying how badly everything was planned and canned everything. Now one of our clients is building nearly the same thing we were originally working on, the team no longer exists and i'm back on the R&D team.
Don't get me wrong, I LOVE the R&D team, actually didn't want to leave in the first place but was told I had to. But the sheer anger and frustration to see that walking cluster fuck strutting around like his shit doesn't stink, derailing entire teams, meanwhile we can't hire new staff due to lack of funding.
Heres an idea, fire the fucktards bleeding us dry ... then we'll have lots of funding. -
It has been a rough day dealing with third party vendors, who only have a few IQ points to share among the company. Nothing better to cheer me up than listening to my favourite Christmas song2
-
I'm sick to death of hiring people from other companies and explaining GitFlow and why its useful (what are you people doing?).
Then watching them doing it wrong, pointing out its easier to use something like sourcetree. Which leads to "... well see, the terminal is just more efficient, tools like sourcetree are bloated".
Ok fair enough, well heres the deal i'll make with you, while using your "efficient tool", stop breaking our workflow and i'm fine for you to keep using it. Otherwise, stop being a dick and be a team player.18 -
Me: Ah, just have to finish this one small feature today and this whole massive update is done. Everyone will be off my back, things will calm down. Gonna be great.
Life: hey man, you know what I was thinking? It’s been a really long time since you had one of those vomiting bugs ... you know the gut wrenching, massive headache, can’t do anything but stare at the walls kind of flu’s?
Me: ...... eh I’m ok thanks.
Life: oh buddy you don’t understand ...... RUN!!!2 -
Having trouble logging into an app I am suppose to be working on with another dev. Debugging and found this:
// TODO: Temporary Optional because the API is not working properly
... i'm not happy for so many reasons -
The team of interns I'm working with are all off this week. I was given 2 skilled colleagues to cover for them. We had our first scrum today:
Boss: so what are you working on?
Me: I'm adding new feature 1 + 2.
Boss: and you?
Colleague: I am ... removing the shit -
QA: When I start the onboarding process, kill the app and reopen it, I return to where I left off with no way to go back to the previous screen.
Me: Please click the back button in the top left corner5 -
*Achievement unlocked*
The award of:
Asking “Can you please fucking enable some way for me to mock the networking requests?” A record number of times to unique third party libraries in a week
Awarded to:
practiseSafeHex7 -
Background:
New guy on our team, deadline coming up. I bring him into a meeting room, explain what the project is about, quick run down of the code. Then spent a while explaining what we have to do next, gave him a piece to do, took a piece to do myself.
The fuck up:
A few days / week pass by and I ask to check on his progress. Fucktard decided an hour after the meeting that it would be easier for him to use a different database than what the project was using and decided he wanted to work on some other feature instead.
My stuff was dependent on his stuff, so not only did he not do his work but stopped me from delivering mine.
Let’s just say there was a few stern words in a meeting room shortly after that.1 -
Need to send a mail to a more senior member of the team. Could use a hand translating the below into something more work appropriate.
"You have reached a new level of wrong, you insufferable prick, please just shut up and leave"11 -
New mobile challenge I created:
... treat this as production code and show us your best practises and thought processes ... please list and explain any third party libraries used.
First submission:
I've used library X, although it has a major UI defect when rotating the device, it should be good for a simple test.
... wrong2 -
Reading all practiseSafeHex's rants, gives me hope that i can get a job once i get to that point XD1
-
Saw a post talking about vegans which reminded me of the below video of "if meat eaters acted like vegans". Probably the best thing you'll see all week. Personal favourite quote (which I hope to use one day):
"Broccoli? thats what my food eats. Thats my foods food and I don't appreciate you eating that"
https://youtube.com/watch/...2 -
Samsung S9 benchmarks: slower than a 2 year old iPhone, more expensive than current:
https://twitter.com/codinghorror/...14 -
Not sure if this is necessarily a prank, but I was working on a team that was split in 2. We had a group of senior devs in one country, and junior devs in another (god only knows why, and yes I complained about this a lot).
The "lead" of the juniors was very stubborn and refused to adhere to the official standards, as his way was better.
I was working on an app with him, I was fed up with how badly the app was working, how hard it was to find files etc. So I waited for him to be off on holidays and pulled some extra hours to completely re-do the folder structure, rip out his persistence layer and a few other things.
When he came back he lost his shit and complained to the architect. The architect (also fed up with his shit) told him that we don't have the time to invest in reverting back everything, and loosing all the new features I added on top, especially since the app is now adhering to standards.
Never felt such satisfaction in my life. -
"Were introducing 'workday' across the entire company to improve efficiency and increase easy of use"
44 items to book a day off? ... and it doesn't even email me to tell me its approved.
Workday is a horrific piece of crap6 -
Internal mail form CIO's office:
"Thank you for being part of the internal trial for NPMe, we have decided to remove this tool in favour of Artifactory because of its support for multiple platforms and tools. We are sorry for the inconvenience, here is a link to migration scripts ..."
Migration "script" readme, please clone this repo, create file A, and B, and install these 2 dependencies.
Dependency 1:
- "install via homebrew ..."
- .... homebrew needs to update, checking for updates
- 10 mins later = Update failed, please upgrade to Ruby version 2.3
- Installs ruby version manager
- GPG signature verification failed
- Install GPG v2 + accept keys
- Install ruby version manager
- "please execute this command before running rvm"
- execute command
- "rvm install ruby-2.3"
- Install failed, please see log file
- Opens log file
- "Xcode on its own is not sufficient, please install xcode cli tools"
- Install xcode tools
- 5 minutes later -> "rvm install ruby-2.3"
- 10 minutes later "brew install jq"
Ok back to read me, "login to Artifactory, go here and copy paste XXX."
- Login to Artifactory
- Eventually find repo
- Login again to actually see credentials for some reason
- Screen doesn't match instructions in readme
- Click around
- Back to readme
- Back to artifactory
- Login again
- Execute command auth / setup command
- Copy contents to npmrc file .... now all my scoped packages are going to point to 1 specific repo
Fuck the migration, Fuck these shitty instructions, i'll set them all up again manually. See tags below for further opinions on this matter.undefined fuck ruby fuck homebrew fuck this fuck shitty cli fuck artifactory fuck cli fuck jq fuck rvm2 -
Reading a Ray Wenderlich book to try give RxSwift a go. Book is well written and going well. But I’m grinding my teeth at the fact all the code samples use 2 space indentation. Despite the fact apples standard is 4 ... and you know tabs would let us decide.
I know it’s a small thing, but it’s really pissing me off3 -
Project manager, who i've complained in the past is neglecting critical things that he doesn't want to do, decided today to cancel our weekly planning meeting, to have the below conversation with me 1:1. Its very long, but anyone who has the will to get through it ... please tell me it's not just me. I'm so bewildered and angry.
Side note: His solution to the planning meeting not taking place ... to just not have one and asked everyone to figure it out themselves offline, with no guidance on priorities.
Conversation:
PM: I need to talk to you about some of phrasing you use during collaboration. It's coming across slightly offensive, or angry or something like that.
Me: ok, can you give me an example?
PM: The ticket I opened yesterday, where you closed it with a comment something along the lines of "as discussed several times before, this is an issue with library X, can't be fixed until Y ...".
"As discussed several times" comes across aggressive.
Me: Ok, fair enough, I get quite frustrated when we are under a crunch, working long hours, and I have to keep debugging or responding to the same tickets over and over. I mean, like we do need to solve this problem, I don't think its fair that we just keep ignoring this.
PM: See this is the problem, you never told me.
Me: ... told you what?
PM: That this is a known issue and not to test it.
Me: ..... i'm sorry ..... I did, that was the comment, this is the 4th ticket i've closed about it.
PM: Right but when you sent me this app, you never said "don't test this".
Me: But I told you that, the last 3 times that it won't be in until feature X, which you know is next month.
PM: No, you need to tell me on each internal release what not to test.
Me: But we release multiple times per week internally. Do you really need me to write a big list of "still broken, still broken, still broken, still broken"?
PM: Yes, how else will I know?
Me: This is documented, the last QA contractor we had work for us, wrote a lot of this down. Its in other tickets that are still open, or notes on test cases etc. You were tagged in all of these too. Can you not read those? and not test them unless I say I've fixed them?
PM: No, i'm only filling for QA until we hire a full time. Thats QA's job to read those and maintain those documents.
Me: So you want me to document for you every single release, whats already documented in a different place?
PM: ok we'll come back to this. Speaking of hiring QA. You left a comment on the excel spreadsheet questioning my decision, publicly, thats not ok.
Me: When I asked why my top pick was rejected?
PM: Yes. Its great that you are involved in this, but I have to work closely with this person and I said no, is that not enough?
Me: Well you asked me to participate, reviewing resumes's and interviewing people. And I also have to work extremely close with this person.
PM: Are you doubting my ability to interview or filter people?
Me: ..... well a little bit yeah. You asked me to interview your top pick after you interviewed her and thought she was great. She was very under qualified. And the second resume you picked was missing 50% of the requirements we asked for ... given those two didn't go well, I do think its fair to ask why my top pick was rejected? ... even just to know the reason?
PM: Could you not have asked publicly? face to face?
Me: you tagged me on a google sheet, asking me to review a resume, and rather than tag you back on 2 rows below ... you want me to wait 4 days to ask you at our next face to face? (which you just cancelled for this meeting)
PM: That would have been more appropriate
Me: ..... i'm sorry, i don't want to be rude but thats ridiculous and very nit pick-y. You asked my opinion on one row, I asked yours on another. To say theres anything wrong with that is ridiculous
PM: Well we are going to call another team meeting and discuss all this face to face then, because this isn't working. We need to jump to this other call now, lets leave it here.5 -
Pixel 4 has had to restrict brightness and refresh rate to make up for the smaller battery capacity compared to pixel 3.
So you get a phone advertised as 90hz refresh rate, but does 60 most of the time and only hits 90 when the screen is at a specific brightness.
The max brightness had to be capped at about half of what a similar Samsung can do. Deep inside the kernel there is a disabled high brightness mode, meaning without root access and some hacks, you can’t even get the phone it hit its physical maximum. Leading users to complain about the phone screen being too dark.
What a heap of utter shit.
Source:
https://arstechnica.com/gadgets/...2 -
When not logged in, twitter.com opens a welcome message and a login form. twitter.com/login opens a login page with a "remember me" check box so you can stay logged in.
Twitter don't seem to want visitors to their homepage to come back very easily.1 -
Worked in a company that had a lot of problems reusing code / UI across many similar iOS apps. Current devs were basically trying to build this: https://jasonette.com/ (after other multiple failed ideas).
I argued for weeks after joining that this is way too much, with better use of storyboards and autolayout we can fix the majority of our problems. They did everything short of laughing.
Few months later managers in my office were tired of them so gave me a chance, I build an app my way, the most senior of them build an app their way.
Long story short, my app was a bit more complex, both had the same amount of time. I finished 2 days before the deadline, he went 8 weeks over.
Never felt more vindicated in my life. Mysteriously he and another dev randomly "decided to leave" 2 - 3 weeks later. -
Area of focus: Native iOS dev
Why: Spent years trying hybrid tools, dealing with the most ridiculous errors, bugs and issues you can begin to comprehend and then ... something magical happened. I got a book on Objective-c, learned a little, tried a simple app ... and it worked ... like properly worked, and on all the devices without taking half the RAM.
I'll say that again as I don't think it landed. In Objective-c, I got no issues where only the CEO's phone + OS version meant I couldn't load a map and a pin (looking at you titanium!!!)
In Objective-c, I wasn't promised storyboards and autolayout, only to find out they are completely different, and may god help you trying to google the issues, as the only ones to show up would be the native tools (looking at you Xamarin)
In Objective-c, my app doesn't instantly consume 125mb of RAM to load a fucking webview (looking at you ... well nearly every other hybrid tool)
... it just works. Then Swift came along and things only got better.13 -
Me: We have a new research project for you. We need you to test these 2 new services, see how they will fit into the new application, look at alternatives if necessary etc. At the end we need you to write a report with your findings, showing how you would integrate them to achieve X, Y and Z, and how much it would cost each month.
Dev: sounds good, I'll come back to you when I have it.
*2 and a half weeks later*
Document paragraph 1: The new language translation service doesn't support the languages we need.
Document paragraph 2: Here's my proposal for integrating the new language translation service.
*review*
Me: So I had a look at the doc and it says it doesn't support the languages.
Dev: yeah unfortunately not.
Me: Ok, so when you discovered that, why didn't you look for an alternative? Or come back to me and say it's not going to work.
Dev: I dunno, I thought you'd want to see the rest of the research first.
Me: ... not if we know for 100% undeniable fact that it will never function.
Dev: Ah ok, I didn't think of that. I'll do that next time, don't worry.
... aw how sweet, he thinks there will be a next time. Poor guy.2 -
Me: Would you be free for a call sometime in the next week to discuss?
Him: yes
...... maybe theres a time / day that suits you????2 -
I've been toying with the idea of making a change to my working life for a while now. Its a big decision, and could affect something thats been working well.
But today I've made that decision ... and i'm going for it ... i'm going to leave my headphones in the office and stop carrying them in / out everyday.
Its a scary thought, but i'm ready for it. Wish me luck, see you on the other side!1 -
“hi all, we are cancelling the last two releases this year due to instability that we can’t fix by the cut off. If the server returns an error, every react-native built component crashes and stops working until a relaunch”7
-
Getting beaten up over the quality of an app i'm working on with 6 interns. We have a bunch of unit tests, was shocked to see so many issues ... until I looked at the tests.
A function returning a non-optional array has 1 check ... that the return value is not nil ... fml3 -
"But we already decided on this"
- or-
"We've done it this way before"
2 excuses that seem to allow you implement / design what ever the fuck you desire4 -
So a new dev had an issue, if the wrong credentials are in the code it will crash because the unauthorised error isn't being handled.
I physically added the error handler, to his code, on his machine ... 3 days later it's not there.
Asked him and he says "sorry I must have deleted it"
... that's grounds for dismissal right? ... like ... seriously2 -
"The tool to push new releases to the data centre blocked us last night. Saying all the nodes are 'unhealthy', resolve the issue(s) first. But then the remote team said 'we have a way around that' so we managed to get it deployed in time. We need to document the process as there were many ... 'shady' processes and steps involved lol"
- Manager explaining how the first production release on our new team went last night
... he called it a success1 -
Was hired as a mobile dev / mobile web dev, was told my main project would be integrating a tool with phonegap.
... 13 months later I was never asked to download phonegap and was now writing server side java. Surprisingly I left that job -
Xcode storyboards
I can't do it justice by explaining how many times having the entire UI flow in one file has helped me.
Even for unexpected stuff, like an Android dev joining the team and needing to know the workflow of login / registration -> print screen the storyboard.
Manager asking for all the different possible paths through the app -> print screen the storyboard(s).
And then live rendering of custom components to be able to see them while playing with alignments.
While it has its bugs, and could have a few more features, it's too useful to ignore.
I know many iOS devs don't like it, and that's fine because I don't like them either and I don't hire them ;-)1 -
Code review, intern style:
Intern: Here is my pull request ...
Colleague: I see a problem with x, y, z. Could cause memory leaks.
Intern: Oh yeah you are correct, i'll fix that in the next one.
Intern: *merged* -
My new favourite commit message:
"All changes as of 18th Sept"
How tremendously useful? There I was looking to know what changes were made to enable a feature / service, thought I could look for that in the commit message, but no you've given me a much more efficient way of finding out.
I simply need to download the contents of your memory, find out what date you made a change, and then dig through the massive commit to find the piece of info I need.
Forget experience using Git features, managing merges, following Git flow, or even any other SCM ... how can people be so tick when it comes to recording what they've done.
Heres a little cheat sheet for those struggling:
- Commit message
Describe what you actually ****ing did. Don't tell me the date or the time, thankfully Git records those. Don't tell me the day of the week, if I need to know I can figure that out, just tell me what ... you ... did.
- Feature branch names
Now this is a tricky one. You might be surprised to know that this isn't in fact suppose to be whatever random adjective or noun popped into your head ... I know, I too was shocked. The purpose of this is to let other people know what new feature is being worked on in this branch.
- Reusing feature branches
Now I know you started it to add some unit tests, and naming it "testing" is sort of ok. But its actually not ok to name it testing when you add 3 unit tests ... then rip out and replace 60% of the business logic. Perhaps it would have been wiser to create a new feature branch, given you are now working on a new feature.2 -
!rant
Need some opinions. Joined a new company recently (yippee!!!). Just getting to grips with everything at the minute. I'm working on mobile and I will be setting up a new team to take over a project from a remote team. Looking at their iOS and Android code and they are using RxSwift and RxJava in them.
Don't know a whole lot about the Android space yet, but on iOS I did look into Reactive Cocoa at one point, and really didn't like it. Does anyone here use Rx, or have an opinion about them, good or bad? I can learn them myself, i'm not looking for help with that, i'm more interested in opinions on the tools themselves.
My initial view (with a lack of experience in the area):
- I'm not a huge fan of frameworks like this that attempt to change the entire flow or structure of a language / platform. I like using third party libraries, but to me, its excessive to include something like this rather than just learning the in's / out's of the platform. I think the reactive approach has its use cases and i'm not knocking the it all together. I just feel like this is a little bit of forcing a square peg into a round hole. Swift wasn't designed to work like that and a big layer will need to be added in, in order to change it. I would want to see tremendous gains in order to justify it, and frankly I don't see it compared to other approaches.
- I do like the MVVM approach included with it, but i've easily managed to do similar with a handful of protocols that didn't require a new architecture and approach.
- Not sure if this is an RxSwift thing, or just how its implemented here. But all ViewControllers need to be created by using a coordinator first. This really bugs me because it means changing everything again. When I first opened this app, login was being skipped, trying to add it back in by selecting the default storyboard gave me "unwrapping a nil optional" errors, which took a little while to figure out what was going on. This, to me, again is changing too much in the platform that even the basic launching of a screen now needs to be changed. It will be confusing while trying to build a new team who may or may not know the tech.
- I'm concerned about hiring new staff and having to make sure that they know this, can learn it or are even happy to do so.
- I'm concerned about having a decrease in the community size to debug issues. Had horrible experiences with this in the past with hybrid tech.
- I'm concerned with bugs being introduced or patterns being changed in the tool itself. Because it changes and touches everything, it will be a nightmare to rip it out or use something else and we'll be stuck with the issue. This seems to have happened with ReactiveCocoa where they made a change to their approach that seems to have caused a divide in the community, with people splitting off into other tech.
- In this app we have base Swift, with RxSwift and RxCocoa on top, with AlamoFire on top of that, with Moya on that and RxMoya on top again. This to me is too much when only looking at basic screens and networking. I would be concerned that moving to something more complex that we might end up with a tonne of dependencies.
- There seems to be issues with the server (nothing to do with RxSwift) but the errors seem to be getting caught by RxSwift and turned into very vague and difficult to debug console logs. "RxSwift.RxError error 4" is not great. Now again this could be a "way its being used" issue as oppose to an issue with RxSwift itself. But again were back to a big middle layer sitting between me and what I want to access. I've already had issues with login seeming to have 2 states, success or wrong password, meaning its not telling the user whats actually wrong. Now i'm not sure if this is bad dev or bad tools, but I get a sense RxSwift is contributing to it in some fashion, at least in this specific use of it.
I'll leave it there for now, any opinions or advice would be appreciated.question functional programming reactivex java library reactive ios functional swift android rxswift rxjava18 -
Nearly me this morning:
Hi, thanks for reaching out to me to see if we'd be interested in partnering on the attached R&D project. I'd love to read the proposal but first, can we talk about your personal website? I noticed the link in your email footer and it offends my eyes beyond belief. Will there scope in the project to address this issue? -
On a doomed project. Nobody seems to know what anyone was suppose to have done last week, or the plan for this week.
I've warned them more times than I can count.
I could help, but I'll just sit here with my feet up, eating a snickers and watch them panic1 -
when you read an awesome @practiseSafeHex rant and share it on Slack
OMFG WHAT-THE-ACTUAL-F
this is soooo fucking broken, my eyes now have many relations to periods
shit... @DevRant fix dat...4 -
1 Week ago I took down the development version of an internal demo, leaving only the prod one (temporary space issue). Colleagues were told n+15 times via email, face to face, comments on tickets etc. The prod one has also been live for weeks, and again, they were told when it went up.
This just happened:
Colleague 1: practiseSafeHex can you help me, the demo doesn't seem to be working.
Me: *logs in*, *click around* ... seems fine dude. Are you using the correct URL: <prod-url>.
Colleague 1: let me try again and see.
Colleague 2: practiseSafeHex i'm with Colleague 1, were trying to use the demo, and its not working. Can you have a look, we need it.
Me: I just told him, its fine, I think you have the wrong URL <prod-url>. Can you try again.
Colleague 2: No I have the right one, can you check it.
Me: *does nothing*, yep i've had a look at it, can you try again: <prod-url>.
Colleague 2: Ah its back now, cheers.
They are with a customer now, so I won't say anything, when they get back, one of them is being castrated. -
Manager: Last release was really bad, it was late, there was confusion and a lot of frustration on the team, we need to do better. Any suggestions?
Me: Have you tired not being shit?
Me: ... I feel it would help a lot. -
(3 days on the project)
Colleague: Ah I finally improved something in this sorry excuse for an app these interns built.
Thought I broke it there for a minute, but the homescreen is back to showing 180 entries.
Me: Current released app only shows 1 entry.
Colleague: FFFFUUUCCCCKKKKK!!!!!! -
Worst code review had to be when a senior architect told me that my new library was good, but should be a bunch of files that we copy paste from project to project instead.
His comments were just so out of touch with a) what we were trying to fix with the team. b) basic understanding of good modularized code.
I’m far from a stuck up dev. Not stupid enough to think I’m better than everyone, or have nothing to learn from anyone.
But I totally had a “my boss is a ****ing retard” moment. It was hard to listen to him after this as it was hanging over my head “was I wrong? Or is this just no-library man striking again?” -
Just looked at a fellow devs code (has 4 years experience). His test rig has the same 5 lines of code, copy pasted in the same file ... 400+ times.
What is the appropriate action to take?8 -
To be able to convince an offering manager that his / her opinions don't always match what our customers want
-
- Pigs flying
- Rats singing opera
- Donald Tump not being a bigot
- Our remote office staff having a clue
... all things I have accepted that are impossible2 -
Schrodingers font size:
When you follow the directions given in the style guide, but it still doesn't match the mockups.
The chosen font size can be considered both wrong and right until examined by a member of the design team. -
I'm often asked if I enjoyed my time in college. Of course I did. Loved learning how to code, and had a great rapport with the lecturers. I remember our conversations fondly:
Me: Funny story, over the weekend I was out with friends an...
Lecturer: You have friends? -
Internal system sent me an email with a dead link, saying a certificate is due to expire. Couldn't find the tool, opened IM with help support and was greeted with a passive aggressive note:
"Did you know that the support staff you speak too will use the same website available to you to resolve the issue, have you tried searching here ..."
... well thank you chat bot, did you know I wouldn't be here if said website actually fucking worked?3 -
Project Manager logic (the best kind).
PM: Here are a list of the tickets we need to address next.
Architect: Hang on, didn't X raise a number of critical bugs yesterday? They were serious, we need to fix the critical bugs first.
PM: ... but he marked them all as critical
(so that means they aren't an issue? cool, i've been doing this wrong all my life)2 -
I'm facing a conundrum. I saw a job posting for <Company A> weeks ago, but wasn't really interested and moved on.
Got in touch with a standalone recruitment company today who had an exciting job offer. The recruiter refused to tell me the name of the company until he spoke to me as they directed him to not disclose the name of the company or any details until he has verified the candidate is genuine. To my absolute shock and disbelief it was <Company A>!!!!
So heres the conundrum. External recruiters don't lie, why would they? Clearly this company MUST keep their hiring top secret, and some poor employee didn't get the memo before posting that job publicly. Should I report the <Company A> employee?
I don't want to report them and get them in trouble, but feel I must in order to help the company fix this leak ... before its too late ... and people find out the are hiring!
Thoughts?5 -
Googles home mini has been recording everything and sending to googles servers because of a “bug”
http://news.sky.com/story/...8 -
Worked with a team of interns learning Swift. They had a really tight deadline, so they decided if they were not sure what the app should do if a nil showed up, they would just force unwrap and let it crash.
-
JFrog Artifactory uses HTTP POST for updating and HTTP PUT for creating.
... I'm correct to be offended by this yes?2 -
Your company bio says:
"We are a global network of elite, independent software engineers and digital designers"
And then you go ask a native iOS developer if he's interested in an EmberJs role ..... not very fucking elite apparently4 -
Had harsh words to a recruitment agency a few days ago who have been emailing me completely irrelevant job specs for weeks. (Side note, I don't know these people or how I ended up on the list in the first place, i'm not looking).
Got an apology this morning from one of the agents, their manager also just sent me a mail to apologise, as she can see from the records i've received a lot of crap ... but she also took a moment to let me know she does have a role that might actually suit my skill set.
Are you fucking kidding me?
"Why doesn't anyone reply to my emails" - because you are the devil and can't be trusted. -
Asked to implement a feature in a mobile app that wasn't actually supported by the backend. Feature had 3 possible values in the backend, only 1 and 2 were properly implemented. Below was the backend teams solution to support the third option.
- If the key is missing in API response A, means the user is not allowed access this feature.
- If the key is present in API response A, and missing from API response B, that means it hasn't been set.
- If both are the same value, user has that value.
- It will never be the case that both return option 3.
- If both are different values, one of them being option 3, display option 3.
this ... monstrosity, is in production to this very day. -
JSON.stringify()
It has the power to solve countless numbers of integration issues and has done what nobody else could ... tell me what the fuck the API returns -
In Rx, what is the point of returning Single for all of our networking request responses, if every call to that method, first of all converts it to an Observable so that it can use flatMap, filters, combineLatest etc.
I get that Observable's have more overhead, Single can only return once, thats all clear. But is it not MORE overhead to create a Single, return it, convert it and now have the Observable we were trying to avoid in the first place.
I don't know if its just Rx I don't like, or how the team here is using it. But it is pissing me off, to no end, how massively overly complicated this is. It really feels to me like this is following a textbook approach while ignoring all the practical details.
<rant>
Next person to say "because its the Rx way", is getting a monitor thrown at their head.
</rant>6 -
toilet.flusher.show()
... hmm ... not a UI issue.
toilet.flush()
Crash: "No function found"
... must be private, mother fu**** ...
...
...
// ¯\_(ツ)_/¯
user.leaveFloater(true)1 -
Was just asked to review a new set of libraries that the "experts" from our contracting wing created.
I opened one and the readme lists its features as:
Features:
- Feature 1
- Feature 2
- Feature 3
and the Faq is:
- Possible question 1
- Answer to question 1 -
No seriously, tell me more about how leveraging React-Native for sections of the app and creating these custom architecture patterns is going to revolutionise mobile development. I'm all ears.6
-
I need some opinions on Rx and MVVM. Its being done in iOS, but I think its fairly general programming question.
The small team I joined is using Rx (I've never used it before) and I'm trying to learn and catch up to them. Looking at the code, I think there are thousands of lines of over-engineered code that could be done so much simpler. From a non Rx point of view, I think we are following some bad practises, from an Rx point of view the guys are saying this is what Rx needs to be. I'm trying to discuss this with them, but they are shooting me down saying I just don't know enough about Rx. Maybe thats true, maybe I just don't get it, but they aren't exactly explaining it, just telling me i'm wrong and they are right. I need another set of eyes on this to see if it is just me.
One of the main points is that there are many places where network errors shouldn't complete the observable (i.e. can't call onError), I understand this concept. I read a response from the RxSwift maintainers that said the way to handle this was to wrap your response type in a class with a generic type (e.g. Result<T>) that contained a property to denote a success or error and maybe an error message. This way errors (such as incorrect password) won't cause it to complete, everything goes through onNext and users can retry / go again, makes sense.
The guys are saying that this breaks Rx principals and MVVM. Instead we need separate observables for every type of response. So we have viewModels that contain:
- isSuccessObservable
- isErrorObservable
- isLoadingObservable
- isRefreshingObservable
- etc. (some have close to 10 different observables)
To me this is overkill to have so many streams all frequently only ever delivering 1 or none messages. I would have aimed for 1 observable, that returns an object holding properties for each of these things, and sending several messages. Is that not what streams are suppose to do? Then the local code can use filters as part of the subscriptions. The major benefit of having 1 is that it becomes easier to make it generic and abstract away, which brings us to point 2.
Currently, due to each viewModel having different numbers of observables and methods of different names (but effectively doing the same thing) the guys create a new custom protocol (equivalent of a java interface) for each viewModel with its N observables. The viewModel creates local variables of PublishSubject, BehavorSubject, Driver etc. Then it implements the procotol / interface and casts all the local's back as observables. e.g.
protocol CarViewModelType {
isSuccessObservable: Observable<Car>
isErrorObservable: Observable<String>
isLoadingObservable: Observable<Void>
}
class CarViewModel {
isSuccessSubject: PublishSubject<Car>
isErrorSubject: PublishSubject<String>
isLoadingSubject: PublishSubject<Void>
// other stuff
}
extension CarViewModel: CarViewModelType {
isSuccessObservable {
return isSuccessSubject.asObservable()
}
isErrorObservable {
return isSuccessSubject.asObservable()
}
isLoadingObservable {
return isSuccessSubject.asObservable()
}
}
This has to be created by hand, for every viewModel, of which there is one for every screen and there is 40+ screens. This same structure is copy / pasted into every viewModel. As mentioned above I would like to make this all generic. Have a generic protocol for all viewModels to define 1 Observable, 1 local variable of generic type and handle the cast back automatically. The method to trigger all the business logic could also have its name standardised ("load", "fetch", "processData" etc.). Maybe we could also figure out a few other bits too. This would remove a lot of code, as well as making the code more readable (less messy), and make unit testing much easier. While it could never do everything automatically we could test the basic responses of each viewModel and have at least some testing done by default and not have everything be very boilerplate-y and copy / paste nature.
The guys think that subscribing to isSuccess and / or isError is perfect Rx + MVVM. But for some reason subscribing to status.filter(success) or status.filter(!success) is a sin of unimaginable proportions. Also the idea of multiple buttons and events all "reacting" to the same method named e.g. "load", is bad Rx (why if they all need to do the same thing?)
My thoughts on this are:
- To me its indentical in meaning and architecture, one way is just significantly less code.
- Lets say I agree its not textbook, is it not worth bending the rules to reduce code.
- We are already breaking the rules of MVVM to introduce coordinators (which I hate, as they are adding even more unnecessary code), so why is breaking it to reduce code such a no no.
Any thoughts on the above? Am I way off the mark or is this classic Rx?16 -
Working for a startup building a device / app that let you answer your landline phone on your mobile, and get notifications of missed calls etc.
While developing I purposely didn't secure the endpoint that controlled push notifications.
I waited for the boss to sign up, went to the DB and stole his token. From time to time i'd send a request telling him he missed a call from his wife or son.
... then kicked back and watched the madness and frustration ensue. -
Virgin media have again told us everything will be sorted in a few hours, with moving the connection.
For their sake they better be right this time as hell hath no fury like a nerd scorn. -
A song that perfectly captures my working life. Very beautiful, nearly brought a tear to my eye.
https://facebook.com/91208907895565...7 -
Ever work for a really big company and at the end of the year read the statement on how much profit they made?
Looking back at last years, while looking at the new codebase i'm working on and asking
"How does this shit, equal that much money"2 -
I learned to work with tools and platforms, instead of trying to re-write them and creating bugs for myself.
See: every hybrid tool ever.
This leaves me plenty of time to research new trends and patterns. -
Ok so Swift's module system creates implicit namespace, meaning gone are the days of Objective-c frameworks / classes having prefixes.
I get that, and its a great advancement. But when I'm using 3 different social media SDK's, a networking library and some persistence cocoapods and I have to use classes called "AccessToken" and "Manager" ... come on guys, name your shit better.
I'm looking at you Facebook and AlamoFire!!! -
Had to be appcelerators titanium (weirdly I think this app was built with it).
I used it in the early days, before they had the foresight to add a date-time picker for Android.
It was a horrible unforgiving place, bugs on top of bugs, horrible documentation, incorrect instructions, and hacky workarounds posted as official installation instructions.
I'm not sure if it's gotten any better now, but I did give it a go again 2 years to update an app for someone. They made so many breaking changes, which is fine, but the new outcome offered less features and required more boilerplate code. I then spent (literally) 3 hours trying to get the Android simulator to run the app. Titanium just kept timing out and throwing incomprehensible errors. I eventually gave up and told my friend I updated it, it compiles but I can't test it.
Will never touch it again, and will never be used in any team I work for. Just awful.1 -
Just read a comment on LinkedIn:
"Just got a new Note 7, hopefully this one doesn't explode lol"
If this is how Android users think, I'm glad I'm not one of them.2 -
What progress have you made?
Well today we hand crafted ... a new lie about the apps we are writing. Customers should eat this one up.
Good, good.
- Management -
Came across a new definition of the word "Implemented" in work today. As far as I can tell, it can be most accurately explained as:
When 1 or more people think about the feature and record a thought about it, without actually delivering anything. -
My new favourite is
user.leaveFloater()
Got me out of a jam this morning. For more context see: https://www.devrant.io/rants/220317 -
Monday morning meetings:
- Reminding designers what the app looks like to then discuss a defect.
- Reminding everyone else where the online meeting link is, despite the fact we have used it everyday, for the past 7 weeks. -
@dfox Bug report:
Noticed a problem with the app counting the characters in comments. 3 or 4 times I’ve tried to write a comment that comes down to single digits remaining.
When trying to post I get a message like:
“Oops something went wrong trying to post your comment. It’s probably blank”
But, according to the counter, it should have been fine.3 -
Just came across this on a forum while researching something:
"
Hello, sorry that I didn't check the TOS myself. I just had this thought and figured it'd be easier to parse for someone with the mental model already stored. I'm sorry if this is lazy, but promise I'll pay it forward.
"
As a dev, who frequently has to build FAQ's, Support forums, make sure T&C's get displayed again when changed etc etc. The above offends me to my very core.
So much so, I have been unable to continue researching, and now fixated on finding some way to make him regret his actions. -
*New defect*
Designs are confusing and use bad practises. Multiple buttons achieving the same task. The dev team, the BA's, PM's can't understand the current flow.
*Defect closed*
"Design happy with current implementation"