AboutJust a hobby coder
Joined devRant on 7/22/2016
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
A couple of years ago, I was working in a computer shop as a "technician", I was 15, first job I ever had.
One day an elderly lady came into the shop, probably 50'ish, she and her whole family "suffered" from electromagnetic radiation, and the mother had the worst suffering. She complained about her TV box that just had died.
I accept the tuner and see it's wrapped with 10 layers of aluminium foil, with a tiny hole for the IR receiver.
The whole box smells like burnt electronics, and the foil gets darker for each layer I unwrap. I try explain to her that the box gets warm and overheated by wrapping it like this, and she's lucky that it didn't catch fire.
I further explain to her that she will not get a new box, because the warranty does not cover _this_. The mother tells me she has to wrap it like this, because she gets headaches when she's watching the news.
She then proceeds to go into a rage mode and gets her whole family into the shop, where all of them starts yelling at me, the younger kids start throwing stuff down from the shelves and touching the TVs with sticky fingers (literally, sticky, like yuck!).
Unsure what to do, boss is in a meeting, and my colleague is busy in the back.
So I calmly tell them that in this building there's 4 wireless networks, 3 wireless phones, high voltage cables run in the wall behind me, there's factory tracks 20 meters behind the building, next door business is an electrician, you're standing in front of wall with 30-40 TVs, 5 HDMI splitters, 3 TV boxes and a Blu-ray player. And they've all been standing in front of them for the last 10 minutes.
They all suddenly feel really sick and run out of the store, never to be seen again. From that day, I decided I'll never work in a shop again, and pursued my dreams to become a developer.
TL;DR: Family is "sensitive" to electromagnetic radiation, almost put burnt down their house because of stupidity, yelled at me. I decided to pursue my dream as a developer.16
Years ago, when i was a teenager (13,14 or smth) and internet at home was a very uncommon thing, there was that places where ppl can play lan games, have a beer (or coke) and have fun (spacenet internet cafe). It was like 1€ per hour to get a pc. Os was win98, if you just cancel the boot progress (reset button) to get an error boot menu, and then into the dos mode "edit c:/windows/win.ini" and remove theyr client startup setting from there, than u could use the pc for free. How much hours we spend there...
The more fun thing where the open network config, without the client running i could access all computers c drives (they was just shared i think so admin have it easy) was fun to locate the counter strike 1.6 control settings of other players. And bind the w key to "kill"... Round begins and you hear alot ppl raging. I could even acess the server settings of unreal tournament and fck up the gravity and such things. Good old time, the only game i played fair was broodwar and d3 lod5
Why does this happen?
Whenever I begin with my exams, I think more about Code and Programming!!
Worst legacy code experience?
Well grab your spelunking gear and follow me down this rabbit hole!
It started early this year when our biggest customer asked us to send ETAs for deliveries. Simple enough, how bad could it be? Just need to add an ETA form for the drivers in their mobile app. And yes, that part was easy, but then we had to go from our mobile app to our internal system.
Welcome to the IBM AS/400! Where time has stood still for two decades and the mainframe is alive and well.
The shitshow started in March and, spoiler alert, it's still not working.
We begin by dumping the mobile app data in to a table that an RPG program watches. I'm not sure if it's a limitation of RPG or a limitation on the brains of our RPG developers, but timestamps do not exist here. There are only varchars. There are also a multitude of formats for these timestamps, because that makes life more interesting. This program breaks frequently.
If by some miracle the RPG program processes the data, then the ETA goes to a table that's completely separate from the entity it belongs on. If the data is needed, it is JOINed. The old ETA field is now permanently blank.
Why, you ask? Because RPG programs need to be recompiled every time the underlying database changes, and half our system hasn't been compiled in like 10 years. God only knows if we *can* recompile at this point. We extensively use Synon/2E, which compiles to RPG, which can (and has) been hand-modified to fix bugs instead of fixing them in the "higher" language. So now if we try to recompile, we might be losing those fixes *forever*.
Naturally, there is NO referential integrity between this tables. There's orphan rows all through the system. There's also one-to-many relationships in tables meant for one-to-one. Also there's no unique keys. You have to combine multiple fields to get a (potentially) unique key.
Now, there's a series Synon programs that run every 5 minutes to check if any data needs to be sent out. These Synon/2E programs do *full table scans* of the database and check for changes. And, of course, they're buggy as shit.
But you can't debug it there, oh no no no, the output gets pumped straight to...
Wait for it..
A fucking COBOL program.
This COBOL program takes the data from the Synon/2E programs and puts it in a horrible format called X12. X12 looks something like this:
This shit is why JSON was invented. Yes, that's what an ETA for 2017-06-10 14:00:00 looks like. The timezone is "Local Time", whatever the fuck that's supposed to mean.
So this COBOL program has logs, which should make life easy, right?
Using the 'search and audit' function in the program dumps 90 char lines of text on the screen with no line breaks. Worse, the terminal can only show 87 of those lines, so you have to push Shift+F8 to move to the right by three characters. There's no way to search for the actual ETA events using the program, and while you can filter by reference number all this garbage is sent in 5 minute batches, so you'll get a dump of irrelevant data along with the thing you're looking for. Also there's no such thing is grep in this environment, or anything even close to it.
I have hundreds of these bad data transfers to debug, so there's no way in hell I'm doing this manually.
I never did figure out exactly where the raw data is kept, but apparently it's tucked away in one of a thousand tables associated in something called "multiple member files". It seems IBM tried the "schemaless" thing long before MongoDB thought it'd be hip, and like so many MongoDB projects this too ended up a shitshow. Multiple member files are now deprecated I believe, and IBM documentation + resources are sparse anyway so that's pretty much a non-starter.
But I did figure out that the "Print" function of this program can be called directly with a batch number... So here's what I do:
Get the dates of the oldest and newest bad ETAs I'm looking at. Find those two manually and note that batch numbers. Call the "Print" function with these batch numbers (provided the difference is less than 32,767 because yay 16-bit programs). Take the print file and convert it to a "PC-Style ACII" stream and put it on the emulated file system and ancient SMB server. Copy that file and parse that garbage to find the relevant events, and finally dump it to a CSV for quick and easy viewing.
That last paragraph took me a couple weeks to figure out. Fuck IBM.
Now, finally, after fixing all the bugs I found on our side, we've finally come to the conclusion that the data we're sending is good. But! The customer is still having trouble parsing it...
You see, they're having some problems with their IBM AS/400. There's a lot of old code that's supposed to parse the data we're sending, and they're just not quite sure why it isn't working.17
I've described this before, but my worst legacy experience has to be from my first job, when I was handed a stack of red paper on which was printed thousands of lines of unstructured BASIC, and was told to port it to C++.3
Me lost in my work, interrupted by two dudes claiming they wanna do a security audit on my pc.
Me: Go ahead!
Them : (accessing the mail site and sees creds auto filling.) what is this? This is a clear violation of security policy
Me : I use password manager called keepass. It's the most secure way to manage your credentials with key and password protection. I go ahead and lock the database and refresh to show there's no auto fill.
Them : (a little startled) still this is against policy, blah blah... You've not got authorization from us to install it...
Me : okay will do.
After some rounds of bullshit,
Them : tries to login using their credentials to report the *findings*. Takes a pause and asks, my password won't get stored right?
Me : This is not a fucking key logger.
Me (internally) : Just the fact that they think you're capable of identifying security issues bums me!7
I am starting to get more pissed off than I should be by one particular type of rant on here.
My boss/senior/coworker did not know how to do XXX even though he is supposed to have more experience than me. I had to fix his goddamn problem blah blah blah.
If you'd have that attitude on my team I'd be spending a lot of time trying to get you off of it. A team MUST help each other. If you think you're better than others you either teach them or get the fuck out. If you don't understand or know something that's fine and it perfectly normal to have others explain it to you.10
Travelling and coding are such a great combination! You get to experience the world, see new things and pursue you passion!
Also the stress of programming just floats away.
I just feel that I have to get this of my chest, because this have really me and my family really negative.
It have destroyed my will to be happy, sort of.
Well, my father have some kind of control behaviour. My whole life he has been angry on stuff that does not really matter
and I have always been the one that get all the shit - because I am the oldest. I was never allowed (maybee 3-4 times between age 8-15) to have any friends
over or stay with friends over night or after school. Because they "where bad and I would become like them".
I am happy that I meet my wife 6 years ago and moved away from home when I was 20, I kinda fled the situation from home to start my own life.
My father has always hated when boy/men had long hair and alot of beard - but that is something I always wanted to have. So when I moved from home
I start to let everything grow.
Two years ago, things got really fucked up when I did not shave all my beard of and cut down my hair because my mom had birthday. I did it the week after
because my brother graduated from school and we where going to visit, we did not want a repeat the situation from a couple of weeks before. After that I got
another job as a Linux sysadmin and started to grow the hair and beard again.
Last monday, my dad called and said that I am not welcome to visit them anymore. I am a "bad example" for my sibling
and he also said "you brother and sister does not feel so good (my sister fainted a couple of days before, which I did not know) so I have no time to care about you and your family"
I was stunned, I really wish that this was a joke but it is'nt.
I have always been bashed because of the choices I make in my life and for my own family (wife, and two kids + one more kid any day now)
When I choose to work with something that I love, they said that I am stupid because they basically think "that the PC is full of SATAN".
When they realized that I make more money than my parents combined they went silent.
I just wanted to write this shit of my chest, it is really fucked up and I am starting to loose the ability to have feelings - if you know what I mean.
Thank you devrant, for being one of the fun things I do, when I read all the rage, fucked up stories, hate, and so on. I do not feel alone :)
PS: I promise you, that you guys/gals will be the first one to know when my new kiddo arrives21
When you're looking for that really peculiar problem on Google with mandatory generic words, but the results are everything except what you fucking wanted :
- <the main page of that language>
- <"how to" useless videos with no relation to what you're looking for whatsoever>
- <some more unrelated stuff>
- <outdated forbidden techniques>
- <Chinese gibberish>
- <something that looks like what you looking for, with no answers>
- "how to summon a demon (not clickbait!)"
At this point you either explore the unexplored lands (aka page 2 and beyond, or using Bing or Yahoo), or accept your fate.3
Dad just came to me: "I have a great idea for an app you could build"
I thought "Wow.. That's cliché"5
This guy is easily the biggest idiot I've ever seen. First off, there is no such thing as Valedictorian at UMD. Second, he claims to want to start his own company and become the CEO by sheer will and hope. No business plan, no money, nothing practical, just a few CS classes and a dream. But don't worry, "nothing is insanely difficult if you want it badly enough!"8
"If Java had true garbage collection, most programs would delete themselves upon execution." - Robert Sewell32
Programmers are like bees!
You can domesticate programmers the way beekeepers tame bees. You can't exactly communicate with them, but you can get them to swarm in one place and when they're not looking, you can carry off the honey. You keep these bees from stinging by paying them money. More money than they know what to do with. But that's less than you might think. ~ Orson Scott Card
Starting of my final year of engineering.....
Every other guy is busy thinking about the final year project....
Suddenly I herd some random female friend turning the world upside down...
"We will develope Linux using ubuntu language"...
I no more believe in humanity....34
It's not that I hate PHP, I just hate the lack of consistency in standard function naming and parameter order, nonsensical attribute access, nearly-meaningless comparison operators, reference handling, case (in)sensitivities, and more!
I mean, look at these functions:
And look at THESE FUNCTIONS:
And let me jUST USE SOME ATTRIBUTES:
$object->attr = "No dollar sign...";
Class::$attr = "GOD WHY";
HOW ABOUT SOME COMPARISONS:
(NULL == 0) // true
(NULL < -1) // ALSO true
Functions AREN'T CASE SENSITIVE (at least variables are).
Wanna dereference? TOO BAD, YOU'LL HAVE TO GET OUT THE TNT.
Alright, yeah, I hate PHP.19
TL: Hey, prepare supporting this type of payment method on the app
Me: I don't see it yet on the API
TL: Just visualize it
I made a little tool that checks for the 15 newest rants every 5 minutes, and downvotes them if they contain "algo" or "algorythm".
Clone repo, fill out config.json, and enjoy!
Can I use ANY phone number in my game?
According to Wikipidia:
"Numbers between (555)-0100 & (555)-0199 are reserved for fictional use."
But.. I'm wanting to have a little phone pop up in my game that you can enter phone numbers into and text the corresponding player (and i hope to have more than 99 players) I would just have contact names, but I want players ti be able to dick around with other players.. Like, post their number to in-game telemarketers and such. What fo you think I should do?33
A group of programmers and marketers were traveling to a trade show on a train. Each of the marketers had bought a ticket, but the programmers had only bought one ticket for the lot of them.
One of the programmers was keeping a lookout, and when the conductor neared their car he called out "The conductor's coming!" and all of the programmers piled into the train's lavatory and closed the door. The conductor took the tickets of all of the marketers, and then knocked on the lavatory door and called "Ticket please." The programmers slid their ticket under the door, and the conductor took it and left.
The programmers were laughing at the marketers for the rest of the trip, and the marketers felt like idiots.
On the way back, the marketers decided they would use the same trick and only bought one ticket for them. But this time, the programmers didn't buy a single ticket! Again, one of the programmers kept a lookout for the conductor. When he called "Conductor coming!" all of the programmers piled into one lavatory, and all of the marketers shut themselves into another lavatory.
One programmer came back out of his lavatory, knocked on the other door, and said "Ticket please!"