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 - "simple changes"
-
Friend: *deletes something from the internet*
"Thank god, now it's gone forever!"
Me: *Laughs in French*
"Hahahaha!"
Friend: "What?"
Me: "No, I'm pretty sure almost everything you put on the internet stays on the internet."
Friend: "ARE YOU STUPID??! The button says fucking DELETE. What else would it to do? Please use your brain for once."
Me: "You realize that text in the button is just a string right?"
Friend: *Looks confused*
"Stop trying to be such a smartass. Why would it be called 'delete' if it doesn't delete? Your logic make no sense whatsoever."
Me: *Makes quick simple app in order to prove my point*
App has 4 buttons:
-Play Music: Shows a picture of a dog
-Stop Music: Starts playing music video of Never gonna give you up
-Close App: Changes the interface to a random color
-Delete App: Pop up that says "The app has been deleted"
Friend: *Installs and tries the app*
"Dude! Did you even test your app before sending me?? Your buttons are broken as hell. None of them works. They all do things they're not supposed to do. How do you even call yourself a programmer? Sorry dude, nothing personal but this app sucks."
Me: *I need a new friend*
*sigh*22 -
After listening to two of our senior devs play ping pong with a new member of our team for TWO DAYS!
DevA: "Try this.."
Junior: "Didn't work"
DevB: "Try that .."
Junior: "Still not working"
I ask..
Me:"What is the problem?"
Few ums...uhs..awkward seconds of silence
Junior: "App is really slow. Takes several seconds to launch and searching either crashes or takes a really long time."
DevA: "We've isolated the issue with Entity Framework. That application was written back when we used VS2010. Since that application isn't used very often, no one has had to update it since."
DevB: "Weird part is the app takes up over 3 gigs of ram. Its obviously a caching issue. We might have to open up a ticket with Microsoft."
Me: "Or remove EF and use ADO."
DevB: "That would be way too much work. The app is supposed to be fully deprecated and replaced this year."
Me: "Three of you for the past two days seems like a lot of work. If EF is the problem, you remove EF."
DevA: "The solution is way too complicated for that. There are 5 projects and 3 of those have circular dependencies. Its a mess."
DevB: "No fracking kidding...if it were written correctly the first time. There aren't even any fracking tests."
Me:"Pretty sure there are only two tables involved, maybe 3 stored procedures. A simple CRUD app like this should be fairly straight forward."
DevB: "Can't re-write the application, company won't allow it. A redesign of this magnitute could take months. If we can't fix the LINQ query, we'll going to have the DBAs change the structures to make the application faster. I don't see any other way."
Holy frack...he didn't just say that.
Over my lunch hour, I strip down the WPF application to the basics (too much to write about, but the included projects only had one or two files), and created an integration test for refactoring the data access to use ADO. After all the tests and EF removed, the app starts up instantly and searches are also instant. Didn't click through all the UI, but the basics worked.
Sat with Junior, pointed out my changes (the 'why' behind the 'what') ...and he how he could write unit tests around the ViewModel behavior in the UI (and making any changes to the data access as needed).
Today's standup:
Junior: "Employee app is fixed. Had some help removing Entity Framework and how it starts up fast and and searches are instant. Going to write unit tests today to verify the UI behaivor. I'll be able to deploy the application tomorrow."
DevA: "What?! No way! You did all that yesterday?"
Me: "I removed the Entity Framework over my lunch hour. Like I said, its basic CRUD and mostly in stored procedures. All the data points are covered by integration tests, but didn't have time for the unit tests. It's likely I broke some UI behavior, but the unit tests should catch those."
DevB: "I was going to do that today. I knew taking out Entity Framework wouldn't be a big deal."
Holy fracking frack. You fracking lying SOB. Deeeep breath...ahhh...thanks devRant. Flame thrower event diverted.13 -
Oh, man, I just realized I haven't ranted one of my best stories on here!
So, here goes!
A few years back the company I work for was contacted by an older client regarding a new project.
The guy was now pitching to build the website for the Parliament of another country (not gonna name it, NDAs and stuff), and was planning on outsourcing the development, as he had no team and he was only aiming on taking care of the client service/project management side of the project.
Out of principle (and also to preserve our mental integrity), we have purposely avoided working with government bodies of any kind, in any country, but he was a friend of our CEO and pleaded until we singed on board.
Now, the project itself was way bigger than we expected, as the wanted more of an internal CRM, centralized document archive, event management, internal planning, multiple interfaced, role based access restricted monster of an administration interface, complete with regular user website, also packed with all kind of features, dashboards and so on.
Long story short, a lot bigger than what we were expecting based on the initial brief.
The development period was hell. New features were coming in on a weekly basis. Already implemented functionality was constantly being changed or redefined. No requests we ever made about clarifications and/or materials or information were ever answered on time.
They also somehow bullied the guy that brought us the project into also including the data migration from the old website into the new one we were building and we somehow ended up having to extract meaningful, formatted, sanitized content parsing static HTML files and connecting them to download-able files (almost every page in the old website had files available to download) we needed to also include in a sane way.
Now, don't think the files were simple URL paths we can trace to a folder/file path, oh no!!! The links were some form of hash combination that had to be exploded and tested against some king of database relationship tables that only had hashed indexes relating to other tables, that also only had hashed indexes relating to some other tables that kept a database of the website pages HTML file naming. So what we had to do is identify the files based on a combination of hashed indexes and re-hashed HTML file names that in the end would give us a filename for a real file that we had to then search for inside a list of over 20 folders not related to one another.
So we did this. Created a script that processed the hell out of over 10000 HTML files, database entries and files and re-indexed and re-named all this shit into a meaningful database of sane data and well organized files.
So, with this we were nearing the finish line for the project, which by now exceeded the estimated time by over to times.
We test everything, retest it all again for good measure, pack everything up for deployment, simulate on a staging environment, give the final client access to the staging version, get them to accept that all requirements are met, finish writing the documentation for the codebase, write detailed deployment procedure, include some automation and testing tools also for good measure, recommend production setup, hardware specs, software versions, server side optimization like caching, load balancing and all that we could think would ever be useful, all with more documentation and instructions.
As the project was built on PHP/MySQL (as requested), we recommended a Linux environment for production. Oh, I forgot to tell you that over the development period they kept asking us to also include steps for Windows procedures along with our regular documentation. Was a bit strange, but we added it in there just so we can finish and close the damn project.
So, we send them all the above and go get drunk as fuck in celebration of getting rid of them once and for all...
Next day: hung over, I get to the office, open my laptop and see on new email. I only had the one new mail, so I open it to see what it's about.
Lo and behold! The fuckers over in the other country that called themselves "IT guys", and were the ones making all the changes and additions to our requirements, were not capable enough to follow step by step instructions in order to deploy the project on their servers!!!
[Continues in the comments]26 -
Fucking intern.
While I was working next to her a couple weeks back, she spent half her time on social media, playing Candy Crush, or talking with her friend. She also left early almost every day.
I had given her a project to do (object crud + ui), and helped her through it. She made pretty abysmal progress in a week. I ended up finishing it for her by rewriting basically all of her code (every single line except some function names, lone `end` or `}` statements, a few var declarations, blank lines, plus a couple of comments she copied over from my code).
This week I gave her a super easy project to do. It amounts to copying four files (which I listed), rename a few things to be Y instead of X, and insert two lines of code (which I provided) to hook it up. Everything after that just works. It should have taken her ... okay, maybe a few hours because she's slow and new to the language. but it would have taken me five to ten minutes, plus five minutes of testing.
She has spent THREE FUCKING DAYS ON THIS AND SHE'S STILL NOT DONE. SHE'S BLOODY USELESS!
She has kept not pulling changes and complaining that things are broken. Despite me telling her every time I push changes that affect her work (on. my. branch. ergh!)
She keeps not reading or not understanding even the simplest of things. I feel like MojoJojo every time I talk to her because of how often I repeat myself and say the same things again and again.
Now she's extremely confused about migrations. She keeps trying to revert a drop_table migration that she just wrote so she can re-create the table differently. Instead of, you know, just reverting back to her migration that creates the table. it's one migration further.
Migrations are bloody simple. they're one-step changes to the database, run in order. if you want to make a change to something you did a few steps back, you roll back those migrations, edit your shit, and run them again. so bloody difficult!
`rails db:rollback && rails db:rollback`
Edit file
`rails db:migrate`
So. hard.
I explained this to her very simply, gave her the commands to copy/paste, ... and she still can't figure it out. She's fucking useless.
It took me ten minutes to walk her though it on a screen share. TEN FREAKING MINUTES.
She hasn't finished a damned fucking thing in three weeks. She's also taking interview calls while working on this, so I know she totally doesn't care.
... Just.
Fucking hell.
USELESS FUCKING PEOPLE!35 -
!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 -
Your profession changes how you think.
Coding did the same for me. Some good, some bad.
The good:
I know which problems in life are worth trying to solve.
And I'm very good at solving those problems.
I can analyse a situation accurately. I don't get emotional and panic.
I can immediately identify logical flaws in people's thinking.
I can identify biases in others and myself.
The bad:
I tend to follow simple instructions to the letter and rarely improvise based on reality.
When my wife tells me her problem I try to solve it instead of empathizing - which is what she really wants.
I haven't developed street smarts or the ability to convince people with anything other than logic - but people are more emotional than logical.
I'm not good at small talk.15 -
The Perfect Storm:
My worst coding mistake? Yeah, let me tell you about that. I pushed a simple JavaScript/HTML change without knowing that the stupid header was shared with another "not so important" section of the site called "My Account" where people go to pay for their services. I call it the perfect storm because I left early that Friday for a weekend cruise and right before leaving I pushed the change, sent the request to push for production and left. When they noticed that clients were complaining about not being able to pay they started reversing most changes of all teams trying to fix it but they never touched mine because they knew I wasn't working on the backend. My whole team worked over the weekend trying to find the issue while I was having fun in the cruise. They ended up reversing all changes by Sunday night and it took us about 4 more days to figure out that my simple JavaScript/HTML change broke the site and prevented 30 million customers from making payments that weekend plus it broke the whole 2nd release of the month.... yeah, nothing major.21 -
"You mean to tell me that you deleted the class that holds all our labels and spin boxes together?" I said exasperatedly.
~Record scratch.mp3
~Freeze frame.mp4
"You're probably wondering how we got to this stage? Let's wind back a little, shall we?"
~reverseRecordSound.wav
A light tapping was heard at the entrance of my office.
"Oh hey [Boss] how are you doing?" I said politely
"Do you want to talk here, or do you want to talk in my office? I don't have anyone in my office right now, so..."
"Ok, we can go to your office," I said.
We walked momentarily, my eyes following the newly placed carpeting.
Some words were shared, but nothing that seemed mildly important. Just necessary things to say. Platitudes, I supposed you could call them.
We get to his office, it was wider now because of some missing furniture. I quickly grab a seat.
"So tell me what you've been working on," I said politely.
"I just finished up on our [project] that required proper saving and restoring."
"Great! How did you pull it off?" I asked excitedly.
He starts to explain to me what he did, and even opens up the UI to display the changes working correctly.
"That's pretty cool," admiring his work.
"But what's going on here? It looks like you deleted my class." I said, looking at his code.
"Oh, yeah, that. It looked like spaghetti code so I deleted it. It seemed really bulky and unnecessary for what we were doing."
"Wait, hold on," I said wildly surprised that he thought that a class with some simple setters and getters was spaghetti code.
"You mean to tell me that you deleted the class that organizes all our labels and spin boxes together?" I said exasperatedly.
"Yeah! I put everything in a list of lists."
"What, that's not efficient at all!" I exclaimed
"Well, I mean look at what you were doing here," he said, as he displays to me my old code.
"What's confusing about that?" I asked politely, but a little unnerved that he did something like this.
"Well I mean look at this," he said, now showing his "improved" code.
"We don't have that huge block of code (referring to my class) anymore filling up the file." He said almost a little too joyously.
"Ok, hold on," I said to him, waving my hand. "Go back to my code and I can show you how it is working. Here we are getting all the labels and spin boxes into their own objects." I said pointing a little further down in the code. "Down here we are returning the spin boxes we want to work with. Here and here, are setters so we can set maximum and minimum values for the spin box."
"Oh... I guess that's not that complicated. but still, that doesn't seem like really good bookkeeping." He said.
"Well, there are some people that would argue with you on that," I said, thinking about devRant.
He quickly switches back to his code and shows me what he did. "Look, here." He said pointing to his list of lists. "We have our spin boxes and labels all called and accounted for. And further down we can use a for loop to parse through them."
He then drags both our version of the code and shows the differences. I pause him for a moment
"Hold on, you mean you think this" I'm now pointing at my setters "is more spaghetti than this" I'm now pointing at his list of lists.
"I mean yeah, it makes more sense to me to do it this way for the sake of bookkeeping because I don't understand your Object Oriented Programming stuff."
...
After some time of going back and forth on this, he finally said to me.
"It doesn't matter, this is my project."
Honestly, I was a little heart broken, because it may be his project but part of me is still in there. Part of my effort in making it the best it can be is in there.
I'm sorry, but it's just as much my project as it is yours.16 -
I was hired as a senior software engineer. During handover I found out I'm actually replacing the CTO.
I queried why he was leaving and got a simple "just want a break from working" which I found odd.
Fast forward and now I also just want a break from work, permanently. This place has followed every bad practise and big no-no out there. Every bit of software is a built in house knockoff janky piece of crap that doesn't work and makes people's jobs 5000 times harder.
The UI looks worse than Windows 3.1, absolutely horrendous code formatting, worst database structure I've ever seen.
The mere mention of using a team communication tool results in being yelled at from the CEO whom communicates purely via email, who then gets annoyed when you don't reply because they sent the email to a client instead of you.
We get handed printed out "tickets" to work instead of the so called "amazing in house ticket system" built using PHP 5 and is literally crammed into an 800x600 IFrame. Yes a F$*#ing IFRAME!
It's not like we have an outdated TFS server that has work items we can use...
Why not push for changes you say. I have, many times, tried to suggest better tools. The only approval I've gotten is using PhpStorm. Everything else is shutdown immediately and you get the silent treatment.
The CEO hired me to do a job, then micromanages like crazy. I can't make UI changes, I can't make database changes, why? They insists they know best, but has admitted multiple times to not knowing SQL and literally uses a drag and drop database table builder.
Every page in the webapps we make are crammed into 800x600 iframes with more iframes inside iframes. And every time it's pointed out we need to do something, be it from internal staff or client suggestions, the CEO goes off about how the UI is industry leading and follows standards.. what in the actual f....
Literally holding on by a thread here. Why hire a CTO under the guise of being a senior developer but then reduce the work that can be done down to the level of a junior?
Sure the paycheck is really nice but no job is worth the stress, harassment and incompetent leadership from the CEO.
They've verbally abused people to the point they resign, best part is that was simply because the CEO made serious legal mistakes, was told about it by the employee then blamed it on others.21 -
I am bloody sick of being on my own.
I was the sole dev at the last few jobs I've held, with the exception of API Guy -- who didn't really help much, and who got fired / quit six months after I started. Every other job I've either been the only dev, or the only web dev. (Exception:My boss at my previous job was a Rails dev, but he has zero time to code, and was significantly less experiened so he could only rarely help anyway.)
But now I'm in a company with a bunch of other devs, and they're all ostensibly senior devs, so you'd think I should be able to ask questions, right? And get answers? that actually help? like "Hey, you built this; how does it work?" No bloody way.
So far every time I've asked someone for help, they've been incompetent. I asked about what a few flags did, and got an answer that basically said "you just gotta know. oh, and the labels aren't up to date, so don't trust what they say." I asked the head of the "product team" about a ticket that he wrote, and he changed what it meant four times within two days. I asked about another, and he said "oh, that isn't reproduceable." Thanks. I asked about mailers, and got two very different, very incompete walkthroughs from the more senior devs (9+ years on this codebase) that didn't help. I asked two people about how users and roles work, and still have no idea what kind of user (there are like twelve?) is what, what roles even exist, or how to check for permissions. `@current_user` is a thing, but idfk what it holds since that can change considerably, and there's an impersonation feature that changes how it works, too. I ask the product guy again about where to link something, and he has no idea. I ask said product guy about what this feature needs to do, and he doesn't know. I ask what the legal team needs, and i get nothing. I ask the designer where the goddamn CSS lives, and he doesn't know; he apparently just puts it wherever he feels like, even if it's a completely unrelated stylesheet. As long as it works, right?
I ask very simple and straighforward questions, and it takes them forever to get back to me saying what amounts to "idk, ask someone else."
This feels like the same crap all over again, except now there are a bunch of devs I can ask that give me basically the same answers as the sales people always did. Always "idk" or a confusing mess of an 'answer' that skips most/all of the important bits. At least these people don't [usually] contradict themselves.
So, @Root is all alone, again.
And currounded by incompetence.
Again.
For fuck's sake.
Can't I catch a break?19 -
Worst dev team failure I've experienced?
One of several.
Around 2012, a team of devs were tasked to convert a ASPX service to WCF that had one responsibility, returning product data (description, price, availability, etc...simple stuff)
No complex searching, just pass the ID, you get the response.
I was the original developer of the ASPX service, which API was an XML request and returned an XML response. The 'powers-that-be' decided anything XML was evil and had to be purged from the planet. If this thought bubble popped up over your head "Wait a sec...doesn't WCF transmit everything via SOAP, which is XML?", yes, but in their minds SOAP wasn't XML. That's not the worst WTF of this story.
The team, 3 developers, 2 DBAs, network administrators, several web developers, worked on the conversion for about 9 months using the Waterfall method (3~5 months was mostly in meetings and very basic prototyping) and using a test-first approach (their own flavor of TDD). The 'go live' day was to occur at 3:00AM and mandatory that nearly the entire department be on-sight (including the department VP) and available to help troubleshoot any system issues.
3:00AM - Teams start their deployments
3:05AM - Thousands and thousands of errors from all kinds of sources (web exceptions, database exceptions, server exceptions, etc), site goes down, teams roll everything back.
3:30AM - The primary developer remembered he made a last minute change to a stored procedure parameter that hadn't been pushed to production, which caused a side-affect across several layers of their stack.
4:00AM - The developer found his bug, but the manager decided it would be better if everyone went home and get a fresh look at the problem at 8:00AM (yes, he expected everyone to be back in the office at 8:00AM).
About a month later, the team scheduled another 3:00AM deployment (VP was present again), confident that introducing mocking into their testing pipeline would fix any database related errors.
3:00AM - Team starts their deployments.
3:30AM - No major errors, things seem to be going well. High fives, cheers..manager tells everyone to head home.
3:35AM - Site crashes, like white page, no response from the servers kind of crash. Resetting IIS on the servers works, but only for around 10 minutes or so.
4:00AM - Team rolls back, manager is clearly pissed at this point, "Nobody is going fucking home until we figure this out!!"
6:00AM - Diagnostics found the WCF client was causing the server to run out of resources, with a mix of clogging up server bandwidth, and a sprinkle of N+1 scaling problem. Manager lets everyone go home, but be back in the office at 8:00AM to develop a plan so this *never* happens again.
About 2 months later, a 'real' development+integration environment (previously, any+all integration tests were on the developer's machine) and the team scheduled a 6:00AM deployment, but at a much, much smaller scale with just the 3 development team members.
Why? Because the manager 'froze' changes to the ASPX service, the web team still needed various enhancements, so they bypassed the service (not using the ASPX service at all) and wrote their own SQL scripts that hit the database directly and utilized AppFabric/Velocity caching to allow the site to scale. There were only a couple client application using the ASPX service that needed to be converted, so deploying at 6:00AM gave everyone a couple of hours before users got into the office. Service deployed, worked like a champ.
A week later the VP schedules a celebration for the successful migration to WCF. Pizza, cake, the works. The 3 team members received awards (and a envelope, which probably equaled some $$$) and the entire team received a custom Benchmade pocket knife to remember this project's success. Myself and several others just stared at each other, not knowing what to say.
Later, my manager pulls several of us into a conference room
Me: "What the hell? This is one of the biggest failures I've been apart of. We got rewarded for thousands and thousands of dollars of wasted time."
<others expressed the same and expletive sediments>
Mgr: "I know..I know...but that's the story we have to stick with. If the company realizes what a fucking mess this is, we could all be fired."
Me: "What?!! All of us?!"
Mgr: "Well, shit rolls downhill. Dept-Mgr-John is ready to fire anyone he felt could make him look bad, which is why I pulled you guys in here. The other sheep out there will go along with anything he says and more than happy to throw you under the bus. Keep your head down until this blows over. Say nothing."11 -
Juniors are a fun bunch to work with.
Over confident, hero complex of that fresh graduate high, and then thrown in to the real world! Where there hopes and dreams are crushed in minutes when they see what monolithic applications really look like!!
But don't let that overwhelm you, your not going to be changing all of it any time soon, hell some of this code hasn't been touched in 5+ years and still works without fail.
Don't stress about the work load, you can only write 1 line of code at a time anyway, and hell, even seniors make mistakes.
The key about being able to manage this beast is simple, break it! Because the more you break it, the more you'll understand how a project is put together, for better or worse. Learn from the examples in front of you, and learn what not to do in the future 😎
But more importantly, plan your changes, whiteboard the high level logic of what it is you want to add, then whiteboard in the current codebase and determine where to slice this bitch up, then when it all looks well and good, take out your scalpel and slice and dice time.
Don't worry, your changes aren't going to production anytime soon, hell, you'll be lucky to get past the first pull request with this working 100% the first time, and that's a good thing, learn from tour short comings and improve your own knowledge for the next time!2 -
Reviewing coworker's code:
Me: I see you're doing a convoluted sort for every element twice to get your two lists in sync... 😐
CoWorker: Yeah. *straight face, no regrets* That's the only way to do this.
Me:... Uh... No? You can just manage one list with a simple struct and then use the the standard sort.
Coworker: Yeah sure I know. But it'll take time. We don't have time.
Me: *aghast* This is embarrassingly bad code!
Coworker: Don't worry, later on I'll use a hashmap for it. But this needs to be pushed now.
Me: *to myself, no you don't need a hashmap*
Okay, you do you but I can't back you on this. It isn't going to take a lot of time to correct it.
Next day.
Coworker: Hey can you review my code again?
Me: You've made the changes already? *in a bored tone, knowing that they wouldn't have changed shit*
Coworker: No this is a different file. Our manager agrees that we can worry about performance later.
Me: Sure. *😀🔨🔨*
Few weeks pass by:
QA: The operation takes absurdly long time to complete even with the smallest data. Ten minutes for X is unacceptable.
Me: Who would've known? ☺️21 -
Builds a site around a CMS, so non devs can update content
Gets asked to make simple changes that can be made using said CMS
🤦♂️3 -
MOTHER FUCKER IDIOTS!!!
SO I HAVE TO ROLLBACK OUR PROD DEPLOYMENT BECAUSE IM THE ONLY FUCKER WHO UNDERSTANDS THE SIMPLE CONCEPT OF "DONT PUSH UNFINISHED CHANGES"?!?
DAMN!!!! FUCK YOU ALL...10 -
Minimum wage employers and restaurants asking "and why should we hire you?".
You have 40 vacancies in your area for just your company alone.
You're paying $13.25 an hour when only a year ago you were paying $9.75.
Why should we hire you?
F*ck you, pay me, that's why.
You're not f*cking NASA
You're a God damn chain restaurant with a 40% turnover rate, who's employees probably shoot up in the bathroom on the rare occasion they even get a break.
I looked at the guy with all the annoyance I could muster, stared him down for a good five seconds and said. "You pay a few dollars over minimum. You're job is not important enough to even ask that question. Have a nice day." And got up and left.
Dude followed me and stuttered " hold up. I was just..."
But I was already out the door.
You were just what mark? Asking a dumbfuck question as if you had any leverage at all?
Your competitor *across the street* is offering 50 cents *more* per hour, and has guaranteed breaks.
What, did you forget 2008 and how you treated millions of people as disposable? The little part where you and most american industries demanded passion, without pay raises? Promotions without benefits? The jobs that if you worked hard, rather than a promotion or a pay raise, your reward was more work and less hours to finish?
You assholes thought we forgot about that? How you shipped millions of jobs overseas, blamed it on "automation" (chinese and indian slave labor), and then pointed the finger at millions of impoverished people as "lazy" in places like Detroit and Pittsburgh and told them "you just got to work harder and smarter!" Or "just get a small loan and create the next google!" from the comfort of your yachts? I'm looking at you bane corp.
No, now the shoes on the other foot motherf*ckers. Hows it feel needing all *us* commoners? "Why should we hire you?"
No, why should *I* WORK FOR YOU?
Cuz I saw THREE dirty tables coming in. A line of people that could be being served. A line that could have been optimized with the proper table count and some simple changes. A menu that doesnt even incentivize your biggest sellers and a dozen other things your store is doing wrong.
Think mark, think!
This is one of those braindead questions employers paying sub $18 an hour ask, because they suffered so much brain drain from years of payola profits from too-big-to-fail wallstreet bailouts, that they forgot they are not king midas, unless they are the king midas of shit, because increasingly everything corporate America touches turns into shit.
And while were on the subject, stopping bringing in outside management to stores. It destroys team cohesion, staff morale, pisses off people *on site* who *actually know* the team, the stores daily activities and processes, and who are better fit for that role. You bring in disinterested outside management, and it's one of the biggest red flags I've ever seen: these smarmy selfcongratulating f*cks who know nothing about the particular store, have no connection to the staff, go on firing sprees or alienation-sprees to hire in friends, fuck up the schedules because again they know nothing about the employees, and then move on after a few years to greener pastures, leaving a barren radioactive wasteland of chain smokers and burnt out staff in their wake.
Dear corporate America, your free ride on the public's good will is over. It's over.
Now you're in the bitch seat. Come sit at my desk and explain to me, EXPLAIN TO ME, why I should sweat and labor to save your shitty company hemorrhaging money like a bleeding crack-addicted hobo dying with a sucking chest wound from a chicago skidrow friday-night drive-by?
You dont deserve it. Your management and company culture is worse than incompetent. It's full of smiley guys expounding about their passion for customer service while giving each other sloppy BJs in broom closets, a veritable cornucopia of cult-like corporate dick suckers *and* dickheads, proclaiming, no...PROFESSING (hence "professional") their undying allegiance and dedication to their corporate family with the intensity of cujo, foaming at the mouth, or Mitt Romney preparing for a photoshoot, plastic smiles and feigned laughs.
Dont forget to wipe your chin, asshole. It's not Ronald McDonald your blowing, but it's definitely not Gordon f*cking Ramsey either.
Would you like fries with that?88 -
What is it with clients who have never even seen a single line of code in their entire lives telling me how long they believe a certain change request should take to code.
I mean, what if I told you that your "seemingly simple enough" change needed an update to 36 class files, 9 oracle stored procedures AND several database schema changes. Also, who the fuck is going to perform a regression test to make sure I didn't break anything? Your Uncle Bob??6 -
Making a contest site for a client. It's 2 parts, a static part and then a "hub" where the contest actually takes part. I did most of the static part, and uploaded it to show her. She likes it, but wants to be able to change the content automatically without having to talk to me. Ok, I think. The harder part is the contest site, so she's not gonna run away with my code. I give her access to the ftp and teach her what to do.
To my amazement she takes a liking to html. And starts adding some (super simple) tags. They ruin some of my designs but they look fine. Whatever.
Today she messages me saying that the top picture is off. Hmm, I'll check it out. Turns out almost the entire page is ruined. What's even worse is that she inserted a link to a facebook image she has on top of everything, a picture I don't have access to, and yet she's refusing to admit that it was her mistake. It's not even wrapped in an img tag, it's just pure text!!!
Fine. I'll revert to the version I had. No! cz apparently I can't undo all the changes she's worked hard on. So now I have to go through all the markup and check what's causing this -- and I hate frontend!!!
Worst part of this all? She can't fucking be bothered to type out what her whore infested lying mouth wants to say. She has to send me voicenotes, a few minutes long, filled with uhhh ummm let me think, because that brain who thought learning to write <br/> and <em> is bad ass can't FUCKING formulate a thought before sending it. She has to have me stop my music, and stop my concentration just so she can tell me maybe she pasted it by mistake IN A 5 MINUTE VOICE NOTE. tbh the money isn't even that good. I don't know why I'm still here.
PS: it's not missing an include. I checked.undefined html client fuck clients too bad i'm an atheist i need jesus right now when clients think that they are jesus7 -
Prologue
My dad has an acquaintance - let's call him Tom. Tom is an gynecologist, one of the best in Poznań, where I live. He's a great guy but absolutely can not into tech of any kind besides his iPhone and basic PC usage. For about a year now I've been doing small jobs for him - build a new PC for his office, fix printer, fix wifi, etc. He has made a big mistake few years ago by trusting a guy, let's call him Shitface, with crating him software for work. It's supposed to be pretty simple piece of code in which you can create and modify patient file, create prescription from drugs database and such things. This program is probably one of the worst pierces of code I've ever seen and Shitface should burn for that. Worse, this guy is pretentious asshole lacking even basic IT knowledge. His code is garbage and it's taking him few months to make small changes like text wrapping. But wait, there's more. Everything is hardcoded so every PC using this software must have installed user controls for which he doesn't have license and static IP address on network card.
Part 1
Tom asked me to build him a new PC that will be acting like a server for Shitface's program. He needs it in Kalisz (around 150 km from my place). I Agred (pun intended) and after Tom brought me his old computer I've bought parts and built a new one. I have also copied everything of value and everything took me around three hours.
Part 2
Everything was ready but Shitface's program. I didn't know much about it's configuration so when I've noticed that it's not working even on the old PC I got a bit worried. Nevertheless I started breaking everything I know about it and after next three hours I've got it somewhat working. Seeing that there's still some problems with database connection (from Windows' Event Viewer) I wrote quick SMS to Shitface asking what can be wrong. He replied that he won't be able to help me any way until Monday (day after deadline). I got pissed and very courteously asked him for source code because some of libraries used in this project has license that requires either purchase of commercial license or making code open source. He replied within few minutes that he'll be able to connect remotely within next 10 minutes. He was trying to make it work for the next hour but he succeeded. It was night before deadline so I wrapped everything up and went to bed thinking that it won't take me more than an hour to get this new PC up and running in the office. Boy was I wrong.
Also, curious about his code, I've checked source and he is using beautiful ponglish (mixed Polish and English) with mistakes he couldn't even bother to fix. For people from Poland, here's an example:
TerminarzeController.DeleteTerminarzShematyDlaLekarza
Part 3
So I drove to Kalisz and started working on making everything work. Almost everything was ready so after half an hour I was done. But I wanted to check twice if it's all good because driving so far second time would be a pain. So I started up Shitface's program, logged in, tried to open ANYTHING and... KABUM. UNHANDLED EXCEPTION. WTF. I checked trace and for fuck sake something was missing. Keep in mind that then I didn't know he's using some third party control for Windows Forms that needs to be installed on client PC. After next fifteen minutes of googling I've found a solution. I just had to install this third party software and everything will work. But... It had to be exactly this version and it was old. Very old. So old that producent already removed all traces of its existence from their web page and I couldn't find it anywhere. I tried installing never version and copying files from old PC but it didn't work. After few hours of searching for a solution I called Mr Shitface asking him for this control installation file. He told me that he has it but will be able to send it my way in the evening. Resigned I asked for this new PC to be left turned on and drove home. When he sent me necessary files I remotely installed them and everything started working correctly.
So, to sum it up. Searching for parts and building new PC, installing OS and all necessary software, updating everything and configuring it for Tom taste took me around what, 1/3 of time I spent on installing Mr Shitface's stupid program which Tom is not even happy with. Gotta say it was one of worst experiences I had in recent months. Hope I won't have to see this shit again.
Epilogue
Fortunately everything seems to work correctly. Tom hasn't called me yet with any problems. Mission accomplished. I wanna kill very specific someone. With. A. Spoon.1 -
- If I buy x amount of ram | hard drive space | cpu power I will never need more.
- No need for version control | Tests. This is a small project
- git commit -m "changes" (its a small change. I will remember why I did it)
- It is too obvious that I put a lot of personal time in this so my boss will definitely notice!
- Why comment this simple method? Anyone should know what it does. Especially me!
- "this should never happen"
- This call can't be from work. Everyone knows I am on vacation.
- I will back up next week. It's not like it is going to crush today.
- It’s 11:30 already? I will work on this for only a half hour more and then I will definitely go to bed!
- This project will take x amount of time!2 -
College can be one of the worst investments for an IT career ever.
I've been in university for the past 3 years and my views on higher education have radically changed from positive to mostly cynical.
This is an extremely polarizing topic, some say "your college is shite", "#notall", "you complain too much", and to all of you I am glad you are happy with your expensive toilet paper and feel like your dick just grew an inch longer, what I'll be talking about is my personal experience and you may make of it what you wish. I'm not addressing the best ivy-league Unis those are a whole other topic, I'll talk about average Unis for average Joes like me.
Higher education has been the golden ticket for countless generations, you know it, your parents believe in it and your grandparents lived it. But things are not like they used to be, higher education is a failing business model that will soon burst, it used to be simple, good grades + good college + nice title = happy life.
Sounds good? Well fuck you because the career paths that still work like that are limited, like less than 4.
The above is specially true in IT where shit moves so fast and furious if you get distracted for just a second you get Paul Walkered out of the Valley; companies don't want you to serve your best anymore, they want grunt work for the most part and grunts with inferiority complex to manage those grunts and ship the rest to India (or Mexico) at best startups hire the best problem solvers they can get because they need quality rather than quantity.
Does Uni prepare you for that? Well...no, the industry changes so much they can't even follow up on what it requires and ends up creating lousy study programs then tells you to invest $200k+ in "your future" for you to sweat your ass off on unproductive tasks to then get out and be struck by jobs that ask for knowledge you hadn't even heard off.
Remember those nights you wasted drawing ER diagrams while that other shmuck followed tutorials on react? Well he's your boss now, but don't worry you will wear your tired eyes, caffeine saturated breath and overweight with pride while holding your empty title, don't get me wrong I've indulged in some rough play too but I have noticed that 3 months giving a project my heart and soul teaches me more than 6 months of painstakingly pleasing professors with big egos.
And the soon to be graduates, my God...you have the ones that are there for the lulz, the nerds that beat their ass off to sustain a scholarship they'll have to pay back with interests and the ones that just hope for the best. The last two of the list are the ones I really feel bad for, the nerds will beat themselves over and over to comply with teacher demands not noticing they are about to graduate still versioning on .zip and drive, the latter feel something's wrong but they have no chances if there isn't a teacher to mentor them.
And what pisses me off even more is the typical answers to these issues "you NEED the title" and "you need to be self taught". First of all bitch how many times have we heard, seen and experienced the rejection for being overqualified? The market is saturated with titles, so much so they have become meaningless, IT companies now hire on an experience, economical and likeability basis. Worse, you tell me I need to be self taught, fucker I've been self taught for years why would I travel 10km a day for you to give me 0 new insights, slacking in my face or do what my dog does when I program (stare at me) and that's just on the days you decide to attend!
But not everything is bad, college does give you three things: networking, some good teachers and expensive dead tree remnants, is it worth the price tag, not really, not if you don't need it.
My broken family is not one of resources and even tho I had an 80% scholarship at the second best uni of my country I decided I didn't need the 10+ year debt for not sleeping 4 years, I decided to go to the 3rd in the list which is state funded; as for that decision it worked out as I'm paying most of everything now and through my BS I've noticed all of the above, I've visited 4 universities in my country and 4 abroad and even tho they have better everything abroad it still doesn't justify some of the prices.
If you don't feel like I do and you are happy, I'm happy for you. My rant is about my personal experience which is kind of in the context of IT higher education in the last ~8 years.
Just letting some steam off and not regretting most of my decisions.15 -
One thing that pisses every dev off I know!
Project Managers who think making any changes takes 30 seconds.
"No Susan, changing the site isn't as simple as changing your f**king Facebook status!!"6 -
Me passing time on the weekend
Random call from unknown number
Turns out it's the manager
M: hey , how is your weekend going ...
Me: nothing much ... Whatsup ?
M : yeah well , we wanted to push some minor adhoc fixes as some clients wanted it urgently
The Devops folks need developer support . Can you pitch in and monitor
Me : I'm not aware of what changes are going , i don't think i can provide support
M : don't worry it's minor changes , it's already tested in pre prod , you just need to be on call for 30 mins
Me : ugh okay .. guess 1 hr won't hurt
M: thanks 👍🏽
Me: *logs in
*Notices the last merged PR
+ 400 lines , implemented by junior dev and merged by manager
*Wait , how is this a *minor* release...
*Release got triggered already and the CI CD pipeline is in progress
*5 mins later
*Pipeline fails , devops sends email - test coverage below 50%
Manager immediately pitches in ...
M: hey , i see test coverage is down , can you increase it ?
Me: and how do u suppose I do that ?
M : well it's simple just write UTC for the missing lines ... Will it take time ?
Me : * ah shit here we go again
Yeah it will take time , there are around 400 lines , I am not aware of this component all together
Can you ask junior dev to pitch in and write the UTC for this
*Actually junior dev is out on a vacation with his girlfriend
M : well he's out for the weekend , but
as a senior dev , i expect you to have holistic understanding of the codebase and not give excuses ,
this is a priority fix which client are demanding we need this released ASAP
Me : * wait wat ?
---
I ended up being online for next 3 hours figuring out the code change and bumping up the UTC 🤦🏾9 -
Client: "Need to have an urgent meeting on some major changes" .
Me:"Travels half way across city"
Client : Explains how the heading of a page should be in blue as it would be more aesthetic.
FML.
How many meetings have you had that would have just sufficed with a simple email ?4 -
Alright so listen to this. I was working on a project, it was a fork of another github repo. So the project is mainly based in PHP, simple enough right?
Anyways I have my version working and I put it up as a website and am doing fairly well with it. I was trying to advertise it a bit on reddit ( pay attention to the trying ) then someone comes along and asks how I made it and all that.
Just trying to be kind I tell them what I used and all that to make it. Then they come back a few hours later explaining that they are trying to make their own version for "fun". Then they proceed to explain that they are having some issues with it, it obviously is something in the back-end (they must've fucked up something).
So I politely ask them to show me the code so I can help them fix it.
He refuses.
So we exchanged a bit. What his excuse for not showing me his code ( Keep in mind he is also taking this from an open-source software same as me he has simply broken something and can't fix it himself ) is he doesn't want me stealing his ideas...
I nearly snapped when he did that, I had already seen the site he made, from that end it wasn't anymore spectacular than mine and no serious changes seemed to have occurred. The best part is that it was broken. He asked for my help and refused to let me see the code so I told him that I simply couldn't help him fix it then. He goes and is just going alright.
Next he then asks me how I solved this issue and that issue and he wanted the code that I used to fix each of these little issues. Pretty much to the point that it would've been a clone of my site. So I just didn't give him anything.
Didn't hear from him for a few hours, next thing I know he messages me asking if he can fix my site so it is mobile friendly...First off my site is mobile friendly and works pretty well. I have been spending a lot more quality time to work on this than him.
Moral of the story is, some people are retards.4 -
I was getting a freelancer job to do some backend work for a company in India that is working for a huge company in Saudi Arabia.
The customer in india was my primary contact, I wasn't allowed to talk to the guys in Saudi Arabia. My contact, we'll call him Aman, asks if i can do frontend too. I decline. Now what follows were 4 weeks of backend work during which Aman called me 10-15 times per day via skype to ask me how I was progressing, and if "insert spec here" was already done. He even called me in the middle of the night, well aware of the different time zones.
But in the end all the work is done, Aman is happy. I request payment.
Aman: We can't pay you yet, you didn't do the frontend!
Me: I'm not doing frontend.
Aman: It's just a few simple changes and then we're done.
Me: Gnnn, fuck it, what do you need?
Aman: Our customer would like the frontend to look better.
Me: Ok, so what exactly should look better?
Aman: All of it.
Me: Do you have any specs?
Aman: No just make it look more modern.
Me: So you want me to rework the whole frontend? That's not just a few simple changes...
Aman: How long would you need?
Me: I actually don't do that kind of work.
Aman: We pay you double your hourly rate if you do this and finish it fast.
(This is were I should have just said no... but the greed...)
Me: Ok, but it will take me about 3 weeks to do that.
Aman: OK.
Me: Do you have any preferences as to how it should look?
Aman: No, just surprise us.
(After this sentence I really should have gotten the hell out of Dodge)
After working 3 weeks changing over 20.000 lines of CSS and most of the HTML I present Aman with the changes.
Aman: No our customer doesn't like the changes. Can you make a different version?
Me: What doesn't he like, any specifics, coloring, styling of lists or the buttons?
Aman: He doesn't like the whole thing. Please make us another version.
Me: Ok, you are the customer, but it would really help if you give me some pointers as to how it should look like.
Aman: Just do your best.
Me: ..., ok, that's helpful.
2 weeks later...
Aman: No our customer liked the version before better. But could you make it look more modern.
Me: *Bangs head against wall repeatedly*
Me: What do you mean by modern?
Aman: It should look more modern, as a whole.
Me: Ok, I get that, but could you give me an example?
Aman: Sends me a screenshot of the overview screen with all the elements encircled and modern written beside them.
1 week later...
Aman: The customer has decided, he likes the original version best. Can you undo all the changes?
Me: Sure but that'll take like 1 hour.
Aman: Oh by the way we were asked by accounting why the price for this project was so high?
Me: *hugh* *gnn* what?
Aman: Well at the beginning, you estimated the backend and frontend work to be done in 4 weeks.
Me: The frontend was never part of the original estimate.
Aman: Can you do anything concerning your hourly rate, so that we can get back to the original pricing.
Me: *make a mental note to never work with an intermediary company in india again and cancels the job requesting the due payment*
Luckily I got paid the full amount but not before having another 10 Skype call with Aman...17 -
I've been away, lurking at the shadows (aka too lazy to actually log in) but a post from a new member intrigued me; this is dedicated to @devAstated . It is erratic, and VERY boring.
When I resigned from the Navy, I got a flood of questions from EVERY direction, from the lower rank personnel and the higher ups (for some reason, the higher-ups were very interested on what the resignation procedure was...). A very common question was, of course, why I resigned. This requires a bit of explaining (I'll be quick, I promise):
In my country, being in the Navy (or any public sector) means you have a VERY stable job position; you can't be fired unless you do a colossal fuck-up. Reduced to non-existent productivity? No problem. This was one of the reasons for my resignation, actually.
However, this is also used as a deterrent to keep you in, this fear of lack of stability and certainty. And this is the reason why so many asked me why I left, and what was I going to do, how was I going to be sure about my job security.
I have a simple system. It can be abused, but if you are careful, it may do you and your sanity good.
It all begins with your worth, as an employee (I assume you want to go this way, for now). Your worth is determined by the supply of your produced work, versus the demand for it. I work as a network and security engineer. While network engineers are somewhat more common, security engineers are kind of a rarity, and the "network AND security engineer" thing combined those two paths. This makes the supply of my work (network and security work from the same employee) quite limited, but the demand, to my surprise, is actually high.
Of course, this is not something easy to achieve, to be in the superior bargaining position - usually it requires great effort and many, many sleepless nights. Anyway....
Finding a field that has more demand than there is supply is just one part of the equation. You must also keep up with everything (especially with the tech industry, that changes with every second). The same rules apply when deciding on how to develop your skills: develop skills that are in short supply, but high demand. Usually, such skills tend to be very difficult to learn and master, hence the short supply.
You probably got asleep by now.... WAKE UP THIS IS IMPORTANT!
Now, to job security: if you produce, say, 1000$ of work, then know this:
YOU WILL BE PAID LESS THAN THAT. That is how the company makes profit. However, to maximize YOUR profit, and to have a measure of job security, you have to make sure that the value of your produced work is high. This is done by:
- Producing more work by working harder (hard method)
- Producing more work by working smarter (smart method)
- Making your work more valuable by acquiring high demand - low supply skills (economics method)
The hard method is the simplest, but also the most precarious - I'd advise the other two. Now, if you manage to produce, say, 3000$ worth of work, you can demand for 2000$ (numbers are random).
And here is the thing: any serious company wants employees that produce much more than they cost. The company will strive to pay them with as low a salary as it can get away with - after all, a company seeks to maximize its profit. However, if you have high demand - low supply skills, which means that you are more expensive to be replaced than you are to be paid, then guess what? You have unlocked god mode: the company needs you more than you need the company. Don't get me wrong: this is not an excuse to be unprofessional or unreasonable. However, you can look your boss in the eye. Believe me, most people out there can't.
Even if your company fails, an employee with valuable skills that brings profit tends to be snatched very quickly. If a company fires profitable employees, unless it hires more profitable employees to replace them, it has entered the spiral of death and will go bankrupt with mathematical certainty. Also, said fired employees tend to be absorbed quickly; after all, they bring profit, and companies are all about making the most profit.
It was a long post, and somewhat incoherent - the coffee buzz is almost gone, and the coffee crash is almost upon me. I'd like to hear the insight of the veterans; I estimate that it will be beneficial for the people that start out in this industry.2 -
Manager: "Can we get an accurate report on how many containers we have on the Kubernetes cluster?"
Me: "Well not really since Kubernetes is designed to be dynamic and agile with the number of resources and containers being created and deleted being subject to change at a moment's notice."
Manager: "I want numbers"
Me: "Okay well if we look at a simple moving average over time, we can see how the number of containers changes and then grab a rough answer from that"
Manager: "These numbers look a little round, are you sure these are exact?"
I'm going to throw myself into a pile of used heroin needles and hope i get stuck with whatever the hell this guy has to somehow be a manager while also being this retarded.15 -
We have a pretty simple rule in our team:
Do not deploy to production on Friday.
Well thanks to the client being very slow to reply to me, they only signed off on launching the app at 15:30 on Friday, for a big campaign the app was built to facilitate starting Saturday.
Guess who had to bite the bullet and launch a new app into production at 15:30 on Friday.
Guess who got a text from his boss at 19:30 that there was a critical change required tonight.
Guess who was making code changes and deploying to production at 21:15 on Friday night while drinking Gin and tonic...
Nb This was a project only i was assigned to and came in as a rush job at the last minute.9 -
Client: I want to change the wording on the page. If I inspect element I find the word I want to change, but it won’t let me change it. How can I change it please? I am very disappointed this is not working. What is the point in you developing all this if I cannot save changes to my website. Please fix this ASAP.
MFW they think updating a website is just as simple as using element inspector in chrome because they have seen me use it to quickly mock up some css changes.5 -
I am much too tired to go into details, probably because I left the office at 11:15pm, but I finally finished a feature. It doesn't even sound like a particularly large or complicated feature. It sounds like a simple, 1-2 day feature until you look at it closely.
It took me an entire fucking week. and all the while I was coaching a junior dev who had just picked up Rails and was building something very similar.
It's the model, controller, and UI for creating a parent object along with 0-n child objects, with default children suggestions, a fancy ui including the ability to dynamically add/remove children via buttons. and have the entire happy family save nicely and atomically on the backend. Plus a detailed-but-simple listing for non-technicals including some absolutely nontrivial css acrobatics.
After getting about 90% of everything built and working and beautiful, I learned that Rails does quite a bit of this for you, through `accepts_nested_params_for :collection`. But that requires very specific form input namespacing, and building that out correctly is flipping difficult. It's not like I could find good examples anywhere, either. I looked for hours. I finally found a rails tutorial vide linked from a comment on a SO answer from five years ago, and mashed its oversimplified and dated examples with the newer documentation, and worked around the issues that of course arose from that disasterous paring.
like.
I needed to store a template of the child object markup somewhere, yeah? The video had me trying to store all of the markup in a `data-fields=" "` attrib. wth? I tried storing it as a string and injecting it into javascript, but that didn't work either. parsing errors! yay! good job, you two.
So I ended up storing the markup (rendered from a rails partial) in an html comment of all things, and pulling the markup out of the comment and gsubbing its IDs on document load. This has the annoying effect of preventing me from using html comments in that partial (not that i really use them anyway, but.)
Just.
Every step of the way on building this was another mountain climb.
* singular vs plural naming and routing, and named routes. and dealing with issues arising from existing incorrect pluralization.
* reverse polymorphic relation (child -> x parent)
* The testing suite is incompatible with the new rails6. There is no fix. None. I checked. Nope. Not happening.
* Rails6 randomly and constantly crashes and/or caches random things (including arbitrary code changes) in development mode (and only development mode) when working with multiple databases.
* nested form builders
* styling a fucking checkbox
* Making that checkbox (rather, its label and container div) into a sexy animated slider
* passing data and locals to and between partials
* misleading documentation
* building the partials to be self-contained and reusable
* coercing form builders into namespacing nested html inputs the way Rails expects
* input namespacing redux, now with nested form builders too!
* Figuring out how to generate markup for an empty child when I'm no longer rendering the children myself
* Figuring out where the fuck to put the blank child template markup so it's accessible, has the right namespacing, and is not submitted with everything else
* Figuring out how the fuck to read an html comment with JS
* nested strong params
* nested strong params
* nested fucking strong params
* caching parsed children's data on parent when the whole thing is bloody atomic.
* Converting datetimes from/to milliseconds on save/load
* CSS and bootstrap collisions
* CSS and bootstrap stupidity
* Reinventing the entire multi-child / nested params / atomic creating/updating/deleting feature on my own before discovering Rails can do that for you.
Just.
I am so glad it's working.
I don't even feel relieved. I just feel exhausted.
But it's done.
finally.
and it's done well. It's all self-contained and reusable, it's easy to read, has separate styling and reusable partials, etc. It's a two line copy/paste drop-in for any other model that needs it. Two lines and it just works, and even tells you if you screwed up.
I'm incredibly proud of everything that went into this.
But mostly I'm just incredibly tired.
Time for some well-deserved sleep.7 -
Discovered this awesome community some months ago, and I've finally decided to make an account :D
Guess I should write a rant now.
We were initially a team of 2 to do a 'simple' app with AngularJS, NodeJS and Kendo UI in 2 months.
We had some problems with it, mainly because I'm 'in charge' of a big Java web application filled with legacy code and in process of a 'big change that was planned to be deployed for all users yesterday', and my coworker (also the project analyst) was still learning how Node and Angular work. And I'm not going to lie, I'm still learning new things everyday.
Situation 1 month after our start: coworker fired (due to offtopic reasons), replaced by a younger girl, and me still doing changes in the Java webapp.
Thank god I work better when under big pressure :p2 -
I wrote a prototype for a program to do some basic data cleaning tasks in Go. The idea is to just distribute the files with the executable on our shared network to our team (since it is small enough, no github bullshit needed for this) and they can go from there.
Felt experimental, so I decided to try out F# since I have always been interested with it and for some reason Microsoft adopted it into their core net framework.
I shit you not, from 185 lines of Go code, separated into proper modules etc not to mention the additional packages I downloaded (simple things for CSV reading bla bla)
To fucking 30 lines of F# that could probably be condensed more if I knew how to do PROPER functional programming. The actual code is very much procedural with very basic functional composition, so it could probably be even less, just more "dense"
I am amazed really. I do not like that namespace pollution happens all over F# since importing System.IO gives you a bunch of shit that you wouldn't know where it is coming from unless you fuck enough with Ionide and the docs. But man.....
No need for dotnet run to test this bitch, just highlight it on the IDE, alt enter and WHAM you have the repl in front of you, incremental quasi like Lisp changes on the code can be REPL changed this way, plethora of .NET BCL wonders in it, and a single point of documentation as long as you stay in standard .net
I am amazed and in love, plus finding what I wanted to do was a fucking cakewalk.
Downside: I work in a place in which Python is seen as magic and PHP, VB.NEt and C# is the end all be all of languages. If me goes away or dies there will be no one else in this side of the state to fuck with F#
This language needs to be studied more. Shit can be so compact, but I do feel that one needs to really know enough of functional programming to be good at it. It is really not a pure language like Haskell (then again, haskell is the only "mainstream" pure functional language ain't it not?) but still, shit is really nice and I really dig what Microhard is doing in terms of the .net framework.
Will provide later findings. My entire team is on the Microsoft space, we do have Linux servers, but porting the code to generate the necessary executables for those servers if needed should be a walk in the park. I am just really intrigued by how many lines of code I was able to cut down from the Go application.
Please note that this could also mean that I am a shit Golang dev, but the cut down of nil err checkings do come somewhere.9 -
Tl;dr; even password as simple as 123! Could be too dificult to use for unauth access. Even if you write it down for someone! Some minor HID config changes could be unbeatable for some people.
I always leave my lappy at the office and I leave it turned on and connected so I could connect to it from home if I really need to. The holiday is not an exception. I left it connected too.
Forba few weeks I was trying to connect to it from home to doublecheck xpra command I was using. Without any luck. The lappy was unreachable all this time :/
today some people came in the office. I reached out to one of them I trust the most to check on my lappy. And he says it's charger is unplugged. Fucking janitors...
I ask to plug it back in and turn it on. LUKS password prompt pops up. I send him the pw via sms along with a note that I'm using non-EN kbd layout. He confirms he'll manage.
20 minutes later he pings me "are you sure the pw is correct?". Yes it is! 5 more minutes later he pings me "... Is this how you type numbers and symbols with your layout?" nope, it's the other way around!
10 more minutes later he plugs in his own kbd, still fails. Sets up my layout in his lappy, spends a few minutes using it, plugs it back to my lappy and FINALLY enters the pw correctly.
Come on dude.. 😁2 -
So I've decided to go about converting a Java project that I've been working on to Kotlin a little bit at a time. I started out with basic entity classes converting them to simple `data class`es in Kotlin.
Eventually, I got to my first beast of a class to refactor. This class had over 40 service classes depending on it, so even a little hiccup would throw everything into chaos.
I finish all of the changes on all of the dependent classes, update the tests, and the configurations (as necessary), and I was finally ready to spin up the app to test for any breaking changes I may have introduced...
Well - I broke everything! But I was sure I couldn't have! So what the hell happened?
Turns out that as I was building my project with a Gradle watch, at one point something failed to compile, which threw an unhandled exception in the gradle daemon that was never reported.
So when I tried to run my app, gradle would continually re-throw the error in the app I asked it to run...
After turning the daemon off and on again, the app worked like a charm.10 -
!rant;
I'm so sad today. I completely lost my confidences in what I do. I recently I created an app , spent 72 hours doing that , made the app as simple as possible, The intention is clear , to help those who are in need during this pandemic.
Recently my country have the campaign (initiate by the people) raising white flags for help (food, financial help). Since our government begin to arrest those who raise their flag for help and summoned them for MYR 3000 .
So I thought making a platform where people can raise their flag digitally might be easy, but I go rejected .
Well in Malaysia, No one give a fuck about you unless you are a celebrity . Sometimes I wish I am , therefore I do changes. But unfortunately I am just a 25 year old self taught software engineer but not someone with PHD or fame .
Fuck me.8 -
Refactored an authentication library a while back and teams are now getting around to updating their nuget packages.
It is a breaking change, but a simple one. The constructor takes a connection string, application name, and user name.
A dev messages me yesterday saying ...
Tom: "I made the required changes, but I'm getting a null reference exception when I try to use the authorization manager"
Odd because the changes have been in production for months in other apps, so I asked him to send me a screen shot of how he was using the class (see attached image below).
Me: "Send me a screenshot of how you are using the class"
<I look at what he sent>
Me: "Do you really not see the problem why it is not working?"
<about 10 minutes later>
Tom: "Do I need to pass a real connection string? The parameter hint didn't say exactly what I should pass."
<not true, but I wasn't going to embarrass him any more>
<5 minutes later>
Tom: "The authorization still isn't working"
Me: "Do you still have 'UserName' instead of the actual user name?"
<few minutes later>
Tom: "Authorization is working perfect, thanks!"
A little while later my manager messages me..
B:"I'm getting reports from managers that developers are having a lot of problems with the changes to the authorization nuget package. Were these changes tested? Can you work with the teams to get these issues resolved as soon as possible? I want this to be your top priority today."
Me: "It was Tom"
B: "Never mind."11 -
Allright, this one begs for a rant.
Me (Linux boi):
0 checkout code
1 update local config file
2 compile
3 deploy locally
4 run
5 use
Coleague (Windows boi):
0 checkout code
1 update local config file
2 compile
3 deploy locally
4 run
-1 "configuration xyz not found in config file"
→ goto #3
After 4 attempts:
ø windows.reboot()
3 deploy locally
4 run
-1 "configuration xyz not found in config file"
3 deploy locally
4 run
5 use
// out of curiosity...
3 deploy locally
4 run
-1 "configuration xyz not found in config file"
NO side actions taken (no configs updated, no code changes made, no nothing. Just simple double-clicking the redeploy script again and again)
Now... How do you objectively explain THAT?
http://weknowmemes.com/2013/01/... IRL :)8 -
I was supporting a legacy CRM app which front end used Visual Basic 6 and almost the entire business logic was written on SQL store procedures.
A "feature" of the product was the open code, anyone with admin access could modify forms, code and store procedures.
We also sold "official" (and expensive) consulting services to modify the code.
A long time customer owned this thing and it was heavily customized. They had hired us to change something, hired a third party to make other changes and decided to modify some stuff themselves because, why not?
Suddenly they came to product support asking to fix a bug. The problem happened on a non customized form.
After reviewing, I realized the form used several of the modified store procedures in the business layer. I tried saying we don't support custom code but my boss was being pushed and said "look into it"
All 3 parties denied responsibility and said their changes were NOT the problem (of course). Neither of them commented or documented their changes.
The customer started to threaten to sue us.
I spent 5 full days following every field on the form through the nested and recurrent SQL store procedures and turns out it was a very simple error. A failed insert statement.
I was puzzled of why the thing didn't throw any error even while debugging. Turns out in SQL 2003 (this was a while ago) someone used a print line statement and SQL stopped throwing errors to the console. I can only assume "printing" in SQL empties the buffered error which would be shown in the console.
I removed the print statement and the error showed up, we fixed it and didn't get sued
:)4 -
OMFG I don't even know where to start..
Probably should start with last week (as this is the first time I had to deal with this problem directly)..
Also please note that all packages, procedure/function names, tables etc have fictional names, so every similarity between this story and reality is just a coincidence!!
Here it goes..
Lat week we implemented a new feature for the customer on production, everything was working fine.. After a day or two, the customer notices the audit logs are not complete aka missing user_id or have the wrong user_id inserted.
Hm.. ok.. I check logs (disk + database).. WTF, parameters are being sent in as they should, meaning they are there, so no idea what is with the missing ids.
OK, logs look fine, but I notice user_id have some weird values (I already memorized most frequent users and their ids). So I go check what is happening in the code, as the procedures/functions are called ok.
Wow, boy was I surprised.. many many times..
In the code, we actually check for user in this apps db or in case of using SSO (which we were) in the main db schema..
The user gets returned & logged ok, but that is it. Used only for authentication. When sending stuff to the db to log, old user Id is used, meaning that ofc userid was missing or wrong.
Anyhow, I fix that crap, take care of some other audit logs, so that proper user id was sent in. Test locally, cool. Works. Update customer's test servers. Works. Cool..
I still notice something off.. even though I fixed the audit_dbtable_2, audit_dbtable_1 still doesn't show proper user ids.. This was last week. I left it as is, as I had more urgent tasks waiting for me..
Anyhow, now it came the time for this fuckup to be fixed. Ok, I think to myself I can do this with a bit more hacking, but it leaves the original database and all other apps as is, so they won't break.
I crate another pck for api alone copy the calls, add user_id as param and from that on, I call other standard functions like usual, just leave out the user_id I am now explicitly sending with every call.
Ok this might work.
I prepare package, add user_id param to the calls.. great, time to test this code and my knowledge..
I made changes for api to incude the current user id (+ log it in the disk logs + audit_dbtable_1), test it, and check db..
Disk logs fine, debugging fine (user_id has proper value) but audit_dbtable_1 still userid = 0.
WTF?! I go check the code, where I forgot to include user id.. noup, it's all there. OK, I go check the logging, maybe I fucked up some parameters on db level. Nope, user is there in the friggin description ON THE SAME FUCKING TABLE!!
Just not in the column user_id...
WTF..Ok, cig break to let me think..
I come back and check the original auditing procedure on the db.. It is usually used/called with null as the user id. OK, I have replaced those with actual user ids I sent in the procedures/functions. Recheck every call!! TWICE!! Great.. no fuckups. Let's test it again!
OFC nothing changes, value in the db is still 0. WTF?! HOW!?
So I open the auditing pck, to look the insides of that bloody procedure.. WHAT THE ACTUAL FUCK?!
Instead of logging the p_user_sth_sth that is sent to that procedure, it just inserts the variable declared in the main package..
WHAT THE ACTUAL FUCK?! Did the 'new guy' made changes to this because he couldn't figure out what is wrong?! Nope, not him. I asked the CEO if he knows anything.. Noup.. I checked all customers dbs (different customers).. ALL HAD THIS HARDOCED IN!!! FORM THE FREAKING YEAR 2016!!! O.o
Unfuckin believable.. How did this ever work?!
Looks like at the begining, someone tried to implement this, but gave up mid implementation.. Decided it is enough to log current user id into BLABLA variable on some pck..
Which might have been ok 10+ years ago, but not today, not when you use connection pooling.. FFS!!
So yeah, I found easter eggs from years ago.. Almost went crazy when trying to figure out where I fucked this up. It was such a plan, simple, straight-forward solution to auditing..
If only the original procedure was working as it should.. bloddy hell!!8 -
Best code performance incr. I made?
Many, many years ago our scaling strategy was to throw hardware at performance problems. Hardware consisted of dedicated web server and backing SQL server box, so each site instance had two servers (and data replication processes in place)
Two servers turned into 4, 4 to 8, 8 to around 16 (don't remember exactly what we ended up with). With Window's server and SQL Server licenses getting into the hundreds of thousands of dollars, the 'powers-that-be' were becoming very concerned with our IT budget. With our IT-VP and other web mgrs being hardware-centric, they simply shrugged and told the company that's just the way it is.
Taking it upon myself, started looking into utilizing web services, caching data (Microsoft's Velocity at the time), and a service that returned product data, the bottleneck for most of the performance issues. Description, price, simple stuff. Testing the scaling with our dev environment, single web server and single backing sql server, the service was able to handle 10x the traffic with much better performance.
Since the majority of the IT mgmt were hardware centric, they blew off the results saying my tests were contrived and my solution wouldn't work in 'the real world'. Not 100% wrong, I had no idea what would happen when real traffic would hit the site.
With our other hardware guys concerned the web hardware budget was tearing into everything else, they helped convince the 'powers-that-be' to give my idea a shot.
Fast forward a couple of months (lots of web code changes), early one morning we started slowly turning on the new framework (3 load balanced web service servers, 3 web servers, one sql server). 5 minutes...no issues, 10 minutes...no issues,an hour...everything is looking great. Then (A is a network admin)...
A: "Umm...guys...hardly any of the other web servers are being hit. The new servers are handling almost 100% of the traffic."
VP: "That can't be right. Something must be wrong with the load balancers. Rollback!"
A:"No, everything is fine. Load balancer is working and the performance spikes are coming from the old servers, not the new ones. Wow!, this is awesome!"
<Web manager 'Stacey'>
Stacey: "We probably still need to rollback. We'll need to do a full analysis to why the performance improved and apply it the current hardware setup."
A: "Page load times are now under 100 milliseconds from almost 3 seconds. Lets not rollback and see what happens."
Stacey:"I don't know, customers aren't used to such fast load times. They'll think something is wrong and go to a competitor. Rollback."
VP: "Agreed. We don't why this so fast. We'll need to replicate what is going on to the current architecture. Good try guys."
<later that day>
VP: "We've received hundreds of emails complementing us on the web site performance this morning and upset that the site suddenly slowed down again. CEO got wind of these emails and instructed us to move forward with the new framework."
After full implementation, we were able to scale back to only a few web servers and a single sql server, saving an initial $300,000 and a potential future savings of over $500,000. Budget analysis considering other factors, over the next 7 years, this would save the company over a million dollars.
At the semi-annual company wide meeting, our VP made a speech.
VP: "I'd like to thank everyone for this hard fought journey to get our web site up to industry standards for the benefit of our customers and stakeholders. Most of all, I'd like to thank Stacey for all her effort in designing and implementation of the scaling solution. Great job Stacy!"
<hands her a blank white envelope, hmmm...wonder what was in it?>
A few devs who sat in front of me turn around, network guys to the right, all look at me with puzzled looks with one mouth-ing "WTF?"9 -
> Worst work culture you've experienced?
It's a tie between my first to employers.
First: A career's dead end.
Bosses hardly ever said the truth, suger-coated everything and told you just about anything to get what they wanted. E.g. a coworker of mine was sent on a business trip to another company. They had told him this is his big chance! He'd attend a project kick-off meeting, maybe become its lead permanently. When he got there, the other company was like "So you're the temporary first-level supporter? Great! Here's your headset".
And well, devs were worth nothing anyway. For every dev there were 2-3 "consultants" that wrote detailed specifications, including SQL statements and pseudocode. The dev's job was just to translate that to working code. Except for the two highest senior devs, who had perfect job security. They had cooked up a custom Ant-based build system, had forked several high-profile Java projects (e.g. Hibernate) and their code was purposely cryptic and convoluted.
You had no chance to make changes to their projects without involuntarily breaking half of it. And then you'd have to beg for a bit of their time. And doing something they didn't like? Forget it. After I suggested to introduce automated testing I was treated like a heretic. Well of course, that would have threatened their job security. Even managers had no power against them. If these two would quit half a dozen projects would simply be dead.
And finally, the pecking order. Juniors, like me back then, didn't get taught shit. We were just there for the work the seniors didn't want to do. When one of the senior devs had implemented a patch on the master branch, it was the junior's job to apply it to the other branches.
Second: A massive sweatshop, almost like a real-life caricature.
It was a big corporation. Managers acted like kings, always taking the best for themselves while leaving crumbs for the plebs (=devs, operators, etc). They had the spacious single offices, we had the open plan (so awesome for communication and teamwork! synergy effects!). When they got bored, they left meetings just like that. We... well don't even think about being late.
And of course most managers followed the "kiss up, kick down" principle. Boy, was I getting kicked because I dared to question a decision of my boss. He made my life so hard I got sick for a month, being close to burnout. The best part? I gave notice a month later, and _he_still_was_surprised_!
Plebs weren't allowed anything below perfection, bosses on the other hand... so, I got yelled at by some manager. Twice. For essentially nothing, things just bruised his fragile ego. My bosses response? "Oh he's just human". No, the plebs was expected to obey the powers that be. Something you didn't like? That just means your attitude needs adjustment. Like with the open plan offices: I criticized the noise and distraction. Well that's just my _opinion_, right? Anyone else is happily enjoying it! Why can't I just be like the others? And most people really had given up, working like on a production line.
The company itself, while big, was a big ball of small, isolated groups, sticking together by office politics. In your software you'd need to call a service made by a different team, sooner or later. Not documented, noone was ever willing to help. To actually get help, you needed to get your boss to talk to their boss. Then you'd have a chance at all.
Oh, and the red tape. Say you needed a simple cable. You know, like those for $2 on Amazon. You'd open a support ticket and a week later everyone involved had signed it off. Probably. Like your boss, the support's boss, the internal IT services' boss, and maybe some other poor sap who felt important. Or maybe not, because the justification for needing that cable wasn't specific enough. I mean, just imagine the potential damage if our employees owned a cable they shouldn't!
You know, after these two employers I actually needed therapy. Looking back now, hooooly shit... that's why I can't repeat often enough that we devs put up with way too much bullshit.3 -
I was asked to look into a site I haven't actively developed since about 3-4 years. It should be a simple side-gig.
I was told this site has been actively developed by the person who came after me, and this person had a few other people help out as well.
The most daunting task in my head was to go through their changes and see why stuff is broken (I was told functionality had been removed, things were changed for the worse, etc etc).
I ssh into the machine and it works. For SOME reason I still have access, which is a good thing since there's literally nobody to ask for access at the moment.
I cd into the project, do a git remote get-url origin to see if they've changed the repo location. Doesn't work. There is no origin. It's "upstream" now. Ok, no biggie. git remote get-url upstream. Repo is still there. Good.
Just to check, see if there's anything untracked with git status. Nothing. Good.
What was the last thing that was worked on? git log --all --decorate --oneline --graph. Wait... Something about the commit message seems familiar. git log. .... This is *my* last commit message. The hell?
I open the repo in the browser, login with some credentials my browser had saved (again, good because I have no clue about the password). Repo hasn't gotten a commit since mine. That can't be right.
Check branches. Oh....Like a dozen new branches. Lots of commits with text that is really not helpful at all. Looks like they were trying to set up a pipeline and testing it out over and over again.
A lot of other changes including the deletion of a database config and schema changes. 0 tests. Doesn't seem like these changes were ever in production.
...
At least I don't have to rack my head trying to understand someone else's code but.... I might just have to throw everything that was done into the garbage. I'm not gonna be the one to push all these changes I don't know about to prod and see what breaks and what doesn't break
.
I feel bad for whoever worked on the codebase after me, because all their changes are now just a waste of time and space that will never be used.3 -
Been working with Git every day for the last 3 years and never had a problem with it.
Enters Windows.Stash changes, tries a simple stash apply:
error: cannot stat *file_name*: Permission denied
Please tell me you are fucking kidding me.. I did not just fucking lose all that work..
:q life5 -
I fucking hate it when customer changes things in the last minute.
"It's a small change", they say. "It shouldn't take you too long", they say.
You know what? Fuck you.6 -
I AM TIRED
warning: this rant is going to be full of negativity , CAPS, and cursing.
People always think and they always write that programming is an analytical profession. IF YOU CANNOT THINK IN AN ANALYTICAL WAY THIS JOB IS NOT FOR YOU! But the reality could not be farther from the truth.
A LOT of people in this field whether they're technical people or otherwise, just lack any kind of reasoning or "ANALYTICAL" thinking skills. If anything, a lot of of them are delusional and/or they just care about looking COOL. "Because programming is like getting paid to solve puzzles" *insert stupid retarded laugh here*.
A lot of devs out there just read a book or two and read a Medium article by another wannabe, now think they're hot shit. They know what they're doing. They're the gods of "clean" and "modular" design and all companies should be in AWE of their skills paralleled only by those of deities!
Everyone out there and their Neanderthal ancestor from start-up founders to developers think they're the next Google/Amazon/Facebook/*insert fancy shitty tech company*.
Founder? THEY WANT TO MOVE FAST AND GET TO MARKET FAST WITH STUPID DEADLINES! even if it's not necessary. Why? BECAUSE YOU INFERIOR DEVELOPER HAVE NOT READ THE STUPID HOT PILE OF GARBAGE I READ ONLINE BY THE POEPLE I BLINDLY COPY! "IF YOU'RE NOT EMBARRASSED BY THE FIRST VERSION OF YOU APP, YOU DID SOMETHING WRONG" - someone at Amazon.
Well you delusional brainless piece of stupidity, YOU ARE NOT AMAZON. THE FIRST VERSION THAT THIS AMAZON FOUNDER IS EMBARRASSED ABOUT IS WHAT YOU JERK OFF TO AT NIGHT! IT IS WHAT YOU DREAM ABOUT HAVING!
And oh let's not forget the tech stacks that make absolutely no fucking sense and are just a pile of glue and abstraction levels on top of abstraction levels that are being used everywhere. Why? BECAUSE GOOGLE DOES IT THAT WAY DUH!! And when Google (or any other fancy shit company) changes it, the old shitty tech stack that by some miracle you got to work and everyone is writing in, is now all of a sudden OBSOLETE! IT IS OLD. NO ONE IS WRITING SHIT IN THAT ANYMORE!
And oh my god do I get a PTSD every time I hear a stupid fucker saying shit like "clean architecture" "clean shit" "best practice". Because I have yet to see someone whose sentences HAVE TO HAVE one of these words in them, that actually writes anything decent. They say this shit because of some garbage article they read online and in reality when you look at their code it is hot heap of horseshit after eating something rancid. NOTHING IS CLEAN ABOUT IT. NOTHING IS DONE RIGHT. AND OH GOD IF THAT PERSON WAS YOUR TECH MANAGER AND YOU HAVE TO LISTEN TO THEM RUNNING THEIR SHITHOLE ABOUT HOW YOUR SIMPLE CODE IS "NOT CLEAN". And when you think that there might be a valid reason to why they're doing things that way, you get an answer of someone in an interview who's been asked about something they don't know, but they're trying to BS their way to sounding smart and knowledgable. 0 logic 0 reason 0 brain.
Let me give you a couple of examples from my unfortunate encounters in the land of the delusional.
I was working at this start up which is fairly successful and there was this guy responsible for developing the front-end of their website using ReactJS and they're using Redux (WHOSE SOLE PURPOSE IS TO ELIMINATE PASSING ATTRIBUTES FOR THE PURPOSE OF PASSING THEM DOWN THE COMPONENT HIERARCHY AGIAN). This guy kept ranting about their quality and their shit every single time we had a conversation about the code while I was getting to know everything. Also keep in mind he was the one who decided to use Redux. Low and behold there was this component which has THIRTY MOTHERFUCKING SEVEN PROPERTIES WHOSE SOLE PURPOSE IS BE PASSED DOWN AGAIN LIKE 3 TO 4 TIMES!.
This stupid shit kept telling me to write code in a "functional" style. AND ALL HE KNOWS ABOUT FUNCTIONAL PROGRAMMING IS USING MAP, FILTER, REDUCE! And says shit like "WE DONT NEED UNIT TESTS BECAUSE FUNCTIONAL PROGRAMMING HAS NO ERRORS!" Later on I found that he read a book about functional programming in JS and now he fucking thinks he knows what functional programming is! Oh I forgot to mention that the body of his "maps" is like 70 fucking lines of code!
Another fin-tech company I worked at had a quote from Machiavelli's The Prince on EACH FUCKING DESK:
"There is nothing more difficult to take in hand, more perilous to conduct, or more uncertain in its success, than to take the lead in the introduction of a new order of things."
MOTHERFUCKER! NEW ORDER OF THINGS? THERE 10 OTHER COMPANIES DOING THE SAME SHIT ALREADY!
And the one that got on my nerves as a space lover. Is a quote from Kennedy's speech about going to the moon in the 60s "We choose to go to the moon and do the hard things ..."
YOU FUCKING DELUSIONAL CUNT! YOU THINK BUILDING YOUR SHITTY COPY PASTED START UP IS COMPARABLE TO GOING TO THE MOON IN THE 60S?
I am just tired of all those fuckers.13 -
My Manager: Could you help "other manager" (OM) they need some very simple code changes.
Me: sure that will only take a few minutes *adds 15 lines of code tells OM one single line they have to modify*
Some other manager (SOM): Hey how does this work, I'm confused, do I need to do anything?
Me: Yes see the email chain you were copied on.
SOM: Actually let's have a meeting instead and all discuss this.
Goddammit this was a simple change to make your life easier now you are wasting everyones time by not reading the email -
Having to do database schema changes manually is HELL. Management seems to not be taking seriously enough the need to stop and implement migrations, my boss/lead dev suggested me to look up how to adopt/implement them in my own free time, instead of stopping all the feature implementing to do this VERY IMPORTANT, CRUCIAL CHANGE. Now I am the retard who takes too much time to do simple changes in the database.
Maybe I am retarded after all.7 -
Inherited a simple marketplace website that matches job seekers and hospitals in healthcare. Typically, all you need for this sort of thing is a web server, a database with search
But the precious devs decided to go micro-services in a container and db per service fashion. They ended up with over 50 docker containers with 50ish databases. It was a nightmare to scale or maintain!
With 50 database for for a simple web application that clearly needs to share data, integration testing was impossible, data loss became common, very hard to pin down, debugging was a nightmare, and also dangerous to change a service’s schema as dependencies were all tangled up.
The obvious thing was to scale down the infrastructure, so we could scale up properly, in a resource driven manner, rather than following the trend.
We made plans, but the CTO seemed worried about yet another architectural changes, so he invested in more infrastructure services, kubernetes, zipkin, prometheus etc without any idea what problems those infra services would solve.2 -
"Architect"(A) - Hey, StrucN, we have a bit of a problem on the module you are working on (which the previous "developers" seem to have given it roofies)
Me: Okay, what seems to be the problem?
A: There is a need to add some functionality to it, we need you to ...
Me: I see, well it can be done but it wouldn't be so simple - the module is a mess and the change would need to be well tested
A: I fear the clients deadline is for tomorrow
Me: Well he'll have to wait, rushing it is the worst possible option
A: I'll talk to him about it, thanks
After around half an hour A rushes back
A: Hey I passed a ticket to you about the additions we spoke about, it should be ready for tomorrow
Me: It won't be ready, it's too complex to complete is in such a shirt notice (considering it's already the end of the day and all the changes need to be pushed tommorow to prod)
A: I know *programmer from useless team B* did something similar so as it is close to what we need you should copy it.
My inner voice: FUCK YOU YOU USELESS FUCKING CUNT! THERE SHOULDN'T BE ANY COPY PASTE SHIT FROM SOME UNRELATED MODULE! YOU SHIT STAINED MEAT BAG ALREADY DID SUCH A SIN IN THE PAST AND I HAD TO FIX ALL OF IT. THE MODULE SHOULDN'T SUFFER ANY MORE AS IT IS ALREADY A GODDAMN RAPE VICTIM!
WHERE DID PROPER PROFESSIONALISM WENT? WHY IS IT THE INDUSTRY FILLED WITH STUPID WANNA BE "ARCHITECTS" WHILE OTHER MORE COMPETENT FOLK SHOULD ALWAYS BE IGNORED BECAUSE IT'S ALWAYS SHOULD BE READY FOR TOMMOROW?!
For fucks sake I miss my old Architect, he could really understand the essence of program development3 -
Place: Microsoft, Visual Studio department
Boss: we need to make beautiful changes, and make the development process more simple and beautiful.
Employee 1: let's arrange error messages to be more readable.
Boss: no, I don't need any details of error, just say there is an error.
Employee: But..
Boss: This is genius, do it now.
Me: 😭2 -
I think that two criterias are important:
- don't block my productivity
- author should have his userbase in mind
1) Some simple anti examples:
- Windows popping up a big fat blue screen screaming for updates. Like... Go suck some donkey balls you stupid shit that's totally irritating you arsehole.
- Graphical tools having no UI concept. E.g. Adobes PDF reader - which was minimalized in it's UI and it became just unbearable pain. When the concept is to castrate the user in it's abilities and call the concept intuitive, it's not a concept it's shit. Other examples are e.g. GEdit - which was severely massacred in Gnome 3 if I remember correctly (never touched Gnome ever again. I was really put off because their concept just alienated me)
- Having an UI concept but no consistency. Eg. looking at a lot of large web apps, especially Atlassian software.
Too many times I had e.g. a simple HTML form. In menu 1 you could use enter. In menu 2 Enter does not work. in another menu Enter works, but it doesn't submit the form it instead submits the whole page... Which can end in clusterfuck.
Yaaayyyy.
- Keyboard usage not possible at all.
It becomes a sad majority.... Pressing tab, not switching between form fields. Looking for keyboard shortcuts, not finding any. Yes, it's a graphical interface. But the charm of 16 bit interfaces (YES. I'm praising DOS interfaces) was that once you memorized the necessary keyboard strokes... You were faster than lightning. Ever seen e.g. a good pharmacist, receptionist or warehouse clerk... most of the software is completely based on short keyboard strokes, eg. for a receptionist at a doctor for the ICD code / pharmaceutical search et cetera.
- don't poop rainbows. I mean it.
I love colors. When they make sense. but when I use some software, e.g. netdata, I think an epilepsy warning would be fair. Too. Many. Neon. Colors. -.-
2) It should be obvious... But it's become a burden.
E.g. when asked for a release as there were some fixes... Don't point to the install from master script. Maybe you like it rolling release style - but don't enforce it please. It's hard to use SHA256 hash as a version number and shortening the hash might be a bad idea.
Don't start experiments. If it works - don't throw everything over board without good reasons. E.g. my previous example of GEdit: Turning a valuable text editor into a minimalistic unusable piece of crap and calling it a genius idea for the sake of simplicity... Nope. You murdered a successful product.
Gnome 3 felt like a complete experiment and judging from the last years of changes in the news it was an rather unsuccessful one... As they gave up quite a few of their ideas.
When doing design stuff or other big changes make it a community event or at least put a poll up on the github page. Even If it's an small user base, listen to them instead of just randomly fucking them over.
--
One of my favorite projects is a texteditor called Kate from KDE.
It has a ton of features, could even be seen as a small IDE. The reason I love it because one of the original authors still cares for his creation and ... It never failed me. I use Kate since over 20 years now I think... Oo
Another example is the git cli. It's simple and yet powerful. git add -i is e.g. a thing I really really really love. (memorize the keyboard shortcuts and you'll chunk up large commits faster than flash.
Curl. Yes. The (http) download tool. It's author still cares. It's another tool I use since 20 years. And it has given me a deep insight of how HTTP worked, new protocols and again. It never failed me. It is such a fucking versatile thing. TLS debugging / performance measurements / what the frigging fuck is going on here. Take curl. Find it out.
My worst enemies....
Git based clients. I just hate them. Mostly because they fill the niche of explaining things (good) but completely nuke the learning of git (very bad). You can do any git action without understanding what you do and even worse... They encourage bad workflows.
I've seen great devs completely fucking up git and crying because they had really no fucking clue what git actually does. The UI lead them on the worst and darkest path imaginable. :(
Atlassian products. On the one hand... They're not total shit. But the mass of bugs and the complete lack of interest of Atlassian towards their customers and the cloud movement.... Ouch. Just ouch.
I had to deal with a lot of completely borked up instances and could trace it back to a bug tracking entry / atlassian, 2 - 3 years old with the comment: vote for this, we'll work on a Bugfix. Go fuck yourself you pisswads.
Microsoft Office / Windows. Oh boy.
I could fill entire days of monologues.
It's bad, hmkay?
XEN.
This is not bad.
This is more like kill it before it lays eggs.
The deeper I got into XEN, the more I wanted to lay in a bathtub full of acid to scrub of the feelings of shame... How could anyone call this good?!?????4 -
Development world is always changing and evolving... It changes before you know it...
So, having the ability to quickly adapt and learn is a must for any Developer... And, this is the one thing that I am sure that everyone knows about or heard about..
But, my advice is quite simple:
"Don't rush into participating in a race, just because everyone else is doing so.
The trick is not to move quickly.. But, to move one step at a time, at the pace in which you are at your most comfortable...
It might seem counterintuitive and a contradiction to what I have said earlier.. But, I hope that by the end of this rant, you will be able to understand my perspective..
This advice is especially useful for people still finding and searching for their place in our world..
Charles Darwin, very wisely understood the philosophy behind 'Survival of the Fittest'..
By 'fittest', he didn't refer to the ones considered to be the strongest or having the most intelligence, but the ones that had mastered the ability to adapt to changing circumstances..
Adaptability is important, but not at the cost of understanding and learning about the fundamental pillars on which this world stands..
Don't rush because when you run, your visions starts to become more narrow.. In your pursuit to reach your goal, you lose the ability to look at the macro details surrounding your goal..
Learning new technology is important, but that doesn't mean that you don't learn about various approaches or how to design a more logical or efficient solution...
Refactoring the code, developing good Testing procedures, learning to interact with your fellow developers are as crucial as learning about the changing trends...
Even, in this ever-changing world, understand that some things will always remain the same, like the adrenaline that course through your veins when you finally solve a long-standing problem...
Curiosity, Discovery and Exploration are the key pillars and hence, when we rush in, we might stop exploring and lose curiosity to discover new and exciting ways to reach our goal..
Or, we might also end up losing the drive that grips us and motivates to continue moving forward inspite of the challenges standing between us and our destination..
And, believe me, once you lose this quality, you might still succeed but the contentment and the satisfaction that you feel will be lost..
And, then, you will remain a developer only through your designation... And, that in my personal opinion, the worst punishment.3 -
ComputerToucher: *opens Jira ticket* Dev team needs tokens for the APM for a new app with multiple tenants. Ezpz. Hey, developer. Do you want one golden token for all of your app tenants or would you like us to generate one token for each?
Developer: Let’s have a meeting to discuss it.
CT: It’s…an exceedingly simple question. One token or 4? Which does your app support?
Dev: Yeah I think we should discuss with this with the platform team, can you set up the call?
CT: (Internally) I am the platform team? Do you not know how your applica-never mind I’ll just ask the PM directly.
CT (in chat): I’ll ask PM to schedule the call.
*Goes back to Jira ticket, changes priority to 4, removes ticket from sprint entirely, picks something else to work on*6 -
Things that seem "simple" but end up taking a long ass time to actually deploy into production:
1. Using a new payment processor:
"It's just a simple API, I'll be done in 2 hours"
LOL sure it is, but testing orders and setting up a sandbox or making sure you have credentials right, and then switching from test to life and retesting, and then... fuck
2. Making changes to admin stats.
"'I just have to add this column and remove that one... maybe like a couple of hours"
YOU WISH
3. Anything Javascript
"Hah, what, that's like a button, np"
125 minutes later...
console.log('before foo');
console.log(this.foo)
etc..2 -
tl;dr - why you no read this?
Here I am pondering why I continue to return to my job everyday when we are currently at month 13 of a 4 month project... yea let that set in for a minute... which is still at least 3-4 months away from being deployed due to annual leave of key stake holders and the whole Christmas period creeping up and things just not going as planned every step of the way.
There's no greater demotivater - is that even how you spell it - then being stuck in a project for so long you really just don't give a shit if it works or not anymore.
This has gone from a simple - relatively speaking - project to some monolithic mayhem of requirement changes and process adjustments, that have not only delayed our team, but 3rd party vendors needing to change things as well, or the requirements being wrong early so when you get up to business testing it's like "nope, that's not what we wanted" .... despite all the sessions of you personally giving the PM all the damn requirements.
But in saying that, they (3rd party) aren't innocent either, we have found nothing but issue after issue with their product since we started this project that who ever signed off on going forward with the thing should have been shot from both sides - it's not designed for the scale we will be using it yet we didn't find that out till we got so far into the rabbit hole we had a chance to be able to do load testing.
Meh, guess I'll go to work Monday and spend another week in misery trying to deliver something that just doesn't want to know what the finish line is.4 -
Expectation: Today is the last day before holidays and yesterday I completed a complex task, so today I'll have a very relaxing day involving implementing only some simple changes.
Reality: I've just solved a dependency conflict between the project I modified yesterday and another project depending on it that caused the failure of some tests inside the latter panicking my coworkers who quickly asked me "WTF you merged in the core project!?!?"
Yeah, I really need these holidays.1 -
I really need to kick Tim Cook in the ass.
“Everything Works”, yeah tell that to your dead dog.
Debugging watchos experience:
I need to uninstall main app for watch app to register changes in code.
Xcode crashes during debugging.
Cannot SET custom keys in Info.plist, in watch target, ohhhh goood, but thats where app configuration is set, how and why do you care about simple string keys!!! What now i need to send that configuration from main app??
Tim Cook just go die please, you have ruined apple.3 -
Me with estimations:
*enter the supermarket
*take a small basket because I need just one or two things..
*realizes I needed more things, basket get full, me getting tired.. oh shit..
Boss asks some changes
-ok boss, one hour at most, it's just adding few lines..
*then I realize that it's not that simple1 -
my temper has improved a lot, but around high school i had a really short fuse. we were doing a programming homework and i really blew up with this guy.
the day before the deadline i couldn't finish the work (that i was doing solo), because i had a violin recital. i told the other 3 to finish it, it was very simple stuff. i got at school the next day, they hadn't done what i asked, and this asshat meddled with what i had done, so i had to fix his changes to my code and implement what was left an hour before class. i really gave him a piece of my mind, i was super pissed, and my friends were super awkward because I'm usually a quiet person, and it's scary when i get angry for real.1 -
The more I work with performance, the less I like generated queries (incl. ORM-driven generators).
Like this other team came to me complaining that some query takes >3minutes to execute (an OLTP qry) and the HTTP timeout is 60 seconds, so.... there's a problem.
Sure, a simple explain analyze suggests that some UIDPK index is queried repeatedly for ~1M times (the qry plan was generated for 300k expected invocations), each Index Scan lasts for 0.15ms. So there you go.. Ofc I'd really like to see more decimal zeroes, rather than just 0.15, but still..
Rewriting the query with a CTE cut down the execution time to pathetic 0.04sec (40ms) w/o any loops in the plan.
I suggest that change to the team and I am responded a big fat NO - they cannot make any query changes since they don't have any control on their queries
....
*sigh*
....
*sigh*
but down to 0.04sec from 3+ minutes....
*sigh*
alright, let's try to VACUUM ANALYZE, although I doubt this will be of any help. IDK what I'll do if that doesn't change the execution plan :/ Prolly suggest finding a DBA (which they won't, as the client has no € for a DBA).
All this because developers, the very people sho should have COMPLETE control over the product's code, have no control over the SQLs.
This sucks!27 -
So my co-worker asked me to change something. It was simple, took me about 5min to do it and pushed to production right away!
Two minutes after, asked me to change two other things. In the span of 1h30, she came to my desk 3 times and asked for 3 different things!
The thing is: before I push anything to production, I have to ask my other co-worker who is currently on vacation.
Already sent him one email for the first thing, and now I feel bad because I have to send him another one...
In case she comes up with any more changes, I'm just going to wait for the end of the day and send one more email with every change I made. This is great. FML3 -
So I hear some drama going on in Vuejs community related to next version which will bring breaking changes.
https://dev.to/danielelkington/...
I was just getting into Vue and feeling happy about learning such a beautiful and simple framework.
What do you guys think?12 -
OMG you fucking little cunt!
Previous issue with this co-worker we hate eat other but can maintain minimal contact due to covid. Last interaction was actually nice, we joked a bit.
He teaches me how to do the build and ‘updated’ the confluence page. By update he striked through one paragraph.
Been doing these for week and now others what builds done all the time and since I am not an asshole they can approach me to do this but now I spend all
day long doing builds.
Work on a classified app so it has to
be burned on a disk, taken to a ‘secret machine’ and deployed. Takes about an hour and people are like. Can you rebuild it? I forgot to commit something?
So I updated the page to flush out the directions. Did not remove one thing only added things simple things like do a ls -lah in the dist folder to make sure the are built correctly. Things like check to make the symlink works, bolded words.
He was not at standup so I figured he was out of the office today and was going to ask him to review tomorrow.
Fucker goes in to make changes while I am making changes and doesn’t think to msg me telling me?
He is removing things and moving things which is fine just let me know! What a dick!!!!!
Screenshot of all the activity today, I am
in blue. I will spend all day watching the page to make sure I get the last fucking edit!5 -
Finally finished the longest ticket I've ever worked on in my life. The ticket title and description was a pretty simple and straightforward one: "Upgrade from PHP 7.4 to 8".
If it was only so simple in real life. Our application is mostly done with API Platform framework, which is based on top of Symfony framework which is based on top of PHP language.
Once I did PHP 7 => 8 upgrade I needed to upgrade API Platform 2 => 3. But of-course that couldn't have been done as before that I needed to upgrade from Symfony 5 => 6.
This all was literally an equivalent of touching into a wasp nest - it took me a bit over 5 months and 800 hours of work and there was literally not a single source file left untouched.
In the process of all of this I've ran into literally dozen undocumented feature-breaking changes, broken backwards-compatibility promises and inside out architectural changes - from both the frameworks and the language itself.
Upgrading just one major version of anything SHOULD NOT be so hard. And to top it all up just to think I will need to do this again in a year or two..
Experiences like these really set my hate for time-based model of releases and the state of today's development in general.6 -
Client calls me requesting a new simple feature.
Connect to FTP server.
Edit some PHP pages and upload them back, check if the changes actually worked.
Basically implementing and testing a new feature on a live production website...
PS. It didn't work the first or second time -
2 hour meeting to brainstorm ideas to improve our system health monitoring (logging, alerting, monitoring, and metrics)
Never got past the alerting part. Piss poor excuses for human being managers kept 'blaming' our logging infrastructure for allowing them to log exceptions as 'Warnings', purposely by-passing the alerting system.
Then the d-head tried to 'educate' everyone the difference between error and exception …frack-wad…the difference isn't philosophical…shut up.
The B manager kept referring to our old logging system (like we stopped using it 5 years ago) and if it were written correctly, the legacy code would be easier to migrate. Fracking lying B….shut the frack up.
The fracking idiots then wanted to add direct-bypass of the alerting system (I purposely made the code to bypass alerting painful to write)
Mgr1: "The only way this will work is if you, by default, allow errors to bypass the alerting system. When all of our code is migrated, we'll change a config or something to enable alerting. That shouldn't be too hard."
Me: "Not going to happen. I made by-passing the alert system painful on purpose. If I make it easy, you'll never go back and change code."
Mgr2: "Oh, yes we will. Just mark that method as obsolete. That way, it will force us to fix the code."
Me: "The by-pass method is already obsolete and the teams are already ignoring the build warnings."
Mgr1: "No, that is not correct. We have a process to fix all build warnings related to obsolete methods."
Mgr2: "Yes. It won't be like the old system. We just never had time to go back and fix that code."
Me: "The method has been obsolete for almost a year. If your teams haven't fixed their code by now, it's not going to be fixed."
Mgr1: "You're expecting everything to be changed in one day. Our code base is way too big and there are too many changes to make. All we are asking for is a simple change that will give us the time we need to make the system better. We all want to make the system better…right?"
Me: "We made the changes to the core system over two years ago, and we had this same conversation, remember? If your team hasn't made any changes by now, they aren't going to. The only way they will change code to the new standard is if we make the old way painful. Sorry, that's the truth."
Mgr2: "Why did we make changes to the logging system? Why weren't any of us involved? If there were going to be all these changes, our team should have been part of the process."
Me: "You were and declined every meeting and every attempt to include your area. Considering the massive amount of infrastructure changes there was zero code changes required by your team. The new system simply worked. You can't take advantage of the new features which is why we're here today. I'm here to offer my help in any way I can with the transition."
Mgr1: "The new logging doesn't support logging of the different web page areas. Until you can make that change, we can't begin changing our code."
Me: "Logging properties is just a name+value pair dictionary. All you need to do is standardize on a name and how you add it to the collection."
Mgr2: "So, it's not a standard field? How difficult would it be to change the core assembly? This has to be standard across all our areas and shouldn't be up to the developers to type in anything they want."
- Frack wads smile and nod to each other like fracking chickens in a feeding frenzy
Me: "It can, but what will you call this property? What controls its value?"
- The look I got from both the d-bags I could tell a blood vessel popped.
Mgr1: "Oh…um….I don't know…Area? Yea … Area."
Mgr2: "Um…that's not specific enough. How about Page?"
Mgr1: "Well, pages can cross different areas, and areas cross different pages…what do you think?"
Me: "Don't know, don't care. It's up to you. I just need a name."
Mgr2: "Modules! Our MVC framework is broken up in Modules."
DevMgr: "We already have a field for Module. It's how we're segmenting the different business processes"
Mgr1: "Doesn't matter, we'll come up with a name later. Until then, we won't make any changes until there is a name."
DevMgr: "So what did we accomplish?"
Me: "That we need to review the web's logging and alerting process and make sure we're capturing errors being hidden as warnings."
Mgr1: "Nooo….we didn't accomplish anything. This meeting had no agenda and no purpose. We should have been included in the logging process changes from day one."
Mgr2: "I agree, I'm not sure why we're here"
Me: "This was a brainstorming meeting as listed in the agenda. We've accomplished 2 of the 4 items. I think we've established your commitment to making the system better. Thank you all for coming."
- Mgr1 and 2 left without looking at me or saying a word.1 -
Worst architecture I've seen?
The worst (working here) follow the academic pattern of trying to be perfect when the only measure of 'perfect' should be the user saying "Thank you" or one that no one knows about (the 'it just works' architectural pattern).
A senior developer with a masters degree in software engineering developed a class/object architecture for representing an Invoice in our system. Took almost 3 months to come up with ..
- Contained over 50 interfaces (IInvoice, IOrder, IProduct, etc. mostly just data bags)
- Abstract classes that implemented the interfaces
- Concrete classes that injected behavior via the abstract classes (constructors, Copy methods, converter functions, etc)
- Various data access (SQL server/WCF services) factories
During code reviews I kept saying this design was too complex and too brittle for the changes everyone knew were coming. The web team that would ultimately be using the framework had, at best, vague requirements. Because he had a masters degree, he knew best.
He was proud of nearly perfect academic design (almost 100% test code coverage, very nice class diagrams, lines and boxes, auto-generated documentation, etc), until the DBAs changed table relationships (1:1 turned into 1:M and M:M), field names, etc, and users changed business requirements (ex. concept of an invoice fee changed the total amount due calculation, which broke nearly everything).
That change caused a ripple affect that resulted in a major delay in the web site feature release.
By the time the developer fixed all the issues, the web team wrote their framework and hit the database directly (Dapper+simple DTOs) and his library was never used.1 -
Android development is unnecessarily complex. To the core. Rant #371651681324
Only being few months in to android development, I can say that using too many functions and classes for doing something silly is very illogical. I mean -
Livedata, think about it, if some data is shown on the UI, it must mean the UI be updated instantly on data change, but the concept of Livedata was introduced only few years back.Which again, needs an observer and we actually have to ask it to observe changes.
Android development is a mess. More and more updates to the architecture and code is to cover up the problems that shouldn't have existed in the first place. A simple Spinner with custom object will require more time in stackoverflow rather than actual coding. Very counter-intuitive, inefficient, time-consuming and exhaustive.4 -
python machine learning tutorials:
- import preprocessed dataset in perfect format specially crafted to match the model instead of reading from file like an actual real life would work
- use images data for recurrent neural network and see no problem
- use Conv1D for 2d input data like images
- use two letter variable names that only tutorial creator knows what they mean.
- do 10 data transformation in 1 line with no explanation of what is going on
- just enter these magic words
- okey guys thanks for watching make sure to hit that subscribe button
ehh, the machine learning ecosystem is burning pile of shit let me give you some examples:
- thanks to years of object oriented programming research and most wonderful abstractions we have "loss.backward()" which have no apparent connection to model but it affects the model, good to know
- cannot install the python packages because python must be >= 3.9 and at the same time < 3.9
- runtime error with bullshit cryptic message
- python having no data types but pytorch forces you to specify float32
- lets throw away the module name of a function with these simple tricks:
"import torch.nn.functional as F"
"import torch_geometric.transforms as T"
- tensor.detach().cpu().numpy() ???
- class NeuralNetwork(torch.nn.Module):
def __init__(self):
super(NeuralNetwork, self).__init__() ????
- lets call a function that switches on the tracking of math operations on tensors "model.train()" instead of something more indicative of the function actual effect like "model.set_mode_to_train()"
- what the fuck is ".iloc" ?
- solving environment -/- brings back memories when you could make a breakfast while the computer was turning on
- hey lets choose the slowest, most sloppy and inconsistent language ever created for high performance computing task called "data sCieNcE". but.. but. you can use numpy! I DONT GIVE A SHIT about numpy why don't you motherfuckers create a language that is inherently performant instead of calling some convoluted c++ library that requires 10s of dependencies? Why don't you create a package management system that works without me having to try random bullshit for 3 hours???
- lets set as industry standard a jupyter notebook which is not git compatible and have either 2 second latency of tab completion, no tab completion, no documentation on hover or useless documentation on hover, no way to easily redo the changes, no autosave, no error highlighting and possibility to use variable defined in a cell below in the cell above it
- lets use inconsistent variable names like "read_csv" and "isfile"
- lets pass a boolean variable as a string "true"
- lets contribute to tech enabled authoritarianism and create a face recognition and object detection models that china uses to destroy uyghur minority
- lets create a license plate computer vision system that will help government surveillance everyone, guys what a great idea
I don't want to deal with this bullshit language, bullshit ecosystem and bullshit unethical tech anymore.11 -
Email from a department mgr regarding a sharepoint site we inherited (lots of custom javascript, XLS, etc, stuff we didn't write)
Dan: "The department filter isn't showing up when I select the 'Logistics and Support' department. Was this caused by the changes you guys made? Its causing a major disruption in our processes and need it fixed ASAP."
Me: "Those changes went out almost two months ago and all the filters were working fine, at least that is what you told me when you tested it."
Dan: "I thought so, but its not working. It has probably been broken ever since you made those changes so I filed a corrective action ticket against your department for not following the documented deployment and testing processes"
Me: "Really? We've been over this. Its your department that is responsible for that sharepoint site. Previous developers hacked javacript together to make it all work, but I'm sure its something simple."
Dan: "Great. I'll start putting together a root-cause analysis to determine which of your processes we need to address."
Start looking at the javascript and found the issue..
if (dept === "Logistics & Support") {
$('deptFilter').show();
}
else {
$('deptFilter').hide();
}
Me: 'Found the issue. Did you rename the logistics department?'
Dan: 'No'
Me: 'To show or hide the filter, the code was looking for "Logistics & Support", someone changed the title to "Logistics and Support"'
Dan: "Well...I guess I did that yesterday...but I didn't change the name, just that stupid character. That shouldn't make any difference."
Me: "I can fix that right now. Are you going to need more information for your root cause analysis?"
Dan: "No, I think we're good. Thanks."1 -
It was around for a while but I didn’t realize it was it for a long time. I was fixing computers for cash and spending in on booze while in primary school. Making websites for cash and for fun while in high school. Some guys wanted to buy my databases at the time and sending me emails that my websites rocks. I didn’t cared cause I party a lot and I didn’t need money.
Sex drugs and rock and roll was my life not a fucking computer.
Since I never had problems with math I passed exams and got myself to university and dropped out cause of those 3 funny things above. Turned out to pass exams after second year when math and physics disappeared you need to study more then 1 day before exam and party was more important for me.
I failed tremendously. My girlfriend left me I was out of money I got back to my hometown with my laptop and I somehow between depression, drugs, alcohol and killing myself reminded I was getting money from websites and I can try to follow that movie.
At that time I didn’t read single book in english in my life. I know some basic english so I decided to try to read some actionscript2 pdf. Why actionscript ? I liked those simple games. Those were fun and there was nothing better. I was reading first book at least 10 times with vocabulary that took about a month until I remembered whole book and second book was faster like 1 week third was 1 day and from then thing moved a little faster. I discovered flex just before adobe acquired macromedia and started writing in it. Started answering to some questions on forum and build some portfolio website with fancy 3d animations and stuff and finally applied for 2 jobs.
They both were amazed by my website and one of them sent me some task to do and I did it overnight and sent them back. They wanted to hire me and I need to respond to them.
Second job they invited me for talking and asking about math, if I’m ok with 3d and stuff and they offered me job closer to my home town so I picked them. The code was amazing, 3d equations, quaternions, complicated stuff bit very well written by some company that dropped project before launch and my first task was add some small feature.
I remember first day in elevator with my former boss who told me to not to get scary and take it slowly I was trying to do my task as fast as I can worried I will be fired if I don’t do it and nobody else will hire me and I won’t manage to recover from second failure. It was even more fighting with myself that I will fail again then with this task lol.
I’ve done the feature third day and when they said it’s cool and I can commit my changes it appeared to me that It might be this shit that will get me out of trouble.
I was never again wrong about programming and so wrong about trouble but that’s a different story... -
I fucked up...
I inadvertently fixed a bug which changed the behavior in another application. Weeks later had a seemingly unrelated issue which my initial assumption was to blame a 3rd part tool (which was wrong). I gave said assumption to my manager not thinking anything of it and putting a simple change in place.
Higher ups start asking my manager about it, he provides details...the more I thought about it the more I realized the changes I made did not make sense.
I dug deeper into it and found it was due to the change I made weeks ago. So my manager offers to cover for me but i told him I'd take full responsibility.
I'm not getting fired or any type of reprimand at all...I just hate fucking up and then it looks like we are trying to lie about it being our fault.4 -
Open source is poison, hoax and source of much troubles.
Even as I love OSS, and I use it a lot, when things go south, they go south terribly.
There was "security" updates in one OSS program I have been using, that accidentally prevented use cases which specifically affected me. I raised bug report, made issue and gave small repro for it.
One of the core developers acknowledges that yes, this is problem, and could be handled with few added options, which users of similar use case could use to keep things working. He then tags issue "needs help" and disappears.
After I have waited some time, I ask help how I could fix it myself, like how to setup proper dev environment for that tool. Asked it in their forums few days later, as issue didn't get any response. Then asked help in their slack, as forums didn't get any help.
Figured out how to get dev environment up, fix done (~4 lines changed, adding simple check for option enabled or not) and figured out how to test that this works.
I create pull request to project, checking their CONTRIBUTING and following instructions there. Then I wait. I wait two weeks, and then one of the core develors goes to add label "needs response from maintainer". That is now almost two weeks ago...
So, bug that appeared in October, and issue that was created October 8th, is still not fixed, even as there is fix in PR for 28 days this far.
And what really ticks me off? People who make statements like: "it is OSS, have you thought of contributing and fixing things yourself?" when we run into problems with open source software.
Making fix yourself ain't biggest problem... but getting it actually applied seems to be biggest roadblock. This kind of experiences doesn't really encourage me to spend time fixing bugs in OSS, time is often better spend changing to different tool, or making changes in my own workflow or going around problem some kludge way.
I try to get business starting, and based on OSS tools. But my decision is staggering, as I had also made decision to contribute back to OSS... but first experiences ain't that encouraging.
Currently, OSS feels like cancer.17 -
A colleague of mine was very smart, but didn't know how to use classes in .net or object literals in js, so he organized his data with arrays.
It worked, of course, but, god, did I hate working with his code. It would take hours to make simple changes.1 -
I've been working on the ecommerce website from hell for over a year now. I should have heard the alarm bells when the studio who were running the project took a month to pay my deposit but still expected me to start working, but I explained that I wouldn't start without some form of security and they were cool with it, so I carried on.
It started off as a simple build with simple products, no product variations etc and a few links on the designs which appeared to lead to external links, and checkout and cart pages were nowhere to be seen. It wasn't a big money job so I just build them in as plain and straightforward as I could, in line with how the rest of the site looked. They then changed their mind about how they wanted these to look, and added loads of functionality to the site throughout the build, so by the end of the line, the scope of work had completely changed. I also had loads of disagreements in terms of design and useability, as their designs straight-up weren't going to function otherwise, plus every round of changes meant that I had to prolong the job further and fit it around work for other clients.
Fastforward a few more months and I get sent a really angry email with some of the client's complaints, including one that raised an issue with the user journey, and the finger of blame was pointed at me. The user journey had been a part of the designs from the start, and this was never raised as an issue for A WHOLE YEAR. They then said that it had to go live on Monday (three days after they sent email with these huge new structural changes). I told them I could no longer work on the project but was happy to waive the rest of my fee (3/4 of the total fee, when I had essentially completed the site, minus 2 minor bugs), so they could find another developer in the limited time they had. At first they refused to hire another developer, claiming that it would be too expensive, which made no sense, as for a few minor fixes and out of scope additions he could get paid a wage that would have otherwise paid for the majority of the work I had done on the site. I stood my ground and finally they found someone, so I sent over all of the files and database to their new developer and asked him to give me a heads up when I could remove the staging site from my server. The next day, I received an email from the studio asking me to fix some bugs the developer was requesting I fix so he could carry on with the site. They were basically asking me to work more, for free, to enable him to walk off with the majority of the money and do less work. They also forwarded a suuuuuper shitty, condescending email from him, listing all the things he thought was wrong with the site (he even listed 'no favicon' although they'd never supplied a graphic for this). He also wrote a paragraph at the bottom EXPLAINING MY JOB TO ME and telling me:
I get the feeling you like to write Javascript, while being one of the easiest languages to learn, it can also be one of the hardest to master. While I applaud you for writing Vanilla JS, it looks like you have a general problem with structuring your application.
Not sure if I'm being oversensitive here but it felt so patronising, and i couldn't even go for an angry walk to get it out my system because of social distancing lol.
Let a girl quarantine in peace!!!!!!2 -
Why use git, do it simple, send me your changes by email and I will merge it.
Why split split source code (js) into different files, use one so we will no have trouble about load order.
Use the same user account for github/gitlab/bitbucket/etc. So we will no worry to setup access permisions.
Use Dropbox/Drive for version control.
We will test the whole system until the end when all is finish.3 -
"The thing I want to change is very simple.."
Day starts off great again by manager saying the above - which is already problem with her limited technical knowledge - and then she proceeds by wanting to change multiple properties of a primary key in our live db.
I really hope my interviews go well this week and I can leave this place soon.. -
So this web company i joined had a page load time in minutes. The free text search (inverted index search, based on elasticsearch) queries would return results in 10-45 seconds (should be milliseconds always). The indexes had no schema. And they would crawl data and feed into mssql db, which had a 2 gb/db limit on the free version. So everytime the db hit the limit, a new db was created and the name was incremented by one.
Had a very tough time cleaning up that mess. Plus the architect who had made this architecture was on his way out and unhelpful to the core.
What was worse was that most of the changes i did were very simple changes that should have been done long back. Basic sanity changes.4 -
So I'm on my morning stroll. Walking, enjoying, watching the world around me.. It's nice how cherries blossom. They smell very tempting to stop there and enjoy the moment. Some flowers under the cherry...
Why do plants blossom again? Oh yeah, that's right, to exchange some speciments in order to grow fruit and seeds. To have their offspring. Just like every other living macroorganism [with a few exceptions ofc]. Life has no other way to survive but to exchange genetic material between two parties and only then trigger growth of the new life.
And that is a very strict rule. No more, no less: it takes exactly 2 organisms to make new life. But why is that? If my memory serves, theory of evolution says that life is like business: cut the losses and let the profits run. Over time it discards everything not required for the organism in order to save energy, and only successful new "investments" remain in the genome. The unsuccessful ones die before they proliferate, so the bad genes shall not survive.
It also says that very simple things, very simple changes lead to very complex outcomes. Us. Life.
But what is simple about life having to need 2 other lives? Exactly 2. It's either simple or efficient, depends on perspective. BUT IT IS NOT BOTH. Look at cells. They just split in half and multiply. Dead simple. It takes one of them to make another one. But with mammals, birds, reptiles, plants and other macroorganisms [excpt fungi] this is not the case! Why?!? I can't think of any scenario where two generic microorganisms, following some dead simple mutations, would come up w/ something that inefficient and overly complex. Like they're living on their own, multiplying by division, and smth very simple happens and they can no longer divide, only mate in pairs. The primitive, efficient and simple mechanism gets terminated and replaced with a different one, incredibly complex one!
Sure, we have protozoa which have similar reproductive mechanisms. They exchange genetic material to multiply.
But look at our, human cells. They dont need that! Look at some reptiles, some plants that only take one to make another. They don't pair as well! It's simple. Efficient. Why do protozoa need 2 for the species to survive?
It's not simple and efficient [tho helps us adapt, but its not my point for now]. See, things like this make ne wonder. What if we, the life, are not as accidental as we think? What if this whole mechanism was set off by someone or something billions of years ago? That's mean there are much older, much more superior cognitive organisms than us. What if protozoa was version 3 of new life [the first two did not survive]? Viruses - v2? Sea creatures - v3, reptiles - v4, and so on until they came up with us, mammals? That'd surely mean we are not alone in this universe. Are they watching us? Will they create a new species any time soon? What's our purpose, are we just an experiment?
And so, from cherry blossoms to existensial dilemma, my stroll is over. Time for breakfast :)1 -
Agencies... Just hate when people are given only time enough for doig crap code, because "there is no budget". Hate even more to work on changes on top of it, because people just dont get why you take so long to do changes that supposed to be simple, ignoring the fact that previously they asked for some slap-dash shit. What do they think, that with time the code cleanup and tidy up itself?
-
So I taught git to my colleagues. They were happy to learn new things.
I asked them to commit things that they have done with proper message in every projects from now on. I find 50-80 commits to pull in every 10mins. Ughhh. They were committing every single changes they were making. 😂😂😂
Sometimes simple things can overwhelms some people4 -
Fried two devices today by simply connecting them to a power source.
Changed nothing in the circuitry, no shorts due to solder residues (a simple modification was made), no changes in the input parameters. Check.
The afromentioned devices should have only minor HW changes compared to a previous version I'm working with and as far as I can see absolutely nothing which should cause the damn microcontroller to release smoke like a steam train. (All right, a very miniature steam train.)
So the only significant difference might be the firmware which I didn't check yet but will tomorrow. Not my code and the corresponding IDE just basically sucks. Yay.
On the other hand, the Software part finally feels like I'm getting somewhere. It seems just ... to work. Very suspicious.
Feeling ambivalently frustrated and relieved at the same time. Sigh.7 -
I am going to rant about this here because there is nowhere else where I can "SCREAM".
My work process....
Working on a project that does not have mockups nor a plan. I am building as I go. Design, infrastructure, EVERYTHING. Because my boss is a "genius".
And the project goes like this....
1. Boss tells me to build something.
2. I tell him the functionalities and design.
3. Boss, "Figure out yourself and we will see how it goes".
4. Me, Builds something.
5. Boss does not like it and demands changes.
6. I make the changes.
7. Repeat.
1 year and a half for one project that is a simple e-commerce. Show the products, a search functionality, users sign in and can order and show their orders.
A simple page in which does not take time, but without a plan, without A FUCKING PLAN this project will go on forever.
I am losing my mind. I put on test and tell my boss to test it for bugs. He demands a meeting and tells me, "we need to add this".
OH FOR FUCKS SAKE. TEST THE SITE FOR BUGS YOU FUCKING USELESS THING. I WILL FIX THE BUGS AND THEN WE WILL TALK FOR NEW MODULES.
I am doing documentation, database infrastructure, front-end, back-end, testing (because my boss cannot do it. It took him 2 week to start testing for some things after asking him every fucking day "Did you test it", "Did you test it").
Maintaining out CRM for bugs and new modules and maintaining our company's website.4 -
I kinda stumbled upon a feature of haproxy I wasn't aware of....
http://haproxy.org/bugs/...
They have a html page per version allowing one to easily identify current vs last version and it's bugs.
It was by accident that I found it via haproxy --version.
Whoever did that - praised be thy name.
If it was always this easy.... It would make my life so much more joyful.
Finding release notes and "reliable" version changes is a pain in the ass.
I think this simple stupid html page is giving me a major boner of happiness. 😆😆😆 -
I hate the current state of internet based service providers. They are collecting so much data, it's scary and borderline stalking.
A simple search on Netflix changes ads shown by Google. I watch a lot of Japanese/Korean drama and now my ads are in Japanese. What the actual fuck.
I run windows 10 on my main rig because of steam and windows only games. One day I was searching for filezilla in windows search. Since it is now handled by the same UI as cortana, it searched it on the web too. So now I have ads related to ftp hosting in Japanese.
Sometimes I feel like just formatting my system and install debian on it. But those games man. May be I can live without them.
Can we bring back the internet from 2008. It was so much better back then.12 -
We need to update the slang "script kiddie" to "prompt enginot" or something.
So my boss's boss or someone even higher up drank the generative AI kool-aid and hired a 40-something kid to generate images for the marketing teams (or something like it).
Naturally, things soon went to shit.
The bloke already left, having staid less than six months on the job.
Guess who got to handle all the shit-is-currently-on-fire the kiddie left behind?
First impression: apparently, muggles tried to slak him some very broad descriptions of what they needed, and at first he actually tried to summarize those bark-speech pseudo-words into an actual prompt.
It does not seem to have gone for too long, though.
After users requested changes to the AI outputs, he would update the prompts, all right. And the process seemed to go fast enough... until reaching near-to-completion status.
Then users would request the tiniest changes to the AI output...
And the bloke couldn't do it.
Seriously. Some things were as simple as "we need this slider to go all the way up to 180% instead of 100%" on a lame dashboard and *kid. could. not. do. it.*.
In many cases he literally just gave up and copied the slak history into the AI prompt. No dice.
Bloke couldn't code a print('hello world') into a jupyter notebook cell, that's what i'm saying.
Apparently, he was "self taught", too. And was hired to "speed up the process of generating visual aids for usage in meetings and presentations". But then "the budget for this position was considered excessive" (meaning: shit results from a raw idea some executive crapped some day) and "the position was expanded to include the development of Business Inteligence Dashboards and Data Apps".
So now it is up to me (and my CRIMINALLY UNDERPAID team) to clean up his mess and maintain/fix/deprecate DOZENS of SHODDILY DESIGNED and MOSTLY USELESS but QUITE ACTIVE "data vis" PIECES OF SHIT.
Fuck "AI prompters", fucking snake oil script kiddies.3 -
Imagine an online, public service, that allows you to communicate with others (for example a simple chat, game, whatever ).
The users connect to each others via p2p. Based on this, you can easily get the ip address of any user directly connected to you. P2p is used to reduce server load, but information is still verified (for example using RACS), so let's assume the data is always safe.
(please remember, this is just a imagined Szenario)
Now the question: AFAIK, the IP address is a sensitive information. Would p2p in this scenario still be 'legal' in the EU given the latest changes in the laws?7 -
its hard to keep yourself updated with apis, specially when you are nodejs/javascript developer.
Creating a simple application to keep track of changes in api and inform the subscribers about changes.
Stack - Vue.js (quasar), nodejs, mongoDb3 -
I got a REALLY nice compliment from my dev team today. But first, the setup...
Tuesday night, I pushed some changes before I left that totally borked the build today when my team pulled changes (this is an off-shore team, so we more or less work opposite hours). Fortunately, my team dealt with it easy enough since (a) it was pretty obvious what happened, and (b) my commit message had enough information to help them know for sure, and they just reverted one file and were good to go for the day (they didn't fix the problem, left that for me to do, which is proper).
It was an absolutely stupid, careless mistake: I somehow copied the contents of a JS file into a JSP and pushed it. Just a simple case of too many tabs open at once and too many interruptions while I'm trying to code (which is typical most days, unfortunately, but this day it had an impact other than just slowing me down).
But, those are the reasons it happened, they aren't excuses. It was carelessness, plain and simple.
So, once I fixed it, I sent a note to the team explaining it. It basically said "Look, that was a dumb, careless mistake on my part, my bad, sorry for the inconvenience, it's fixed now."
I had a message waiting for me in my inbox this morning that said how I'm an inspiration because despite all my knowledge and experience, despite being a long-time lead, they (a) appreciate the fact that I'm human and still make mistakes, and (b) I stand up and take responsibility when it happens and then do what's necessary to reverse the mistake.
That made my day :)
To me, it's just the right way to be (I credit my parents 100%), never occurs to me to do otherwise, but the truth is not everyone can say the same. Some people are insecure and play the CYA game right away, every time. Some people act like they never make mistakes in the first place.
I don't care if you're an experienced dev or a junior, always take responsibility for your actions, especially your mistakes. Don't try and bullshit your way out of them. Sure, it's fine to explain why it happened if there were factors beyond your control, but at the end of the day, own up to them, apologize where necessary, and then put in the effort to make it right. Most people have no problem with people who make mistakes every so often - everyone does, whether everyone admits to it or not - but those who try and shirk responsibility don't last long in this or any endeavor (you know, putting aside the professional bullshitters who build their careers around it... that's not most people, thankfully).10 -
One day, the Director of Web Ops (marketing role) submitted a ticket to update the list of product categories on the website’s navigation. Sounds like a simple ticket right? Just some html edits. Nope. Every day for three days, she changes her mind and adds new changes. What should have taken me 10 minutes stretched out to three days. She held up code review of my ticket because she kept making changes.
She had plenty of time to sort out what she wanted. That ticket had been sitting in the To Do pile for two days before I touched it.
She was being an asshole because she knew she could get away with it and I had no recourse: my direct manager was on vacation, the entire dev team was going to be laid off anyway so no one was going to defend us on “trivial” matters, and we were going to enter code freeze soon so she’d just argue it was critical business changes for our critical revenue season.
I suspect she was also just not good at her job. I never met her in person because she was hired during the 2020 pandemic and we were all working remotely. I did see her make a five minute presentation during an all staff meeting…and she didn’t come off too well. Her voice was trembling during her turn to speak…like she was not confident or not prepared.
She knew she was causing chaos but she put on this act of not knowing. She was definitely trained on our dev team’s practices for tickets and deployments. She knows about code review, beta testing, and user acceptance testing that has to happen before a ticket can be deployed.
It happened to be before Thanksgiving weekend 2020. Our deploy was going to happen on Tuesday instead of Thursday because Thursday was a holiday (no one would be working) and Wednesday was a half day.
Tuesday afternoon at 1pm, she messages me and the dev in charge of deploy about more changes! My time is already occupied because our Product Manager went on vacation and dumped a large amount of user acceptance testing on me. I scream at my computer at that point because I realize I’m in the ninth circle of hell. I tell the other dev in a separate message that Web Ops has been making changes EVERY DAY since I picked up that ticket.
Other dev tells her that we have to check with the C-suite executive for engineering because we’re not allowed to make changes to tickets so close to the deploy. This is actually the policy. He also tries to give Web Ops the benefit of the doubt because we’re not deploying on our usual day. He had to do that to so she didn’t feel bad (and so she doesn’t complain about us not working towards the company’s goals).
Other dev had to do the code changes because I was otherwise occupied with user acceptance testing. If I were him, I’d be pissed that I was distracted from concentrating on the deploy so close to the holiday.
Director of Web Ops was actually capable of even more chaos. I ranted about it before. For that dramatization and if you want to go down the rabbit hole, see: https://devrant.com/rants/4811518/...4 -
How do you guys push changes to you server. ?
I am currently pushing changes to my git repo then pulling those changes on server where I am running the application in production.
I am planning to set up a simple server, to which I will push the changes and it push the changes to the server's running in production.
Or better would be to write a script and run on production servers that will check github for changes3 -
spent two weeks fixing a solution for designer who constantly changes his mind...
manager takes one look at it and says it's too complicated and proceeds to change it to something simple which completely ignores all of designers specifications...
designer no longer cares about his specifications...
I guess this means I shouldn't care about specifications...
yea right... -
Let's say you're working on some pretty complex JavaScript code, and it's just not working right, nothing you try seems to fix it and you can't figure out what's going on. So, rather than continuing to bang your head against the desk, you decide to do the smart thing and shut down for the day.
You then come back to it the next day, refreshed and ready to do battle with the code! You start by adding a few simple logging statements to see what the hell is going on.
You then run the code and... IT WORKS PERFECTLY?!
You scratch your head for a while before finally realizing that cache didn't get cleared yesterday, so your changes were never executing.
D'oh!
Do you:
(A) Beat yourself up for missing such a stupid and basic thing despite doing this shit for literally over 25 years now, or:
(B) Do a happy dance because you just got a free day and can effectively start the weekend early knowing you accomplished your goal for the week?
(or, I suppose, both, which is kind of where I land)6 -
Tasked with changing a couple of captions on a form. Literly as simple as 'Enter product' to 'Enter item' kind of change.
Reported in our morning stand up the changes where complete, tested and deployed (maybe 15 minutes worth of work including code check out/in, copying the file, etc)
DevA: "Ha ha...that's why you put those strings in resource files."
DevB: "No kidding. Not sure when we'll ever start doing best practices around here."
It was all I could do from saying "What the -bleep-!? That is the stupidest thing I've ever heard." -
So simple but so hard.
Having a bad cold I'v been home for a few days. Finally I could bend down without my head exploding so I could replace a harddrive in my ceph system.
I took everything off line, installed the new drive and did all the right things,
but afterwards it didnt come up.
It didn't make sense so I googled for hours while my fever were getting stronger without finding the answer.
So I gave up and reverted my changes and plugged in the old harddrive...
It still didn't work... a bit of panic. I mean... its all my files!
After a lot of sweating (no caused by fever) I realised I moved two ceph-mon processes a few weeks ago but I never rebooted the system afterwards, to fix it all I had to do:
systemctl enable ceph-mon
on two machines.
Summary: make sure things work after reboot and don't do challaging stuff while your brain is all scrambled. -
Oh my.. I think I'm enjoying molesting kubernetes :)
A while ago I got pissed at k8s because with 1.24 they brought backward-incompatible changes, ruling my cluster broken. Then I thought to myself: "why not create a Docker image that would run kubernetes inside? Separate images for control plane, agent and client"
Took me a while, but I think tonight I've had a breakthrough (I love how linux works...)!! The control-plane is spinning up!! Running on containerd
Still needs some work and polishing, but hey! Ephemeral k8s installation with a single docker-run command sure sounds tempting!
P.S. Yes, I know there is `kind` and 'kinder', but I'm reluctant to install a separate tool that installs a set of tools for me. Kind of... too shady. Too many moving parts. Too deeply hidden parts I may have to fix. Having a dumb-simple Dockerfile gives me the openness, flexibility and simplicity I want. + I can always use it as a base image to add my customizations later on! Reinstalling a cluster would be a breeeeeeze6 -
TMW your showing your boss your code and the output, then asks if you can do something else with it. Knowing that it's implemented you try it. Massive amounts of bugs. You think it's a simple fix and make it worse by quickly trying to fix it. Then he leaves. You undo a few changes mess around with the code for a minute and then everything works fine again.
TLDR: Bugs show up when your boss is in the same room as you. Disappear when he's not.1 -
This is more of an essay than a rant. TLDR at the end. I simply can't choose from all the shitty lecturers I've had, so I'm going to have to go through them one by one. But of background. I'm currently in 7th year of college, I did a multimedia degree in 2 years, a intro course to Software Dev and I'm currently in my final year of my Software Dev degree. So let's start.
Intro Software Course
- we had a database module, which was thought by, I shit you not, the head of the psychology course in the college, she attempted to teach us Databases using access. And not even using SQL, using access GUI components and it's query builder. Need I say more?
1st year software dev
- We had a networking module, the guy that taught the labs, he literally didn't say more than 12 words the entire 12 week semester, his answer to any question you asked him was a grunt and "research it"
- We had a psychology module, I have no fucking idea why, but instead of learning something useful we were told to read this and get in touch with your feelings...
- database module. Yes we actually did SQL here, 12 weeks of select statements and normal form, talked about by a guy in a monotone voice, who sounded like he was contemplating bringing in an assault riffle some day. Also instead of using MySQL he decided to use Ingres. Why I will never know.
2nd Year Software Dev
- We had a module called Algorithms and Data Structures. The lecturer gave us problems she couldn't solve. Simple problems. She was also crazy. Absolutely nuts.
- Object Orientated Programming. I had this lecturer for 3 semesters up until 3rd year. This guy did COBOLT in college, graduated in the 70s or something and went straight into teaching, he taught us Java for nearly 2 years. He literally copied and pasted texts from PDFs and read through them in class. He told myself and another guy at one stage he really didn't care, and was just counting down the days to his retirement.
- Databases again, different lecturer from 1st year, taught us for 2 semesters (24 weeks) and somehow managed to teach us nothing.
3rd Year Software Dev
- software engineering.. This is where the biggest cunt I've ever met was introduced. He arrives into class 15 minutes late every time without fail, talks shit about stuff that has no relevancy to the topic at all, tries to turn everything into a rugby metaphor and every time you ask a question he somehow dodges it and swiftly changes topic. This cunts past profession? A Project Manager. Fucking typical. This dickhead has also thought me 2 other modules.
4th yr Software Dev
- El cunto mentioned above for 2 more modules. Need I say more.
- real time systems, this module took the piss, the module was written by the lecturer which is what earns his space here. Assignments given to us, which required more time to do than we had in labs so we had to work at home, the problem we that is we were using an obscure RTOS called OS9 which would only work on the college computers. When brought to the lecturers attention he just said "figure it out"
Internet of Things - There was 2 lecturers, each lecturer seemingly working off a different plan, one week you'd have one lecturer, the next would be the other one going on about something completely different and unrelated to anything else we'd done.
Some lecturers didn't even make this list as I couldn't be bothered trying to think back about how shit other ones were. These were the ones that always stood out in my mind.
My main take away point from this is that you go to college for the paper which says you have a degree. Learning things that are going to benefit you in a career is up to yourself.
TLDR; 90% of my college lectures were shit. You need to learn useful stuff yourself.1 -
I had most fun with my first project that got me into programming:
Simple IRC bot in python, that crawled info about DJ, Artist and Title from internet radio and post it into IRC every time something changes. It took me about month or two since I had to learn everything from zero and I was so excited that it worked.2 -
I spent three weeks developing the simple application for her, she keep add changes and updates. Nothing about payment, I get upset and stop the work. She took whatever I finished, which was almost everything, used it, and she disappeared.
I regret working without having a clear timeline for the delivery and the payment.1 -
Our company's first open source project: https://github.com/digineers/...
It's a Symfony bundle that enables logging changes to entities to allow simple mutation logging systems.
Would love to read some of your opinions :)1 -
It's a shame that people don't want to use F# but prise C# for how cool it became and continue becoming. At the same time, little do they know that many of the features were simply drawn from F#.
It's just rediculous how far this OO and C-Style syntax crap has progressed. They keep copying things from functional langugages, making the initial language to be a monstrocity like C++ is now, insted of just using languages like C#. I mean, it was right there before C#: async/task, immutablility, records, indexes, lambdas, non-null by default, who the hell knows what else.
Besides, many people (in my company at least) are just blindly overengineering with patterns and shit, where a simple function would be just enogh.
Watch some some NDC talks about F#, in particular those of Scott Wlaschin. It's just better in so many ways: less noice (I'm looking at you, brackets, commas and semicolons), the whole LOT of type inference and less duplication (just look at the C# signatures of linq methods - it's difficult to read them), immutability by default, non-nullable by default, ADTs and pattern matching, some neat features like type providers (how many times have used "paste special" or an online tool to create C# classes from a JSON/XML file, and how many times have your regenrated it because of schema changes?) and units of measure.
Of course, in some cases it's not optimal, in some cases mutable datastructures of C# are better for performance. But dude, how many performance critical systems have you wrote in C#? I mean, if it comes to performance you should use Rust or C++ or C after all.
*sighs*15 -
I'm developing an app based on user stories and stuff. The business team used Trello to share them with the devs. Everytime they changed a comma, they'd upload a new file. We got to the point where a simple 1 page story had like 15 versions..
So a couple of days ago I suggested my project's PO she could use Confluence for that, I explained her the benefits like how it'd be easier to track changes and the best part: no 30 effing word files.
I checked it today and turns out she started using, but instead of writing stories on pages, she just downloaded everything from Trello and uploaded the documents there 🤦♂️🤦♂️🤦♂️🤦♂️🤦♂️🤦♂️🤦♂️🤦♂️🤦♂️1 -
I have this little problem,
there is no constant electricity In the country where I live, in fact for the past 4 days there was not a single blink.
I enable auto save on my vs code to save me from tears,
now I have a file server with backup batteries and since it's a laptop mobo that was converted to a server, hooking up the battery was a no brainer.
I just saved copies of my files on it and if I edited any of them I'll just overwrite the file. this was only possible if I did this before the power goes out or else I am stuck again.
I decided to try vs code extensions that will save me from all that copy and paste work.
tried ssh, unsupported architecture error, didn't care I just needed ftp or sftp
I tried the simple ftp/sftp extension. worked pretty well. allowed me to connect to the server and add the remote directory to my workspace and with autosave the changes are uploaded immediately which means once power is out I can continue on my mobile phone(I have some android text editors that support ftp).
little problem. I discovered some things just don't work. even if I opened the whole directory, the contents will not be loaded unless I open them up like stylesheets and images and whatnot.
imagine having to open every single damn file before it appears on the browser, very annoying.
I need a solution, I have really tried.7 -
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>
TBC...3 -
I am just student looking for job, and got this pre interview test:
Develop an Android or iOS app with login and password input field, download button, place for image we prvided.
... reading further:
What we are looking for in the code ?
internal quality:
-consistent formatting of the source code
-clean, robust code without smells
-consistent abstractions and logical overall structure
-no cyclic dependencies
-code organized in meaningful layers
-low coupling and high cohesion
-descriptive and intention-revealing names of packages, classes, methods etc.
-single small functions that do one thing
-truly object-oriented design with proper encapsulation, sticking to DRY and SOLID principles, without procedural anti-patterns
-lots of bonus points for advanced techniques like design patterns, dependency injection, design by contract and especially unit (or even functional or integration) tests
external quality:
-the app should be fully functional, with every state, user input, boundary condition etc. taken care of (although this app is indeed very small, treat it as a part of big production-ready project)
-the app should correctly handle screen orientation changes, device resources and permissions, incoming calls, network connection issues, being pushed to the background, signing deal with the devil :D and other platform intricacies and should recover from these events gracefully
-lowest API level is not defined - use what you think is reasonable in these days
-bonus points if the app interacts with the user in an informative and helpful way
-bonus points for nice looks - use a clean, simple yet effective layout and design
... I mean really ? and they give me like 2 days ?4 -
To give you some context, in the past year we have change managers 3 times. Obviously our process (we were trying to follow agile) has suffer the most with all these changes since it seems the managers that have been assigned to us are not really IT people.
We are using TFS (I know...) for our builds and for our scrum and kanban boards, only use developers and QA are really using the board and all the benefits that it provides and the managers are oblivious to what TFS is. I have tried offering them training and workshops but they just don't want to learn.
And now they want us to keep the requirement information on word documents and Excel instead. I'm not sure I can continue my battle against Word/Excel...
I understand they are valuable tools but... Is it really difficult to use a tool that was made specifically for that and it's as easy as filling some text fields and click a button? Why is it so hard to understand that if you want to know the status of a task is as simple as following a link where you can find all the related information?
I think I'm loosing it, even the other developer on my team is in support of using Word... of course the guy doesn't know agile and his cards on the board are shit making him work with QA all the time....
Feel like I'm alone here....4 -
Week ago, leader of the artifacts/packages storage and mirroring with animal in Logo, fucked up our testing enabling new feature on theirs SaaS.
We created a ticket, they managed to fix that, although it took them long time to do so, probably due to timezones as fix was simple click on their Admin area.
Today they forwarded us email that there will be some changes that can impact prod ...
Great timing, great .. -
Just joined a new company and can only describe the merge process as madness.....is it or am I the one that is mad?!
They have the following branches:
UAT#_Development branch
UAT#_Branch (this kicks of a build to a machine named UAT#)
Each developer has a branch with the # being a number 1 to 6 except 5 which has been reserved for UAT_Testing branch.
They are working on a massive monolith (73 projects), it has direct references to projects with no nuget packages. To build the solution requires building other solutions in a particular order, in short a total fucking mess.
Developer workflow:
Branch from master with a feature or hotfix branch
Make commits to said branch and test manually as there are no automated tests
Push the commits to their UAT#_Development branch, this branch isn't recreated each time and may have differences to all the other UAT#_Development branches.
Once happy create a pull request to merge from UAT#_Development to UAT#_Branch you can approve your own pull request, this kicks off a build and pushes it to a server that is named UAT#.
Developer reviews changes on the UAT# server.
QA team create a UAT/year/month/day branch. Then tell developers to merge their UAT#_branch branches in to the previously created branch, this has to be done in order and that is done through a flurry of emails.
Once all merges are in it then gets pushed to a UAT_Testing branch which kicks off a build, again not a single automated test, and is manually tested by the QA team. If happy they create a release branch named Release/year/month/day and push the changes into it.
A pull request from the release branch is then made to pre-live environment where upon merge a build is kicked off. If that passes testing then a pull request to live is created and the code goes out into production.
Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh it's a total mess. I knew when I took on this job it would be a challenge but nothing has prepped me for the scale of the challenge!! My last place it was trunk based development, commit straight to master, build kicks off with automated testing and that just gets pushed through each of the environments, so easy, so simple!
They tell me this all came about because they previously used EntityFramework EDMX models for the database and it caused merge hell.9 -
I am the technical lead in a project which uses a C# based framework. It's a lot of drag and drop, and C# scripts can be embedded for fancy stuff.
Scripts in general are not hard to do, it's harder to understand the business rules rather than the code itself.
I got hired as a junior to build this project from scratch as an MVP, and we need another junior to add enhancements and minor changes required from our end users. Since management wants me to move on working on more mid-senior development stuff, I'm supposed to be only supervising the juniors work (in the hopes that one day they'll be able to work on their own).
We've had bad luck filling this position. Our last hire is a guy like 17 years older than me, supposedly with experience in said framework but OH DEAR GOD.
Fucktard can't understand requirements and corrections, isn't able to deliver a 20 line script without fucking up. I give him a list with 3 mistakes to fix and only fixes two, crap like that.
Now, hear me out, the mistakes are stuff like:
- Unused variables
- Confusing error messages
- Error messages written in spanglish (mix between Spanish and English, we're located in Latin America)
- Untested features, this is the worst of all.
You may say "but he's a junior", sure. But as I said, he supposedly has experience, more years in IT than me, and fine, you're allowed to fuck up a few times on your first tasks but not make the same mistakes over and over, specially since we've already sat down and addressed these issues in presence of the CTO.
Fuck this guy. I genuinely dislike him as a person also, he is from another latin country and we have some serious cultural differences. For instance, he insists on sucking your ass constantly, being overly well manered (we already saluted with the whole team at the daily stand up, stop saying hello, good day, regards in each of your fucking chat messages or task submissions), and other mannerisms that are hard to translate, but whatever, all of these attitudes are frowned upon here. They're not necessary, we just want to keep it simple, cordial and casual and see you deliver the crap that you're being paid for with a decent level of quality.
On Monday the CTO comes back from vacation, I'm looking forward to that meeting, gonna report his ass, there is evidence everywhere on our issue tracker.4 -
Had a lab for class that asked for something super simple in Java. All you had to do was submit your source code when it was done, go through some test conditions, and if it passed you were free to go. I finished the work in 10 minutes, yet spent the next 40 trying in vain to submit it. The work was fine, I knew it was right, but no matter what I changed, the damn thing wouldn't accept my work. After countless attempts and changes, getting the professor herself over there looking at it, I finally figured it out.
I was submitting the class file by mistake.
Some errors are harder than others, I guess. -
New project, make a simple change, a load of tests fail, stash changes to see if they ever passed, rerun tests: they pass ... rubbish must have been something i did. unstash changes, rerun tests to check the details: they pass ... walk away slowly
-
I use the ICU format often for translation because it's simple enough and supported on many platforms. It's something of a standard so I can use the same translation string format and similar library functions everywhere.
ICU is like a really simple templating language, somewhere between printf and something like smarty or twig simplified and specifically intended for internationalisation.
I updated a library providing ICU compatible parsing and formatting for one of the platforms I'm using and find tests break. I assume that only thing to change is the API. ICU very rarely changes and if it did it would be unexpected for it to break the syntax in a major way without big news of a new syntax.
The main contributor of the library has changed since some time last year. Someone else picked up the project from previous contributors.
Though the library is heavily advertised as using ICU it has now switched to using a custom extended format that's not fully compatible and that is being driven by use case demand rather than standardisation.
Seems like a nice chap but has also decided for a major paradigm shift for the library.
The ICU format only parses ICU templates for string substitution and formatting. The new format tries to parse anything that looks XML like as well but with much more strict rules only supporting a tiny subset of XML and failing to preserve what would otherwise be string literals.
Has anyone else seen this happen after the handover of an opensource library where the paradigm shifts?3 -
FUCKING FUCK FUCK FUCK
So yesterday following Java class i went to my next class everything went well (or so i thought) and in my next class my phone blows up with notifications (changes in grades notify my phone) i look down and my Java grade goes from an A to a D in seconds and i was just so confused, after he finished grading it goes up to a C but i was still confused. So the next day I go into class and talk to him about my grade and he says, “you never fix your projects so why would i grade any of them, i’ll just give you f’s” to which i responded, “i am confused what i’m doing wrong (it was a few simple projects where i had to make shapes with stars for example a triangle) my outputs are correct” and he responded with “Oh well i can’t help you” so now i have a C and i did everything right but of course because it wasn’t his way it was wrong.
he just makes me so mad, when a student asks for help who decides to respond with i can’t help, he can but he just won’t.
Fuck him.5 -
Recently we got a new project assigned and as always you are hyped, really really hyped...........
We were supposed to find all kind of driver updates (especially bios ones) for all devices the company owns. So first of all we thought:
EAAAASY! A little bit of web crawling, regex, etc.
.
.
.
.
B
U
U
U
U
T
!
We were sooooo soooo wrong these fucking manufacturer websites are absolutely awful to crawl or parse and nowadays there are no proper FTP Servers or something else anymore you could use to get the information. Every subsite is little bit different...
While coding and literally brute forcing possible urls (there was some kind of vague pattern) we learned AGAIN to appreciate proper developed and designed websites. Especially by devs who may have some more usage scenarios in mind for their site than simple human clients.
So thank you to all of you awesome web developers who design proper websites and web tools!
All in all it took us 2 weeks to come up with a proper solution (by the way we are a smal team of 3 devs) which somewhat works reliable and can deal with site changes etc. -
Ok so I'm working at this bank that hired me as a lead dev to do something about the quality of the software. Now we have CI builds with front end and back end unit tests, sonarqube, coding standards and much more. First release.of our software had only 1 low impact defect! All other software they released in the past always has dozens of bugs.
Now I have this front end guy in my team. He thinks he is really good and actually said my front end skills suck. What?? Wtf you saying? I'm truly full stack and doing front end way longer than he does and already did many many successful projects for awesome well known companies. So he refactores some JS component I wrote. Now this component is very simple but needed to look and behave different on different devices and screen sizes. It was working perfectly. Our tester did extensive tests on all sorts of devices and browsers: worked perfectly.
So, this 'front end king' is now already in the 3rd week of making changes to this component. And still it is not working properly. And he doubts my front end skills?!
Hahahaha go fuck yourself you god damn piece of fucking front end retard!! Everything you make doesn't worl right away and needs at least 4 revisions. Fuck you!2 -
My fucking lazy-ass coworkers haven’t made meaningful progress on anything for months. I’m brought in as the tech lead and these stupid fucks didn’t work on any meaningful shit for literal months. Their manager was asleep at the wheel and their old tech leads apparently need months to make a couple of minor database changes.
So I’m brought in to fix it, and… surprise! They’re still lazy pedantic assholes. And they’re shocked - shocked - that people expect them to start completing a project or two per quarter. Like these dense motherfuckers thought that they could be the most annoying pedants this world has ever seen, and also do no work.
I could have done their whole 5 month project myself in a month. No joke. It’s incredibly simple. But somehow the overhead of coordinating people who A. don’t work very hard and B. assume that every ticket needs special attention and 6 hours of ponderous thought has eaten into the time we have.
I don’t respect them in the slightest. They’re such shitty developers. Whoever signed off on their hire was fucking high.6 -
Years ago there was a booom with counter-strike portals and I wanted to have one by myself. I uploaded php-fusion on ftp, download a free template and fill content. But, basic profile was not so interesting as on other sites. So I found a dev, sgo wrote me better profile (for free). I wanted to show user id but didn't want ask him, so I tried (echo in html) 4 hours of trying print a simple variable. When I already done it, that feeling was beautiful and I realized, that I can do changes by myself and try other things. Next was basic VIP plugin (with sql injections etc.) which I sell to other people and that was the moment I know I will be dev
-
Compromise.
I think that sums up development pretty much.
Take for example coding patterns: Most of them *could* be applied on a global scale (all products)… But that doesn't mean you *should* apply them. :-)
Find a matching **compromise** that makes specific sense for the product you develop.
Small example: SOLID / DRY are good practices. But breaking these principles by for example introducing redundant code could be a very wise design decision - an example would be if you know full ahead that the redundancy is needed for further changes ahead. Going full DRY only to add the redundancy later is time spent better elsewhere.
The principle of compromise applies to other things, too.
Take for example architecture design.
Instead of trying to enforce your whole vision of a product, focus on key areas that you really think must be done.
Don't waste your breath on small stuff - cause then you probably lack the strength for focusing on the important things.
Compromise - choose what is *truly* important and make sure that gets integrated vs trying to "get your will done".
Small example: It doesn't really matter if a function is called myDingDong or myDingDongWithBells - one is longer, other shorter. Refactoring tools make renaming a function an easy task. What matters is what this function does and that it does this efficiently and precise. Instead of discussing the *name* of the function, focus on what the function *does*.
If you've read so far and think this example is dumb: Nope... I've seen PR reports where people struggled for hours with lil shit while the elephant in the room like an N+1 problem / database query or other fundamental things completely drowned in the small shit discussion noise.
We had code design, we had architecture... Same goes for people, debugging, and everything else.
Just because you don't like what weird person A does, doesn't mean it's shit.
Compromise. You don't have to like them. Just tolerate them. Listen. Then try to process their feedback unbiased. Simple as that. Don't make discussions personal - and don't isolate yourself by just working with specific persons. Cause living in such a bubble means you miss out a lot of knowledge and insight… or in short: You suck because of your own choices. :-)
Debugging... Again compromise: instead of wasting hours on debugging a problem, ASK for help. A simple: Has anyone done debugging this before or has some input for how to debug this problem efficiently?... Can sometimes work wonders. Don't start debugging without looking into alternative solutions like telemetry, metrics, known problems etc.
It could be a viable, better long term solution to add metrics to a product than to debug for hours ... Compromise. Find a fitting approach to analyze a problem instead of just starting a brute force approach.
....
Et cetera et cetera. -
context: Python Sanic Backend, Bulma Frontend
*this is a direct repost of my rant on my discord*
UGH WHY IS EVERYTHING TOO COMPLICATED FOR NO FUCKING REASON
I JUST NEED AN INTERACTIVE UI WITHOUT EXPLICITLY DOING IT MYSELF WITH TONS OF BOILERPLATE CODE
React - uses JSX
Angular - uses TypeScript
what's next? some weird fucking thing that's not even necessary for basic needs
And why the fuck does react need node.js or some JSX compiler to make things easier?
None of this makes any fucking sense
Why not just declare actual javascript objects and functions and that's fuckin it
I just need regex validation and sometimes, custom validation based on other things
Then when the user changes something a small modal shows up asking to save changes
None of this bullshit
It's deadass simple
I don't need routing
No need for your JSX fuckery
No need for your TypeScript shit
I barely would even fucking use those
REEE
Fuck react, Fuck angular
React would've been the perfect thing for this shit
but NO
they had to make things 100x worse
Fucking bitch
because react has event hooks
I can just listen to the changes
then display the modal and get done with it
All other processing is done in the backend
IT'S THAT SIMPLE REACT
Validation is provided by the backend, Just fucking use regex in the frontend and that's it
IT JUST NEEDS TO DO SIMPLE THINGS
IT DOESN'T TAKE ROCKET SCIENCE TO DO MINIMAL WORK9 -
Wanted to add a simple log entry when a model changes state in a certain way.
Unit tests pass, functional tests pass, manual tests through application GUI pass.
But for some fucking reason the single line logging call I added results in an error 500 when the application is accessed through a REST API.
Going to have a fun day tomorrow debugging this shit. -
Java I hate you! I've been stuck on an authentication issue for weeks now and just figured out what was wrong. The probem was my variable wasn't STATIC so it was passing in an old auth header every time. Literally I've been skimming and modifying my code like crazy for like 2 weeks and this simple modifier changes everything! Java I hate you and can't wait to migrate my code base to kotlin!4
-
TL;DR When talking about caching, is it even worth considering try and br as memory efficient as possible?
Context:
I recently chatted with a developer who wanted to improve a frameworks memory usage. It's a framework creating discord bots, providing hooks to events such as message creation. He compared it too 2 other frameworks, where is ranked last with 240mb memory usage for a bot with around 10.5k users iirc. The best framework memory wise used around 120mb, all running on the same amount of users.
So he set out to reduce the memory consumption of that framework. He alone reduced the memory usage by quite some bit. Then he wanted to try out ttl for the cache or rather cache with expirations times, adding no overhead, besides checking every interval of there are so few records that should be deleted. (Somebody in the chat called that sort of cache a meme. Would be happy , if you coukd also explain why that is so😅).
Afterwards the memory usage droped down to 100mb after a Around 3-5 minutes.
The maintainer of the package won't merge his changes, because sone of them really introduce some stuff that might be troublesome later on, such as modifying the default argument for processes, something along these lines. Haven't looked at these changes.
So I'm asking myself whether it's worth saving that much memory. Because at the end of the day, it's cache. Imo cache can be as big as it wants to be, but should stay within borders and of course return memory of needed. Otherwise there should be no problem.
But maybe I just need other people point of view to consider. The other devs reasoning was simple because "it shouldn't consume that much memory", which doesn't really help, so I'm seeking you guys out😁 -
Fighting to get a code repository up and running at my current company.
There is no central repository at all; people use their own local files and hope nobody else made changes. At least one product had to be retired because nobody could find the firmware source. I didn't even bother with git, I set up an SVN and showed them how basic and easy it was to use. They all agreed it was simple, and then continued to not use it. Facepalm.3 -
When you get an assignment by mail,
- you do those changes exactly as being asked, albeit one insignificant extra visual thing,
- you send back exactly what's changed (which is exactly what was being asked, but naming things as they are, clearer than I can ever explain changes),
- you go to the person that has assigned the very thing, explain it, he seems to get it,
...
Then.. a few hours later.. you get a reply via mail:
"Come explain what you're saying here, because I don't get it."
🤨 -
I've recently been promoted and I'm going from hourly to salaried. Amidst this crisis and the promotion I've gotten lost in the big changes and forgot to ask the simple questions.
When tf do I leave work if I'm not tracking my hours anymore? (Or for the near future, log off of work)
I know the general consensus is "when the work is done", but we all know the work is never truly done5 -
If i have 2 branches on git
- main
- infra
You cannot push directly to main. It is forbidden. You can only merge to main
Now. Once i push to infra branch. Assuming all the shit went good pipeline passed tests passed etc. Then i merge it to main.
Now
Locally while im on infra branch. I have to pull latest changes from main otherwise ill fuck up everything and cause conflicts.
After trial and error i realized i just have to do:
git fetch
This fetches all shits from main (defaukt branch) into infra branch. And now it works. No rebase. No pull. Wtf?
Is this the correct way to do it?
Also i need someone to explain this to me like im 5:
- git pull
- git pull --rebase
- git fetch
What is the difference between those 3 commands? I tried googling and chatgpting but i cant seem to understand any explanation. Explain it to me in simple terms with examples15 -
So... I got a simple task of choosing the best fitting NIDS/MIDS, as well as deploying it, configuring to fit a specific use case and monitor its outputs for one client at work today...
I'm a little... Anxious. At a first glance, setting up like... Snort... Doesn't seem all that difficult, but I have no idea where this takes me and if what I come up with will ultimately be useful or not... Until now I did simple service configuration changes like apache, nginx, php... And a bit of database management with things like mariadb, mysql, postgresql, mongo or elastic... I feel so... Out of my usual waters.
Do you guys thing a person without a title in network security (or... Any title for that matter) can even manage this?...1 -
Somehow mocking xhr requests (?) for Axios is really hard to make it work. I use React Cosmos as I'm re-doing the frontend of this already running in production and works great, but when my component communicates with the backend it breaks and I'm unable to test the full behavior.
Then, it occurred to me that trying to mock Axios may not be the best. So I came with this scheme where I would have a configuration variable with a default value and change that when I need to work with React Cosmos, which in turn changes the behavior of `/auth` to return a valid JWT in response to a GET, put an Axios interceptor in my outermost Cosmos decorator and BAM! suddenly was able to develop and test my React components closer to how they would work in production.
It surprises me how simple this endeavor was, and because everything runs orchestrated by docker compose things run smoother.
(this is not an excuse to not to learn how to deal with the mocking issues of Axios, after all I wont have a working backend every time I work in some frontend application)5 -
So I created simple blog for family member. She only writes three posts within a six month time frame, and then this morning she sends me an email asking for some changes. In it says if it's to time consuming that she can create a blogspot...
-
Random learnings/realisations/hypothesis:
i have found a sense of happiness in weird symbiotic environment : being rich in a poor environment and live with a poor-but-secretely-rich lifestyle.
i call it the "sheep-hoodie" lifestyle: being a wolf in a herd of sheeps but not with a sheep's skin glued to your body. rather a hoodie so you can be a friendly wolf , ferocious wolf and a friendly sheep whenever you want to.
my 1 group of friends are in a sheep phase : struggling in their life , crunched on money, not saving a lot or focused on savings and stuff. At least that's what shows up from their discussions. however when we are together, i see that we are always supporting each other, and sharing resources/helping each other while having fun
my another group of friends have a wolf lifestyle:
they are insanely rich, if you want to party/do something with them at 'their' level, you gotta have a lot of cash to burn . they are wolves because they know how to sell their stuff, whom to sell and how to retain the info for success. i don't enjoy much with them as their solutions to life problems end up with something that involves a lot of money than effort.
So my lifestyle is to earn like them, but live like my broke friends. they think that am earning 20% of what i earn now, and am also in lots of debts and family crisis. someday my lie is gonna burst when i buy expensive stuff lol
--------
#2
i have realised that i have an OCD for silence and psychotic reaction to noise . for me ,
Silent Environment >> sex >> any relationship.
I might react so aggressively to noise while trying to focus that i may end up breaking the closest of relations with anyone
--------------
#3
thinking of having 3 twitter accounts just to fix the problem of devrant not saving content of dormant accounts :
- professional : an id where i will share my professionally stupid questions, achievements, debates etc
- personal/partial-anon : an id where i will share my personal thoughts and stuff. it might also include devrant screenshots / embarrising content that i make here
- true-anon : a full anonymous account for my(some) extreme thoughts, trigger content and explicit researches
my current twitter feed is a mix of first 2, but making 2 seperate accounts might give me more freedom(the level of devrant) to express myself than what i do now (as my followers are also interesting people but mostly related to tech)
guess i should move my tech content there than my personal content.
------------------------------
#4
making an early opinion about something should only be done to research for truth/content/conversion/hype . final opinion should always be made after you trust something with a research. for eg, initial opinion of Elon Musk was he being a bad guy, but now after seeing his crazy ideas and approach towards twitter, he looks like someone who can truly make it a money minting machine.
------------------------------
#5
A simple perception towards making money as not being a bad thing does wonders at a management level and life .
liberal opinion of twitter layoff and later changes were emotional and blaming, but thinking from a business approach, his company partners(and whoever he likes) now have special golden badges to feel like VVIP and have an orgasm, while he gave a dummy melon to every person on earth to pay for feeling like a VIP and have an orgasm.
a brilliant tactic to make money without anyone calling the minting of money as BAD. genius
------------------------------
#6
was randomly checkin Insta, saw an ex-collegue share a random deep thought quote, and i realised that i might have known her for just a week or 2 in college, but she had a very nice nature.
However, she was the daughter of a very rich ass dad and had almost everything in life. she gave a bit spoilt(for me) look, like someone who did ciggs or drink, but her talks then and our chats later just on chat gave me a very nice hustler vibe (the type of people i like: hustling and professional)
I indirectly asked her on a date and she agreed. so, this is something very interesting for me, as i am hopelessly single and full of judgemental opinions/ strict rules. share your tips and notes on how to have a successful date, and stuff that one must NOT do . much grateful if you do not come under rule 29 of internet and share your POV -
We have an internal nuget package that wraps up the IConfiguration+ConfigurationBuilder for various .net core console/service apps (TL;DR, because people got creative), and it has a dictionary property for the common sections we use. AppSettings (for backward compatibility), ConnectionStrings, and ServiceEndpoints. If the need arises, I can add methods to return any type of object (no one has requested yet, we try to keep configs dead simple)
ex. var myDatabaseConnectionString = ConfigurationManager.ConnectionStrings["MyDatabase"];
Code review for someone who updated a .net framework app to .net core and they wrote their own IConfiguration wrapper for accessing the appsettings.json file, so I pointed out that we already had a library for that.
In the reply, he said he couldn't use our library because it had an 'AppSettings' property and since his appsettings.json file didn't have that section, he didn't want to cause a runtime exception.
OK, WTF...I even sent him a link to the documentation (includes explaining the backward compatibility part)...why the frack would you think because a property exists and you don't use it, that would cause some kind of runtime exception?
We have dozens of .net framework apps migrated to .net core with zero code changes and no one ever brought this up as a concern (because, why would they?)
Deep breath...ahhh...I respond that not having an AppSettings section in the appsettings.json file won't cause an exception, if you don't have one, don't need it, you don't have to use it.
He went ahead merged+committed his code anyway with his own IConfiguration+ConfigurationBuilder plumbing.
Code addiction is real kids...it's real.2 -
Me: * Not having fun writing hundreds of tests/assertions for an API *
Also me: * Submitting changes without running my tests *
Production: * BROKEN *
RUN YOUR EFFING TESTS EVEN IF THE CHANGES ARE SMALL OR STRAIGHTFORWARD OR SIMPLE OR WHATEVER -
So we are 8 devs in our scrum team but 2 major refactors felll on my shoulders (initially they were supposed to be fairly simple tasks, but like that malcolm in the middle video 2 tasks became 10 tasks in the past month) and I have been working from 11 am till 4 am for the past 1 or 2 weeks. Just yesterday I worked until 7am. Slept only 4 hours... Trying to play it cool, since I asked for a raise 5 weeks ago and still waiting for answer.
I havent told anyone because partially its my own stubborness of wanting to learn things and not wanting to bother others with questions, but Im starting to loose it.
And all because my pushed initial features resulted in unexpected blockers so scrum team leaders had an all hands meeting and my newly appointed teamlead started shitting bricks.
Meanwhile all other devs pick a low hanging fruit tasks and sit around for 2-3 weeks while I have to do heavy lifting alone with some guidance from other devs.
We dont even have QA resources. We have 2 new hires who will be useful maybe after 3-4 months and we have 1 QA guy who judging by his output is working part time. Also same guy managed to take 2 weeks of vacation in the past 4 weeks.
So due to lack of QA and due to code reviews taking long time it takes over a week for code to be reviewed and tested and each time if a blocker happens I have like 2 or 3 days to rush until end of the sprint in order to fix the feature for upcoming release or I have to move tasks to another sprint and feel bad about spillover.
Imagine implementing something in 2 weeks, just to wait for another 1-2 weeks for changes to be reviewed/tested and now having to fix blockers. And then teamlead comes up to you with being surprises how come shipping of this is taking longer than 4-5 weeks? Dude, I did my fucking part in 1-2 weeks, its not my fault that other devs perform code reviews late and they dont even launch the app to test. Its not my fault that we have very limited QA resources and our only QA guy is not even testing out everything properly.
Seriously Im starting to fucking loose it. We are basically 8 devs in a team where 2 people are doing all the heavylifting.