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 - "dirty code"
I've been fortunate enough to work with a lot of awesome people early into my career.
At the company I worked where I met @trogus, I became friends with a few people, including Tim, that I think were my favorites. It was a really fun bunch and though it may sound immature, but a lot of the times it felt like we were kids so for me coming out of college it was awesome.
There's so many stories from working with that bunch that come to mind for me. One of my best friends there was this guy "Dirty Devin." He started around the same time I did. When I first met him he seemed really boring and professional. After getting to know him, and after he'd been at the company for a few weeks, his actual personality started to show and he was like a child (in the best way possible) and was absolutely hilarious/made the work place a blast.
Our office had a ping pong table and neither Dirty Devin or I had ever really played. We started playing against each other and we both very quickly got really good.
I also met a guy named Botond (he's the one in the photo). He was very similar to Dirty Devin. Lots of crazy stories but the photo is actually a really funny one - we both got to work a few minutes early one day. And we couldn't get into the office. We kept trying to enter the door code and it wouldn't work. We kept joking that we must both be fired. Turned out that they had fired someone the night before and didn't bother to send out the new door code :/
And of course, Tim. I think we clicked pretty early on and had the same friend group at the company.3
I was trying to style a website drop down menu (select tag) that would look the same on all browsers using css only. i removed the default arrow down, and i was trying to add a minimal arrow pointing down, and it took me a while to do it. Take a look at the pic.
However when i looked at the code. there was no code for that little arrow. I was confused for a few minutes, looking at both html and css. thinking how is this even possible, then i realised.
My f-ing screen was dirty. Dirt was similarly shaped like the thing i wanted to achieve. I was laughing at myself for a few minutes.
btw i did it in the end 😊 no dirt involved1
Although she hates HTML, I had my girlfriend try to (re)create some kind of interface as a challenge. She remade the Mirror's Edge Catalyst menu - and she did well, I guess. (ofc her code is dirty and stuff - and it's far from responsive, but damn it looks smooth xD)14
This one, is for all you haters out there tonight!
Cause I'm PHP, I'm dynamite
PHP and I'll win the fight
PHP. I'm a power load
PHP, watch me explode()
I'm dirty, mean and mighty unclean
I'm a wanted code
Public enemy number one
MD: The client doesn't care how sloppy your code is. They're not paying for the solution, they're paying for the result. If there's a quick and dirty option take it.3
I'm currently rewriting the heart, foundation, core module of my company, that's written with my own shitty legacy code that is old, is dirty, but somehow worked flawlessy during whole 4 years. I'm afraid.4
No matter how much product owners claim "bugs have priority over anything else", "we value high quality structured code", and "we do test driven development"...
...Once a big client wants a feature to be developed before they sign up, dirty code will be written from napkin specs, and that code will always be refractored "soon".6
That you if you cant solve a problem on paper you can't solve it in the real world.
But seriously coding gave me a voice, I was a seriously smart kid, but I was also a dirty orphaned dropout.
Everyones worth in this world is measured on a piece of paper and mine was blank. I was just seen as some overly ambitious kid spinning fairy tales and crackpot theories because no one could understand what the ideas value was or didn't try because of my age and cv, then I taught myself to code.
All of a sudden my theories were provable and I had a way of delivering them to not just one but millions of people in a way that they could understand and interact with them.My whole life changed and the day I wrote my first program was the last day I was ever judged by a piece of paper.
"I strive for code quality and maintainability. I actually do. And i will not work for a company that does not care about it and just wants something done as fast as possible.
The only time i will do something quick and dirty is if it's actually urgent. And even then with one condition - my next task will be to fix it properly.
I do not care about your deadlines. I will do my best to meet them, but not at the expense of code quality. I've seen too many projects fall into technical debt, where productivity is so low, that the only way to move forward is hire more people and start working on a project 2.0
And please do not lie about how great your company is, if it's not. These kind of things surface very soon, and you will have wasted both of our time, because as i said - i will not work for a company that does not care about code quality."
you think i'll ever get a job again if i put this on my CV ? :D10
Commit Message Part2:
6528fff Code was clean until manager requested to fuck it up
241b35f Who knows WTF?!
4381a32 Argh! About to give up :(
c3bf1a9 more debug... who overwrote!
2d68d6d Fixed a bug cause Maciej said to
b112c1a This branch is so dirty, even your mom can't clean it.
bb456d4 Shit code!
4878b46 Copy-paste to fix previous copy-paste
e2c7e87 A fix I believe, not like I tested or anything
e4b8f4c formatted all
3691208 I'm just a grunt. Don't blame me for this awful PoS.
0888b69 just checking if git is working properly...
62741aa I'm too old for this shit!
0735196 COMMIT ALL THE FILES!
09caccf I CAN HAZ PYTHON, I CAN HAZ INDENTS
ab70bde Fixed errors
934436d Now added delete for real
5f84e30 My bad
99baff8 CHRIS, WE WENT OVER THIS. C++ IO SUCKS.
953473d final commit.
f0c3b57 Just committing so I can go home
4e5ce4e yolo push
deb4e3b I CAN HAZ PYTHON, I CAN HAZ INDENTS
710c06a Commit committed....
3c45e67 it is hump day _^_
4487788 Committing in accordance with the prophecy.
bf86e7e This solves it.
4804f68 FONDLED THE CODE
051d42e REALLY FUCKING FIXED5
So I watched this video that tries to convince people, that the jQuery library isn't really best practice anymore and showed how you can achieve basic tasks with vanilla JS, aswell as some frameworks (Vue, React, Angualar) and how they handle interactions with the DOM.
It also talked about how nearly every JS question on SO has top answers using jQuery, and how that's a bad thing.
But what I found in the comment section of this video was pure horror: So-called "Developers" defending jQuery to the death. Of course there were some people who made some viable arguments (legacy code, quick & dirty projects), but the overwhelming majority were people making absurd claims and they seemed quit self-confident.
Want an example?
I'm working in a blockchain company for $180 as a junior programmer and there is a mid-senior guy who get ~8 times more than me. So we got a project to make a backend API with its tests. When I was partly completed my part of the project I asked that "mid-senior" to share his code with me. Nothing was done, and he asked me to push my changes to git so he could start to do something (view at my code and start copying). BUT. He couldn't even pull from git. He couldn't use that fucking Visual studio's team explorer and even the solution explorer. Ok, he was working with VS for the first time, but I did too. I cloned the repo gave him the environment to start "working" and get back to my work. After that nothing changed, he was writing each one-lined if block for half hour and the code was very dirty. Finally I've got his laptop and started to writing his part by teaching him all the programming. You may say I'm mad. I really do, I think that I did all project. This is sad... How can people get this much by being this far from the programming? We need really high quality programmers.3
"So, just show me the dirty and nasty things in this 'internet' thing...I mean, this nsfw stuff...c'mon..."
"How about the source code of my last project?"
Sometimes dirty code is more efficient than clean code.
If features get dropped frequently and requirements change every few days, writing best-practices, tested code is wasted time. Learned that in my first job where I thought the other devs were all bad. Until I realized their bad code pays my salary, and my clean code takes more time to develop.6
Overheard a conversation between programmers:
.... Your dirty hack finally caught up with you!
.. it is responsible for bug A, B , .. E ... F..
That "temp" code was not touched in years.3
I recently ranted so much about languages but here it goes
JS we need to talk. BECAUSE YOU GOT FAT AND UGLY STUPID BITCH! Dumb piece of bloatware. What even is your problem? Depending on a library for strpad and then blow up like Steve jobs ego. Bastardized fuckfest. I used to like you bro and then you screw me over!
It's like you fuck my wife while I try to fix your car. Why can't you even be usefully on your own anymore? I'd be richer than bill gates if I get a dollar for every damn framework people pull from their asses. Are you writing this fuck while shitting so you can compare colors of your outcome?
Normalize the fucking base, don't add to the bukkakke! bitch is drowning already. Why is everyone jerking of to react and angular? When have YOU written something in vanilla the last time? Why even bother? Remove the core and hardcore every damn framework into the browsers. Guess that saves you 200kb. Oh wait I forgot that's about unminified jQuery.
Now I need to load about 2GB of dependencies, some creating code that puts code in my code to load code out of my code which was generated out of something that remotely resembles JS so every browser is able to execute my fancy shit. But hey, it's fast. And of course there are the fanboys. You are worse than apple fags. You sample your own jizz with your friends in a wine glass. there was a Time it was bad practice to mix logic and view. Now you made it mandatory. "Browser does the rendering" ofc you imbecile pile of fuck don't show me a damn preloader for 1 picture and 20 lines of text. Who fucked your brain so hard?
So react seems to be the cool kid now, then I tell someone I know angular it's like showing up in a pikachu onsie to a formal dinner with the queen.
I used to love you girl. I loved how we could dirty things together. Now you are like a pig. Please loose weight bby the sight of you disgusts me nowadays2
So, yesterday was first time I worked with other developers in like 4 years. I am in Scotland to integrate my library into our Epicor ERP system. I am working with another developer from our company from a different department.
I have always been worried about how fast I can create solutions, I always thought I was a slower than average developer.
I haven't worked on a team or with other developers in years, so I don't have anyone to gauge my performance against. I really have no baseline to judge where I am at on the spectrum of developer experience and efficiency.
It has always made me slightly worried about switching jobs because I am worried about thinking I am better than I actually am, getting a job with a much higher salary, then failing to perform as expected.
After working with this other developer, he is very methodical and meticulous, but sooooo slow!
In fact I was getting anxious just watching him implement simple routines. I cannot judge his code as it was just implementing my library and some debugging, but if the average developer works at that pace, I am a developer god!
One thing I did notice, is, the code he writes probably has much less bugs in it initially than the code I would write. Generally I go through and fix those bugs and expand on the code after I publish, I would be almost sure, he would have less issues with his code, but it would take 2 extra weeks to get his code out vs mine. I could churn out something much more quickly and get it to the same quality standards within a few hours after I've published and get feedback. (generally I cannot stand testing, so I publish and let everyone else (users) test for me and push fixes out immediately.
So are you slow and methodical? or quick and dirty? which one is more preferred in the industry?11
As long as I remember, all goes well. Probably not because I'm a good coder or something. But all the time it ends up like this:
Reviewer: Can you make this in two hours?
[Type a lot of sinful dirty code, and I'm glad it's just for review]
Reviewer: Oh, well cool, you're in...
Me: No need to see the source code?
Reviewer: It is going to be your job, not mine....
So, this "always good" code review experience is usually bad omen. Means I'll be the only one who is able to write some working shit....1
Worst thing you've seen another dev do? Here is another.
Early into our eCommerce venture, we experienced the normal growing pains.
Part of the learning process was realizing in web development, you should only access data resources on an as-needed basis.
One business object on it's creation would populate db lookups, initialize business rule engines (calling the db), etc.
Initially, this design was fine, no one noticed anything until business started to grow and started to cause problems in other systems (classic scaling problems)
VP wanted a review of the code and recommendations before throwing hardware at the problem (which they already started to do).
Over a month, I started making some aggressive changes by streamlining SQL, moving initialization, and refactoring like a mad man.
Over all page loads were not really affected, but the back-end resources were almost back to pre-eCommerce levels.
The main web developer at the time was not amused and fought my changes as much as she could.
Couple months later the CEO was speaking to everyone about his experience at a trade show when another CEO was complementing him on the changes to our web site.
The site was must faster, pages loaded without any glitches, checkout actually worked the first time, etc.
CEO wanted to thank everyone involved etc..and so on.
About a week later the VP handed out 'Thank You' certificates for the entire web team (only 4 at the time, I was on another team). I was noticeably excluded (not that I cared about a stupid piece of paper, but they also got a pizza lunch...I was much more pissed about that). My boss went to find out what was going on.
MyBoss: "Well, turned out 'Sally' did make all the web site performance improvements."
Me: "Where have you been the past 3 months? 'Sally' is the one who fought all my improvements. All my improvements are still in the production code."
MyBoss: "I'm just the messenger. What would you like me to do? I can buy you a pizza if you want. The team already reviewed the code and they are the ones who gave her the credit."
Me: "That's crap. My comments are all over that code base. I put my initials, date, what I did, why, and what was improved. I put the actual performance improvement numbers in the code!"
MyBoss: "Yea? Weird. That is what 'Tom' said why 'Sally' was put in for a promotion. For her due diligence for documenting the improvements."
Me:"What!? No. Look...lets look at the code"
Open up the file...there it was...*her* initials...the date, what changed, performance improvement numbers, etc.
I opened version control and saw that she made one change, the day *after* the CEO thanked everyone and replaced my initials with hers.
She knew the other devs would only look at the current code to see who made the improvements (not bother to look at the code-differences)
MyBoss: "Wow...that's dirty. Best to move on and forget about it. Let them have their little party. Let us grown ups keeping doing the important things."8
I think I just blew my own mind here.
Look at this:
return call_user_func(array('SomeClass','uselessMethod'), 'method');
return new Adapter($foo)->execute($this);
so __FUNCTION__ resolves to
You can run that code, whether you comment out uselessMethod, or not.
Adapter is a function that looks for what class to call depending on a database value
and execute the call.
So api basically uses a chain call to do stuff like this in controllers, here's how
I call the above:
$someObject = (new Class($object))->uselessMethod()->doSomething()->doSomethingElse();
But like, eventually my code matured to where all those methods in the chain call have the same one line return that calls my adapter to find the logic to run.
So, basically, I can now have a class with headless function calls that calls a directory of other classes, that are all defined in a contract somewhere. So as long as those classes
all adhere to the contract, it will never return an error.
I can't think of any reason to do this, other than my setup, and I have a sneaky feeling,
as dirty as this trick is, that there's a bad reason my code has come to being able to do this.
Maybe wrong strategy pattern from the beginning?
I'm sure it'll come to me like 3 days from now..3
I feel so guilty.
I had to make a hotfix today. It is the ugliest piece of shit code I ever intentionally created. But there was no other way. I swear there was no other fucking way!
My boss just assigned this to me. But because she thinks this needs to be a hotfix and can't wait for the next release we just have to change the server and not the client side of our application.
So I had to add a memory to our server so that it knows from which high level method from the client the multiple low level calls to it are coming from.
It just doesn't make sense logically.
I mean I feel like I killed someone. And just so that we get less writes to our DB. I mean yes in some edge cases it is a huge speed-up...
But nothing this fix solves is a new bug.
I'm gonna take a shower now. For like an hour4
I started a project at high school 7 years ago, I had no idea what's clean code or design pattern, just learn while keep coding. I eventually stopped because my code is so terrible I cannot understand it anymore.
Now, after 1 year of working, I look back those dirty codes and think it is actually not that bad. Within hours I even fixed a bug with concurrency.
I start to think, instead of learning to how to write good code, maybe I should learn how to read bad code. That's just much more practical.5
Meet today.... Fetlang
lick Bob's cock
lick Duke's left nipple one million times
while Ada is submissive to Duke
make slave scream Ada's name
Have Charlie spank himself
Have Ada lick his tight little ass
Have Bob lick Charlie's tight little ass, as well
make Ada moan Bob's name
make Bob moan Charlie's name
Never felt so dirty after calculating the fibonacci sequence...
"Fetlang is a statically typed, procedural, esoteric programming language and reference implementation. It is designed such that source code looks like poorly written fetish erotica."8
I swear, there is some sort of sentient AI conspiring against me.
For context: I work a temporary job at a laboratory. They analyze and test food and provide feedback to the company that makes the food. My job is to clean and weigh empty food packaging and document the measurement results by entering them into a database.
So, there’s a sort of frontend for entering the data. This program fucking sucks. Honestly, it’s a damn bowl of spaghetti code with extra shit sauce and cock cheese freshly harvested from the dirty yeast infected dick of the doorknob-licking retard who wrote it, holy fucking shit! The bugs and oddities of the program are driving me insane!
For one, it fucks with my input. The process of entering the weight is automated, I just press a button on the scale and the weight is automatically entered. In theory. Because it sometimes decides to just add a few zeros or move the decimal point. Ever seen a steak with a packaging that weighs 2.1 kilos? Yeah, that kind of stuff. It’s supposed to be 21 GRAMS, motherfucker!
Additionally, it crashes around 20 to 30 times a day. This is not an exaggeration. I counted. An apprentice at the place always has to enter a username and a password in order to restart the program for me. Since this can become quite annoying after 20 times, he just wrote his username and his password on a sheet of paper and gave it to me.
So, the program crashes again. I don’t have to ask said apprentice to enter his credentials this time, though, since I have his password.
Lo and behold, wrong password.
So I try again.
So I ask him to check whether I mistyped something.
What i typed was correct, though, according to him. I slowly type the password yet again, and he checks for typos.
Again, what I type is correct. But it won’t let me in.
So he enters his password and I check for typos.
No typos, password correct.
Repeat this process like 5 times. We’re already both annoyed. He almost punches the screen.
For some mysterious reason, it won’t let me in with his password, but when he types it, it’s correct. Again, we have both double-checked ourselves and nobody has an idea why it doesn’t work when I do it. Dark sorcery? A sentient AI that wants to fuck with me for some reason?
Who knows. Considering the software gore I’ve seen in the last couple of days and considering the fuckness of the program, I’d not be surprised at this point.5
Me: *joins devRant once again*
"Wow this community is surely active! Better check frequently to keep up!"
*checks two times in 6 hours*
"Yea it was weekend. Probs everyone is getting their hands in a dirty pile of compileable code or a spaghetti of jQuery."
So, how is your day/night so far?26
Need to rant. I am doing programming 2 at university with java and the assessment is to make a card game. The subject is shit and is basically going over loops, variables, conditionals ect which we learned in introduction to programming and programming 1.
This leaves little time for oop principles, design patterns inherentance and all other useful stuff.
I am dedicated to making a career in programming and want to do my assessment the correct oop way. Although the lecturer doesn't care and is instructing the class to do it procedurally and shit.
I could do the program really quickly the shit procedural way and still get full marks but I feel dirty as hell coding like a scrub. So I'm 60 hours in on this assessment and there are so many classes and even more because of unit testing (we don't have to unit test) and I am spending way too much time.
My code is beautiful, my classes are tiny and maintainable, easy to modify and I'm learning so much about how to code oop the correct way with the help of a mentor and someone I look up to. But god does it take forever to code this way. And soo many iterations and redesigns because I'm still learning.
It's almost done but now I have another programming assessment for another class I'll have to do the dirty way because of time restraints and other assessments.
Sorry for wall of text but this is stressing me out 😛4
Our code base is shit.
To improve, we went through different coaching style: Freudian Psychoanalysis, behavioural psychology, gestalt
- Freudian Psychoanalysis: After several years refactoring and discussing our technical debt we can say that we really understand our code in deep. But it's still shit
- Behavioural psychology: after some months of work, we built a lot of testing. Now the code is still shit, but we don't get dirty anymore
- Gestalt: after few weeks sessions, the code is still shit. But we don't care anymore, we accept it and we are happy
(note. it's an adapted psychology joke)1
Init Mud. (A poem)
A Giant Ball of Mud.
Haphazard in structure.
A sprawling, enthralling, duct-taped warning,
Of things to come.
Tumbling down a well-worn path
Of untamed growth and aftermath.
Into Spaghetti-code Jungle.
Where quick and dirty wins the day
And warnings spoken hold no sway
Or fall on deaf ears in the undergrowth.
Bits stuck on.
Bytes taken out.
On top of patches,
On top of obsolescence.
Hacked at, uploaded
All elegance eroded.
Made and remade
Refined and redesigned
Suffocated by expedient repair after expedient repair
The original self no longer there
Replaced by something
Design resigned to undefined
An architectural mystery
Whose function can no longer be
Seen or gleaned
From obfuscated in-betweens
Made and remade
A squirming library of disused.
Pulled at, prodded, committed
Corners cut and parts omitted.
Bug ridden branches fused to a rotting core.
I think a "git commit -hide" option could be useful. To hide the author of the commit when you push dirty code.2
I see a lot of posts about old code which is dirty and full of bugs. I find it kinda weird because when I started coding I made sure that my code was clean and readable, if it was something simple I implemented almost every edge case and spent hours removing bugs every ten lines written. Now though it's all opposite. I slap something together real quick, check for bugs in the end all the time and don't even care about readability.
Am I a maniac or are there people like me too?2
Today, i discovered thus beauty within our legacy code:
// TODO: this is probably the most dirty thing in our product. It needs a model more than anything else
This captions a crappy part of controller code for several years :/
Nice to do some refactoring of the whole data access layer of our core logistics software, let me tell an story.
The project is around 80k lines of code, with a lot of integrations with an ERP system and an sql database.
The ERP system is old, shitty api for it also, only static methods through an wrapper to an c++ library
imagine an order table.
To access an order, you would first need to open the database by calling Api.Open(...file paths) (yes, it's an fucking flat file type database)
Now the database is open, now you would open the orders table with method Api.Table(int tableId) and in return you would get an integer value, the pointer.
Now for the actual order. first you need to search for it by setting the search parameter to the column ID of the order number while checking all calls for some BS error code
Api.SetInt(int pointer, int column, int query Value)
Then call the find method.
Then to top this shitcake of an api of: if it doesn't find your shit it will use the "close enough" method of search.
And now to read a singe string 😑
First you will look in the outdated and incorrect documentation given to you from the devil himself and look for the column ID to find the length of the column.
Then you create a string variable with ALL FUCKING SPACES.
Now you call the Api.GetStr(int pointer, int column, ref string emptyString, int length)
Now you have passed your poor string to the api's demon orgy by reference.
Then some more BS error code checking.
Now you have read an string value 😀
Now keep in mind to repeat these steps for all 300+ columns in the order table.
News from the creators: SQL server? yes, sql is good so everything will be better?
Now imagine the poor developers that got tasked to convert this shitcake to use a MS SQL server, that they did.
Now I can honestly say that I found the best SQL server benchmark tool. This sucker creams out just above ~105K sql statements per second on peak and ~15K per second for 1.5 second to read an order. 1.5 second to read less than 4 fucking kilobytes!
Right at that moment I released that our software would grind to an fucking halt before even thinking about starting it. And that me & myself and I would be tasked to fix it.
4 months later and two weeks until functional beta, here I am. We created our own api with the SQL server 😀
And the outcome of all this...
Fixes bugs older than a year, Forces rewriting part of code base. Forces removal of dirty fixes. allows proper unit and integration testing and even database testing with snapshot feature.
The whole ERP system could be replaced with ~10 lines of code (provided same relational structure) on the application while adding it to our own API library.
Best part is probably the performance improvements 😀. Up to 4500 times faster and 60 times less memory usage also with only managed memory.3
I told you fucking moron clients doing that "little" change would be complicated and in the worst case it would end fucking up your whole spaghetti crap. A really HUGE spaghetti monster of that you aren't aware because you guys don't know a shit about coding conventions.
*Clients call me complaining about their software is broken*
-Hey, we're in serious trouble. Our users aren't being able to see the proper calculated values. Why that little change had so much side effects?
- I already told you why.
- Can you fix it asap? Our clients are complaining.
- No. Deploy an old copy of the affected modules while you give me a prudent time to refactorize that crap.
I used to work in their place, 3 years later I quit that crappy job and decided to make them my clients. I escaped from the micromanaging thing but I didn't from their ugly practices.
Anyways, I have to fix this shit asap. Money talks, at least until I can find a better client.
So I work at a startup working on “cutting edge” technology with two other devs. Our lead engineer is an interesting fellow. The guy never ever writes a single line of code, just looks for similar projects online and receives a lot of credit for it, I have to hand it to him though, he has an ability to scheme through information and pick the gist of what’s going on but when it comes to detail, he’s seriously lacking. We recently started a projects a couple of weeks back and it was supposed to be an easy two days of hacking and we would be done but instead the guy looks for code online copies it I change the necessary variables to match the use case then it doesn’t work. So we’ve spent weeks debugging this code because someone is afraid to get their hands dirty. I can’t complain to the bosses because they’re not techies and the trust him more since I’m still new to the company.
I love their attitude though, they honestly believe they have a chance against some giants in tech and from the actual talent I’ve witnessed they’ll only get there through sheer luck.
I have to sit there and listen to them shit on more successful tech companies and that they have better ideas.
Maybe someone can change my mind on this issue as I’m still young and new to this industry.8
Introducing, my YAML based pseudo programming language.
1. I'm tired of managing asynchronous processes, either by dealing with callback or thread synchronization.
So, let me hear your opinion on this...
The backend code is still messy even after I do a lot of refactoring: https://github.com/goFrendiAsgard/...
Majority part of documentations hasn't been updated yet.4
I hope one day i will stop writing dirty code to achieve a task, forget to refactor it and then struggle to use correct names for variables and methods when i need to move on other tasks.
I've tried to give it many chances, but I just don't think Python will ever be for me. Even "quick and dirty" scripts are faster for me in a statically-typed language with static syntax checking and sensible code completion.8
Me: Who wrote this fu$$in mess of code? Never mind, we will get the dirty hacker.
*Runs git blame*
Me: What a innovative way to solve the problem! I'm a genius!
Sometimes my girl talks dirty to me. She says things like:
"I don't leave comments in my code"2
So an old Ionic 3 project wont work on the newest CLI.
I check around for the error, update some dependencies, sure enough it starts working again, all is great or so I thought.
Later something weird starts happening, upon pushing a new view on the navCtrl, the navParams are null on the next view.
I later find out that navCtrl is becoming navParams just on the first bit of the view loading, so I do a dirty fix just to keep working on the functionality from my browser, I know very well this will cause problems later on, this is just so I can keep working on functionality.
I finish all of the functionality and I'm ready to compile for android, I run my script, the dirty fix comes to bite my butt now.
I remove the dirty fix hoping for it to work just well on the apk.
Now gradle doesn't find ddmlib.jar, some 15 minutes of troubleshooting do nothing.
Fuck it, I'll just create a new project from the CLI and drag all the code there so that navParams work as expected.
Sorry Ionic, but the world is not our oyster when subtle changes in dependencies produce such unexpected behaviour, with some fucking view parameters!.
I'm looking forward to get done with all the current projects to jump back to native.1
So I am a Ruby guy since I don't now when. Probably forever. Lately I have to code Groovy. People are telling me all the time that Groovy is like Ruby. Let me tell you: No! Groovy is not like Ruby. Groovy is shitty Java with a slightly more usable syntax. Nothing more. It is so so tedious to code and reminds me why I stopped coding Java like 8 years ago. The fact that some features resemble Ruby syntax makes it even harder for me because I cannot code and facepalm at the same time. And I automatically type Ruby code all the time because it looks so similar in some places. I don't have that problem with other languages. Just Groovy. And the fact that Java people like it tells me how bad Java really is. It's just dirty. Guys, I feel so dirty now. And showering this morning didn't help. Had to get that off my chest. Thanks for "listening"9
Mozilla you stinking kangaroo pouches!
When you set an object's CSS translation via JS like so:
and then read it back, every browser including FF until 66 gives this, with additional space:
However, bloody FF 67 returns "translate(0px)". Because it's always a good idea to just introduce external changes nilly-willy, right?
That screwed up my crappy string slicing because it relied on the presence of the comma. It was a quick and dirty solution, but with additional future proof if/else logic, it wouldn't even be quick anymore.
Besides, the whole string slicing looked like yo-yo code anyway so that I instead added shadow integer variables to the objects. That solution not only works, but is even faster.21
When you’re laughing/cringing at some of these rants and you hear that little voice in the back of your head say:
“I shouldn’t be laughing.. Screenshots of my code will probably be posted here when the next guy takes over my project..”
I’ve written fast and dirty code back in the days that still makes me nervous, but we don’t have the time and resources for a rewrite and besides.. My code works, so.. 🤷🏻♂️💅🏻
Story of my first successful project
Being part of a great team, I've shared in a lot of successes, one I am particularly proud of is my first attempt to use agile methodologies in a deeply waterfall-managment culture.
Time was June/July-ish and we applied for a national quality award where one key element in the application stated how well we handled customer complaint resolution.
While somewhat true (our customer service is the top-shelf good stuff), we did not have a systematic process in resolving customer complaints. Long story short,
the VP lied on her section of the application. Then came the 'emergency', borderline panic meeting (several VPs, managers, etc) to develop a process to better manage
complaints before the in-house inspection in December.
As most top priority projects go, the dev manager allocated 3 developers, 2 DBAs, and any/all network admins we would need (plus all the bureaucratic management that wanted their thumb in the pie).
Fast forward to August, after many, many planning meetings, lost interest, new shiny bouncing balls, I was the only one left on the project. The VP runs into the dev manager in the hallway and asks "Is my program done yet? If its not ready before December with report-able data, we will not win the award."
The <bleep> hit the fan...dev manager comes by...
Frank: "How the application coming along? Almost done?"
Me:"No, haven't really started coding. You moved Jake and Tom over to James's team, Tina quit, and you've had me sidetracked helping other teams because the DBAs are too busy."
Frank: "So, it's excuses. You really think the national quality award auditors care about your excuses? The specification design document has been done for months. This is unacceptable."
Me: "The VP finished up her section yesterday and according to the process, we can't start coding until the document is signed off."
Frank: "Holy f<bleep>ing sh<bleep>t! No one told you *you* couldn't start. You know how to create tables and write code."
Me: "There is no specification to write to. The design document is all about how they plan on reporting the data, not how call agents will be using the application to serve customers."
Frank: "The f<bleep> it isn't. F<bleep>ing monkeys could code against that specification, I helped write it! NO MORE F<bleep>ING EXCUSES! This is your top priority from now on!"
I was 'cleared' to work directly with the call center manager and the VP to develop a fully integrated customer complaint management system before December (by-passing any of the waterfall processes that would get in the way).
I had heard about this 'agile' stuff, attended a few conference tracks on the subject, read the manifesto, and thought "I could do this.".
Over the next month, I had my own 'sprints' and 'scrums' with the manager (at the time, 'agile' was a dirty word so I had to be careful of my words and what info I shared) and by the 2nd iteration had a working prototype.
Feature here, feature there (documenting the 'whys' and 'whats' along the way), and by October, had a full deployed application.
Not thinking I would get a parade or anything, the dev manager came back from a meeting where the VP was showing off the new app to the other VPs (and how she didn't really 'lie' on the application)
Frank: "Everyone is pleased how well the project turned out, except one thing. Erin said you bothered him too much with too many questions."
Me: "Bothered? Did he really say that?"
Frank: "No, not directly, but he said you would stop by his office every day to show him your progress and if he needed you to change anything. You shouldn't have done that."
Me: "Erin really seemed to like the continuous feedback. What we have now is very different than what we started with."
Frank: "Yes, probably because you kept bothering him and not following the specification document. That is why we spend so much time up front in design is so we don't waste management's time, which is exactly what you did."
Me: "We beat the deadline by two months, so I don't think I wasted anyone's time. In fact, this is kind of a big win for us, right?"
Frank: "Not really. There was breakdown in the process. We need better focus on the process, not in these one-hit-wonders."
End the end, the company won the award (mgmt team got to meet the vice president, yes the #2 guy). I know I played a very small, somewhat insignificant role in that victory, I was extremely proud to be part of the team.
TLDR: Why the fuck is a senior developer creating multiple instances of a core piece of logic all over the fucking application?!?!?!?
Context: I am also a senior dev, and have worked with this guy for years. He has even completed me on my clean code practices and architecture, so I really cant understand why he would copy and paste a public class into 3 other models on the project instead of just referencing the original. I’m just posting this hear as my version of screaming into a pillow in frustration, and to avoid badmouthing him to co-workers.6
The beginning of my next blog post... at 6am.... Guess who hates his job and why?
<h1>Thinking Before You Code<h1>
The choices you make when you code a part of a program, or even the program itself, impacts everything around it. The importance increases as the size and the scope does.
Quick and dirty simple scripts that get a simple job done and rarely needs changing… fine.
A bunch of quick and dirty hacks all pieced together as part of a giant application... that constantly changes? That's duct tape code that will bite you in the ass later or will give birth to a maniacal raging psychopath that wants to kill you.
<b>SOLID, design patterns: saving yourself and others from you</b>
So, the main system we develop and "maintain" is a horrible monolithic huge project that has the majority of the code in one and only one god class.
On top of that, all the main logic is implemented directly in the "main" method (yes, the "public static void main"). Now every time you have to create a method to use it in the main logic, it has to be static!
God, I hate to even look at this class, let alone touch it, I feel dirty, like I'm touching a pile of shit.
trying to refactor some code to implement a issue/feature on a ticket:
try option A. .... 2 hours later hit a Dead end.
try option B .... 1 day later.. another dead end.
try option B.2f ... I want to give up... wasting all my time...
Not sure what I'm suppose to do anymore..
It feels chaotic and dirty hacking to make it work.. and even now. I cannot get it to compile...
Only solution looks like Copy and paste a couple of classes and change one single variable. with huge preprocessor #if around them.
I need to take a shower I feel dirty now...1
Powering off my Thinkpad so I can wipe the greasy SHEEN off of the keyboard / trackpad..
Wash hands, repeat.3
When you have 5 hours on a task, struggle for the first hour procrastinating , second hour trying to look into the problem ,then convincing yourself you cannot work until this mess of a file is sorted out, spends another hour restructuring the whole file , adding comments and moving related logic together.
Great 2 hours to do a 5 hour job
Once again spent a day MacGyvering together all the missing pieces of the app for tomorrows presentation deadline. This time the code base is 95% good code and 5% of dirty hacks which are essential for the rest to function properly.
One day I'll enough time to finish a development cycle on time. One day...
When you spent few hours to solve a problem and then restart the application as nothing worked but then you see that the problem is not anymore...
you're in the situation when you can't decide if should commit your dirty code changes or should revert them back.2
I have a habit to comment every single line of code, this helps comprehension but this dirty the code and everyone complain. Is it any way to do such task.6
Tldr check out http://guitarprohub.mrstebo.co.uk/
And ignore the stats on the first page. That is my next job to track downloads and searches 😄
I have never been taught how to "plan" projects, but with a small plan I managed to get this site running in about a 3 days (in between having to look after the kids!) only running on a free heroku instance for testing.
If anyone wants to get their hands dirty with the code then let me know. Not a pro at rails yet, but from the stats in new relic it seems to be running pretty quickly! Even with contacting an external site it was only taking 2ms to load a page of tabs!