AboutBugfixes and some feature improvements.
SkillsFat stacks of web
Joined devRant on 7/9/2019
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
The lead dev left the company two weeks ago. His last hurrah involved committing a bunch of complicated code into our API. The code he writes is generally overly coupled but this particular code is INSANE.
It is so coupled that the tests for it almost mock the entire application end to end. I only found this heap of garbage when the deployment tests were hung after I made a simple change in a totally unrelated file. THEY DIDNT FAIL. JEST GOT INTO A STATE WHERE IT CANT CONCLUDE AND HAS NO ERROR MESSAGES. We are taking about entirely different parts of the code. As far apart in the code as it can get. It took six hours of playing Sherlock Holmes to figure out what was breaking.
He got the most junior developer to approve the garbage PR as well.26
I built very involved code with multiple auth systems, async programming, business logic, error handling, and etc. I was asking for the missing environment variables during the call with devops and had a screen share going. Environment variables were the last thing I needed before knowing if it would work. I filled in the config and all the code worked perfectly.
The devs lost their shit. One suggested that I had somehow tested it beforehand because it is impossible that it would work the first time. “How? I didn’t have config details or access to any of the remote APIs until now.”
The dev lead finished the call with, “That was some big brain next level shit.” Then they went and reviewed and tested it after the call and didn’t have much to suggest besides naming nitpicks.
It was at that point I knew I was a hero to the other devs.3
I was working in a manufacturing facility where I had hundreds of industrial computers and printers that were between 0 and 20 years old. They were running on their own clean network so that someone has to be in the manufacturing network to access them. The boss announced that the executives will be pushing a “zero trust” security model because they need IoT devices. I told him “A computer running Windows 98 can’t be on the same VLAN as office computers. We can’t harden most of the systems or patch the vulnerabilities. We also can’t reprogram all of the devices to communicate using TLS or encrypt communications.“ Executives got offended that I would even question the decision and be so vocal about it. They hired a team to remove the network hardware and told me that I was overreacting. All of our system support was contracted to India so I was going to be the on-site support person.
They moved all the manufacturing devices to the office network. Then the attacks started. Printers dumped thousands of pages of memes. Ransomware shut down manufacturing computers. Our central database had someone change a serial number for a product to “hello world” and that device got shipped to a customer. SharePoint was attacked in many many ways. VNC servers were running on most computers and occasionally I would see someone remotely poking around and I knew it wasn’t from our team because we were all there.
I bought a case of cheap consumer routers and used them in manufacturing cells to block port traffic. I used Kali on an old computer to scan and patch network vulnerabilities daily.
The worst part was executives didn’t “believe” that there were security incidents. You don’t believe in what you don’t understand right?
After 8 months of responding to security incident after security incident I quit to avoid burning out. This is a company that manufactures and sells devices to big companies like apple and google to install in their network. This isn’t an insignificant company. Security negligence on a level I get angry thinking about.10
I have to build a database migration that generates user handles. The user handles are unique within an organization. The user can change them. The auto generated handles are either the first name + last name, or the business name depending on which user type it is. Unless it would be a duplicate. Duplicates auto increment if the handle is taken. The character limit for a user handle is the same length as first name plus last name so I have to check for possible overflow if I add digits. I also have to see if the generated name is in the DB already because a user could have custom entered the result of the auto generation.
This has to be programmed async. The DB driver is using a transaction but multiple calls have to be made to check if the generated handle exists for that organization. Also I have to check the migration script itself for possible duplicates. 3/4 of the users have a handle and with the scale there will definitely be duplicate names.
My idea is if there is a collision, use a UUID and let the users pick something nicer next time they log in. Business says “Reeeeeee!!!! The users shouldn’t see a UUID!!! You can do this!!!” Absurd uniqueness requirements. Absurd backfill procedure. Absurd business rules.2
There are only three dev jobs:
- Hate the job
- Feel neutral
- Love the job
Two are choices that you make because of where you are in your life. The other choice you get stuck with and only stay long enough to avoid damage to your reputation.
Baby or bills? Often the middle choice is the best choice. Dream jobs come at a massive cost and risk to your personal stability.9
The most unproductive meeting was definitely a day long meeting about “inclusiveness” with an emphasis on toxic masculinity. It was all the dev teams for a whole day which was ballpark 40-60 devs total. Most of us were like, “We have never even had a woman on our teams to alienate.” Eventually a dev hiring manager allowed the three female devs to leave half way through because they were being repeatedly singled out by the HR lady running the meeting.
The rest of us sat through another half day of the HR lady telling us on how bad we are because we are men.19
You are so young to be married. Why did you get married is she like super hot?
Cmon you can tell us if your wife is super hot.7
I was working on a team with people with various employment statuses. Contractors, employees of the client, and me as a regular full time employee of the company that “owned” the contract. My HR manager gave us a presentation about our reporting structure. I had at least seven managers for different reasons across various projects.
I got a new position so needed to resign but I had no idea which managers were the ones I should notify. I looked at the org chart that the HR lady showed. I sent my resignation to five managers that would be affected by my leaving. Unknown to me my project manager was actually a contracting manager hired by the client. He let his employer, the client, know that the lead dev quit.
Apparently it destabilized the contract for my employer. If I hadn’t just issued resignation they would have fired me for telling a customer about a significant internal staffing change. They didn’t fire me because the optics would have been worse for them.2
I was hired to do a massive project as a temp. I got part way done and they hired me full time to finish. Then I moved to putting out production fires for unrelated systems until I left.2
Don’t work under a lead dev that is single focused on immediate problem solving. You will only ever put out fires caused by their small-mindedness and miss on learning to solve bigger problems.2
I made a functional parsing layer for an API that cleans http body json. The functions return insights about the received object and the result of the parse attempt. Then I wrote validation in the controller to determine if we will reject or accept. If we reject, parse and validation information is included on the error response so that the API consumer knows exactly why it was rejected. The code was super simple to read and maintain.
I demoed to the team and there was one hold out that couldn’t understand my decision to separate parse and validate. He decided to rewrite the two layers plus both the controller and service into one spaghetti layer. The team lead avoided conflict at all cost and told me that even though it was far worse code to “give him this”. We still struggle with the spaghetti code he wrote to this day.
When sugar-coating someone’s engineering inadequacies is more important than good engineering I think about quitting. He was literally the only one on the team that didn’t get it.2
I hate developers that don’t apply logic to non programming concepts. Like when someone declares what they don’t want instead of what they want. For my sake just say what you want to see.
I’m thinking of an animal. Guess what it it is not. Congrats you probably won.
I’m thinking of an animal. Guess what it is. Sorry you probably got it wrong.
If you feel that you need to make systems to enforce code standards... The team actually needs to learn to self-enforce your code standards. If an automated tool is determining standards it will be tricked into allowing clean-looking code with poor design choices into your project.
This chaps my ass.3
HR made a day long inclusiveness meeting. About why there are so few women in the department. Basically the conclusion the HR rep was looking for was “toxic masculinity” and it was super uncomfortable.
The engineering teams couldn’t actually participate much because most of them worked on teams without any women and have absolutely nothing to do with hiring. The male engineers were trying to play along and give the right answers. We had to do flip charts and beak into teams and etc.
The HR kept singling out the same three women in engineering and telling the men to “shut up and listen to them”. The female engineers were like, “i don’t know. I don’t have much to say about it.” The HR rep continued to drill those three women to the point that it was uncomfortable.
The engineering hiring manager lost it before noon. He went to his desk and grabbed a stack of resumes. “You gave me a stack of 60 resumes. Looking at names only four applicants are female. Those applicants don’t have education or experience for engineering. If you want more female engineers in the office you have to put qualified applicants into the stack. Forcing these three engineers to talk in front of our department over and over and saying the men have to shut up is not making the workplace less toxic.” Then he told the three engineers, “This meeting is now optional for you three and you are welcome to do anything you want with your time.”
After lunch, all the female engineers went back to their desk and worked. The HR continued to shame the men in an angrier tone for the rest of the day telling everyone “how men can be” from personal experience because they were the ones now representing all women.
Eight bloody hours of that.132
I was doing a demo and went to quickly launch PGAdmin from Start. I hit the Start key and typed "pgad" because that usually works as an application launcher for "PGAdmin". Cortana decided to ignore the program in the start menu and instead showed the audience info about about PGAD.
A whole room full of people now know about
PERSISTENT GENITAL AROUSAL DISORDER
Code is a highly detailed description of what a computer should do. If that description becomes inaccurate we will remove inaccurate parts. Take pride in writing good code, recognize that it was useful for a while, but don’t get attached to it. It will stay in the git history.
If you see code as your baby, know that the team might need to kill your baby.1
I HATE WINDOWS' WINDOW MANAGEMENT. I have two monitors and nothing can be maximized. Windows' spaces are terrible as well.
I am building in the back end in VS Code.
I have three terminals open because I need them to run multiple parts of the app locally.
I have postman open to try requests.
I have firefox for the orm system's documentation.
I have my database tool running as well.
I have an ERD diagram floating in a window.
I have another VS Code window showing a diff of my JSON compared to the version I'm replacing.
Also all of my team communication tools.
I have never hated shuffling windows around so much. Would it kill us to use some command line tools for http instead of Postman? Could we please get a decent shell in windows? Could we get some simple ways to switch between virtual desktops? Click click click. I can't automate clicking. Why do we use the most clicky tools we can find?17
After falling down the Manjaro hole for months I yesterday decided to leave Manjaro for Pop!_OS. I lose a bit of performance and battery life, I gain a ton of UI polish, I gain a lot of package support, and I lose some hard earned nerd points.
My NAS has an easy to install Debian tool for file sync. I can use Etcher for making bootable USB/SD for my raspberry pi. Firefox is the default browser and I can use all my plugins and password manager out of the box. Apt is easier to use than pacman. Easier Python development setup. Docs are more often written for Debian. (For some reason I spent hours trying to get powerline and oh-my-zsh working right in manjaro’s xfce terminal before giving up.)1
I’m bombarded with so many forms of possible entertainment and none of them bring any contentment. So much fighting about who is “putting effort into maintaining friendships” and etc. Is it normal to want to avoid people more than health authorities suggest during a pandemic?6
Self documenting code is a fucking myth you bloody sheep.
Write “self documenting code” then add a fucking comment or two explaining why the fuck the code deserves should be there because nobody can see what the fuck it is doing or understands how the whole collection of microservices works. I’m sick of spaghetti code bullshit full of accidental redundancy because it is impossible for anyone to realize why something is there at a glance.
I renamed different “Contract” classes today by adding numbers before code review.
All of these classes are supposed to be the same but somehow they aren’t and you self documenting dumbasses missed it. Don’t gripe about the numbered classes in the repo… fix the fucking code and collapse the classes so we don’t have four sections of code describing the same fucking structure from a http get with different interfaces because four people couldn’t read the whole like some fucking computer.11
Code review today and the senior says "Avoid comments. Putting the procedure in a well named function where it can modify those class properties will work just as well."
ARE YOU KIDDING ME? YOU ARE GOING TO PREFER CODE OVERHEAD OVER COMMENTS? I AM SO TRIGGERED RIGHT NOW I CAN'T17
I am currently blocked from doing my job by a firewall policy handed down from corporate that prevents WSL2 from connecting to the internet. Three days of no dev environment and counting.
We make linux software to be hosted on linux in linux containers in linux. We use linux command line tools to make it work.
"NO! WE ARE THE ALL-POWERFUL IT DEPARTMENT AND YOU MUST USE WINDOWS BECAUSE FUCK YOU THAT'S WHY."14