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 - "toilet-break"
-
Few of us went to the break. After 20 minutes or so, this one guy just stands up, says he’ll be right back, and leaves. We figured he went to the toilet or something. He never came back2
-
Some time ago I quit my job at a big corporation. Getting treated like a resource, a production line robot, just isn't for me.
My current job is way better. Small company, lots of freedom, getting to work on multiple projects, the result counts. But, as a small company, we also collaborate with big corporations. So I joined a team at one.
Watching my coworkers there, I'm reminded of robots again. Lunch break? 15 minutes tops. Just shovel some edibles into your face hole and back to work. Five minutes break between meetings? Open laptop, work work work. The concept of "needing rest" seems entirely foreign to them.
Yesterday our product owner "relayed some criticism" from other team members to me. Apparently, me going to the toilet in breaks is "suddenly disappearing". Or me not replying within 15 minutes in the chat is outrageous. And then he tried to berate me how I'm "his developer" and his team's tasks have top priority. So, according to the PO the problem is me and I should "get used to their mode of operation".
How about "no". I quit a fucking job because that "mode" is simply inhuman. After that feedback, you bet I'm taking my legally protected 30 minutes lunch break and any other break I can. Because fuck yourself, you're not going to burn me out. The best part, that team has smokers who "suddenly disappear" twice as much as I do, but apparently that's somehow a-ok.
I had to remind him that his project is just one of several I'm working on, so no, not "his dev". While that wasn't exactly a powerful comeback, it did shut him up. Still going to talk to my boss on Monday, at least to ensure that the PO can't talk shit about me behind my back.4 -
I'm fixing a security exploit, and it's a goddamn mountain of fuckups.
First, some idiot (read: the legendary dev himself) decided to use a gem to do some basic fucking searching instead of writing a simple fucking query.
Second, security ... didn't just drop the ball, they shit on it and flushed it down the toilet. The gem in question allows users to search by FUCKING EVERYTHING on EVERY FUCKING TABLE IN THE DB using really nice tools, actually, that let you do fancy things like traverse all the internal associations to find the users table, then list all users whose password reset hashes begin with "a" then "ab" then "abc" ... Want to steal an account? Hell, want to automate stealing all accounts? Only takes a few hundred requests apiece! Oooh, there's CC data, too, and its encryption keys!
Third, the gem does actually allow whitelisting associations, methods, etc. but ... well, the documentation actually recommends against it for whatever fucking reason, and that whitelisting is about as fine-grained as a club. You wanna restrict it to accessing the "name" column, but it needs to access both the "site" and "user" tables? Cool, users can now access site.name AND user.name... which is PII and totally leads to hefty fines. Thanks!
Fourth. If the gem can't access something thanks to the whitelist, it doesn't catch the exception and give you a useful error message or anything, no way. It just throws NoMethodErrors because fuck you. Good luck figuring out what they mean, especially if you have no idea you're even using the fucking thing.
Fifth. Thanks to the follower mentality prevalent in this hellhole, this shit is now used in a lot of places (and all indirectly!) so there's no searching for uses. Once I banhammer everything... well, loads of shit is going to break, and I won't have a fucking clue where because very few of these brainless sheep write decent test coverage (or even fucking write view tests), so I'll be doing tons of manual fucking testing. Oh, and I only have a week to finish everything, because fucking of course.
So, in summary. The stupid and lazy (and legendary!) dev fucked up. The stupid gem's author fucked up, and kept fucking up. The stupid devs followed the first fuckup's lead and repeated his fuck up, and fucked up on their own some more. It's fuckups all the fucking way down.rant security exploit root swears a lot actually root swears oh my stupid fucking people what the fuck fucking stupid fucking people20 -
When you've been working for ages and are desperate for a pee, but you've just had a major breakthrough and code is pouring off your fingers like honey, and you don't want to stop because it will break the flow.5
-
Shout out to the people who take someone else's office chair. I just went for a toilet break then *poof* someone took it.5
-
My fucking campus building.
Really. Built a new one in 2017, we started to study there since Oct 2017 til now and lemme tell something: it's shit. My classroom's paint cracked 2 months in. My classroom lacks a projector which is standard for every classroom to have one back in the old campus building. But nooope. No projector for 1.25 years, at least by now compensated by a 50" TV which whoever the fuck installed the thing took the *only* stock HDMI cable. Shitty floor tiling (think r/mildlyinfuriating but worse), shitty toilet that would break down every 2 weeks and "over the top" gymnasium with air ventilation so bad it feels like Hitler's fucking oven every time we got in.2 -
!rant
I've lost all fucking motivation to do anything at the moment.
Fuck not even gaming is much fun anymore.
Also amazing that I have so little time on Mondays that I can't even eat properly.
Literally living on caffeine, a spoonful of, like, porridge and water on Mondays.
And of course the nice bistro is closed on Mondays.
Then there is that motherfucker of person at school that just randomly starts sharing weird ass details with you and promptly started to break out in tears when she failed maths today.
Like fucking hell, then for some reason the same person fucks up everything in her volleyball group by literally doing nothing and complains when she gets hit by a fucking volleyball, like, she doesn't even attempt to dodge it catch it.
So much for that fuckery.
Then there's these little brats that just completely play asshole and are being jackasses to everyone including upperclassmen and teachers.
Grab em by the throat and fucking put them in a toilet.
Literally the reason why our school is generally known as the 'Drecksloch', literally dirt hole.
The fucking volume is driving me batshit insane in school to the point where I just start yelling at people.
Fucking kids, it literally doesn't cost you shit to just shut the fuck up.
Okay, vent over.
Sorry for that.12 -
I'm doing a school project with one of my friends right now (little game in c++). He doesn't know c++ so I'm teaching him a little since he mainly does some mathematical functions and stuff (he's really good at maths). I told him "if you break anything I'm going to kill you" and he knows that I can be an asshole but he doesn't know about git and stuff. So I decided to play a little joke.
I put one single line into the code during he was on the toilet:
while ( new long long );
And I've been watching his reaction for about 1h now. I can see the sweat in his face but he's too shy to tell me its not working anymore😂😂 he's been trying to fix it but didn't find out yet. Let's look how far it will go4 -
This week's huge fuck you goes to... Drumroll please...
Slack!
You earned this prize for your stupid auto-sleep if there is no interaction for x minutes!
I don't want to install your crap software on my system, so i am forced to alt tab every 15 minutes just to press space and then delete, because God forbids i am being productive on my freaking IDE, second computer, test device and/or meeting!
Also lovely how phone notifications are not sent on mobile unless you are on sleep mode... How could I ever ask for urgent notifications if i take a small break? Oh, right! I should go to sleep mode, so people will think i didn't touch your shitware for 30 mins every fucking time i go to the toilet! :D
Please get your prize whenever possible!12 -
Having a devrant break in the confort of the office's toilet... have a break, read a pair of devrants. :D
-
Previously, I half-assedly theorized that, given a timeline on which I'd store state mutations, with each mutation being an action taken ingame by either the player or computer, I could feasibly construct a somewhat generative narrative engine.
Basis: the system reads the current state, builds [some structure] holding possible choices, and prompts the player to take an action from those choices. The action modifies the state, and the loop begins anew, save that now it's the system "prompting itself", so to speak.
Utterly barebones and abstract as it may be, it was useful to build this concept in my head as it gave me a way to reason about what I wanted to build. But there were two problems which I had to grapple with:
- What would [some structure] even be?
- How would the computer make choices based on an instance of [some structure]?
I found myself striking the philosopher pose for long hours on the toilet, deeply pondering these questions which I couldn't help but merge into one due to the shared incognita; silly brain wanted trees but I kept figuring out that's not going to work as the relationships between symbols are sometimes but not always hierarchical. Shhh, silly brain, it's not trees.
So what is the answer?
Well, can you guess it?
Graphs, of course it's fucking graphs. Specifically, a state transition graph. It was right in my face the whole time and I couldn't see it. Well, close enough.
It's ideal as the system in question is a finite state machine with strong emphasis on finite -- the whole point is narrowing down choices, which now that I think about it, can also come down to another graph. Let me explain.
A 'symbol' or rather SIGIL is an individual in-game effect. To this FSM, it's an instruction. Sigils are used to compose actions, which you can think of as an encapsulation of some function, or better yet, an *undoable transaction* which causes some alteration in the game world.
But to form a narrative from a sequence of such transactions, and to allow the system to respond to them coherently, relationships need to be established between sigils in a manner that can be reasoned about in code. You may not realize this yet but this is both a language processing and text generation problem, so fuck me.
However, we have a big advantage in that we are not dealing with *natural* language, that is to say, each sigil is a structure from which we can extract valuable information on the nature of the state transformation applied.
This allows us to find relationships between sigils programmatically: two words are related if some comparison between the underlying structure -- and the transformation it describes -- holds true. Therefore, if we take the sigils that compose the last transformation in the timeline, fetch relationships for said sigils according to a given criteria, then eliminate all immediate relationships that are not shared between all members of the group, we end up with a new one that can be utilized as starting point to construct a reply.
More elimination of possibilities would have to be performed as this reply is constructed [*], but the point is that because the context (timeline) is itself made of previous transforms, the system *could* make such a reply coherent, or at the very least internally consistent.
Well... in the world of half-assed theory. I don't know whether I'm stupid, insane, both, pad for alignment, or this is an actual breakthrough. Maybe none of the above.
Anyway, it's another way to mentally model the problem which is very useful. New challenge would be the text generation part, extremely high chance of gibberish within existing vision; need more potty-pondering.
[*]: I'll break it into bits OK.
0. Determine intention. That's right, the reply isn't actually _fully_ generated, it's just making variations on a template. So pick a template depending on who is taking a turn and replying to who (think companion relationship score bullshit)
1. Sort the new group according to the number of connections the constituent sigils had to the context from which they were extracted, higher first.
2. Pop from the sorted group (least connections). If there are other nodes left in the group, and it doesn't connect back to any of the other nodes (sigils) up to a certain distance, then discard it and repeat. Else keep going.
2. Unshift from the sorted group (most connections). If can traverse up to another sigil in the same group, then go for it. Else derive search criteria from current context (including intention), so as to look for another sigil to concatenate. Some form of weighting would be needed here, need to think about that.
3. Decide when to stop. Probably some chance, as in the more sigils you have, the lower the chance a new one will be added maybe. Need to think about this too.
4. Send transform, loop begins anew.
And that's it. So alright brb I'm going to take a dump on the Agora.14