Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "loc"
-
!rant
This was over a year ago now, but my first PR at my current job was +6,249/-1,545,334 loc. Here is how that happened... When I joined the company and saw the code I was supposed to work on I kind of freaked out. The project was set up in the most ass-backward way with some sort of bootstrap boilerplate sample app thing with its own build process inside a subfolder of the main angular project. The angular app used all the CSS, fonts, icons, etc. from the boilerplate app and referenced the assets directly. If you needed to make changes to the CSS, fonts, icons, etc you would need to cd into the boilerplate app directory, make the changes, run a Gulp build that compiled things there, then cd back to the main directory and run Grunt build (thats right, both grunt and gulp) that then built the angular app and referenced the compiled assets inside the boilerplate directory. One simple CSS change would take 2 minutes to test at minimum.
I told them I needed at least a week to overhaul the app before I felt like I could do any real work. Here were the horrors I found along the way.
- All compiled (unminified) assets (both CSS and JS) were committed to git, including vendor code such as jQuery and Bootstrap.
- All bower components were committed to git (ALL their source code, documentation, etc, not just the one dist/minified JS file we referenced).
- The Grunt build was set up by someone who had no idea what they were doing. Every SINGLE file or dependency that needed to be copied to the build folder was listed one by one in a HUGE config.json file instead of using pattern matching like `assets/images/*`.
- All the example code from the boilerplate and multiple jQuery spaghetti sample apps from the boilerplate were committed to git, as well as ALL the documentation too. There was literally a `git clone` of the boilerplate repo inside a folder in the app.
- There were two separate copies of Bootstrap 3 being compiled from source. One inside the boilerplate folder and one at the angular app level. They were both included on the page, so literally every single CSS rule was overridden by the second copy of bootstrap. Oh, and because bootstrap source was included and commited and built from source, the actual bootstrap source files had been edited by developers to change styles (instead of overriding them) so there was no replacing it with an OOTB minified version.
- It is an angular app but there were multiple jQuery libraries included and relied upon and used for actual in-app functionality behavior. And, beyond that, even though angular includes many native ways to do XHR requests (using $resource or $http), there were numerous places in the app where there were `XMLHttpRequest`s intermixed with angular code.
- There was no live reloading for local development, meaning if I wanted to make one CSS change I had to stop my server, run a build, start again (about 2 minutes total). They seemed to think this was fine.
- All this monstrosity was handled by a single massive Gruntfile that was over 2000loc. When all my hacking and slashing was done, I reduced this to ~140loc.
- There were developer's (I use that term loosely) *PERSONAL AWS ACCESS KEYS* hardcoded into the source code (remember, this is a web end app, so this was in every user's browser) in order to do file uploads. Of course when I checked in AWS, those keys had full admin access to absolutely everything in AWS.
- The entire unminified AWS Javascript SDK was included on the page and not used or referenced (~1.5mb)
- There was no error handling or reporting. An API error would just result in nothing happening on the front end, so the user would usually just click and click again, re-triggering the same error. There was also no error reporting software installed (NewRelic, Rollbar, etc) so we had no idea when our users encountered errors on the front end. The previous developers would literally guide users who were experiencing issues through opening their console in dev tools and have them screenshot the error and send it to them.
- I could go on and on...
This is why you hire a real front-end engineer to build your web app instead of the cheapest contractors you can find from Ukraine.19 -
*me, coding at a pub*
*random dude walks up to me*
He: "what are you doing? Programming? What?"
Me: "yup. That's a horizontally and vertically scalable webservice, that's using amqp, rest APIs and encryption to schedule starting, stopping and autoscaling of a total of 90 heroku applications. This webinterface *showing* allows you to trigger starts and stops manually and monitor all processes."
He: "oh, so you are programming a Website? In HTML?"
Me: "euhm........ Yes."
I understand this dude had probably no clue what I was talking about.. Yet I am angry at him. Reducing more than 12k loc to HTML... Go fuck yourself.22 -
Today was my last day of work, tomorrow i have officially left that place. It's a weird feeling because i'm not certain about the future.
The job was certainly not bad, and after all i read on devrant i'm beginning to believe it was one of the better ones. A nice boss, always something to eat/drink nearby, a relaxed atmosphere, a tolerance for my occasionally odd behaviour and the chance to suggest frameworks. Why i would leave that place, you ask? Because of the thing not on the list, the code, that is the thing i work with all the time.
Most of the time i only had to make things work, testing/refactoring/etc. was cut because we had other things to do. You could argue that we had more time if we did refactor, and i suggested that, but the decision to do so was delayed because we didn't have enough time.
The first project i had to work on had around 100 files with nearly the same code, everything copy-pasted and changed slightly. Half of the files used format a and the other half used the newer format b. B used a function that concatenated strings to produce html. I made some suggestions on how to change this, but they got denied because they would take up too much time. Aat that point i started to understand the position my boss was in and how i had to word things in order to get my point across. This project never got changed and holds hundreds of sql- and xss-injection-vulnerabilities and misses access control up to today. But at least the new project is better, it's tomcat and hibernate on the backend and react in the frontend, communicating via rest. It took a few years to get there, but we made it.
To get back to code quality, it's not there. Some projects had 1000 LOC files that were only touched to add features, we wrote horrible hacks to work with the reactabular-module and duplicate code everywhere. I already ranted about my boss' use of ctrl-c&v and i think it is the biggest threat to code quality. That and the juniors who worked on a real project for the first time. And the fact that i was the only one who really knew git. At some point i had enough of working on those projects and quit.
I don't have much experience, but i'm certain my next job has a better workflow and i hope i don't have to fix that much bugs anymore.
In the end my experience was mostly positive though. I had nice coworkers, was often free to do things my way, got really into linux, all in all a good workplace if there wasn't work.
Now they dont have their js-expert anymore, with that i'm excited to see how the new project evolves. It's still a weird thing to know you won't go back to a place you've been for several years. But i still have my backdoor, but maybe not. :P16 -
After opening the legacy code and finding out that the entire shit has 15000+ LOC and without proper commentsundefined devrant please help fbi fucking comment the code properly comments thensa legacy code notnsa devil wk58 god3
-
For fuck's sake please add braces for blocks even if there is only a single loc inside. 1 line wont ruin anything but it would be a very big favor for the person reading the code.
I am talking about java. Python guys, you good ✌️10 -
Wrote 800-1200 LOC
It went through code review which was apparently my first code being reviewed
Took me 1 month and more to fix most changes (per day more than 10-12 hrs of effort)..
That 1 month was a nightmare. Every day I thought of giving up programming. I shouted to myself every night why did I never considered these myself. How can I be so dumb.
Half of the reviews I didn't even know how to implement. Didn't even know what to Google.
I consider it as one of my toughest phase as a developer till date.
I still get goosebumps remembering those days.9 -
Passed the online test.
Passed the technical interview.
Need to pass the final interview.
I'm applying to this company as a JS developer (backend). Their engineers are amazing and the fucking have 99.94% coverage on their test suiteeee; that gave me a code-boner.
If I get this job I'll finally say good bye to fucking PHPShit and Zend Framefuck and all this hacked bootstrap and 15k LoC "core.css/js"
I CAN DO IT10 -
My boss has never programmed before. Recently, he decided that I should print out all the code for an admittedly rather small project (10k lines of Java code, 200 pages printed out), and then have me explain every line to him.
Luckily, he didn't get past 'public static void main', especially since I hadn't even bothered to print out more than that!13 -
Because Moment.js is too mainstream,
Oh man I really need to punch person who wrote this shitty file,
1k LOC , whole thing is a mess, this is just a gist of this crap18 -
Network-connected train displays, failing and displaying their IP address, on a train that has WiFi on board. That's just begging to be hacked.19
-
At the end of side job customer asked if I could add one feature for double the money.
Did it in 1min and with 3 loc. Best deal ever made ;)7 -
As a Java developer, reasons to kill other programmers:
- static mutable variables
- WRITING to static mutable variables
- API call with Framework X didn't work. Add Framework Y along with X and try that. Wrap X in try/catch statement. Catch block fires framework Y.
- six, seven, ten levels of nested code. Zero thought put in organization
- 6K LOC Java files
- spring (singleton? Maybe) object assigning values in static mutable (see pt.1)
- a couple of unit tests in code base that no longer work. Zero unit tests in new code
- unit testing disabled in CI pipeline
- empty catch blocks
- pass mutable data between threads. Modify in various places concurrently.3 -
!!depression
I used to measure my performance in features per day (or week, depending on their scope), or tasks/day or loc/day for huge projects. My usual was two to three small features a day, and some progress on a larger one.
Now I’m so burned out and depressed that i measure my progress in the amount of days per week that aren’t “zeros” — as in days where i get literally nothing done. Now any day where i get _anything_ done, no matter how little, is a “good day.” I partially refactored about fifty lines of json builder spaghetti on Tuesday. That was a great day.
This week I’ve had two zeros, and it’s Thursday morning. I think it’s going to be a three zero week.
Worse: performance reviews were due weeks ago. I still haven’t written mine, and have no idea what i would even write. How can i make myself sound good when i can barely even force myself to eat or take a shower?50 -
Monday morning, went to the local grocery store to get myself some croissants and 2 bottles of wine.
Cashier: "Already at it in the morning, you sure about that?"
Me: "Long story short, I've got a Wi-Fi driver from Intel to debug and rewrite, and it's a fucking piece of shit.. can't go at it without hitting or preferably exceeding the Ballmer Peak... Also I'm awake since yesterday evening already."
Why even ask? Yeah I'm a fucking alcoholic, and guess why that is.. stupid nontechnical fucks, certified enganeers like that motherfucker at Intel who wrote this pile of garbage called ipw2200, and technology that can't be arsed to work properly on its own unless I build the fucking thing myself, just to name a few reasons.
You know what, fucking piece of shit from Intel, whoever it is? How about I let you choke on my dick while fucking hanging you with a sharp metal wire that's carrying 2kVAC from a microwave transformer, just to see whether I'd nut first, or you either choke, get electrocuted, or get your fucking throat slit first. Certificates aren't an excuse for committing this fucking pile of shit and calling it a fucking product!!
Now, it's time to dive into this giant stinking fucking turd I guess.. first glass of wine to get myself prepared for the shitstorm that's a giant 20k LoC C file with barely any comments, to look what the fuck causes this fucking pile of shit to disconnect and ask for WPA credentials after a while, despite having them stored.. and not reconnect after that, because why the fuck would you?!10 -
VueJS FTW!
Today I realised I've been a fucking idiot.
For the last few years I have familiarized myself with libraries like React, VueJS, Preact etc.
All while playing around on my own side projects but when it came to doing actual work (perhaps from a lack of confidence/working experience with them) I always reverted to vanilla js or jQuery because I convinced myself it wasn't the `right` use case or `the project was too simple or small`.
I WAS AN IDIOT.
The below screenshot is a prototype of a n invoicing tool I needed to write which uses VueJS and is implemented in 50 beautiful, clean, maintainable loc. Combined with TypeScript it is a dream - never did I think I would see the day where I could grab an inputs numerical value without prepending the variable with + so I don't end up concatenating them as strings.
If your like me and haven't started using some kind of data binding view framework stop procrastinating and just do it. I feel like I wasted a large chunk of my life clinging onto my old ways.7 -
Since you're here, let's make something very clear.
There are four kinds of people in this world:
1. Idiot fucks who commit everytime they write a single loc
2. Professional programmers who commit when they complete a module/functionality
3. Lost souls who commit to their girlfriends
4. People who don't use git.
Understand?11 -
1. Scripting out a team. I've built a collection of bash scripts to do what one of our teams does. Except the script does it in 30min and always does it well where that team used to take 4 to 10 hours and almost always missed something in the way.
2. Automate 70-80% of our BAU tasks with a single >4k loc bash script. Integrations with servicenow, lots of internal portals, predefined huge sets of commands to run on separate servers or lists of servers, do all sorts of diagnostics, schedule hw maintenance for DC folks, chase for approvals, track CHNG/CTSK tickets in a graphical chart so we would not miss any of them and lots lots more.
Finally we were able to afford time to make some coffee/tea.
These are the bau optimizations I'm proud of the most. And they have made significant impact on how our teams operate.
Whoever recognizes both company values in the tags and know what is that company - are they still using ´S´ in unix team? :)1 -
our HR made a survey about home office and how people think about coming back to office in the future. Shortly afterwards, our new CEO sent us an e-mail saying that he would like to see more employees in the office again soon. After all, it is paid for and must therefore be used. Of course, it's better for everyone to commute 2 hours to work every day, and last year home office worked well for everyone.
Personally, I can do without constantly sitting with my colleagues in a noisy office where 10 people are on the phone at the same time.
Bonus: In his opinion, software is better when it has more LOC.
Bonus2: Last working day for me is end of September. After that I start my new job with 43 days vacation per year :D10 -
An open letter to those who think lines of code == a decent metric for productivity:
NO!!!
Just because I wrote 10 lines of code all day (yes just 10 very well thought out, many times rewritten) lines doesn't mean my day was unproductive. Quite the opposite, while other devs pad their shit with:
//Adds 1 to I
I++;
Yup. Quality code. LOC doesn't lie.10 -
Having to review an offshore C++ codebase made in Romania that the company I worked for they bought to control a wifi module on a complex RF mobile tech device that I can't legally give more details on.
If I could legally post this masterpiece, or should I say masterpiece-of-shit, all of you C++ dev would instantly get AIDS and all the existing types of cancer upon browsing it for 2 minutes.
It's laughably bad and unmaintainable. One of my colleague called it "the perfect example of human obfuscation" and it fits perfectly.
Think of a 100k LoC main function with nested loops and ifs with random sleep values, 1000 values of hardcoded 32 bits arrays declared globally in the first 10k lines for unknown reasons. Comments in Romanian mixed with english. Somehow, this shit works by some miracle.
The worst intern you can think of, while being piss drunk, could do better and it's no joke.5 -
First rant: but I'm so triggered and everyone needs a break from all the EU and PC rants.
It's time to defend JavaScript. That's right, the best frikin language in the universe.
Features:
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 -
Best practice of the day:
Single responsibility principle - One class should be responsible for everything!
Either that or someone was payed for LoC. 😁5 -
SICK AND TIRED OF READABILITY VS. EFFICIENCY!!!!!!!
I HAD TO SEPARATE A 4 LOC JSON STRING, WHICH HAD AN ARRAY OF A SINGLE KEY-VALUE PAIRS (TOTAL OF 10 OBJECTS IN THE ARRAY).
ITS READABLE IF YOU KNOW JSON. HOW HARD IS TO READ JSON FORMAT IF YOU GET YOUR STYLE AND INDENTATION PROPERLY?!?
SO I HAD TO
BREAK THE POOR FREAKING JSON APART TO A FUCKING DIFFERENT YAML FILE FORMAT ONLY SO I CAN CALL IT FROM THERE TO THE MAIN CONTROLLER, ITERATE AND MANIPULATE ALL THE ID AND VALUES FROM YAML BACK TO MATCH THE EXPECTED JSON RESPONSE IN THE FRONT END.
THE WHOLE PROCESS TOOK ME ABOUT 15 MINUTES BUT STILL, THE FUCKING PRINCIPLE DRIVES ME INSANE.
WHY THE FUCK SHOULD I WASTE TIME AT AN ALREADY WORKING PIECE OF CODE, TO MAKE IT LESS EFFICIENT AND A SLIGHTLY BIT MORE READABLE?!? FML.5 -
Getting really tired of newer devs in the OSS world re-creating something that has been around for decades, slapping a flashy logo on it, and saying they invented a "blazing fast", "under 200 LOC" way to do something.
"Under X lines of code!!1" is not impressive. It just means you don't understand how abstraction works.7 -
Hey I got reminded of a funny story.
A friend of mine and me were in internships in the same company. The company was specialized in territory resources management (managing water for agriculture, money to build industrial zones...). He got the interesting internship (water predictory modeling) and I got... The repairs of a reference sheet manager that never happened to work. It was in C# and ASP.NET and I was in second year of CS. I expected the code to be nice and clear since it was made by a just graduated engineer with +5years of studies.
I was very wrong.
This guy may never have touched a web server in his life, used static variables to keep sessions instead of... well... sessions, did code everything in the pages event handlers (even LinQ stuff et al) and I was told to make it maintainable, efficient and functional in 2 months. There were files with +32k LoC.
After 1week of immense despair, I decided I will refactor all the code. Make nice classes, mapping layer, something close to a MVC... So I lost time and got scoled for not being able to make all the modifications as fast as in a cleanly designed code...
After 4 weeks, everything was refactored and I got to wait for the design sheets to change some crystal report views.
At this moment I began to understand were was the problem in this company.
My friend next door got asked to stop his modeling stuff for an emergency project. He had to make an XML converter for our clients to be able to send decentralized electrics bills, and if it was not completed within a week, they would no longer be able to pay until it is done.
This XML converter was a project scheduled 5 years before that. Nobody wanted to do it.
At the same time, I was waiting for the Com Department to give me the design views.
I never saw the design views. Spent one month implementing a golden ratio calculator with arbitrary precision because they ain't give me anything to do until the design were implemented.
Ended with a poor grade because "the work wasn't finished".2 -
*Swiches on the PC and opens VS*
Probably I should get some coffee.
*1 hour later, with 0 LOC written*
I should probably code now. Umm, I need music, else I might not focus on the code.
*another hour passes by headbanging to led zeppelin and still on 0 LOC progress*
You know what, this wont work. I should eat and will code with a fresh mind..
*has lunch*
I'll code now.. Maybe I should check up on devrant...
*time goes by with 0 LOC at the end of the day.*
I'll do it tomorrow.
*Next Day, repeats what I did on the earlier day*3 -
Working on my Lenovo x1 carbon. Akku warning "less then 6%" appears. No problem, I will connect the cable just after I finished this function... "Will shutdown in a view moments" message appears. Ok, I connect the cable. Nothing happens. Maybe power adapter is broken or something more worst. Panic. Try to commit and push as fast as I can (around 2000 LOC from today, made big changes on my project today). While pushing to github laptop powers off. Fuck. Check github on smartphone to see if commits had been pushed. No. I do not have a power adapter for replacement. FML.4
-
Whats worse than TestDrivenDevelopement?
Starting TDD once a 15K LoC project has well started...
sooo.... here I am testing the entirity of clinl ;_;12 -
oh, it got better!
One year ago I got fed up with my daily chores at work and decided to build a robot that does them, and does them better and with higher accuracy than I could ever do (or either of my teammates). So I did it. And since it was my personal initiative, I wasn't given any spare time to work on it. So that leaves gaps between my BAU tasks and personal time after working hours.
Regardless, I spent countless hours building the thing. It's not very large, ~50k LoC, but for a single person with very little time, it's quite a project to make.
The result is a pure-Java slack-bot and a REST API that's utilized by the bot. The bot knows how to parse natural language, how to reply responses in human-friendly format and how to shout out errors in human-friendly manner. Also supports conversation contexts (e.g. asks for additional details if needed before starting some task), and some other bells and whistles. It's a pretty cool automaton with a human-friendly human-like UI.
A year goes by. Management decides that another team should take this project over. Well okay, they are the client, the code is technically theirs.
The team asks me to do the knowledge transfer. Sounds reasonable. Okay.. I'll do it. It's my baby, you are taking it over - sure, I'll teach you how to have fun with it.
Then they announce they will want to port this codebase to use an excessive, completely rudimentary framework (in this project) and hog of resources - Spring. I was startled... They have a perfectly running lightweight pure-java solution, suitable for lambdas (starts up in 0.3sec), having complete control over all the parts of the machinery. And they want to turn it into a clunky, slow monster, riddled with Reflection, limited by the framework, allowing (and often encouraging) bad coding practices.
When I asked "what problem does this codebase have that Spring is going to solve" they replied me with "none, it's just that we're more used to maintaining Spring projects"
sure... why not... My baby is too pretty and too powerful for you - make it disgusting first thing in the morning! You own it anyway..
Then I am asked to consult them on how is it best to make the port. How to destroy my perfectly isolated handlers and merge them into monstrous @Controller classes with shared contexts and stuff. So you not only want to kill my baby - you want me to advise you on how to do it best.
sure... why not...
I did what I was asked until they ran into classloader conflicts (Spring context has its own classloaders). A few months later the port is not yet complete - the Spring version does not boot up. And they accidentally mention that a demo is coming. They'll be demoing that degenerate abomination to the VP.
The port was far from ready, so they were going to use my original version. And once again they asked me "what do you think we should show in the demo?"
You took my baby. You want to mutilate it. You want me to advise on how to do that best. And now you want me to advise on "which angle would it be best to look at it".
I wasn't invited to the demo, but my colleagues were. After the demo they told me mgmt asked those devs "why are you porting it to Spring?" and they answered with "because Spring will open us lots of possibilities for maintenance and extension of this project"
That hurts.
I can take a lot. But man, that hurts.
I wonder what else have they planned for me...rant slack idiocy project takeover automation hurts bot frameworks poor decision spring mutilation java11 -
nearly cried.
I had been working on this file for the last 4 or so hours.
And accidentally deleted it with NerdTree (mdy).
300 loc. poof.
scoured internet for recovery procedure.
and.......
... to no avail. just about to give up.
here comes the climax: .....
It was stillllll...... in the NEOVIM. BUFFER.
vim got my back.
praise you vim lord.
#vim_pope3 -
I started my internship at the end of the year..
Fuck my ass!!! This code I have to work with is a huge pile of shit.
The code base I need to work with is around 40k LOC. It is a mixture of C++, C, Java, Python, Bash and I think I saw some lonely js files around.
A list of awesome parts:
- Paths are hard coded.
- Redundant code everywhere
- No documentation or inline comments available
Most of the comments in the code are just old code that is not used anymore. But the cherry on the turd is the class that should provide all kind of useful functions in my daily routine. About ninety percent of the functions have the same description or nothing. Sometimes a function name says "readSomethingFromSomewhere" but instead it writes something to a file. It is really confusing and I need to check everything twice instead of rely on what the function name promises.
I have also learned why copy paste isn't that good. The brief descriptions of every method in a files are always the same.
getName() - Description: Fork child process
getIp() - Description: Fork child process
getIpv6() - Description: Fork child process.
Surprise: None of these functions forks a child process. :D
Another awesome feature is the thing that they store up to five different versions of libraries. Everyone with slight modifications but no hint which one you need to use. Sometimes it is the newest, sometimes the oldest which is running in production. Another case of try and error.
Oh and my dev machine is a potato with a power supply and a fan. I started with NetBeans and every time I compiled the code it sounds like the machine wants to lift off and leave for a better place. (At this point I switched to Emacs and everything runs smoothly now)
At first I thought that I'm just not that good at coding and understanding a big project from scratch but some colleagues have the same problem. The whole system is very inflexible and it is all about "std::cout"-debugging to check if your changes do what you want them to do.
Currently I'm just trying to fix this mess to make the life for the next student or employee easier. The first month was just frustrating as hell. I need to ask so many questions and most of the time the answer was "I don't know, haven't touched this code in years". Needless to say that my progress isn't that awesome but at least I get a nice payment for 20 hours of work a week.2 -
These fucking imbecile devs left me a bunch of bugs in a 150k LOC legacy hell...
Too bad it took some 8 months for them to finally surface in prod. God damned...
Technically, this whole codebase is one giant abyss filled to the brim with bugs.6 -
So today I saw another 'OOP should die' article.
And I decided I should google around a bit to find out why.
Reasons I found:
- Things get too complicated
- Things get too abstract (same as the above really)
But when I search for alternatives, only functional programming and different ways to use OOP get mentioned.
I still don't get why OOP is supposedly bad though.
Maybe my 20-30k LOC projects aren't big enough to see it?
For me the abstraction works very well. The abstraction is used to keep the complexity low(er).
And the different ways of using OOP are a plus-point for me. (Like the Entity-Component system)
I don't know enough about functional programming to be able to say it's better or worse, but the ideas behind it a perfectly usable in languages like C#.
So if any of you have a good concrete reason to not use OOP, please feel welcome to tell me in the comments :)12 -
Ocaml, the strictest language when it comes to types i have ever seen, parses a string to a general json object in around 5 loc.
Take notes java.12 -
Deleting code and cutting out half the loc in a file and eliminating complexity is the best feeling in the world 😎4
-
Fucking first rant here:
So we tried to teach Two new colleagues to typescript and git and testing and stuff and we have a SPOC “which claimed to be very technical”. The SPOC’s task is to keep an eye on the work, and today we have had a review...
After two weeks, the created multiple branches into our git, all with one commit of 400 LOC changed, no merge requestet, issue in Redmine set to “closed”.
Well, by the way they were supposed to write Unit tests for our app.
But I thought, ok, we’ll check their branches.
Their tests all passed (cz) but man, the app didn’t and on compilation there were errors, the app is broken. Damn.
Is it really so far off, that even of They wrote tests, that the app should still work?
AND I THOUGHT IT IS COMMON SENSE. Damn!
Guess how needs to fix it6 -
I just joined a new organization and saw a single file with 9433 lines of code. Advance RIP to me.8
-
daily.
me: i looked into the customer dev's project and even though it's C#, i can use it as a source of inspiration for my own C++ library.
PM: okay, maybe we can even still use it, so that you use a C# dll with your C++ code.
me: ...
other colleague: that's a bad idea. it can already be a challenge to use unmanaged c++ in dotnet, but the other way round it's even more difficult. C# and C++ are languages that behave quite differently and it will be hard to implement a correctly working interface.
PM: okay. well... then please analyze this project's complexity in terms of LOC and create a class diagram, so we get an idea of how complex it is.
me: sure.
PM: hmm... maybe we should split this topic. since dev x will also rely on your library, analyze this project together with him, each of you look at another part of the classes.
me: that's.... i think that's a bad idea. implementing this functionality in this library is my job, not of dev X. he won't be involved in implementing any of the funcionalities and for him, it shouldn't matter how this works.
PM: yeah, but since we are prototyping, maybe we should just violate the "separation of concerns" rule.
me (internally): (ノಠ益ಠ)ノ彡┻━┻
in the end i could convince him to do it my way, but for fuck's sake... when was the last time he actually succesfully implemented something? 🤦♀️ -
Maybe in special dedication to @kiki.
I cut the unit tests down in LOC size by roughly 50 - 60 % in most projects.
It's really easy once one sees unit tests not as a dunking pile of copy pasta wild west, but rather as a code base that needs architecture and design.
Some extensions, some annotations, some good old helper classes.
Pooooof.
Why I did this? ...
Because it's fucking annoying when you read a PR with tests and need a fucking diff tool to spot the difference between two tests cause they're 80 % the same.
Yeah. Thx for giving me brain cramps, motherducker.
I'm not an expert in unit tests, but if all test codebases look like the "usual stuff" in our projects...
It's no wonder bugs exist...10 -
Ok I’m fed up. I feel that computer science major in majority of universities are filled with individuals that memorise code for their assessments as if it is history or civics major.
I mean wtf?
If all you are good at is memorising why did you that cs as your major?
And how far do you think is memorising the simple jackass 20 LOC long shit piece of coding program will take you in the industry?????????6 -
A gigantic codebase of several tens of millions of loc [prolly hundreds of mill's as we don't see all of it] in java EE.
Very complex business logic where bells have their own whistles with their own bells with .... You get it.
Very fine-tuned performance to make app so performant that the only bottleneck becomes the db. The beefiest rds instance becomes too laggy [orm, so sqls are immutable]
Client moves to rewrite the whole thing in PHP. Motivation: lower TTM
:facepalm:11 -
I actually do have one. 2 years ago I found myself in a stressful situation. It lasted for an hour or so but all ended well. Ever since that incident I was wondering what should be different so that situations like these could be avoided. I had an idea. I began making sketches, sorting out the architecture I'd need and then it hit me. Shit, I could reuse this very principle for a MUCH larger scale! And in fact there's noone in the market offering this yet! There are similar products, products that offer a tiny part of my idea's functionality, but none of them are even close to what I have in mind!
And so the coding began. I was still a student back then. And employed 12hrs/day. And married. Needless to say I did not have much time for coding. Now I'm also a father (although not a student any more!) which makes my schedule even worse.
All in all I've made quite a few widely reusable libraries by now which have saved me 10s of thousands of lines typing, had yet another idea on alternative TLS which seems impossible to crack (well okay, possible. But there's a twist - cracker will not be able to know he cracked the algo :) ). Now I'm close to 100k LOC of my main project and struggling with a fucking FE (since I'm more of a bkend guy). FE's already taken a few months from me and I'm still in a square 1 :/ But I'm moving forward. Slowly, but moving. Frustrated af, but not giving up.
I had a sort of a dream to start my project before I'm 30. I have less than a year left. Still doable. This project, if it's sucessful, has a potential to become extremely popular as it offers solutions to multiple problems we have today. This project should save me from 9-to-5 work every day where, no matter how great the environment is, I feel trapped. But I need money to survive in this city . With my family.
This project should be a solution to all of my problems and probably something great the world could enjoy.
I wish I could make it. I really do. I don't want to be 9-5 any more. I don't want to be dictated what's my schedule, what's that I have to do now. what to think. I want to be free of all of this. Have enough time to live. To travel, see the world. Live in a house (God I miss living in a house....). Spend time with my family. Show my lil boy what a wonderful thing the World is!
I really want this to work. I want to be free again. And I wish I hadn't to deal with FrontEnd.
Allright, enough wabbling. Time for a nice cup of tea and back to coding. "The next big thing" is not going to create itself while I'm ranting, right?6 -
Been developing a Java app for 3 months, including basically everything from aop to rest services.
Meeting with po:
Me: So, guess how many loc I wrote.
Po: 400?
Me: *laughs* I'll get to 10.000 this week.
MAN COMES IN WITH CHANGING REQUIREMENTS ON AN HOURLY BASIS YET STILL DOESNT UNDERSTAND HOW MUCH WORK ALL THIS SHIT IS!!1 -
Tomorrow’s schedule:
7am-8: Yoga
8:45-10: Retro
10:15-10:45: Team Meeting
11-11:30: Interview
11:30-Noon: New project meeting
Noon-1pm: Foster care meeting with case worker (monthly check-in)
1pm-1:30: Train co-worker on how to restore databases
2pm-3pm : Onboard new DBA
3:15-4:15: Conference with AWS partner
Yup. I think I’ll complete a perfect zero LOC tomorrow. Oh, I’m also on-call.2 -
I hate my freelancer life.
1. No weekends
2. No particular time to close
3. Work for 12 to 14 hours without sleep sometimes
4. Keep explaining the dumb clients about how development is not wordpress.
Its all fucked up. I have no life.
My average Lines of code this month is around 700 LOC/day. Whereas the average that showed on internet is 100 LOC/day.
I have choosen a hellish life.10 -
I just released the first version of my most successful project. :)
It's a salesforce data migration tool that replaces AutoRabit for our company. The tool includes an own programming language to freely manipulate records and compared to AutoRabit which needs 12 hours for a full migration my tool needs 8.
Minutes.
A total of 18k fucking loc.4 -
A (work-)project i spent a year on will finally be released soon. That's the perfect opportunity to vent out all the rage i built up during dealing with what is the javascript version of a zodiac letter.
Everything went wrong with the beginning. 3 people were assigned to rewrite an old flash-application. Me, A and B. B suggested a javascript framework, even though me and A never worked with more than jquery. In the end we chose react/redux with rest on the server, a classic.
After some time i got the hang of time, around that time B left and a new guy, C, was hired soon after that. He didn't know about react/redux either. The perfect start off to a burning pile of smelly code.
Today this burning pile turned into a wasteland of code quality, a house of cards with a storm approaching, a rocket with leaks ready to launch, you get the idea.
We got 2 dozen files with 200-500 loc, each in the same directory and each with the same 2 word prefix which makes finding the right one a nightmare on its on. We have an i18n-library used only for ~10 textfields, copy-pasted code you never know if it's used or not, fetch-calls with no error-handling, and many other code smells that turn this fire into a garbage fire. An eternal fire. 3 months ago i reduced the linter-warnings on this project to 1, now i can't keep count anymore.
We use the reactabular-module which gives us headaches because IT DOESN'T DO WHAT IT'S SUPPOSED TO DO AND WE CANT USE IT WELL EITHER. All because the client cant be bothered to have the table header scroll along with the body. We have methods which do two things because passing another callback somehow crashed in the browser. And the only thing about indentation is that it exists. Copy pasting from websites, other files and indentation wars give the files the unique look that make you wonder if some of the devs hides his whitespace code in the files.
All of this is the result of missing time, results over quality and the worst approach of all, used by A: if A wants an ui-component similar to an existing one, he copies the original and edits he copy until it does what he wants. A knows about classes, modules, components, etc. Still, he can't bring himself to spend his time on creating superclasses... his approach gives results much faster
Things got worse when A tried redux, luckily A prefers the components local state. WHICH IS ANOTHER PROBLEM. He doesn't understand redux and loads all of the data directly from the server and puts it into the local state. The point of redux is that you don't have to do this. But there are only 1 or 2 examples of how this practice hurt us yet, so i'm gonna have to let this slide. IF HE AT LEAST WOULD UPDATE THE DATA PROPERLY. Changes are just sent to the server and then all of the data is re-fetched. I programmed the rest-endpoints to return the updated objects for a very reason. But no, fuck me.
I've heard A decided (A is the teamleader) to use less redux on the next project and use a dedicated rest-endpoints for every little comoutation you COULD DO WITH REDUX INSTEAD. My will is broken and just don't want to work with this anymore.
There are still various subpages that cant f5 because the components cant handle an empty redux state in the beginning, but to be honest i don't care anymore. Lets hope the client will never find out, along with the "on error nothing happens"-bugs. The product should've been shipped last week, but thanks to mandatory bugfixes the release was postponed to next week. Then the next project starts...
Please give me some tips to keep up code quality over time, i cant take this once more.
I'm also aware that i could've done more, talking A and C about code style, prettifying the code, etc. Etc. But i was busy putting out my out fires, i couldn't kill much of the other fires which in the end became a burning building (a perfect metaphor for this software)4 -
My top 3:
* Inline styling instead of creating a class.
* slapping the new class at the end of a 700 LOC CSS file.
* Using !important14 -
I've been working for the last 5 years on some large legacy code used in production, more than 100K LOC, poor comments (when existing) often outdated, huge parts of code that can no longer be reached, over-engineered class hierarchy, functions of thousands lines, huge parts of deprecated code that cannot be removed because "someone might still be using it". Statistically, every small change caused 3 new issues somewhere else and every bug fix or new feature required 10 times the time that would be necessary with a decent codebase. But after five years in hell I can finally say that... Oh wait, nothing changed, the code is still legacy and nobody is going to do anything about that.1
-
This is the last time Microsoft! I'm getting my old Arch image out and removing you from my life forever! Never again will my linux distro randomly uninstall itself without telling me in the middle of implementing new components and crash my development server. Never again will I have to deal with an update that refuses to STFU and go away until I, ME NOT YOU MICROSOFT, decides it's a good time to run the update. No more lack of customization and poor support of common dev tools. I'M DONE WITH YOU, WE NEED TO SEE OTHER PEOPLE.2
-
Sometimes I just feel happy, just happy.
Let's stop worrying about not meeting deadlines and the several loc that needs to be checked for bugs and optimized, and let's just be grateful that you're not on the streets not able to even have a square meal a day.
Let's just forget about stuff and occasionally be happy that you're gifted, if ur reading this you're definitely privileged, atleast to some extent, so try being happy for it once a while :)
Peace3 -
GraphQL people: REST sucks because it causes unnecessary data fetching and extra requests.
Also GraphQL people: "PicoLooper - A <200 LOC 🤏 ninja-grade 🥷 bulletproof 🔫 solution for the n+1 request problem 🙅 made with love ❤️" -
So I just changed the same LoC in my library to find out that same LoC had no problem...
The fucking test case is written wrong
wtf1 -
My work gave me three laptops because not one of them can access all the resources I need. So I have to balance my workflow around these three machines.9
-
Last 4 days, struggling to get ship it from a Dev who is reviewing my code.
The comments have already piled up more than the LOC submitted.
The code review consists of just 2 interfaces and a pojo. Hardly 20 LOC in total, excluding javadocs.
I hope it gets ship it soon.
Wish me luck.2 -
I wanted to develop a programming language since all programming languages have some shortcoming of their owns so as I walk further along in developing custom parser generator and so forth, I get to the point where I have to consider implementing the Language Server Protocol for the programming language only to realize that while ironically LSP was supposed to make it easy to to have autocompletion features and other stuff made available to other editors, you still end up requiring to make plugins/extensions for such editor like Visual Studio and Visual Studio Codes anyway despise the fact that LSP was meant to solve that. Meanwhile over at Linux Land, we have Kate editor that can be configured to simply connect to LSP server and require no plugin/extension to do so, you just specify it in json config and that's that.
Microsoft... you created LSP protocol and yet you want Plugin/Extensions still for VSCode/Visual Studio even though LSP was made to address that... Make up your mind, ffs. P.S. I have no interest in writing 100,000 LOC of extension/plugin for your editor if it can't get it's $#!^ together.19 -
My worst code review involves line endings. In one of our products we use the facade pattern, and one of the facades is about 5000 loc.
Well, a dude in our team messed up with line endings, so our diff tool showed that 5000 lines have changed. A newb I was at that time, I didn't know any other diff tool, so I went through all the lines manually only to see that 2 lines effectively have changed.. and the newb I was, didn't thought about rejecting the change immediately! We then had somehow to revert that commit, but messed up our central repo (was still with CVS). In the end we had to restore the daily backup for the repo because we couldn't manage it to do it right.
Never ever had such a disastrous code review again. -
Epic code fight broke out today when one developer fronted himself for leader due to having beat all the metrics by a factor of ten. Claimed he could replace the entire department based on LOC alone.
Another developer told him to fucking zip it.
After almost coming to blows someone managed to explain to him that he had to put his code into a compressed archive.
As it compressed to ten times smaller than the next smallest contribution he declared victory because his compressed better. Another developer joked better call bomb squad.6 -
That moment on saturday morning when you realize what you missed for the last 5 months in the framework you are using at work and realize you can delete about 5000 loc with some refactoring...
Fuck guys I just got a huge Eureka moment that probably made me level up.7 -
Achievement of the day:
Reverted a merge from 3 weeks ago (about 30-40 commits back), 1000 ish LOC. Didnt break the build, app worked 100%.
Can't shake the feeling my desk will literally be on fire tomorrow tho. -
It’s actually been quite a fun day, after some ranting on one of our slack communities flutter channel, myself and my team realized we were in a really good place to give back.
We have been working on a large scale flutter application for about a year, phase 1 is about done and we at 11k LOC.
We have been doing a big push for testing over the last 2 months and are at about 50% coverage. The thing we realized is that is the 1 place flutter has fallen short with documentation.
Very little about what we learned for testing our code came out of a google search, or it came out of cobbling bits together from numerous searches and sources.
So we decided we are going to plan and host a virtual meetup to discuss what we have learned and hopefully teach a few people some useful things and hopefully also learn a few new things too.
In addition, and as it has a longer shelf life, we going to setup a medium publication for the company and start a series to cover small specific topics, specific use cases or scenarios that we had trouble with and solved.
Today I had my first thing to type out, had worked out how to test that a function that was passed into a widget was called. So the parent passes the child and onTap function but you are testing the child not the parent as the child is reusable...
Anyway, so with that idea I got hold of marketing for some assets, setup the publication and proceeded to type out 3 articles today, all nice short ones under 2 min reading time.
It really is nice to give back, it’s not like I am Remi smart and can go and write BLoC, but I am smart enough to figure shit out and type it up so that the next guy hopefully benefits from my brain bashing.6 -
So, i started working at as a front end developer at my current job about 3 months ago, my boss now wants me to rebuild the system that took the last developer 5 years to build, and is made up of 40000 loc, in 5 weeks. And because the company cant afford to pay me any more to work full time on it, he's offered me shares instead.6
-
First-time goona work on frontend(my worst nightmare).
That too Angular.
That too on a file containing 900 LOC.
That too with no proper naming, variable names x,e, obj.
That too with no comment.
Cant take help as I am the lead(name-sake, small team, I have 6month more experience than others)
I have 2 days(thank god for the weekends).
Fuck...Fuck...I missed writing CLI apps.7 -
I think the reason most people hate frontend these days can be summed up by the fact that the frontend of my fairly simple React webapp is about 850 loc while the entire Express and MongoDB server is a mere 234 loc
God damn frontend is a lot of work these days6 -
Oh boy. 2.5k loc of legacy bash code. The task is to give every function its own script since that is literally what this script is. Cha8ned together individual scripts . Fingers crossed its actually just breaking out functions :x
-
Yea sure, I'd like to refactor your fucking 1000 loc spagetti code "module" with no documentation at all...3
-
"Hey I know we're doing Agile but, just real fast for some paperwork, I just need a quick estimate, nothing complicated, of the LOC to convert our decades-old millions-of-LOC project from 32-bit to 64-bit, just real fast like whatever you can come up with in 30 minutes"2
-
Send 500 loc for review, get "looks good!"
Send 10 loc for review, get 500 words with questions (about the reviewer's preferences).
Sigh. -
On a website, using var something = $.parseJSON('{"with": "perfectly valid javascript in here"}') when you could just have done var something = {"native": "javascript goes here", "with": "no parsing needed"};
-
Just fucking use the defacto standard. Shut up. Quit being immature. You're not the main character. No one in the world will use your new standard you pull out of your ass just because you thought you were better than other people. You weren't. You're an average dev by any means. If you feel like no one respects you, keep your ego problems out of your work. Just because your emotions are valid doesn't mean all of us have to live with them turned into code.
If I needed a web framework, I would've used React. I don't use React not because I wrote my own framework. I don't need a framework, like at all. Unless you think that ~300 LOC utils.js file + no build system whatsoever is a framework that is.
Sorry, just encountered non-upper-snake-cased environment variables and wanted to vent.4 -
As I walk through the valley of the shadow of dev
I take a look at my life and realize there's nothin' left
‘Cause I've been codin' and proper formattin' so long that
even my momma thinks that my mind is gone
But I ain't never del'd a row that didn't deserve it
Me be treated like a punk, you know that's unheard of
You better watch how you codin' and what you pastin'
Or you and your homies might be lined in Q
I really hate to trip, but I gotta loc
As they croak, I see myself in the compiler smoke
Fool,
I'm the kinda D that little homies wanna be like
On my keys middle row, typin' prayers on stackoverflow
Keep spending most our lives
Livin' in a dev's paradise
Been spending most their lives
Livin' in a dev's paradise1 -
Somehow managed to create my own theme for my IDE. Unfortunately didn't implement the highlight feature for semicolons, arrows, comma etc. (totally forgot about it)
Applied it super excitedly and started writing code.
Some lines later a simple loc generated error. Spent nearly 5 hours on fixing the issue. Later realized what was actually missing.
Fuck my life. -
Can someone suggest tips to code faster?
In the last few days ive only written + commited 114 LoC which is not enough imho.14 -
So, after having my mental breakdown with the 500k LoC Zend Frameshit PHFuck 5.5 with 0 test project, for a whole year; and after moving to a better job, I now inherited a React/Node/GraphQL project with a shitty architecture. It's so shit technical debt can almost be payed with actual cash... or flesh, ass-for-arch.
However, line test coverage is over 90%, so I guess it is an improvement.1 -
Lets make a rant before going to bed
Who had the marvelous idea that a developer's proeficiency could be measured by years?
So at my new job Ive been waiting for credentialls, server access software installation, etc ( i know i know but thats for another rant ) and all that idle time has given me opportunity to crawl in the company's sharepoint page which has the career path for a software developer, since Im a student Im listed as trainee, but after that I have to wait 3 years + certifications to be considered as senior and then be able to hop to next hierarchy level Software Designer and then another three years to be able to become a software architect. So my point, as I was seeing this I thought "I dont wanna wait 6 years to become a software architect, Im going to be better faster in order to become needed and make them promote me faster"
The thing is Ive always wanted to become a softwsre architect and learning that I have to wait 7 years to be considered a proeficient architect just makes me mad.
Pd: One of the requirements for a senior developer is knowing Lines of code time stimationundefined pichardo for president lines of code school is bad trump rules dont do drugs architect loc career career transition1 -
Just started a new job at a big co.
Expected to implement small new feature, no sweat about 30 LOC. Unfortunately no unit tests, no way to test without real data.
Spend 2 weeks trying to get it to run on the test rack. Lo and behold the entire testing system has been sitting broken for months and nobody knew. Why is all the documentation so vague!???5 -
I was tinkering around with my linux installation and trying to decide on a new terminal to use, and I ended up compiling st (suckless terminal). On a whim, I decided to look through the source code and see how much of it I would understand.
There was a C header file called arg.h that uses the preprocessor and macros to parse argument flags and songs by setting up a switch statement in a loop, all in under 50 LoC. To use it, just wrap the switch body between ARGBEGIN and ARGEND, and that's it. The comment at the top simply read "copy me if you can", a challenge to future programmers such as myself.
It was the most beautiful, elegant solution I have ever seen. I tried to tell my girlfriend about it, but she just didn't get it. Maybe some of you will appreciate it more:
https://github.com/chjj/st/... -
Don't refractor for fun!
An anecdote from my previous company. A developer had written a shitty java console app for fetching stock prices. About 3000 LOC. just one java GOD class. So, when me and my friend looked at it, we were amazed how that code works with all that if conditions spanning 100LOC. so. My dear friend underestimated the complexity. Since it just fetches stock price and puts in database right. I can write it in few days and much better one. So, he started writing code in an OO way. Three days later I see he still working on it. Having a glimpse at code. The app is now Object oriented shitty and ugly.
Guess what new code never goes in prod too.
Learning
Don't underestimate complexity of app.
Be empathic about fellow developer. Don't think he has written a shitty code. Think why he had to do so.
Don't work on refractors if there is no one to guide you.3 -
Symfony's book tutorials starts out way too invasive. For example:
Their CLI has a specific command for you to clone the book project's repository. This command won't run unless you have all their dependencies installed (including docker and yarn). In the end a good old fashioned git clone does the trick.
Next, before even writing a single loc, the book urges you to create a symfonycloud account and give them your credit card number.
Seriously what the hell.
Should I mail you a drop of my blood as well so you can check out my ancestry while I'm at it?3 -
So matplotlib can do 3d plots. However, when you try to then label your axes...
plt.xlabel("protocol") # ok
plt.ylabel("volume") # ok
plt.zlabel("time") # error: no such method zlabel (ಠ_ಠ)2 -
Been wanting to get into OOP and unit testing, haven't found a single semi big project that I can use to study these techniques...
Wrote myself a class when asked to do an API call last week, and I think it looks pretty decent...
Does anyone have a ressource to just see how to do it "properly" on medium sized projects? (100k loc)6 -
Counted it out... 100k LoC frontend & backend... Not a single automated test. No unit testing, no integration testing, nothing. I've been asked to implement a CI server.
Halp5 -
well folks, i've truly seen it all. an impressive an informative post on all there is to know about TypeScript, about time, since it's only 2023 and I've been waiting for this for so long!
...
"note: the syntax" 😂
remember that at the end of the day, this guy is employed, and i am not...
in all seriousness though, it's mind boggling to me these companies that market themselves as software or developer companies (or "professional" developers themselves) STILL aren't building their web apps using TypeScript
inb4 javascript maximalists / purists - come back after you've built and had to maintain multiple 10K LOC webapps and tell me that typescript didn't help you
🤡🌎🤡🌎🤡🌎🤡🌎🤡🌎5 -
Oh you want that ticket closed from a week ago? Okay how about every time i finish it, you quit reopening it and adding more tasks and features to shit ive already redesigned/gutted/debugged about 20 fucking times.1
-
Eclipse deleting my entire project, roughly few thousand LOC and a lot of assets. (Probably my silly mistake, though I don't know what I did)
Good thing I had a half a week old back up2 -
Ever written tons of code when drunk, pushing off testing for when ur sober?
Now sober and I realize I have 639 LOC to test - 27 functions
Cannot get myself to hit "run" :-/1 -
When you love the company you work for, and your boss is amazing; but you're stuck with Zend Framework 2 and PHP on a 1.2m LoC untested legacy system...
-
Need to add a feature to an academic C/C++ QT project. I literally couldn't find a line of comment in the whole project, except for multiple // TODO: make this better.
Made a fast prototype of the new functionality with Python: 1 library, <100 LoC, about 30 minutes. Success!
Trying to get the same functionality to run in plain C/C++: after two hours the third library I tried finally compiles (and works cross-platform). ~250LoC and three hours later I have similar functionality as in the Python code. Can't wait to get this running in the QT application. See you on Monday... -
1) Had to fix severe bugs in a dynamic UI (configuration-driven forms) component.
Recognized undocumented Copy/Paste/Modify/FuckUp driven variations of the same component all over the project. Unsurprisingly, the implementations covered 99% of the antipattern catalog on wiki.c2.com and could compete with brainfuck in regard to human-readable code.
Escalated the issue, proposed a redesign using a new approach, got it approved.
Designed, Implemented, tested and verified the new shared and generic component. Integrated into the main product in the experimental branch. Presented to tech lead/management. Everyone was happy and my solution opened even more possibilities.
Now the WTF moment: the product with the updated dynamic UI solution never has been completely tested by a QA engineer despite my multiple requests and reminders.
It never got merged into baseline.
New initiatives to fix the dynamic UI issues have been made by other developers. Basically looking up my implementation. Removing parts they do not understand and wondering why the data validation does not work. And of course taking the credit.
2) back in 2013, boss wanted me to optimize batch processing performance in the product I developed. Profiling proved that the bottleneck ist not my code, but the "core" I had to use and which I must never ever touch. Reported back to him. He said he does not care and the processing has to get faster. And I must not touch the "core".
(FYI: the "core" was auto-generated from VB6 to VB.Net. Stored in SourceSafe. Unmaintainable, distributed about a bunch of 5000+ LoC files, eye-cancer inducing singlethreaded something, which had naive raw database queries causing the low performance.) -
I to myself:
"I do not really need to add type annotations here, it is just the small coding part of my thesis!"
(about 500 LOC)
Later...
"Hmm, lets just activate flow and get the typedefs of some packages from flowtyped..."
Found 5 Errors!
Dang! -
Continuation (no. 2): So because of my bad conscience I was very polite and friendly to the colleague I pestered about... but my boss was not. Instead he broke loose his second fight with Mr. git master. He's joking about that he now already had a fight with almost anybody (mostly team leads). He's leaving the company anyway, so he needn't care, but I start to love his love for conflicts. Some PM or upper boss already said something along the lines: "If something's wrong, I know you'll escalate." Of course you should not for every triviality, but nothing is worse than those lingering, dormant time bombs of projects that went so awry they're just waiting to explode... or silently be canceled.
Well, so they clashed again, and Mr git / scrum master fought for his concern that my boss, who's also product owner, must not enter the team. I looked at the git logs: Mr git master's only contribution - he's supposed to be a member of the team - since joining (like over a month) were 300 LOC, which was actually copy pasting our old copy right form, peppering it with some html tags to ensure it would not work without recompiling the 3rd party lib with a fucking webengine.
My boss now rather wants to remove "agile" as it's not fitting. Just let the three or four of us yank out the code so we actually have a chance to deliver in three months. He told the upper boss that we can take our tasks ourselves so independently we even need no team lead, but could report directly to him. It's still not clear what's gonna happen, but it's like they could let us loose, free radical elements who just do motherfucking programming. Feels awesome. -
!!shortRant
Took over a project of someone leaving the company. 5k loc in 1 File. 40 classes, mccabe average is 12.
FUCK THIS SHIT1 -
My 11k LOC frontend codebase with webpack compiles into a 1.2 MB minified bundle file...RIP mobile users1
-
I'm an iOS developer and I cringe when I read job specs that require TDD or excessive unit testing. By excessive I mean demanding that unit tests need to written almost everywhere and using line coverage as a measure of success. I have many years of experience developing iOS apps in agencies and startups where I needed to be extremely time efficient while also keeping the code maintainable. And what I've learned is the importance of DRY, YAGNI and KISS over excessive unit testing. Sadly our industry has become obsessed with unit tests. I'm of the opinion that unit tests have their place, but integration and e2e tests have more value and should be prioritised, reserving unit tests for algorithmic code. Pushing for unit tests everywhere in my view is a ginormous waste of time that can't ever be repaid in quality, bug free code. Why? Because leads to making code testable through dependency injection and 'humble object' indirection layers, which increases the LoC and fragments code that would be easier to read over different classes. Add mocks, and together with the tests your LoC and complexity have tripled. 200% code size takes 200% the time to maintain. This time needs to be repaid - all this unit testing needs to save us 200% time in debugging or manual testing, which it doesn't unless you are an absolute rookie who writes the most terrible and buggy code imaginable, but if you're this terrible writing your production code, why should your tests be any better? It seems that especially big corporate shops love unit tests. Maybe they have enough money and resources to pay for all these hours wasted on unit tests. Maybe the developers can point their 10,000 unit tests when something goes wrong and say 'at least we tried'? Or maybe most developers don't know how to think and reason about their code before they type, and unit tests force them to do that?12
-
i think kobenz is borderline autistic
he claims he built a predictor of dollar "exchange rate" price (didn't mention against which currency - warning bells), if this were true he wouldn't be on this site...
THEN he claims he built a "framework" like React in 500 LOC...
💩🤡
lotta trolls on this site, beware...6 -
Folow up to https://devrant.com/rants/1112459/...
Ive added the backend and did most of the ui.
Now somre logic remains and an admon page.
So far im at 1/4-1/3 LOC comparing to angularjs version. -
"U wanna create new module? Just copy paste this file and several file, then rename it to your new module", but that each of that file is contain thousand LOC, then i realize all of module created use the same way.
-
Original class has 185 LoC, unit test class have 315.
But it's one of the most important classes, with most states and corner cases.
And, thanks to unit tests, one of the few classes I'm almost proud of. -
Don't you just hate it when there seems to be nothing but in some ways lacking solutions to a definite task in your capability arsenal? Or rather, I don't really know how I should feel about it... I've been developing this solution to receive a 3DES encrypted Azure Service Bus message, decrypting it and chewing the output XML down so as to be digestible to the PHP application whose API the message gets delegated to... but there just seems to be no perfect solution: subscribing to the event topic straight from the target app just... doesn't seem to work properly, a Python implementation.... well, let's just leave it at that... a Node.js implementation would require TS and completely rewriting a proprietary library with 100+ complex types - also, there's some hiccups with both the subscription and the decryption...
I started with an F# implementation (after deeming the PHP one flawed), and it seems it's still the best. But goddamn it I had problems with it on the dotnet core side of thing (decryption output incorrect), so I had to switch to dotnet framework... Now finally everything crucial is peachy, but I can't seem to be able to implement a working serialized domain model pipeline to validate the decrypted message and convert it to something easier to digest for the target application (so that I could use the existing API endpoint instead of writing a new one / heavily modifying the existing implementation and fear breaking something in the process...). I probably could do it in C#, I don't know, but for the love of Linus I'm not going to do it if I can avoid it, when implementing the same functionality I have now without the Dto and Domain type modules would take 3x LoC than the current F# implementation incl. the currently unused modules!
And then there's the problem of deployment... I have no idea what's the best way to deploy a dotnet framework module to an app completely based on MAMP running on a mostly 10yo AWS cloud solution. If I implemented a PHP or Node.js solution, it'd be a piece of cake, but... Phew, I don't know. This is both frustrating, overwhelming and exciting at the same time.7 -
How many lines of code should one be looking at at any given moment? Of course you could zoom, but how many lines do you guys think is ideal?
Currently I have 33 when in full screen.3 -
Our #bigtech repo is like 19 billion LOC so how am I the first one to try to do simpleThing with obviouslyRelatedThing?
My search foo yields nothing and I fear its not supported yet.
fml4 -
I hate meteor. I hate that I have to have everything I do revolve around meteor and it's packages. I hate that I cant implement HMR without support from meteor or tearing my hair out for hours on end. I hate the special implementation of unit tests that have to accommodate for the fact that meteor sucks so much. I hate the encapsulated bubble of "meteor" packages that install themselves outside of my development directory. I hate that I can't use most of the code I find while researching problems because it doesn't work inside of the meteor bubble.
I did not start this project. I did not select meteor as a starting point because I didn't want to implement my own full stack solution, of which there are many that are far better in almost every way, and watch everyone else that touched my code suffer from day one.
If it is the last thing I do, I WILL purge meteor and all of it's nonsense from every line of code in this application even if that means rewriting every line of code in this application.
I will have no mercy. There will be screams of agony, gnashing of teeth and blood will flow down the streets like the rivers of hate that flow in my heart for meteor and all things it stands for.
I will have my vengeance, and it will be terrible.1 -
One of the many good things about F# is that it seamlessly integrates with the .NET ecosystem, right? Very handy in an enterprise environment where in order to get anything done you have to use in-house nugets and tediously building a C# app for something you can do in about 30 LoC in F# just doesn't make sense...
... And then you run into the one fucking namespace in the whole ecosystem that just DOES. NOT. WORK. with F#. What the actual fuck M$?!
In all other cases Func<T',Task> in C# translates into T' -> Task in F#, but not here. "Oh, you're trying to give me Func<T',Task> -> Task? Can't do". Fuck that.9 -
Why do tech writers always produce deliverable documents in Word files instead of Markdown, LaTeX, or anything that is easy to CM? It would be easier to track revision history and dump out of the CI/CD pipeline to the customer.4
-
Just got back to a solo project I hadn't touched in 5 months due to having other priorities. The whole thing is probably less than 1k LOC split over a half-dozen files and I'm not sure whether I should be angry at my past self for leaving the most recent part untested and insanely bug-ridden, taking almost an hour a fix, or be happy that past me organized and documented everything well enough for it to only take almost an hour to fix.2
-
My programming class kinda sucked. Here's why.
1. They taught C++. To students who had never seen a line of code in their lives. The language with 90+ keywords.
2. The teacher. We had to use switch statements to do something. It took around 300 loc. I used an array and shortened it to 5. He took some points away for not doing it correct. IT LITERALLY WORKS THE SAME AND IS SHORTER. This was not the first time I had shortened something/made it more readable and been docked points on the assignment.
3. Commenting. He told us to comment as much as possible, which is not correct. Comment what needs commenting. Not everything.
4. The compiler. We worked on windows with an online compiler. He decided teaching us to set up a compiler was too hard. We used onlinegdb, which isn't inherently bad. However, onlinegdb is based on Linux. He compiled our programs with a windows compiler.
Maybe these are just problems because I've programmed before that, but I still think they are red flags. What do you think?3 -
Low self-confidence dev:
I'm testing out code that I've written for an hour and works the first time I run it. My first thought: "Well, I guess I'm just getting better at writing code with less obvious bugs -- better debug through all the LOC I just wrote." -
Have anyone of you guys ever build a medium or large application with golang? I mean small services with 3000 lines of code are just fine but what about 10k, 20k or 100k loc? Does anyone has experience with such an app?20
-
Aaaaw, man, feels good writing some macros!
129 loc turned 30 😱
---
and when I keep it all primitives I get instant feedback on what the fuck my code really looks like2 -
Irony - (noun) Switching to a new framework to do more with less code. Spending obscene amount of time and LOC to retrofit rest of the code to work with the said framework.
-
here comes few inspirational ( or depressing depending on the POV ) tracks :
Listen to Pegboard Nerds - Hero (feat. Elizaveta) [Infected Mushroom Remix] by InfectedMushroom on #SoundCloud
https://soundcloud.com/infectedmush...
Listen to Merkaba - Epic Life by Lipaz Saar on #SoundCloud
https://on.soundcloud.com/gano6
Listen to Balduin & Wolfgang Lohr feat. J Fitz - Magic Man by Wolfgang Lohr on #SoundCloud
https://soundcloud.com/wolfganglohr...
Listen to Patrick Haize & Momentology - Souls Recognition by Momentology on #SoundCloud
https://on.soundcloud.com/tmnxT
and another just cool :
Listen to Merkaba - Mental Monkey Bars by Sell .. on #SoundCloud
https://soundcloud.com/cassio-sell/...
enjoy ( or not ) either way enjoy the sunny day or moony night ( if u have such @ ur loc ) =]7 -
The ability to generate to generate all of my data transfer objects/, data persistence objects/entity, and unit tests for those.
I love having solid data models before I begin to work with behavioral models but it's a lot of manual work. -
OK, you sick fucks, tell me what WordPress plugin I should make next.
Rules: it needs to be a single-task kind of thing, because I want it done in less than a week and preferably under 200 loc because I have a life, so no gravity forms clones or ACF Better. Don't ask for me to do your homework either, asshole, so if you're suspiciously specific I'll set my dragons on you. Bonus points for weird and pointless.
I just released a plugin that accesses Fuck Off As A Service (www.foaas.com) through shortcodes, so hopefully that gives you an idea of the sort of attitude I approach this project with.
OK, go!15 -
i said "damn this thing is huge" when gazing at a 3k LOC file and not a single person at work clapped back with "thats what she said"
am I just old fashioned?5 -
I JUST WANT TO FUCKING EXCLUDE A DIRECTORY....
I run the code cleaner tool, OH CHRIST it's trying to sanitise the automatically generated code, I don't want this.
I try to exclude... takes ages to work out that while specifying the dirs is absolute you can only exclude relative but from what? I want to block a/b but not a/c/b but no it's all you can only block all b b it a/b, b/b, c/b, c/b, a/c/b, etc.
I google for other solutions, nothing but trash, docs a trash, here's some examples but we don't tell you the actual behaviour. All I want is to get everything in /home/hilldog/emails but not /home/hilldog/emails/topsekret how hard can it be?
I use the source but what's this, BeefJerkyIteratorIteratorBananaSpliterator all over the shop how much convolution and LOC does it take to provide a basic find facility?
Screw this...
$finder->in(explode("\n",trim(exec('find '.escape_args(...$good).' -type d ' . implode('
-o ', prefix('\! -wholename', escape_args(..$bad))) . ' -etc | grep -vETC \'pretty_patterns\''))))3 -
The CLI is my $HOME, the place where I feel most comfortable. Yes, I despise bash syntax and if it's used for actual production code (with #LOC>10³) - like we do. The pipes, grep, awk - it's usually a breeze.
BUT yesterday my illusion of the superiority of my CLI just got shattered badly: There was some zip with a core file I wanted to investigate, but gunzip and zcat just were unable to decompress it, while with a simple double click I could open the freaking folder. -
for Neovim users.
I tried ecovim <- good but seems to lag in large files, think 35k lOC in a single file.
Now Lunarvim <- smooth like butter.1 -
Someone posted a fix to a 5 years old problem that Docker as a company thrown into dumpster (moby) for years.
From the README there it's well researched and it seems they know what they're doing.
The whole daemon is one single file with only 300 loc, totally manageable for everyone if they want to scrutinize.
https://github.com/moby/moby/...