Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Get a devDuck
Rubber duck debugging has never been so cute! Get your favorite coding language devDuckBuy Now
Search - "abomination"
As a developer, sometimes you hammer away on some useless solo side project for a few weeks. Maybe a small game, a web interface for your home-built storage server, or an app to turn your living room lights on an off.
I often see these posts and graphs here about motivation, about a desire to conceive perfection. You want to create a self-hosted Spotify clone "but better", or you set out to make the best todo app for iOS ever written.
These rants and memes often highlight how you start with this incredible drive, how your code is perfectly clean when you begin. Then it all oscillates between states of panic and surprise, sweat, tears and euphoria, an end in a disillusioned stare at the tangled mess you created, to gather dust forever in some private repository.
Writing a physics engine from scratch was harder than you expected. You needed a lot of ugly code to get your admin panel working in Safari. Some other shiny idea came along, and you decided to bite, even though you feel a burning guilt about the ever growing pile of unfinished failures.
All I want to say is:
No time was lost.
This is how senior developers are born. You strengthen your brain, the calluses on your mind provide you with perseverance to solve problems. Even if (no, *especially* if) you gave up on your project.
Eventually, giving up is good, it's a sign of wisdom an flexibility to focus on the broader domain again.
One of the things I love about failures is how varied they tend to be, how they force you to start seeing overarching patterns.
You don't notice the things you take back from your failures, they slip back sticking to you, undetected.
You get intuitions for strengths and weaknesses in patterns. Whenever you're matching two sparse ordered indexed lists, there's this corner of your brain lighting up on how to do it efficiently. You realize it's not the ORMs which suck, it's the fundamental object-relational impedance mismatch existing in all languages which causes problems, and you feel your fingers tingling whenever you encounter its effects in the future, ready to dive in ever so slightly deeper.
You notice you can suddenly solve completely abstract data problems using the pathfinding logic from your failed game. You realize you can use vector calculations from your physics engine to compare similarities in psychological behavior. You never understood trigonometry in high school, but while building a a deficient robotic Arduino abomination it suddenly started making sense.
You're building intuitions, continuously. These intuitions are grooves which become deeper each time you encounter fundamental patterns. The more variation in environments and topics you expose yourself to, the more permanent these associations become.
Failure is inconsequential, failure even deserves respect, failure builds intuition about patterns. Every single epiphany about similarity in patterns is an incredible victory.
Please, for the love of code...
Start and fail as many projects as you can.30
I feel like a fucking abomination at the moment.
I have been working on an app that is almost like Wireshark. More so for practice than anything else.
I decided that today I would try it out on the network here at my house, so I started the packet sniffer and wanted to see what was going on. I was checking for unencypted text (like telnet and whatnot) and came across this odd address that I hadn't seen before.
I did something that I shouldn't have done, and I fucking clicked and did the equivalent of "follow TCP stream" on wireshark. I fucking went and looked what the text being sent over this fucking network was.
It was my girlfriend, using fuck knows what messenger, but it was unencrypted. I just found out that she is cheating on me. I don't want to go into what the texts exactly say, because it fucking hurts me deep down.
Why didn't she just use whatsapp or something, fuck man. I really don't need this in life at the moment. I am genuinely trying to get my shit in order, I have been coding my ass off at night for extra money to make it, I have been working overtime where I can - fuck I have even tried sucking up to management (I would never do this under normal circumstances) - and to top this off, the motherfucking tax man is giving me hell.
If you want to cheat, fucking do it properly. Because I am in a state of pure sadness and hatred and the moment - and I don't know what the fuck to do.25
Found this gem on GitHub:
// At this point, I'd like to take a moment to speak to you about the Adobe PSD format.
// PSD is not a good format. PSD is not even a bad format. Calling it such would be an
// insult to other bad formats, such as PCX or JPEG. No, PSD is an abysmal format. Having
// worked on this code for several weeks now, my hate for PSD has grown to a raging fire
// that burns with the fierce passion of a million suns.
// If there are two different ways of doing something, PSD will do both, in different
// places. It will then make up three more ways no sane human would think of, and do those
// too. PSD makes inconsistency an art form. Why, for instance, did it suddenly decide
// that *these* particular chunks should be aligned to four bytes, and that this alignement
// should *not* be included in the size? Other chunks in other places are either unaligned,
// or aligned with the alignment included in the size. Here, though, it is not included.
// Either one of these three behaviours would be fine. A sane format would pick one. PSD,
// of course, uses all three, and more.
// Trying to get data out of a PSD file is like trying to find something in the attic of
// your eccentric old uncle who died in a freak freshwater shark attack on his 58th
// birthday. That last detail may not be important for the purposes of the simile, but
// at this point I am spending a lot of time imagining amusing fates for the people
// responsible for this Rube Goldberg of a file format.
// Earlier, I tried to get a hold of the latest specs for the PSD file format. To do this,
// I had to apply to them for permission to apply to them to have them consider sending
// me this sacred tome. This would have involved faxing them a copy of some document or
// other, probably signed in blood. I can only imagine that they make this process so
// difficult because they are intensely ashamed of having created this abomination. I
// was naturally not gullible enough to go through with this procedure, but if I had done
// so, I would have printed out every single page of the spec, and set them all on fire.
// Were it within my power, I would gather every single copy of those specs, and launch
// them on a spaceship directly into the sun.
// PSD is not my favourite file format.
Ref : https://github.com/zepouet/...17
A client asked me to redesign his website the other day. He asked me to use this abomination as a sample:17
What kind of braindead fucking moron thought that implying that dragging the mouse ever so slightly within the same folder with files selected MUST mean that the user wants to copy shit?!
What kind of braindead fucking moron thought that making conhost use Return for copying text and right click for pasting it was a good idea, and make the keybinding unmodifiable?!!
What kind of braindead fucking moron designed this shitty abomination of shit OS?!23
The amount of people who don't know the difference between kilobyte and kibibyte is too damn high. So much confusion.
TL;DR : Most people use Kilobyte ( KB ) and Kibibyte ( KiB ) wrong and i am angry about it.
When i first got involved with software as a teenager, i always wondered why we convert kilo to mega with multiplying by 1024, when we do it with multiplying by 1000 basically everywhere else. Our physics teacher called this SI unit system and told us that this is an internationally accepted statement. So why is there a different rule ? Did i miss out something ? Regrettably I didn't ask her about this.
I just didn't get fully as a teenager. Now, as I am a developer now, i understand that dealing with power or ten is troublesome. Due to ease of work, we lazily mess with SI system and use it wrongly. Isn't it the time we end this abomination ?
2 years ago i talked to a friend about this, he said that i shouldn't bother.
I talked to a teacher, he said "you are right but using different brand of unit system can be overkill, since there is not much difference anyways." I said okay and left.
1 mega = 1000 kilo
1 giga = 1000 mega etc
MB = Megabyte ( 1000 Kilobyte )
KB = Kilobyte ( 1000 Byte )
MiB = Mebibyte ( 1024 Kibibyte )
KiB = Kibibyte ( 1024 Byte )
I am writing this because today i saw someone do it wrong on the internet, all of these came into mind. I wonder your approach about this, for research purposes.
Call me dick all you want, but i am the guy who always corrects uncertainty, no matter what. Things should be in place, correctly. No i don't have OCD. If you say something like "I have 1 MB of executable file, which means i have 1024 KB of it", i will find you, and i will correct you.37
Once I had been sick for a couple of weeks. Then came back to this abomination
Didn't make me feel any better 😨9
Imagine, you get employed to restart a software project. They tell you, but first we should get this old software running. It's 'almost finished'.
A WPF application running on a soc ... with a 10" touchscreen on win10, a embedded solution, to control a machine, which has been already sold to customers. You think, 'ok, WTF, why is this happening'?
You open the old software - it crashes immediately.
You open it again but now you are so clever to copy an xml file manually to the root folder and see all of it's beauty for the first time (after waiting for the freezed GUI to become responsive):
* a static logo of the company, taking about 1/5 of the screen horizontally
* circle buttons
* and a navigation interface made in the early 90's from a child
So you click a button and - it crashes.
You restart the software.
You type something like 'abc' in a 'numberfield' - it crashes.
OK ... now you start the application again and try to navigate to another view - and? of course it crashes again.
You are excited to finally open the source code of this masterpiece.
Thank you jesus, the 'dev' who did this, didn't forget to write every business logic in the code behind of the views.
He even managed to put 6 views into one and put all their logig in the code behind!
He doesn't know what binding is or a pattern like MVVM.
But hey, there is also no validation of anything, not even checks for null.
He was so clever to use the GUI as his place to save data and there is a lot of parsing going on here, every time a value changes.
A thread must be something he never heard about - so thats why the GUI always freezes.
You tell them: It would be faster to rewrite the whole thing, because you wouldn't call it even an alpha. Nobody listenes.
Time passes by, new features must be implemented in this abomination, you try to make the cripple walk and everyone keeps asking: 'When we can start the new software?' and the guy who wrote this piece of shit in the first place, tries to give you good advice in coding and is telling you again: 'It was almost finished.' *facepalm*
And you? You would like to do him and humanity a big favour by hiting him hard in the face and breaking his hands, so he can never lay a hand on any keyboard again, to produce something no one serious would ever call code.4
Cursing under your breath at some crufty, amateurish, slow-as-balls code... Checking the repo history to see what sad, soulless sack committed this abomination.. And its me.1
Stupid shitheads among the web designers, fucking listen up. Your fucking design is not the point of websites - the content is. You are not supposed to shove the content away to have your moron design shine in its purest debility.
Yeah I know, white space minimalism yadda yadda, clean interface - and you dumbasses just remove functionality to simulate a clean interface, to the point of using hamburger fuckups on desktop. Pull your heads out of your asses, that's not how to design an interface! Not to mention that you idiots still guzzle through the megabytes and dozens of domain lookups for your chickenshit minimalism.
While we're at it, not everyone is 20 years old like you youngsters - you won't believe it, but there is life beyond 40, and while such age is unthinkable to you because you are so dumb that you will hardly reach that age anyway, others on this planet have managed to get there. No 20/20 laser sight, you know.
Fuck you with your light grey thin fonts on white background because it looks "clean", it just SUCKS you wankers. Fuck you with your stupid ghost buttons that don't even look like a button. You know how to operate the shit you made, but reality check here, users spend most of their time on fucking other websites than on the abomination you have designed!
Get that into the shit bubble that you call your brain and read WCAG 2.1! That's not only for disabled people, but everyone will be able to use that shit better!6
Forget about Internet explorer compatibility, EMAIL TEMPLATES are the actual worst. Outlook uses the same html rendering engine as MS WORD. It's sooo painful. All the bad practices you had to do 15 years ago, you have to do when you write email templates.
YOU WILL NOT KNOW PAIN until you have to make an email template, that works in Gmail, Yahoo Mail, OUTLOOK, outlook.com, outlook for mac, MOBILE, Android, the gmail app, IOS, apple mail, and so on. And after you make an unholy abomination of table garbage, then having to make it responsive/mobile friendly after all that!
If something is broken in one client, fixing it will break something in a different client! And then having to take a stab in the dark to try to fix it and then sending yet another test email (which costs $ per test)
I must have slashed decades off my life having to build email templates. It really is horrendous. There are frameworks like Zurb for email that at least let you feel like you're using a modern workflow. But things break just as often.
Honestly if you have the option, use a wysiwyg editor for building emails. At least when it does break (and they all will) you can at least blame the software.
Which is better than spending 4 hours on why that table cell doesn't line up correctly in outlook.7
Typical Tuesday morning. Got word that a client was having trouble viewing a mp4 video, thats being used as a background element on their website, on their iphone.
No biggie, I think to myself.
An hour in Im praying to the safari Gods and cursing the existence of iOs (or however the hell you spell it).
While debugging I realise the browser gives up on downloading the video 2 seconds in, the same way I gave up watching that Netflix Neath note abomination, two seconds in.
So i quickly write up an ajax script forcing the browser to download the file before displaying it...F.I.G.J.A.M
But hold up 'webkitURL' is deprecated. Please use 'URL' instead ..dafuq ?
Okay okay I got this just use a work around for that ..aaand done.
Should be working right? Wrong (-_-)
Half an hour later searching stackoverflow like its the gospel and judgement is upon me and I found the solution..I found the solution, simple stupid solution that would make you wanna facepalm so hard that your great grandkids would have marks on their face.
Declare the MIME type in the bloody source tag in the html ... shoot me now3
The facial hair devRant provides in it's profile builder are either well maintained thick growth of beard or a neatly trimmed uniform beard.
And here I am with my abomination of a beard that looks like a herd of cattle trampled over a sparse field of grass.
The struggle is real.6
We were trying to go live with a big online shop, it is connected through a crappy API to SAP.
PHP keeps outputting fucking errors because our intern doesn't fucking know how to properly write PHP.
YEAH, JUST FUCKING RETURN A WHOLE DIFFERENT TYPE OF DATA IF THE FUNCTION HAS AN ERROR.
Oh and using fucking strtr( ... ) to insert stuff in a string is REALLY FUCKING 1337...
And when you think the whole fuckery has reached the summit, just look at how HE FUCKING CREATED THE UGLY EMAIL TEMPLATE:
$content .= "UGLY HTML ABOMINATION";
$content .= "MORE UGLY HTML";
$content .= "HTML WITH SPELLING ERRORS";
$content .= "<table>";
$content .= "TEARS OF TIM BERNERS LEE";
$content .= "<table>HE FOGOT THE FUCKING '/'";
and dozens more of these lines...
and the whole piece for ALL 3 FUCKING LANGUAGES...
Thanks for writing the fucking backend stuff, it is better to rewrite the whole piece.20
I'm currently rewriting perfectly clean and functioning Scala code in Java (because "Enterprise", yay). The amount of unnecessary boilerplate I have to add is insane. I'm not even talking big complicated code but two liners or the lack of simple things like a range from 5 to 10.
Why do I have to write
List<Position> occupiedPositions = placedEntities.stream()
.flatMap((pe) -> pe.occupiedPositions().stream())
instead of simply
val occupiedPositions = placedEntities.flatMap(_.occupiedPositions)
Why on earth does `occupiedPositions.distinct` suddenly become a monstrosity like `occupiedPositions.stream().distinct().collect(Collectors.toList())` where the majority of code is pure boilerplate? And this is supposed to be the new and better Java8 api which people use as evidence that Java is now suddenly "functional" (yeah no, just no).
Why do APIs that annotate parameters with @Nullable throw NullPointerExceptions when I pass a null? Why does the compiler not help prevent such stupidity? Why do we use static typing PLUS those annotations and it still crashes at runtime like every damn dynamic, interpreted language out there? That's not unfortunate, it's a complete waste of time.
Why is a simple idea like a range from x to 10 (in scala literally `x to 10`) not by default included in Java? There's Guava's version of Range which does not have a helper for integer ranges (even though they are the most used ones). Then there's apache.commons version which _has_ a helper for integers, but is strangely not iterable (wtf I don't even...).
Speaking of Iterable: How difficult could it be to convert an abstract Iterable<T> into a concrete List<T>? In scala it's surprisingly `someIterable.toList`. I found nothing like that so I took to stackoverflow where I found a thread in which people suggested everything from writing your own ListUtils helper class, using Guava (which is a huge dependency!) to using the new Java8 features inline (which is still about three lines long). I didn't know this was such a hard problem in computer science, TIL.
How anyone can be productive in this abomination of a language is beyond me now, even though I've used it for many years while learning to code (back then I didn't know there were much better ways to do things). The only good part is that I have to endure this nonsense for only about 3 days longer then I'm free again!14
I don't really like WhatsApp, but I am forced to use it to keep in touch with some friends that don't use messengers like Signal or Telegram.
Today, I see this. What the hell is this crap? Snapchat 2.0? Whatssnap? Who thought this would be a good idea?
Fuck WhatsApp (and Facebook).15
First rant: but I'm so triggered and everyone needs a break from all the EU and PC rants.
incredible async code (await/async)
universal support on almost everything connected to the internet
runs on almost all platforms including natively
dynamically interpreted but also internally compiled (like Perl)
gave birth to JSON (you're welcome ppl who remember that the X in AJAX stood for XML)
All these people ranting about JS don't understand that JS isn't frikin magic. It does what it needs to do well.
If you're using it for compute-heavy machine learning, or to maintain a 100k LOC project without Typescript, then why'd you shoot yourself in the foot?
As a proud JS developer I gotta scroll through all these posts gushing over the other languages. Why does nobody rant about using Python for bitcoin mining or Erlang to create a media player?
Cuz if you use the wrong tool for the right job, it's of course gonna blow up in your face.
For example, there was a post claiming JS developers were "scared" of multithreading and only stick in their comfort zone. Like WTF when NodeJS came out everything was multithreaded. It took some brave developers to step out of the comfort zone to embrace the event loop.
For a web app, things like PHP and Node should only be doing light transforms between the database information and HTML anyways. You get one thread to handle the server because you're keeping other threads open to interface with databases and the filesystem. The Nexus.js dev ranting on all us JS devs and doesn't realize that nobody's actual web server is CPU bound because of writing HTML bodies, thats why we only use 1 thread. We use other worker threads to do the heavy lifting (yes there is a C++ bridge look it up)
Anyways TL;DR plz respect JS developers we're people too. ES7 is magic and please don't shit on ES3 or we'll start shitting on the Python 2-3 conversion (need to maintain an outdated binary just cuz people leave out ()'s in their print statements)
Or at least agree that VB.NET is an abomination and insult to the beauty that is TI-84 BASIC13
Just in case nobody has mentioned this yet:
Yes Microsoft I do have a dualhead setup.
Yes Microsoft I do want to watch video on my left screen while having window focus on something on the right monitor.
No Microsoft this doesn't mean that I *lost* focus on the left window.
No Microsoft this doesn't mean that I want your Movies and TV application to suddenly minimize (and continue playing anyway) while I focus on some server monitoring window on my right display.
Microsoft, there exist people that use more than your average user with a single C: drive that play Candy Crush on Facebook all day. And the limitations that you currently impose might very well be what keeps the Microsoft UWP applications from getting adopted. Because you know what? SMPlayer, a default application in any of my Linux workstation machines, it does handle such window transitions just fine!
Microsoft, I love how you at least gave us the option to enable Ctrl-Shift-C and Ctrl-Shift-V in WSL and conhost in general over that abomination that is Right-click and Return (those are so random!) that are relics from CP/M. But seriously? At this rate, I'd definitely not call it usable for anyone but those with a single monitor yet.
So please _/\_22
Did you fucking idiots think that I was gonna tell you to implement async await on the requests and not notice that you IMPLWMENTED GODDAMN SYSTEM-SLEEP YOU DESNE MOTHERFUCKEDS IT NOT TAKES 10X AS LONG AS MY OATCH TO JUST LIMIT THE NUMBER IF HTTP REQUESTS FOR FUCJS SAKE THIS CODE LOONS LIKE A RACCOON FUCKED AN MACBOOK THAT ALSO GOT FUCKED BY A GOAT FROM CHERNOBYL THAT SOMEHOW MUTATED TO A RACCOON GOAT 🐐 MACBOOK 💻 HYBRID ABOMINATION THAT IS NOW CLAWING MY EYES OUT AND GIVING ME RABIESCANCERAIDS5
My boss just asked me to participate in a conference call to help an external senior dev implement some stuff/tool into our website.
My boss suspects that he doesn't even know Git...
Let's see how that whole thing will turn out.
My boss told me that he looked at his code and it already looks like an abomination of PHP...
It is enough that my boss usually writes shitty spaghetty code.
I will not sleep well this night.1
I feel like the web frontend landscape has gone to hell...
It used to be a priority to develop lean front end applications that load fast and work the same on most devices. If resources are required you try to share them. I have always liked the way this was solved using CDN.
Proper workflow: include some small libs you might need, script your interactions, test site, deliver.
I have even considered to develop a library that makes it easy to develop with CDN (and dependencies) in mind but I don't even know if it will be worth it as more and more people tend to move away from it.
This is my first rant here, so I hope everyone has a good time reading it.
So, the company I am working for got me going on the task to do a rewrite of a firmware that was extended for about 20 years now. Which is fine, since all new machines will be on a new platform anyways. (The old firmware was written for an 8051 initially. That thing has 256 byte of ram. Just imagine the usage of unions and bitfields...)
So, me and a few colleagues go ahead and start from scratch.
In the meantime however, the client has hired one single lonely developer. Keep in mind that nobody there understands code!
And oh boy did he go nuts on the old code, only for having it used on the very last machine of the old platform, ever! Everything after that one will have our firmware!
There are other machines in that series, using the original extended firmware. Nothing is compatible, bootloaders do not match, memory layouts do not match, code is a horrible mess now, the client is writing the specification RIGHT NOW (mind, the machine is already sold to customers), there are no tests, and for the grand finale, the guy canceled his job and went to a different company. Did I mention the bugs it has and the features it lacks?
Guess who's got to maintain that single abomination of a firmware now?2
That moment when you are testing the product with the PM and you remember all the bugs that happened and all you can think is that you don't trust this abomination
Prior post on this story: https://devrant.com/rants/1635258/...
Apparently my dad decided to adopt the Windows file system hierarchy for his business.
He has managed to store his video, picture, and music folder INSIDE the DOCUMENTS folder. And there are seperate video, picture, and music folders outside of this folder. The business information is in all of these folders adding up to about 600GB of data in 10 different folders and 4 trees. Nothing has been deleted since 2010. WHAT IN THE EVER LOVING CHRIST ON A FUCKING POGO-STICK IS THIS ABOMINATION. I AM GOING TO JUMP OFF A CLIFF NAKED AND ON FIRE BEFORE I TRY TO SORT THIS SHIT.13
Hi guys! This is my first rant, please be easy on me.
This is for all who always rant about how horible old codes on existing systems are, compared to what new tech they knew and how better they are as programmers compared to the seniors in the team and how they could have done it better... im getting an impression that it's either your a newbie on a corporate world or a freelancer that has not worked well with a system whos been there for ages... first, most of us devs thinks that they can do better than the previous ones, it is a never ending curse for us proud race but as time goes we would also regret our decision..2nd: cost.. migrating a battle-tested / fully functional system to a new tech would take time and money including training, which the management wont agree unless of course you do it for free.. 3rd: standards.. the company has built a pretty solid standards that changing to a new tech would affect it..there are so many more reasons that the only thing we can do is accept our fate.. coding is fun until the system grows to become an abomination that even its creator regret doing it... it's not our fault, blame the marketting guys! :D
Thank you for reading!12
My friend said he wont make a github accoint bc git is too complicated and ftp uploading straight to the server is easier. Pic unrelated, i just wanted to share this abomination too.7
So, this is probably somewhat esoteric but...
While studying at university I had a "programming paradigms" module, dunno why they called it that, it was more like "introduction to functional programming".
So, it's kinda mind bending, we'd only really started to get our heads around classical object oriented programming and they throw functional programming at us.
It's worse than that though, for do they use an established language, like lisp/scheme, functional Python, or even given Haskell?
No, of course they didn't. They taught us Oz.
You probably won't have heard of it, but this language is burned into the back of my brain, along with a vague understanding of the n-queens problem we had to solve graphically (using qTk, which I dunno if someone took qt and tk and blended them, I stopped asking questions after a while).
To top it off did this language (at the time) have a stand alone interpreter? Did it buggery! It was coupled to the Mozart programming system, which is just Emacs (which has a bloody lisp built into it,so close, yet so far 😭).
It gets worse, though, oh does it get worse, for pause dear reader and consider, have you ever heard of Mozart/oz before, I'd put money on most of you had not heard of it until today.
For, you see, I believe at the time of writing, one, yes, ONE text book exists on this language. When I was doing my assignment there was merely some published conference notes and language design documents.
That's not all, I was not the only one experiencing difficulties with this language, someone in the class ended up pouring through the mailing lists and found the very tutor teaching the class struggling at first to understand the language.
I had to repeat that year. The functional programming class was one semester.
When I retook that year, it was a whole year long. However, halfway through the year, original tutor was fired and a new tutor was hired to teach the language.
He was, understandably, just as confused as we were.
There was a Starbucks and a pub equidistant from the lecture hall, though in opposite directions. From lecture to lecture we had no idea which one we'd end up in.
I have reason to believe Mozart/Oz it some sort of otherworldly abomination designed to give students the occasional nightmare flashback, long after they've left.
My room had post it notes, sheets of paper, print outs, diagrams, doodles and pens, just stuck to the wall, I looked like a raving lunatic three hours away from being institutionalised. There was string connecting one diagram to the next and images of a chess queen all over. As I attempted to solve the n-queens problem.
Madmans knowledge, I call it. I can never unlearn all that, in fact it seeps into much of the code I write. Such information was not meant for the minds of a simple country bumpkin such as myself...
Mozart/Oz... I wouldn't be the programmer I am today without it, and that's frankly terrifying...10
Dat moment when, after some hard work, you can finally delete that abomination your predecessor left you as a present...
So ok here it is, as asked in the comments.
Setting: customer (huge electronics chain) wants a huge migration from custom software to SAP erp, hybris commere for b2b and ... azure cloud
Timeframe: ~10 months….
My colleague and me had the glorious task to make the evaluation result of the B2B approval process (like you can only buy up till € 1000, then someone has to approve) available in the cart view, not just the end of the checkout. Well I though, easy, we have the results, just put them in the cart … hmm :-\
The whole thing is that the the storefront - called accelerator (although it should rather be called decelerator) is a 10-year old (looking) buggy interface, that promises to the customers, that it solves all their problems and just needs some minor customization. Fact is, it’s an abomination, which makes us spend 2 months in every project to „ripp it apart“ and fix/repair/rebuild major functionality (which changes every 6 months because of „updates“.
After a week of reading the scarce (aka non-existing) docs and decompiling and debugging hybris code, we found out (besides dozends of bugs) that this is not going to be easy. The domain model is fucked up - both CartModel and OrderModel extend AbstractOrderModel. Though we only need functionality that is in the AbstractOrderModel, the hybris guys decided (for an unknown reason) to use OrderModel in every single fucking method (about 30 nested calls ….). So what shall we do, we don’t have an order yet, only a cart. Fuck lets fake an order, push it through use the results and dismiss the order … good idea!? BAD IDEA (don’t ask …). So after a week or two we changed our strategy: create duplicate interface for nearly all (spring) services with changed method signatures that override the hybris beans and allow to use CartModels (which is possible, because within the super methods, they actually „cast" it to AbstractOrderModel *facepalm*).
After about 2 months (2 people full time) we have a working „prototype“. It works with the default-sample-accelerator data. Unfortunately the customer wanted to have it’s own dateset in the system (what a shock). Well you guess it … everything collapsed. The way the customer wanted to "have it working“ was just incompatible with the way hybris wants it (yeah yeah SAP, hybris is sooo customizable …). Well we basically had to rewrite everything again.
Just in case your wondering … the requirements were clear in the beginning (stick to the standard! [configuration/functinonality]). Well, then the customer found out that this is shit … and well …
So some months later, next big thing. I was appointed technical sublead (is that a word)/sub pm for the topics‚delivery service‘ (cart, delivery time calculation, u name it) and customerregistration - a reward for my great work with the b2b approval process???
Customer's office: 20+ people, mostly SAP related, a few c# guys, and drumrole .... the main (external) overall superhero ‚im the greates and ur shit‘ architect.
Aberage age 45+, me - the ‚hybris guy’ (he really just called me that all the time), age 32.
He powerpoints his „ tables" and other weird out of this world stuff on the wall, talks and talks. Everyone is in awe (or fear?). Everything he says is just bullshit and I see it in the eyes of the others. Finally the hybris guy interrups him, as he explains the overall architecture (which is just wrong) and points out how it should be (according to my docs which very more up to date. From now on he didn't just "not like" me anymore. (good first day)
I remember the looks of the other guys - they were releaved that someone pointed that out - saved the weeks of useless work ...
Instead of talking the customer's tongue he just spoke gibberish SAP … arg (common in SAP land as I had to learn the hard way).
Outcome of about (useless) 5 meetings later: we are going to blow out data from informatica to sap to azure to datahub to hybris ... hmpf needless to say its fucking super slow.
But who cares, I‘ll get my own rest endpoint that‘ll do all I need.
First try: error 500, 2. try: 20 seconds later, error message in html, content type json, a few days later the c# guy manages to deliver a kinda working still slow service, only the results are wrong, customer blames the hybris team, hmm we r just using their fucking results ...
The sap guys (customer service) just don't seem to be able to activate/configure the OOTB odata service, so I was told)
Several email rounds, meetings later, about 2 months, still no working hybris integration (all my emails with detailed checklists for every participent and deadlines were unanswered/ignored or answered with unrelated stuff). Customer pissed at us (god knows why, I tried, I really did!). So I decide to fly up there to handle it all by myself16
have you ever felt that you enjoyed and loved your job and coding, then after a while all of the joy, contentment and vigor just left together with the wind?
Well I have, and let me tell you the story of my peope and the feature whirlpool drain of death, slowly `agile`ing you to the death of creativity.
First everything was seemingly good, Its your product, a baby that every one is contributing to make, a great idea in the making.
Fastforward after the baby was fully materialize, and you are watching his first step, usually you are happy seeing his slow growth. But ITS A BIG FUCKING NO. He wants the baby to go faster, bigger and stronger, more than what he can chew. Then you watch as the baby grew into an abomination. A monster of undistinguishable and parts. It grew inhumanly large. BUT it never grew and it never matured. The baby sits there, and were just here injecting all sorts of stuff just to make his father happy. But the end of the day he will ask more and more and more, until the cycle goes on. The baby grows but does not mature, and were here trying to make his father accept the baby. But NO he like more. Sadly we have no power over this. we are mere slaves of the fathers bidding. his bitches, tools and nothing more...:(4
I got moved to a new team. My old team was truly agile, and my manager was very "off hands" and actually let us work.
My new team is an older team that practices a bloated abomination called SAFe Agile, and the manager gets into all the details to the point of removing autonomy.
Shoot me please.
Don't you just love customers?
It al began when they showed us the flyers they were printing for their new products, an some one at our company who doesn't work here anymore had the brilliant idea of copying it to their webshop, as a fucking gimmick... Ooohh man the customer didn't seem to understand it was only visually
They wanted the 3d layering effect to be dynamic, so each product would have its own with custom colours
So it was made
A few weeks later they didn't want the informational text, they wanted links to each product that the layer uses
Sounded like logical so it was made
Again some time later, they noticed that the layers were not textured, but just plain
I argued against it because it would add unnecessary loading time for some 300 by 400 px element but they insisted
So they got what they wanted
A few days later they said that the textures were of low quality, and that we had to create ones with higher quality
Again our management said, yes
We made ~ twice the size of the element in image pixels to create a higher definition image
Then the customer wanted that the layers should change based on some selection menu above it
(At this point we realized that it would no longer be just a fun little gimmick)
So we tried to refactor/rebuild it to remove most if not all the hacks we did just to make the customer happy, that took too long for them (the customer) so we had to revert back to the hacked together version because otherwise we would not be done on time (commanded by management)
But again, we ... I say 'we' as in the company but realistically I've been the only one who has worked on the fucking abomination
But I digress...
A few stupid requests later, some layer images are almost fully transparent PNG images that are almost 1mb in Filesize each (some products have 5 or even more layers) and the god damn thing now has to account for optional layers...
I AM FUCKING SPENT... I'VE JUST CAME BACK FROM VACATION BUT I ALREADY NEED IT AGAIN... FUCKING WORKING 60 HOURS A WEEK JUST TO KEEP ONE CUSTOMER HAPPY WHILE OTHER PROJECTS BREATH ON MY NECK1
I once thought that developing on WordPress was cool and easy. Now I see that it's a total abomination.
No more WordPress job for me. I'm gtfo.3
I hate react so much. I hate it with the fiery rage of an old testament god. I tried to like it. I wanted to like it.
Unfortunately I picked up Angular (2). I'm now used to a framework that has you covered for most things. That has logical methods of laying out your app. A router that's actually built in and makes sense.
I'm used to writing HTML in the templates, not some horrible abomination of XML that's pretending to be HTML and just waiting to pull off its mask and smack you across the face with its penis while telling you what an idiot you are.
React apps all seem to be cobbled together in a different way. You have to go hunting for the logical stuff you expect to be there.
Let's not even get started on the tome of dependencies it needs to get itself off the ground, all written by vastly different developers from different planets with completely different life goals.
I hate it. The more I learn about it the more I find myself yelling "WTF!" while shaking a fist at the wall, hot tears of rage steaming down my pudgy cheeks until my wife comes running into the room and consoles me with my head on her bosom.
...and I just started a project that will have to be seen through to the end, using.. react.
Seriously, fuck you react, I hope you die of herpes.11
Getting downvoted on Reddit for saying the founder of WordPress should get punished for creating that abomination.
Apparently /r/PHP is filled with 'site builder' retards.1
At first it seemed harsh, but then I learned that he committed code like
if (a == b)
Every one of my private projects "Lets hack together an abomination resembling the finished result and do the boring ground work later".1
I was just begged to play 30 minutes of monopoly with my family
With all those versions of monopoly I'll have to be more precice, it's the worst of them all
It's monopoly fucking zapped, you need an ios device to play it, it's been developed for the iPhone 4 and maybe a tablet because they didn't even update it for current phones, not even iPhone 5
The credit cards are a fucking joke, they work by touching certain parts of the touchscreen and don't work 85% of the time you try to use them, 5% of the time just choosing the wrong person
At least your relieved when 10% chance kicks in where it works for once
Instead they could developed for Android and used nfc tags making it reliable and fun, no it has to be shitty, cheap and frustrating
Like seriously, they could've also used qr codes instead, or just have fucking buttons on the screen because you need the fucking ios app anyway
The minigames are at least a bit of thought, but don't really make sense either
Money doesn't seem to matter, sometimes paying another player when it shouldve been pay to the bank (yeah, not only the credit cards are fucked, the whole money system is shit)
It's a fucking abomination of a game
Halfway through I searched for the company name on the board...
ITS FUCKING HASBRO, OF COURSE IT'S FUCKING HASBRO THAT FUCKING PEACE OF SHIT FUCKING COMPANY THAT DESERVES TO ROT IN HELL HAVING CREDIT CARDS STUFFED UP THEIR FUCKING ASSES7
Oh God, I just realized I suck at coming up with ideas for layouts.
I have been staring at my abomination in Android studio for, I don't know how many, hours. :/2
the most popular ecommerce solution in php is a massive (cosmological scale) pile of corporate crap (magento) and the next most popular is an abomination (opencart)
after fucking around with both for a month (the client asked for the project to be using only one of the two) I'm still barely reaching any results, and most of my time is wasted with the stupid bloated spaghetti that is opencart FUCK THIS,
like seriously. who the fuck writes a single line three left joins sql querry with four or five aliases a couple concacts and a bunch sorting fuckeries just to query the categories list, then just query the details of the specific category from a different function,
also why the fuck map each language string manually. or the fucking hardcoded seo urls, or the use of myisam for all tables, and no fucking foreign keys, let that settle for a minute, no foreign keys, the delete method in the model has at least a twenty lines, and then he came with the genius idea of duplicating models, in the front and the backend, accessing the same data, as the same user, but different naming conventions
I'm going to convince him to use something sane like codeigniter/laravel/fuelphp or I'll deny the project8
I know this sounds odd, but I really find algorithms things of delightful beauty.
A creative solution to some very deceptively complex problems.
Sure, some implementations aren't the best, but seeing them after just makes me appreciate the time and effort that must have gone into designing things like Merge Sort, Binary Search, Greedy Algorithms, BST, and Dijkstra's Algorithm.
So! If your code is unoptimal, looks terrible, or is a sheer abomination, take a moment to appreciate the little piece of art you've made before you go and make it better.1
In my previous job, we had in c# a class called static manager. This abomination was thousands of lines long, every member static. Eventually the dev responsible, did split it in to multiple files each thousands of lines using partial class. Worst part? It wasn't even legacy code yet.1
my fist job... i get to edit a c++ code written by a (mind you) programming company that they teamed with for the past(mind you again) 3 years ...
now just for starters, this code was edited by self taught coders that are really good engineers(they are really good), that didnt really know how the code worked before yet they still changed it, and it worked, how ever they wanted some changes.
i get the project files, and there is not one single comment describing what is happening... only code commented out... and no documentation what so ever were done....
so below are some of my comments that i wrote after i finished adding what i had to add, and fixing what i had to fix:
/*first rule of C anything coding, no actual functions in the header, well let me introduce you to a fully functioning thread running program all in the header, enjoy*/
//used to control the thread
// i honestly dont know why, but it worked soooooo yea...
// TG uncommented // for absolutely no reason what so ever...
//used to communicate with the port
//the message to be sent to the inverter, which has a code that will handle it
//again not usefull since we are using radioButtons
// same ...
// same ...
// same ...
// they said they dont even use this mode, but none the less, same ...
// calculate the checksum for the message
// one of the things that work, and god forbids i touch
// used for the status displayed on screen
// used for the (censored :P) status in the message
// used for the (censored :P) status in the message
// not used at all, but the message structure contains it and i refuse to edit that abomination
// used for the (censored :P) status in the message
// used for the (censored :P) status in the message
// just dont ask and roll with it, i didnt want to touch this
// saaaaame ...
// if before true this saaaaaame ...
// value of the (censored :P)
// it pains me to say it again, but this is no use
// (censored :P) input
// (censored :P) input
// only place seen , like for real it was just defined,sooooo yea :D
// well you know how it is
// message string
// check sum string
/****below from feed back****/
// (censored :P) coming in
// (censored :P) coming in
// (censored :P) coming in
// (censored :P)
/****below is the output to the receiver ****/
// (censored :P)
// (censored :P)
// (censored :P)
//you thought we were done.... nope, no idea. it comes in the feedback
// not used, literally commented out the one time it was used
// same ...
// XD, man this is a blast, same ...
// nope ...
// used to store the port chosen for the communication
// is a static for the number of data we have recorded so far, and as a row indicator for the recording method
// used to indicate the page we are on in the excel file, as well as the point in physical point in the test
// same ... oh look at this a positive same :D
// same ...
// same ...7
Too many people seem to think that "goto" in C is the worst thing you could do. It's an abomination, never use it! (Not something I've seen here per se, just generally around)
Break out of a loop inside a loop without using goto, and make it look pretty. Seriously, I don't think it can be done, and goto just makes it so clean!7
As someone who hates CSS/design/front end development, this abomination of a campaign donation solicitation page really has me saying, "finally, a politician who understands MY struggles!"6
Almost finished the current (and hopefully last) WordPress abomination project.
Taking a 2 week vacation to clear my head and interview at a fuckload other places, that are Product companies and not project companies.
Finally some relaxation <33
A bad dev habit I should unlearn?
How about being too stubborn to take an idea out back and put it out of it's misery. You know what I'm talking about. Got some elegant idea in your head, it looks so pretty and masterful. You begin to implement it but straight away, things start looking pretty fucking ugly. You persist though, and persist.
Sooner or later that pretty idea looks like Donald and Hillary decided to spawn a love child. You close your eyes and grit your teeth, unwilling to put the abomination out of it's misery.
You stop and finally open your eyes to look at what you've done. A hideous beast with Gary Johnson's nose, Bernie's voice. Donald's hair, and Hillary's lips stares back at you. Yeah. Now you've wasted hours upon hours and only have a mistake worse than the 2016 American Presidential Election to speak for it.2
Jesus H. Christ. It really did happen! Just moved from vb6 to vb.net. My personal opinion, going with C#, was disregarded but im still happy to leave that abomination behind.
The sad part is that I have gotten pretty good with vb6 🍻 A drink to that!
PS. VB.net is supposed to be simple and readable but I disagree. C# Is way more readable and there is this elegance about the syntax. As a side project I am thinking of learning Go and make a simple cms.
System.IO is buggy, so you gotta use Windows.Storage.
I have a class called Navigator I use to manage paths, go up and down directories, list directories, etc.
After adapting to Windows.Storage. from a one-liner System.IO call, this is the new abomination returning some bullshit ReadOnlyList and including two async calls. Hurts my soul.
public async Task<IReadOnlyList<StorageFolder>> ChildDirectories()
StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(Path);
return await folder.GetFoldersAsync();
I fucking hate my ISP. Those cocksuckers never even provide me with a functioning internet connection, and even when the internet does function (which is once in a blue moon) the speed is way slower than the speed they promised me. (supposed to be 24mbps, actually ~2mbps)
The tech support is even worse. It takes forever to get to someone, and when you do get connected to someone, they come up with some bullshit excuse instead of helping me. Either that, or they say they're going to run some tests, and they never get back to me. It's only now that they're sending an engineer over, and they come next week.
Oh, and don't get me started on the router's web interface. It is an abomination of <frameset>, document.write, XMLHttpRequest, non-functional CGI scripts, and to top the shit sundae off, a web server that hasn't been updated since 2005.1
Software development is so rotten: So I had to compile curl 32 bit. But just to create the configure script I needed friggin autoconf, libtooling and 2 other packages which homebrew would not install, because there were too many github-API requests. So I created a fucking github account just to create a token, import it in my bash to enable more requests. And it even worked. That is the scandal: That this whole shattered, stinking abomination of a process even produces some software you might actually run... and that we are using it.2
First time linux user feedback
Linux lovers are probably gonna eat me alive but I don't give a flying fuck
Maybe its a little lenghty or boring, tell me what you think
I work for game extension company. We work with WinAPI and such. I've been using Windows since forever and I'm happy with it. But I thought to myself "hey, if I wanna be a good dev, I should give Linux and OS X a try, too"
I downloaded Linux Mint couple of months ago to start with. I was unable to boot it from live CD no matter what I tried, even in recovery mode. Apparently, Mint 18.3 was based on Ubuntu 16.04 which doesnt support UEFI
Wait, what the fuck, all modern PCs have UEFI so what, do all Mint users have 10 y/o laptops and PCs???
Anyway, when I heard about Mint 19 being released I thought to give it another try and I did. What a surprise, it booted successfully from Live CD. I saw the Linux desktop for the first time in my life, yay! I then installed it, GRUB appeared, my Windows was still there and wasn't broken so I was happy SOMETHING was working. I configured timeshift and applied dvorak layout system-wide. Realised dvorak layout is fucked up big time and applied normal layout for just desktop environment. Everything was really nice until couple reboots later Cinnamon stopped launching (kept returning to login screen). Okay, lets use timeshift
First big what-the-fuck was when I found out system restore can only be done using GUI??? This is absolutely retarded and I couldn't believe it is true. Login screen has a reachable console but I can't login there since I can't type the password. Fuck, fuck, fucking drovak layout was there.
Recovery mode - I've spent 20 minutes trying to type "timeshift --restore" having to press all keyboard buttons just to progress with one button. I've had another what-the-fuck when I saw "error: can't restore timeshift - partition already mounted"
Okay, this is too much. Why the fuck would you bundle a recovery mode if you can't restore a snapshot from there.
I have spent 3 hours now googling and trying to remove this fucking keyboard layout. No dice. I am making another copy of the live CD now. I'm gonna reinstall the whole shit now. I have the desire to create a custom Mint version without this abomination of a keyboard layout.
It's okay. Windows has taught me to be patient.
Fuck Dvorak, I dont know who the guy is but his keyboard layout can eat my dick12
This comment is why iis is an abomination for allowing multiple languages
/*Didn't know how to do this in php so wrote in asp just call it do do the task*/
Is it OK to put HTML code into PHP? I just did it and I feel like I'm doing a terrible abomination9
Been using a *nix since about 2004, but becoming very weary of the OS wars. Man it's all the same shit: if you got to dig through the mud of undocumented Exchange API whose support will then be dropped or if you have to support eight different Samba VFS versions with all their gratuitous name changes.
It's all a fucking mess! But someone's got to roll up one's sleeves and get that shit to work.
And then there will always be the next guy cursing your name, because you got it to work and now he has to add some feature to this abomination.
Are there any Objective-C programmers out there? What's it like to program in? Does it combine the best parts of C and Smalltalk into the ultimate expression of programming language design? Or is it an unholy abomination?4
Yeasterday I sat in meetings all day alternating between talking about work that needs done to fix something, and listening to people talk about things that don't matter to me.
Today I plan on doing the same.
My impediments are my PM and the abomination of waterfall processes he forces on us and claims are a "scaled agile framework".
Arg this drools-based hybris promotion engine abomination makes me wanna puke all over the place ...