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 - "i shouldn't have done that"
-
One of our web developers reported a bug with my image api that shrunk large images to a thumbnail size. Basically looked like this img = ResizeImage(largeImage, 50); // shrink the image by 50%
The 'bug' was when he was passed in the thumbnail image and requesting a 300% increase, and the image was too pixelated.
I tried to explain that if you need the larger image, use the image from disk (since the images were already sized optimally for display) and the api was just for resizing downward.
Thinking I was done, the next day I was called into a large conference room with the company vice-president, two of the web-dev managers, and several of the web developers.
VP: "I received an alarming email saying you refused to fix that bug in your code. Is that correct?"
Me: "Bug? No, there is no bug. The image api is executing just as it is supposed to."
MGR1: "Uh...no it isn't. Images using *your* code is pixelated and unfit for our site and our customers."
MGR2: "Yes, I looked at your code and don't understand what the big deal is. Looks like a simple fix."
<web developers nodding their heads>
Me: "OK, I'll bite. What is the simple fix?"
<MGR2 looks over at one of the devs>
Dev1: "Well, for example, if we request an image resize of 300, and the image is only 50x50, only increase the size by 10. Maybe 15."
Me: "Wow..OK. So what if the image is, for example, 640x480?"
MGR1: "75. Maybe 80 if it's a picture of boots."
VP: "Oh yes, boots. We need good pictures of boots."
Me: "I'm not exactly sure how to break this to you, but my code doesn't do 'maybe'. I mean, you have the image from disk.
You obviously used the api to create the thumbnail, but are trying to use the thumbnail to go back to the regular size. Why not use the original image?"
<Web-Dev managers look awkwardly towards the web devs>
Dev3: "Yea, well uh...um...that would require us to create a variable or something to store the original image. The place in the code where we need the regular image, it's easier to call your method."
Me: "Um, not really. You still have to resolve the product name from the URL path. Deriving the original file name is what you are doing already. Just do the same thing in your part of the code."
Dev2: "But we'd have to change our code"
Mgr2: "I know..I know. How about if we, for example, send you 12345.jpg and request a resize greater than 100, you go to disk and look for that image?"
<VP, mgrs, and devs nod happily>
Me: "Um, no that won't work. All I see is the image stream. I have no idea what file is and the api shouldn't be guessing, going to disk or anything like that."
Dev1: "What if we pass you the file name?"
<VP, mgrs, and devs nod happily again>
Me: "No, that would break the API contract and ...uh..wait...I'm familiar with your code. How about I make the change? I'm pretty sure I'll only have to change one method"
VP: "What! No...it’s gotta be more than that. Our site is huge."
<Mgrs and devs grumble and shift around in their chairs>
Me: "I'm done talking about this. I can change your code for you or you can do it. There is no bug and I'm not changing the api because you can't use it correctly."
Later I discovered they stopped using the resize api and wrote dynamic html to 'resize' the images on the client (download the 5+ meg images, and use the length and width properties)22 -
This is more just a note for younger and less experienced devs out there...
I've been doing this for around 25 years professionally, and about 15 years more generally beyond that. I've seen a lot and done a lot, many things most developers never will: built my own OS (nothing especially amazing, but still), created my own language and compiler for it, created multiple web frameworks and UI toolkits from scratch before those things were common like they are today. I've had eleven technical books published, along with some articles. I've done interviews and speaking engagements at various user groups, meetups and conferences. I've taught classes on programming. On the job, I'm the guy that others often come to when they have a difficult problem they are having trouble solving because I seem to them to usually have the answer, or at least a gut feel that gets them on the right track. To be blunt, I've probably forgotten more about CS than a lot of devs will ever know and it's all just a natural consequence of doing this for so long.
I don't say any of this to try and impress anyone, I really don't... I say it only so that there's some weight behind what I say next:
Almost every day I feel like I'm not good enough. Sometimes, I face a challenge that feels like it might be the one that finally breaks me. I often feel like I don't have a clue what to do next. My head bangs against the wall as much as anyone and I do my fair share of yelling and screaming out of frustration. I beat myself up for every little mistake, and I make plenty.
Imposter syndrome is very real and it never truly goes away no matter what successes you've had and you have to fight the urge to feel shame when things aren't going well because you're not alone in those feelings and they can destroy even the best of us. I suppose the Torvald's and Carmack's of the world possibly don't experience it, but us mere mortals do and we probably always will - at least, I'm still waiting for it to go away!
Remember that what we do is intrinsically hard. What we do is something not everyone can do, contrary to all the "anyone can code" things people do. In some ways, it's unnatural even! Therefore, we shouldn't expect to not face tough days, and being human, the stress of those days gets to us all and causes us to doubt ourselves in a very insidious way.
But, it's okay. You're not alone. Hang in there and go easy on yourself! You'll only ever truly fail if you give up.32 -
I feel like a fucking abomination at the moment.
I have been working on an app that is almost like Wireshark. More so for practice than anything else.
I decided that today I would try it out on the network here at my house, so I started the packet sniffer and wanted to see what was going on. I was checking for unencypted text (like telnet and whatnot) and came across this odd address that I hadn't seen before.
I did something that I shouldn't have done, and I fucking clicked and did the equivalent of "follow TCP stream" on wireshark. I fucking went and looked what the text being sent over this fucking network was.
It was my girlfriend, using fuck knows what messenger, but it was unencrypted. I just found out that she is cheating on me. I don't want to go into what the texts exactly say, because it fucking hurts me deep down.
Why didn't she just use whatsapp or something, fuck man. I really don't need this in life at the moment. I am genuinely trying to get my shit in order, I have been coding my ass off at night for extra money to make it, I have been working overtime where I can - fuck I have even tried sucking up to management (I would never do this under normal circumstances) - and to top this off, the motherfucking tax man is giving me hell.
Fuck sakes.
If you want to cheat, fucking do it properly. Because I am in a state of pure sadness and hatred and the moment - and I don't know what the fuck to do.25 -
I absolutely HATE "web developers" who call you in to fix their FooBar'd mess, yet can't stop themselves from dictating what you should and shouldn't do, especially when they have no idea what they're doing.
So I get called in to a job improving the performance of a Magento site (and let's just say I have no love for Magento for a number of reasons) because this "developer" enabled Redis and expected everything to be lightning fast. Maybe he thought "Redis" was the name of a magical sorcerer living in the server. A master conjurer capable of weaving mystical time-altering spells to inexplicably improve the performance. Who knows?
This guy claims he spent "months" trying to figure out why the website couldn't load faster than 7 seconds at best, and his employer is demanding a resolution so he stops losing conversions. I usually try to avoid Magento because of all the headaches that come with it, but I figured "sure, why not?" I mean, he built the website less than a year ago, so how bad can it really be? Well...let's see how fast you all can facepalm:
1.) The website was built brand new on Magento 1.9.2.4...what? I mean, if this were built a few years back, that would be a different story, but building a fresh Magento website in 2017 in 1.x? I asked him why he did that...his answer absolutely floored me: "because PHP 5.5 was the best choice at the time for speed and performance..." What?!
2.) The ONLY optimization done on the website was Redis cache being enabled. No merged CSS/JS, no use of a CDN, no image optimization, no gzip, no expires rules. Just Redis...
3.) Now to say the website was poorly coded was an understatement. This wasn't the worst coding I've seen, but it was far from acceptable. There was no organization whatsoever. Templates and skin assets are being called from across 12 different locations on the server, making tracking down and finding a snippet to fix downright annoying.
But not only that, the home page itself had 83 custom database queries to load the products on the page. He said this was so he could load products from several different categories and custom tables to show on the page. I asked him why he didn't just call a few join queries, and he had no idea what I was talking about.
4.) Almost every image on the website was a .PNG file, 2000x2000 px and lossless. The home page alone was 22MB just from images.
There were several other issues, but those 4 should be enough to paint a good picture. The client wanted this all done in a week for less than $500. We laughed. But we agreed on the price only because of a long relationship and because they have some referrals they got us in the door with. But we told them it would get done on our time, not theirs. So I copied the website to our server as a test bed and got to work.
After numerous hours of bug fixes, recoding queries, disabling Redis and opting for higher innodb cache (more on that later), image optimization, js/css/html combining, render-unblocking and minification, lazyloading images tweaking Magento to work with PHP7, installing OpCache and setting up basic htaccess optimizations, we smash the loading time down to 1.2 seconds total, and most of that time was for external JavaScript plugins deemed "necessary". Time to First Byte went from a staggering 2.2 seconds to about 45ms. Needless to say, we kicked its ass.
So I show their developer the changes and he's stunned. He says he'll tell the hosting provider create a new server set up to migrate the optimized site over and cut over to, because taking the live website down for maintenance for even an hour or two in the middle of the night is "unacceptable".
So trying to be cool about it, I tell him I'd be happy to configure the server to the exact specifications needed. He says "we can't do that". I look at him confused. "What do you mean we 'can't'?" He tells me that even though this is a dedicated server, the provider doesn't allow any access other than a jailed shell account and cPanel access. What?! This is a company averaging 3 million+ per year in revenue. Why don't they have an IT manager overseeing everything? Apparently for them, they're too cheap for that, so they went with a "managed dedicated server", "managed" apparently meaning "you only get to use it like a shared host".
So after countless phone calls arguing with the hosting provider, they agree to make our changes. Then the client's developer starts getting nasty out of nowhere. He says my optimizations are not acceptable because I'm not using Redis cache, and now the client is threatening to walk away without paying us.
So I guess the overall message from this rant is not so much about the situation, but the developer and countless others like him that are clueless, but try to speak from a position of authority.
If we as developers don't stop challenging each other in a measuring contest and learn to let go when we need help, we can get a lot more done and prevent losing clients. </rant>14 -
Sorry, !dev-related.
Today I wake up tired. Mother barges into my room and tells me I should be already ready, takes time to fucking argue, then does some cleaning(As if I never do it or something), and this evening she starts arguing about that again and just disconnects the plug from my PC, telling me I shouldn't have gotten a person who takes preparing way longer than me and who also got out of the car when I was ready to take off late AND that I should apologise to her for speaking „in a rude manner“, when just a few seconds ago from that she hit me. That hit wasn't painful. It still was a hit, though. Do I have to say how angry I got? As if I needed that. I'm already having trouble with not wanting to kill myself for a whole week nonstop. And she tells me I have to apologise or I don't get my PC back. Oh, I haven't gotten to the best part: My birthday's coming really soon. A week and a day later. Beats me how I will have to force myself to smile like an idiot again just because the actual idiots cannot understand the shit they've done to my mind. So much so I may not be functioning at all if I stay with them much longer.
This combined with all my family telling me how insane I supposedly am etc.
I might try a photography school. My friend(who could be my twin), has been nagging me about trying it...
I need a job.
I need a fucking place away from these blood-sucking leeches.
I need to understand how my horrible self-esteem has potentially fucked my whole life up and how much nerves I wasted on my goddamn nuclear family.
I also need to learn to forgive myself.
Many more, but I will end this here.39 -
*has a 94% in information security class*
*teacher gives us study guide for final exam*
*heavily take notes in the margins and study the packet obsessively for four days*
*come in to take the final*
*exam doesn't mention a single thing on the study guide*
*makes a 78 on it*
*final class grade drops down to an 87% (a letter grade lower than before)*
"Congratulations, Miss Meowijuanas! You had the highest score on the final!"
*hands me a candy bar like I'm a child*
"Maybe it's because you gave the class an extremely poor study guide which emphasized on material that wasn't covered on our actual exam? You shouldn't be congratulating me on a 78."
*teacher says he used the study guide from another teacher and must not have looked at it thoroughly enough*
*shakes hand and thanks him for having me as a student this semester*
*kicks a trash bin outside of the university 6 or 7 times*
I'm not even mad about my grade. An 87% is nice, although I know I would've done better otherwise. It's his pure, unmasked and unashamed laziness that makes me feel so violent. It's showing students like me that an educated individual like yourself couldn't be bothered to take five minutes or so to read over a fucking document for his students to make sure they're properly prepared for a major exam.
How the fuck can you be hired as a university professor and be this obvious about not putting effort into your work.
Fuck you, sir.
And fuck you again for all of my other classmates who did poorly because they followed your inaccurate study guide.13 -
So I own a webshop together with a guy I met at one of my previous contract jobs. He said he had a great idea to sell product X because he can get them very cheap from another European country. Actually it is a great idea so we decided to work together on this: I do everything tech related, he does the non tech stuff.
Now we are more than 1 year in business. I setup a VPS, completely configured it, installed and setup the complete webshop, built 2 custom PrestaShop modules, built many customizations, built a completely new order proces (both front and back end), advertised quite some products, did some link building, ensured everything is in place to do proper SEO, wrote some content pages, did administration and tax declarations, rewrote a part of a PrestaShop component because it was so damn inefficient and horribly slow, and then some more. Much more.
He did customer relation management, supplier management and some ad words campaigns. Promised me many times to write the content for our product pages. This guy has an education in marketing but literally said: I'm not gonna invest in creating some marketing plan. I have no ambition in online marketing.
What?! You have the marketing knowledge and skills but refuse to use it to market our webshop and business? What the fuck is wrong with you?!
Today he says to me: 'Hey man, this is becoming an expensive hobby as we don't sell much and have lots of costs. I don't understand why I should be the one to write these content pages. Everything you did in the past 8 months can be done in less than 20 hours! You are a joke and just made it a big deal by spreading your work over so many months. I know for sure because I currently work at a company where I'm surrounded by front end devs! Are you fucking crazy?! You're a liar.'
He talks like this to me every 2 months or so while he can't even deliver the content for 1 single product in 6 fuckin' months! We even had to refund a few of our customers because Mr. client relations manager didn't respond to their e-mails within 1 fucking week!! So I asked him how could that have happened as you do the client relations and support. Well, he replied to me: 'Why didn't YOU respond to our clients? You don't log on in our back office at least once a day?!'.
Of course I do asshole. But YOU don't. He replied that I was lying just like I was lying about what I did for our business.
So, asshole, let's have a look at PrestaShops logs to see who's logging in daily. Well, you can probably guess who's IP was there in most of the entries. It wasn't his.
So, what the fuck have you been doing then?! You can't even manage to respond quickly to a client?!! We have maybe 50 clients and if we get 1 question a month by email it is already a lot. But you keep bitching, complaining and insulting me instead?!!!
Last time he literally admitted on a WhatsApp conversation that he had and still has the hope that he could just sit back and relax and watch me do ALL the work.
Well, guess what you fucking moron. That's not what we agreed upon. You fuckin' retard think you're so smart but you say EVERYTHING on WhatsApp! Including your promises to me. Thank you you fuckin' piece of dog shit because now I have hard evidence and will hand it over to my lawyer to make you pay every god damn cent for all the hours I've spent working on our business. Oh, and I'll take over the webshop and make it a success on my own because I know damn well how to get relevant traffic and thus customers.
You just go get yourself fucked in the ass without lubricant you fuckin' asshole. I have told you you shouldn't fuck with me because I take business very seriously. I even warned you when you were crossing a line again. Well, if you don't listen... You will pay for the consequences. I will be so damn happy to tell you 'I told you so' with a very very big smile on my face. That momemt WILL come, 'partner'.
Fuck you. You will be fucked. Count on that. Fucking asshole.8 -
I'm 20, and I consider myself to be as junior as they come. I only started programming seriously in June 2016,and since then, I've been doing mainly Android Work, and making my own servers and backends(using AWS/Firebase nd stuff).
For the first time in life, I was approached by a recruiter for a company on linkedIn. They "stumbled upon" my Github profile and wanted to see if I was interested in an internship opportunity. This company is an early stage start up, by that I mean a dude with an idea calling himself the CEO and a guy who "runs a tech blog" and only knows college level C programming (explaination follows).
So they want me to make the app for their startup. and for that, I ws first asked to solve a couple problems to prove my competence and a "technical interview" followed.
They gave me 3 questions, all textbook, GCD of 2 numbers, binary search and Adding an element to the linked List, code to be written on a piece of paper. As the position was that of an Android Developer, I assumed that Java should be the language of choice. Assumed because when I asked, the 'tech blogger' said, yeah whatever.
But wait, that ain't all, as soon as I was done, Mr. Blogger threw a fit, saying I shouldn't assume and that I must write it in C. I kept my cool (I'm not the most patient person), and wrote the whole thing in C.
He read it, and asked me what I've written and then told me how wrong I was to write 2 extra lines instead of recursion for GCD. I explained that with numbers large enough, we run the risk of getting a stackoverflow and it's best to apply non recursive solution if possible. He just heard stackoverflow and accused me of cheating. I should have left right then, but I don't know why, I apologized and again, in detail explained what was happening to this fucktard. Once this was done, He asked me how, if I had to, I'd use this exact code in my Android App. I told him that Id rather write this in Java/Kotlin since those are the languages native to Android apps. I also said that I'd export these as a Library and use JNI for the task. (I don't actually know how, I figured I can study if I have to).
Here's his reply, "WTF! We don't want to make the app in Java, we will use C (Yeh, not C++, C). and Don't use these fancy TOOLS like JNI or Kotlin in front of me, make a proper application."
By this I was clear that this guy is not fit to be technical lead and that I should leave. I said, "Sir, I don't know how, if even possible, can we make an Android App purely in C. I am sorry, but this job is not for me".
I got up and was about to leave the room, when we said, "Yeah okay, I was just testing you".
Yeah right, the guy's face looked like a howling monkey when I said Library for C, and It has been easier for me to explain code to my 10 year old cousin that this dumbfuck.
He then proceeded to ask me about my availability, and I said that I can at max to 15-20 hours a week since my college schedule is pretty tight. I asked me to get him a prototype in 2 months and also offered me a full time job after I graduate. (That'd be 2 years from now). I said thank you for the offer, but I am still not sure of I am the right person for this job.
He then said, "Oh you will be when I tell you your monthly stipend."
I stopped for a second, because, money.
And then he proceeded to say 2 words which made me walk out without saying a single word.
"One Thousand".
I live in India, 1000 INR translates to roughly $15. I made 25 times that by doing nothing more than add a web view to an activity and render a company's responsive website in it so it looks like an app.
If this wasn't enough, the recruiter later had the audacity to blame me for it and tell me how lucky I am to even get an offer "so good".
Fuck inexperienced assholes trying shit they don't understand and thinking that the other guy is shitsworth.10 -
The following meeting occurred at a client between a recently added client PM and our team, we'll call her Shrilldesi, previously from one of the main consulting vendors.
*Meeting begins after 15 minutes of bullshitting, waiting for people to file in*
Shrilldesi: "Ok everyone, let's get started
TeamMember: "We're still waiting for Z and W, not sure why they're late."
SD: "We can start there. It was decided had to lay off Z and W, because we didn't have enough work."
Moi: "Wait, what. Who made that decision? Why weren't we consulted on this? We have another project starting next week that they were needed for. They just delivered the entire public facing rewrite, why would we let them go?!"
SD: "It was decided by myself, pajeet, and venkata looking at the backlog. Not enough work, week gap."
Moi: "This is going to hurt our ability to deliver the next phase. When are we going to start interviewing new people, the project begins next week?"
SD: "We will interview new resources as needed."
Moi: "Who is we? And 'as needed' is yesterday, or realistically several weeks ago as the. project. starts. next. week. Also, we're obligated by federal law to bring back anyone we lay off before we hire anyone else for the same position."
SD: "Interviews will be done by myself, Mohd, and Pajeet."
Moi: "...can I point out that there's only one modestly technical person in that group, they're an admin, and none of them are from this team? How do you conduct an engineering interview without any engineers?"
SD: "That does not matter, I have watched enough to be able to ask your questions."
Moi: *anger intensifies* "I have to respectfully disagree. I don't feel it's appropriate to cut us out of the process of interviewing our own team members."
SD: "It is decided, we will take care of it, let us move on. Next, we need to find work for the Manasa, she doesn't have anything to do."
Moi: *sharpens baseball bat* "...shouldn't we just fire her then?"
SD: "Oh that is so mean, why would we fire her? We were thinking she might be able to do some of my project management work."
Moi: *sharpening intensifies* "You do realize it's a violation of H1-B statutes for someone to be employed in work other than what is stated on their contract, and Project Managers are specifically listed as not specialized skillsets per federal law."
SD: *ignores question* "We also need to find work for the offshore team, they don't have enough to do. Please find them work for the next period."
Moi: *checks how long the wait period is for ar-15s*
SD: "We also have a new person rolling onto our team, he comes from the xyz team, Dikshit *gestures to person we all figured was lost*. He will be handling our front end development."
Moi: *seething hatred* "WE JUST LET TWO EXCELLENT FRONT END DEVELOPERS GO. WE DO NOT NEED DIKSHIT."
SD: "Please calm down. We will be replacing the other two shortly, there is no problem."
Moi: "Have you heard nothing I've said? Did you even run this by legal and HR? Why did we let them go in the first place? Why do we even need Dikshit?!"
SD: "I said it before, please listen. There is not enough work for them. Dikshit will do front end. What is unclear?"
Note: There's not really any dramatization here. It's almost verbatim what happened. Eventually, the next project was cancelled, they incrementally rolled the rest of the local team off. They then had the cojones to express aghast anger when I notified them I would not be renewing my contract, and open hatred when I explained to them I was not a slave, and I refused to be a bag holder for the inevitable failure of a project without any chance of success. I don't really care what happened after that, they can all burn in their own little nepotistic shitshow of perpetual failure.4 -
I realize now I probably shouldn't have called out my manger's bullshit if I wanted to keep my job. We were told to work a Sunday and our PO called it a "Smack-a-thon."
I said, "No let's not use stupid names. Let's call things what they are. This is a management failure Sunday."
That was during new hire lunch, in front of my manager.
I worked the first Sunday. I refused to work the second one. I've also been refusing to work over 45 hours a week.
So I guess I could have seen it coming. My manager didn't even have the gums to do it himself. He had the HR lady do it, while I was working remote from home. She told me it wasn't a 9 to 5 shop and that people there are expected to work long hours (People on my team are working 80+ a week for several months).
I took the train in to get my stuff. No one was there. My computer already gone. Couldn't even say "Go fuck yourself to anybody."
So I feel better now. I haven't taken a day of since I started in February, so it's time for some vacation and an unemployment check.
It was a really terrible job, and terribly mismanaged. I'm glad I stood my ground and knew what I was worth. I wish my co-workers had done the same.
I should have tried to start a union.8 -
My last wk93 story, the time we discovered school faculty was spying on students and we uncovered student's deepest secrets.
I call it, kiddiegate.
So if you've read my past rants you've noticed I did some pretty childish and reckless stuff with my highschool's systems when I was younger, but nothing compares to this thing.
After resetting the sysadmin account pwd on some machines it occurred to me I could write a keylogger to capture teachers Moodle accounts and so on, I decided to try it out on a regular lab computer first.
Imagine my surprise when I found a hidden keylogger already installed! I couldn't believe it but then I thought, what if other PC's have it? So I recruited my mates and teached them the process to check if a PC had been infected...ALL PCs were, over 30 computers we checked had been logging for over 3 months! That damn sysadmin! >:[
We were shocked and angry, but then I thought "hey. . . My work has been done for me, better take advantage"
So we did, we extracted each log and then removed it from the PCs along with the keyloggers. There were hundreds of records and then one day we started snooping into the fb accounts of some students (we shouldn't have) we uncovered so many nasty, shocking secrets...
One of the school's lady's man had a drunk one nighter with one of our gay friends, the most secluded and shy guy was sexting like crazy with 15 chicks at the same time, things like that...we promised to never say a word and deleted the logs.
After that we didn't do much and continued highschool as every teenage minor should, getting drunk and avoiding responsibilities, though we could never see many of our classmates the same way. The sysadmin was fired shortly after I graduated, no reason was stablished.
I want to clear out we were minors and laws in my country weren't clearly stablished at the time plus no harm was ever done. I don't condone hacking or any kind of illegal activity, just thought I'd share.6 -
1. I wish that people start taking back their device ownership. Right to repair is an extremely important thing. Like that Nexus 6P that I've recently repaired by jamming another battery into it, now it's at 110-ish% health according to AccuBattery. And it cost me.. €10 or so? All the while if I wasn't able to get in there, it would've been a €120 paperweight (and that's not even considering the €300-ish (? Someone please fill me in on that) price it retailed at back in 2015 when it was a flagship).
(edit the so many'th: according to https://express.co.uk/life-style/... the base model was apparently £449 at release, haven't been able to verify it though.. point is, a paperweight at such prices would've been quite a bummer, I mean for me it was even one given that it failed a mere few months after purchase for €120.. €40/m for a phone ain't nothing :/)
Right to repair is an extremely important thing, and the ability to do so shouldn't ever be impeded. Users should become able again to service the devices that they own.
2. I wish that people start caring about their privacy again. Google and Facebook and the likes are large companies, but at the end of the day, that's all they are. Large companies. And they're hungry for your data, not because they're selling it, rather because they're collecting it to an extent which they shouldn't. Over at DDG (https://spreadprivacy.com/duckduckg...) they explain a very much viable alternative revenue model pretty well. Additionally, there's several tools which you can use to limit the amount of data that's being collected about you. These include but are not limited to Firefox, NoScript, ad blockers (I personally use uBlock), a trustworthy VPN (ideally one of your own), and Tor.
3. I wish that software would become less inefficient. It really pains me to see that applications with functionality that could be implemented in a couple of MB at most come at a size of several hundreds of MB. 1% efficiency, even the inefficient as fuck tungsten light bulbs weren't that awful!!! Imagine what could be done with all the hardware we have available nowadays, if every piece of software would be around 80% efficient as is a common norm in electronics. Just looking at Linux which is still in many ways convoluted, modern desktops with a couple hundred MB of RAM usage? You've got it! So why can't OS's like Windows (although I have to say, huge improvements have been made there over the last few years) and browsers like Firefox and Chrome be more like that? I really don't understand.
There's several more wishes I have of course, but those are the most important ones.. hopefully I'll be able to see at least one of them come true during my life.10 -
So, some time ago, I was working for a complete puckered anus of a cosmetics company on their ecommerce product. Won't name names, but they're shitty and known for MLM. If you're clever, go you ;)
Anyways, over the course of years they brought in a competent firm to implement their service layer. I'd even worked with them in the past and it was designed to handle a frankly ridiculous-scale load. After they got the 1.0 released, the manager was replaced with some absolutely talentless, chauvinist cuntrag from a phone company that is well known for having 99% indian devs and not being able to heard now. He of course brought in his number two, worked on making life miserable and running everyone on the team off; inside of a year the entire team was ex-said-phone-company.
Watching the decay of this product was a sheer joy. They cratered the database numerous times during peak-load periods, caused $20M in redis-cluster cost overrun, ended up submitting hundreds of erroneous and duplicate orders, and mailed almost $40K worth of product to a random guy in outer mongolia who is , we can only hope, now enjoying his new life as an instagram influencer. They even terminally broke the automatic metadata, and hired THIRTY PEOPLE to sit there and do nothing but edit swagger. And it was still both wrong and unusable.
Over the course of two years, I ended up rewriting large portions of their infra surrounding the centralized service cancer to do things like, "implement security," as well as cut memory usage and runtimes down by quite literally 100x in the worst cases.
It was during this time I discovered a rather critical flaw. This is the story of what, how and how can you fucking even be that stupid. The issue relates to users and their reports and their ability to order.
I first found this issue looking at some erroneous data for a low value order and went, "There's no fucking way, they're fucking stupid, but this is borderline criminal." It was easy to miss, but someone in a top down reporting chain had submitted an order for someone else in a different org. Shouldn't be possible, but here was that order staring me in the face.
So I set to work seeing if we'd pwned ourselves as an org. I spend a few hours poring over logs from the log service and dynatrace trying to recreate what happened. I first tested to see if I could get a user, not something that was usually done because auth identity was pervasive. I discover the users are INCREMENTAL int values they used for ids in the database when requesting from the API, so naturally I have a full list of users and their title and relative position, as well as reports and descendants in about 10 minutes.
I try the happy path of setting values for random, known payment methods and org structures similar to the impossible order, and submitting as a normal user, no dice. Several more tries and I'm confident this isn't the vector.
Exhausting that option, I look at the protocol for a type of order in the system that allowed higher level people to impersonate people below them and use their own payment info for descendant report orders. I see that all of the data for this transaction is stored in a cookie. Few tests later, I discover the UI has no forgery checks, hashing, etc, and just fucking trusts whatever is present in that cookie.
An hour of tweaking later, I'm impersonating a director as a bottom rung employee. Score. So I fill a cart with a bunch of test items and proceed to checkout. There, in all its glory are the director's payment options. I select one and am presented with:
"please reenter card number to validate."
Bupkiss. Dead end.
OR SO YOU WOULD THINK.
One unimportant detail I noticed during my log investigations that the shit slinging GUI monkeys who butchered the system didn't was, on a failed attempt to submit payment in the DB, the logs were filled with messages like:
"Failed to submit order for [userid] with credit card id [id], number [FULL CREDIT CARD NUMBER]"
One submit click later and the user's credit card number drops into lnav like a gatcha prize. I dutifully rerun the checkout and got an email send notification in the logs for successful transfer to fulfillment. Order placed. Some continued experimentation later and the truth is evident:
With an authenticated user or any privilege, you could place any order, as anyone, using anyon's payment methods and have it sent anywhere.
So naturally, I pack the crucifixion-worthy body of evidence up and walk it into the IT director's office. I show him the defect, and he turns sheet fucking white. He knows there's no recovering from it, and there's no way his shitstick service team can handle fixing it. Somewhere in his tiny little grinchly manager's heart he knew they'd caused it, and he was to blame for being a shit captain to the SS Failboat. He replies quietly, "You will never speak of this to anyone, fix this discretely." Straight up hitler's bunker meme rage.13 -
*rants to some people I met in a cafe about how irresponsible making a ground rail live is*
Girl: "well people do make mistakes, right"
Me: "but they shouldn't! It's civil engineering ffs!"
Girl: "that doesn't change the fact that it's impossible for people to not make mistakes"
*realizes that I'll have to explain redundancy*
Me: "okay, so I have 2 mail servers. If I make an inevitable mistake, during an update or so, it only affects one of the servers but not the other one. So service is uninterrupted."
Girl: "that's far too complicated and technical.. explain it more easily."
Me: "alright, what job do you have"
Girl: *tells her job*
Me: "alright, so imagine that you get sick or go on a holiday or something. When there's someone else in the company that's got the same skills, they can ensure that the job gets done regardless. That's redundancy."
Girl: "aah, still too complicated!!"
What the fuck?! I removed all of the technical stuff and it's still too complicated?! How willfully ignorant or plain stupid can you be?!! Well fuck her then, but not in the way of taking her home. Now guess why I don't really like the muggles in my town. Fucking idiots!!!
"But muh BuzzFeed, conspiracy theories, deferring updates because they hog my WiFi, and casual games on my iPhone"
FUCK!!! FUCK PEOPLE!!!27 -
Apparently, part of being a software engineer means knowing how to read minds and do other people's jobs.
While implementing a user story for marketing, we found some associated features that, according to the database, have not been used for years. We tell them this. We do the courtesy of asking, "Hey, is there anything on the site that is utilizing these features? We'd like to clean up the DB."
"We don't know."
Engineering suggests, "Ok, lets turn the feature off, then, and see if anyone complains. It's been years according to the DB."
Marketing gets angry and hostile and says, "That's not the way to do things!"
I don't vocalize, "Well, not knowing how to do your own damned job is not the way to do things."
-
Marketing asks us to integrate a third party feature to the site. We ask, "Ok, what page do you want it on, and what information do you want to collect, and what should it look like?"
"I don't know. You're engineering. You tell us."
We implement it as best we can.
Marketing says, "HEY! This isn't done right! It's missing this and this and this!"
"Did you ask us to implement that? According to the user story, it passes acceptance criteria."
Marketing says, "I thought you would just know that! I didn't know it was a separate thing. Just put it on all the pages, then. You guys really should know the site better."
Engineering gets angry and hostile
-
Marketing says, "We need this removed from the site."
Engineering replies, "We have a GUI for that. Just go to this URL and you can do it yourself."
Marketing replies, "Well, if that's a really complicated thing, can you just run a script against the DB?"
Engineering says, "If we've built a UI for you, we really shouldn't be executing SQL scripts directly against the DB."
Marketing gets angry and hostile.
-
Engineering tries asking nicely.
"Marketing, if you want us to add new stuff to the site, or change stuff, please tell us what it is and where it should go and what the customer experience should be like."
Marketing replies, "We don't know the site that well. We are leaning on you to tell us."
I do not vocalize, all while trying to keep my eyes from bulging out of my head, my face red with rage, "YOU ARE IN CHARGE OF SELLING SHIT ON A WEBSITE THAT YOU KNOW NOTHING ABOUT. YOU ARE ASKING FOR CHANGES TO SOMETHING YOU DON'T EVEN UNDERSTAND. WHAT IS WRONG WITH THIS PICTURE?"
Engineering is angry and hostile.3 -
Most satisfying bug I've fixed?
Fixed a n+1 issue with a web service retrieving price information. I initially wrote the service, but it was taken over by a couple of 'world class' monday-morning-quarterbacks.
The "Worst code I've ever seen" ... "I can't believe this crap compiles" types that never met anyone else's code that was any good.
After a few months (yes months) and heavy refactoring, the service still returned price information for a product. Pass the service a list of product numbers, service returns the price, availability, etc, that was it.
After a very proud and boisterous deployment, over the next couple of days the service seemed to get slower and slower. DBAs started to complain that the service was causing unusually high wait times, locks, and CPU spikes causing problems for other applications. The usual finger pointing began which ended up with "If PaperTrail had written the service 'correctly' the first time, we wouldn't be in this mess."
Only mattered that I initially wrote the service and no one seemed to care about the two geniuses that took months changing the code.
The dev manager was able to justify a complete re-write of the service using 'proper development methodologies' including budgeting devs, DBAs, server resources, etc..etc. with a projected year+ completion date.
My 'BS Meter' goes off, so I open up the code, maybe 5 minutes...tada...found it. The corresponding stored procedure accepts a list of product numbers and a price type (1=Retail, 2=Dealer, and so on). If you pass 0, the stored procedure returns all the prices.
Code basically looked like this..
public List<Prices> GetPrices(List<Product> products, int priceTypeId)
{
foreach (var item in products)
{
List<int> productIdsParameter = new List<int>();
productIdsParameter.Add(item.ProductID);
List<Price> prices = dataProvider.GetPrices(productIdsParameter, 0);
foreach (var price in prices)
{
if (price.PriceTypeID == priceTypeId)
{
prices = dataProvider.GetPrices(productIdsParameter, price.PriceTypeID);
return prices;
}
* Omitting the other 'WTF?' code to handle the zero price type
}
}
}
I removed the double stored procedure call, updated the method signature to only accept the list of product numbers (which it was before the 'major refactor'), deployed the service to dev (the issue was reproducible in our dev environment) and had the DBA monitor.
The two devs and the manager are grumbling and mocking the changes (they never looked, they assumed I wrote some threading monstrosity) then the DBA walks up..
DBA: "We're good. You hit the database pretty hard and the CPU never moved. Execution plans, locks, all good to go."
<dba starts to walk away>
DevMgr: "No fucking way! Putting that code in a thread wouldn't have fix it"
Me: "Um, I didn't use threads"
Dev1: "You had to. There was no way you made that code run faster without threads"
Dev2: "It runs fine in dev, but there is no way that level of threading will work in production with thousands of requests. I've got unit tests that prove our design is perfect."
Me: "I looked at what the code was doing and removed what it shouldn't be doing. That's it."
DBA: "If the database is happy with the changes, I'm happy. Good job. Get that service deployed tomorrow and lets move on"
Me: "You'll remove the recommendation for a complete re-write of the service?"
DevMgr: "Hell no! The re-write moves forward. This, whatever you did, changes nothing."
DBA: "Hell yes it does!! I've got too much on my plate already to play babysitter with you assholes. I'm done and no one on my team will waste any more time on this. Am I clear?"
Seeing the dev manager face turn red and the other two devs look completely dumbfounded was the most satisfying bug I've fixed.5 -
It was the time of the 90s when one created HTML with frames. During an HTML exam we had 1 hour to create a website with 3 frames. Top, left, main. Some aligned random images and some formatted text. Kind of boring, I know. So I finished early and handed in my diskette with my homepage. To make it easy for him I added my name and class to the title.
When we got our grades I was in for a surprise since I had expected a good grade. I asked him why I didn't get a good grade. He kind of shouted at me that my task was perfectly done but I shouldn't have written my name in the title but name and address of this school. It is not a really dramatic thing but I always hated when teachers quietly assumed stuff and didn't tell us. And then handed out bad graded for totally unrelated stuff.3 -
Was asked to help a team of interns in a remote country, finish an app. Not only were they terrible at literally every aspect of development, but were arrogant and argued their "new" ways were right.
Spent weeks on the project being nice, trying to help them, sending them links to standards and documents, pointing out unit tests shouldn't be failing, everyone needs to have the same versions of the tools etc. You know, basic shit.
Things got quite heated a few weeks in when they started completely ignoring me. Shit was breaking all over the place and crashing, as I thought we were going to build it one way, and they went and built it another.
Was practically begging the team architect and my manager for help dealing with them. Only reply I got was the usual "were aware of the problem and looking into it" bullshit.
Eventually after the app was done, a mutual agreement was reached that the 2 teams would split (I maintain they were kicked out). All the local devs were happy, managers had mentioned how difficult they were and it would be great for us to finally work on our own.
So I thought everything was fine ... until my end of year performance review came along.
Seems I'm quite poor at "working with others" and I "don't try hard enough with others", it was clear I was struggling with the remote team and "made no effort".
WELL FUCK RIGHT OFF
Not being cocky, but I've never had anything like that in a performance review for the past 7 years. I'm a hard worker, and never have trouble making friends with colleagues. Everyone in the country complained about these remote fuckers, even the manager, who I begged for help. And the end result is I need to work harder.
I came in early, stayed late to fit their timezone, took extra tasks, did research for them, wrote docs. And I was told to work harder.
Only reason I didn't quit, was my internal transfer request was approved lol. New team is looking at projects orders of magnitude more impressive, never been happier.3 -
Fuck it. I'm tired. Anybody found me a rich husband? I'm ready to assume the role of a trophy wife.
1. Still no recommendation letter. My PhD application is hanging on a thread. If I were such an intolerable ass, someone could've at least told me. Or at least told me "no" when I asked them to write these damn letters.
2. I turned down a job offer, cuz a) offered salary was below market average for that role on that level, b) the guy who was supposed to be my senior and the only other person in the team gave the vibe that he disliked me, and c) asked the PM a simple question of what is his expectations of the product for the next three to six months and didn't get a solid answer. (Can't do magic tricks)
So I turned it down cuz I don't want to get stuck in another's swamp. (Been there, done that!)
3. I'm running out of ideas for the comic I was working on. As well, the backgrounds of drawings proved to be an absolute hassle. Gah.
4. So, the next switch is to the barista role. I have signed up for a lackey/intern/assistant role which starts in about two weeks. Wish me luck cuz if this doesn't work out I'm all out of ideas. Like, literally don't know what I'm doing with my life anymore. Which will make those who are jealous of me really happy, but I shouldn't make my life about what doesn't make enemies and frenemies happy, right?40 -
1 "Even though we divide our developers in cells (actual word used), our company's hierarchy is very horizontal."
2 "Sometimes we have to stay until later to get the job done"
3 "Covid has taught us that we shouldn't think of life and work as two separate things. They're one and the same"
4 "You can rack up points in the company to cash in for things like headphones!"
5 "We use this house as an office for our meetings. It's a big house."
----
1. That tells me you have no structure
2. Probably because you have no structure and you can't plan things out right.
3. you havin' a laugh? I'm all for not being a dick and socializing with colleagues every now and then but my free time is my own.
4. I'd rather you gave me more money.
5. Offices are a bit of a scam, but if you actually use a house as an office for a company that is supposed to have a presence in 3 different countries it makes me question how good you're doing at the moment.
---
I think I'm gonna pass if they don't ghost me.10 -
I swear I work with mentally deranged lunatics.
Dev is/was using TFS's web api to read some config stuff..
Ralph: "Ugh..this is driving me crazy. I've spent all day trying to read this string from TFS and it is not working"
Me: "Um, reading a string from an web api is pretty easy, what's the problem?"
Ralph: "I'm executing the call in a 'using' statement and cannot return the stream."
Me: "Why do you need to return a stream? Return the object you are looking for."
Ralph: "Its not that easy. You can return anything from TFS. All you get back is a stream. Could be XML, JSON, text file, image, anything."
Me: "What are you trying to return?"
Ralph: "XML config. If I use XDoc, the stream works fine, but when I step into each byte from the stream, I the first three bytes have weird characters. I shouldn't have to skip the first three bytes to get the data. I spent maybe 5 hours yesterday digging around the .Net stream readers used in XDoc trying to figure out how it skips the first few bytes."
Me: "Wow...I would have used XDoc and been done and not worried about that other junk."
Ralph: "But I don't know the stream is XML. That's what I need to figure out."
Me: "What is there to figure out? You do know. Its your request. You are requesting a XML config."
Ralph: "No, the request can be anything. What if Sam requests an image? XDoc isn't going to work."
Me: "Is that a use-case? Sam requesting an image?"
Ralph: "Uh..I don't know...he could"
Me: "Sounds like your spending a lot of time doing premature optimization. You know what your accessing TFS for, if it's XML, return XML. If it's an image, return an image. Something new comes along, modify the code to handle it. Eazy peezy."
<boss walks in from a meeting>
Boss: "Whats up guys?"
Ralph: "You know the problem with TFS and not being able to stream the data I had all day yesterday? I finally figured it out. I need to keep this TFS reader simple. I'll start with the XML configs and if we more readers later, we can add them."
Boss: "Oh yea, always start simple and add complexity only when you need it."
Frack...Frack..Frack...you played some victim complaining to anyone who would listen yesterday (which I mostly ignored) about reading data from TFS was this monumental problem no one could solve, then you start complaining to me, I don't fall for the BS, then tell the boss the solution was your idea?
Lunatic or genius? Wally would be proud.4 -
So I've decided if I am invited to a school career day the what I'll do is this.
1. Start by handing out one of those logic puzzles that are like Sally lives 2 houses down from Bill, Bill is 3 houses away from Maggie where does Jerry live type of thing. Then I'll tell the kids they have 10 minutes to figure it out.
2. After about three minutes I'll tell them that they also need to figure out where Jerry lives and not give them enough information to figure that out.
3. 5 minutes in I'll start asking them why it is taking so long, and it shouldn't be that hard. I'll also ask about where Phil lives who was never mentioned before.
4. At 7 minutes I'll look for anyone who might be figuring it out and tell them there is a much more important high priority problem I need them to solve and give them a new puzzle and tell them I expect them both to be done on time.
5. At nine minutes I'll start yelling at them that they must not be that good and why they haven't finished yet if any of them complain I'll tell them they are just dumb.
6. At ten minutes I'll ask them to turn it in and then immediately throw it in the trash and tell them that wasn't what they were supposed to be doing, and tell them they did it wrong.
I figure that is a pretty good representation of what working in software engineering is like.3 -
I've been using dark mode on google docs mobile (changing the page color to black and text to grey) for two months now that going back to default looks weird.
I was starting a new manuscript and could hardly work on it because of how weird it looks. I guess I shouldn't have done that in the first place, because now I can't get used to the default anymore.1 -
Me: "Concierge, I have noticed this issue with live potential on ground a couple of months ago, just a friendly reminder that this still hasn't been fixed."
Concierge: "Well yeah this building is certified (god I hate that word) so whatever measurements you've taken, it doesn't mean anything when it isn't done by the electricians."
M: "Aha, back to that piece of paper huh.. taking measurements requires a piece of paper these days, doesn't it."
C: "Glad you're quick on the uptake."
M: "Well I have the brains in my head to do a proper measurement without dying, and the numbers don't lie."
C: "What do you think that the landlord is going to say? I'm sure you still remember that email "DON'T TOUCH THE ELECTRICITY!""
C: "And remember that she'll probably rather file a complaint against you than to let an electrician come check it, because the latter costs money for something that's already certified."
M: "Well that sucks..."
C: "The certified electricians certified this building. Your hands are pretty much tied."
M: …
*walks off in frustration*
Now, as for the rant. *inhales deeply*
YOU KNOW WHERE YOU CAN SHOVE THAT PIECE OF PAPER?! DOWN YOUR FUCKING ASS! WHAT DOES A FUCKING PIECE OF PAPER MEAN TO JUSTIFY WRONGDOING?! WHAT DOES IT FUCKING MEAN WHEN IT ISN'T BACKED BY A FUCKING BRAIN?!
Yet I apparently can't do anything, because I refuse to certify myself. Now you know why I fucking hate certified enganeers, and why I use that word. The piece of paper doesn't mean shit when you can't back it with an actual fucking brain. And requiring a certificate to do stupid shit, even for changing a fucking light bulb, or a switch or an outlet or whatever. Certified enganeers, because fuckers like that don't deserve to be called engineers. You know what, certified motherfuckers? FUCK YOU!! I can change it myself and I don't (shouldn't) need a bloody fucking certificate for that!!16 -
I'm a DevOps engineer. It's my job to understand why this type of shit is broken, and when I finally figure it out, I get so mad at bullish players like AWS.
It's simple. Install Python3 from apt.
`apt-get update && apt-get install -y python3-dev`
I've done this thousands of times, and it just works.
Docker? Yup.
AWS AMI? Yup.
Automation? Nope.
WTF? Let's waste 2.5 hours and figure out why this morning.
In docker: `apt-cache policy python3-dev` shows us:
python3-dev:
http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
But in AWS instance, we see we're reading from "http://us-east-1.ec2.archive.ubuntu.com/... focal/main" instead!
Ah, but why does it fail? AWS is just using a mirror, right? Not quite.
When the automation script is running, it's beating AWS to the apt mirror update! My instance, running on AWS is trying to access the same archive.ubuntu.com that the Docker container tried to use. "python3-dev" was not a candidate for installation! WTF Amazon? Shouldn't that just work, even if I'm not using your mirror?
So I try again, and again, and again. It works, on average, 1 out of every 5 times. I'm assuming this means we're seeing some strange shit configuration between EC2 racks where some are configured to redirect archive.ubuntu.com to the ec2 mirror, and others are configured to block. I haven't dug this far into the issue yet, because by the time I can SSH into the machine after automation, the apt list has already received it's blessed update from EC2.
Now I have to build a graceful delay into my automation while I wait for AWS to mangle, I mean "fix up" my apt sources list to their whim.
After completely blowing my allotted time on this task, I just shipped a "sleep" statement in my code. I feel so dirty. I'm going to go brew some more coffee to be okay with my life. Then figure out a proper wait statement.7 -
TM: Hey, do you have a moment?
Me: not really, I'm already overtime and have enough work for the whole year.
TM: Yeah, we know. Just a quick meeting to discuss something awkward.
Me: Hmkay.
...
Later that day:
TM: Yeah. To make it quick - we're confused and bit dissatisfied with how project X turned out. The staging server is blazing fast, but the devs machines seem to be extremely slow... Some devs complained.
Me: No wonder. I said from the beginning that the devs shouldn't do X and Y, and that the dev machines need to be redone after staging is done - as we need to gather hands on experience first, cause no one could explain to me what resources the project actually needed.
TM: Oh. I wasn't aware of that.
Me: I guessed so. You were on vacation at the beginning and I didn't had the time to lead another team...
TM: Yeah... So the dev machines get replaced?
Me: They _could_ be replaced, but the devs would need to reset up their environment, as I and won't transfer the environment of the dev user.
TM: Ah... So they would have to retransfer their personal modifications, if they made any?
Me: Yes. As always, the basic setup just provides the necessary services, settings etc. - stuff like remote IDE settings on the machine, configuration etc is left out and we don't transfer it as it is usually too much of a hassle and risky, as every dev does have his / her own preferences, and we don't want to support every possible configuration out there.
TM: Just out of curiosity... Staging was ready like... Last year?
Me: Beginning of December, yes.
TM: Sigh.
Me: The jolly of having a kinder garten full of toys that no kid wants to clean up...
TM: No comment. The kinder garten Kids might make me a Pinata otherwise.
Me: If only they'd fill us with chocolate first instead of just beating us.
...
Tales of lazy devs, to be continued...3 -
John: You know, I don't appreciate it when I run the application and it crashes on me. Especially when you say it's working. If you say you've debugged it and got it working, I shouldn't be able to break it in the first 2 minutes.
--------------------------
me: You know John, with all due respect, there are two ways that this can go. Either we can actually work on this project as a team and get something done, or I can leave and have you flounder on your own trying to complete the rest of this project for the next 4 months. Now, I know that you don't have a lot of experience in this framework, so that means you owe me the respect I deserve and not complain about the way things are getting done.
--------------------------
Me: Ok, John, I'll fix it.1 -
Got an email earlier this week. It went something like this:
"It looks like your team still hasn't delivered the logging and monitoring solution that we asked for. Can you get it done in time for our production deployment next Friday?"
Um, wait, excuse me, WHAT?
1. You never actually asked for the thing you claim we didn't deliver. In fact, when we brought up the fact that you should probably have some monitoring set up for your servers, you said it would be handled entirely by your own team.
2. I HAVE BEEN WORKING ON THIS PROJECT FOR SIX MONTHS WHY DIDN'T YOU TELL ME YOUR DEADLINE UNTIL NOW
3. I won't even have time to start working on this until the Monday after your prod deployment date. Sorrynotsorry.
I really shouldn't be surprised though. This project has been a clusterfuck from the very beginning so this is just par for the course.2 -
"I'm almost done, I'll just need to add tests!"
Booom! You did it, that was a nuke going off in my head.
No, you shouldn't just need to add tests. The tests should have been written from the get go! You most likely won't cover all the cases. You won't know if adding the tests will break your feature, as you had none, as you refactor your untested mess in order to make your code testable.
When reading your mess of a test case and the painful mocking process you went through, I silently cry out into the void: "Why oh why!? All of this suffering could have been avoided!"
Since most of the time, your mocking pain boils down to not understanding what your "unit" in your "unit test" should be.
So let it be said:
- If you want to build a parser for an XML file, then just write a function / class whose *only* purpose is: parse the XML file, return a value object. That's it. Nothing more, nothing less.
- If you want to build a parser for an XML file, it MUST NOT: download a zip, extract that zip, merge all those files to one big file, parse that big file, talk to some other random APIs as a side-effect, and then return a value object.
Because then you suddenly have to mock away a http service and deal with zip files in your test cases.
The http util of your programming language will most likely work. Your unzip library will most likely work. So just assume it working. There are valid use cases where you want to make sure you acutally send a request and get a response, yet I am talking unit test here only.
In the scope of a class, keep the public methods to a reasonable minimum. As for each public method you shall at least create one test case. If you ever have the feeling "I want to test that private method" replace that statement in your head with: "I should extract that functionality to a new class where that method public. I then can create a unit test case a for that." That new service then becomes a dependency in your current service. Problem solved.
Also, mocking away dependencies should a simple process. If your mocking process fills half the screen, your test setup is overly complicated and your class is doing too much.
That's why I currently dig functional programming so much. When you build pure functions without side effects, unit tests are easy to write. Yet you can apply pure functions to OOP as well (to a degree). Embrace immutability.
Sidenote:
It's really not helpful that a lot of developers don't understand the difference between unit, functional acceptance, integration testing. Then they wonder why they can't test something easily, write overly complex test cases, until someone points out to them: No, in the scope of unit tests, we don't need to test our persistance layer. We just assume that it works. We should only test our businsess logic. You know: "Assuming that I get that response from the database, I expect that to happen." You don't need a test db, make a real query against that, in order to test that. (That still is a valid thing to do. Yet not in the scope of unit tests.)rant developer unit test test testing fp oop writing tests get your shit together unit testing unit tests8 -
Joined a new company...
It's been a week since I joined.I feel like shit.
There are over 20 employees, however I didn't had a chance to chat with a single person for more than a minute or two. Not a single meaningful or even a shitty but personal conversation. I'm trying to strike up conversations whenever I can, but there are no possibilities to do so. I think they have a few chat groups where I'm not added. At lunch time they suddenly start running to a guy that gathers the money to buy lunch, i saw that and joined, but I'm 99% sure they are communicating/speaking on some kind of chat.
I joined as a front-end developer, however I'm not sure if I'm a junior or whatever here. On the first day they showed me the system, they are using PHP and jquery + es6, the structure is messy and I'm not used to it It should be MVC-like, but messier, but it's not like anything I have seen. I usually work with opencart / cakePHP style systems. There are js files with a lot of custom funcions and sometimes there are functions that have mixed jquery and es6 inside script tags top or bottom of the view files. There are a lot of code that I don't understand, on the third day they gave me a task - to remodel a view (basically one page in the cms) I did it, but they didn't check up on me untill the next day, I gave them some notes on the task I finished, and I started making some of the code easier to read for myself after I was done. They didn't really gave me a new task, and I don't know what to do, don't have anyone to ask about what to do, because there are only 2 developers here, and the other guy is on vacation. The boss is also a coder, but he's never here and I feel like I shouldn't be asking him stupid coding questions, because you know.. He's a boss. I understand a lot more of their PHP code then their js/jquery. I feel like I'm stupid and I don't know what I am doing here and what I will be doing here in the future. I did move across the country to join this company, and if this won't work out i have a rent contract signed for a year. Today I was looking at the clock for the last 2 hours of the work day and waiting untill I could get out of there. To say that I feeling like shit would be an understatement.
I don't have anyone whom I could ask for coding advice outside of the company. Fuck.I have worked in a few companies before, but there was always an introduction to the staff, and or the working environment and usually there was a person that I could ask questions on the regular. This company is bigger however and I'm not an emotional guy whatsoever, but I feel like I will start crying.rant weird company shitty situation new company problems junior developer junior problems weird colleagues new company depression7 -
I'm coming off a lengthy staff augmentation assignment awful enough that I feel like I need to be rehabilitated to convince myself that I even want to be a software developer.
They needed someone who does .NET. It turns out what they meant was someone to copy and paste massive amounts of code that their EA calls a "framework." Just copy and paste this entire repo, make a whole ton of tweaks that for whatever reason never make their way back into the "template," and then make a few edits for some specific functionality. And then repeat. And repeat. Over a dozen times.
The code is unbelievable. Everything is stacked into giant classes that inherit from each other. There's no dependency inversion. The classes have default constructors with a comment "for unit testing" and then the "real" code uses a different one.
It's full of projects, classes, and methods with weird names that don't do anything. The class and method names sound like they mean something but don't. So after a dozen times I tried to refactor, and the EA threw a hissy fit. Deleting dead code, reducing three levels of inheritance to a simple class, and renaming stuff to indicate what it does are all violations of "standards." I had to go back to the template and start over.
This guy actually recorded a video of himself giving developers instructions on how to copy and paste his awful code.
Then he randomly invents new "standards." A class that reads messages from a queue and processes them shouldn't process them anymore. It should read them and put them in another queue, and then we add more complication by reading from that queue. The reason? We might want to use the original queue for something else one day. I'm pretty sure rewriting working code to meet requirements no one has is as close as you can get to the opposite of Agile.
I fixed some major bugs during my refactor, and missed one the second time after I started over. So stuff actually broke in production because I took points off the board and "fixed" what worked to add back in dead code, variables that aren't used, etc.
In the process, I asked the EA how he wanted me to do this stuff, because I know that he makes up "standards" on the fly and whatever I do may or may not be what he was imagining. We had a tight deadline and I didn't really have time to guess, read his mind, get it wrong, and start over. So we scheduled an hour for him to show me what he wanted.
He said it would take fifteen minutes. He used the first fifteen insisting that he would not explain what he wanted, and besides he didn't remember how all of the code he wrote worked anyway so I would just have to spend more time studying his masterpiece and stepping through it in the debugger.
Being accountable to my team, I insisted that we needed to spend the scheduled hour on him actually explaining what he wanted. He started yelling and hung up. I had to explain to management that I could figure out how to make his "framework" work, but it would take longer and there was no guarantee that when it was done it would magically converge on whatever he was imagining. We totally blew that deadline.
When the .NET work was done, I got sucked into another part of the same project where they were writing massive 500 line SQL stored procedures that no one could understand. They would write a dozen before sending any to QA, then find out that there was a scenario or two not accounted for, and rewrite them all. And repeat. And repeat. Eventually it consisted of, one again, copying and pasting existing procedures into new ones.
At one point one dev asked me to help him test his procedure. I said sure, tell me the scenarios for which I needed to test. He didn't know. My question was the equivalent of asking, "Tell me what you think your code does," and he couldn't answer it. If the guy who wrote it doesn't know what it does right after he wrote it and you certainly can't tell by reading it, and there's dozens of these procedures, all the same but slightly different, how is anyone ever going to read them in a month or a year? What happens when someone needs to change them? What happens when someone finds another defect, and there are going to be a ton of them?
It's a nightmare. Why interview me with all sorts of questions about my dev skills if the plan is to have me copy and paste stuff and carefully avoid applying anything that I know?
The people are all nice except for their evil XEB (Xenophobe Expert Beginner) EA who has no business writing a line of code, ever, and certainly shouldn't be reviewing it.
I've tried to keep my sanity by answering stackoverflow questions once in a while and sometimes turning evil things I was forced to do into constructive blog posts to which I cannot link to preserve my anonymity. I feel like I've taken a six-month detour from software development to shovel crap. Never again. Lesson learned. Next time they're not interviewing me. I'm interviewing them. I'm a professional.9 -
Long rant ahead.. 5k characters pretty much completely used. So feel free to have another cup of coffee and have a seat 🙂
So.. a while back this flash drive was stolen from me, right. Well it turns out that other than me, the other guy in that incident also got to the police 😃
Now, let me explain the smiley face. At the time of the incident I was completely at fault. I had no real reason to throw a punch at this guy and my only "excuse" would be that I was drunk as fuck - I've never drank so much as I did that day. Needless to say, not a very good excuse and I don't treat it as such.
But that guy and whoever else it was that he was with, that was the guy (or at least part of the group that did) that stole that flash drive from me.
Context: https://devrant.com/rants/2049733 and https://devrant.com/rants/2088970
So that's great! I thought that I'd lost this flash drive and most importantly the data on it forever. But just this Friday evening as I was meeting with my friend to buy some illicit electronics (high voltage, low frequency arc generators if you catch my drift), a policeman came along and told me about that other guy filing a report as well, with apparently much of the blame now lying on his side due to him having punched me right into the hospital.
So I told the cop, well most of the blame is on me really, I shouldn't have started that fight to begin with, and for that matter not have drunk that much, yada yada yada.. anyway he walked away (good grief, as I was having that friend on visit to purchase those electronics at that exact time!) and he said that this case could just be classified then. Maybe just come along next week to the police office to file a proper explanation but maybe even that won't be needed.
So yeah, great. But for me there's more in it of course - that other guy knows more about that flash drive and the data on it that I care about. So I figured, let's go to the police office and arrange an appointment with this guy. And I got thinking about the technicalities for if I see that drive back and want to recover its data.
So I've got 2 phones, 1 rooted but reliant on the other one that's unrooted for a data connection to my home (because Android Q, and no bootable TWRP available for it yet). And theoretically a laptop that I can put Arch on it no problem but its display backlight is cooked. So if I want to bring that one I'd have to rely on a display from them. Good luck getting that done. No option. And then there's a flash drive that I can bake up with a portable Arch install that I can sideload from one of their machines but on that.. even more so - good luck getting that done. So my phones are my only option.
Just to be clear, the technical challenge is to read that flash drive and get as much data off of it as possible. The drive is 32GB large and has about 16GB used. So I'll need at least that much on whatever I decide to store a copy on, assuming unchanged contents (unlikely). My Nexus 6P with a VPN profile to connect to my home network has 32GB of storage. So theoretically I could use dd and pipe it to gzip to compress the zeroes. That'd give me a resulting file that's close to the actual usage on the flash drive in size. But just in case.. my OnePlus 6T has 256GB of storage but it's got no root access.. so I don't have block access to an attached flash drive from it. Worst case I'd have to open a WiFi hotspot to it and get an sshd going for the Nexus to connect to.
And there we have it! A large storage device, no root access, that nonetheless can make use of something else that doesn't have the storage but satisfies the other requirements.
And then we have things like parted to read out the partition table (and if unchanged, cryptsetup to read out LUKS). Now, I don't know if Termux has these and frankly I don't care. What I need for that is a chroot. But I can't just install Arch x86_64 on a flash drive and plug it into my phone. Linux Deploy to the rescue! 😁
It can make chrooted installations of common distributions on arm64, and it comes extremely close to actual Linux. With some Linux magic I could make that able to read the block device from Android and do all the required sorcery with it. Just a USB-C to 3x USB-A hub required (which I have), with the target flash drive and one to store my chroot on, connected to my Nexus. And fixed!
Let's see if I can get that flash drive back!
P.S.: if you're into electronics and worried about getting stuff like this stolen, customize it. I happen to know one particular property of that flash drive that I can use for verification, although it wasn't explicitly customized. But for instance in that flash drive there was a decorative LED. Those are current limited by a resistor. Factory default can be say 200 ohm - replace it with one with a higher value. That way you can without any doubt verify it to be yours. Along with other extra security additions, this is one of the things I'll be adding to my "keychain v2".11 -
When I was a graduate I often had to do proof of concepts and one had to be done by the weekend, I'd only been given it on the Wednesday. After a few sleepless nights I had it working or so I thought. On the Friday afternoon the CTO had a look at it and spotted a bug, he told me about it and I stayed in the office until about 10 when I finally managed to get some kind of fix in place. I emailed him told him I thought but was working and shouldn't happen again.
A few hours later no response I get a phone call from him screaming, shouting and swearing calling me useless and a waste of space etc. Etc. To the point I logged in desperately trying to fix the issue in a very hastily written integration and ended up having quite a major panic attack woke up on the floor and immediately went back to work. On the Saturday morning one of the senior Devs logged in and managed to fix it in the database and everything went fine in the end.
I went into work on Monday fully expecting to be fired from the way the CTO was speaking to me, I went to my line manager at the time and he just said don't worry. I left it in his
hands and things went back to normal. That call put a pretty serious dent in my confidence for years, but I learned a few valuable lessons which I stick to today.
Never work on serious shit after 6, use a second mobile for work which is turned off at 5 o'clock, properly test all fixes and always ALWAYS have someone in between graduates and senior management because honestly they can't handle the shit that's flung from above.1 -
Game Streaming is an absolute waste.
I'm glad to see that quite a lot of people are rightfully skeptical or downright opposed to it. But that didn't stop the major AAA game publishers announcing their own game streaming platforms at E3 this weekend, did it?
I fail to see any unique benefit that can't be solved with traditional hardware (either console or PC)
- Portability? The Nintendo Switch proved that dedicated consoles now have enough power to run great games both at home and on the go.
- Storage? You can get sizable microSD cards for pretty cheap nowadays. So much so that the Switch went back to use flash-based cartridges!
- Library size/price? The problem is even though you're paying a low price for hundreds of games, you don't own them. If any of these companies shut down the platform, all that money you spent is wasted. Plus, this can be solved with backwards compatibility and one-time digital downloads.
- Performance on commodity hardware? This is about the only thing these streaming services have going for it. But unfortunately this only works when you have an Internet connection, so if you have crap Internet or drop off the network, you're screwed. And has it ever occurred to people that maybe playing Doom on your phone is a terrible UX experience and shouldn't be done because it wasn't designed for it?
I just don't get it. Hopefully this whole fad passes soon.19 -
Chrome, Firefox, and yes even you Opera, Falkon, Midori and Luakit. We need to talk, and all readers should grab a seat and prepare for some reality checks when their favorite web browsers are in this list.
I've tried literally all of them, in search for a lightweight (read: not ridiculously bloated) web browser. None of them fit the bill.
Yes Midori, you get a couple of bonus points for being the most lightweight. Luakit however.. as much as I like vim in my terminal, I do not want it in a graphical application. Not to mention that just like all the others you just use webkit2gtk, and therefore are just as bloated as all the others. Lightweight my ass! But programmable with Lua, woo! Not like Selenium, Chrome headless, ... does that for any browser. And that's it for the unique features as far as I'm concerned. One is slow, single-threaded and lightweight-ish (Midori) and another has vim keybindings in an application that shouldn't (Luakit).
Pretty much all of them use webkit2gtk as their engine, and pretty much all of them launch a separate process for each tab. People say this is more secure, but I have serious doubts about that. You're still running all these processes as the same user, and they all have full access to the X server they run under (this is also a criticism against user separation on a single X session in general). The only thing it protects against is a website crashing the browser, where only that tab and its process would go down. Which.. you know.. should a webpage even be able to do that?
But what annoys me the most is the sheer amount of memory that all of these take. With all due respect all of you browsers, I am not quite prepared to give 8 fucking gigabytes - half the memory in this whole box! - just for a dozen or so tabs. I shouldn't have to move my web browser to another lesser used 16GB box, just to prevent this one from going into fucking swap from a dozen tabs. And before someone has a go at the add-ons, there's 4 installed and that's it. None of them are even close to this complete and utter memory clusterfuck. It's the process separation. Each process consumes half a GB of memory, and there's around a dozen of them in a usual browsing session. THAT is the real problem. And I want to get rid of it.
Browsers are at their pinnacle of fucked up in my opinion, literally to the point where I'm seriously considering elinks. Being a sysadmin, I already live my daily life in terminals anyway. As such I also do have resources. But because of that I also associate every process with its cost to run it, in terms of resources required. Web browsers are easily at the top of the list.
I want to put 8GB into perspective. You can store nearly 2 entire DVD movies in that memory. However media players used to play them (such as SMPlayer) obviously don't do that. They use 60-80MB on average to play the whole movie. They also require far less processing power than YouTube in a web browser does, even when you download that exact same video with youtube-dl (either streamed within the media player or externally). That is what an application should be.
Let's talk a bit about these "complicated" websites as well. I hate to break it to you framework web devs, but you're a dime a dozen. The competition is high between web devs for that exact reason. And websites are not complicated. The document itself is plain old HTML, yes even if your framework converts to it in the background. That's the skeleton of your document, where I would draw a parallel with documents in office suites that are more or less written in XML. CSS.. oh yes, markup. Embolden that shit, yes please! And JavaScript.. oh yes, that pile of shit that's been designed in half a day, and has a framework called fucking isEven (which does exactly what it says on the tin, modulo 2 be damned). Fancy some macros in your text editor? Yes, same shit, different pile.
Imagine your text editor being as bloated as a web browser. Imagine it being prone to crashing tabs like a web browser. Imagine it being so ridiculously slow to get anything done in your productivity suite. But it's just the usual with web browsers, isn't it? Maybe Gopher wasn't such a bad idea after all... Oh and give me another update where I have to restart the browser when I commit the heinous act of opening another tab, just because you had to update your fucking CA certs again. Yes please!19 -
Hello devRant, this is going to be my first time posting on the site.
I work for a gaming community on the side, and today one of the managers asked me to implement a blacklist system into the chat and reactivate the previously existing one temporarily. This shouldn't have had any issues and should've been implemented within minutes. Once it was done and tested, I pushed it to the main server. This is the moment I found out the previous developer apparently decided it would be the best idea to use the internal function that verifies that the sender isn't blacklisted or using any blacklisted words as a logger for the server/panel, even though there is another internal function that does all the logging plus it's more detailed than the verification one he used. But the panel he designed to access and log all of this, always expects the response to be true, so if it returns false it would break the addon used to send details to the panel which would break the server. The only way to get around it is by removing the entire panel, but then they lose access to the details not logged to the server.
May not have explained this the best, but the way it is designed is just completely screwed up and just really needs a full redo, but the managers don't want to redo do it since apparently, this is the best way it can be done.7 -
You know the worst thing about being a freelancer? You're expected to wear every fucking hat and you don't get normal hours.
Over the past few days I have been working with a client of a client attampting to fix his server. He's running CentOS on VMWare and somehow ended up breaking the system.
Upon inspection there was no way to fix his system remotely. It wouldn't even boot in recovery mode. So we've been attempting to recover his data so that we can reinstall CentOS and not have to start completely from scratch.
So for the past 3 days straight I have been remotely logging in to a Debian Live CD and manually sending folders to a FTP server of his. He has somewhere close to 30 sites on this server, and upwards of 1 million files in total.
Yesterday either the system freaked out or he did something, but the entire fucking system stopped responding which forced me to reboot it, reinsert the live CD, reinstall evertything, and re-mount his broken systems drives.
Here we are 3 days in, we're still not done, and I'm getting slightly pissy because if you don't know Linux well enough to fix this shit yourself, you shouldn't be acting as your own sysadmin for 30+ sites.
Also, backups are a thing right? VMWare also has snapshots. I know the extra storage isn't cheap, but it's a hell of a lot cheaper than paying soemone like me $35/hr to go and fix all of your shitty mistakes.2 -
Hello, world!
Soo.. I am half way done with Pre-Release 10!
Woohoo!
However.. The update log is already as long as the full update log for the last update.. Which was twice as long as the log for the update before..
I'm Starting to notice a pattern.. XD
This is all good and well, but I feel as if I'm overworking myself. I'm getting stressed out, and I'm not spending near as much time with my girlfriend. 3: But, I'm having fun. I'm genuinely enjoying myself, and I'm making a ton of progress in such a short amount of time. I also have a new team member!
Idk.. I haven't done anything the past two days really. Work nor spending time with my girlfriend. I'm stressed, and I'm not sure what I should do. I'm sooper modivated to keep working, but I feel that my situation will only get worse.
---
Because I'm sure some of you will be interested ('cause my game is very popular in this community <3), here is the update list so-far. Do note that this is not the final list, and things will be added, and may be removed.
As you can see below, this update is mostly focussed around API's. Specifically Modding, and the new FileSystem. On top of this, I will *try* and tinker with the official Patreon API for Java and see if I can't intergrate that into my game. I'll also work on a ModManager, but I'm not sure if either of these will make it into this release. I also have plans for new Apps and Commands for this release, as well as working and polishing up existing Apps and Commands.
---
* Closing the game with X button (and other ways) now also calls preExitTasks()
+ Added AddonLoader. It's literally a Mod-Loader. (Your welcome :3) A tutorial coming soon, but just know that it's standard Java codeing and you simply need to drop the mod.jar into the game's addons/ directory.
++ Added "API" - This is a bunch of methods that are added for the Mods to use. These Methods likely wouldn't of been added othewise.
+ Added in-game FileSystems (Folder, files..)
++ Added FileNavigator API for traversing the in-game FileSystems
* Fixed a major bug with the "debug" command where you could no longer run any commands after enabling debug mode.
+ Added GameSave creation
+ Added System creation
+ New Save + localsystem are generated on startup
++ Added WindowBuilder API for creating Apps. This makes creating Apps much, much simpler, and is intended for not only us, but use in Mods.
* We re-wrote the Console Class from scratch, and turned it into an API for creating custom Terminal Apps. (Commands are now created using the Command Class and are then passed to Console and registered as either a Local or Global command)
++ Added Command API for creating commands. These commands execute Java code, much like a JavaFX Button would, on each call. You also get everything after the first [space] of the command that was passed, as a String.
* Re-wrote ALL previously implimented Apps.
* Re-wrote ALL previously implimented Commands.
+ Added "debugtest" command to test debug mode. (This just prints a totally boring random message, and you shouldn't try it.) [Note: This "command will not exist" when debug mode is false.]
+ Added "cd" command. ("cd ~" "cd .." "cd /home/folder" "cd etc" "cd /")
+ Added "cat" command. ("cat file" "cat /folder/file")
+ Added "mkdir" command.
+ Added "rm" command.
+ Added "dir" command.
If you're new and you have no clue what I'm talking about, here's the info page: https://trello.com/b/0bH2SjQf1 -
when I was a newbie I was given a task to upload a site.
I had done that many times before so I thought it wont be a big deal so I thought I never gave a try uploading through ftp.
Okay I began work on it the server was of godaddy and credentials I got were of delegate access.
right I tried connecting through ftp but it wasn't working thought there's some problem with user settings why shouldn't I create my own user to stay away from mess.
Now I creater my own user and could easily login but there were no files in it saw that by creating user my folder is different and I dont have access to server files I wanted to take backup before I do upload.
now I was thinking to give my user access to all files so I changed the access directory to "/" checked ftp again there was still no file.
don't know what happened to me I thought ahh its waste of time for creating ftp user it does nothing and I deleted my ftp account.
now I went through web browser to download data and earth skids beneath my foots. Holy fuck I lost all the data, all were deleted with that account it scared the shit out of me.
There were two sites running which were now gone.
Tried every bit to bring them back but couldn't do so. i contact support of godaddy they said you haven't enabled auto backup so you can't have them for free however they can provide their service in $150. Which is 15k in my country.
I decided to tell my boss about what happened and he got us away :p I wasn't fired gladly -
Ohh man i fucked up bad. 5 days as intern, and i fuck up really bad with my ego and ignorance.
I love my this company. A great environment, lots of people to learn from , i am given reasonable tasks and i feel happy to complete them. But what happened today was weird and fucked up.
I have never worked at a place with seniors designers tech leads and more people with positions. I have also worked with a lot of competitive people who are always in a race to be first.
And how do we come first? Have a lot of knowledge, hear the smallest of detail and sprint towards goal (because the combination your knowledge, assumptions and speed is enough to make you reach to the top). You don't ask for specific details, because they are obvious. And that's me in short.
Today i fucked up.
Mistake #1 ) first i was given a small task by my senior. It was a 20 mins task max if i had done it the normal noobie way . But i am a pro in mind , i have to do it with all the architecture , even if i don't understand why. So i asked for 50 mins. They gave it and did not had a problem with my time, but with the way i wrote my code.
He was like "who told you to make it like this ? Why did you made it like this?" And was visibly irritated. And i was like super chill saying "i don't know the why, but i know its correct way of using it" , pissing him even more. In my eyes he's just a super friendly sr, more like a bro and wouldn't mind some cheeky answers. And he didnt show any
consequences for that time.
Mistake #2 this is super fucked up. Our office is going under some renovation & interns were asked to sit in the co-working spaces (outside of the office). It was already very disturbing and i had to go to office every few minutes.
So after lunch this happens : We are working on a new module that already has a tonne of screens and logics. I have made a small part which is from the middle and now we can go both in the forward or in the backward direction.(Also, its quite a new module whose idea was recently discussed and decided. And weirdly i am also being treated like a core member as the ceo once himself asked what would he my flow for doing things in this. i am in direct contact and under direction of backend , designers , ceo and My senior and many ppl are giving me tasks ) And... Aagh fuck it. .. its a long story and i don't feel like repeating it but
inshort :
got a task,
didn't understood it completely and thought its my task to figure it out, took a long time figuring it my self ,
techlead/designer somehow changed my and my sr. direction of flow even tho we were taking a different approach
I sit in a noisy and irritating place
Techlead/designer comes during the time when i am figuring out the solution(already overtime the one in point #2) nags for result.
I get in an argument with him, justifying for my time and arguing that it's difficult to think technical logics for that design
( truth be told, it WAS a difficult logic which he thought was too easy. It consisted of 3 variables and 8 states we were doing different works for 4 of them and rejecting 2 and ... I don't know, i had got that wrong . But that shouldn't had been my problem to solve. I should have gone to my senior and didn't get into argument with tech lead ). It think i might have offended him too.
After he left, i am so angry on him that after sometime my senior comes and i misbehave with him. He just asks to meet me before i go, and i do so. During the meeting we discuss this whole fuck up and how many times i showed him my ego and indiscipline. And then i realise what a fuckup i did due to my ego and lack of asking, blindly following my own over confidence and blindly following or arguing with others.
Fuck fuck fuck6 -
Long story short: University fucked up single sign on.
For every online service I have, I set a different password, randomly generated ~ 20 characters long. At our university we have multiple systems but they offer a single sign on service which is quite nice because it is so non-transparent which service now uses which authorization. I changed my password a while ago and around the same time they also updated our mail client. Since then I am not able to log in which is not a big deal for me because I have mail forwarding.
Yesterday however I needed another service and also got rejected with my password. I knew from a friend that the passwords are fucked up and that some services have different restrictions (only 12 chars max.), so I decided to search how to reset my password. What the fuck was wrong with these people? It takes you five different pages to get the tiniest bit of information how to reset the password. Then on one page you can login with your single sign on and change the password. On that page you can also set the single sign on password, but if you enter an invalid password (in respect of the the other services) guess what? No feedback that you just locked yourself out of half the systems. Nice job. Also the password requirements are not next to the input fields where you change the password. Noo. That would be way to easy, remember the little small one line on the wall of text three pages ago? There you go.
Ok step one done. Now it should work, shouldn't it? Ohh no not so fast. One needs to activate the seperate service. Where you ask? Perfectly fine question. On the top of page four is a fucking one line table which looks like some five year old had some fun in excel. The button which takes you to the activation page is nearly invisible because of the non existing contrast. Also it is not a button but some arrow pointer thingy. Behind set arrow you have a page listing all differnt kinds of services, the description which you find on page two btw. No padding to decipher this shit what so ever. Nearly on the bottom is your needed button. Yes finally.
Finally I want to login, no good. Try again. Still no good. Go back to the fucked up excel table look at my username and think to myself what's the difference here? The table is so small and again no margin or padding. Apparently they cut of the last character of my normal username which i have which is fucking ridiculous.
What is wrong with you people, we are a TECHNICAL UNIVERSITY, is it so hard for you to find someone decend to unify this shit?1 -
TL;DR Developers don't like it when marketing attempts to do their job. They like it even less when they have to clean up the mess when they fuck things up.
Our marketing team was specifically told not to put JS into the CMS. They were told that if you need JS for something, we will do it and then work it into a release. That wasn't good enough so they hired a design firm to "hack" the JS inline. They found a back door to get the JS in place but couldn't get it to work right. They called me to come look at it. After 5 minutes of explaining why they shouldn't have done what they did, I grudgingly decided to look at the JS. 30 seconds later I fixed what they had been screwing with for about 8 hours. They were using --> arrows in their comments! Seriously?!? designer != developer2 -
Attention Software Engineers!
Quit shooting yourselves in the fucking foot! And this ESPECIALLY goes to new grads. I get that you have just finished school. I get that you need a job! But don't fucking settle for a $30-$40k salary because you're "entry level"! The only reason why there are employers who offer that type of salary is because they know that there are enough idiots who will settle for it!
On average, an entry level software engineer's salary is between $50-$60k at the very least! For Senior developers, it is at least $80K/year (although an argument can be made for why they shouldn't settle for less than $100k/year).
Each time a moron low balls his/her salary, that brings down the market value for that talent. And keep this in mind! They don't have a choice but to hire you. They could choose to outsource their work to poorer countries but they don't want to do that due to obvious quality-related reasons so they HAVE TO hire you if they need the work done. And since the ball is in YOUR COURT, demand your fair salary. You went to school for 4 fucking years. You dealt with that stress for 4 fucking years. Why settle for a salary that you could've made without going to school?42 -
I've been thinking about how to answer this for a while, but I'll approach it from a different angle. The time I (nearly) lost faith in my dev future wasn't because of a technology, bad programming language or an external influence. It was *me*.
The first job I had after the PhD, I was (in the first couple of weeks) tasked with updating various packages on a live Redhat server. "No problem", I thought, "I've done this before many a time on Debian, easy as pie!"
Long story short, I ended up practically bricking the server because I mistyped and uninstalled something I shouldn't have, didn't understand a piece of configuration, then tried to bodge it back and cocked things up further. Couldn't even log in via SSH, the hosting company had to be called, a serial connection set up, etc.
To say I was mortified, embarrassed and had my pride dented would be a massive understatement. I seriously thought I'd get fired on the spot, and that I should perhaps change careers to something where I couldn't cock things up as much.
...but you can't think like that, otherwise the world leaves you behind. So I picked myself up, apologised profusely, took some relevant training, double checked everything I was doing on that server in future and got back to work. After a few months of "proving myself", it was then seen as nothing more than a rather amusing story, and I became a senior dev there a couple of years later.1 -
So, it's time to fucking rant!
Location: A small startup where direct contact with C-Level members is frequent.
A while back we had a customer using our SaaS product who had gripes about the way it worked.
He contacted our CEO and made a bunch of claims based on bad assumptions.
In the end, he wanted all images removed from his site. I was pulled aside by the CEO and asked if I could handle this for him and make a new screen for them without images.
So I did. I tried to discuss and get deeper into the problem by saying "this seems like a symptom of a problem and not the actual problem. What do you think?" He responded with "That was his request so it must be the problem if it won't take long then let's fix it for him.
- a week later
The problem is fixed and in the wild. No more images. Now he has another request :/
He does not like the pagination on his site. He says " I shouldn't have to click a button when I scroll so I want the be able to scroll and see all my products!"
This time the CEO asks me if this can easily be done and I take him aside and say "no, this will be a big change to our system and will need to be discussed with the team."
The main point I make is that we should go down and spend some time with this customer to find out what the real problem is.
After a half hour of discussion about the real issue he decided to bring in the CTO.
In the end, we implemented infinite scroll, dropping our current product building tasks to service one customer (yeah, it's a bad scene). But we got infinite scroll built and shipped.
- 2 Weeks later
This time he demands that infinite scroll isn't good enough. "If I scroll fast then I have to wait for them to load, they should all load at once!"
This time I have had enough. I can see the CEO is coming over to me to as me how much work is in this. I tell him there are 3 things I have to say...
1. I'm going to implement exactly what he asked by the end of the day.
2. We will only release it to him because it is going to be a shit-show loading everything at once, the load times will be mental!
3. We should fire this customer, right now.
So, I built it. Customer hated it (of course, who the fuck wants to wait 30s for loading. That's basically a lifetime). We changed it back and he was still mad.
- 2 weeks later
Customer leaves. Good riddance.
- sometime later
I am in the customer's store on a road trip. I get a feel for how their store works and they have a different system for making things operate.
It turns out that they did not know what the real problem was. They actually needed a completely different system (from a UX perspective) for accessing their data.
To top it all off, the system would have taken less time to build than the shitty fixes we made over weeks of work. FFS
I guess the moral of the rant is to find the problem, not a symptom of the problem.2 -
I just installed Opera Mini on my PSP. That alone isn't very exciting on its own, although I am stoked that my website does in fact render on a device from 2009. With the helpful guidance of a laptop from 2004 that's doing the hotspot duties for this thing.
No, what really got me stoked is that Opera still supports these old platforms, and how small they managed to make it. The .jar file for Opera Mini 4.5 is ~800kB large. There's a .jad file as well but it's negligible in size and seems to be a signature of sorts.
Let that sink in for a moment. This entire web browser is 800kB. Firefox meanwhile consistently consumes 800 MEGABYTES.. in MEMORY. So then, I went to think for a moment, how on earth did they manage to cram an entire functioning web browser in 800kB? Hell, what makes up a web browser anyway?
The answer to that question I got to is as follows. You need an engine to render the web page you receive. You need a UI to make the browser look nice. And finally you need a certificate store to know which TLS certificates to trust. And while probably difficult to make, I think it should be possible to do in 800k. Seriously, think about it. How would you go *make* a web browser? Because I've already done that in the past.
Earlier I heard that you need graphics, audio, wasm, yada yada backends too.. no. Give your head a shake. Graphics are the responsibility of the graphics driver. A web browser shouldn't dabble with those at all. Audio, you connect to PulseAudio (in Linux at least) and you're done. Hell I don't even care about ALSA or OSS here. You just connect to the stuff that does that job for you. And WebAssembly.. God I could rant about that shit all day. How about making it a native application? Not like actual Assembly is used for BIOS and low-level drivers. And that we already have a better language for the more portable stuff called C.
Seriously, think about it. Opera - a reputable browser vendor - managed to do it in 800kB on a 12 year old device. Don't go full wank on your framework shit on the comments. And don't you fucking dare to tell me that there's more to it. They did it for crying out loud. Now you take a look at your shitpile for JS code and refactor that shit already. Thank you.21 -
!dev
I need to rant about something that has been on my mind lately.
Someone, actually. Friend/romantic interest of mine, from a few years back.
NGL, I liked him. A lot more than I should have. The man had his own issues, but I refused to tolerate his poisonous behavior. Truth be told, didn't want to hate him, even though he was trying his best to get me there. And so, one day I ended up blocking him after a fight. A few months back, I tried to reconnect. Same behavior. But this time around he did say that he was done with me. So instead of sitting through the torture of his "reasons why you suck" presentation, I blocked him again.
Now, I hope he's doing well. Never wanted anything but happiness for him. And as much as I miss him, I think it's better for him to stay away from me too. I mean, if I trigger him that badly, maybe I shouldn't be around him anyways.
Nowadays, I'm staying away from someone else again. Similar scenario. Reason being that I was actually being mistreated, and again I refuse to be tortured to the point of hating the object of my affection.
I wonder if I get attracted to the torture. I'm okay with dying alone tbh, what I'm not okay with is falling for those who don't want my love and much rather kill it.
... Actually, at this point in life I don't even want to fall for anyone anymore. (That is not the same thing as dating someone I like tho. That, I would do) The darker side of me says those who I fall for are all the same type of disappointment, but the brighter side says that I am enough, complete as is, and not everyone needs someone else. idk maybe I'm being a tad narcissistic, or hyper-independant, or flakey and afraid of attachment. But that first friend occasionally pops up in my thoughts, and reminds me that not everyone appreciates when you don't let someone make you hate them.
Oh well. *sigh*6 -
rant & question
Last year I had to collaborate to a project written by an old man; let's call him Bob. Bob started working in the punch cards era, he worked as a sysadmin for ages and now he is being "recycled" as a web developer. He will retire in 2 years.
The boss (that is not a programmer) loves Bob and trusts him on everything he says.
Here my problems with Bob and his code:
- he refuses learning git (or any other kind of version control system);
- he knows only procedural PHP (not OO);
- he mixes the presentation layer with business logic;
- he writes layout using tables;
- he uses deprecated HTML tags;
- he uses a random indentation;
- most of the code is vulnerable to SQL injection;
- and, of course, there are no tests.
- Ah, yes, he develops directly on the server, through a SSH connection, using vi without syntax highlighting.
In the beginning I tried to be nice, pointing out just the vulnerabilities and insisting on using git, but he ignored all my suggestions.
So, since I would have managed the production server, I decided to cheat: I completely rewrote the whole application, keeping the same UI, and I said the boss that I created a little fork in order to adapt the code to our infrastructure. He doesn't imagine that the 95% of the code is completely different from the original.
Now it's time to do some changes and another colleague is helping. She noticed what I did and said that I've been disrespectful in throwing away the old man clusterfuck, because in any case the code was working. Moreover he will retire in 2 years and I shouldn't force him to learn new things [tbh, he missed at least last 15 years of web development].
What would you have done in my place?10 -
porra; caralho; toma no cu.
this fucking shit xamarin. I wish the ass who programed the xamarin vs2017 integration to go fuck off.
srsly, I just want to fucking code this fucking fucker VS2017 keep shitting all around me
first I was gonna install it. didn't install because no memory left. fair enough, my fault there.
cleaned 35 gbs.
finish installing VS, with xamarin. FIRST GOD DAMN TIME I create fucking project, 2 fucking errors and 3 warnings. I DIDN'T EVEN TYPE A COMMA.
ok, tried fucking it. it seems to be conflict between version of Android and xamarin forms. fucker you it shouldn't be like this. anyway.
tried downloading the updated Android version.
it failed at 80%! what error you ask? missing fucking space ok, fuck that thing is huge, ok, my fault again. uninstalled all programs I was not using, all projects I'm not current working on. more fucking 30GB free. tried again. ANDROID IS TOO FUVKING HUGE CAN'T INSTALL IN 30GB!!!
Ok. instead of updating android, gonna downgrade xamarin, can't downgrade. ok gonna remove and install an early version.
unistalled. CAN'T FIND XAMARIN DLLS.
I was like, fuck this project, gonna start a new one. ok, all seems fine, for some weird reason. Except no. I try adding a new page, ops, APPARENTLY VS2017 CAN'T LOAD A GODDAMN .XAML
Ok, I can create a .cs page. done, except now I get a fucking timeout error. fuck.
I search the internet for a workaround, see a guy saying I could manually add a .xaml + .cs by creating this files and then adding them to the proj file.
did it. I go again, everything seems fine. but now I can't freaking reference the damn page.
I'm fucking losing my mind here.
In the mean time I have to turn in this project at the end of the week AND I CAN'T FUCKING OPEN THE GOD DAMN FREKING PROJECT PROPERLY!
FUCK. MY. LIFE.
FUCK XAMARIM AS WELL
FUCK VISUAL STUDIO
FUCK MICROSOFT
FUCK THAT DAMN SSD
FUCK THAT BOSS WHO THINK THAT A 128GB SSD IS ENOUGH
FUCK IT ALL...15 -
Sorry I haven't been as active lately, however this is one of the better prompts, so I feel I should have it in my track record. Beware, it's a long one...
Let's trace the roots: My uncle was building desktops and he told my dad he'd build him one if my dad paid him for the components. These days I know builds aren't rocket science, but back then my parents didn't do their research. So my dad paid him.
Give or take some time, and most of the parts are complete. He underestimated the prices of a few things and had to ask for $200 more to complete the build. This...caused my dad to explode.
Later, I heard my dad ranting to my stepmom in January 2017 about how the last convo he had with his brother was a "Fuck-you conversation" - it was the last because my uncle had died in 2003.
Flash forward to March 2017. My mom and I are sitting in a Fazoli's, a nice sunset out of the full-length windows. I had to probe. HAD TO.
"You promise you won't tell your dad I told you this?" she asked.
"You know Kellie and I can't stand to be around him." I replied.
As the story goes, that last "Fuck-you conversation"? Over a fucking measly $200. Yup, the last conversation between my dad and his brother to ever happen was a shouting match over a relatively short amount of money. I wish I could say my dad had remorse, but he doesn't. He still talks shit. He's also technologically illiterate, so I doubt there was a way his brother was going to be able to reason with him.
In late 2003, my uncle, who had been a smoker, passed away due to cardiac arrest. The build was still not finished. This was one of the OTHER things that I have mixed feelings about.
After my uncle passed, my aunt paid someone to finish the build and get it shipped to my dad. We'll get back to why I feel this is fucked up, stay tuned...
---------
It's Spring 2004. I'm in the last half of what I think is Kindergarten or some shit...too lazy to do the math. Anyway, my dad announces we have a family computer - however, I couldn't read yet. That didn't stop the waste of oxygen that is my father from going in the Windows XP screensavers and putting text in that said "GAGE MORGAN WILL NOT TOUCH THIS COMPUTER." He's such a fuckin' dick, now AND back then.
My mom had an issue with this. I don't know why, but she did. Later, I was slowly taught how to use the mouse, under heavy supervision. Then I went to my grandma's house. She taught me one very specific thing on her old Win98 (386, maybe? IDK my old hw shit man), and because I know you guys are gonna love this one:
"The blue "e" opens up your games!"
The blue "e" does not open up your games, it opens something that can lead to your games.
I went home and tried this...without permission. My dad came down and discovered my lollygagging on the homepage - this is fucking weird. It was before Nextel, IIRC, so Sprint's logo was red still. Yes, we had broadband from Sprint. I don't know what saga led to that going the way of the dodo, but...
Back on track, I literally got my pants pulled down and had my bare bottom beat. He was gonna drag my ass upstairs and lock me in my room, but before he could, he accidentally slammed MY FUCKING RIGHT TEMPLE into the corner of a hardwood table at the bottom of the staircase.
The wailing that resulted probably was different than the previous form, which is probably what got my mom involved. My dad had a way of going too far, and in retrospect I'm more terrified now of what could've happened than I was then.
Later, I was given access to games in the form of my own account and bookmarks bar. That wasn't the end of the madness/drama from my use of that machine, but it was the earliest form.
Ever since Kindergarten, that one fateful day, I've been defying any/all imposed limitations on tech set on me by my parents...well, not anymore, but literally grades K-12. I'm living on my own, aka "adulting" now. It sucks more than you think, man.
---------
Let's tie this up before I reach the limit. I said I thought it was fucked up when my aunt paid to have the build finished and shipped to us after my uncle's death.
Yes, my aunt's intervention led to me ultimately majoring in computer science.
That doesn't change the fact that she shouldn't have done it.
My dad was an asshole to her husband, who passed. She is ultimately too caring. I don't think my jackass father should've been able to get by with that, he didn't deserve the freebie. Someone else should've told him his brother did in fact need that $200.
I haven't seen her IRL since the funeral when my grandpa passed in 2005. 2006 spelled the end of my parents' marriage.
Hope you guys enjoyed this - it's only a small segment of how I got to where I am now - tiny, actually.2 -
Longest I've worked without rest + why?
Over 24 hours. Why?
In our old system, the database had fields, for example, a customer like Total97, Total98, etc. to store values by year (or some date-specific value).
Every January 1, we had to add fields to accommodate the upcoming year and make the appropriate code changes to handle the new fields.
One year the UPS shipping rates changed and users didn't want to 'lose' the old rates, so they wanted new fields added (Rate98, Rate99, etc) so they could compare old vs. new. That required a complete re-write of most of the underlying applications because users wanted to see the difference on any/all applications that displayed a shipping rate. I'll throw in asking 'why?' was often answered with "because we pay you to do what we say". Luckily, we had already gotten to work on a lot of this before January 1st, so we were, for the most part, ready.
January 1st rolls around (we had to be in the office at 3:00AM), work thru changes, spend some time testing, and be done before noon. That didn't happen. The accounting system was a system that wasn't in (and had never been) in scope, and when we flipped the switch, one of the accountants comes into the office:
E: "Guys? None of our Excel spreadsheets are working. They are critical to integration with the accounting software"
Us: "What? Why would you be using Excel to integrate with the software instead of their portal?"
E: "We could never figure it out, so we had a consultant write VBA scripts to do the work."
Us: "OK, a lot of fields changed, but shouldn't be a big deal. How many spreadsheets are we talking about?"
E: "Hundreds. We have a separate spreadsheet for every integration point. The consulting company said it scalable, whatever that means."
Us: "What?! Why we just know hearing about this!?"
E: "Don't worry, the consultant said making changes would be easy, let me show you, just open the spreadsheet..click here..<click><click><click>...ignore that error, it always happens...click that <click><click><click>.."
Us: "Oh good lord, this is going to take hours"
E: "Ha! Probably. All this computer stuff is your job and I've got a family to get to. Later"
Us: "Hey 'VP of IS', can we go home and fix these spreadsheets as-needed this week?"
VP-IS: "Let me check with 'VP-FS'"
<few minutes later>
VP-IS: "No, he said Excel is critical to running their department. We stay until Excel is fixed."
Us: "No, no...its these spreadsheets. I doubt FS needs all of them tomorrow morning."
VP-IS: "That's what I said. Spreadsheets, Excel, same thing. I'll order the pizza. Who likes pepperoni!?"
At least he didn't cheap out on the pizza (only 4 of us and he ordered 6 large, extra pepperoni from one of the best pizza places in town)
One problem after another and we didn't get done until almost 6:00AM. Then...
VP-IS: "Great job guys. I've scheduled a meeting at 8:00AM to review what we did so we can document the process for next year. You've got a couple of hours. Feel free to get some breakfast and come back, or eat the left over pizza in the breakroom fridge. There is a lot left"
Us: "Um...sorry...we're going home."
VP-IS: "WHAT!!...OK...fine. I'll schedule the meeting for 12"
Us: "No...we're going home. We'll see you tomorrow." -
Trigger warning:
Emotional !dev love life rant
I think this is not the right place to pour my heart out, but despite its more recent infights I still consider devRant to be a special community to me. And I guess if devRant is my goto place for support that's an issue. But maybe I just need to shout into a void because this is not about you solving this for me.
I have been in this relationship for ~6 years. My first great love. In the beginning, everything was perfect - a love story like from a cheesy movie. We've been through a lot to be together: Long distance, moving countries, a ton of bureaucracy (as she's from another country). So many memories.
It came as a surprise to me when she ended things. It really shouldn't have been. We've talked a lot about the reasons and I now see how much I've taken her for granted and neglected our relationship. I see now how I've been avoiding my problems and how I didn't work on my (mental and physical) health issues as good as I need to - not just for any relationship, but for myself. The regret/shame/guilt of not giving it 100% and of neglecting her weights heavily on me (besides the loss) and I am not sure what is worse.
Besides our relationship withering because of neglecting emotional needs, she also questioned our compability. We certainly have differences and different interests and we're both somewhat uncertain whether we really fit, if we ignore our history/emotions. It is actually a question that popped up in my head before sometimes, but I was too afraid to look into it for fear the answer is no. But here we are and ignoring that didn't help.
For now, we both need time to think about what we really want and whether this includes the other. We agreed that we need some distance to process the feelings. We still live in the same flat but for now she's staying with a friend most of the time and I'll also have a friend's place available soon. If in some time we both feel like we want to be together, we can date again - however she was also clear that she doesn't want to give any false hope and her current vision doesn't include me. If not, well have to hire a divorce lawyer. (Why you need a lawyer for that if both agree is beyond me.)
I am shattered. When it became clear to me that the relationship is over (and I ruined it), I got nauseous to the point that I threw up constantly for 6 hours. For the following 2 days I only cried and haven't eaten. Third day I started cleaning up the flat (long overdue!) - mostly for her tbh but I know it's good for myself, so better do the right thing with wrong motivation than sob all day -
talked to my psychiatrist and she brought some lunch which I could eat. Today (fourth day) she came over and we cooked lunch. I am still feeling terrible but the first days have been the worst I've ever felt and I've been trough quite a bit of (physical & chronic) pain - emotional pain hits different.
Let's see how this works out. In any case I now know very clear that I can't continue like before and need to work on my issues (for my own sake). I want be my best self, even if right now I don't have a lot of energy and am very depressed. I got an appointment with a therapist tomorrow - something I should have done years ago but I was overwhelmed with anxiety and analysis paralysis. I hope the future will be brighter and while I still wish to wake up from this nightmare and realize my faults without this breakup, I also know that I have to face reality.
PS: I do feel better now after writing this out. Thanks for listening, I guess.29 -
i was hired to join a team of old devs (40+) in an unnamed European country "yay goodbye 3rd world it's time to enjoy the quality of life" assist with enhancing already existing software and creating new solutions.
prior to my arrival most things were slow and super buggy, looking at the code base it shouldn't be a surprise, amateur hour everyone, logic implemented that is not needed, comment driven development, last time code review was done back in 1996. lots of anti patterns.
i swear there is a for loop that does nothing but it loops through a 100+ elements list, trunk based development with tfs since git is "not really needed"
test projects are not there.
>enter me an educated fool, with genuine passion for the craft and somehow a decent amount of knowledge.
>spent the last year fixing stuff educating people on principles and qualities.
> countless hours of training and explaining. team is showing cooperation, a new requirement comes in to develop with react.
> tear my ass creating reusable shit and self explanatory code with proper naming etc using git with feature branching, monday is first deployment day.
> today a colleague was working on an item submit a pull request and self approve it
> look at the code..... WTF the dumb fuck copied and pasted the whole code from different kendo components but somehow managed to refractor the name to test component, commented out all the code that he didn't use did the api call directly from the component, has 2 useeffects that depends on the a fucking text box changes for no reason, no redux implementation, the acceptance criteria is not achieved, and it doesn't work it just look right.
> first world country shit cannot scold, cannot complain, lead by example.
>asked him why you did this, the response was yeah probably i shouldn't have done that, i really didn't understand anything in the training but didn't want to waste time!!!!
> rest of the team created a different styled disaster with different flavors they don't even name their shit the same way.
fellow developers I'm stuck in a spaceship with a bunch of imposters, seriously i never cried in my entire life now I'm teary and on the verge of a break down.
talk with management "improving needs time" and offers me to join a yoga session to release the stress as if reaching nirvana would deliver shit on monday.
i really don't know what do is this a rant, is this a cry for help, I'm not sure, any advice is welcomed.7 -
I swear to god "old school" C++ devs are menace to humanity
Why yes let's make this one line long function, that could even be constexpr, and make it a macro.
Why the fuck not, let's make compiler errors worse by foregoing any type checking. Let's throw away namespacing as well, great.
Fuck you.
I shouldn't have to dig through 4 levels of nested macros just cause "muh performance" and "we've always done it like that".
Shit yourself.8 -
I'm so fucking done with all the hate the modern web is getting. If you don't need it, don't use it. Shut the fuck up if somebody else uses it, because he needs it.
And that whole war between libraries is so fucking ridiculous. Why do I have to feel bad for using a tool that does exactly what I want, and provides me a great dev experience.
No I am not going to use a stack of 4 technologies because "native is faster". Fuck you. I don't care, and you shouldn't either.
I shouldn't even have the need to rant about this, but I'm just in this constant rut, because I feel like no matter what I'm doing, I'm doing it wrong. I hate it.4 -
!rant !dev
I was just on my way to work back from the University cafeteria when a guy in a black car - who I thought was moving the car out of a parking lot - stopped the car and asked if I had a second.
Naive me, thinking he might need directions or something decided to listen to him.
He looked older, around 60ish, with sunglasses on ( making it harder for me to read him).
He said that he had a stroke (or something) a few years ago and got damage to his brain, so that sometimes it can happen that he would faint. Therefore, he cannot go swimming unsupervised, and was asking if I would have the time to accompany him to the university lake, so that he could swim for an hour or so. He offered to pay me 40 bucks.
Me, being paranoid af, declined politely, saying I have to go to work ( which was actually true).
He goes on to say how he was a teacher, how he worked at the university before, how I look trustworthy, how I am the first person he asks today, and asked if he could have my number, so that he could call me sometime to supervise the swimming. I would just need to look out for him not to drown and if anything looks weird I should alarm the people working at the lake ( lookouts? not sure what they are called).
I kept declining politely and he backed off, letting me go without any fuzz.
Previously he also mentioned how some students are rich, others are poor, and how he would have done anything for 20 bucks back in the day. But also said that he accepts a no and won't bother me further.
He also mentioned he wouldn't lay a hand on me, that he is not a creep, since I could see his car and license plate, and if I gave him my number, I would also have his. That I shouldn't worry about anything, if I later decided to say no he would delete my number, and that he is not big on the technology and Internet so nothing would happen.
Uhh... well if he was genuine I'm sorry for him, but then you can just ask authorities at the beach to pay more attention to you, no?
Mentioning "all my worries" raised a red flag for me sort of.
Also, if you keep on fainting occasionally, even if you haven't fainted in 2 years, how are you allowed to drive? Or actually, why do you even drive then?
I don't know. The more I think about it, the more I think I should have taken a picture of the car or license plate.
And there are literal services for this kind of thing. Pretty sure you can get one of these if you are willing to pay even.
Jeez now I'm worried for the entire population of my university...9 -
!dev
i think i need to control my emotions and expression around girls. things are going quite wrong and i am not sure i am able to interact with this beautiful gender correctly.
<misc: somewhat unrelated event. need to vent>
- got called out "a creep", "jerk", and "hypocrite" by this girl. she may be totally correct in calling me these but these words made me think about my behavior and therefore this post .
- characters? she: a friend of a friend, to whom i have met 3-4 times, in trips where we drank together, danced together nd talked till late night, among other people.
me : well me . based on previous allegations you can also label me as creep and hypocrite , but i would describe myself as an introvert, nerdy person who talks better on a keyboard than real life (otherwise i wouldn't be typing this post but whatever.)
- action : i made a comment on her insta story
- action details:
• we follow each other on insta. it was 12 am and i was in a half sleep state, scrolling the damn app before falling asleep
• saw her story with his 3 girl nd 2 guy cousins probably, so out of fun, replied her about how all of their specs look the same and if they all take out their specs from the same shop (cheeky comment, i know)
• she just erupted. from asking whether i also wanna buy from the same shop, to why am i talking to her, who gave you the right to compliment, jerk, hypocrite who can't talk in real life but compliments on keyboard, to creep and "stay away"
• I really wanted to say sorry at some point, but i kept making more cheeky comments in between. i was like , yeah she is my friend going through something and bursting her anger on me, she will come back and laugh, but she kept going towards hypocrite, jerk and finally stay away thing
• after that i knew i crossed the line and immediately got out of the conversation. i didn't apologize though.
• as of now am calm and don't mind the current situation of she being angry at a person who means nothing to her and me realising she is not a friend but a common connection . and till the time i was making cheeky comments, i saw her as my homie friend, so i am not bothered if she is angry
</misc>
I think i am a very needy person. i didn't have many friends in school time and i didn't had any relatives/cousins/siblings to get a lot of affection. a 25 yo horny virgin with no relationships till date does give a bad personality vibe from far, but keep in mind that i have mainly focused on personality growth and a conservative chsracter development my whole life. i do not act on my lonly feelings, but i try to be helpful and nice to everyone (which might be a suspicious/bad thing. just trying to defend my character, but feel free to judge)
every girl that talks nice with me, i get very helpful, nice and cheeky with them. most girls likes nd ignores these things, but some also get along, trust me and are willing to spend more time with me.
This makes me not only be more nice and cheeky with them but also start developing feelings for them and imagining my future/relation with them.
as of now i think there are 12 or 13 girls with whom i got into "vibing" (here, assume that vibing means me talking with them, cracking jokes nd compliments, meeting them alone ,etc. no adult stuff ofc), nd then after a few days told them directly or indirectly that i like them ( in a hope of getting some affection back i guess), getting rejected and still trying to keep the "friendship"
i think this needs to be changed. the people calling me creep, despo, perv , whatever might be correct in calling me those till now(based in my behavior) but i don't wanna be that.
i need to understand the girls might not want anything more than just a help at some point and then be done with it. I shouldn't be going out a limb and trying to get i to conversation/flirt/whatever.
i just am too emotional to let any person go away from my life just because our reason for interaction is over.
If I am commenting on a girl's post to whom i met on some trip, i will be commenting on a guy's post (to whom i met on a similar trip) too , in a similar manner,
if i see a post from one of my school's batchmates , and i find it nice/funny/weird, i will comment as if me and this batchmate met yesterday and not for 1 hr 10 years ago (irrespective of the gender)
and even after that if people are so intolerant, then maybe i am wrong and rather should start forgetting every person with whom i have spent less than 50 days alone.
hope this is the correct math and i could expect people with 50 days = 600+ hours of daytime to be enough to not see me as a stranger7 -
Wordpress.....
God, why..
Okay, so my company has deep roots with wordpress websites, which is, well fine, and at some point they needed portal that would do something but I was bussy doing other project for our child company, so our frontend slapped together "portal" in wordpress. So I dont even know if I understand that properly whats going on, but today buddy came with help request to wordpress.
I had to look through wordpress database and was like.... FML hard.
Okay, fuck it, let's try to make it work. So, I needed to get random category (using get_terms), check it's ->count and if its greater than X show it on page. I came to done halfway, the random part wasn't working.
Okay, made it work after initial struggle with "WHAT THE FUCK IS THAT?! AND THAT?? AND THAT?!?!??! ;-;" and now comes the kicker. It has ACF installed and it has additional category in ACF. And it should check count of posts within the category that have certain ACF value.
After awhile I just said "this shouldn't be done on wordpress, no idea how to make it work".
What I seen is like... it hurts me on so many levels... My head wants to explode...
Can I get back to writing normal code now? ;-; Im fed up patching logic in frontend (I dont even know if that's `the wordpress way` but that's what they did) -
Good night Ya'll
@C0D4 has had way to much internet for one day!rant clowns in town i shouldn't have done that circus is in town awaits the good night comments floyd's going to have payback4 -
I am so fucking tired of sitting here all day every day adjusting paddings and margins. Oh fucking hurr durr you got one of the millions of fucking elements to not overflow on your page, well does it work on *this* resolution and *this* orientation? No, well fix that and then go back and fix what it breaks.
I swear to God I never want to touch fucking CSS again it's all I've done for a yesr and it is driving me up the god damn wall. This is my career, I shouldn't fucking dread coming in to work because I know how much bullshit I'll have to deal with. It's awful.
I don't get how anyone has good looking complicated pages that just look good on every possible resolution, it's fucking mind boggling that anyone can sit there and adjust heights and widths and paddings and margins and floats for hours on end nonstop just watching shit get broken and fixed and broken and fixed and AHHHHH
I need a fucking smoke and a pint just so I don't have to think about this anymore13 -
Tl;Dr Im the one of the few in my area that sees sftping as the prod service account shouldn't be a deployment process. And the ONLY ONE THAT CARES THAT THIS IS GONNA BREAK A BUNCH OF SHIT AT SOME POINT.
The non tl;dr:
For a whole year I've been trying to convince my area that sshing as the production service account is not the proper way to deploy and/or develop batch code. My area (my team and 3 sister teams) have no concept of using version control for our various Unix components (shell scripts and configuration files) that our CRITICAL for our teams ongoing success. Most develop in a "prodqa like" system and the remainder straight in production. Those that develop straight in prodqa have no "test" deployment so when they ssh files straight to actual production. Our area has no concept of continuous integration and automated build checking. There is no "test cases", no "systems testing" or "regression testing". No gate checks for changing production are enforced. There is a standing "approved" deployment process by the enterprise (my company is Whyyyyyyyyyy bigger than my area ) but no one uses it. In fact idk anyone in my area who knows HOW to deploy using the official deployment method. Yes, there is privileged access management on the service account. Yes the managers gets notified everytime someone accesses the privileged production account. The managers don't see fixing this as a priority. In fact I think I've only talk to ONE other person in my area who truly understands how terrible it is that we have full production change access on a daily basis. Ive brought this up so many times and so many times nothing has been done and I've tried to get it changed yet nothing has happened and I'm just SO FUCKING SICK that no one sees how big of a deal this. I mean, overall I live the area I work in, I love the people, yet this one glaring deficiency causes me so much fucking stress cause it's so fucking simple to fix.
We even have an newer enterprise deployment. Method leveraging a product called "urban code deploy" (ucd) to deploy a git repository. JUST FUCKING GIT WITH THE PROGRAM!!!!..... IT WAS RELEASED FUCKING 12 YEARS AGO......
Please..... Please..... I just want my otherwise normally awesome team to understand the importance and benefits of version control and approved/revertable deployments2 -
I need some opinions on Rx and MVVM. Its being done in iOS, but I think its fairly general programming question.
The small team I joined is using Rx (I've never used it before) and I'm trying to learn and catch up to them. Looking at the code, I think there are thousands of lines of over-engineered code that could be done so much simpler. From a non Rx point of view, I think we are following some bad practises, from an Rx point of view the guys are saying this is what Rx needs to be. I'm trying to discuss this with them, but they are shooting me down saying I just don't know enough about Rx. Maybe thats true, maybe I just don't get it, but they aren't exactly explaining it, just telling me i'm wrong and they are right. I need another set of eyes on this to see if it is just me.
One of the main points is that there are many places where network errors shouldn't complete the observable (i.e. can't call onError), I understand this concept. I read a response from the RxSwift maintainers that said the way to handle this was to wrap your response type in a class with a generic type (e.g. Result<T>) that contained a property to denote a success or error and maybe an error message. This way errors (such as incorrect password) won't cause it to complete, everything goes through onNext and users can retry / go again, makes sense.
The guys are saying that this breaks Rx principals and MVVM. Instead we need separate observables for every type of response. So we have viewModels that contain:
- isSuccessObservable
- isErrorObservable
- isLoadingObservable
- isRefreshingObservable
- etc. (some have close to 10 different observables)
To me this is overkill to have so many streams all frequently only ever delivering 1 or none messages. I would have aimed for 1 observable, that returns an object holding properties for each of these things, and sending several messages. Is that not what streams are suppose to do? Then the local code can use filters as part of the subscriptions. The major benefit of having 1 is that it becomes easier to make it generic and abstract away, which brings us to point 2.
Currently, due to each viewModel having different numbers of observables and methods of different names (but effectively doing the same thing) the guys create a new custom protocol (equivalent of a java interface) for each viewModel with its N observables. The viewModel creates local variables of PublishSubject, BehavorSubject, Driver etc. Then it implements the procotol / interface and casts all the local's back as observables. e.g.
protocol CarViewModelType {
isSuccessObservable: Observable<Car>
isErrorObservable: Observable<String>
isLoadingObservable: Observable<Void>
}
class CarViewModel {
isSuccessSubject: PublishSubject<Car>
isErrorSubject: PublishSubject<String>
isLoadingSubject: PublishSubject<Void>
// other stuff
}
extension CarViewModel: CarViewModelType {
isSuccessObservable {
return isSuccessSubject.asObservable()
}
isErrorObservable {
return isSuccessSubject.asObservable()
}
isLoadingObservable {
return isSuccessSubject.asObservable()
}
}
This has to be created by hand, for every viewModel, of which there is one for every screen and there is 40+ screens. This same structure is copy / pasted into every viewModel. As mentioned above I would like to make this all generic. Have a generic protocol for all viewModels to define 1 Observable, 1 local variable of generic type and handle the cast back automatically. The method to trigger all the business logic could also have its name standardised ("load", "fetch", "processData" etc.). Maybe we could also figure out a few other bits too. This would remove a lot of code, as well as making the code more readable (less messy), and make unit testing much easier. While it could never do everything automatically we could test the basic responses of each viewModel and have at least some testing done by default and not have everything be very boilerplate-y and copy / paste nature.
The guys think that subscribing to isSuccess and / or isError is perfect Rx + MVVM. But for some reason subscribing to status.filter(success) or status.filter(!success) is a sin of unimaginable proportions. Also the idea of multiple buttons and events all "reacting" to the same method named e.g. "load", is bad Rx (why if they all need to do the same thing?)
My thoughts on this are:
- To me its indentical in meaning and architecture, one way is just significantly less code.
- Lets say I agree its not textbook, is it not worth bending the rules to reduce code.
- We are already breaking the rules of MVVM to introduce coordinators (which I hate, as they are adding even more unnecessary code), so why is breaking it to reduce code such a no no.
Any thoughts on the above? Am I way off the mark or is this classic Rx?16 -
So just babbling my shit down here.
(Tldr : i am a crazy guy who followed my half slept brain, went onto a stage , gave some kind of motivating , stammering talk to a large group of professional strangers, enjoyed that day with a red embarrassed face and just got my first pic of me speaking on stage and that is so awesome !)
Last Saturday i went to a gdg meetup and i embarrassed the hell out of me.
I went there with just 2 hours of sleep from the previous night.
After a few talks there comes a guy who is taking some time to install is setup and the host calls for lightning round session ( ie he asks if anyone from the audience would like to share something about their product or something).
I am a fucking nutt guy. I can explain something to you nicely in a hacky way as long as i have done enough work on that and you speak my native language.
But giving a talk on English stage, hell no! I stammer, mix hindi with English and start speaking werd shit.. And that's what happened.
I don't know what went into me but as some guy went to the stage and talked for 2 mins, i was like yeah i want to do that too. So in next turn when he asked for a show of hands, i raised mine and fucking went to stage!
I forgot that if you go on stage you should have something to talk to . But the moment i was on stage, i was like... "Nope, we will do this differently".
I had been working on a video ads module from the last week which could be easily explained in 2 mins. But i felt like giving a non techy talk instead.
It went something like this: i introduced myself with my experience details ( who gives experience details on stage !?!) Then host said to speak loudly and i went like "Bharat mata ki jai!"( Victory to mother india (wtf!?😆) .
Then started talking about how the developers feel disheartened when searching on internet where the resources are scattered . And the solution i told them was :"don't be disheartened. You will eventually find it (like wow dude wtf, as if they didn't knew that) . Look on the youtube and other resources " and then went full on explaining/marketing about some online tutor who gives advice/consultancy via a subscription based payment ( tbf that guy really helped solve a lot of my doubts, he has written books on Android dev and is the top so answerer for Android).
Then i went on sharing my thoughts live on that fuckin stage ! ( Live because i usually post my thoughts here on devrant before discussing them out with real people, you guys are my safe space) but there i discussed my thoughts on libraries!
I have this believe that Android devs these days are having lesser knowledge of the system because we have all the libraries and templates available to us. But when we have to customize stuff, we need to go deep into docs and source classes and find ourselves in trouble there. So i kind of said this out loud and that we should try to read more the code and implement stuff ourselves instead of using the library 😅🙈)
I was feeling so fucking embarrassing after that all stuff! It was so full of stammering , broken English and worst attempt at motivation. At that time i was regretting this and about to burst cry and run away, but somehow i gathered my self, got my mood back to the event games and talks, later went to the organizers and apologized(and they were very nice and didn't cared about it), and overall enjoyed my weirdest day!
When i came home, my mom gave me a little more confidence about it. Now i think i shouldn't be that much instinctive. Next day i went hack to work and everything got normal.
But Yesterday i found a link to the public repository of the photos. Ohh fuck, someone had took my image! and that was too in full hd!!! 🙈🙈🙈😅😆😆 Oh mann I can't stop looking at that cool stage speaker image, i love it ! I, the shy-est and the most uncool awkward person , present on the stage with a mike, oof , i think i lived my dream !
I hope i could get enough confidence and speaking skills to take a real stage talk next time ( and maybe enough interesting talks and confidence to talk with girls of our office, ¯\_(ツ)_/¯ )5 -
TLDR; College group projects suck, not because the work, but the people in your group will make or break you. Fuck having 1 week to do this assignment.
Sometimes working with other students on group projects is great, they actually know how to create a merge a git branch. I've had a decent partner once during my 3 years at university so far. This last project takes the cake on idiots I've worked with...so far at least... It was me and two others, we'll call them Thing1 and Thing2 for now. Anyway so the 3 of us had a week to implement a very rudimentary Invoice system; fine, easy enough. We divided up the work and 'started'.
All seemed to be going well, no complaints or cries for help all week. Until 4 hours before we submit the assignment; Thing 1 sends me a DM saying all of Thing 1's work is useless full of bugs and just shouldn't be integrated with the rest of the code. Umm fine? I guess? wtf?! why did this have to come out last minute?! We could have explained to Thing 1 what's going on and gotten him/her up to speed on everything. Believe it or not, I was sorta ok with this? I mean thing 1 hadn't pushed anything to the repo yet. I mean literally nada, Thing 1 is a collaborator on the repo that has contributed nothing. Seeing as how Thing 1 was contributing nothing I had already started to cover our ass a began Thing 1's work.
That's not even what's pissed me off... at least thing 1 had the gall to message me to say "idk..wtf is going on...continue without me". Thing 2 arguably made my time with the project worse. His code was nothing but garbage...every time...literally spent more time deciphering his incoherent bullshit more than I did rewriting his mess. I shit you not he wrote out this method, and tells the group he's "finally got it fixed and working":
public static float updateTotal(float newValue)
{
total = updateTotal(newValue);
return total;
}
How tf did he test this to see if its working?! I'm a novice and can already see the infinite loop here. You called your method within that method's own definition, what did you expect to happen.
I managed to get things 75% working and turned in 5 mins before the cut off.
Thankfully Thing 1 emailed the Proff as well, hopefully he won't tank my grade too bad. I'm so glad to be done with this assignment, fingers crossed there's no more group work.4 -
End of my rant about 35 day recruitment process for anyone interested to hear the ending.
Just got rejected by a company (name Swenson He) for a remote Android Engineer SWE role after wasting 35 days for the recruitment process.
First intro interview went good, then I did an assignment that had 72 hours deadline (asked for couple days longer to do this task, did it in around 40 hours, it was purely an assignment not free work, I could have done it in a day but I choose to overeenginer it so I could use the project as a portfolio piece, no regrets there and I learned some new things). After that It took them 2 weeks just to organize the technical interview.
2 days after the technical interview I received an offer from a second company with 1 week to decide. I immediately informed the Swenson He about it and politely asked whether they could speed up their decision process.
Now I know that I could just sign with the second company and if the big Swenson He would decide to bless me with and offer I could jump ship. But out of principle I never did that for 7 years of my career. If Im in a situation with multiple offers I always inform all parties (it's kinda a test for them so I could see which one is more serious and wants me to work for them more). Swenson He didnt pass the test.
6 days of silence. I pinged the techlead I interviewed with on LinkedIn about my situation, he assured me that he'l ask his hiring team to get back to me with feedback that day.
2 days of silence. I had to decide to sign or not to sign with a second company. I pinged the techlead again regarding their decision and 10min after received a rejection letter. There was no feedback.
I guess they got pissed off or something. Idk what were they thinking, maybe something along the lines of "Candidate trying to force our 35day recruitment process to go faster? Pinging us so much? Has another offer? What an asshole! ".
Didnt even receive any feedback in the end. Pinged their techlead regarding that but no response. Anyways fuck them. I felt during entire process that they are disrespecting me, I just wanted do see how it ends. Techlead was cool and knowledgeable but recruitment team was incompetent and couldn't even stay in touch properly during entire process. Had I didn't force their hand I bet they would have just ghosted me like they did with others according to their Glassdoor reviews.
Glad I continued to interview for other places, tomorrow Im signing an offer. Fuck Swenson He.
P.S. From my experience as a remote B2B contractor if a company is serious the entire process shouldn't take longer than max 2 weeks. Anything outside of that is pure incompetence. Even more serious companies can organize the required 2-3 meetings in a week if they have to and if they are interested. Hiring process shouldnt take longer than MAX 3 weeks unless you are applying for some fancy slow picky corporate company or a FAANG, which is out of topic for this post. -
Myself. I started with PHP about 7 years ago. Most people nowadays don't really start writing vanilla code in language they are learning anymore. Everyone just want to see results and fast, I didn't. I needed everthing to be perfect from the start. It took me a little longer to get shit done as to anyone else and sometimes it really bothered me. Am I stupid? In the end it turned out, I was not *that* stupid. In the end I learned to hate half-baked solutions of these "fast" people.
Along the way, my coding style got better and better as I gained experience. In my opinion, coding standards are a good for helping you find your own coding style. You shouldn't use them blindly just because they exist. You and your colleagues should always find the optimal solution that works for you. I probably wouldn't be able to work in a company where the code is written the way I hate. It hurts when I have to write something under a lot of pressure and just glue things together resulting in a pile of mess.1 -
I went to meet a client with our CTO. In the meeting we discuss the implementation of SAML SSO. Their SSO guys asked whether they need to build 2 trusts for our application because we have 2 modules that use SSO. Both the CTO and I were not sure because we did not have any prior experience of integrating SAML SSO. To act professional, we couldn't say we were not sure. So the CTO said we needed two trusts. I immediately added "We may only need one. Let us do a bit of investigation and confirm."
After the meeting I did the investigation and found out we really only needed one. So I sent out an email to tell the client, cc the CTO. 1 minute later I got the email from the CTO "why tell them one when I said two?". When it's an immediate response with only 1 line, I know I'm in trouble. So I called him and was ready to explain to him. I couldn't. Later I found out the time I was calling him, he was talking about this with the CEO.
I thought maybe I can explain to him when he's available. The next morning as I came to work, the CEO asked me to come to his office. He closed the door, and told me the first line the CTO told him the day before was "I want him (me) fired." I was so shocked. Having been working with the CTO for quite a while, I was surprised he said that without even communicating with me. Did I do something that wrong that you don't even bother to tell me what's wrong? I was not fired because the CEO at least asked what happened. He also understood I was actually making a better technical decision. But well, guess I shouldn't be making a decision when I had no power to. And even I believed the client heard my "let me investigate first" comment, the CTO didn't. I still got an unofficial warning. For that whole day because of the stress, I don't remember getting anything done.
Fuck that acting like profession and smart when you are not. I'd go down the path of becoming professional and smart instead. And fuck metting with clients. I'm a dev don't fucking dare to talk to me and get me fired. If you wanna talk, talk to the big guys who don't make us look bad like I did.
If you ask me today I still believe I haven't done anything wrong there. So fuck everything.2 -
The datepicker saga
Part one
So I begin work on a page where user add their details, project is late, taking ages on this page
Nearly done, just need a component to allow users to put in some date of births. Look for react components.
Avoiding that one because fuck Bootstrap.
Ah-ha, that looks good, let's give it a go.
CSS doesn't exist, oh need copy it over from npm dist. Great it applied but...
... WTF it's tiny. Thought it was a problem with my zoom. Nope found the issue in github.com and it's something to do with using REM rather than EM or something, okay someone provided a solution, rather I saw a couple of solutions, after some hacking around I got it working and pasted it in the right location and yes, it's a reasonable size now.
Only it's a bit crap because it only allows scrolling 1 month at a time. No good. Hunting through the docs reveals several options to add year and month drop downs and allow them to be scrolled. Still a bit shit as it only shows certain years, figure I'd set the start date position somewhere at the average.
Wait. The up button on the scroll doesn't even show, it's just a blank 5px button. Mouse scroll doesn't work
Fucking...
... Bailing on that.
Part 2
Okay sod it I'll just make my own three drop down select boxes, day, month and year. Easy.
At this point I take full responsibility and cannot blame any third party. And kids, take this as a lesson to plan out your code fully and make no assumptions on the simplicity of the problem.
For some reason (of which I regretted much) I decided to abstract things so much I made an array of three objects for each drop down. Containing the information to pretty much abstract away the field it was dealing with. This sort of meta programming really screwed with my head, I have lines like the following:
[...].map(optionGroup =>
optionGroup.options[
parseInt(
newState[optionGroup.momentId]
, 10)
]
)...
But I was in too deep and had to weave my way through this kind of abstract process like an intrepid explorer chopping through a rain forest with a butter knife.
So I am using React and Redux, decided it was overkill to use Redux to control each field. Only trouble is of course when the user clicks one of the fields, it doesn't make sense in redux to have one of the three fields selected. And I wanted to show the field title as the first option. So I went against good practice and used state to keep track of the fields before they are handed off to the parent/redux. What a nightmare that was.
Possibly the most challenging part was matching my indices with moment.js to get the UI working right, it was such a meta mess when it just shouldn't have taken so stupidly long.
But, I begin to see the light at the end of this tunnel, it's slowly coming together. And when it all clicks into place I sit back and actually quite enjoy my abysmal attempt at clean and easy to read code.
Part 3
Ran the generated timestamp through a converter and I get the day before, oh yeah that's great
Seems like it's dependant on the timezone??!
Nope. Deploying. Bye. I no longer care if daylight savings makes you a day younger.1 -
I recently went to an office to open up a demat account
Manager: so your login and password will be sent to you and then once you login you'll be prompted to change the password
Me: *that's a good idea except that you're sending me the password which could be intercepted* ok
Manager: you'll also be asked to set a security question...
Me: *good step*
Manager: ...which you'll need to answer every time you want to login
Me: *lol what? Maybe that's good but kinda seems unnecessary. Instead you guys could have added two factor authentication* cool
Manager: after every month you'll have to change your password
Me : *nice* that's good
Manager: so what you can do change the password to something and then change it back to what it was. Also to remember it keep it something on your number or some date
Me: what? But why? If you suggest users to change it back to what it was then what is the point of making them change the password in the first place?
Manager: it's so that you don't have to remember so many different passwords
Me: but you don't even need to remember passwords, you can just use softwares like Kaspersky key manager where you can generate a password and use it. Also it's a bad practice if you suggest people who come here to open an account with such methods.
Manager: nothing happens, I'm myself doing that since past several years.
Me: *what a fucking buffoon* no, sir. Trust me that way it gets much easier to get access to your system/account. Also you shouldn't keep your passwords written down like that (there were some password written down on their whiteboard)
Manager: ....ok...so yeah you need sign on these papers and you'll be done
Me:(looking at his face...) Umm..ok4 -
So, it's been a while since I've been working on my current project and I've never had the "luck" to touch the legacy project wrote in PHP, until this week when I got my first issue.
And damn, this goddamn issue. It was a bug, a very strange bug, that only happens in production and that nobody has any idea what was happening, so yeah, I didn't have anyone to ask and I got less time than usual ( because Thanksgiving ).
And thus, I have no starting point, no previous knowledge on PHP and less time! I expected a very fun week 😀 and it was beyond my expectations.
First I tried to understand what might be causing the issue, but there wasn't any real clue to star with, so no choice, time to read the flow on the code and see what are they're doing and using ( 1k line files, yay, legacy ). Luckily I got some clues, we're using a cookie and a php session variable for the session, ok, let's star with the session variable. Where it's that been initialize ? Well, spoiler alert, I shouldn't start with that, because my search end up in the login method of the API that set a that variable and for some reason in the front end app it was always false and that lead me to think that some of the new backend functions were failing, but after checking the logs I got no luck.
Ok, maybe the cookie it's the issue, I should try open the previous website on the brow...redirect to new project login, What? Why ? I ask around and it's a new feature push on Monday, ok I got Chrome Dev tools I can see which value of the cookie it's been set and THERE IT WAS it has a wrong domain! After 2 days ( I resume a lot of my pain ) I got what I've been looking for, so now I should be able to fix the bug. Then where is the cookie initialized ? In the first file the server hits whenever you tried to enter any page of the app, ok, I found the method, but it's using a function that process the domain and sets it correctly? wtf ? Then how in heaven do I get the incorrect domain ? Hello? Ok, relax, you still have one more day to fix this, let's take it easy.
Then, at the end of the Wednesday, nope I still have no clue how this is happening. I talked with the Devops guy and he explain me how this redirection happens and with what it depends on, I followed the PHP code through and nothing, everything should works fine, sigh. Ok I still have 2 days, because I'm not from US and I'm not in US, so I still have time, but the Sprint is messed up already, so whatever I'm gonna had done this bug anyhow.
Thursday ! I got sick, yay, what else could happen this week. Somehow I managed to work a little and star thinking in what external issue could affect the processing, maybe the redirection was bringing a wrong direction, let's talk with the Devops guy again, and he answer me that the redirection it was being made by PHP code, IN A FILE THAT DOESN'T EXIST IN THE REPOSITORY, amazing, it's just amazing. Then he explained me why this file might be missing and how it's the deployment of this app ( btw the Devops guy it's really cool and I will invite him a beer ) . After that I checked the file and I see a random session_star in the first line of the code, without any configuration, eureka ! There was the cause and I only need to ask someone If that line it's necessary anymore, but oh they're on holiday, damn, well I'll wait till Monday to ask them. But once and for all that bug was done for ! 🎉
What do I learn ? PHP and that I don't want any more tickets of PHP 😆. -
Here's something that should be an unspoken rule in the dev space:
DON'T MAKE A LESSON OF YOUR TEAMMATE'S MISTAKES (OR WHAT YOU CONSIDER A MISTAKE).
More context:
I defined a column as `mediumText` in a Laravel app. What the asshole team lead did after seeing that in my PR, is taking that snippet and blast that out in the company dev slack channel on full display, saying - "Guys we shouldn't take more space in the database than we need to. If the value for the column would be < 255 characters please take VARCHAR not MEDIUMTEXT".
I mean, what an asshole !!! You could've told me that privately and I'd have happily changed it. The reason I did so, is to be safeguard myself from the future, in case the value length increases or decreases. Last thing I want to see in the logs is "Column size is too short for column {COLUMN}, value truncated".
But nah nah, let's take a screenshot of that snippet and `teach` everyone else what should and shouldn't be done according to your `standards`.
Fucking piece of shit team lead.16 -
Data wrangling is messy
I'm doing the vegetation maps for the game today, maybe rivers if it all goes smoothly.
I could probably do it by hand, but theres something like 60-70 ecoregions to chart,
each with their own species, both fauna and flora. And each has an elevation range its
found at in real life, so I want to use the heightmap to dictate that. Who has time for that? It's a lot of manual work.
And the night prior I'm thinking "oh this will be easy."
yeah, no.
(Also why does Devrant have to mangle my line breaks? -_-)
Laid out the requirements, how I could go about it, and the more I look the more involved
it gets.
So what I think I'll do is automate it. I already automated some of the map extraction, so
I don't see why I shouldn't just go the distance.
Also it means, later on, when I have access to better, higher resolution geographic data, updating it will be a smoother process. And even though I'm only interested in flora at the moment, theres no reason I can't reuse the same system to extract fauna information.
Of course in-game design there are some things you'll want to fudge. When the players are exploring outside the rockies in a mountainous area, maybe I still want to spawn the occasional mountain lion as a mid-tier enemy, even though our survivor might be outside the cats natural habitat. This could even be the prelude to a task you have to do, go take care of a dangerous
creature outside its normal hunting range. And who knows why it is there? Wild fire? Hunted by something *more* dangerous? Poaching? Maybe a nuke plant exploded and drove all the wildlife from an adjoining region?
who knows.
Having the extraction mostly automated goes a long way to updating those lists down the road.
But for now, flora.
For deciding plants and other features of the terrain what I can do is:
* rewrite pixeltile to take file names as input,
* along with a series of colors as a key (which are put into a SET to check each pixel against)
* input each region, one at a time, as the key, and the heightmap as the source image
* output only the region in the heightmap that corresponds to the ecoregion in the key.
* write a function to extract the palette from the outputted heightmap. (is this really needed?)
* arrange colors on the bottom or side of the image by hand, along with (in text) the elevation in feet for reference.
For automating this entire process I can go one step further:
* Do this entire process with the key colors I already snagged by hand, outputting region IDs as the file names.
* setup selenium
* selenium opens a link related to each elevation-map of a specific biome, and saves the text links
(so I dont have to hand-open them)
* I'll save the species and text by hand (assuming elevation data isn't listed)
* once I have a list of species and other details, to save them to csv, or json, or another format
* I save the list of species as csv or json or another format.
* then selenium opens this list, opens wikipedia for each, one at a time, and searches the text for elevation
* selenium saves out the species name (or an "unknown") for the species, and elevation, to a text file, along with the biome ID, and maybe the elevation code (from the heightmap) as a number or a color (probably a number, simplifies changing the heightmap later on)
Having done all this, I can start to assign species types, specific world tiles. The outputs for each region act as reference.
The only problem with the existing biome map (you can see it below, its ugly) is that it has a lot of "inbetween" colors. Theres a few things I can do here. I can treat those as a "mixing" between regions, dictating the chance of one biome's plants or the other's spawning. This seems a little complicated and dependent on a scraped together standard rather than actual data. So I'm thinking instead what I'll do is I'll implement biome transitions in code, which makes more sense, and decouples it from relying on the underlaying data. also prevents species and terrain from generating in say, towns on the borders of region, where certain plants or terrain features would be unnatural. Part of what makes an ecoregion unique is that geography has lead to relative isolation and evolutionary development of each region (usually thanks to mountains, rivers, and large impassible expanses like deserts).
Maybe I'll stuff it all into a giant bson file or maybe sqlite. Don't know yet.
As an entry level programmer I may not know what I'm doing, and I may be supposed to be looking for a job, but that won't stop me from procrastinating.
Data wrangling is fun.1 -
That moment the client asks to add a single link to a header and you think: "easy enough". But then you notice their CSS.
Not a single f*cking class is used in the entire header, everything is done using :nth-child selectors etc... 🤬
Also, did I mention, the CSS is used for several headers, so adding an element to the header and modifying the CSS might break any other header in the application.
And this after they mentioned last week that they don't use a library like Bootstrap because it is too cumbersome.
I'm so mad right now, have been trying to fix this for half an hour. A task like this shouldn't take more than five minutes!6 -
Years ago, I would go on forever with my personal projects. I got so much stuff done I almost couldn't believe it. Today, I just can't. My mental health the last 2 or so years has made me lose interest in everything and i can't even describe how much I hate it. What are you supposed to do when a recruiter asks you why you haven't done much the past 2 years? Say you had mental health problems? Sure they're not allowed to discriminate because of mental health concerns, but they do. I feel like I have to lie on the US disability form, no matter how minor the problem is for the company and little it affects my work ethic. But then, when I'm late more than most because I barely slept or couldn't will myself to get up in the morning, now i can't explain myself.
If anyone here does recruiting or interviewing, please realize that happy face we show at an interview is sometimes a mask for deeper problems we feel we can't admit because we won't be hired. I hate that terrible events made my already inbalanced neurotransmitters worse, but that doesn't mean I will be a worse employee. Please look at me for my skills and enthusiasm for software engineering. That one detail shouldn't be what makes you say no.1 -
Story of my first successful project
Being part of a great team, I've shared in a lot of successes, one I am particularly proud of is my first attempt to use agile methodologies in a deeply waterfall-managment culture.
Time was June/July-ish and we applied for a national quality award where one key element in the application stated how well we handled customer complaint resolution.
While somewhat true (our customer service is the top-shelf good stuff), we did not have a systematic process in resolving customer complaints. Long story short,
the VP lied on her section of the application. Then came the 'emergency', borderline panic meeting (several VPs, managers, etc) to develop a process to better manage
complaints before the in-house inspection in December.
As most top priority projects go, the dev manager allocated 3 developers, 2 DBAs, and any/all network admins we would need (plus all the bureaucratic management that wanted their thumb in the pie).
Fast forward to August, after many, many planning meetings, lost interest, new shiny bouncing balls, I was the only one left on the project. The VP runs into the dev manager in the hallway and asks "Is my program done yet? If its not ready before December with report-able data, we will not win the award."
The <bleep> hit the fan...dev manager comes by...
Frank: "How the application coming along? Almost done?"
Me:"No, haven't really started coding. You moved Jake and Tom over to James's team, Tina quit, and you've had me sidetracked helping other teams because the DBAs are too busy."
Frank: "So, it's excuses. You really think the national quality award auditors care about your excuses? The specification design document has been done for months. This is unacceptable."
Me: "The VP finished up her section yesterday and according to the process, we can't start coding until the document is signed off."
Frank: "Holy f<bleep>ing sh<bleep>t! No one told you *you* couldn't start. You know how to create tables and write code."
Me: "There is no specification to write to. The design document is all about how they plan on reporting the data, not how call agents will be using the application to serve customers."
Frank: "The f<bleep> it isn't. F<bleep>ing monkeys could code against that specification, I helped write it! NO MORE F<bleep>ING EXCUSES! This is your top priority from now on!"
I was 'cleared' to work directly with the call center manager and the VP to develop a fully integrated customer complaint management system before December (by-passing any of the waterfall processes that would get in the way).
I had heard about this 'agile' stuff, attended a few conference tracks on the subject, read the manifesto, and thought "I could do this.".
Over the next month, I had my own 'sprints' and 'scrums' with the manager (at the time, 'agile' was a dirty word so I had to be careful of my words and what info I shared) and by the 2nd iteration had a working prototype.
Feature here, feature there (documenting the 'whys' and 'whats' along the way), and by October, had a full deployed application.
Not thinking I would get a parade or anything, the dev manager came back from a meeting where the VP was showing off the new app to the other VPs (and how she didn't really 'lie' on the application)
Frank: "Everyone is pleased how well the project turned out, except one thing. Erin said you bothered him too much with too many questions."
Me: "Bothered? Did he really say that?"
Frank: "No, not directly, but he said you would stop by his office every day to show him your progress and if he needed you to change anything. You shouldn't have done that."
Me: "Erin really seemed to like the continuous feedback. What we have now is very different than what we started with."
Frank: "Yes, probably because you kept bothering him and not following the specification document. That is why we spend so much time up front in design is so we don't waste management's time, which is exactly what you did."
Me: "We beat the deadline by two months, so I don't think I wasted anyone's time. In fact, this is kind of a big win for us, right?"
Frank: "Not really. There was breakdown in the process. We need better focus on the process, not in these one-hit-wonders."
End the end, the company won the award (mgmt team got to meet the vice president, yes the #2 guy). I know I played a very small, somewhat insignificant role in that victory, I was extremely proud to be part of the team. -
Me, working hard on a SQL project with a deadline that is half what it should be with no support from the other people on the project and was mostly made with with data I imagined would be in there cos no one could get me any fucking shit done (i.e. effectively designed, built, tested, fixed, upgraded, documented on my own for an entire weekly/monthly/ad-hoc analysis process that would output various reports for internal/external/management)
Manager - man who is a known waste of space but for some reason is in charge of the smallest part of the project, shouldn't have been fucking involved fucking management guzzling stain magnet...
Manager: Hey, do I need to refresh the database?
Me: .................
Me: .................
Me: ............I dunno, do you think we should refresh the database that this entire project is reliant? I mean...why do we need up to date transactions to analyse? Wait....you telling me it's not been being refreshed this ENTIRE time?
Manager: No....you never said I should. So should I?
Me: ..................I never said you should!?!? Are you not in the meetings talking about dependencies?????? Do you think i should have up to date trans or just run this with old stuff????? Why would you not update it!??!!?!?!? Its transactions...... (Desperately trying not to punch through my screen, through his, into his throat)
Manager: ..............
Me: .................
Manager: I think i'll refresh it and add it to the job?
Me: ....................(goes back to work cursing with music in so I think its quiet but who knows).
Tard, don't know how he even gets to work without someone holding his fucking hand.
Happy ending, I don't work there anymore :p
Sad ending, his spirit of tard follows me to my new jobs and possesses someone (or three sometimes) -
"You shouldn't mark things as done if they aren't. It's only done when I can see it on the server and demo it."
Well, I just demoed it to you, you prick. The fact that it's not running on a server is because that AWS endpoint we have there is no where near being able to be called "staging" even, mainly because the other dev on the team hasn't committed their work in 8 days, let alone push it to said server. Data models have changed, APIs have changed, hell, the god forsaken Sahara desert is now green and blooming as far as I'm concerned.
So instead of trying to look smart to your boss, why don't you ask first you obnoxious waste of organic matter. Stop breathing our oxygen for once. There are more useful things to do with it. -
Manager : You really shouldn't be doing that
Dev : Its in my job description
Manager : Yeah but you still shouldn't be doing it.
Dev : Who should I hand it off to?
Manager : We don't have anyone else to hand off that task to.
Dev : Ok , do I stop doing it?
Manager : 😡Of course not , it needs to get done! I'm just saying you shouldn't do it.
Dev : ????????3 -
Maxi-Rant, rest in the first comment!
Yay, I've caught up with my "watch later" list on YouTube! Next thing: Just quickly go through my subscribed channels and add old videos that I haven't seen yet to the watch later list so that I have more stuff to watch the next months. The easiest way to do that is to go to the "all uploads" playlist of the channel (that is luckily always linked now, it used to be hidden sometimes) and use "add all to" to get them on my playlist. Then sort out the stuff that I've already seen and turn on automatic sorting by date, easy. Yeah...
Firstly, in the new design there's no "add all to", I have to go to the old design. For my own playlists, there's a handy "edit" button to do that, but on other pages I have to do it manually. Luckily I have set Ctrl+Shift+1 as a shortcut for "&disable_polymer=true" long ago.
Next surprise: On "all uploads" playlists, there is no "add all to" button. It's on every single other playlist on YouTube, including "liked", "watch later", "favourites" and so on, just not there.
Fine, I'll just abuse my subscription playlist script that I already have by making a copy of it, putting the channel IDs in it and setting the last execution date to 1.1.2001. Little problem with that: Google apps scripts can run for at most 5 minutes and the YouTube API restricts it to add one video per second. So it doesn't work for more than 300 videos. I could now try to split it up by dates, but I didn't write the script myself and I don't know how it sorts the videos to add, so I'll just google for another solution instead.
Found one: Go to the video overview of the channel in the old layout, Ctrl+Shift+I, paste this little Javascript thing and it automatically clicks all the little clocks that add the video to the watch later list. Yay, that works! Ok, i'm restricted to 5000 videos, because that's the maximum size of a YouTube playlist, so I can't immediately add all 8000+, but whatever, that's a minor problem and I'll sort out later anyway. Still another little problem: For some reason I can't automatically sort the watch later list. Because that would be too easy.
But whatever, I'll just use "add all to" from there to add it to my creatively named "WL" list. If that thing is restricted by the same rate limit of 1 video per second, it should be done in about 1½ hours. A bit long, but hey, I'm dealing with 5000 videos. Waiting 2 hours... Waiting 3 hours... Nothing happens. It would be nice if it at least added them one by one, but no, it waits an eternity and then adds all at once. At least in theory, right now it does absolutely nothing.
Shortly considered running it for more hours or even days on my Raspberry Pi, but that thing already struggles when using Chromium normally, I shouldn't bother it with anything that has to do with 5000 videos.
Ok, what else can I do then? Googling, trying out different things, mainly external services that have their own concept of "playlists" and can then add them to an arbitrary playlist later...
Even tried writing my own Java program with the YouTube API, but after about an hour not even the example program in the YouTube API tutorial worked (50 errors and even more open questions, woohoo), so I discarded that idea.
Then I discovered "DiskYT". Everything looked like it would work and I'm still convinced that I can do it with that little pile of shit. Why is it a pile of shit? Well, for example the site reloads itself after a while, so it can at most add 700 videos to a playlist. Also I can't just paste the channel link (even though it recognises those links, but just to show an error message that it can't copy from channels). I can't enter/paste URLs, I have to drag them. The site saves absolutely nothing (should in theory work, but in practise it doesn't), so I have to re-drag everything on every try. In one network, the "authorise YouTube" button (that I have to press again on every computer) does absolutely nothing ("inspect" reveals that there isn't even any action bound to the button), in another network the page mostly doesn't work at all or the button to copy from playlists is suddenly gone or other weird stuff. Luckily I have the WiFi at home, there it works in theory. But just on my desktop PC, no other device, wow. I tried to run it on my new laptop, but it's so new that it still has the preinstalled OS and there I can't deactivate going to standby when closing the laptop, so while I expected it to add 5000 videos, it instead added 4 and went to standby. But doesn't matter, because it would have failed at about 700 anyway. Every time I try to use this website, I get new problems, but it seems to still be the best option, because everything else just doesn't do anything. This page at least got to 700 before.
Continuing in first comment!4 -
PM comes into my office: "Hey, if <client> asks about his edits, just tell him they're scheduled for this week."
me: "I thought they were scheduled for this week, I thought that you were currently in a meeting to get final specs so you could tell me what needed changed."
PM: "Yeah, he wants to take the plugin from 5 steps down to 3, we told him it wouldn't be a problem and we would have it done this week."
me: "Ok, there are limitations as far as what I can cut out of the process, his tag line when he started as a client was '5 easy steps' and I built something that did what he wanted in 5 steps. Changing things this late in the game is not simple, I'm talking a minimum 6 hours of work."
PM: "Well I tried to make sure that what he wanted was possible but I didn't have a developer in the meeting. It shouldn't change anything that much."
He ended up scheduling a meeting with me and the designer to go over the edits Thursday afternoon. So I will have the new specifications which I said would be a minimum 6 hours of work and I will be given ~10 hours in which to do it. I sure hope nothing unexpected pops up while I'm working on this.
I'm also the only developer this week (and technically speaking I'm junior) since our senior dev wrecked his car over the weekend and isn't planning on being in all week. I'm the only computer literate person in the office of 50 or so, which means that if there is any kind of tech issue I'm ripped away from my desk for 'emergency help'. I have two other sites to get ready for client approval meetings by Friday afternoon and if the clients approve I will be launching their sites that afternoon as well.
The sign on my door currently says "Error 500: unable to handle your request" I need something to throw at these people.4 -
I'm so confused by our architecture and development process in general
We planned what features are to be implemented (e.g. what endpoints should do what), but there are parts of tasks which depend on others, and I'm not sure what classes to build or when to start a task given that related ones are being done by other developers, I have absolutely no idea what I'm doing
I could maybe do all of this alone my way if it was just me, but when I ask in planning about how we should go about implementing shit together, I just get backlash from this senior developer telling me we shouldn't waste time discussing implementation details in planning
Like, what the fuck do you want me to fucking do, just implement all the dependencies of what I'm doing from zero, without reusing any of the code other devs are doing that touches on the same parts?
Fucking hell, man, this is the third sprint where I'm confused like this
Maybe I'm just too dumb to be a developer after all lol5 -
So, we're preforming a re-write an application. It's on an application (actual mortgage application, not 'app') that has 4 different entry points. We have the most common entry point converted to our re-written application with plans to have the next couple done over the next several weeks. Yesterday, the old version broke. It was under the impression that it could grab any row that matched the borrower and then check against a hash of that data to see if it could proceed. It can't. You can't hash data set 1 and expect it to be the same as the hash for data set 2. Not a thing. When asked, the only answer we could give right away was "We'll fix it, give us a couple of minutes" and "Sorry, bad {{appName}} is bad. We don't know root cause yet. We'll let you know when we do." Was pulled aside by my manager and told my answer was unsatisfactory and I shouldn't give answers like that. I get it, "Bad {{appName}} is bad" isn't great, but it's not like we were going to give that and leave it! We needed some time!2
-
I've been freelancing lately with an agency to develop an android app for their client and at the same time another person is developing the website .
The story begins when I first contacted the web dev to give me access to the database (because he started before me ).It turns out that this guy purchased an almost ready cms template with a shitty data structure that has no relations between object .This database has no primary keys , no foreign keys , no indexes ... no nothing . Adding to that the web dev refused that I rewrite a new data structure claiming that he has done a good progress on the website .
Forward couple of weeks , I managed to create the api and develop an alpha for the app and sent it to the agency manager .
This bastard told me that the website and design have changed and the app shouldn't be like that .He told me to contact the other bastard the web dev to seen what the changes are . I'm waiting for the response about the new updates and I'm praying that they'll be just minor colors updates or something not a whole concept update .
My problem here is I'm stuck with this fucking agency cuz they paid half of the payment when I started .
Damn I must learn to say no to people .1 -
I have been having one of those days, well weeks where new concepts that would have otherwise taken a few hours, to learn and implement are taking days !! I don't know how y'all consistently learn new things and implement them, while still meeting deadlines.
My team usually holds weekly progress meetings where we discuss completed tasks and the following week's tasks. During the last meeting, I hadn't completed anything worth noting and I had no major reason other than, not having fully understood the concept.
Which is embarrassing because everyone else had done something.
I know, I know, I shouldn't compare myself to others but we all know my boss does. I don't blame him though, I mean I always pick the cake with more icing, and that's just food!
I don't even know what to do about it anymore!!! Is this a phase? Is it normal? What do people do about it? wait it out?3 -
Still as a scholar who has had his intership I decided that I was finally confident enough in my ability to apply for a small part-time programming job. I had an internship at a cool exhausting place with tons of expertise and I've proven myselve over there. So now I wanted a job on the side. Nothing special, just something that would make a little money with programming instead of washing dishes at the restaurant.
So I started at this small internet based startup (2 or 3 progammers) as a backend-oriented programmer. The working hours were amazingly compatible with my school schedule.
The lead dev also sounded like a smart guy. He had worked as a backend guy for years and had code running on verry critical public infrastructure that if it were to fail we'd be evacuated from our homes.
As a first asignment I got an isolated task to make an importer for some kind of file format that needed integration. So I asked for access to the code. I didn't get it since they were going to re-do the entire backend based on the code I wrote. I just needed to parse the file in a usable object structure. So I found out that the file format was horrible and made a quite nice set of objects that were nice. At the end of the first week or so I asked if I could get access to the code again, so I could integrate it. Answer was no. The lead dev would do that. I could however get access to my private repository.
Next week a new intern was taken to build a multiplatform responsive app. Only downside was that all the stuff he had ever done was php based websites. It wasn't going anywhere anytime soon, but I figured that that was where internships were for. So I ended up helping him a lot and taught him some concepts of OOP and S.O.L.I.D. and the occasional 30 minute rants of IndexOutOfRangeException, ArgumentException and such.
So one day he asked me how to parse a json string and retrieve a specific field out of it.
I gave him something like the following to start with:
"
JObject json;
if(!JObject.TryParse(jsonString, out json))
{
//handle error
}
string value;
if(!json.tryget("foo", out value).../// code continues
"
but then the main dev stepped in and proposed the following since it wouldn't crash on an API change:
"
dynamic json = new JObject(jsonString);
string value = json.myJsonValue;
"
After me trying to explain to him that this was a bad choise for about 15 minutes because of all kinds of reasons I just gave up. I was verry mad that this young boy was forced to use bad programming pracises while he was clearly still learning. I know I shouldn't pick up certain practises. But that boy didn't.
Almost everytime the main dev was at the office I had such a mindboggling experience.
After that I got a new assignment.
I had to write another xml file format parser.
Of course I couldn't have any access to our current code because... it was unnecesary. We were going to use my code as a total replacement for the backend again.
And for some reason classes generated from XSD weren't clear enough so after carefull research I literally wrapped xsd generated code in equivalent classes.
At that moment, I realized I made some code that was totally useless since it wasn't compatible with any form of their API or any of the other backend code. (I haven't seen their API. I didn't have access to the source.) And since I could've just pushed them generated XSD's that would've produced thesame datastructure I felt like I was a cheat. I also didn't like that I wasn't allowed to install even the most basic tooling. (git client or, Ide refactoring plugins, spelling checker etc...)
Now I was also told that I couldn't discuss issues with the new guy anymore since it was a waste of my valuable time, and they were afraid that I taught him wrong concepts.
This was the time that my first paycheck came in so I quitted my job.
I haven't seen any of the features that I've worked on. :) -
Hey! Just curious, is it normal that a technical test/challenge takes me more than a day to do?
I have been interviewed for a front-end role, and was given a react challenge. They said that it shouldn't take more than 2 hours ('hopefully' is what they added at the end). But i've been doing this challenge for a day now and it's only 60-70% done.
It's not complicated, and I do know how to do it, and, even, do it properly, it just takes a lot of time for me to code, i.e. develop components, change webpack when needed, read react materialize-ui (css framework) docs, then destructure json response from the api they provided and put this information on a page, then try to compile to the right format (they want single .html element with inline js and css as a deliverable).
So my question is, am I shit or is it unreasonable for a company to ask do so much coding or a little bit of both?
What's your experience usually when looking for a job in 'hip' and 'cool' startups?4 -
I don't have any experience in teaching, but I'd venture to say that teaching anything is hard. For most subjects, teaching has been refined over thousands of years to be easier and meaningful. Not CS. As has been mentioned by many people CS is a very new subject when compared to the likes of maths, for example, and education systems haven't been able to cope with it adequately (nor should they be expected to).
That the CS industry is rapidly evolving certainly doesn't help matters, but in reality that shouldn't really be that big of a problem (at least in earlier years of education). The basics of computer systems and programming don't really change that much (please correct me if I'm wrong) and logic stays the same. Even if you learn stuff that's a bit out of date it can still be useful and good lessons should be able to be applied to new technologies and ideas.
Broken computers is a big inconvenience, but a lot of very useful things can be done without a computer, and I should think the situation is a lot better than it was 5 years ago. What I think would be good, instead of trying to use broken computers would be to get students to set up and use a raspberry pi each; you learn about something other than windows, learn how to install an OS and you don't need that much computing power for teaching people computer science.
I think the main problem is a lack of inspiring teachers. Only a very few teachers will be unable to get you through the exams if you put in the effort, but quite a lot of the time students don't put in the effort because they can blame it on the teacher.
My solution would be to try and get as many students into computer science as possible and the rest will follow: more people will become teachers, more will be invested in the subject, more attention will be payed to the curriculum.
That's not to say I don't agree that many of the problems that have been mentioned need to be fixed for CS education to work properly, just that there is no way that I can see to fix them currently without either creating more problems or some very rich person giving a load of money.
This has gone on a lot longer than I expected so I'll stop now.14 -
Boss: I want you to create a document management application
Me: that would be take a lot of time and it is better if you use an already created app for that
Boss: why?
Me: because my partner and I have never done one before and we are just a beginners
Boss: shouldn't be a problem...
Both of us: (really?)
*call ends*6 -
Ok, @jestdotty , today, i give up on china.
I've been messaging with a rep who is taking the time to keep editing a contract... Im pretty sure she was genuinely trying...
As typing this we finally got to a 'correct enough' contract... so I could click the damn pay button.
Over the past 7 hrs.. at 3 back and forth exchabges and modifications at each issue:
1. Used previous PI from the dude i gave up on... so had a qty at 12 when only 11 exist a colour wrong for a crate of items, and listed the dude i refused to sign a contract under listed as the rep.
2. Now the item subtotals were off... just a few pennies or so... assumed she left the usd prices but calculated with ¥... didn't want alibaba to reject in a day so i checked if it was noted anywhere... Oh boy was it... VERY clearly, all caps, bold in the body of the total row... that the total was, exactly, 11680 (spelled out ofc) RMB aka ¥ chinese yen. I told her this, she sends me a cropped shot of the $ numeric total field... so i sent her the giant all caps bolded line, the one thatd typically be considered final say in most international courts... no clue where that value came from, it had zero relation to any actual values... and i was as curious as when chatGPT creates totally new, unique, lyrics for satirical german songs... i really tried.
3. Wrong incoterms (trade terms... abbreviated to a few letters... had it that I'd be physically going to the tbd port to accept/clear customs... no)
4. Technically it was accurate (well a few strange subtotals since she used ¥ half the time... told her it was fine as long as it had the company name on the label (gave 3 full examples to use whichever)
I get the contract ...shipping...
"To: Sara"
Then the right address (seriously wtf)
5. I point this out and carefully explain in mostly just examples and "the us government doesn't like anything being sent to just a first name, there's no legal way to sign for acceptance"
6. She gets stressed enough to tell me she doesn't have time to keep editing (since this horrid pile of poor formatting was just thrown at her a day ago... i dont point out the ridiculous irony)
7. Imo, the highlight of my night/morning... in her stress she promises me it'll ship right... sooo many issues there...
Even if it was delivered/allowed a signature for "sara" for 7ish large boxes just off a sea freight from china to a residence in the middle of a corn field (which tbh would be hysterical)...the IRS would have a valid reason to audit me... theyve done it w/o valid reasons several times, since I was 18 doing international trade and a contractual employee of a large gambling company, quarterly reporting, and ofc declaring more than my taxes in donating melted glass and crane game prizes...yea, they hate me and always do all that work to find the same thing... i underdeclare charity by 10%.
The entire concept of getting USA mail, even when pristine and you know logistics agents in every major company and port or distribution center, to properly deliver anything... ROFLOL ... and im already on some 'open and check everything' list with customs for a hysterical misconception they made years ago... cant/shouldn't get into detail publicly... but it was caused because 2 packages from different cities in China were both going to my address/through customs at the same time... package 1, 75 of those cheap af ball-pit hollow plastic balls for a 2yr old's bday(very delayed) package 2. 75 rechargeable batteries (the kind in power banks) 9600mah.
8. Told her to change "sara" to company name... glad it's registered to this address still.
It took me under 5min to type this... had to get the WTF out.
Dear AliBaba, please give an option to allow buyers to create the supply side contract for review, not just req modification... please?2 -
!rant && advise
I have some expirience working as full stack developer, but focussed latly mainly on backend (php/java). However for one project, I need a desktop application and I was wondering, if you would recommend electron for it.
Pros:
- I could reuse some of the webapp stuff and cache it offline using web workers
- Styling done via HTML/CSS
- Portable between Linux/Windows/Mac
Cons:
- I haven't worked (much) with node js so far, but that shouldn't be a too big problem
What are the pros and cons from your point of view? Would you recommend electron? Why yes, why no? If no, what would you reccomend as alternative?
My knowledge so far:
Good: PHP/Java (without GUI)/CSS
Quite good: Javascript
Meh: Python (I can hack things together but wouldn't say I'm good with it...), C++8 -
Why... why they have to be like that?
https://github.com/micro/micro/... was reported 11 days ago, I have this issue with the dashboard inside docker than registers no services nor clients, a shame because this enables testing and that comes handy specially if you have never ever done micro-services.
Despite linking to a minimal example that reproduces the issue I have in my project I'm not getting any support from the developers of Go Micro other than "use the latest Docker image, it shouldn't panic", sadly others give it a try too but their directions won't fix the problem.
So this makes me wonder, after 11 days and a minimal reproducible example provided from day one, why no developer have offered any hint of what I'm doing wrong? they know their software, it should be easier for them to spot why the bloody dashboard is not working as it should.7 -
Was watching OITNB at home when boss called sounded urgent about SSL not working on one of our subdomains. We use a paid cloud app for some of our reports which. So the subdomain is a CNAME to the providers app subdomain. Recently there was an upgrade at our hosting but it shouldn't be related.
Boss: Hey, there is an error prompt when I visit our reporting site with https
Me: That's cos we never installed any SSL cert for that subdomain.
Boss: Well it worked before and you will need to get it fixed.
Me: Wait.. It worked before? How is that possible? We've never set it up and the subdomain is a CNAME pointing to another site which we don't own. The cert will have to load from their server and we have not done any setup with them.
Boss: I'm very sure it worked before the hosting upgrades. All along our customers has been accessing with https.
Me: Okay.... That's something new because and I am pretty SURE the last I checked, the app provider doesn't allow that yet.
* meanwhile I when to search the app provider docs and it says not able to support multiple SSL yet for CNAME
Me: Look, it says so here in the docs.
Boss: Ok, can you try to fix it as its important for the users to not see that error. It has been working all along.
Me: Hmmmm... I'll get back to you.
How do I fix something that didn't exist / broken?? How did it work before??
I know it can be possible to install the cert on the cloud provider end but we haven't done this before. And their support docs says feature not available yet.
Was it magic?? Am I missing something?? Anyway, I've sent an email to the provider's support team and telling them "it worked before" -
I'm starting to gain a dislike for OOP.
I think classes make it easy for me to think of the entities of a problem and translate them into code.
But when you to attempt to test classes, that's when shit hits the fan.
In my opinion, it is pointless to test classes. If you ever seen test code for a class, you'll notice that it's usually horrible and long.
The reason for this is that usually some methods depend on other methods to be called first.
This results in the usual monolithic test that calls every goddamn method on the class.
You might say "ok, break the test into smaller parts". Ok. But the result of that attempt is even worse, because you end up with several big tests cases and a lot of duplicate code, because of the dependency of some methods on others.
The real solution to this is to make the classes be just glue: they should delegate arguments onto functions that reside on its own file, and, maybe afterwards emit events if you are using events.
But they shouldn't have too much test code classes though. The test code for classes should be running a simple example flow, but never doing any assertions other than expecting no exceptions.
For the most part, you'd be relying on the unit testing that is done for each delegated function.
If you take any single function you'll see that it's extremely easy to write tests for it. In fact, you can have the test right next to the fuction, like <module>.xyz <module>.test.xyz
So I don't think classes shouldn't be used at all, they should just be glue.
As you do normal usage of this software this way, when a bug is discovered you'll notice that the fix and testing code for this bug is very usually applied to the delegated functions instead of being a problem of classes.
I think classes by themselves sound sane in paper, but in practice they turn into a huge fucking messes that become impossible to understand or test.
How can something like traditional classes not get chaotic when a single class can have x attributes and y methods. The complexity grows exponentially. And sometimes more attributes and methods are added.
Someone might say "well, it's just the nature of problems. Problems can have a lot of variables".
Yeah, but cramming all of that complexity into a single 200 lines class is insanity.12 -
Windows apparently does reboots for updates n stuff outside your normal time of usage nowadays.
Windows apparently also thinks that your normal usage shouldn't be over 12 hours.
So now i have to decide if I'm more in the mood for random updates in the morning when i need to get shit done (ugh) or at night when i have finally time to relax. -
This question might make you lose a brain cell because of stupidity in the question. Read with caution
Is there a way to compile a game for Windows from Linux in Unreal engine? I did google some posts but the answer was either use a Virtual machine which will not be done or use the the theoretical method of using mingw but the forum posts state that it will be tricky business or use a windows machine. I have dual booted windows with linux on my machine.
However since the machine has a 512 gb ssd most of the storage space is devoted to unreal engine which takes 47 gigs in itself and have a lot of programs installed I have a usable 20 gigs left out of 145 gig partition. Windows has around 318 gigs of storage to it but I have 100 gigs free at most. So after installing the windows sdk, visual studio with extensions, unreal engine and some other stuff I don't have much space left for myself. I need that much space since I install a lot of games to my ssd. So now I cant load my bigger projects for playing on my windows. I could use my hdd which is mostly used for backups and 100+ gig stuff. Though the hdd's are of course far slower than ssd's which shouldn't be a problem however last time I used visual studio it ate more than 2 gigs of ram for a solution meaning that the compiler has very low memory for itself to actually compile so for any large files the hdd has more of a bottleneck.
Oh and I can't upgrade my ssd's or ram because I don't have enough money.
Thanks for the answers in advance4 -
It seems that my barometer for whether I would stay long in a company is roughly 1.5 years. Because apparently that's how long it takes to gauge if:
(a) The work I'm doing is fulfilling or self-satisfying
(b) My colleagues make work a fun and challenging experience
(c) My bosses are people I can be proud to work for.
Right now, the tally thus far:
(a) The work is half crap, supporting old code (fuck Swig and Architect, by the way) or fixing bugs on old projects. New projects are always mismanaged, and I mean ALWAYS (let's do Agile and create tickets but hey the requirements are still in progress so do start anyway and we'll file everything as bug tickets until they're done)
(b) I'm sure it's an effect of going remote working for the last few months, but I'm feeling detached from my team. It's fine I guess.
(c) My manager is okay, he's a good guy who listens and is also technical so we get along. But his boss (who oversees several teams. including ours) is a total prick who loves to insult people at their expense as a joke. He knows nobody's gonna talk smack back so he just does it without repercussions.
I'll probably see if I can move around internally to a different division since the pandemic makes it difficult to find work externally. I'm grateful I have a job, but I shouldn't have to feel like I owe the company for that at the cost of my personal happiness.
Just gotta #survive2020 I suppose.