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 have returned"
-
Yesterday: Senior dev messages out a screenshot of someone using an extension method I wrote (he didn’t know I wrote it)..
SeniorDev: “OMG…that has to be the stupidest thing I ever saw.”
Me: “Stupid? Why?”
SeniorDev: “Why are they having to check the value from the database to see if it’s DBNull and if it is, return null. The database value is already null. So stupid.”
Me: “DBNull is not null, it has a value. When you call the .ToString, it returns an empty string.”
SeniorDev: ”No it doesn’t, it returns null.”
<oh no he didn’t….the smack down begins>
Me: “Really? Are you sure?”
SeniorDev: “Yes! And if the developer bothered to write any unit tests, he would have known.”
Me: “Unit tests? Why do you assume there aren’t any unit tests? Did you look?”
<at this moment, couple other devs take off their head phones and turn around>
SeniorDev:”Well…uh…I just assumed there aren’t because this is an obvious use case. If there was a test, it would have failed.”
Me: “Well, let’s take a look..”
<open up the test project…navigate to the specific use case>
Me: “Yep, there it is. DBNull.Value.ToString does not return a Null value.”
SeniorDev: “Huh? Must be a new feature of C#. Anyway, if the developers wrote their code correctly, they wouldn’t have to use those extension methods. It’s a mess.”
<trying really hard not drop the F-Bomb or two>
Me: “Couple of years ago the DBAs changed the data access standard so any nullable values would always default to null. So no empty strings, zeros, negative values to indicate a non-value. Downside was now the developers couldn’t assume the value returned the expected data type. What they ended up writing was a lot of code to check the value if it was DBNull. Lots of variations of ‘if …’ , ternary operators, some creative lamda expressions, which led to unexpected behavior in the user interface. Developers blamed the DBAs, DBAs blamed the developers. Remember, Tom and DBA-Sam almost got into a fist fight over it.”
SeniorDev: “Oh…yea…but that’s a management problem, not a programming problem.”
Me: “Probably, but since the developers starting using the extension methods, bug tickets related to mis-matched data has nearly disappeared. When was the last time you saw DBA-Sam complain about the developers?”
SeniorDev: “I guess not for a while, but it’s still no excuse.”
Me: “Excuse? Excuse for what?”
<couple of awkward seconds of silence>
SeniorDev: “Hey, did you guys see the video of the guy punching the kangaroo? It’s hilarious…here, check this out.. ”
Pin shoulders the mat…1 2 3….I win.6 -
A man was crossing a road one day when a frog called out to him and said, "If you kiss me, I'll turn into a beautiful princess." He bent over, picked up the frog, and put it in his pocket. The frog spoke up again and said, "If you kiss me and turn me back into a beautiful princess, I will tell everyone how smart and brave you are and how you are my hero" The man took the frog out of his pocket, smiled at it, and returned it to his pocket. The frog spoke up again and said, "If you kiss me and turn me back into a beautiful princess, I will be your loving companion for an entire week." The man took the frog out of his pocket, smiled at it, and returned it to his pocket. The frog then cried out, "If you kiss me and turn me back into a princess, I'll stay with you for a year and do ANYTHING you want." Again the man took the frog out, smiled at it, and put it back into his pocket. Finally, the frog asked, "What is the matter? I've told you I'm a beautiful princess, that I'll stay with you for a year and do anything you want. Why won't you kiss me?" The man said, "Look, I'm a computer programmer. I don't have time for a girlfriend, but a talking frog is cool."11
-
My colleague sent me this. Think before you act!
Hi Bob,
This is Alan next door. I’m sorry buddy, but I have a confession to make to you.
I’ve been riddled with guilt these past few months and have been trying to pluck up the courage to tell you to your face but I am at least now telling in text as I can’t live with myself a moment longer without you knowing.
The truth is, I have been sharing your wife, day and night when you're not around.
In fact, probably more than you, particularly in the mornings after you’ve left for work.
I haven’t been getting it at home recently, but that's no excuse I know.
I can no longer live with the guilt and I hope you will accept my sincerest apologies.
My wife has known for some time now and I’ve promised her that it won't happen again.
Regards, Alan.
Bob, feeling anguished and betrayed, immediately went into his bedroom, grabbed his gun, and without a word, shot his wife twice in the head, killing her instantly.
He returned to the lounge where he poured himself a stiff drink and sat down on the sofa.
He took out his phone to respond to the neighbour's text and saw he had another message:-
Hi Bob,
This is Alan next door again.
Sorry about the slight typo on my last text, I expect you worked it out.
Anyway, but as I’m sure you noticed, my predictive text changed ‘WiFi’ To ‘Wife’.
Hope you saw the funny side of that.
Regards, Alan.9 -
Me and my love-hate Linux.
I lost virginity really early. In the age of 5 it was my first time with windows 95. I spend almost 10 years with Windows before something happened that would change everything. I met Linux. Her forename was Arch. I had a crush on her right from the beginning. It didn't take long for me to abandon windows. Arch had everything I wanted. She had latex which was pretty hot and looked simply and elegant on her. Sometimes she was really hard to deal with and almost drove me crazy, but I knew I fell in love.
Until that day. I had to write a short paper which was quite fun and Linux helped me alot. It was a breeze to work with her. The evening before the deadline she was quite thoughtful. She sometimes was, so I thought it'll be alright, but this time was different. She struggled a bit, so I put her to sleep and she never woke up. I brought her to the emergency lab which was open 24/7. Since no one was there I had todo the surgery myself. After 5 hours I was almost to tired to continue when she finally woke up. I asked her about the things she should remember for me - then I killed her. I started to hate Linux for what she had done to me. The unbelievable stress and horror.
I returned to Windows. Besides that she got a bit more curious what I was doing when and where nothing really changed and she was glad to have me back. I just was happy how simple our relationship was.
One day then, I couldn't believe it at first, I met Archs sister. Manjaro. No matter how strange that is, but it was as if I would meet Linux again for the first time. She was just a bit simpler but as flexible as arch. Since then we are happy together. It seems that we both just grew up a little.
And with Windows? She got even more curious! Actually I have the feeling she is stalking me now, but I don't regret anything!15 -
!dev !rant - only very sad
I have been through the worst and saddest week of my life.
Sadly, it's getting worse every day.
I've been travelling around the world in my RV for years and haven't seen my parents for several years. Since I recently successfully completed a huge project and now have some spare time, I thought it would be nice to visit my parents. Everything went well. We were glad to see each other after a long time and had a nice day together. My father works as a security guard and had to go to work early in the evening. So I stayed alone with my mother.
In the evening my mother went to bed earlier than usual because she didn't feel well. I wished her a good night and wanted to surf the internet. But somehow I had a strange feeling (maybe a premonition) and after 5 minutes I went into her bedroom to bring her a glass of water and at this very moment she suffered a heart attack. I threw it all away and called 911 immediately. I shouted the address into the phone, screamed emergency, heart failure, unconscious while trying to start resuscitation at the same time. Fortunately, the ambulance was nearby, arrived in just a few minutes, pushed me aside and started the resuscitation procedure. It took more than an hour and dozens of electric shocks to even get a pulse.
The ambulance took her to the hospital for further medical treatment. I was in the hospital all night until at least she had a stable pulse.
As soon as I returned to my parents' house (the car was still warm, hardly 3 minutes have passed), my father, who had returned from work a few minutes earlier, suddenly suffered a thrombosis in his leg. The whole leg was slowly turning black. I immediately dragged him into the car and drove him as fast as I could to the hospital.
It's Sunday now. I haven't slept since Thursday and I've been in the hospital all the time. Both are in a coma, fighting for their lives. I thought it couldn't get any worse, my mother got sepsis and pneumonia today.
Now I have returned to my parents' house and pray that both of them will survive. Can't sleep even though I'm tired to death. Can't work, try to distract me somehow. Maybe I'll be able to sleep at least two hours. Then I'll go back to the hospital.
What a damn fuckin' week.46 -
Hi there fellas,
I'm new to devrant and I'll like to share with you my first story.
It was my first payed job. A good friend of mine (media designer in print) called me "My customer needs a website, do you think you can do that?"
At this time I've never build a single page, so my answer was "Of course, easy-peasy".
She told me it was a family business and a nationwide player in finance sector.
I met the CEO, did my research and build a prototype. Well, the CEO and his staff liked it so I finished the website and prepared for the first review.
I booted the laptop and tried to connect to their network. There was none. They just never had a wireless connection not a single cable in the entire office. That was the time I realized that I work for a family business.
The CEO was an ancient guy who probably saw Jesus Christ hanging on the cross in personal and internet is weird thing controlled by the devil himself.
I took the laptop and went over to the CEOs personal office, plugged the network cable out of his Computer and into the laptop. Finally I could show them what I've done.
He took a look at it and called for his assistant. "Might you print that website for us?" That was my second wtf moment.
The assistant returned with a half chopped down and bleached rainforest that contained an image of their new website.
I tried to tell him that a website on paper can't show him the functions n shit, but he looked at me like I was talking two foreign languages at once.
So we reviewed the website on paper and his one and only problem was the size of the letters. "I can't read it well, please make the text bigger" At this moment I wanted to hit my forehead on the table and tell him that it is normal to have readings difficulties when you are walking the shores of Styx.
At the end everything went well, but I realized that dealing with customers is a lot more difficult than developing something for them. The future should prove me right.
That's it.
My first story about my first job.
Thank you for reading 😊12 -
Worst dev team failure I've experienced?
One of several.
Around 2012, a team of devs were tasked to convert a ASPX service to WCF that had one responsibility, returning product data (description, price, availability, etc...simple stuff)
No complex searching, just pass the ID, you get the response.
I was the original developer of the ASPX service, which API was an XML request and returned an XML response. The 'powers-that-be' decided anything XML was evil and had to be purged from the planet. If this thought bubble popped up over your head "Wait a sec...doesn't WCF transmit everything via SOAP, which is XML?", yes, but in their minds SOAP wasn't XML. That's not the worst WTF of this story.
The team, 3 developers, 2 DBAs, network administrators, several web developers, worked on the conversion for about 9 months using the Waterfall method (3~5 months was mostly in meetings and very basic prototyping) and using a test-first approach (their own flavor of TDD). The 'go live' day was to occur at 3:00AM and mandatory that nearly the entire department be on-sight (including the department VP) and available to help troubleshoot any system issues.
3:00AM - Teams start their deployments
3:05AM - Thousands and thousands of errors from all kinds of sources (web exceptions, database exceptions, server exceptions, etc), site goes down, teams roll everything back.
3:30AM - The primary developer remembered he made a last minute change to a stored procedure parameter that hadn't been pushed to production, which caused a side-affect across several layers of their stack.
4:00AM - The developer found his bug, but the manager decided it would be better if everyone went home and get a fresh look at the problem at 8:00AM (yes, he expected everyone to be back in the office at 8:00AM).
About a month later, the team scheduled another 3:00AM deployment (VP was present again), confident that introducing mocking into their testing pipeline would fix any database related errors.
3:00AM - Team starts their deployments.
3:30AM - No major errors, things seem to be going well. High fives, cheers..manager tells everyone to head home.
3:35AM - Site crashes, like white page, no response from the servers kind of crash. Resetting IIS on the servers works, but only for around 10 minutes or so.
4:00AM - Team rolls back, manager is clearly pissed at this point, "Nobody is going fucking home until we figure this out!!"
6:00AM - Diagnostics found the WCF client was causing the server to run out of resources, with a mix of clogging up server bandwidth, and a sprinkle of N+1 scaling problem. Manager lets everyone go home, but be back in the office at 8:00AM to develop a plan so this *never* happens again.
About 2 months later, a 'real' development+integration environment (previously, any+all integration tests were on the developer's machine) and the team scheduled a 6:00AM deployment, but at a much, much smaller scale with just the 3 development team members.
Why? Because the manager 'froze' changes to the ASPX service, the web team still needed various enhancements, so they bypassed the service (not using the ASPX service at all) and wrote their own SQL scripts that hit the database directly and utilized AppFabric/Velocity caching to allow the site to scale. There were only a couple client application using the ASPX service that needed to be converted, so deploying at 6:00AM gave everyone a couple of hours before users got into the office. Service deployed, worked like a champ.
A week later the VP schedules a celebration for the successful migration to WCF. Pizza, cake, the works. The 3 team members received awards (and a envelope, which probably equaled some $$$) and the entire team received a custom Benchmade pocket knife to remember this project's success. Myself and several others just stared at each other, not knowing what to say.
Later, my manager pulls several of us into a conference room
Me: "What the hell? This is one of the biggest failures I've been apart of. We got rewarded for thousands and thousands of dollars of wasted time."
<others expressed the same and expletive sediments>
Mgr: "I know..I know...but that's the story we have to stick with. If the company realizes what a fucking mess this is, we could all be fired."
Me: "What?!! All of us?!"
Mgr: "Well, shit rolls downhill. Dept-Mgr-John is ready to fire anyone he felt could make him look bad, which is why I pulled you guys in here. The other sheep out there will go along with anything he says and more than happy to throw you under the bus. Keep your head down until this blows over. Say nothing."11 -
--- GitHub 24-hour outage post mortem ---
As many of you will remember; Github fell over earlier this month and cracked its head on the counter top on the way down. For more or less a full 24 hours the repo-wrangling behemoth had inconsistent data being presented to users, slow response times and failing requests during common user actions such as reporting issues and questioning your career choice in code reviews.
It's been revealed in a post-mortem of the incident (link at the end of the article) that DB replication was the root cause of the chaos after a failing 100G network link was being replaced during routine maintenance. I don't pretend to be a rockstar-ninja-wizard DBA but after speaking with colleagues who went a shade whiter when the term "replication" was used - It's hard to predict where a design decision will bite back and leave you untanging the web of lies and misinformation reported by the databases for weeks if not months after everything's gone a tad sideways.
When the link was yanked out of the east coast DC undergoing maintenance - Github's "Orchestrator" software did exactly what it was meant to do; It hit the "ohshi" button and failed over to another DC that wasn't reporting any issues. The hitch in the master plan was that when connectivity came back up at the east coast DC, Orchestrator was unable to (un)fail-over back to the east coast DC due to each cluster containing data the other didn't have.
At this point it's reasonable to assume that pants were turning funny colours - Monitoring systems across the board started squealing, firing off messages to engineers demanding they rouse from the land of nod and snap back to reality, that was a bit more "on-fire" than usual. A quick call to Orchestrator's API returned a result set that only contained database servers from the west coast - none of the east coast servers had responded.
Come 11pm UTC (about 10 minutes after the initial pant re-colouring) engineers realised they were well and truly backed into a corner, the site was flipped into "Yellow" status and internal mechanisms for deployments were locked out. 5 minutes later an Incident Co-ordinator was dragged from their lair by the status change and almost immediately flipped the site into "Red" status, a move i can only hope was accompanied by all the lights going red and klaxons sounding.
Even more engineers were roused from their slumber to help with the recovery effort, By this point hair was turning grey in real time - The fail-over DB cluster had been processing user data for nearly 40 minutes, every second that passed made the inevitable untangling process exponentially more difficult. Not long after this Github made the call to pause webhooks and Github Pages builds in an attempt to prevent further data loss, causing disruption to those of us using Github as a way of kicking off our deployment processes (myself included, I had to SSH in and run a git pull myself like some kind of savage).
Glossing over several more "And then things were still broken" sections of the post mortem; Clever engineers with their heads screwed on the right way successfully executed what i can only imagine was a large, complex and risky plan to untangle the mess and restore functionality. Github was picked up off the kitchen floor and promptly placed in a comfy chair with a sweet tea to recover. The enormous backlog of webhooks and Pages builds was caught up with and everything was more or less back to normal.
It goes to show that even the best laid plan rarely survives first contact with the enemy, In this case a failing 100G network link somewhere inside an east coast data center.
Link to the post mortem: https://blog.github.com/2018-10-30-...6 -
Got very little sleep last night, not in a great mood to begin with. Came into work to find someone borrowed one of my cables that I need and hasn't returned it. It was wrapped around a few things to keep it tidy, all of which have been moved, stretched, bent etc. Now my battery is running low and he has emailed to say won't be in for 30 minutes.
Think the only reasonable course of action in a just world, is for me to strangle him with the cable when he gets in. I mean come on, whats the alternative? Still haven't gotten that pen back from last year ... this place is going downhill fast!8 -
After using Windows for two years because of work and university, I finally returned to Ubuntu.
When I saw the logo while booting I felt that I have finally returned home.
And on the very next boot grub shat itself.
I am home alright. 😂😂6 -
Appreciation post.
Fucking love Amazon even more now.
Story -
I created a new Aws account and they asked me to pay ₹2 (0.031$) as part of the verification process.
No big deal right?
2 days later, I got a notification saying - "Your account has been credited with ₹2.66"
Not only they returned me my money, but they also paid a certain interest with it too.
And the fact that they are taking care of their dev community (as if we are their customers) is appreciable.
Amazon - you bloody have my respect. I trust you.
No big deal7 -
Dev: “Ughh..look at this –bleep- code! When I execute the service call, it returns null, but the service received a database error.”
Me: “Yea, that service was written during a time when the mentality was ‘Why return a service error if the client can’t do anything about it?’”
Dev: “I would say that’s a misunderstanding of that philosophy.”
Me: “I would say it’s a perfectly executed example of a deeply flawed philosophy.”
Dev: “No, the service should just return something that tells the client the operation failed.”
Me: “They did. It was supposed to return a valid result, and the developer indicated a null response means the operation failed. How you deal with the null response is up to you.”
Dev: “That is stupid. How am I supposed to know a null response means the operation failed?”
Me: “OK, how did you know the operation failed?”
Dev: “I had to look at the service error logs.”
Me: “Bingo.”
Dev: “This whole service is just a –bleep-ing mess. There are so many things that can go wrong and the only thing the service returns is null when the service raises an exception.”
Me: “OK, what should the service return?”
Dev: ”I don’t know. Error 500 would be nice.”
Me: “Would you know what to do with error 500?”
Dev: ”Yea, I would look at the error log”
Me: “Just like you did when the service returned null?”
<couple of seconds of silence>
Dev: “I don’t know, it’s a –bleep-ing mess.”
Me: “You’re in the code, change it.”
Dev: “Ooohhh no, not me. The whole thing will have to be re-written. It should have been done correctly the first time. If we had time to do code reviews, I would have caught this –bleep- before the service was deployed.”
Me: “Um, you did.”
<a shocked look from Dev>
Dev: “What…no, I’ve never seen this code.”
Me: “I sat next to Chuck when you were telling him he needed to change the service to return null if an exception was raised. I remember you telling him specifically to pop-up an error dialog ‘Service request failed’ to the user when the service returned null.”
Dev: “I don’t remember any of that.”
Me: “Well, Chuck did. He even put it in the check-in comments. See…”
<check in comments stated Dev’s code review and dictated the service return null on exceptions>
Dev: “Hmm…I guess I did. –bleep- are you a –bleep-ing elephant? You –bleep-ing remember everything.”
<what I wanted to say>
No, I don’t remember everything, but I remember all the drive-by <bleep>-ed up coding philosophies you tried to push to the interns and we’re now having all kinds of problems I spend waaaaay too much time fixing.
<what I said, and lied a little bit>
Me: “No, I was helping Nancy last week troubleshoot the client application last week with the pop-up error. Since the service returned a null, she didn’t know where to begin to look for the actual error.”
Dev: “Oh.”1 -
I told these people that this issue would happen. Did they listen? Nooo
It'll be fine, they say. We likely won't be having that much data returned to the front end, they say.
Day of the install. Web Application attempts to query 68,000 rows of data straight into the web page.
*Surprised Pikachu face* when they are consistently getting crashed browser tabs.
And now everything gets pushed back and we're behind by an entire month because they didn't heed my warnings.
Oh, and now I have to pick up after them, and do some stupid work arounds that will likely be defunct in a month or two. 🙄5 -
After a long time in .NET and JavaScript, I have returned to Java today. I was quite happy about it for a few minutes!3
-
Some days I feel like I work in a different universe.
Last night our alerting system sent out a dept. wide email regarding a high number of errors coming from the web site.
Email shows the number of errors and a summary of the error messages.
Ex. 60 errors
59 Object reference not set to an instance of an object
1 The remote server returned an unexpected response: (413) Request Entity Too Large
Web team responds to the email..
"Order processing team's service is returning a 413 error. I'll fill out a corrective action ticket in the morning to address that error in their service. "
Those tickets are taken pretty seriously by upper mgmt, so I thought someone on the order processing team would point out the 1 error vs. 59 (coming from the web team's code).
Two hours go by, nobody responds, so I decide to jump into something that was none of my business.
"Am I missing something? Can everyone see the 59 null reference exceptions? The 413 exception only occurred once. It was the null reference exceptions that triggered the alert. Looking back at the logs, the site has been bleeding null reference exceptions for hours. Not enough for an alert, but there appears to be a bug that needs to be looked into."
After a dept. managers meeting this morning:
MyBoss: "Whoa..you kicked the hornets nest with your response last night."
Me: "Good. What happened?"
<Dan dept VP, Jake web dept mgr>
MyBoss: "Dan asked Jake if they were going to fix the null reference exceptions and Jake got pissed. Said the null reference errors were caused by the 413 error."
Me: "How does he know that? They don't log any stack traces. I don't think those two systems don't even talk to one another."
<boss laughs>
MyBoss:"That's what Dan asked!..oh..then Jake started in on the alert thresholds were too low, and we need to look into fixing your alerting code."
Me: "What!? Good Lord, tell me you chimed in."
MyBoss: "Didn't have to. Dan starting laughing and said there better be a ticket submitted on their service within the next hour. Then Jake walked out of the meeting. Oh boy, he was pissed."
Me: "I don't understand how they operate over there. It's a different universe.
MyBoss: "Since the alert was for their system, nobody looked at the details. I know I didn't. If you didn't respond pointing out the real problem, they would have passed the buck to the other team and wasted hours chasing a non-existent problem. Now they have to take resources away from their main project and answer to the VP for the delay. I'm sure they are prefixing your name right now with 'that asshole'"
Me: "Not the first, won't be the last."2 -
My start at one of the Big Four (accounting firms).
The first two days of each month they organise "onboarding days" for the new starters of that month. (I so hate upper management buzzwords!) They sent me a formal invitation that looked like I was being invited to a ball with the royals, and they included the following super-smarty-pants line: "Dress code: would you wear jeans and t-shirt when you meet a client?"
And I thought: "I'm an effing hardware and software engineer for internal services. I will never meet a client." But I dressed formally nonetheless, and I went to the onboarding, and I hated every second I spent in those effing high heels, and don't get me started on how I managed to get a run on my stockings in the first hour.
The first day of the onboarding we sat through eight hours of general talks from senior employees who wanted to explain the "culture" and "values" of our company, but the worst of all was the three-hour introduction to IT services where they "helped us set up our new laptops" and taught us how to send e-mails and how to use the Company Portal.
On the second day, they divided us into groups depending on our speciality (assurance, taxes, legal, etc) and exposed us to further 8 hours of boredom related to our speciality. However, since the "digital services" thing was still new to them, we didn't have a category of our own, and we had to attend the introduction to one of the other categories, and I didn't understand one word of what was being said.
On the third day I finally went to my office and they provided me with a second laptop. It turns out that we engineers got different laptops and were allowed to manage it ourselves instead of letting central IT manage it for us. So I simply returned the laptop they had given me the first day and started working. However, for some reason, the laptop I returned was not registered, and two weeks later they started pestering me with emails asking where was the laptop "I had stolen". It took me 3 weeks of emails and calls to make them understand that I had returned the laptop immediately.
Also, on the two onboarding days we had to sign attendance, and since I forgot to sign the paper list on the second day, they invited me to the event the next month again. I explained to them that I had already attended the onboarding and didn't go, so they invited me again on the third month, and they threatened me with "disciplinary action" if I didn't go. After a week of lost time writing emails and calling people, I ended up going to the onboarding again just to sign the effing list.
In the end, I resigned during the probation time. That company was the worst experience of my life. It was an example of corporate culture so absurdly exaggerated that it sometimes reminded me of Kafka's Trial. I think they have more "HR representatives" than people who do actual work.6 -
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 -
Hello again, everyone. I've been busy with all the paperwork at my ship (will make a post about it later) but for now, I'll bore you with another story (not navy one, fortunately) to justify my slacking off.
And this story... is the story on how I got into ITSec. And it is pretty damn embarrassing. It all began when I was 16. I was hooked on battleknight.gameforge.com, a browser game. My father had just had ADSL installed at our home, and the new opportunities before me were endless. Well...
After I've had my fill with the porn torrents and them opportunities dwindled to just a few dozens, I began searching for free games, and I stumbled on that game. I played a lot, but as a free-to-play game, it was also pay-to-win. I didn't have a credit card, so I paid for a few gems with SMS messages. Fast forward a couple of years, I got into the Naval Academy. A guy came in to advertise something (I think it was an encyclopaedia or something - yes, wikipedia wasn't a thing back then) and to pay for it, we could apply for a credit card. So I applied. And I resisted the temptation for a year.
Note: prepaid wasn't that known where I live, so using credit cards was the only way for online transactions.
So I made 1 transaction. Just one. After a couple of months my monthly report from the bank came, showing a 2.5$ (I think) transaction on Paypal. I paid no mind, thinking that it was some hidden fee. Oh boy, I shit you not, I was THAT much of an idiot. Six months later, BOOM!
600$ transaction to ebay via paypal. You can imagine all those nice things that came to my mind. In any case, the bank accepted my protest that I filed at their central offices and cancelled the transaction. I promptly cancelled my card, destroyed it right there for good measure, and got to thinking... what the fuck just happened?
As many people here, I am afflicted with a deadly virus, called curiosity. I started researching the matter, trying to figure out how. And, because I didn't like black boxes and "it is just like it is" explanations, I tumbled down the rabbit hole of ITSec. I soon found out that, not only it was possible, but also it was sometimes EXTREMELY easy to steal credit card info. There are sites, to this very day, that store user info (along with credit cards info) IN FUCKING CLEARTEXT. Sometimes your personal, financial and even medical info are just an SQLi away.
So, I got very disillusioned on many things. But I never regretted it. It may cause me to age prematurely and will kill me of stroke or heart attack one day, but as I still tumble down the ITSec rabbit hole, I can say with confidence that
I REGRET NOTHING
Plus, my 600$ were returned, so look on the bright side :)1 -
WASM was a mistake. I just wanted to learn C++ and have fast code on the web. Everyone praised it. No one mentioned that it would double or quadruple my development time. That it would cause me to curse repeatedly at the screen until I wanted to harm myself.
The problem was never C++, which was a respectable if long-winded language. No no no. The problem was the lack of support for 'objects' or 'arrays' as parameters or return types. Anything of any complexity lives on one giant Float32Array which must surely bring a look of disgust from every programmer on this muddy rock. That is, one single array variable that you re-use for EVERYTHING.
Have a color? Throw it on the array. 10 floats in an object? Push it on the array - and split off the two bools via dependency injection (why do I have 3-4 line function parameter lists?!). Have an image with 1,000,000 floats? Drop it in the array. Want to return an array? Provide a malloc ptr into the code and write to it, then read from that location in JS after running the function, modifying the array as a side effect.
My- hahaha, my web worker has two images it's working with, calculations for all the planets, sun and moon in the solar system, and bunch of other calculations I wanted offloaded from the main thread... they all live in ONE GIANT ARRAY. LMFAO.If I want to find an element? I have to know exactly where to look or else, good luck finding it among the millions of numbers on that thing.
And of course, if you work with these, you put them in loops. Then you can have the joys of off-by-one errors that not only result in bad results in the returned array, but inexplicable errors in which code you haven't even touched suddenly has bad values. I've had entire functions suddenly explode with random errors because I accidentally overwrote the wrong section of that float array. Not like, the variable the function was using was wrong. No. WASM acted like the function didn't even exist and it didn't know why. Because, somehow, the function ALSO lived on that Float32Array.
And because you're using WASM to be fast, you're typically trying to overwrite things that do O(N) operations or more. NO ONE is going to use this return a + b. One off functions just aren't worth programming in WASM. Worst of all, debugging this is often a matter of writing print and console.log statements everywhere, to try and 'eat' the whole array at once to find out what portion got corrupted or is broke. Or comment out your code line by line to see what in forsaken 9 circles of coding hell caused your problem. It's like debugging blind in a strange and overgrown forest of code that you don't even recognize because most of it is there to satisfy the needs of WASM.
And because it takes so long to debug, it takes a massively long time to create things, and by the time you're done, the dependent package you're building for has 'moved on' and find you suddenly need to update a bunch of crap when you're not even finished. All of this, purely because of a horribly designed technology.
And do they have sympathy for you for forcing you to update all this stuff? No. They don't owe you sympathy, and god forbid they give you any. You are a developer and so it is your duty to suffer - for some kind of karma.
I wanted to love WASM, but screw that thing, it's horrible errors and most of all, the WASM heap32.7 -
Long rant!!!
Let me give you a little back story first
So I was building a mobile app for a client who is to say the least a big PAIN IN THE ASS!
And once I completed the final edits he requests and sent him the app for approval, he calls me and starts asking about some features in the app if it has does or not (which the app does). The main reason for this rant is the feature about the app being able to open the links of the website inside the app without going to the browser first.
But what was happening when the client clicked on the link, since it’s a newspaper type of app, he got asked in which browser he wanted to open the link and after the browser was opened it returned him to the app and asked if he wants that link be opened in the app or browser again. So I can understand his confusion and anger with this problem so I started to debug to see what is happening since I now this featured worked before and had it on video to show it does. After a few minutes I noticed that the links were being added as google.com/url?q={CLIENT_URL}/something_else instead of just www.client_url.com/article
Obviously not my fault as I don’t do content for the website but some other person. But once I called him back and explained the situation to him, he started yelling at me for not being able to create the feature and not notifying him of the mistake his author was making. After about 10mins of him yelling I snapped and just angrily told him “I don’t hear any problems with the app, as far as I’m concerned it can be published as is, as there is not problem on my side”. Then he got even more angry and started talking more shit about how this is all my fault and how I’m a bad programmer and how his users are gonna just delete the app once they see this and I should find a way to fix those links.
And to clarify some more, if there was like 5-10 articles I would do it, just so that I don’t have to listen to him, but there are more than 1 or 2k articles with about 2-5 links per article that were added like that.
After his call I called my boss and told him what happened, and he said he will talk to the client and explain to him how he will be able to communicate with me from now on and in what tone. As I’m not allowed to tell clients anymore to go fuck themselves, since I did it once. But I can call my boss and he does it for me :D
//END RANT !!!4 -
First time my laptop acted as a CV.
I've been in a personal project with my pal for like a three months. We meet sometimes at a cafe which is a very nice workplace, we often see more people with laptops, so we are not the only ones that thinks so.
My pal was waiting for me, he got a table early and then I arrived. there was a guy nearby us.
Me: (this guy has a newest new macbook pro, fucking riche)
-- I sit, put my laptop and start to work with my pal --
The guy starts looking at my stickers without hiding his doing at all. I noticed that instantly
Me: (Crap, he's gonna ask something :( )
-- I kept discussing stuff with my pal for like 5 minutes and then it happened. the guy stands up and... --
Guy: hey! how are you? sorry for bother, are you perhaps developers? I'm asking because I saw your stickers
Me: mmm yes
Guy: Do you have a job currently?
Me: We are in a project (No need to mention this is personal project and I got my full time job)
Guy: Oh, ok, no problem, you see I got a company, and currently we are looking for people to work with us, we want frontend developers with javascript skills preferable, but anything is welcome. Interviews starts next week, so if you are interested or know someone that could be, I'll give you my card and please write me at my mail if anything.
Me: got it, no problem.
-- I tried my best to hide my displeasure face(but I think I showed it a little), for him to being a riche with a new macbook pro, and you know, the interruption, I wanted to be focused while working in da project --
-- I got the card, I read it a bit, didn't dig into too much, there was stuff to do at the moment. the guy already returned to his chair and my friend --
Pal: Excuse me Mr Guy, what's the job tittle?
Me: (FUCK! dude!, we're working in our shit, don't give him more reason to try to scout us. we are behind the schedule and I need to explain this shit to you FFS)
Guy: Oh yes, will be frontend developer(again), but if you are a full stack that will be a plus too, we got some stuff with angular 1.x(ugh), and sencha touch(ugh) and ...(don't remember what else was it)
Pal: Ok and the job is full time in site? or are you open to work remotely
Me: (ok man, you sound interested, that makes me look interested too >:( )
Guy: preferable in site, but we would consider remotely depending on the person.
Pal: Good! thank you very much Mr. X
Guy: cool
-- Later on, like two hours, my friend goes to the counter for more coffee --
-- I text him: dude, I feel the guy will kidnap me or something --
-- then the guy start looking again at my laptop and... ---
Guy: hey! Jhon was your name right? Do you have experience with devops? I see your aws stickers
Me: yes
Guy: do you have experience with microservices?
Me: yes, a bit with lambda, also I've done some stuff with kubernetes, opsworks, rds and whatnot. no biggie
Guy: oh cool! we have a devops job too, there is a migration we need to do for an app to micro services. again if you are interested or know someone that it does. please mail me :)
Me: gotcha
There were no further interactions with Mr. Guy the rest of the day.
I'll be thrilled if someone ask me about my bee and puppycat sticker12 -
Old rant about an internship I had years ago. It still annoys me to this day, so I just had to share the story.
Basically I had no job or work experience in the field, which is a common issue in the city I live in - developer jobs are hard to come by with no experience here. The municipality tried to counter this issue by offering us (unemployed people with an interest in the field) a free 9-month course, linked with an internship program, with a "high chance" of a job after the internship period.
To lure companies to agree to this deal, the municipality offered a sum of money to companies who willing to take interns. The only requirement for the company was that they had to offer a full-time position to the interns after the internship, as long as there were no serious issues (ex. skipping work, calling in sick, doing a bad job etc.).
On paper, this deal probably makes sense.
I landed an internship fairly quickly at a well-known company in the city. The first internship period went great, and I got constant positive feedback. I even got to the point where I ran out of tasks since I worked faster than expected - which I was fairly proud of at the time.
The next internship period was a weird mix between school (the course), and being at the company. We would be at the school for the whole week, expect Wednesdays where we could do the internship at the company.
When I met at work on that first Wednesday, the company told me that it made no sense for me to meet up on those days, as I was only watching some tutorial videos during that time, while they were finding bigger tasks for me - which in turn required that they got some designs for a new project. They said that due to the requirements they got from the municipality (which I knew nothing about at the time), they couldn't ask me to work from home - and they said it would "demoralize" the other developers if I just sat there on Wednesdays to watch videos. Instead, they suggested that I called in sick on Wednesdays and just watched the videos at home - which is something I would register to the workplace, so I wouldn't get in trouble with the school. It sounded logical to me, so I did that for like 5-6 Wednesdays in a row. Looking back at this period, there's a lot of red flags - but I was super optimistic and simply didn't notice.
After this period, the final 2 months of the internship period (no school). This time I had proper tasks, and was still being praised endlessly - just like the first period.
On the last day of the internship, I got called to a meeting with my teamlead and CEO. Thinking I was to sign a full-time contract, I happily went to the meeting.. Only to be told that they had found someone with more experience.
I was fairly disappointed, and told them honestly that I would have preferred if they had told me this earlier, since I had been looking forward to this day. They apologized, but said that there was nothing they could do.
When I returned for the last school period (2 weeks), the teacher asked me to join him for a small meeting with some guy from the municipality. Both seemed fairly disappointed / angry, and told me what still makes me furious whenever I think about it.
Basically after my last internship period, the company had called the municipality, telling them that I had called in sick on those Wednesdays, and was "a lazy worker", and they would refuse to hire me because of that.
I of course told them my side of the story, which they wouldn't believe (unemployed person vs. well-known company).
Even when I landed a proper job a few months later, the office had called my old internship for a reference - and they told the same story, which nearly made them decline my application. This honestly makes me feel like it's something personal.
So basically:
Municipality: Had to pay the company as the deal / contract between them was kept.
Company: Got free money and work.
Me: Got nothing except a bad reputation - and some (fairly limited) experience..
Do I regret taking the course? .. No, it was a free course and I learned a lot - and I DID get some experience. But god, I wish I had applied at a different company.
Sorry for my bad English - it's not my first language.. But f*ck this company :)8 -
Anytime I have to deploy to iOS store. Part of the stack includes human review... Need I say more?
If I had a dollar for every fucking time they ignored our flagging to not put it on iPad, and returned with their review 2-3 days later saying:
"App UI did not run on iPad resolution cleanly."
Then having to submit an appeal and wait 2-3 more days...10 -
They've literally left me with nothing to do. I'm doing nothing. I can't be happy doing nothing.
To illustrate the chaos: Everyone on the team was trying to figure out some defect. No one knows what is going on in the code. It's unlike anything I've ever seen.
I found an API call with a misspelled endpoint. It was wrong since the code was written two months before. There's no way it ever worked. Obviously no one tested the code because they would have immediately seen that the call returned a 404 every time.
I fixed it. That was my only PR in about a month. It was literally one character.
The next week that PR got reverted. Apparently the app works better if the API call fails. No one said what goes wrong if the request is made, just that it "causes problems."
That's how bad it is. No one knows why anything does or doesn't work. People write code that doesn't work, never test it, and the application works better in some unspecified way if that code never gets executed.
The last straw for me was when an architect told us that if we want to improve our skills we need to learn how to read and debug stuff like this.
1) Not to be immodest, but I'm good at figuring out bad code.
2) Just because I can doesn't mean I want to do it all day instead of actually developing software
3) He trivialized the really important skill, not making a mess like this in the first place. If his idea of skill is to sling crap without tests at the wall and then debug it, how is he an architect?
I tried really hard but I can't keep a good attitude. I don't want to become toxic, but why would I consider working that way? I try my best to be good at this. Writing decent code means a lot to me. It should mean a lot to them. Their code is costing them hundreds of thousands of dollars. Maybe millions.
I can't write good code and add value if all I do is debug bad code.
So I'm out. I'm going to another project. Have a nice life.4 -
I never had problems with punctuation marks during coding, especially the notorious semicolons because I've always used an IDE, ain't gotta time to waste on compiler errors.
But today I meet my nemesis, a fucking comma wasted an hour of my precious time, causing my unit tests to fail in Python, my unit tests where expecting a list and the actual value is a tuple, it turned out that there was this trailing comma - which I don't know where the hell it came from - at the end of a function call that returns a list.
I only noticed this freaking comma after Pycharm indicated a conflict between the returned type and the expected type and underlined the culprit, that small invisible fucker 😬.
Thank you Pycharm and type hints in Python 3.
this is why, my fellow devs, you have to use an IDE.
PS: For those of you who aren't familiar with python, a trailing comma at end of a variable turns it into a one element tuple.
1, = (1,)1 -
I did it - I went outside! Felt strange, like Y2K and Maya doomsday would have been together. Of course I went out only during daylight because THEY hide in the dark. Infrastructure was mostly still intact, I've even seen some houses. Occasionally, survivors scrambling the area.
GPS didn't work so I used my magnetic compass. OK, it was because I forgot my mobile at home, but anyway. Should I take petrol with me so that I could burn my clothing upon return? Or would this attract THEM? Occasional gunfire in the distance. Might also be some pneumatic hammer, that's what the media would try to tell me.
The local supermarket had still trolleys outside. I took note because I might need them to bar the stairwell, along with the land mines that I still have left over from New Year's Eve.
Deserted cars standing around. Looked like neatly parked, but that doesn't mean anything. When Germans turn into zombies, their last human action is to park their cars. That's so genetically hardwired that no virus can override it.
Dusk set in. I better returned home.17 -
My life could get worse, but it's really shitty now.
Suffering from a serious back injury since last year, my health has been not so positieve lately.
It put a toll on my mood, which in turn asked it's price regarding my relationship. Needless to say that did not go well. Already a fe months single but we kept in touch.
Three days ago my back injury returned, and was unable to lead a normal life. Constant pain, coyld not even move in the house. Even going to the toilet was a terrible experience because when you move, you're in a world of pain.
I asked my ex girlfriend to help me, since she was the only one having a key to my house.
When she arrived i hoped to have some moral support and to help me mive around, ensuring i would not injure myself any more.
Instead i received the cold shoulder. When she wanted to help pe up she did it a bit too hard and the pain sheered thrpughout my body. Screaming in pain.
She promptly left, leaving keys behind.
The hardest part is that she just left without me being able to explain clearly why i screamed. She thought i was yelling at her while in reality i was yelling due to the immense pain.
After that i had to cut ties forever. Tabula rasa. So i removed everything that is related to that time and locked it in my vault.
Since then i can hardly focus, my mibd is numb and i cannot think straight. The alcohol and other sedatives are probably also involved, but still i feel my life is a mountain of depressing shit.
Needed to vent. And yes i post this because i have a need for some understanding, yes for now i crave for some attention and some encouraging, supportive words. I'm left With no other options since the person i wanted it from the most has simply left... And the fact i am unable to actually be social outside...
Fuck friends and relationships, right?13 -
Not a rant. Just a story.
So two weeks ago, a cat gave birth to two beautiful kittens in our balcony. We started giving milk to the mother and sometimes inviting the family to our house. The kittens are naughty charming. The mother sits for hours and sometimes sleeps while watching us do our chores (watching movies, coding, etc.)
Now, we live in New Delhi and Wednesday was Diwali. The family was playing in the balcony and we had to go out. So we locked the balcony door and went to have fun with friends. We didn't realize that people would burst firecrackers which could scare the cats. When we returned, the mother was very scared and (kind of) screaming. One of the kittens was missing!! We live on the fourth floor and I got scared too. We searched using a flashlight but there was no sign of kitten. After 30 minutes of search, We gave up. I assumed the kitten jumped from the balcony and might be dead. I tried to sleep but could not. Around 4 AM in the morning, I heard some noise. When I opened the door, the second kitten was there. Her mom was scolding (or so it seemed). It was a moment of joy.
Thought of sharing. This family has become our friends. Now I realize how cats are good companions.3 -
Did some updates to an older Web Forms website built by a previous SENIOR developer who is a notoriously horrible developer.
Now before I start, you have to understand this guy studied at a University and had been working for at least two years before I even started working. He is supposed to know the basic shit mentioned below.
This also happened a couple of days ago, so I have calmed down since then so I apologise for the relaxed tone. My next rant will contain a lot more swearing.
This fucking guy did the stupidest shit imaginable.
On the details view of a post|page|article|product|anything that would require a details view this jackass would load the data from the DB.
Using an OleDbConnection, OleDbDataAdapter, DataTable and the poorest writter fucking sql statements you have ever seen. All of these declared in the Page_Load method.
There was literally no reason for him to use OleDb instead of Sql, but he simply did not know any better.
He especially liked: "select * from tbl where id = " & Request("T") & ""
ZERO fucking checks to see if the value is even passed or valid, nothing. He did not even check whether the DataTable had any rows.
He then proceeded to use only the Heading column of the returned row to change the page's title.
Stupidly I assumed the aspx page will be in a better state. Fuck NO!
This fucktard went, added server tags to the opening of the asp:Content tag, copied that shit he used to fetch the data and pasted it between the server tags.
He did not know how to access the DataTable mentioned above from the aspx page!
He did this on every fucking project he worked on. Any place that required <%= %> to display data instead of using asp server controls, this cunt copied whatever was written in the code behind and pasted everything between server tags.
Fuck I could go on forever, but I think this is enough for my first rant.2 -
OMFG I don't even know where to start..
Probably should start with last week (as this is the first time I had to deal with this problem directly)..
Also please note that all packages, procedure/function names, tables etc have fictional names, so every similarity between this story and reality is just a coincidence!!
Here it goes..
Lat week we implemented a new feature for the customer on production, everything was working fine.. After a day or two, the customer notices the audit logs are not complete aka missing user_id or have the wrong user_id inserted.
Hm.. ok.. I check logs (disk + database).. WTF, parameters are being sent in as they should, meaning they are there, so no idea what is with the missing ids.
OK, logs look fine, but I notice user_id have some weird values (I already memorized most frequent users and their ids). So I go check what is happening in the code, as the procedures/functions are called ok.
Wow, boy was I surprised.. many many times..
In the code, we actually check for user in this apps db or in case of using SSO (which we were) in the main db schema..
The user gets returned & logged ok, but that is it. Used only for authentication. When sending stuff to the db to log, old user Id is used, meaning that ofc userid was missing or wrong.
Anyhow, I fix that crap, take care of some other audit logs, so that proper user id was sent in. Test locally, cool. Works. Update customer's test servers. Works. Cool..
I still notice something off.. even though I fixed the audit_dbtable_2, audit_dbtable_1 still doesn't show proper user ids.. This was last week. I left it as is, as I had more urgent tasks waiting for me..
Anyhow, now it came the time for this fuckup to be fixed. Ok, I think to myself I can do this with a bit more hacking, but it leaves the original database and all other apps as is, so they won't break.
I crate another pck for api alone copy the calls, add user_id as param and from that on, I call other standard functions like usual, just leave out the user_id I am now explicitly sending with every call.
Ok this might work.
I prepare package, add user_id param to the calls.. great, time to test this code and my knowledge..
I made changes for api to incude the current user id (+ log it in the disk logs + audit_dbtable_1), test it, and check db..
Disk logs fine, debugging fine (user_id has proper value) but audit_dbtable_1 still userid = 0.
WTF?! I go check the code, where I forgot to include user id.. noup, it's all there. OK, I go check the logging, maybe I fucked up some parameters on db level. Nope, user is there in the friggin description ON THE SAME FUCKING TABLE!!
Just not in the column user_id...
WTF..Ok, cig break to let me think..
I come back and check the original auditing procedure on the db.. It is usually used/called with null as the user id. OK, I have replaced those with actual user ids I sent in the procedures/functions. Recheck every call!! TWICE!! Great.. no fuckups. Let's test it again!
OFC nothing changes, value in the db is still 0. WTF?! HOW!?
So I open the auditing pck, to look the insides of that bloody procedure.. WHAT THE ACTUAL FUCK?!
Instead of logging the p_user_sth_sth that is sent to that procedure, it just inserts the variable declared in the main package..
WHAT THE ACTUAL FUCK?! Did the 'new guy' made changes to this because he couldn't figure out what is wrong?! Nope, not him. I asked the CEO if he knows anything.. Noup.. I checked all customers dbs (different customers).. ALL HAD THIS HARDOCED IN!!! FORM THE FREAKING YEAR 2016!!! O.o
Unfuckin believable.. How did this ever work?!
Looks like at the begining, someone tried to implement this, but gave up mid implementation.. Decided it is enough to log current user id into BLABLA variable on some pck..
Which might have been ok 10+ years ago, but not today, not when you use connection pooling.. FFS!!
So yeah, I found easter eggs from years ago.. Almost went crazy when trying to figure out where I fucked this up. It was such a plan, simple, straight-forward solution to auditing..
If only the original procedure was working as it should.. bloddy hell!!8 -
Our company maneuvered themselves into a classic technical debt situation with a project of a second team of devs.
They then left, signing a maintenance contract and now barely work on the project for exorbitant amounts of money.
Of course management got the idea to hand off the project to the first team, i.e. our team, even though we are not experts in that field and not familiar with the tech stack.
So after some time they have asked for estimates on when we think we are able to implement new features for the project and whom we need to hire to do so. They estimates returned are in the magnitude of years, even with specialists and reality is currently hitting management hard.
Code is undocumented, there are several databases, several frontends and (sometimes) interfaces between these which are all heavily woven into one another. A build is impossible, because only the previous devs had a working setup on their machines, as over time packages were not updated and they just added local changes to keep going. A lot of shit does not conform to any practices, it's just, "ohh yeah, you have to go into that file and delete that line and then in that other file change that hardcoded credential". A core platform is end of life and can be broken completely by one of the many frameworks it uses. In short, all knowledge is stowed away in the head of those devs and the codebase is a technical-debt-ridden pile of garbage.
Frankly I am not even sure whom I am more mad at. Management has fucked up hard. They let people go until "they reached a critical mass" of crucial employees. Only they were at critical mass when they started making the jobs for team 2 unappealing and did not realize that - because how could they, they are not qualified to judge who is crucial.
However the dev team behaved also like shitbags. They managed the whole project for years now and they a) actively excluded other devs from their project even though it was required by management, b) left the codebase in a catastrophic state and mentioned, "well we were always stuffed with work, there was no time for maintenance and documentation".
Hey assholes. You were the managers on that project. Upper management has no qualification to understand technical debt. They kept asking for features and you kept saying yes and hastily slapped them into the codebase, instead of giving proper time estimates which account for code quality, tests, reviews and documentation.
In the end team #2 was treated badly, so I kinda get their side. But up until the management change, which is relatively recent, they had a fantastic management who absolutely had let them take the time to account for quality when delivering features - and yet the code base looks like a river of diarrhea.
Frankly, fuck those guys.
Our management and our PM remain great and the team is amazing. A couple of days a week we are now looking at this horrible mess of a codebase and try to decide of whom to hire in order to help make it any less broken. At least it seems management accepted this reality, because they now have hired personnel qualified to understand technical details and because we did a technical analysis to provide those details.
Let's see how this whole thing goes.1 -
Oh look, a new fancy MacBook Pro 2018.
How come noone is talking about the extreme heat throtteling problem they have with the 2018 laptops?
They can't even hold their base clockspeed when doing compiling code. And they become extremely hot (worse then the last gen, which was already insane).
I know devs/creators/editors want the most powerful computer out there, but supporting something like this is just laughable.
Regards, disapointed customer who tested and returned the laptop after 2 days.16 -
In the before time (late 90s) I worked for a company that worked for a company that worked for a company that provided software engineering services for NRC regulatory compliance. Fallout radius simulation, security access and checks, operational reporting, that sort of thing. Given that, I spent a lot of time around/at/in nuclear reactors.
One day, we're working on this system that uses RFID (before it was cool) and various physical sensors to do a few things, one of which is to determine if people exist at the intersection of hazardous particles, gasses, etc.
This also happens to be a system which, at that moment, is reporting hazardous conditions and people at the top of the outer containment shell. We know this is probably a red herring or faulty sensor because no one is present in the system vs the access logs and cameras, but we have to check anyways. A few building engineers climb the ladders up there and find that nothing is really visibly wrong and we have an all clear. They did not however know how to check the sensor.
Enter me, the only person from our firm on site that day. So in the next few minutes I am also in a monkey suit (bc protocol), climbing a 150 foot ladder that leads to another 150 foot ladder, all 110lbs of me + a 30lb diag "laptop" slung over my shoulder by a strap. At the top, I walk about a quarter of the way out, open the casing on the sensor module and find that someone had hooked up the line feed, but not the activity connection wire so it was sending a false signal. I open the diag laptop, plug it into the unit, write a simple firmware extension to intermediate the condition, flash, reload. I verify the error has cleared and an appropriate message was sent to the diagnostic system over the radio, run through an error test cycle, radio again, close it up. Once I returned to the ground, sweating my ass off, I also send a not at all passive aggressive email letting the boss know that the next shift will need to push the update to the other 600 air-gapped, unidirectional sensors around the facility.11 -
It was a Monday morning, and I did what most people do - I got up late. When I came to senses, I realized I have an important client meeting today.
I ran towards my closet and grabbed my favorite shirt, but it was a mess, badly wrinkled.
But no problem, I decided to put this task on my old but trusty laptop, I waked up my laptop (Which has just celebrated its 12th birthday yesterday), it literally coughed 100 times as i opened 3-4 chrome tabs and android studio on it. Within a minute , my newly found laptop-iron become as hot as the surface of sun, i gently placed my shirt under it and in 5 seconds my shirt was looking brand new !!! I quickly got dressed up , while my laptop was cursing me at the back.
Luckily my meeting went well and we secured a new project, on my way home I was happy and satisfied that my oldy has found a new purpose of life as a makeshift iron.
I returned home, and to my surprise my laptop was'nt turning on....!!! I though maybe its tired from todays work so i let him rest..........3 -
Wow i must have been brain dead when i wrote this code. Needed to exclude certain elements from response for the the list of objects.
for (obj : objects) {
If (obj.skipFromResponse()) {
break
}
add obj to response
}
I used break instead of continue at the if condition which meant it would break out of the loop at the first instance of condition being met.
This went through qa and has been in production for 4 weeks so how did this not break before. Well little did i know the list of objects was sorted and all the test data, qa data and everything so far in production coincidentally only had the last element with matching condition. This meant it returned everything correctly so far.
Today was the first time there was a situation where this caused incorrect output. Luckily as soon as I heard the description of the issue I remembered to check the merged PR and hung my head in shame for making such trivial error. I must have written way more complicated code without any problem but this made me embarrassed to even admit. 🤦♂️4 -
I haven't ranted for today, but I figured that I'd post a summary.
A public diary of sorts.. devRant is amazing, it even allows me to post the stuff that I'd otherwise put on a piece of paper and probably discard over time. And with keyboard support at that <3
Today has been a productive day for me. Laptop got restored with a "pacman -Syu" over a Bluetooth mobile data tethering from my phone, said phone got upgraded to an unofficial Android 9 (Pie) thanks to a comment from @undef, etc.
I've also made myself a reliable USB extension cord to be able to extend the 20-30cm USB-A male to USB-C male cord that Huawei delivered with my Nexus 6P. The USB-C to USB-C cord that allows for fast charging is unreliable.. ordered some USB-C plugs for that, in order to make some high power wire with that when they arrive.
So that plug I've made.. USB-A male to USB-A female, in which my short USB-C to USB-A wire can plug in. It's a 1M wire, with 18AWG wire for its power lines and 28AWG wires for its data lines. The 18AWG power lines can carry up to 10A of current, while the 28AWG lines can carry up to 1A. All wires were made into 1M pieces. These resulted in a very low impedance path for all of them, my multimeter measured no more than 200 milliohms across them, though I'll have to verify and finetune that on my oscilloscope with 4-wire measurement.
So the wire was good. Easy too, I just had to look up the pinout and replicate that on the male part.
That's where the rant part comes in.. in fact I've got quite uncomfortable with sentences that don't include at least one swear word at this point. All hail to devRant for allowing me to put them out there without guilt.. it changed my very mind <3
Microshaft WanBLowS.
I've tried to plug my DIY extension cord into it, and plugged my phone and some USB stick into it of which I've completely forgot the filesystem. Windows certainly doesn't support it.. turns out that it was LUKS. More about that later.
Windows returned that it didn't support either of them, due to "malfunctioning at the USB device". So I went ahead and plugged in my phone directly.. works without a problem. Then I went ahead and troubleshooted the wire I've just made with a multimeter, to check for shorts.. none at all.
At that point I suspected that WanBLowS was the issue, so I booted up my (at the time) problematic Arch laptop and did the exact same thing there, testing that USB stick and my phone there by plugging it through the extension wire. Shit just worked like that. The USB stick was a LUKS medium and apparently a clone of my SanDisk rootfs that I'm storing my Arch Linux on my laptop at at the time.. an unfinished migration project (SanDisk is unstable, my other DM sticks are quite stable). The USB stick consumed about 20mA so no big deal for any USB controller. The phone consumed about 500mA (which is standard USB 2.0 so no surprise) and worked fine as well.. although the HP laptop dropped the voltage to ~4.8V like that, unlike 5.1V which is nominal for USB. Still worked without a problem.
So clearly Windows is the problem here, and this provides me one more reason to hate that piece of shit OS. Windows lovers may say that it's an issue with my particular hardware, which maybe it is. I've done the Windows plugging solely through a USB 3.0 hub, which was plugged into a USB 3.0 port on the host. Now USB 3.0 is supposed to be able to carry up to 1A rather than 500mA, so I expect all the components in there to be beefier. I've also tested the hub as part of a review, and it can carry about 1A no problem, although it seems like its supply lines aren't shorted to VCC on the host, like a sensible hub would. Instead I suspect that it's going through the hub's controller.
Regardless, this is clearly a bad design. One of the USB data lines is biased to ~3.3V if memory serves me right, while the other is biased to 300mV. The latter could impose a problem.. but again, the current path was of a very low impedance of 200milliohms at most. Meanwhile the direct connection that omits the ~200ohm extension wire worked just fine. Even 300mV wouldn't degrade significantly over such a resistance. So this is most likely a Windows problem.
That aside, the extension cord works fine in Linux. So I've used that as a charging connection while upgrading my Arch laptop (which as you may know has internet issues at the time) over Bluetooth, through a shared BNEP connection (Bluetooth tethering) from my phone. Mobile data since I didn't set up my WiFi in this new Pie ROM yet. Worked fine, fixed my WiFi. Currently it's back in my network as my fully-fledged development host. So that way I'll be able to work again on @Floydian's LinkHub repository. My laptop's the only one who currently holds the private key for signing commits for git$(rm -rf ~/*)@nixmagic.com, hence why my development has been impeded. My tablet doesn't have them. Guess I'll commit somewhere tomorrow.
(looks like my rant is too long, continue in comments)3 -
Disclaimer: This is not a Windows hate rant as this problem has been solved by Microsoft(partially).
I went to a hackathon last year at an engineering college. It was not such grand hackathon as people have in USA or Europe. So I entered in this competition trying to develop a medical app which asks the user detail about his/her problems then asks questions to match the symptoms of diseases. So me and a guy(who isn't a coder) tried to develop that app. He provided the data of diseases, I tried to develop kind of AI app with those data but found that job too hard for one day hackathon. So I wrote an email for api medic for their api which I was going to use. I then coded continuously for 4 hours in Android studio for the android app. The event manager told us late in the day that repo had been made for the hackathon and we must push our codes before 12 that night. The event manager provided the repo very late that day maybe around 6. I did a big mistake not creating my own repo on github to save every code I had written from time to time.(After this e vent whatever I code I save it in a repo). I was running Windows 10 on one of my laptop and ubuntu on my another. Due to some divine badluck I was using my Windows 10 laptop on that hackathon. So around maybe 10 I was about to wrap up the day push the code to repo. I went to getself a cup of coffee and returned to find lo and behold fucking BSOD. I was fucked, it was my first hackathon so made another misatake of using emulator rather than my android phone. My Android phone was not responding good that day so I used the android emulator.
From that day on I do three things:
1. Always push my projects to github repo.
2. Use android phone after running some minor tests on emulator.
3. Never use windows(Happy arch user till eternity.)
You might be thinking even though BSOD, it can be recovered. But didn't happen in my case, the windows revert back to the time I had just upgraded from Windows 8.1 to 10.3 -
I spent 4 hours finding a good way to instanciate golang structures. Came up with a function that returned a value or pointer and I just kept reusing the nomenclature for an entire project. Then my buddy looks over and goes, "Ethan, you're a f****** idiot", and shows me the standard nomenclature. Now I have to refactor my entire project. FML.
(Edit: typo)13 -
"Impossible deadline experience?"
When product owners promise delivery dates.
One day, I came back from a two weeks holiday, relaxed. I noticed a teammate missing. "Yes, he took the week off". Sure, why not.
We were working under a bastardized enterprisey version of Scrum (didn't we all at some point?). So we didn't just have a product owner, we had three and an additional "Head of PO". Because enterprises can't live without hierarchies or something. Barely an hour after I came into office, she entered the room and came straight to me. "Your coworker was almost done implementing feature X. You need to finish it immediately. No worries, though, coworker said the rest is a piece of cake".
It wasn't. There was *a lot* left to do, the JIRA task wasn't entirely clear, and the existing code for the feature was so-so (obviously WIP code). I estimated two weeks for the implementation, plus some time to clarify the requirements. When telling "Head of PO" she lost her shit. Screaming things like "this feature is due the end of this week" and "I signed this with my blood!". Well, I didn't, and I made it clear that I hadn't been consulted on this, thus I would not accept any blame in case we missed the deadline.
So I gave my best that week, getting pestered by "Head of PO" all the time. "Is it done yet?", "why does it take so long?" and "your coworker would've been done by now!". Yeah fuck you, too. Not only was I not relaxed any more, I was even more stressed than before my holiday! Thanks, you stupid bitch.
Well, her arbitrary deadline came and the feature wasn't ready. And what happened was... exactly nothing. The following week my coworker returned, who gave me an apologetic smile. "I told her the feature was nowhere finished. And even me, being familiar with the task, couldn't make it in time". We finished the feature together that week, and that was the end of it. So... "Head of PO" either didn't listen or lied to me. She then stressed me to the max right from the day I came back from my holiday. And in the end it didn't even matter.
Again, thanks you stupid bitch, for creating a toxic work environment. Should you ever read this, I'm happy I quit and I hope you miss every single deadline for the rest of your life. Screw you.8 -
In my unenlightened youth, when programming was a module in my college diploma that didn't seem to be taking me where I wanted to go, I had a couple of guys guy in my class that could arguably be the weird ones.
Jonny, although he asserted that he was to be called "Jonhty", whatever, we never did. He was pretty much top of the high school food chain and for some reason elected to study computer science, none of us was prepared to put up with his shit. He was always boasting about some fanciful claim or another, famously entering the classroom and exclaiming he'd "fucked an absolute milf" and seemed somewhat evasive about the answer, turns out he was 17 and she was 35, the age difference was greater than his own age. We burst out laughing. He would also turn up late and state the college bus was late (it wasn't I got the free bus every day, he'd just not got out his wanking chariot early enough).
One valentine's day we got him a card from a mysterious stranger which was accompanied by a package containing a cucumber and Vaseline, the inside of the card read "to assist you in the following request: please go fuck yourself".
Before you think we were being unduly harsh, we had a centre table where we'd be taught from with computers around the outer rim of the room. He'd come up behind people while at the centre desk, quietly press ctrl+P and slowly walk back to the printer. I saw him do it to my machine and I got to the printer first, to which he shouted "that's MY work" which was amusing because unbeknownst to him I had put headers on all my documents so he really didn't have an answer for why my name was at the top of every page.
To top it all off he had dead eyes, there didn't appear to be much going on but the rent, there was no spark of intelligent life, and while I thought it, I never said it out loud, but other students did and I had to agree. He was just copying his way to graduation. However, he ultimately didn't graduate when people refused to allow him to copy.
Another guy, Richard I believe his name was, which is just as well because he was a right dick. In the UK our word for white trash is "chav" (that's a very naïve explanation for it but that's another rant best left for "socialsciencerant") and he was an complete idiot who was gifted with more brain cells than he ever needed to use. He actually studied hard and got reasonable grades, probably on par with me, but he boasted about smoking weed all the time, he was forever playing dark side of the moon via his loud mp3 player. I kinda left him alone generally until he was high in class one time and while we we're watching a documentary he'd shake my chair and make a weird noise in my ear every few minutes, the first couple of times startled me, the remaining multi-dozen times pissed me off.
It all came to a head with this guy when I'd been hearing about his uninteresting bs on drugs, music and how best to spend my time ("you need to lighten up man, come round my house, take a joint and relax man", that sorta thing), well this guy walked like he was mid way through shitting himself so I personally think that perhaps he is too chilled. Anyway he's arguing with me and after the exchange of him making his point, me disagreeing and expecting the end of it, he made the mistake of saying two words to me:
"Listen, mate..."
And I had him in check mate.
"Listen, I ain't your fucking mate , I don't even like you, you're a disruptive annoying twat that thinks he knows it all, we're all 17, none of us know anything, so shut the fuck up, sit the fuck down and stop boring me with your drugs, I ain't interested, and for the record I think pink Floyd ruined prog rock!"
He looked at me with sad puppy dog eyes, and started with the "but, why?", However I was interrupted and had to leave the class for unrelated reasons, I returned to be told he'd put safety pins up right on my chair so I'd sit on them, and mutual friends who TD me I'd been cruel and that he doesn't was hurt, so I should apologize, he overheard and said he was sorry for bring a bit of a dick.
However, you just know when you don't get on with someone? Yeah, that. So I said I wasn't sorry for what I said, for while it was harsh, I am not his mate, nor did I want to be his mate and that was all I had to say on the subject, and that if he wants to take offensive to a nobody not liking him then he's in for a very rough time in life.
Unsurprisingly I don't keep in touch with anyone from college!2 -
Just read a comment on rant that stated "You’d be surprised as how disgusting people are especially in the work setting.". In regard to bathrooms. This reads true, for my current place of work
I was about to reply to that, but I thought this is worthy of a rant of its own. Allow me to quote some emails...
"We have had reports of excrement being left on toilet seats, which surely could be seen by the person responsible before they left the cubicle. "
"very poor toilet hygiene in some the ladies toilets.
Firstly, someone person should I say.... has used a toilet brush to clear a blockage in the Ladies loo nearest [removed]. They obviously couldn't unblock the toilet due to the density of the blockage and therefore.. returned the brush to it's holder full of the blockage!! "
"The phantom "snot" wiper is back and is using the back of the toilet door nearest the [removed] as a tissue! Again.. the poor Cleaner has had to clean this up... "
"Toilet paper being put in the Urinal blocking the system in [removed] and faeces being left on the toilet floor in [removed]. This goes without saying that this can't go on and it's not the cleaners job to be cleaning such messes! "
Its ever worse in our other office that contains a call centre. A lady was fired for leaving shit in the stairwells on multiple instances. She had been fired from her last role for the same thing.
There were also reports of subway subs been left in the toilet bowl.
You also find the most curious items in the waste bins (they have no lid, we're not search through them - just to make that clear) everything from half eaten sandwiches to watermelon.15 -
Have a function that takes parameters and then performs a switch statement to determine what function to call next with those same parameters. One of those parameters is a Union type.
During CR, my reviewer said they’d like if instead of returning the function per case, I instead assigned a handler to the value of the function per case and then returned that handler at the end of the switch. Simple change, right? Only snafu, I’m casting one of the parameters on a per-case basis.
Somehow, through no fucking change of my own, TypeScript in its wisdom has decided that the type of that value by the time I call the next function is a fucking Intersection.
WHY THE FUCK DO YOU THINK IT’S AN INTERSECTION?! I’m fucking casting it per case! I’m ensuring it’s the right type for the next function called on a per case basis!
…. And that, my friends, is how I wasted a day with a stupid refactor that was ultimately just scrapped because no one could figure out how to make it work.
Goddamn fucking TypeScript. I3 -
I had spent the last year working on a online store power by woocommerce with over 100k products from various suppliers. This online store utilized a custom API that would take the various formats that suppliers offer their inventory in and made them consistent. Now everything was going swimmingly initially, but then I began adding more and more products using a plug-in called WP all import. I reached around 100k products and the site would take up to an entire minute to load sometimes timing out. I got desperate so I installed several caching plugins, but to no avail this did not help me. The site was originally only supposed to take three to four months but ended up taking an entire year. Then, just yesterday I found out what went wrong and why this woocommerce website with all of these optimizations was still taking anywhere from 60 to 90 seconds to load, or just timing out entirely. I had initially thought that I needed a beefier server so I moved it to a high CPU digitalocean VM. While this did help a little bit, the site was still very slow and now I had very high CPU usage RAM usage and high disk IO. I was seriously stumped the Apache process was using a high amount of CPU and IO along with MYSQL as well. It wasn't until I started digging deeper into the database that I actually found out what the issue was. As I was loading the site I would run 'show process list' in the SQL terminal, I began to notice a very significant load time for one of the tables, so I went to go and check it out. What I did was I ran a select all query on that particular table just to see how full it was and SQL returned a error saying that I had exceeded the maximum packet size. So I was like okay what the fuck...
So I exited my SQL and re-entered it this time with a higher packet size. I ran a query that would count how many rows were in this particular table and the number came out to being in the millions. I was surprised, and what's worse is that this table belong to a plugin that I had attempted to use early in the development process to cache the site. The plugin was deactivated but apparently it had left PHP files within the wp content directory outside of the actual plugin directory, so it's still executing scripts even though the plugin itself was disabled. Basically every time I would change anything on the site, it would recache the whole thing, and it didn't delete any old records. So 100k+ products caching on saves with no garbage collection... You do the math, it's gonna be a heavy ass database. Not only that but it was serialized data, so when it did pull this metric shit ton of spaghetti from the database, PHP then had to deserialize it. Hence the high ass CPU load. I had caching enabled on the MySQL end of things so that ate the ram. I was really desperate to get this thing running.
Honest to God the main reason why this website took so long was because the load times made it miserable to work on. I just thought that the hardware that I had the site on was inadequate. I had initially started the development on a small Linux VM which apparently wasn't enough, which is why I moved it to digitalocean which also seemed to not be enough, so from there I moved to a dedicated server which still didn't seem to be enough. I was probably a few more 60-second wait times or timeouts from recommending a server cluster to my client who I know would not be willing to purchase it. The client who I promised this site to have completed in 3 months and has waited a year. Seriously, I would tell people the struggles that I would go through with this particular site and they would just tell me to just drop the site; just take the money, just take the loss. I refused to, this was really the only thing that was kicking my ass. I present myself as this high-and-mighty developer like I'm just really good at what I do but then I have this WordPress site that's just beating the shit out of me for a year. It was a very big learning experience and it was also very humbling as well, it made me realize that I really don't know as much as I think I might. It was evidence that there is still so much more to learn out there, I did learn a lot from that experience especially about optimizing websites the different types of methods to do that particular lonely on the server side and I'll be able to utilize this knowledge in the future.
I guess the moral of the story is, never really give up. Ultimately things might get so bad that you're running on hopes and dreams. Those experiences are generally the most humbling. Now I can finally present the site that I am basically a year late on to the client who will be so happy that I did not give up on the project entirely. I'll have experienced this feeling of pure euphoria, and help the small business significantly grow their revenue. Helping others is very fulfilling for me, even at my own expense.
Anyways, gonna stop ranting. Running out of characters. If you're still here... Ty for reading :')7 -
Not the worst, but probably the only one I can sort of explain & not get into trouble for NDA breach..
Umm.. here it goes.. wrong id returned from db procedure, tried to do something on db with that id and got exception that the id doesn't exist. Instead of checking why the procedure returns nonexistent id, he just wrapped everything in try catch without any logs.. & of course, didn't tell anyone about this.. o.0
I know, I know, code review could have prevented this, but holy fuck..
Guy's cv had more experience than I have now, so at the time, I didn't think I'd have to check every line of code he wrote, especially not for shit like this.3 -
So after the original idea getting scraped during a hackathon this week, we created a slack bot to fetch most relevant answers from StackOverflow using user's input. All the user had to do was input few words and the bot handled all typos, links etc and returned the link as well as the most upvoted or the accepted amswer after scraping it from the website.
The average time to find an answer was around 2 seconds, and we also told that we're planning to use flask to deploy a web application for the same.
After the presentation, one of the judge-guys called me and told me that "It isn't good enough, will not be used widely" and "Its similar to Quora".
Never ever have I wanted to punch a son of a bitch in the balls ever.3 -
applying for a job at a company whose website is broken is kinda ironic
Todays gems are
- the menu item jobs isn't clickable. I have to find a link elsewhere
- the application form has a second page a "this is what you entered" page. It switches month and day of my birthday. I returned to first page to check. Here it's still fine. Now I needed to reupload my attachments because the "field is empty" - lets see if they get my CV twice
- the jobs page doesn't even load. firefox eventually prompts "This site is slowing down the browser ... [stop]"6 -
I’m going through the book automate the boring stuff and I’m working on the chapter with web scraping right.
Well I wanted to just count all of the comic links that are in the xkcd archive as a small exercise to help me get used to and better learn web scraping.
I go through hell trying to do this but after more than a few hours later I finally have done it I returned every link of ONLY the comics, so it was time to start counting them.
I implemented the counting. The total number as of today is 2279 and it my code counted 2278, and I started to lose it.
So I go through this motherfucker manually to see where my loops count and the count on the tags start to differ. I found it, whoever made it went from 403 to 405. The euphoria I felt for this incredibly small task was incredible. (Still haven’t pieced it together yet)
I found the email of the guy who I assume owns the site and I started writing an email that basically said “hey the count of your comics is off by one and you made me rethink existence trying to figure out why, you skipped number 404-”
I look at the gap between 403 and 405 Then the words “Error 404 Not Found” popped into my head. I proceeded to scream for a second and stopped writing the email and now I’m trying to come to terms with this.
TL:DR the guy who runs xkcd comics trolled me with a simple error 404 joke4 -
I've kinda ghosted DevRant so here's an update:
VueJS is pretty good and I'm happy using it, but it seems I need to start with React soon to gain more business partnerships :( I'm down to learn React, but I'd rather jump into Typescript or stick with Vue.
Webpack is cool and I like it more than my previous Gulp implementation.
Docker has become much more usable in the last 2 years, but it's still garbage on Windows/Mac when running an application that runs on Symfony...without docker-sync. File interactions are just too slow for some of my enterprise apps. docker-sync was a life-saver.
I wish I had swapped ALL links to XHR requests long ago. This pseudo-SPA architecture that I've got now (still server-side rendered) is pretty good. It allows my server to do what servers do best, while eliminating the overhead of reloading CSS/JS on every request. I wrote an ES6 component for this: https://github.com/HTMLGuyLLC/... - Frankly, I could give a shit if you think it's dumb or hate it or think I'm dumb, but I'd love to hear any ideas for improving it (it's open source for a reason). I've been told my script is super helpful for people who have Shopify sites and can't change the backend. I use it to modernize older apps.
ContentBuilder.js has improved a ton in the last year and they're having a sale that ends today if you have a need for something like that, take a look: https://innovastudio.com/content-bu...
I bought and returned a 2019 Macbook pro with i9. I'll stick with my 2015 until we see what's in store for 2020. Apple has really stopped making great products ever since Jobs died, and I can't imagine that he was THAT important to the company. Any idiot on the street can you tell you several ways they could improve the latest models...for instance, how about feedback when you click buttons in the touchbar? How about a skinnier trackpad so your wrists aren't constantly on it? How about always-available audio and brightness buttons? How about better ports...How about a bezel-less screen? How about better arrow keys so you can easily click the up arrow without hitting shift all the time? How about a keyboard that doesn't suck? I did love touch ID though, and the laptop was much lighter.
The Logitech MX Master 3 mouse was just released. I love my 2s, so I just ordered it. We'll see how it is!
PHPStorm still hasn't fixed a couple things that are bothering me with the terminal: can't reorder tabs with drag and drop, tabs are saved but don't reconnect to the server so the title is wrong if you reopen a project and forget that the terminal tabs are from your last session and no longer connected. I've accidentally tried to run scripts locally that were meant for the server more than once...
I just found out this exists: https://caniuse.email/
I'm going to be looking into Kubernetes soon. I keep seeing the name (docker for mac, digitalocean) so I'm curious.
AWS S3 Glacier is still a bitch to work with in 2019...wtf? Having to setup a Python script with a bunch of dependencies in order to remove all items in a vault before you can delete it is dumb. It's like they said "how can we make it difficult for people to remove shit so we can keep charging them forever?". I finally removed almost 2TB of data, but my computer had to run that script for a day....so dumb...6 -
tldr; Windows security sucks. You as a org-admin cant do anything about it. Encrypt your device. Disable USB Live boot in the bios and protect it with a STRONG password.
First of i just want to say that i DO NOT want to start the good ol' Linux VS Windows debate. I'm just ranting about Windows Security here...
Second, here's why i did all of this. I did all of this mainly becuase i wanted to install some programs on my laptop but also to prove that you can't lock down a Windows pc. I don't recomend doing this since this is against the contract i signed.
So when i got my Laptop from my school i wanted to install some programs on it, sush as VS Code and Spotify. They were not avalible in the 'Software Center' so i had to find another way. Since this was when we still used Windows 7 it was quite easy to turn sticky keys in to a command prompt. I did it this way (https://github.com/olback/...). I decided to write a tutorial while i was at it becuase i didn't find any online using this exact method. I couldn't boot from a USB cause it's disabled in the bios wich is protected by a password. Okey, Sticky keys are now CMD. So let's spam SHIFT 5 times before i log in? Yeah, thanks for the command promt. Running 'whoami' returned 'NT SYSTEM'. Apparantly NT System has domain administator rights wich allowed me to make me an Administrator on the machine. So i installed Everything i wanted, Everything was fine untill it was time to migrate to a new domain. It failed of course. So i handed my Laptop to the IT retards (No offense to people working in IT and managing orgs) and got it back the day after, With Windows 10. Windows 10 is not really a problem, i don't mind it. The thing is, i can't use any of the usual Sticky keys to CMD methods since they're all fixed in W10. So what did i do? Moved the Laptop disk to my main PC and copied cmd.exe to sethc.exe. And there we go again. CMD running as NT System on Windows 10. Made myself admin again, installed Everything i needed. Then i wanted to change my wallpaper and lockscreen, had to turn to PowerShell for this since ALL settings are managed by my School. After some messing arround everything is as i want it now.
'Oh this isnt a problem bla bla bla'. Yes, this is a problem. If someone gets physical access your PC/Laptop they can gain access to Everything on it. They can change your password on it since the command promt is running as NT SYSTEM. So please, protect your data and other private information you have on your pc. Encypt your machine and disable USB Live boot.
Have a good wekend!
*With exceptions for spelling errors and horrible grammar.4 -
Please take sleep deprivation seriously!
Take care of it and don't allow stress to take you over.
Here's a little story of what happened to me:
I've had sleep problems for all of my life, but the beginning of last summer 2018 it went too far. I turned 18 and somehow all the school, dev and personal work started to pile up, I stressed about them and started to have no sleep every other day and little sleep another. Immediately I took time off from everything for trying get better sleep.
Having no sleep means that your brain starts to run in really low gear but you might not even notice it. So I started stressing about every little detail, making ridiculous decisions and doing stuff that didn't really make any sense.
I went to a doctor and was ordered to take time off for a month or so and start medication with bunch of different pills. At the time I thought the medication could wait for a day and went to an old work friend's place for night stay to discuss about everything. That wasn't obviously the thing I should've done. I was up all of that night, he slept, and in the morning he noticed something was really a bit off about me.
We went to the hospital and I agreed for a treatment in there. They got me to sleep normally again and I rested there for a while. I went back home or actually my parents' place and the problems continued, and back to the hospital I go. This time there was no choice. After a really long while, my mind started to stabilize enough that I was allowed to return to my everyday life: enjoying my summer break. It was an awful summer. I often felt lonely and bored. But at least I slept normally.
In the fall I returned to my usual busy schedule. And life's good again. This time I will manage my stress and sleep better and take them to account when planning schedule.16 -
Fuck everything about Microsoft Dynamics. I'm supposed to use the REST API to make a web front-end. I notice all of the data comes back codified.
null == 0.
boolean true == 100000000
boolean false == 100000001
except sometimes when
boolean false == 100000000
boolean true == 100000001
or other times
string "Yes" == 100000000
string "No" == 100000001
string "Maybe" == 100000003
Hang on. Is the system representing a 1 bit value with base 10 numbers? Did the client set this up like this? Holy crap every number corresponds to a unique record in a table somewhere. That means it only returns numeric values instead of strings and I have to figure out what the number means in the context of the table.
A "key" is user typed? So every time someone starts to make a new record it saves a new "key" without a record? So I can pull a bunch of "0" records if I pull sequentially? So basically I need to see all of the data in Dynamics to have any context at all for what is returned from the Dynamics API? Fuuuuuuuuuu10 -
Writing a truly crossplatform terminal library is the biggest pain in the ass.
And you thought windows was bad. They have a proper API with droves of features, freely allocatable screenbuffers, scrolling on both axes, etc.
Fucking xterm vtxxx compatible piles of shit are the problem.
Controlling kinda works eventhough the feature set is pretty bad. The really fucked up thing is reading values back. They literally get put into the input buffer. So you have to read all the actual user input before that and then somehow parse out the returned control sequence. Of course the user input has to be consumed so I have to buffer it myself. Even better is when you get a response with non printable characters which the fucking terminal will interpret as another control sequence. So when you set a window title to a ansi control sequence it would get executed when queried. Fuck this shit but I'm not giving up. I will tame this ugly, bodged together dragon7 -
Now Kim Jong Un as returned. And all those meme that were circulating last week. I think this anime needs to be made.
We have the artwork. We have the story. Japan your call.1 -
I once interviewed for a role at Bank of America. The interview process started off well enough, the main guy asked some general questions about career history and future goals. Then it was off to the technical interviewers. The first guy was fine. Asked appropriate questions which he clearly understood the answers to.
The next guy up, however, was what I like to call an aggressive moron. After looking at my resume, he said I see you listed C++. To which I said, yes I have about 7 years of experience in it but I've mostly been using python for the past few years so I might be a bit rusty. Great he said, can you write me a function that returns an array?
After I finished he looked at my code, grinned and said that won't work. Your variable is out of scope.
(For non C programmers, returning a local variable that's not passable by value doesn't work because the local var is destroyed once the function exits. Thus I did what you're supposed to do, allocate the memory manually and then returned a pointer to it)
After a quick double take and verifying that my code did work, I asked, um can you explain why that doesn't work as I'm pretty sure it does.
The guy then attempted to explain the concept of variable scope to me. After he finished I said, yes which is why I allocated the memory manually using the new operator, which persists after the function exits.
Einstein then stared really hard at my code for maybe 10 to 15 seconds. Then finally looked up said ok fine, but now you have a memory leak so your code is still wrong.
Considering a memory leak is by definition an application level bug, I just said fine, any more questions?4 -
My first dev job is my current job, but I'm leaving it tomorrow to go on on an internship overseas, then return my focus to completing my Computer Science bachelor's degree and getting into a Master's program.
Before this job, I was an office assistant at a small company that sold cosmetics products and fragrances. I had just returned to college after a 1.5 year hiatus and was tired of that job. I wanted to get into the field, even though my experience was limited to freelance web design and a few personal programming projects of which I no longer had any proof, and I still didn't have a degree, but I wasn't confident that someone would contact me. Yet I decided to update my resume and upload it to Indeed.com. I was already getting interviewed at a call center when this local tech startup called, and 2 weeks later, I had the job. We were 3 employees and I was, not only the first woman in the team, but also the first person to ever get hired by the directors without a college degree. Today, I still hold those two titles and the team is 3 times bigger.
It was a very bumpy ride, and tomorrow I move on to other adventures, but I'll always be grateful for the opportunity, all the lessons, and the best team mates I could ever have. Without their wisdom and guidance, I wouldn't have half the blessings I have today. I will miss them dearly, but I know we'll stay friends.
Here's to better things and to a college degree! <32 -
Rant
I'm tired of this shit!!!
First I receive a task to create a new functionality for the app that I'm working on and some documentation (this is the only good part of all the rant) but no design.
It's been 2 weeks since I got assigned to this and still no design, no assets, no API calls that ACTUALLY WORK.
Today was testing a plist to get a banner link, and for 1 hour that little fucker didn't returned the image I was asking.
Better, I wasn't getting ANY IMAGE. Turns out that the link sends me to a HTML URL that doesn't have any image... go figure!
So I've been working on this from some images inside the PDF with the documentation given.
Oh! Wait! There's more!
The cherry on top is that I'm implementing a chat/voice call/video call into the app and the framework that I will be using is being created now, and it's not even finished!!!!!!4 -
Pulled into an 'emergency' meeting with a group of web designers deeply concerned a particular service wasn't going to meet all their requirements.
DevA: "For each page, Its going to be A LOT of work to retrieve all the data and store it's state. Every page load will require a round trip to the service."
DevB: "Yes, we aren't sure how the service should be changed to do what we need."
Mgr: "What is it not doing now? Doesn't the service already returns all the necessary data?"
DevA: "Well...um...its all the boolean fields. Some may be defaulted from the database or false because the user unchecked the box. We have to know which is which"
Me: "Why? Are you doing anything different in the UI? Checkbox will be true or false. What or who set that value is irrelevant"
DevC: "Well, it matters if the user didn't fill out all other other values."
Me: "How so?"
DevA: "Its matters because the values in the other fields. Its going to be A TON of work to figure out."
<mgr goes to the white board>
Mgr: "Lets map this out...what fields are you needing to trigger the state on?"
DevA: "Um...uh...the 'Approved' field...and um...'OK to Contact' field"
Mgr: "Just those two?"
DevA: "Yea..um...there are other fields, but whether or not to show the edit box depends on those two."
Me: "The service already returns data, you only have two fields to check? I don't see a need to change the service at all."
DevA: "Returning all that data, we are going have a serious scaling problem. We'll be hitting the service A LOT. All that javascript could cause performance problems too"
Me: "How much data are we talking about? Name, address, couple of booleans?"
DevA: "I have to serialize the data. All that logic is going to be reeeaaallly complicated. It might be better if the service returned only the data I need."
Me: "$64,000 question, how often is this feature going to be used on the web site? Maybe once? Few hundred a week?"
Mgr: "We have no idea. A lot of the data will be pre-populated and we're only sending out a few thousand invitations. More around the holidays...but honestly, not very many."
Me: "Changing that service only for this particular area of the web site isn't going to happen. Changing the UI is the only course of action."
DevA: "Oh frack I can't wait until this project is over."
DevA...how the funck do still have a job here? You wasted about half-hour of my time with your cry-baby crap. Where is my hammer...no...no..don't go there...ahhh...thanks devrant. Prison sentence diverted.2 -
This is the third part of my ongoing series "The Ballad of the Six Witchers and the Undocumented Java Tool".
In this part, we have the massive Battle of Sparks and Storms.
The first part is here: https://devrant.com/rants/5009817/...
The second part is here: https://devrant.com/rants/5054467/...
Over the last couple sprints and then some, The Witcher Who Writes and the Butchers of Jarfile had studied the decompiled guts of the Undocumented Java Beast and finally derived (most of) the process by which the data was transformed. They even built a model to replicate the results in small scale.
But when such process was presented to the Priests of Accounting at the Temple of Cash-Flow, chaos ensued.
This cannot be! - cried the priests - You must be wrong!
Wrong, the Witchers were not. In every single test case the Priests of Accounting threw at the Witchers, their model predicted perfectly what would be registered by the Undocumented Java Tool at the very end.
It was not the Witchers. The process was corrupted at its essence.
The Witchers reconvened at their fortress of Sprint. In the dark room of Standup, the leader of their order, wise beyond his years (and there were plenty of those), in a deep and solemn voice, there declared:
"Guys, we must not fuck this up." (actual quote)
For the leader of the witchers had just returned from a war council at the capitol of the province. There, heading a table boarding the Archpriest of Accounting, the Augur of Economics, the Marketing Spymaster and Admiral of the Fleet, was the Ciefoh Seat himself.
They had heard rumors about the Order of the Witchers' battles and operations. They wanted to know more.
It was quiet that night in the flat and cloudy plains of Cluster of Sparks and Storms. The Ciefoh Seat had ordered the thunder to stay silent, so that the forces of whole cluster would be available for the Witchers.
The cluster had solid ground for Hive and Parquet turf, and extended from the Connection River to farther than the horizon.
The Witcher Who Writes, seated high atop his war-elephant, looked at the massive battle formations behind.
The frontline were all war-elephants of Hadoop, their mahouts the Witchers themselves.
For the right flank, the Red Port of Redis had sent their best connectors - currency conversions would happen by the hundreds, instantly and always updated.
The left flank had the first and second army of Coroutine Jugglers, trained by the Witchers. Their swift catapults would be able to move data to and from the JIRA cities. No data point will be left behind.
At the center were thousands of Sparks mounting their RDD warhorses. Organized in formations designed by the Witchers and the Priestesses of Accounting, those armoured and strong units were native to this cloudy landscape. This was their home, and they were ready to defend it.
For the enemy could be seen in the horizon.
There were terabytes of data crossing the Stony Event Bridge. Hundreds of millions of datapoints, eager to flood the memory of every system and devour the processing time of every node on sight.
For the Ciefoh Seat, in his fury about the wrong calculations of the processes of the past, had ruled that the Witchers would not simply reshape the data from now on.
The Witchers were to process the entire historical ledger of transactions. And be done before the end of the month.
The metrics rumbled under the weight of terabytes of data crossing the Event Bridge. With fire in their eyes, the war-elephants in the frontline advanced.
Hundreds of data points would be impaled by their tusks and trampled by their feet, pressed into the parquet and hive grounds. But hundreds more would take their place. There were too many data points for the Hadoop war-elephants alone.
But the dawn will come.
When the night seemed darker, the Witchers heard a thunder, and the skies turned red. The Sparks were on the move.
Riding into the parquet and hive turf, impaling scores of data points with their long SIMD lances and chopping data off with their Scala swords, the Sparks burned through the enemy like fire.
The second line of the sparks would pick data off to be sent by the Coroutine Jugglers to JIRA. That would provoke even more data to cross the Event Bridge, but the third line of Sparks were ready for it - those data would be pierced by the rounds provided by the Red Port of Redis, and sent back to JIRA - for good.
They fought for six days and six nights, taking turns so that the battles would not stop. And then, silence. The day was won, all the data crushed into hive and parquet.
Short-lived was the relief. The Witchers knew that the enemy in combat is but a shadow of the troubles that approach. Politics and greed and grudge are all next in line. Are the Witchers heroes or marauders? The aftermath is to come, and I will keep you posted.4 -
TL;DR My parents should have known that I was made for computers
Note: I am pretty young. Most of you were probably at least as old as I am now when it happened.
My parents told me about the first time I used a PC. They left me and my older siblings home alone with a movie on and returned later than they wanted to. We were still watching the movie, and when they asked how that was possible we told them that I restarted the DVD twice. I had never touched a computer before.
The first thing I actually remember is me playing Age of Empires II on a PC our family got for free somewhere. Although AoE3 was already out by that time, it ran slow af, but it was the most fun I had in my life up to that point. I was and still am pretty bad in both AoE3 and AoE2, but that was the first step into my preference for RTS games. -
Quick rant, I dont have time.
I have no idea how the fuck but I managed my IDE to show me that it's confused if my class "PackModel" is "PackModel" or "PackModel" (I have only one definition if you are hands first to ask).
its few years and first time when I see shit like that.
Fun fact, it was working OK until I used getter that was returning another object and than IDE got absolutely lost.
I had to use workaround in middle of nowhere as shown on image and suddenly its back fine with it. Not like it's returned by function hard typed and PHPDoc typed to return instance of this very object and in other scopes it just works...
It's Jetbrains so Im confused, it's robust IDE ;-;...8 -
I had the oppertunity to join a non profit organization to help them automate stuff instead of serving the army. One of their core applications got rewritten like a year ago from a terrible and very old Symfony stack to Laravel / React.
The guys who were in charge for the rewrite didn't really adapt the mindset of either MVC for Laravel nor the component idea behind React. There are a few controllers in the backend, but they sometimes have functions defined which would clearly belong in a model or service class. They rarely defined relationships on models, instead they're joining the tables together for the same effect. The frontend rendering mostly happens in for loops over the returned array from the API instead of breaking things down into little components. This ends in components which have sometimes over 1000 lines with super-nested logic in it.
But I did find my favorite piece of code today in of the controllers. Some many questions ...6 -
I wish I could declare variables IRL so I wouldn't have to repeat myself 6 times in a row before being acknowledged. Yes, the client left these fields empty, that's why the form returned an error as it should have. No, it's not the code's fault. For once.
-
can i work in any more horrible company than this?
> got a shitty macbook air as official work laptop. i am an Android dev btw, nd fuck knows how long it took to build apps on this, but it was still okay
> after 1 year some keys started getting slow to respond but still working fine
> recently a Senior dev raised request for better laptops and somhow we all got macbook pros woth good ram/processor
> returned my old laptop, got a mail after few seconds that my laptop has liquid damage! (in retrospect , i think i knew it as my bag once got drenched in rain)
> few days later, a mail chain starts where some guy is asking for $300 approval of fixes from my boss's boss!
now fuck knows how is it going to get paid, but i cant afford it on my monthly salary.
i am already on a tight crunch as my dad recently lost his job and i am paying emis for a car loan as well as a hand fracture loan, but i am surprised that am getting notified about this.
afaik,
1. the laptop's whole value is around $350 (some corporate quote that i once saw) .
2. the laptops should be fucking insured (we ourselves are a fuckin general insurance company) as its an obvious norm in corporate equipments. i shouldn't be penalised for this
3. i was working fine with this laptop and i can still work on it if given back.
4. this can be deducted at the time of fnf or from gratuity fund that these assholes hold onto until a guy completes 5 years and take it all for themselves if he doesn't.
5 i can buy this shitty laptop back and use it as my personal device, or get it repaired for less.
i don't even claim to have damaged it, why are they putting it on me 😭😭😭8 -
This is the story of the API documentation.
Which btw I couldn't find on the producent's website anywhere. I had the pdf shared with me by a coworker.
I knew the api was fucked up the moment I looked at endpoint documentation.
GET params? WHERE, ORDERBY etc. Literally make a SQL select in a GET request.
Returned stuff? The whole thing. Not some DTO, you literally get everything you can get.
Eg if you get IP in your response, you get it in several formats: dotted form, as hex, and as int. In 3 different json fields.
Oh, and regarding IP - one would imagine you can use masks or prefixes for subnets, right? Nope. The only param you can use there is the subnet size. So you have to calculate the power of 2 every time you want to make a request.
That's from the endpoint documentation. But what about some general info on the API, before all that?
As I was looking for something, I decided to read that intro and general info about the API.
Okay, so there was a change log between API versions. "removed [endpoint which sounds like correct REST design], please use [this generic thing with SQL-like GETs]"... Several of them.
And there was also this sentence which said that the API is not restful, "it's REST-like". <facepalm>
If it was a bad attempt at REST API, I would let it go. But this sentence clearly showed they knew they did everything wrong. And the changelog showed they didn't stop there, they were actively making it worse.1 -
A dev found a bug I created where I set a SQL parameter name to @OrderID instead of the expected @Order. The standard is @OrderID, there is one stored proc where it's @Order.
Oops...I didn't catch it because the integration test didn't cover that area of the code. My mistake...I should have checked...I take complete responsibility for the screw up.
He let me know by email..
"When refactoring, from now on check the stored procedure parameters, there are a few that don't follow the standard."
I was like "from now on..."? ...wow....bold comment from someone responsible for code that doesn't check for nulls, doesn't log errors, and relies on exceptions for flow control. You wouldn't even have known about the error if I didn't modify your code to log the error (the try..except returned false)
I really wanted to reply ...
"Fixed. From now on, when you come across those easily found bugs, go head and fix it, write a test, and move on. Don't send a condescending email to me, my boss, your boss, all the DBAs, and the entire fracking order processing team. Thanks."
But..I thanked him for finding and letting me know...we're a team..blah blah blah..
Frack..people suck.1 -
I really need to vent. Devrant to the rescue! This is about being undervalued and mind-numbingly stupid tasks.
The story starts about a year ago. We inherited a project from another company. For some months it was "my" project. As our company was small, most projects had a "team" of one person. And while I missed having teammates - I love bouncing ideas around and doing and receiving code reviews! - all was good. Good project, good work, good customer. I'm not a junior anymore, I was managing just fine.
After those months the company hired a new senior software engineer, I guess in his forties. Nice and knowledgeable guy. Boss put him on "my" project and declared him the lead dev. Because seniority and because I was moved to a different project soon afterwards. Stupid office politics, I was actually a bad fit there, but details don't matter. What matters is I finally returned after about 3/4 of a year.
Only to find senior guy calling all the shots. Sure, I was gone, but still... Call with the customer? He does it. Discussion with our boss? Only him. Architecture, design, requirements engineering, any sort of intellectually challenging tasks? He doesn't even ask if we might share the work. We discuss *nothing* and while he agreed to code reviews, we're doing zero. I'm completely out of the loop and he doesn't even seem to consider getting me in.
But what really upsets me are the tasks he prepared for me. As he first described them they sounded somewhat interesting from a technical perspective. However, I found he had described them in such detail that a beginner student would be bored.
A description of the desired behaviour, so far so good. But also how to implement it, down to which classes to create. He even added a list of existing classes to get inspiration or copy code from. Basically no thinking required, only typing.
Well not quite, I did find something I needed to ask. Predictably he was busy. I was able to answer my question myself. He was, as it turns out, designing and implementing something actually interesting. Which he never had talked about with me. Out of the loop. Fuck.
Man, I'm fuming. I realize he's probably just ignorant. But I feel treated like his typing slave. Like he's not interested in my brain, only in my hands. I am *so* fucking close to assigning him the tasks back, and telling him since I wasn't involved in the thinking part, he can have his shitty typing part for himself, too. Fuck, what am I gonna do? I'd prefer some "malicious compliance" move but not coming up with ideas right now.5 -
I need to rant about life decisions, and choosing a dev career probably too early. Not extremely development related, but it's the life of a developer.
TL;DR: I tried a new thing and that thing is now my thing. The new thing is way more work than my old thing but way more rewarding & exciting. Try new things.
I taught myself to program when I was a kid (11 or 12 years old), and since then I have always been absolutely sure that I wanted to be a games programmer. I took classes in high school and college with that aim, and chose a games programming degree. Everything was so simple, nail the degree, get a job programming something, and take the first games job that I could and go from there.
I have always had random side hobbies that I liked to teach myself, just like programming. And in uni I decided that I wanted to learn another language (natural, not programming) because growing up in England meant that I only learned English and was rarely exposed to anything else. The idea of knowing another fascinated me.
So I dabbled in a few different languages, tried to find a culture that seemed to fit my style and attitude to life and others, and eventually found myself learning Korean. That quickly became something I was doing every single day, and I decided I needed to go to Korea and see what life there could be like.
I found out that my university offered a free summer school program for a couple of weeks, all I had to pay for was the flights. So a few months later I was there and it was literally the best thing I'd done in my life to that point. I'd found two things that made me feel even better than the idea of becoming the games programmer I'd always wanted to be. Travelling and using my other language to communicate with people that I couldn't in English. At that point I was still just a beginner, but even the simple conversations with people who couldn't speak English felt awesome.
So when I returned home, I found that that trip had completely thrown a spanner into my life plan. All I could think about after that was improving my language skills and going back there for as long as possible. Who knows what to do.
I did exactly that. I studied harder than I'd ever studied for anything and left the next year to go and study in Korea, now with intermediate language skills, everyday conversations no longer being a problem at all.
Now I live here, I will be here for the next year and I have to return to England for one year to finish my degree. Then instead of having my simple plan of becoming a developer, I can think of nothing I want to do less than just stay in England doing the same job every day, nothing to do with language. I need to be at least travelling to Korea, and using my language skills in at least some way.
The current WIP plan is to take intensive language classes here (from next week, every single weekday), build awesome dev side projects and contribute to open source stuff. Then try to build a life of freelance translation/interpreting/language teaching and software development (maybe here, maybe Korea).
So the point of this rant is that before, I had a solid plan. Now I am sat in my bed in Korea writing this, thinking about how I have almost no idea how I'm going to build the life that I want. And yet somehow, the uncertainty makes this so much more exciting and fulfilling. There's a lot more worrying, planning and deciding to do. But I think the fact that I completely changed my life goals just through a small decision one day to satisfy a curiosity is a huge life lesson for me. And maybe reading this will help other people decide to just try doing something different for once, and see if your life plan holds up.
If it does, never stop trying new things. If it doesn't (like mine), then you now know that you've found something that you love as much as or even more that your plan before. Something that you might have lived your whole life never finding.
I don't expect many people to read this all, but writing it here has been very cathartic for me, and it's still a rant because now I have so much more work and planning to do. But it's the good kind of work.
Things aren't so simple now, but they're way more worth it.3 -
Story && rant && dev && linux
I was using linux mint for a while... more like 5 months for work, there's this Touchpad/mouse issue in it that was driving me crazy, so basically the mouse stops responding out of nowhere in the middle of my coding and I have to restart the fucking laptop to get it back. Yeah, I tried all the solutions I could find on the Internet and nothing works.
This issue likes to fucking mess with me so much, it seems to only happen when I absolutely mustn't restart the laptop or I'm working on a task and have a tight deadline and I don't have time to waste restarting my pc.
A couple of days ago, I had this major feature I needed to release to production and the time I estimated for it and shared with my team turned out to be insufficient, so I had to work extra hours from home to finish it ... while I was working, the mouse issue returned and I had to restart my pc like 20 times that day. It was fucking frustrating and It was already midnight and all you can hear are keyboard sounds and fucks flying.
I made a promise to myself that once i finish this task, I'm gonna fucking migrate to another distro, I'm fed up with linux mint's BS. I've been putting up with it for so long it's time to move on.
Yesterday I installed Manjaro and I'm happily working on it today xD.3 -
Pro tip: always make sure your methods return the correct variable.
I’m currently working with deep neural networks using tensorflow. I needed to generate some test data and wrote a program to create it. I had two text files which each consisted of approximately 5000 lines of text.
I wrote a method that should sort out some words, and make my final data shorter. When I executed the program first time on our server, it spent about 25 minutes, then crashed due to MemoryError (which in Python means that the server didn’t have enough ram). That seemed quite weird since I only had about 10k lines of text, and I even sorted out a bunch of it, and the server has 128gb ram, and nothing’s using it.
Apparently I returned the wrong variable. That meant that my program tried to save 750 quadrillion lines of text rather than just a few thousand.
Always make sure to return the correct variables!1 -
!rant
We were finishing another sprint of our grocery shop site at school and it was time for a demo.
There we are, showing our work before the other students. Our teams have a healthy habit of always checking each other not to leave some stoopid mistakes in the final versions, so everybody always regExes and validates THE SHIT out of every input field, both in the view and on the server side. But this one team found out that sometimes it's not enough.
Like every team, they're asked to buy a negative value from their shop. The guy clicks through the process, buys exactly -1 of a banana. He clicks the button to purchase and the site returned "Added banana to the cart!" and we're like "haha n00bz". But someone asked them to show the cart and everyone stopped immediately.
There were 9999 bananas in the cart.
Turns out the member responsible for purchase validation made it add 10000 if the quantity of a bought product was negative.
To this day I can't understand why he did that. xD4 -
So my boss asked us to start using a timer app (toggl) to measure the times spend doing each thing, the thing is I suck at that, so I started a meeting activity and then left to have breakfast, when i returned my timer showed I had bren in a meeting for an hour lol. Even worse I have no current activities assigned so I am just watching videos how should I call that activity?3
-
If you have clumsy people around you, your belongings are never safe.
I left the laptop on the table for just a few hours, and this is what I returned to. Someone carelessly moved the laptop to the right without paying attention to the USB stick, so it bent from the table to the right with a higher position.
Indeed, lack of protrusion is the main reason SD cards are better than USB sticks, and why laptops should have full-sized SD card slots, and why external SD card readers are no valid replacement for built-in SD card slots. Relying on an external SD card reader outright defeats the primary benefit of SD cards, lack of protrusion.
One can be careful with ones belongings every day and have them last a long time, but then someone else comes and ruins it for you. Years of effort with being careful have been wasted. Clumsy people will certainly find new creative ways to break your stuff.10 -
Didn't think I had material for a rant but... Oh boy (at least at the level I'm at, I'm sure worse is to come)
I'm a Java programmer, lets get that out of the way. I like Java, it feels warm and fuzzy, and I'm still a n00b so I'm allowed to not code everything in assembly or whatever.
So I saw this video about compilers and how they optimize and move and do stuff with the machine code while generating the executable files. And the guy was using this cool terminal that had color, autocomplete past commands and just looked cool. So I was like "I'll make that for my next project!"
In Java.
So I Google around and find a code snipped that gives me "raw" input (vs "cooked" input) and returns codes and I'm like 😎. Pressing "a" returns 97 (I think that's the ASCII value) and I think this is all golden now.
No point in ranting if everything goes as planned so here is the *but*
Tabs, backspaces and other codes like that returned appropriate ASCII codes in Unix. But in windows, no such thing. And since I though I'd go multiplatform (WORA amarite) now I had to do extra work so that it worked cross platform.
Then I saw arrow keys have no ASCII codes... So I pressed a arrow key and THREE SEPARATE VALUES WERE REGISTERED. Let me reiterate. Unix was pretending I had pressed three keys instead of one, for arrow keys. So on Unix, I had to work some magic to get accurate readings on what the user was actually doing (not too bad but still...). Windows actually behaved better, just spit out some high values and all was good. So two more systems I had to set up for dealing with arrow keys.
Now I got to ANSI codes (to display color, move around the terminal window and do other stuff). Unix supports them and Windows did but doesn't but does with some Win 10 patch...? But when tested it doesn't (at least from what I've seen). So now, all that work I put into making one Unix key and arrow key reader, and same for Windows, flies out the window. Windows needs a UI (I will force Win users, screw compatibility).
So after all the fiddling and messing, trying to make the bloody thing work on all systems, I now have to toss half the input system and rework it to support UI. And make a UI, which I absolutely despise (why I want to do back end work and thought this would be good, since terminal is not too front end).2 -
I got a new keyboard in my office. One hour ago i have been restarted my pc 3 times, because power button is in delete position. One more hour ago, i have returned my old keyboard.3
-
So while exploring some new ideas, I decided to figure out if I could use variables in the known set to determine the bounds of variables in the unknown set.
The variables in question are algebraic identities derived from the semiprimes, so you already know where this is going.
The existing known set is 1194 identities.
And there are, if I recall, roughly two dozen unknowns.
Many knowns have the unknowns as their factors. The d4 product set for example is composed of variables d4a, d4u, d4z, d4z9, d4z4, d4alpha, d4theta, d4omega, etc.
The component variables themselves are unknown, just their products are known. Anyway.
What I've found interesting is if you know the minimum of some of these subsets, for example d4z is smallest out of the d4's for some semiprimes, then you know the upperbound of both the component variables d4 and z.
Unless of course either of them is < 1.
So the order of these variables, based on value, changes depending on the properties of the semiprime, which I won't get into. Most of the time the order change is minor, but for some variables they can vary a lot between semiprimes, rapidly shifting their rank in the known set. This makes it hard to do anything with them.
And what I found myself asking, over and over again, was if there was a way to lock them down? Think of it like a giant switch board, where flipping one switch lights up N number of others, apparently at random. But flipping some other switch completely alters how that first switch works and what lights it seemingly interacts with. And you have a board of them thats 1194^2 in total. So what do you do?
I'd had a similar notion a while back, where I would measure relative value in the known set, among a bunch of variables, assign a letter if the conditions were present, and generate a string, called a "haplotype."
It was hap hazard and I wrote a lot of code to do filtering, sorting, and set manipulation to find sets of elements in common, unique elements, etc. But the 'type' strings, a jumble of random letters, were only useful say, forty percent of the time. For example if a semiprime had a particular type starting with a certain series of letters, 40% of the time a certain known variable was guaranteed to be above a certain variable from the unknown set...40%~ of the time.
It was a lost cause it seemed.
But I returned to the idea recently and revamped the entire notion.
Instead what I would approach it from a more complete angle.
I'd take two known variables J and K, one would be called the indicator, and the other would be the 'target'.
Two other variables would be the 'component' variables (an element taken from the unknown set), and the constraint variable (could be from either the known or unknown set).
The idea was that relationships between the KNOWN variables (an indicator and a target variable) could be used to indicate the rank relationship between the unknown component variable and the constraint variable.
You'd think this wouldn't work either, but my intuition was there were so many seemingly 'random' rank changes of variables in the known set for any two semiprimes, that 1. no two semiprimes ever shared the same order for every variable, and 2. the order of the known variables had to be leaking information about the relationships of the unknown variables.
It turns out my intuition was correct.
Imagine you are picking a lock, and by knowing the order and position of the first two pins, you are able to deduce the relative position of two pins further back that you can't reach because of the locks security features. It doesn't let you unlock the lock directly, but by knowing this, if you can get past the lock's security features, you have a chance of using information about the third pin to get a better, if incomplete, understanding about the boundary position of the last pin.
I would initiate a big scoring list, one for each known element or identity. And then I would check it in tandem like so:
if component > constraint and indicator > target:
indicator[j]+= 1
This is a simplication, but the idea was to score ALL such combination of relationship, whether the indicator was greater than the target at the same time a component was greater than a constraint, or the opposite.
This worked out to four if checks and four separate score lists.
And by subtracting one scorelist from another, I could check for variables that were a bad fit: they'd have equal probability of scoring for example, where they were greater than the target one time, and then lesser than it for another semiprime.
So for any given relationship, greater or lesser between any unknown variable and constraint variable, I could find any indicator variable and target variable whose relationship strongly correlated to the unknown's.18 -
The ridiculous and shameful story of how simply "installing Windows" saved my hard drive from the garbage.
(Also update on https://devrant.com/rants/3105365/)
It started with my root partition turning read-only all of a sudden. Some quick search suggested that I should check the sanity of my hard drive, by running a SMART test, which failed of course. I backed up my data using ddrescue and ran a badblocks over the whole thing, which found around 800 unreadable blocks in a row. I was ready to bid farewell to my drive, but as a last resort, instead of the trash, I brought it to this place where they claimed they can repair the damaged hard drives by "surgery".
To my surprise, they returned my drive the next week, saying it is all well now, and charged me 1/8 the price of a new drive, with a refund guarantee if there was a problem in two days. There was a problem right there: I ran another SMART test which failed again, and also the faulty blocks were still unreadable! So I stormed the place and called for my refund, showing the failed SMART report. The only answer I would get from the staff was "Have you tried installing Windows?".
I usually try to be patient in such situations; I really don't like to declare publicly that "not everyone uses that stinky piece of rotten software you call an OS", but their suggestion seemed totally irrelevant! I got all types of IO errors all over the damn thing and they told me to install Windows. Why? Because this was the only test they would rely on. At last I managed to meet the "technician" there and showed him the IO errors: tried to read the bad sectors with dd and failed. He first mumbled somethings like "Have you checked the connector?" or "Are these the same blocks?", but after he ran out of bullshit, he said "Why don't you just install Windows first and see if that helps?" and I was ready to explode in his face!
"You test drives by installing Windows, just because it will make a nasty NTFS partition and probably does an fsck? If you shut your mouth for a sec and open your eyes you'll see this is a shit load of IO errors we got here: You can't install Windows, you can't even make an NTFS here, because it will try to zero-the-fuck-out the damn partition and it will face the same fucking IO error that I'm showing you right now in almost one single fucking system call!"
"I don't know this kind of test you are using. We have our own tests and they've passed successfully. So all I can do is to give you a Windows CD if you want."
"I don't need a Windows CD. I will just try to make an NTFS partition on the error spot and I will fail."
"Ok. Then call me when your done."
I was angry, not only because I felt they're just trying to avoid a refund, but also because I knew I've lost my drive. But just with hope that I could get my money back, I made a small partition over the error spot and ran `mkfs.ntfs` on it. I was ready to show the failure to the guy, but I looked more precisely and saw that "the filesystem was created successfully!" I was sure something is nor write. I then successfully mounted the new partition, write over it and read it again. I even dd'ed the blocks again, and this time there was no IO error. All of a sudden everything was fine.
I didn't know what happened. Maybe it just needed a write, while I'd just tried to read from those blocks. But anyway, I didn't called the technician guy again. I just thanked one of the staff there and said that my problem was solved. I then ran a successful SMART test and then restored my backup. Ridiculous like that.
I'm still not sure if my drive will continue to live with no more problems. I also have no explanation for what happened. (I appreciate any help on this https://superuser.com/questions/...) But I really like to see the look on the poor guy's face when he finds out that trying to install Windows just saved my ass!11 -
In the 90s most people had touched grass, but few touched a computer.
In the 2090s most people will have touched a computer, but not grass.
But at least we'll have fully sentient dildos armed with laser guns to mildly stimulate our mandatory attached cyber-clits, or alternatively annihilate thought criminals.
In other news my prime generator has exhaustively been checked against, all primes from 5 to 1 million. I used miller-rabin with k=40 to confirm the results.
The set the generator creates is the join of the quasi-lucas carmichael numbers, the carmichael numbers, and the primes. So after I generated a number I just had to treat those numbers as 'pollutants' and filter them out, which was dead simple.
Whats left after filtering, is strictly the primes.
I also tested it randomly on 50-55 bit primes, and it always returned true, but that range hasn't been fully tested so far because it takes 9-12 seconds per number at that point.
I was expecting maybe a few failures by my generator. So what I did was I wrote a function, genMillerTest(), and all it does is take some number n, returns the next prime after it (using my functions nextPrime() and isPrime()), and then tests it against miller-rabin. If miller returns false, then I add the result to a list. And then I check *those* results by hand (because miller can occasionally return false positives, though I'm not familiar enough with the math to know how often).
Well, imagine my surprise when I had zero false positives.
Which means either my code is generating the same exact set as miller (under some very large value of n), or the chance of miller (at k=40 tests) returning a false positive is vanishingly small.
My next steps should be to parallelize the checking process, and set up my other desktop to run those tests continuously.
Concurrently I should work on figuring out why my slowest primality tests (theres six of them, though I think I can eliminate two) are so slow and if I can better estimate or derive a pattern that allows faster results by better initialization of the variables used by these tests.
I already wrote some cases to output which tests most frequently succeeded (if any of them pass, then the number isn't prime), and therefore could cut short the primality test of a number. I rewrote the function to put those tests in order from most likely to least likely.
I'm also thinking that there may be some clues for faster computation in other bases, or perhaps in binary, or inspecting the patterns of values in the natural logs of non-primes versus primes. Or even looking into the *execution* time of numbers that successfully pass as prime versus ones that don't. Theres a bevy of possible approaches.
The entire process for the first 1_000_000 numbers, ran 1621.28 seconds, or just shy of a tenth of a second per test but I'm sure thats biased toward the head of the list.
If theres any other approach or ideas I may be overlooking, I wouldn't know where to begin.16 -
*So I have a function where the date is formatted as 20180317 and get returned if I pass a date to it.*
Junior Dev: I'm selecting March as a month but it's showing 20180217 and not 20180317, what should I do?
Me: I've written function for formatting date just go there and there will be date.getMonth() just add 1 to it by doing +1.
Junior Dev: It's still not working!!!.
So I went there and checked what she did, and she did this .....
date.getMonth(+1);2 -
just found out a vulnerability in the website of the 3rd best high school in my country.
TL;DR: they had burried in some folders a c99 shell.
i am a begginer html/sql/php guy and really was looking into learning a bit here and there about them because i really like problem solving and found out ctfs mainly focus on this part of programming. i am a c++ programmer which does school contest like programming problems and i really enjoy them.
now back on topic.
with this urge to learn more web programming i said to myself what other method to learn better than real life sites! so i did just that. i first checked my school site. right click. inspect element. it seemed the site was made with wordpress. after looking more into the html code for the site i concluded all the images and files i could see on the site were from a folder on the server named 'wp-content/uploads'. i checked the folder. and here it got interesting. i did a get request on the site. saw the details. then i checked the site. bingo! there are 3 folders named '2017', '2018', '2019'. i said to myself: 'i am god.'
i could literally see all the announcements they have made from 2017-2019. and they were organised by month!!! my curiosity to see everything got me to the final destination.
with this adrenaline i thought about another site. in my city i have the 3rd most acclaimed high school in the country. what about checking their security?
so i typed the web address. looked around. again, right click, inspect element and looked around the source code. this time i was more lucky. this site is handmade!!! i was soooo happy because with my school's site i was restricted with what they have made with wordpress and i don't have much experience with it.
amd so i began looking what request the site made for the logos and other links. it seemed all the other links on the site were with this format: www.site.com/index.php?home. and i was very confused and still am. is this referencing some part of the site in the index.php file? is the whole site written inside the index.php file and with the question mark you just get to a part of the site? i don't really get it.
so nothing interesting inside the networking tab, just some stylesheets for the site's design i guess. i switched to the debugger tab and holy moly!! yes, it had that tree structure. very familiar. just like a project inside codeblocks or something familiar with it. and then it clicked me. there was the index.php file! and there was another folder from which i've seen nothing from the network tab. i finally got a lead!! i returned in the network tab, did a request to see the spgm folder and boooom a site appeared and i saw some files and folders from 2016. there was a spgm.js file and a spgm.php file. there was a contrib, flavors, gal and lang folders. then it once again clicked me! the lang folder was las updated this year in february. so i checked the folder and there were some files named lang with the extension named after their language and these files were last updated in 2016 so i left them alone. but there was this little snitch, this little 650K file named after the name of the school's site with the extension '.php' aaaaand it was last modified this year!!!! i was so excited! i thought i found a secret and different design of the site or something completely else! i clicked it and at first i was scared there was this black/red theme going on my screen and something was a little odd. there were no school announcements or event, nononoooo. this was still a tree structured view. at the top of the site it's written '!c99Shell v. 1.0...'
this was a big nono. i saw i could acces all kinds of folders. then i switched to the normal school website and tried to access a folder i have seen named userfiles and got a 403 forbidden error. wopsie. i then switched to the c99 shell website and tried to access the userfiles folder and my boy showed all of its contents. it was nakeeed naked. like very naked. and in the userfiles folder there were all, but i mean ALL files and folders they have on the server. there were a file with the salary of each job available in the school. some announcements. there was a list with all the students which failed classes. there were folders for contests they held. it was an absolute mess and i couldn't believe it.
i stopped and looked at the monitor. what have i done? just to learn some web programming i just leaked the server of the 3rd most famous high school in my country. image a black hat which would have seriously caused more damage. currently i am writing an email to the school to updrage their security because it is reaaaaly bad.
and the journy didn't end here. i 'hacked' the site 2 days ago and just now i thought about writing an email to the school. after i found i could access the WHOLE server i searched for the real attacker so if you want to knkw how this one went let me know in the comments.
sorry for the long post, but couldn't held it anymore13 -
When I first began with Python I really missed the static typed checking from Java, I barely know anything about a returned object from a method and have to read the API extensively for every new library.
After a while I finally understand why Python is so powerful, the combination of dynamic typed language and rich default methods make the language unbeatable for your productivity.
While Java's Object only has toString(), hashCode(), equals() or clone(), Python's basic Class has every fucking method for every scenario I could ever image. No wonder that libraries like numpy or pandas work so well and fluidly.8 -
I've just spent the last hour or so banging my head against a brick wall trying to figure out why I'm unable to retrieve some data via AJAX even though I know data is being returned as I can see it in my error log.
Turns out the permission system I wrote a few days ago actually works and because I didn't specify a permission it automatically denied my user from retrieving the data. One thing I forgot to add was an error message to tell me when I don't have sufficient permission to do something. Adding a message could have just saved me a lot of time :/1 -
I think mine had to be when I was working with SQL and Lua. I was attempting to store some ints into the database but kept having it fail randomly. It was a 50/50 chance that it would succeed or fail. I tried reading errors (Limited on what I could see) after a while (Almost 3 days, since everything I could think of didn’t have issues and was completely lost) I realized the system another developer setup returned either string or int, thus it causing it to error out when I gave it a string. Once I added a tonumber statement, all my headaches went away.
-
When I hit the endpoint from Postman it works. When I hit the endpoint from my application that pushes data to the endpoint it doesn't work, returning a 404 status code. I KNOW the endpoint is there and operational and that both Postman and my application have the same endpoint configured, letter for letter.
So lost. So confused. What the hell is going on.
I decide to install Fiddler to monitor the traffic to see if I can see anything helpful.
I initiate the request again from the application and immediately see that the request size is huge. BAM. It immediately hits me, the payload to the endpoint is too big and the server is "rejecting" it with a 404. I post a smaller request with the application and it works fine.
Yay, saved by Fiddler.
Why does the endpoint default to 404 in such scenarios. The definition of 404: "the client was able to communicate with a given server, but the server could not find what was requested"
In my case, the 404 returned was a red herring. I understand that the substatus code gives more information on why the 404 was returned, in my case the request size being too big, but 404 in general feels like the wrong status code to return because the endpoint IS there. It made me troubleshoot the wrong thing.
Thanks, IIS.4 -
Recently saw a rant here asking how bad it would if SO went out for a while, with most replies saying it would be good, and asking people to read documentation instead.
Well i tried to prepare myself for that and tried to read the selenium documentation for getting the html of a page. After 30 mins couldnt find it. A google search returned a SO answer which i didnt have to click on coz it had it in the first line.. How difficult is it to provide documentation functionwise/attributewise instead of long tutorials when i click on Documentation.? C++ libs and major python libs do it so good.6 -
In the lab:
"Look! I have compiled and that gave me no errors! On the first try!"
So I look closer and
"Dude, ehm.., you are compiling the wrong file..."
Then he tries to compile the right class and the compiler returned errors on errors
"You know what? I hate you."
Never laughed that loud -
I just returned from a 1 week vacation and my boss summonned me for a 1 on 1, and said he is not satisfied with my work, as I don't deliver "fast enough" according to him and do not show enough enthusiasm. I just nodded and didn't answer out of shock.
Background: It's my first dev job, and it's in a really fast paced startup. I have no degree, and I'm here for 3 months. I'm 23 years old, he is around 30.
I really don't know how should I feel about this. It's the first time someone tells me stuff like that and I'm kinda depressed. I know I sometimes work slower than my colleagues because I have less experience but I never thought it would come to this.
Any advice?2 -
So we were able to do a pre-test in programming I, and if you passed, you would get 70% of grade. Then doing the homework would net the rest 30%.
I passed the test and returned first homework, answer: "Sorry, you haven't been in classes, so you need to defend your work. It will take 10-20 minutes max"
I then informed the professor that I have done the exact same course in open university, and have proof of working as a programmer for 2 years, but it wasn't enough.
So in the fucking defending that took 50 fucking minutes, I had to answer to 15 fucking questions regarding the code.
How on earth am I supposed to remember what 2 fucking lines of code do in a program I wrote 3 weeks ago, if you don't give me the whole code?!?!
Or if Euler's fucking constant is defined in math.h, and why did I define it by myself?
And apparently scattering 50% of the code over 8 pages is sufficient for remembering what the whole programs does!??!?
Oooh and did I mention? I NEED TO GO AND FUCKING DEFEND MY NEXT HOMEWORK NEXT FUCKNG WEEK!!!
Fuck that course7 -
!dev
So that new keyboard I bought? They sent me a French azerty instead of a Belgian azerty layout. Meaning the special keys are in the wrong places.
It's from a third party vendor. Here was me thinking I was getting a good deal on a second hand product in a box that had been opened but returned. Think I can guess why that happened.
I contacted support who will contact the third party but I have a bad feeling about this already. Both the third party and website where I ordered this are Dutch and they are used to Qwerty. Guess I should have bought on a Belgian website at full price :(5 -
Without a doubt it has to be the internal company search engine/file finding tool @thewamz and I wrote.
The company has a wide UNC network with files scattered all over the place and they need a way to keep track of where the files get moved to (they can and do get moved). The original tool was written in Java/Tomcat and didn't use any frameworks or utilities beyond custom written ones, no orms, and the SQL was just raw strings. The program didn't take into account that files might be moved or deleted so it never removed anything from the database, it just kept adding files and never removing them.
It however never stores files itself, just links to files elsewhere on the UNC network.
It took six months to get it into what might be a stable beta or release candidate state. The user interface is good, very simple and intuitive, the whole thing was rewritten in python/django, there were issues with utf 8 (and mysql not fully supporting utf 8 in its own utf 8 mode), we added a regex search mode (which was sorely lacking), the search used to take up to fifteen minutes however we sped it up to less than a minute (worst case when a user simply puts "^$" as the regex search). It has a multi threaded design which does some checks to ensure it doesn't spawn too many threads and get stuck in constant Gil switching. Still some bugs to fix, like moving the processing of results returned by the server in a web worker so that the content widget doesn't lock up processing millions of search results and moving the back end to use asynchronous python might gain a performance boost. But on the whole I think the system is ready to replace the older system that all the users are frustrated with and constantly complain about.
However the annoying bit is... How to actually get the new system online, while I am responsible for the development of tools and their maintenance, I am not responsible for their initial deployment and that means I have no idea when (or even if) my new tool will even ever be released :/ -
I think UPS' Api documentation and service must be the worst documented and build API I have ever seen from a corporate.
1. The developer website is a mess. A total mess. You can barely find the API type you are looking for.
2. When you get the API and download the documentation, the files, .pdf etc is still a mess. Pages long that most are craps.
3. Each request returns Status Code 200. Even if it is an error. This blew my mind.
4. Each request, based on error type or based on tracking activity returns different JSON schema.
For example, the JSON Schema for a shipment in transit is different from JSON schema for a shipment that has been delivered. A shipment that has been returned, a shipment that required signature etc. They are different from each other.
5. And the worst. They do not provide with test tracking codes. I have found some on internet, but they do not work in development and production environment.4 -
I've ranted about this before, but here we go again:
Go Plugins.
I was racking my brains trying to figure out how one could possibly implement plugins easily in Go.
I had a look at using RPC, which requires far to much boilerplate to be realistic. I looked at using Lua, but there doesn't seem to be a straight forward way of using it. I was even about to go with using WASM (yes, WASM). But then I came across Yaegi ("Yet another elegant Go interpreter", you heard right: "interpreter"), Yaegi is also very easy to use.
There are a few issues (including some I haven't solved yet), including flexibility (multiple types of plugins), module support, etc. Fortunately, Traefik just released their plugin system which is based on Yaegi (same company), and I got to learn a few tricks from them.
Here's how module loading works: The developer vendors their dependencies and pushes them to a repo. The user downloads the repo as a zip and saves it to the plugins folder. I hash the zip, unzip it to a cache, and set the the GOPATH for the interpreter to be that extracted folder. I then load the module (which is defined by a config file in the folder), and save it for later. This is the relatively easy part.
The hard part is allowing for different types of plugins. It looks easy, but Go has a strict typing system, makes things complicated. I'm in the process of solving this problem, and so far it should go like this: Check that the plugin fits an arbitrary interface, and if it does, we're good the go. I will just have to apply the returned plugin to that interface. I don't like this method for a few reasons, but hopefully with generics it will become a bit more clean.1 -
After learning a bit about alife I was able to write
another one. It took some false starts
to understand the problem, but afterward I was able to refactor the problem into a sort of alife that measured and carefully tweaked various variables in the simulator, as the algorithm
explored the paramater space. After a few hours of letting the thing run, it successfully returned a remainder of zero on 41.4% of semiprimes tested.
This is the bad boy right here:
tracks[14]
[15, 2731, 52, 144, 41.4]
As they say, "he ain't there yet, but he got the spirit."
A 'track' here is just a collection of critical values and a fitness score that was found given a few million runs. These variables are used as input to a factoring algorithm, attempting to factor
any number you give it. These parameters tune or configure the algorithm to try slightly different things. After some trial runs, the results are stored in the last entry in the list, and the whole process is repeated with slightly different numbers, ones that have been modified
and mutated so we can explore the space of possible parameters.
Naturally this is a bit of a hodgepodge, but the critical thing is that for each configuration of numbers representing a track (and its results), I chose the lowest fitness of three runs.
Meaning hypothetically theres room for improvement with a tweak of the core algorithm, or even modifications or mutations to the
track variables. I have no clue if this scales up to very large semiprime products, so that would be one of the next steps to test.
Fitness also doesn't account for return speed. Some of these may have a lower overall fitness, but might in fact have a lower basis
(the value of 'i' that needs to be found in order for the algorithm to return rem%a == 0) for correctly factoring a semiprime.
The key thing here is that because all the entries generated here are dependent on in an outer loop that specifies [i] must never be greater than a/4 (for whatever the lowest factor generated in this run is), we can potentially push down the value of i further with some modification.
The entire exercise took 2.1735 billion iterations (3-4 hours, wasn't paying attention) to find this particular configuration of variables for the current algorithm, but as before, I suspect I can probably push the fitness value (percentage of semiprimes covered) higher, either with a few
additional parameters, or a modification of the algorithm itself (with a necessary rerun to find another track of equivalent or greater fitness).
I'm starting to bump up to the limit of my resources, I keep hitting the ceiling in my RAD-style write->test->repeat development loop.
I'm primarily using the limited number of identities I know, my gut intuition, combine with looking at the numbers themselves, to deduce relationships as I improve these and other algorithms, instead of relying strictly on memorizing identities like most mathematicians do.
I'm thinking if I want to keep that rapid write->eval loop I'm gonna have to upgrade, or go to a server environment to keep things snappy.
I did find that "jiggling" the parameters after each trial helped to explore the parameter
space better, so I wrote some methods to do just that. But what I wouldn't mind doing
is taking this a bit of a step further, and writing some code to optimize the variables
of the jiggle method itself, by automating the observation of real-time track fitness,
and discarding those changes that lead to the system tending to find tracks with lower fitness.
I'd also like to break up the entire regime into a training vs test set, but for now
the results are pretty promising.
I knew if I kept researching I'd likely find extensions like this. Of course tested on
billions of semiprimes, instead of simply millions, or tested on very large semiprimes, the
effect might disappear, though the more i've tested, and the larger the numbers I've given it,
the more the effect has become prevalent.
Hitko suggested in the earlier thread, based on a simplification, that the original algorithm
was a tautology, but something told me for a change that I got one correct. Without that initial challenge I might have chalked this up to another false start instead of pushing through and making further breakthroughs.
I'd also like to thank all those who followed along, helped, or cheered on the madness:
In no particular order ,demolishun, scor, root, iiii, karlisk, netikras, fast-nop, hazarth, chonky-quiche, Midnight-shcode, nanobot, c0d4, jilano, kescherrant, electrineer, nomad,
vintprox, sariel, lensflare, jeeper.
The original write up for the ideas behind the concept can be found at:
https://devrant.com/rants/7650612/...
If I left your name out, you better speak up, theres only so many invitations to the orgy.
Firecode already says we're past max capacity!5 -
More of a moaning than ranting.
I feel like I care a bit too much.
I'm not a great programmer - I may be decent, but nothing more. I know Java and C# enough to write production code that works but as I gather more experience it's getting more and more annoying that I have no one to teach me in work. All I know is what I have learned by myself, from courses online, books and just writing code.
And what drives me crazy is how I'm being pushed from one project and technology to another! It's been a week since I've returned from my exams and I've already worked in C# (ASP.Net Core, MS Office AddIn, WPF, .Net console app), Java (Spring, some legacy project with JBoss, Android) and to top it all, I had to come back to the worst project I've ever been in, where I'm implementing some third party system to county administration, just to finish it off.
I'm happy to gather experience - invaluable with only two years of real, production experience, but I can't focus on one thing because I'm immediately forced to work on another. For some reason I'm seen as Jack-of-all-trades but I really don't feel like that. It makes me anxious as fuck. Not to mention that my personal development as a Dev is held off because of working all alone with no supervisor.
Post Scriptum
Fuck my boss. He won't let me refractor our biggest project yet (console, C#) because "he can listen to my moaning all day but when clients start complaining he has to act fast". Yeah, right. Wish me luck with fixing sluggish performance without reworking base of the app. -
Exam in networking in a week. It's a group project with individual presentations. No one but me have done any work until now, so I threatened leaving the group and do everything myself, which I am able to, since I have a lot of experience with this before university.
All people reacted but 1. He hasn't returned any messages nor met at campus in over a week. How should I react to this issue?4 -
I work under a highly toxic boss who expects me to work on all 7 days and give most of the time to the company. He makes us work on public holidays and weekends as well. We are literal slaves of him.
I had planned to leave on december this year , but in the aprils appraisal i got 116% hike and i got lot of esops and retention bonus. And retention bonus needs to be returned if not in employment till next june. Now i am crazily stuck and have become an official slave of him. Now i am neither able to leave the company, nor able to stay. And after accepting the money, Everything is in his hands. Now he is acting like he owns me as an object.
Guys kindly guide me on what to do.2 -
(Note: I got a bit carried away while writing this, so the end result is a lot longer than I expected. Apologies for the long post!)
The beginning of my programming journey started with a book.
This was back in 7th grade. I had some basic exposure to BASIC (pun maybe intended?) from our school curriculum, but it was nothing too interesting as our teachers never really treated it as anything important. They would stress a lot on those Microsoft Office chapters (yes, we actually studied Microsoft Office as part of our computer science course at school) and mostly ignore the programming chapters because I dare say many of them struggled with it themselves. So although I had been exposed to *some* programming, it was mostly memorizing the syntax without actually understanding what was going on.
Then one day there was this book fair thing going on at this local Carrefour (for those of you who've no idea, it's a pretty famous hypermarket chain) in this mall, and for some reason my mother and I were in that mall on that day. Now the interesting thing is that this usually never happens -- I usually visit malls with my dad or my friends, this is the only instance I remember where I had actually visited one with just my mom. This turned out to be fortuitous. My father is the kind of person who's generally not amenable to any kind of extraneous shopping requests. My mother, on the other hand, was and remains pliable.
So I basically saw this book -- Sams' Teach Yourself JavaScript in 24 Hours -- being sold at half price. I vaguely remembered having read somewhere that JavaScript is a good introductory programming language (and it helped that this was the time when I was getting into a Google-craze -- I basically saw some photos of Google Zurich and went all HOLY SHIT THAT'S WHERE I NEED TO WORK WHEN I GROW UP (for those of you who haven't seen it, I recommend googling it. That office is the bomb) -- and I'd also read that you need programming skills to join Google). So I begged and begged my mum to buy that book, and thankfully she did.
Back home I returned with my new prize under my arm. Dad took one look at it and scoffed that I'll never actually use it. Pretty much entirely out of spite (to prove him wrong), I attacked the book with a zeal. I still remember how I felt when I wrote my very first JavaScript program (printing the current system date in an h1 tag) and marveling at the output. I guess that was when something struck -- the realization that this was probably what I wanted to do in life.
Fast forward to today, and I've never looked back and wondered what it would be like to have done something else.
PS: for all you beginners out there, JavaScript is a horrible language. Please start with something like Python. Also there are better resources than Sams' Teach Yourself JavaScript in 24 Hours available, that I just didn't know of back then. I'd recommend Eloquent JavaScript any day. -
The other day I was debugging an internal app we have which is used to develop screens for an embedded device and noticed a function which enumerated the widgets on a particular screen. One would think this would be a simple task of having a local variable to keep count, assign the widgets a number, index itself, and continue. But no. The previous (and no longer employed) developer for some awful reason, created a TStringList, got the name of the widget, added it to the stringlist, used the result of the add function which returned the index, and used that result to assign widgets their index. All while creating the object and freeing it within the same function. WTF.2
-
Dear Diary,
Today is October 31st, ‘Halloween’ according to ancient pagan tradition. I can’t help but wonder if those pagans of yore felt as I do now in their attempts to yoke unruly bands of spirits. I sit wearily at my desk in painful and tiresome reckoning with those new hellcats we call node dependencies. Many an hour I have toiled, maestro of a cacophonous orchestra akin to that tucked in later pages of Bulgakov’s magnum opus, pleading with the band to follow my wand. And to no avail. In the wee hours of the morn I can scarcely tell who is conducting who. My sleep laden eyes blink on each execution of yarn install, my fingers knowingly re-execute with an up-arrow enter when that instruction is returned with gnarled, gruesome errors. And I ask again: “who is conducting who?!“. Will this great devil of machinery eventually meet me with an error so fearsome that I myself lay asunder? It is a battle, make no mistake. It is the “trial of a thousand years”! And who shall come out victorious I know not, but rest shall not come until I either lay myself down into the jaws of dependency hell or emerge victorious.
Dear Diary,
Today is November 1st. Compiled on the first try, no additional changes FML1 -
think the struggle with javascript comes when you have to deal with JavaScript from another language
then suddenly a u64 is randomly a float and everything crashes
actually pretty sure the API I'm hitting is written in rust and yet... something the docs say is a u64 just returned a decimaled number
I miss JavaScript where everything just works3 -
After a year-long (or something idk) hiatus, I have returned to devRant! Dusted off the old profile (and updated a bunch of outdated info). I never realized how much I missed this place. Great to be back!3
-
!rant
I have my 121 in a few days with my new manager and am trying to get a raise either through moving from junior to mid level dev or being given a significant raise , am being paid a tad below the London market rate's lower range for my skill level.
Any advice on how to approach the topic?
Some bits of my background:
I got almost 4 years of exp :
almost 2 working there...
6 months short term contract as a ruby sql dev another company...
1.5 years worked for an abusive joke of a company who took advantage of my naivety since i was fresh out of uni ( did stuff like pressured me to add more features to a pojo system i made for them) barely learned anything there since i was the only IT person there developing solo, the project lasted 1.5 years and was a total mess to finish, so am not too sure of factoring it into my years of exp.
My Qualifications are:
bsc in information systems
Msc in enterprise sw engineering
My "new" Manager is seeking to retire real soon.
The company isn't doing too well but we just landed 2 big customers who are buying the product my team is working on
I Am one of two last devs on my team and we are barely holding on with the load, can't afford the time to train a newbie to join us
my department is soon to be sold (soon according to what mgr says). They have been saying so for 10 months now.
Last year , since the acquisition Is taking so long and funds were running out We were hit by a wave of redundancies which slashed our workforce in august/ july, told we could last till march this year on our funds . Even senior staff were on a reduced work week...but since we Got new customers then money should be coming in again , this should mean thats no longer the case. Even the senior staff have returned to 5 day work weeks.
Am being given only JavaScript work to do despite being hired as a junior java dev, my more senior colleagues dont wanna even touch js with a long stick
Spoke to 3 recruiters , said they got open roles in the junior- mid level range that pay the proper market range if am interested to put my cv through.
Thats like 25% more than I currently make.
Am a bit scared to jump into a mid level position in another company because i lack a bit confidence in my core java skills.
although a senior dev who used to be on my team thinks i can do it.
i recon i can take on the responsibilities of a mid level dev in me existing company since am pretty familiar with the products
I dont get to work with senior devs and learn from them since we are so stretched thin, hence am not really getting the chance to grow my skills
I know i have gaps in my knowledge and skills having not been able work in java for a while hasn't allowed me to fix that too well. I badly need to learn stuff like proper unit testing, not the adhoc rubbish we do at the moment, frameworks like spring etc
Since I have been pretty much pushed into being the js guy for the large chunks of the project over the last year , its kinda funny am the only guy who has the barest idea how some of the client facing stuff works
The new manager does seem to be a nice guy but he is like a politician, a master bullshitter who kept reassuring all is well and the company is fineeee (just ignore the redundancies as the fly past you)
The deal for thr aquisition seem to have sped up according to rumors
And we heard is a massive company buying us, hence things might pick up again and be better than ever
Any ideas how to approach the 121 with him?
Any advice career wise?
Should i push for a raise ?
promotion to mid?
Leave to find a junior to mid level position?
Tought it out and wait for the take over or company crash while trying to fill the gaps in my knowledge ?
Sorry for the length of this post2 -
Every time I have to use CloudWatch, I feel like I'd be more productive if I shoved glass shards in my eyes.
Every query/filter either returns nothing or errors out because too much is returned.2 -
Heres the initial upgraded number fingerprinter I talked about in the past and some results and an explanation below.
Note that these are wide black images on ibb, so they appear as a tall thin strip near the top of ibb as if they're part of the website. They practically blend in. Right click the blackstrip and hit 'view image' and then zoom in.
https://ibb.co/26JmZXB
https://ibb.co/LpJpggq
https://ibb.co/Jt2Hsgt
https://ibb.co/hcxrFfV
https://ibb.co/BKZNzng
https://ibb.co/L6BtXZ4
https://ibb.co/yVHZNq4
https://ibb.co/tQXS8Hr
https://paste.ofcode.org/an4LcpkaKr...
Hastebin wouldn't save for some reason so paste.ofcode.org it is.
Not much to look at, but I was thinking I'd maybe mark the columns where gaps occur and do some statistical tests like finding the stds of the gaps, density, etc. The type test I wrote categorizes products into 11 different types, based on the value of a subset of variables taken from a vector of a couple hundred variables but I didn't want to include all that mess of code. And I was thinking of maybe running this fingerprinter on a per type basis, set to repeat, and looking for matching indexs (pixels) to see what products have in common per type.
Or maybe using them to train a classifier of some sort.
Each fingerprint of a product shares something like 16-20% of indexes with it's factors, so I'm thinking thats an avenue to explore.
What the fingerprinter does is better explained by the subfunction findAb.
The code contains a comment explaining this, but basically the function destructures a number into a series of division and subtractions, and makes a note of how many divisions in a 'run'.
Typically this is for numbers divisible by 2.
So a number like 35 might look like this, when done
p = 35
((((p-1)/2)-1)/2/2/2/2)-1
And we'd represent that as
ab(w, x, y, z)
Where w is the starting value 35 in this case,
x is the number to divide by at each step, y is the adjustment (how much to subtract by when we encounter a number not divisible by x), and z is a string or vector of our results
which looks something like
ab(35, 2, 1, [1, 4])
Why [1,4]
because we were only able to divide by 2 once, before having to subtract 1, and repeat the process. And then we had a run of 4 divisions.
And for the fingerprinter, we do this for each prime under our number p, the list returned becoming another row in our fingerprint. And then that gets converted into an image.
And again, what I find interesting is that
unknown factors of products appear to share many of these same indexes.
What I might do is for, each individual run of Ab, I might have some sort of indicator for when *another* factor is present in the current factor list for each index. So I might ask, at the given step, is the current result (derived from p), divisible by 2 *and* say, 3? If so, mark it.
And then when I run this through the fingerprinter itself, all those pixels might get marked by a different color, say, make them blue, or vary their intensity based on the number of factors present, I don't know. Whatever helps the untrained eye to pick up on leads, clues, and patterns.
If it doesn't make sense, take another look at the example:
((((p-1)/2)-1)/2/2/2/2)-1
This is semi-unique to each product. After the fact, you can remove the variable itself, and keep just the structure in question, replacing the first variable with some other number, and you get to see what pops out the otherside.
If it helps, you can think of the structure surrounding our variable p as the 'electron shell', the '-1's as bandgaps, and the runs of '2's as orbitals, with the variable at the center acting as the 'nucleus', with the factors of that nucleus acting as the protons and neutrons, or nougaty center lol.
Anyway I just wanted to share todays flavor of insanity on the off chance someone might enjoy reading it.1 -
Windows ffs stop shoving your fucking updates into my ass. It was prompting me to restart computer for 6 fucking hours and it never gave a fucking option to postpone the update beyond one fucking hour. So I literally kept postponing it every fucking hour and went for a shower. By the time I returned it was updating it. I had more than 25 tabs opened on incognito window of chrome and atleast 8 Microsoft office files open and editing atleast 4 of them. It fucking ruined my work flow and I don't even remember the locations of the files I was referring. Who is going to open all those tabs and files. Ffs what is wrong with you WINDOWS. I AM SO PISSED OFF AT WINDOWS AND MY UNI THAT DOESN'T FUCKING ACCEPT ASSIGNMENTS IF THEY ARE NOT IN DOCX, PPT AND OTHER MICROSHIT'S CRAPPY PRODUCTS. I AM NOT IN A MOOD TO DO THE ASSIGNMENT NOW. FUCK WINDOWS. I SWER BY THE Old GODS AND THE NEW THAT I WILL CONTRIBUTE TO WINE IN THE NEXT 5 TO 6 MONTHS SO THAT I DON'T HAVE TO USE WINDOWS AGAIN.3
-
Fucking retard Liferay.....
At least 2 users (one inour team and another at client's) are claiming they've successfully opened a portlet view multiple times at day X. And a month later it stopped working.
I open up Liferay's (tomcat's) localhost_access.log and can see all the portlet requests at day X have returned http:400
Normally I would consider the human factor and rule this as a human error, assuming they were connected to another environment, another server, etc. But since this is The Fucking Liferay - I'm not that fast in trusting even logs :(
Who the fuck made this piece of shit....6 -
!rant
I had that installation of windows 3 to 4 years now.
I'm using a third party software for backup so everyday at 23:00 the backup service starts. The image is stored on a second HDD.
First i want to point out that i set up the windows maintenance around that time too. So any updates should occur then and i remember finding my PC at login screen couple of times meaning a restart had taken place.
Everything was fine all this time.
Couple of days ago i returned home late around 2 am to find a blue screen saying that the computer did not boot property the last time. Had two options, just restart or try to fix.
Of course i will fix it, come on.
Everything failed. Everything. Even safe mode won't boot.
Who cares i have the back up system image. Boot from the bootable usb stick and restore. Well nothing is happening. It's just freezing at 5%. Cancel. Try again. Cancel. Verify the image. Success! Try again! Nothing.
Damn. Im really tired, off to bed.
Woke up tried fixing and restore but to no avail.
Fuck it i will just install Windows fresh. I was set up after an hour or so installed the necessary drivers and such. Let's see that image of any file i want to get back.
Image is corrupted. What the fuck? How? Damn it. Mount and recovery also failed.
That's it. I did not lose any important files. I save everything on a different drive and also the backup.
But I'm wondering what had gone wrong.
My guess windows rebooted when the backup was running. If that's the case shouldn't be a check if such service is running?2 -
I'm facing something strange, I have set the following headers in Nginx to return:
strict-transport-security: max-age=31536000; includeSubDomains
vary: Accept-Encoding
x-content-type-options: nosniff
X-Firefox-Spdy: h2
x-frame-options: SAMEORIGIN
x-xss-protection: 1
But I only get them when I browse root of my website, but if I go to https://website.com/subPage
those headers are not returned, now I did set them only on
"location / {}"
Any other headers I am missing that needs to be set?
in nginx, but how do I force it on all sub pages, or there is no need?2 -
Something weird is happening at my company. Me and my colleague were in a team building a web application (October CMS and angular 8). I just returned from vacation and was absent for the first 2 weeks of dev. Some days in management announced that the project is "on hold", I guess something to do with paperwork, but the dev will continue. I got to work in the project only for 2 days and was shifted (with a colleague) to work on regression tests for some app I have never seen. A week or more has passed and still I have no VPN access to the app. (the app is hosted by some other company) I am bored of doing nothing. I have experienced a pattern of shifting between projects a lot. Still have not been in one from start till the very end. It is annoying. I feel that there is a lack of communication here.
-
I had to contact technical support for an API. I’m pretty sure I was emailing with a bot because I was getting all sorts of stupid replies.
Me: I’m using your SDK for language X. It’s returned null for some properties. In the user portal, I can see there are values for those properties for the transaction. I don’t know why I’m not receiving them on my end.
Tech Support: Hi! I see the following was sent in the API response. [Sends api response to me.] You can also go the the portal to see those values.
Me: Yeah, I know. You just repeated everything I wrote to you. I don’t want to go to the portal. I told you I want to figure out why your SDK doesn’t seem to map those properties correctly when I receive the api response.
TS: Let me look at the docs. I think you need to send the properties you want in your request in order to get them back in the reply from the api. Such as <property>value<property> in the xml message.
🤨 The docs do not say that. They don’t even imply that.
Me: What the fuck?! That makes absolutely no sense. We have already established that the api **is** returning values for those properties. I want to troubleshoot why your SDK is mapping them as NULL. -
Why the flying fuck does a resultset get returned with the pointer going to BEFORE the first fucking entry? And why does the error say "no data available"????
I saw the stinking values in the debugger, you fat cunt, don't tell me there is nothing there.
But hey, at least now my boss doesn't have any expectations whatsoever. I sure am dense motherfucker.1 -
So, I just (few hours ago)made a new variable that's either brilliant or innately flawed... not sure yet. It's an oddly unique var...
__bs__
So far I only made it in python and windows env (i script like the methodology of css).
I bet you're wondering how I've defined __bs__ and the practicality of it.
__bs__ is derived from a calculated level of bullshit that annoys me to tolerate, maintain, etc. as well as things that tend to throw nonsensical errors, py crap like changing my strings to ints at seemingly random times/events/cosmic alignments/etc or other things that have a history of pulling some bs, for known or unknown reasons.
How/why did this come about now?
Well I was updating some symlinks and scripts(ps1 and bat) cuz my hdd is so close to death I'm wondering if hdd ghosts exist as it's somehow still working (even ostream could tell it should be dead, by the sound alone).
A nonsense bug with powershell allowing itself to start/run custom ps1scripts with the originating command coming from a specific batch script, which worked fine before and nothing directly connected to it has changed.
I got annoyed so took an ironic break from it to work on python crap. Python has an innately high level of bs so i did need to add some extra calculations when defining if a py script or function is actually __bs__ or just py.
The current flavour of py bs was the datetime* module... making all of my scripts using datetime have matching import statements to avoid more bs.
I've kept a log of general bs per project/use case. It's more like a warning list... like when ive spent hours debugging something by it's traceback, meticulous... to eventually find out it had absolutely nothing to do with the exception listed. Also logged aliases i created, things that break or go boom if used in certain ways, packages that ive edited, etc.
The issue with my previous logging is that it's a log... id need to read it before doing anything, no matter how quick/simple it should be, or im bound to get annoyed with... bs.
So far i have it set to alert if __bs__ is above a certain int when i open something to edit. I can also check __bs__ fot what's causing the bs. I plan to turn it into a warning and recording system for how much bs i deal with and have historical data of personal performance vs bs tolerance. There's a few other applications i think ill want to use it for, assume it's not bs itself.
*in case you prefer sanity and haven't dealt with py and datetime enough, here's the jist:
If you were to search any major forum like StackOverflow for datetime use in py, youd find things like datetime.datetime.now() and datetime.now() both used, to get the same returned value. You'll also find tons of posts for help and trying to report 'bugs', way more than average. This is because the datetime package has a name conflict... with itself. It may have been a bug several years ago, but it beeb explicitly defined as intentional since.2 -
I just lost my rant. Luckily it's easy to recount. Whilst using Microsoft Edge to dowload and send same files without clogging up Google Chrome, after sending a file on its way, I returned to Microsoft Edge to discover my font size had been shrunk by 50% without my knowledge or consent. I decided to do something futile and useless : I composed a memo to Google: "Google, who the fuck do you think you are that you can make a small change that will anger millions of people? And when those people wish to tell you exactly why you have once again dumped unnecessary shit on them, you are unable to provide any information to help them? Fuck you, fuck your disgusting corporate ass kissing cuntery and fuckery. You are disgusting and inhuman. You make me sick, you make me wnat to puke my guts out."3
-
I was tasked with reviving this mobile app purchased off the shelf. Initially, I was impressed with what I was seeing while perusing the codebase. I'm used to editing laravel projects written by handpicked amateurs. So this felt like a breath of fresh air. Coupled with the fact that I'd recently enquired on this very platform whether anyone has chanced upon an impressive code. All is going well, until
I start finding the multi layers of abstraction and indirection cryptic and obfuscatory; and that is coming from an idealist like me who advocates for "clean" patterns such as event emission. I wonder whether it would have helped if the emission or events were typed for easy listener tracking, instead of a black hole like vm.notifyListeners() (DOESN'T EVEN HAVE AN EVENT NAME!)
With time, I become disgusted by the tons of custom elements with so many parents
My take on production level user of the view model pattern: amazing in theory
One of the architectural decisions made on this project that had me foaming in the mouth, pulling my hair and cursing out the author's generations, past, present and future: can you believe these guys are APPENDING IMAGE DOMAINS TO THE RESOURCE? Ie the domain names are tightly coupled to the images and dictated by the api, instead of the client
If this isn't bad enough, the field names of returned entities/models don't exist on the database, of course because the stupid laravel framework abets this sort of madness by combining eloquent "scopes, attributes, and appends". A trifecta of horrors.
I eventual scaled through the horrors, but not without losing my admiration for the team behind it. App has returned to the shelves, because my company lost patience with my resuscitating it. They have the regular api authentication in place, but that's not good enough. They just had to integrate firebase as well, just because. Meanwhile, this isn't documented anywhere. I stumbled into it during my scuffle with app setup, gradle ish. Eventually got banned by firebase for "sending unusual requests". My company's last straw -
If anyone is good with dart (or) other single threaded programming languages, i have this small doubt about the inner workings of the event loop and such and i would like an explanation if possible.
If you're too lazy to goto the link:
1. I have a future returned from a http request.
2. a future.then is declared that prints the http result.
3. A separate while(true) loop is declared that runs forever that just prints natural numbers.
4. the while loop also has an await future.delay that waits for 1ms before continuing with the next iteration
My question :
1. There's only one thread so how does the http download code run WHILE my main loop is still executing.
2. my future.then event is not processed unless i await a future.delay separately for 1ms. returning control to the event loop ? i don't get it how does adding an event help it process a prior event? It's FIFO ?
gist :https://gist.github.com/TheAnimatri...
discussion:
https://groups.google.com/a/...5 -
That lovely moment, when I have to spend an hour on mail delivery issue, only to find out the message was flagged as spam due to a faulty dns blacklist.
Though the way it got flagged is idiotic and funny at the same time, too.
The blacklist domain got parked, dunno why, and of course, all of the dns queries thus got redirected to a different dns server that just returned the A records of the dns park owners.
Guess what that causes when you use that blacklist? Every single email gets flagged, including that one of ours that I had to debug.
Fml, an hour of overtime for a stupid malfunctioning blacklist... -
I have returned to work in one of the best places where I have worked but one of the few things that I hate is that they force me to use Win104
-
Fucking taiga wasting my day.
Client asked to set up a private taiga (taiga.io, some open source Jira alternative).
All goes fine and dandy until you need to link domain user creation to taiga user creation.
Seems I have to choose between having public registration (allows to programmatically create users, but also randoms to sign up) or use their private registry API that asks for a fucking token that is supposed to be returned from their membership/invitation API, that, guess what, doesn't return any bloody token. You can only get the token on the Django admin control panel.
Guess I'll have to end setting up LDAP or integrating with their existing gitlab, but this gig is already starting to smell, and we are close to the weekend 😡1 -
I finally have some motivation to write some personal code... on an existing project.
(Work has been too hectic the last few months so don't want to do anymore at home...)
Anyway... I noticed that my Prime Video Tracker app doesn't pick up some of the new Movies now available on Prime, so I did some fixing.
Good News (GN): The search URL is actually static so can goto the same URL for the same search results
GN: The program can filter the movies by a Minimum # of Ratings they have (currently set to 100... use to be 10)
Bad News (BN): The number of movies in the search results is over 5000 (used to be 100-200) so even with this filter, a lot get returned.
GN: the traversal is fully automated
BN: Need to manually look at the descriptions of each and add them the Watchlist
BN: I now have 200 movies on my Watchlist and still going...
So now I have another "Infinite list". Existing ones:
-TED Talks
-NLegs
-Blinkist Read List
-Comics (sort of, I have a huge backlog for Cyanide and Happiness)
-Photos that need "post-processing"
I'm pretty sure I'm forgetting some others... -
wow its been a while, hi community i have returned to pillage your stickers >:) hand them over peacefully or i shall remove your kneecaps in your sleep.1
-
RECOVER MONEY FROM BITCOIN SCAM HIRE ADWARE RECOVERY SPECIALIST
Regaining Trust: My Story with ADWARE RECOVERY SPECIALIST for More Than 36,000 Ethereum
It was a harrowing experience, to say the least. After years of carefully building up my cryptocurrency portfolio, I found myself the victim of a devastating hack that wiped out my entire holdings - over 36,000 Ethereum, vanished in an instant. The sinking feeling of helplessness and betrayal was overwhelming. I had entrusted my digital assets to what I thought were secure platforms, only to have that trust shattered in the most painful way. But I refused to simply give up and accept my losses. I was determined to fight back and reclaim what was rightfully mine. That's when I discovered ADWARE RECOVERY SPECIALIST , a specialized service dedicated to tracking down and recovering stolen cryptocurrency. It was a long and arduous process, filled with dead ends and roadblocks, but the team at ADWARE RECOVERY SPECIALIST never gave up. They used their expertise in blockchain forensics, their extensive network of industry contacts, and their sheer dogged determination to painstakingly trace the movement of my stolen Ethereum. It was like watching skilled detectives slowly unravel a complex web of digital transactions, following the digital breadcrumbs until they pinpointed the perpetrators. And after months of tireless effort, they succeeded - my Ethereum was located, secured, and returned to me. The sense of relief and gratitude I felt was indescribable. ADWARE RECOVERY SPECIALIST had not only restored my financial holdings, but they had also restored my faith in the cryptocurrency ecosystem.2 -
HIRE A CRYPTO RECOVERY EXPERT; BEST BITCOIN RECOVERY SERVICE VISIT CYBER CONSTABLE INTELLIGENCE
It was a devastating blow - one moment I was the proud owner of a small digital fortune, 8,000 Bitcoin that I had painstakingly accumulated over years of savvy investing and cautious storage. The next, that entire life-changing sum had vanished without a trace, lost to a cruel twist of fate and my own careless misstep. I had fallen victim to a data breach, leaving me helpless to prevent the thieves from making off with my entire cryptocurrency holdings. The anguish was palpable, a sinking feeling of hopelessness and despair as I realized the scale of my loss. Thousands upon thousands of hard-earned Bitcoins, now in the hands of faceless criminals, beyond my reach. But I refused to give in to despair. Determined to recover what was rightfully mine, I sought out the services of Cyber Constable Intelligence, a specialized team of blockchain forensics experts renowned for their ability to track down and reclaim stolen digital assets. Through their meticulous investigative work, leveraging the transparency of the Bitcoin ledger and their deep technical expertise, they were able to painstakingly trace the movement of my stolen funds, identifying the wallet addresses the thieves had used to launder the cryptocurrency. With this critical intelligence in hand, Cyber Constable Intelligence then coordinated with law enforcement to freeze those illicit accounts, preventing the funds from being moved any further. The final step was a delicate negotiation process, with the recovery team using their connections and influence to compel the thieves to return the stolen Bitcoins - a tense and high-stakes affair, but one that ultimately proved successful. After weeks of anxious waiting, I was overjoyed to have my 8,000 BTC safely returned to my control, a true testament to the skill and determination of the Cyber Constable Intelligence team. It was a harrowing ordeal, but one that reinforced the importance of robust security measures and the remarkable capabilities of specialized firms dedicated to combating cryptocurrency crime and restoring rightful ownership. Losing 8,000 BTC was one of the most stressful events of my life, but thanks to Cyber Constable Intelligence, I was able to reclaim what I thought was lost forever. Their professionalism, technical expertise, and commitment to security made all the difference. If you find yourself in a similar situation, I cannot recommend them highly enough. Cyber Constable Intelligence turned a financial disaster into a remarkable recovery, and I will forever be grateful for their role in securing my assets.
CYBER CONSTABLE INTELLIGENCE INFO:
Website: w w w. cyberconstableintelligence com3 -
RECOVER YOUR STOLEN BITCOIN-USDT BACK CONTACT SALVAGE ASSET RECOVERY
This experience has been nothing short of transformative. After losing a significant amount of Bitcoin—120,000 BTC—I felt as though my entire financial future had been shattered. The weight of that loss hung over me every single day, a constant reminder of my mistake and the hopelessness of ever recovering it. For weeks, I carried that burden, consumed by regret and uncertainty. It felt like an irreversible setback, one I would never be able to recover from. All of that changed after I discovered Salvage Asset Recovery. Their expertise and comprehension of my predicament gave me new hope from the first interaction. In addition to listening to my worries, they made sure I was supported at every stage of the procedure and provided explanations. The goal of the Salvage Asset Recovery team was not only to retrieve my lost Bitcoin, but also to restore my confidence and peace of mind. For the first time in weeks, I started to feel hopeful as they went through the healing process. Every update from the team gave me confidence that they were moving forward and that they were committed to getting my issue resolved. I was shocked to learn that my 40,000 BTC had been totally restored. I was really relieved. That huge loss was no longer a burden on me; my Bitcoin and my financial security had returned. This has been a very transforming experience. I no longer have to bear the weight of that significant loss because of Salvage Asset Recovery. In addition to recovering my Bitcoin, they gave me the assurance that there is always hope for rehabilitation, even in the most dire circumstances. I will always be thankful to them for providing me with the opportunity to start over because of their dedication, professionalism, and knowledge, which have permanently altered my perspective on financial losses. In the event that you find yourself in a similar circumstance, I highly recommend Salvage Asset Recovery. Their level of expertise, commitment, and service is unparalleled. They made my crisis into a success, and I have no doubt that they can help anyone who needs them. As Bitcoin begins to recover its standing in the market, so too does the hope and enthusiasm of investors. Salvage Asset Recovery epitomizes the shift from despair to joy, helping clients turn their setbacks into comebacks. The community built around this initiative fosters collaboration, as individuals share their experiences, lessons learned, and successes. Ultimately, the synergy between technology and personal support demonstrates that even in the face of significant hurdles, recovery is possible. Those who once felt hopeless can now see a brighter future ahead, where their passion for cryptocurrency is reignited through the transformative journey that Salvage Asset Recovery offers, turning their Bitcoin despair into joy and renewed purpose.. Consult Salvage Asset Recovery via below contact details.
Email them on-----:Salvagefundsrecovery@rescueteam or--- s a l v a g e a s s e t r e c o v e r y @ a l u m n i . c o m
WhatsApp-----.+ 1 8 4 7 6 5 4 7 0 9 6
Telegram-----@SalvageAsset3 -
RAPID DIGITAL RECOVERY: PIONEERING BITCOIN RESTORATION SOLUTIONS
I was horrified when I lost my 45,000 ETH for the first time. It accounted for a sizeable amount of my savings, which I had built up over years of cautious investing and faith in the cryptocurrency industry. It was a sophisticated hack, not a bad trade or market meltdown, that caused the loss. I felt completely powerless after the money was taken directly out of my wallet. I initially turned to multiple recovery services in the hope of recovering my stolen assets. However, after months of dealing with fraudulent services and ineffective solutions, I was on the verge of writing off my entire investment. Many services seemed like nothing more than scams, preying on vulnerable individuals like myself. They promised miracles but left me with empty assurances and no results. I was about to give up when a buddy suggested Rapid Digital Recovery, a brand I had never heard of. I was first dubious because I had previously been burned and didn't want to put my trust in another provider. However, Rapid Digital Recovery felt different in some way. They took a professional approach, spoke openly, and sincerely wanted to provide a workable answer. From the very first consultation, I was impressed by their level of expertise. They took the time to explain how they worked, the tools they used to trace stolen funds, and the process they followed to attempt to recover assets. They didn’t promise a quick fix but reassured me that they had successfully assisted others in similar situations. They walked me through each step of the process and kept me updated at every stage. Over the next several weeks, I saw the results of their hard work. Rapid Digital Recovery employed advanced techniques to track the stolen ETH across various blockchain networks and worked tirelessly with law enforcement and crypto exchanges to trace its movements. Their team showed a level of dedication and professionalism that I hadn’t seen from any other recovery service. I’m happy to say that, after months of intense work, Rapid Digital Recovery was able to recover the majority of my stolen ETH—around 42,000 ETH, which was an incredible relief. While not every cent was returned, the recovery rate far exceeded my expectations, and I felt like I had regained control over my financial future. What stood out the most about my experience with Rapid Digital Recovery was their transparency and integrity throughout the process. Unlike many other services, they never made unrealistic promises or pressured me into paying exorbitant fees upfront. They were clear about what was achievable and kept me informed every step of the way. If you find yourself in a similar situation—dealing with the devastating loss of crypto assets due to theft or fraud—I highly recommend Rapid Digital Recovery. Their expertise, dedication, and ethical approach to recovery make them stand out in an industry plagued with unreliable services. I can confidently say that without them, I would have likely lost my entire investment. Contact for more info: ....... Web site Info: https: // ra pi ddigit alrecove ry .o rg ....... What sapp Info: +1 41 4 80 7 14 852 -
4 hours wasted due to a rather strange "scope poisoning" bug... it was really fucking strange.
Had to move the 5 lines of code, above where the error happened, to a private function.
The 5 lines just called an XLSX library which read a given file and returned an array. I don't know how but the thing somehow messed with my Soap client call one line below. The culprit must have been some IO resource handle which didn't get destroyed when in the same scope due to persisting object references..1 -
DISCREET AND PROFESSIONAL HACKING SERVICES FROM MAESTRO ENCRYPTER FINANCIER
Recovering lost assets can be a complex and challenging endeavor, but with the expertise of professional asset recovery Maestro Encrypter Financier , the process becomes significantly more manageable. Maestro Encrypter Financier extensive knowledge and experience in the field make him a true master at tracking down and reclaiming misplaced, stolen, or hidden valuables. Whether it's uncovering funds trapped in dormant accounts, locating physical assets that have gone missing, or using his unparalleled investigative skills to pierce the veil of complex financial schemes, Maestro Encrypter Financier approaches each case with an unwavering determination to achieve a favorable outcome for his clients. His keen analytical mind allows him to meticulously piece together the puzzle, following even the faintest of trails to uncover the whereabouts of elusive assets. Blending cutting-edge technology with old-fashioned gumshoe work, Maestro Encrypter Financier leaves no stone unturned in his pursuit of justice and restitution. Clients who enlist Maestro Encrypter Financier services can take comfort in knowing that they have a formidable ally in their corner, one who will relentlessly fight to recover what is rightfully theirs, no matter the obstacles that stand in the way. With Maestro Encrypter Financier wizardry at their disposal, the seemingly impossible task of reclaiming lost assets becomes a very real and attainable goal. My case was very complicated but given that I was in the right hands, my bitcoin of 92,000 USD returned to me. Talk to this expert via: WhatsApp number: +14722038937
Email: maestroencrypter @ financier . com