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 - "episode 2"
-
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 -
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 -
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 -
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 -
*after 2 hours of programming*
Me to me: you can watch one episode of [some series]!
Me to me after that episode: just one more couldn't hurt for once!
...............
...............
...............
*five hours later*
Me: "what am I doing with my life 😭
This happens too fucking damn often 😫11 -
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 -
The office toilet chronicles - episode 2
Someone here has a fucking sprinkler where they should have a penis. Is it so hard to aim? Or fucking sit?3 -
*wrestling commentator voice*
"In this weeks episode of encoding hell:
The iiiinnnfamous UTF-8 Byte Order Mark veeeersus PHP!"
For an online shop we developed, there is currently a CSV upload feature in review by our client. Before we developed this feature, we created together with the client a very precise specification, including the file format and encoding (UTF-8).
After the first test day, the client informed us, that there were invalid characters after processing the uploaded file.
We checked the code and compared the customer's file with our template.
The file was encoded in ISO-8859-1 and NOT as specified UTF-8.
But what ever, we had to add an encoding check, thus allowing both encodings from now on.
Well well well welly welly fucking well...
Test day 2: We receive an email from said client, that the CSV is not working, again.
This time: UTF-8 encoding, but some fields had more colums with different values than specified.
Fucking hell.
We tell the customer that.
(I was about to write a nice death threat novel to them, but my boss held me back)
Testing day 3, today:
"The uploading feature is not working with our file, please fix it."
I tried to debug it, but only got misleading errors. After about 30 minutes, at 20 stacks of hatered, I finally had an idea to check the file in a hex editor:
God fucking what!?!!?!11?!1!!!?2!!
The encoding was valid UTF-8, all columns and fields were correct, but this time the file contained somthing different.
Something the world does not need.
Something nearly as wasteful as driving a monster truck in first gear from NYC to LA.
It was the UTF-8 Byte Order Mark.
3 bytes of pure hell.
Fucking 0xEFBBBF.
The archenemy of PHP and sane people.
If the devil had sex with the ethernet port of a rusty Mac OS X Server, then 9 microseconds later a UTF-8 BOM would have been born.
OK, maybe if PHP would actually cope with these bytes of death without crashing, that would be great.3 -
> Writing some code 😀
> Compile it
> 10 errors 😣😣
> Debugging mode on😎
> Write about 100 print statements to debug the code
> At last found errors and now remove those print statements😅
> Compile code
> 2 out of 30 test cases pass😤😤
> Exhausted and angry😡
> Silicon valley new episode arrives🎉
> Super excited after watching the episode and think like you too can code like Richard Henricks😎😎
> Coming back to the old code and build logic from scratch
> Compile and finally all test cases pass
> Task completed😂😂3 -
I remember my first "Software Engineering 2" class at University. The teacher, a pompous son of a bitch that later on gave proof of his vast ignorance, greeted us with
"so ... You call yourselves programmers, right? What's the biggest program you have ever wrote? Something along the 100, maybe 200 lines of code? ..... If you've never written at least a MILLION lines of code software, you're not a software developer"
Even at that time, with my lack of experience in software development, I had that feeling in my guts telling me "writing myself a 1M lines of code software .... Brrrr that's something I hope I'll neve have to do in my life"
Turned of he was one of those dinosaurs stuck with the love for gargantuan monoliths of software like they used to do.
Just to dive you the whole picture, the course had ZERO software development and focused only on how to manage wonderful waterfall projects, how to write all types of software documentations and the final project was ... Writing a ton of documentation so boring and useless that even he didn't care to read through.
we still laugh at the episode when another group asked us to borrow one of our documents and after one day they asked "hemm ... Have you really sent this to the teacher?" "yes, why not?" ".... at page 23 someone left a comment saying 'what the fuck is this shit?'"5 -
Today I'm going to work on my side project that I haven't touched in weeks.
I want to utilize Angular 2 which means I'll need to learn TypeScript. I also want to use the new .Net Core and EF Core 1.0. Oh and I want to handle authentication using JWT!
Wow, that's gonna be a lot of effort to get things off the ground... maybe instead I'll use this time to learn some new concepts. Maybe watch this episode of Fun Fun Function, or maybe this video on writing Assembly code for an app on Raspberry Pi, that sounds cool!
Actually, you know I should really teach myself dependency injection and unit testing for once. I'm so behind the times.
Well, really I should finish this book on design patterns first. Ok, where did I leave off? Page 20 I think... ehh... maybe I'll just work on my side project.
Tomorrow... tomorrow, I'll work on my side project.9 -
Template for every Silicon Valley episode be like:
1. Start solving problem from previous episode.
2. Creating some shit that solves the problem.
3. Initialize new problem.
Damn it. I'm still hooked!!2 -
Episode 2 of this rant: https://devrant.io/rants/851636/...
PM went to meet with the provider and came back, so I had a talk with the PM and it went like this:
Me: so how did the meeting go? Hope they corporate with you
PM: *in a sarcastic voice* Bro, you need be a good dev, they told me only a good dev can implement Master Card API calls, and its all in the docs. That's all they told me, so you should know how the meeting went
Me: *there is no wifi in jail, there is no wifi in jail, there is no wifi in jail, there is no wifi in jail* Fine bro, I'll go back to school and come back after 12 years.
Seriously when I send the provider the request and the body and all they tell me is: You have an error, Id must be unique but they fail to point out the exact error or at least send me a valid ID to test, how does this make me the bad dev and him the genius that can run Apple, Google, MS all together at once!
What is even worse, when I called the provider he told me: Man transaction ID must always be unique, how could you not know this, how is Mastercard supposed to differentiate between transactions!!
But hey, no one told me transaction id must be unique, primary keys are never unique, like DUH!10 -
That's it. I've had enough.
I lost my job yesterday (again) and the Irish cumstain who lives in the room next to me got pissed last night and kicked my door in because he thought I had his phone(?) and was ignoring him, when I was at work.
Long story short, he ripped my friends back door apart, tried to fight me (which ended with me chasing him down the street with a plank).
Police came and did a wonderful job as always by making us shake hands and 'promise' to leave each other alone.
THIS ISN'T FUCKING PRIMARY SCHOOL. DRAG HIM AWAY BEFORE I DO, YOU IGNORANT FUCKING PIGS.
Oh, and my 'friend' then had a schizophrenic episode and blamed it all on me(?!?). I then went to buy 2 bottles of vodka and decided to get pissed before trying to kill myself.
Ah, I love humans. Dirty, ignorant, blood sucking bags of sweaty meat and delicate bone. I really want to turn this Irish cunt into a skinsack of blood and guts, but I'm waiting patiently. He's going to wake up one night tied up and gagged, with me dragging him to a forest somewhere far far away...
Is it weird that I want to make him scream, cry, and shit himself at the same time?11 -
TL;DR: a dude thinks good graphics make a game good.
so every day when the school ends, me, a dude and another girl walk home. as expected we have lots of time to talk about anything. I wanted that day to tell that dude about what I am going to buy on steam summer sales with just 15$.
me: I am going for this summer to play lots of games so I saved some money for this summer sale. do you want to hear what awesome games I am about to buy with just 15$?
dude: yeah, sure thing.
he wasn't expecting much
M: this summer I am going to buy 5 games and maybe keep more for some others. they are so awesome!
D: ok, let's hear those 'awesome' games!
M: the first game is devil daggers, maybe you don't kno...
D: of course I do. is that game
M: I want to get that game just to improve my aim, but maybe I will have some fun.
D: yeah yeah, I know that game
M: *poker face*
I KNEW he doesn't know this game and anything about pc games because of the followings...
M: ok then... I also want to get Half-Life 2 : Episode 1 & 2. they have pretty rich story and I already have both Half-Lives.
D: holy shit but the graphics... ok, one more 'awesome' game of yours.
M: there are 2 episodes, 2 separate games. I really don't care about the graphics, I love the story.
D: continue with your 'awesom' games...
that dude didn't even knew about half-life and said that game is bad.
M: another game I want to get is Battlefront 2, the one from 2005 and...
D: 2005!?
M: yeah, the new one sucks, and the gameplay in the original is way better and...
D: *starts laughing* 2005!? I thought you were getting the new one. I imagine the graphics being like this car. *points to a fucking car, yeah that kind of comparasion, I know*
after this I was so fucking pissed off. he doesn't even know about some cult classics that are meant to be played. he doesn't even have a pc nor console and he is stating his opinion on fine air for fucks sake!
M: ok, what about getting the facts and then make an opinon.
D: yeah yeah *making fun of me at that point*
I didn't tell him that I wanted to buy the binding of isaac, cause it was enough for me. I told him to watch some reviews on these games and blog posts about them and I am sure tomorrow he will say that he 'wathced' the reviews and that those games are garbage. it's his style to underestimate things. I fucking hate him, not becuase of the games, but because he underestimates everything that is not on his list of 'good games'. that list consists of new games with great graphics(3D only).
sorry if I exaggerate saying that those games are cult classics but I really look forward into buying them.
if you have another indie game to run on this potato machine(2gb ram, pentium dual-core 2.1ghz, gtx 525m) that I should or at least try comment, I am open to suggestions!9 -
On the next episode of "when life gives you lemons" we will teach you how to enter a USB correctly on the first go. Yes, you heard me, after 7 years of research, and 2 years of not research, we did it!4
-
Episode 3 of this rant: https://devrant.io/rants/871827/...
Me: So I'm going an API call to Mastercard but they don't give us back CreditCard token to save.
Provider: Ya man you need to curl a request in your code to get the token...blahblahblah.... man you need to know these things they are not an easy things to be done, just paste curl code on MasterCard website into your code and it will work
Me: *ignores his shit talk and proceed to test*
*5 minutes later*
MasterCard Server: error.cause=INVALID_REQUEST&error.explanation=Invalid+credentials.&result=ERROR
Me: *calls provider and tell him*
Provider: Oh sorry, we need to enable this feature for your account.
devRant people please, give me one reason why I should not leave this field, and maybe also leave this life knowing there are this type of people alive.
Thank you :)2 -
episode 2 in the series "hip developers", right after the full sold out "taylor 'cunt' otwell" - this time featuring docker developers that have not reached puberty yet!
https://github.com/docker/compose/...5 -
!rant
The only good thing of having to wait two weeks for a new Doctor episode...
2 Doctor episodes to see in a row... -
The legacy codebase, episode 94385948:
How to neatly organize your code in the age pre-docblocks.
Bonus: could this function be renamed to colectomy? Or maybe de-punctuation?
(yep, probably a bad joke with a "typo", sorry)
Bonus 2: seriously? A function for that?13 -
"Longest you worked without rest + why?"
46hrs
2 x 14h shifts from 0400h on.
No breaks, toilet, drinks or food.
Intercepted by a removal and all the getting ready, getting there, preparing food and such stuff.
Quite common the 10-14hrs shifts these days. Logistics companies take pride on how they don't give a remote fuck about their employees. .. And! Regularly fucking up everything with their out of this world expectations and assumptions. Only thing stopping such madness? The reality of sailing the edge of bankruptcy.
Seconded by a university event that everybody fucked up and had to be pulled out of the mud with 44hrs straight.
Well. Intercepted by some booze.
Best part? My then time partner decided to throw an episode in my only free time. God I still hate that daemon. She must have committed a series of crimes against humanity by now. Easily could be responsible for the downfall of civilisation.5 -
In today's episode of kidding on SystemD, we have a surprise guest star appearance - Apache Foundation HTTPD server, or as we in the Debian ecosystem call it, the Apache webserver!
So, imagine a situation like this - Its friday afternoon, you have just migrated a bunch of web domains under a new, up to date, system. Everything works just fine, until... You try to generate SSL certificates from Lets Encrypt.
Such a mundane task, done more than a thousand times already... Yet... No matter what you do, nothing works. Apache just returns a HTTP status code 403 - Forbidden.
Of course, what many folk would think of first when it came to a 403 error is - Ooooh, a permission issue somewhere in the directory structure!
So you check it... And re-check it to make sure... And even switch over to the user the webserver runs under, yet... You can access the challenge just fine, what the hell!
So you go deeper... And enable the most verbose level of logging apache is capable of - Trace8. That tells you... Not a whole lot more... Apparently, the webserver was unable to find file specified? But... Its right there, you can see it!
So you go another step deeper and start tracing the process' system calls to see exactly where it calls stat/lstat on the file, and you see that it... Calls lstat and... It... Returns -1? What the hell#2!
So, you compile a custom binary that calls lstat on the first argument given and prints out everything it returns... And... It works fine!
Until now, I chose to omit one important detail that might have given away the issue to the more knowledgeable right away. Our webservers have the URL /.well-known/acme-challenge/, used for ACME challenges, aliased somewhere else on the filesystem - To /tmp/challenges.
See the issue already?
Some *bleep* over at the Debian Package Maintainer group decided that Apache could save very sensitive data into /tmp, so, it would be for the best if they changed something that worked for decades, and enabled a SystemD service unit option "PrivateTmp" for the webserver, by default.
What it does is that, anytime a process started with this option enabled writes to /tmp/*, the call gets hijacked or something, and actually makes the write to a private /tmp/something/tmp/ directory, where something... Appeared as a completely random name, with the "apache2.service" glued at the end.
That was also the only reason why I managed fix this issue - On the umpteenth time of checking the directory structure, I noticed a "systemd-private-foobarbas-apache2.service-cookie42" directory there... That contained nothing but a "tmp" directory with 777 as its permission, owned by the process' user and group.
Overriding that unit file option finally fixed the issue completely.
I have just one question - Why? Why change something that worked for decades? I understand that, in case you save something into /tmp, it may be read by 3rd parties or programs, but I am of the opinion that, if you did that, its only and only your fault if you wrote sensitive data into the temporary directory.
And as far as I am aware, by default, Apache does not actually write anything even remotely sensitive into /tmp, so...
Why. WHY!
I wasted 4 hours of my life debugging this! Only to find out its just another SystemD-enabled "feature" now!
And as much as I love kidding on SystemD, this time, I see it more as a fault of the package maintainers, because... I found no default apache2/httpd service file in the apache repo mirror... So...8 -
2021 was really rough, saw friends going over the deep end with burnout, significant incidents to handle and a shitty manager to deal with.
It wasn't about blood and tears, it was about commuting 4 hours/day mid-pandemic to be present in the office and respond to an incident whilst having to deal with a bunch of heroes thinking they were part of a CSI: Cyber episode.
All of that just to be said that my raise "would be enough to keep me from looking elsewhere" as my manager said they were very happy with my performance.
This week I found out exactly how much this appreciation is worth: 2%. And I should consider myself lucky with this number as my performance wasn't good enough to grant me any raise whatsoever.
feelsreallybad.png4 -
Fuckin RAZER. Part 2. "SOLVED!!!"
This will be both a rant and a shout out.
Firslty, fuck RAZER. I don't who in the actual fuck makes the software for these peripherals, but while the hardware is decent the entire software team should be tarred and fucking feathered. Just beaten bloody with a rubber hose. And then publicly paraded and shamed through whatever backwater shithole they call home all while their mothers look on crying their eyes out.
Anyway, some of you may be familiar with my Razer peripherals on Mac saga.
To refresh your memories... I got 4 razer devices for my b-day from my wife. I was very stoked. They work great on Windows 10. They work for shit on Mac and the software to manage their colors, Synergy 3, is not available on Mac, and the version that is, Synergy 2, basically does not work and hasn't worked for like two years and would only work for two of these peripherals anyway and it would appear Razer does not give a shit. Fuck.
Ok, we caught up? Good.
In our last episode I ran up a full Windows 10 VM AND a full Debian VM just so I could jumpstart these god damn peripherals into a solid color.
Why so much work?
Because by default they rotate the color spectum fucking SEPARATELY... so it's just a god awful mess of rando RGB.
So, by running Synergy 3 on the Windows side, and then an open source package called Poloychromatic on the Debian side I was able to patch together preferences through the two programs... and I found quitting out of them hard kept the keyboard, mouse, mousemat, and dock color settings until the next reboot while working on my Mac.
For WEEKS I WENT THROUGH THIS FUCKING PROCESS AT EVERY REBOOT.
Reboot. Run up Windows 10 VM, update Synergy 3, log into Synergy 3, Open Synergy 3, Wait like 90 seconds, Synergy 3 finally fucking gets ahold of my mouse pad, mouse, and dock (not the keyboard).
Run up Debian VM (at least its fast), start polychromatic, set the keyboard solid color.
Then quit them both and my colors are set until reboot.. This is, for lack of a better turn of phrase, the most fucking ridiculous thing ever.
I had to do a 400 fucking megabyte update today for the Synergy 3 software that lives INSIDE my god damn VM. A VM only created in the first damn place to run synergy 3 and then fucking die. And it put me over the edge.
I committed to finding a better way this evening. I started looking into trying to port polychromatic to macOS my god damn self only to find this badass mother fucking kid Ken Chen wrote a whole god damn macOS package and put it up on GitHub.
Fuck fucking YEEEEEESSSS!!!
So thanks to Ken Chen, a student from Australia with 12 Github followers, who was single handedly able to write a better software product than the entire fucking team at SHIT FOR BRAINS fucking Razer.
https://github.com/1kc/razer-macos4 -
I usually find Fridays really exciting 'cause they mean the end of a long week of work and a nice weekend where I can just relax and chill or do whatever the fuck I want, And also because nothing really major happens regarding work happens on Fridays.
Till this Friday, my boss who I really respect and who I find a nice boss to work for starting complaining about the speed of an app we developed and comparing its speed with 2 other versions of that were built using different stack, different architecture and another environments. I explained that it's absurd to compare these and expect the same performance from 3 differents implementations.
He was not convinced and I just kept my mouth shut 'cause I don't want to explode in anger. Because of all Friday night sucked, felt all depressed, wanted to distract myself by watching a movie, but I didn't find anything that I liked, I remembered that a new episode of this series I watching will be coming out that night, when I went to my usual streaming website I didn't find it, and discovered that it'll be coming out on March 1st 😣.
I had no video games to play, didn't feel like coding. By then i realised that tonight will be another nigh where I would be crying myself to sleep... which happened.
I woke up this morning with a resolution that I will go out and do something fun.
Little did I know, my depression was still there, now it's 8pm, I spent the whole day in bed. I wish I had someone to talk to, I friends are all busy living and I didn't want to disturb them.
I have another chance to save this weekend by doing something on Sunday, otherwise next week will be a hard one with my current mental state.
Excuse any typos in my rant. I have no energy left.4 -
The ticket system blokes - episode 3
So we always had and have very awful performance with our ticket system. You can't get anything to load in under ~4s normally. Now since it has gotten worse over the last weeks i decided to set aside a few hours to closely watch our SQL server.
After i identified a culprit that was hogging the CPU almost every 2 minutes i looked at other long running queries in the server and found out where exactly the 4s come from.
6 tables from various DBs. Sure, no problem.
Left Outer Join. Sure, why not.
Querying every fucking column in every fucking table explicitly adding up to a whopping 160 columns which they need not even 10% of. We're talking about session IDs, passwords, stock count, IBANs and all that stuff to show the work done on a ticket. Absolutely not.
So i extracted the query and reduced it to the stuff we need and the execution time went from 4 seconds to almost instant.
The funny thing is that their idea of performance optimization is throwing LIMIT around everywhere to get these monstrous queries under control.
So in the next few days I'll have an appointment with their lead programmer. I'm looking forwards to it.
So out of curiosity: does anyone know an SQL builder or toolset that does shit like
SELECT X AS [t0_c0],
SELECT Y AS [t0_c1],
SELECT Z AS [t1_c0],
and so on? I'd like to know how they got to this point.4 -
A headache starts popping in my head like modals and popups on websites, so I decide I should take a pill and proceed to get myself some water (yeah, I cannot stand headaches for more than 2 minutes).
As I enter, the room is only populated with the "cleaning lady" (she's quite aged), I tell her "hi" and proceed to grab a glass of water.
"Hey, you are good in IT right?"
Oh fuck.
RUNNNNN.
That lady is impossible to escape once she wants to talk to you.
So my skills as a developer were used to configure her facebook...
Hope my headache starts leaving soon, it worsened by a factor of 9000 after that traumatic episode.1 -
It is approximately 42 degrees C outside. And guess whose fucking compressor just went to shit? Mine. Fucking piece of shit. I absolutely fucking hate this shit. Finding the time to go to the shop is pointless when I can fix it myself, but IN the fucking event that the compressor is actually faulty and needs to be replaced then I would have to struggle to wait for the fucking part to get here. If my luck permits and this is an issue that is fixable through a simple relay change then fucking hooray.
But I know how fucking shitty my fucking luck is and its going to fuck me in the ass probably. I will troop through the heat, no problem, but I am the one that carries my 2 year old daughter everywhere and I am not about to put her through that bullshit.
So I call my wife and explain to her the situation, I don't need for her to do fucking anything, I can take care of it myself, but I tell her NOT to have me go out on random bullshit with the girl while the car is like that, I did it to make her understand beforehand because every day is an additional 1 and a half hours of driving around the city to take her do bullshit. I told her that in the event of me needing to go pick something up then it would have to be after the fucking sun goes out(which in this fucking bullshit ass town it happens after fucking 7 or 7:30pm) and she would have to stay home with the girl. What does she do? she gets upset. Of course she got fucking upset. Like if I need that fucking bs right now. OH and my fucking main Linux machine is apparently having battery issues.
OAN my manager gave me my performance review yesterday. The she made are outstanding and my score is perfect. The board is going to give a raise to everyone of us that got an high enough score so that got me in a good mood. I am holding on to that feeling before I lose my shit. Every single fucking time some bs puts me in this mood I am constantly wishing that a motherfucker would.
Fucking bullshit man. Can't have a FUCKING break anyfuckingwere.
This just in on an episode of Murphy's fucking law.4 -
To anyone sufferring/going to suffer from kidney stones, here's a golden rule what to do when the episode kicks in [the sooner you start - the better]: 2 pills of no-spa, 1 tablet of painkillers [ibuprofen/dolmen]. As soon as no-spa kicks in and relaxes your spasm -- become a fucking breakdancer. I shit you not. Start bending, spinning, jumping, swimming like a fucking hurricane. The more you move, the better chances are you'll make that lump of rock move down the pipes and unclog your drainage.
Did it this week. Did not need to come back to the ER.
This was my 5th stone. Many more to come [Pending...].
I don't understand why do they make us lay in bed in the hospital if we have kidney stones. They should pump us with no-spa and make us do gymnastics, acrobatics and brakedancing instead!13 -
What the fuck huh?
what the fuckkk..... Jian- yang !!!
Ohh the way he scream poor aviato 😝😂undefined silicon valley season 4 then why you still didn't watch it fucktard sorry for spolier dinesh fucked up jian- yang episode 21 -
In last episode of "How SystemD screwed me over", we talked about Systemd's PrivateTMP and how it stopped me from generating SSL certificates.
In today's episode - SystemD vs CGroups!
Mister Pottering and his team apparently felt that CGroups are underused (As they can be quite difficult to set up), and so decided to integrate them into SystemD by default. As well as to provide a friendlier interface to control their values.
One can read about these interactions in the manual page "systemd.resource-control"
All is cool so far. So what happened to me today?
Imagine you did a major system release upgrade of a production server, previously tested on a standalone server. This upgrade doesn't only upgrade the distribution however, it also includes the switch from SysVInit to SystemD. Still, everything went smooth before, nothing to worry now then, right? Wrong.
The test server was never properly stress-tested. This would prove to be an issue.
When the upgrade finishes, it is 4 AM. I am happy to go to bed at last. At 6 AM, however, I am woken up again as the server's webservices are unavailable, and the machine is under 100% CPU load. Weird, I check htop and see that Apache now eats up all 32 virtual cores. So I restart it, casting it off to some weird bug or something as the load returns to normal.
2 hours later, however, the same situation occurs. This time, I scour all the logs I can, and find something weird - Many mentions that Apache couldn't create a worker thread? That's weird.
Several hours of research and tinkering later, I found out the following:
1 - By default, all processes of a system that runs SystemD are part of several CGroups. One of these CGroups is the PID CGroup, meant to stop a runaway process from exhausting all PIDs/TIDs of a system.
This limit is, by default, set to a certain amount of the total available PIDs. If a process exhausts this limit, it can no longer perform operations like fork().
So now, I know the how and why, but how should I solve this? The sanest option would be to get a rough estimate of just how many threads the Apache webserver might need. This option, though, is harder, than apparent. I cannot just take the MaxRequestsWorkers number... The instance has roughly double the amount of threads already. The cause being, as I found out, the HTTP/2 module, which spawns additional threads that do not count towards this limit. So I have no idea what limit to set.
Or I could... Disable the limit for just the webserver via the TasksAccounting switch. I thought this would work. And it did seem to... Until I ran out of TIDs again - Although systemctl status apache2.service no longer reported the number of tasks or a task limit of the process, the PID CGroup stayed set to the previous limit. Later I found out that I can only really disable the Task Accounting for all the units of a given slice and its parents.
This, though, systemctl somewhat didn't make apparent (And I skimmed the manual, that part was my fault)
So... The only remaining option I had was to... Just set the limit to infinite. And that worked, at last.
It took me several hours to debug this issue. And I once again feel like uninstalling systemd again, in favor of sysvinit.
What did I learn? RTFM, carefully, everything is important, it is not enough to read *half* the paragraph of a given configuration option...
Oh, and apache + http/2 = huge TID sink. -
Episode 2 of taking a big ass dump. This time its 1:54 am and i had to get my ass out of the bed to throw this big nuclear bomb. My legs are once again numb and i cant feel them from dumping for too long. I had to hold on walls and crawl up the bed. But when i did get to bed it was majestic. Numb legs but i dont care. I took a dump and now im 10 kg skinnier and i dont care4
-
Following on from my thread where I got wrecked for being brain damaged, and posting about dividing by zero, it is time for round two!
Lightening round: Electric boogaloo!
Episode 3: "Glutton for punishment"
You can read that thread here if you like or skip over.
https://devrant.com/rants/4931841/...
Can we divide by zero? Is there some representation where thats the case? And what are the implications if we can?
In this round Devranters, you will be challenged to determine if OP is 1. insane, 2. a genius, 3. high on mushrooms. One contestant will be eliminated. The winning team will get a bag of rice and sunscreen, while the other team will have to vote to send someone home from the island.
Get ready.
Heres the full rant because DR wouldn't post it for some reason:
https://pastebin.com/qBg80ujN42 -
I haven't chimed in on this spaces vs tabs war at all on this platform, mostly because I personally don't care and adapt to my work's/project's conventions, but I just have to put this out there now.
I am honestly so confused about the entire thing since seeing a lot of recent rants on the topic. I was originally conditioned to believe that the majority of devs in the world were FOR spaces over tabs. Thus, whenever I start a project, I default to spaces.
Contrary to that, it seems most devs here (or at least those who enjoy instigating some banter) actually prefer tabs. Now, I recently binged Silicon Valley and can't help but wonder if people around here are simply jumping on that band wagon for the sake of the joke.
Side note: I also thought Vim was more widely used over Emacs but Richard Hendricks asserts otherwise there too.
I know the main arguments for both sides - spaces yield code that looks the same in all editors while tabs produce smaller code. Anybody who argues that spaces are less efficient because you need to physically press the space bar 2/4/8/etc times is just retarded. If soft tabs weren't a thing, I don't think anybody would be on the side of spaces and for that reason I believe that episode in Silicon Valley was just trying to be overdramatized and push peoples' buttons.
All of that being said, I wonder if it's just a generational/field of development thing. Would it be wrong to propose that more older devs in the field of embedded and OS development (using C and the like) are in the spaces party while younger devs perhaps more into application and web dev (Javascript, C#, and shit) are all about tabs? I'm actually fresh out of university, but like I said my preference is spaces, though I don't really care.
I'm actually interested to find out what kind of environments breed these opposing mindsets so what do you guys think?2 -
DREAM 1
(my comments look like this)
A kikiland metro system. It's extradimensional and shapeshifting. When you enter it, it adapts to your needs. The people inside (they're probably just vinyl shells), the social circumstances, all generated for you.
When you enter it, it knows where you want to go. It spawns exactly one train just for you. It will be the first, it will be the last. You have to catch it to go where you need. If you miss it, there will be no more trains, and you have to wait till the metro station closes for the night and reopens.
It's always you entering, catching the train that arrives just in time, going to where you need to go and exiting.
Because of its extradimensional nature, you cannot agree to meet someone there — every person has their own personal metro generated just for them every time, with exactly one train going exactly to the station you need.
It's used by BLA as a form of control. When they don't want you to go somewhere, the train won't spawn. Or, it might diverge and get you to some other place. It isn't known whether the map can be altered on the fly or not. So far, the consensus is that the map is persistent and is a public knowledge, and it's just the metro itself that is extradimensional. But, no one ever saw the real metro in its real form, and not the top layer that protrudes into the three-dimensional world you can interact with. It might be the case that they can make people disappear by creating ad-hoc stations that don't intersect with the real world, trapping them in places that are nowhere in particular.
(it took seeing BLA once in one dream to make all the following dreams include them. Sigh.)
Kikiland also has a school, and it always had it. I befriended a chemistry teacher there. His classroom is small — exactly as deep as other classrooms, but really narrow. There are no desks there, just his desk and some bookshelves. Chemistry isn't a priority there — his class exists only because it should. No one attends it. This is why he was so pleased to meet me. Despite his classroom being located on a busy floor, its door is overlooked by students, and NO ONE ever enters it. He just sits there, waiting for students to arrive, but they never do.
He has a secret, though, because of course he does. In the game Control, if you complete the main storyline before you complete some side quests, one of the main characters will be sitting in the C-suit hall, doing her things, waiting for you to come and talk to her. But at the same time, she will be waiting for you deep down the oldest house's mines, again, just sitting there, waiting for you to take the quest. This teacher is the same.
If you have a good relationship with him, and you attend his class, the classroom will change to a tunnel entrance, with him being the security guard. He's your friend, he'll let you in. It looks like Fallout's vault entrance. THIS is how you enter the REAL kikiland metro. (Dream 1 ends here.)
Episode 2
Tiny waterborne rat puppies whose mouth is their entire face unfolding like a piece of paper with teeth covering it as a grid. (I wrote about them already, but here they are again.) They are _tiny_, a bit like tadpoles. Also, like tadpoles, they die if you touch them out of water. As I was flying over some mountain resort (I routinely fly in my dreams, but it feels more like a very low gravity falling I can control, like using a parachute in GTA San Andreas), I dumped them to a location that resembled the garden level of Prince of Persia: Warrior Within for my cat to eat. It didn't want to. -
The second episode of Runtimerror Live is officially LIVE! This weeks episode features and interview with our very own @dfox and @trogus! Anyone whos interested can check it out at https://runtimerror.com/podcast/... or on iTunes / other podcasting apps1
-
Im in the 7th episode of a tutorial on youtube about MonoGame. I still dont understand why hes doing as he is, or what its really doing.
Theres 2 possible reasons.
a. Its because i havent seen proper results and had my hands on it.
b. Im retarded1 -
Episode 2 of our Weekly Podcast is out a day early! Listen to "Two Coders, One Mic" on
Apple Podcasts:
https://lnkd.in/gJCYZ-X
Anchor :
https://lnkd.in/g-6PMCm2 -
Who is going to tell Netflix that not every title need to be a 10 part series? A story that should fit into an 1 hr (maybe 2 max) is padded with unnecessary stories to be a 10 part series of 1 hr+ per episode.2