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 - "debugging"
-
> make a change
> PR gets rejected
> IHATEFORALIVING! YOUR CHANGE IS NOT WORKING! EVERYTHING BREAKS!
> 3 hours long debugging session
> We find out a whole bunch of bugs
> Suddenly, everything works
> None of the bugs had ANYTHING to do with my change. In the instances where the app broke, my code wasn't even being called at all.
> My change was literally the one and only working thing
I wish life was like in The Office, when you just stop what you're doing and you drop the Jim stare at some camera3 -
The 1st rule of Javascript is: You don't admit you program Javascript.
The 1st rule of Rust is: You tell everyone you program Rust and how it is better than basically any programming language that existed or will exist.
The 1st rule of C++ is: There are no rules because everyone was too busy debugging templates to think of any rules.
The 1st rule of Java is: You must have excessive numbers of classes and boilerplate. The more boilerplate the better.
The 1st rule of Haskell is: It is great to learn, but you will never see it again once you leave college.38 -
I was on vacation when my employer’s new fiscal year started. My manager let me take vacation because it’s not like anything critical was going to happen. Well, joke was on us because we didn’t foresee the stupidity of others…
I had to update a few product codes in the website’s web config and deploy those changes. I was only going to be logged in for 30 minutes to complete that.
I get messaged by one of our database admins. He was doing testing and was unable to complete a payment on the website. That was strange. There was a change pushed by our offsite dev agency, but that was all frontend changes (just updating text) and wouldn’t affect payments.
We don’t want to enlist the dev agency for debugging work, especially when it’s not likely that it’s a code issue. But I was on vacation and I couldn’t stay online past the time I had budgeted for. So my employer enlists the dev agency for help. It’s going to be costly because the agency is in Lithuania, it was past their business hours, and it was emergency support.
Dev agency looks at error logs. There are Apple Pay errors, but that doesn’t explain why non Apple Pay transactions aren’t going through. They roll back my deployment and theirs, but no change. They tell my employer to contact our payment processor.
My manager and the Product Manager contact Payroll, who is the stakeholder for our payment gateways. Payroll contacts our payment gateway and finds out a service called Decision Manager was recently configured for our account. Decision Manager was declining all payments. Payroll was not the person who had Decision Manager installed and our account using this service was news to her.
Payroll works with our payment processor to get payments working again. The damage is pretty severe. Online payments were down for at least 12 hours. Our call center had logged reports from customers the night before.
At our post mortem, we had to find out who ok’d Decision Manager without telling anyone. Luckily, it was quick work. The first stakeholder up was for the Fundraising Dept. She said it wasn’t her or anyone on her team. Our VP of Analytics broke it to her that our payment processor gave us the name of the person who ok’d Decision Manager and it was someone on the Fundraising team. Fundraising then starts backtracking and says that oh yes she knew about it but transactions were still working after the Decision Manager had been configured. WTAF.
Everyone is dumbfounded by this. How could you make a big change to our payment processor and not tell anyone? How did our payment processor allow you to make this change when you’re not the account admin (you’re just a user)?
Our company head had to give an awkward speech about communication and how it’s important. The web team can’t figure out issues if you don’t tell us what you did. The company head was pissed because it was a shitty way to start off the new fiscal year. Our bill for the dev agency must have been over $1000 for debugging work that wasn’t helpful.
Amazingly, no one was fired.5 -
Is this really what tech-startup culture is?
A year ago I wanted to make a change and joined my friend who is a VP at a startup. She and my team are great even up to the C-suite level. But after a recent encounter with the core developer team here… I’m at my
breaking point.
This dev team is extremely tribal. It’s as if they view other tech teams as “others” and it’s “us vs. them”. My team works on a different vertical so I’ve never interacted with them before and a timeline of events is below. Is this kind of behavior a normal thing at a tech startups?
/story
Here’s some highlights from the last month…
- Customer demands a deliverable because it’s in a contract signed a year ago.
- No one in dev can be troubled to lift a finger (holiday season). I get called in to support.
- This isn’t my code - I’ve never seen or used it before.
- None of dev’s documentation is up to date.
- Find out dev hasn’t touched client’s project in a year.
- Spend weeks working with it. Find fundamental flaws which could have put us in legal jeopardy.
- I realize dev never finished this project because it doesn’t even have basic functionality to do what customer needs.
- Spent entire Christmas/New Year working.
- Create dozens of bug tickets and merge requests.
- Barely squeeze by and save multi-million $ contract renewal.
So what happens next?
- Reprimanded by the dev lead. He tells me I’m “hurting people’s feelings” by pointing out so many problems.
- A PM in a public Slack channel told me I was “passive aggressive” for a Jira issue where I wrote (verbatim) “Can we enable code highlighting in this text box? It’s difficult to show steps to reproduce the bug.”
- get told by VP to stop talking to them
- a bunch of merge requests rejected without explanation
- weeks later I see someone in dev run into a bug I found. I sent him the fix. They accepted his MR in the same day and it actually added another new bug.
- I lookup the recent commits of the lead-dev who chewed me out, he’s been working on adding colors to his console log output for print debugging. This is a time-critical application and he adds 30% overhead with logging debug information in production.
- Meanwhile dozens of major bugs exist and are ignored.
- The CTO at this company loves these people - though he hasn’t brought in any new business (literally) ever.
- My team is about to close a new contract and we’ve spent 15 days to work on it.
- The CTO said my team is slow and doesn’t fit with the business model of the company.
My team has never dealt with these devs before, so I checked Glassdoor for other experiences, the dev team apparently…
- uses “vulgar slurs for women”
- talking about technical issues “resulted in a lot of resentment”
- has an apparent “desire for revenge”
/ end story
This last month really shocked me because for my career so far I’ve never dealt with this kind of behavior. I could see a startup accepting this kind of culture if was bringing in a lot of revenue but they aren’t. They dropped the ball so hard we all lost our bonuses this year. It’s made even worse with the fact that they are constantly producing complete dog poop code (I’ve kept that opinion to myself though).
I’m really left wondering if this is just how it is in the high-stakes startup world.
Sorry - this started out as a question but ended up another dev rant.10 -
I spent an entire week debugging my JS Gameboy emulator an year ago.
(The "C" register was read-only for some reason)
Turns out I typed "с" (cyrillic) instead of "c".4 -
Lisp code was live-debugged and fixed with REPL on a spacecraft 100 million miles away
“An even more impressive instance of remote debugging occurred on NASA's 1998 Deep Space 1 mission. A half year after the space craft launched, a bit of Lisp code was going to control the spacecraft for two days while conducting a sequence of experiments. Unfortunately, a subtle race condition in the code had escaped detection during ground testing and was already in space. When the bug manifested in the wild--100 million miles away from Earth--the team was able to diagnose and fix the running code, allowing the experiments to complete. One of the programmers described it as follows:
Debugging a program running on a $100M piece of hardware that is 100 million miles away is an interesting experience. Having a read-eval-print loop running on the spacecraft proved invaluable in finding and fixing the problem.”
https://gigamonkeys.com/book/...4 -
At my first big boy job at a start up with only 50 users, we noticed we had cloud cost spikes about 20x larger than we were expecting. I remember spending all night debugging it, checking the requests as they go through.
The culprit? Someone left an async on a UseEffect with a variable that was regularly updated as a parameter.
In other words: every time a request was fired, the variable would change… so the function would sense the variable changed and fire it again, and so on.
Felt like a total hero. -
Manager: Hey software engineer, how's the project going?
Software Engineer: Good, just debugging my code.
Manager: Debugging? What kind of bug are you trying to fix?
Software Engineer: The ones that make my computer turn into a lava lamp.
Manager: Ha ha, very funny. But seriously, how can I help?
Software Engineer: Well, I need a bigger monitor. My current one doesn't have enough real estate to display all the errors.
Manager: How about a second monitor?
Software Engineer: No, I need a bigger universe.
Manager: I'll see what I can do. In the meantime, keep coding. We have a deadline to meet.
Software Engineer: No problem, I have all the time in the world. I just need to find a way to slow down time.
Manager: I wish I had your optimism. Just let me know if you need anything else.
Software Engineer: How about a unicorn? I heard they're good at coding.
Manager: I'll see what I can do, but in the meantime, stick to using a keyboard.3 -
For the love of god, I spent 2,5 hours debugging why Minecraft from the windows store doesn't work...
The game just shows a red message telling you it didn't work.
I checked the logs, nothing just warnings
I re-installed the game, nothing, same error
Updated java and all parts of the store, nothing....
Obviously I had to install Something called the "xbox identity Provider"... You know... On a PC... For a distinctly PC game to work... Installed by the store... And the provider is also on the store... But it doesn't auto-install with the game
Ever since you migrated to the Microsoft Auth the login experience is awful (I ranted about that already)
How about you do the bare fucking Minimum of an User experience and Install the fucking dependencies when I re-installed something your fucking store??!!!
The fucking bare minimum that every package manager ever created fucking has as a basic requirement?! Are you kidding me?
Rename your fucking services so they make sense and please don't waste everyone's time by having both shitty logs and no dep management for your own apps... Fucks sake15 -
Finding a forum post that perfectly describes your extremely niche problem only to have the solution posted in a bunch of dead photobucket links has to be one of the worst emotional rollercoasters of all time.4
-
Dear enployer, how do you expect me to develop for mobile devices without provding fucking WiFi in the office. All the nice gadgets you have given me, are worthless because you can only plug one thing into it at one time - the lan-dongle Xor the fucking macbook you need for remote debugging. Nice.
-
I just wrote 80+ lines of tests for a 30 line module and I was really mad at myself for wasting my time like that, until I remembered that while writing those tests I did actually catch several really tricky bugs and it didn't even take that long.5
-
JS Console: user_name is undefined
Señor Dev: can't be the API response has it!
The API response: usre_name8 -
Two big moments today:
1. Holy hell, how did I ever get on without a proper debugger? Was debugging some old code by eye (following along and keeping track mentally, of what the variables should be and what each step did). That didn't work because the code isn't intuitive. Tried the print() method, old reliable as it were. Kinda worked but didn't give me enough fine-grain control.
Bit the bullet and installed Wing IDE for python. And bam, it hit me. How did I ever live without step-through, and breakpoints before now?
2. Remember that non-sieve prime generator I wrote a while back? (well maybe some of you do). The one that generated quasi lucas carmichael (QLC) numbers? Well thats what I managed to debug. I figured out why it wasn't working. Last time I released it, I included two core methods, genprimes() and nextPrime(). The first generates a list of primes accurately, up to some n, and only needs a small handful of QLC numbers filtered out after the fact (because the set of primes generated and the set of QLC numbers overlap. Well I think they call it an embedding, as in QLC is included in the series generated by genprimes, but not the converse, but I digress).
nextPrime() was supposed to take any arbitrary n above zero, and accurately return the nearest prime number above the argument. But for some reason when it started, it would return 2,3,5,6...but genprimes() would work fine for some reason.
So genprimes loops over an index, i, and tests it for primality. It begins by entering the loop, and doing "result = gffi(i)".
This calls into something a function that runs four tests on the argument passed to it. I won't go into detail here about what those are because I don't even remember how I came up with them (I'll make a separate post when the code is fully fixed).
If the number fails any of these tests then gffi would just return the value of i that was passed to it, unaltered. Otherwise, if it did pass all of them, it would return i+1.
And once back in genPrimes() we would check if the variable 'result' was greater than the loop index. And if it was, then it was either prime (comparatively plentiful) or a QLC number (comparatively rare)--these two types and no others.
nextPrime() was only taking n, and didn't have this index to compare to, so the prior steps in genprimes were acting as a filter that nextPrime() didn't have, while internally gffi() was returning not only primes, and QLCs, but also plenty of composite numbers.
Now *why* that last step in genPrimes() was filtering out all the composites, idk.
But now that I understand whats going on I can fix it and hypothetically it should be possible to enter a positive n of any size, and without additional primality checks (such as is done with sieves, where you have to check off multiples of n), get the nearest prime numbers. Of course I'm not familiar enough with prime number generation to know if thats an achievement or worthwhile mentioning, so if anyone *is* familiar, and how something like that holds up compared to other linear generators (O(n)?), I'd be interested to hear about it.
I also am working on filtering out the intersection of the sets (QLC numbers), which I'm pretty sure I figured out how to incorporate into the prime generator itself.
I also think it may be possible to generator primes even faster, using the carmichael numbers or related set--or even derive a function that maps one set of upper-and-lower bounds around a semiprime, and map those same bounds to carmichael numbers that act as the upper and lower bound numbers on the factors of a semiprime.
Meanwhile I'm also looking into testing the prime generator on a larger set of numbers (to make sure it doesn't fail at large values of n) and so I'm looking for more computing power if anyone has it on hand, or is willing to test it at sufficiently large bit lengths (512, 1024, etc).
Lastly, the earlier work I posted (linked below), I realized could be applied with ECM to greatly reduce the smallest factor of a large number.
If ECM, being one of the best methods available, only handles 50-60 digit numbers, & your factors are 70+ digits, then being able to transform your semiprime product into another product tree thats non-semiprime, with factors that ARE in range of ECM, and which *does* contain either of the original factors, means products that *were not* formally factorable by ECM, *could* be now.
That wouldn't have been possible though withput enormous help from many others such as hitko who took the time to explain the solution was a form of modular exponentiation, Fast-Nop who contributed on other threads, Voxera who did as well, and support from Scor in particular, and many others.
Thank you all. And more to come.
Links mentioned (because DR wouldn't accept them as they were):
https://pastebin.com/MWechZj912 -
> See unintelligible error from stuff that used to work and now it doesn't
> Ask colleagues if they ever met the error
> Fucktard colleague says "try using the debugger, if you run the code line by line you may probably understand what's wrong"
Dear Fucktard, I've been writing code for 7 years now, you can safely assume I know how to use a debugger if need be.
The thing: when I ask "have you ever met this error" I'm asking if you actually know what's going on, BEFORE diving in a 3 hours long debugging session of code written 6 years ago by people who have left the company in the meantime.
You don't always have to say something. Sometimes it happens: you may not have anything clever to add, and a simple "I'm sorry I don't know" is perfectly fine.1 -
1) Read the wiki on git. I probably have enough shorthands and test methods that you won't need much other shit to debug issues.
2) when debugging, remember that if it is there, there's a good reason why I put it there.
3) commented-out code is probably useful for maintenance. I left it there for a good reason. 😛
4) chances are whatever I wrote, was the state of the art at the time I wrote it. There might be better ways to do it now tho.
5) I always work modular. First, understand the structure. (probably also documented on wiki) DO NOT fuck up the structure. If you change it, you document it.
6) If you feel I wrote shit, it's probably because management annoyed the living shit out of me. Pun intended.
7) Your confusion is normal. I don't do dumb shit.4 -
I've been debugging a bug for two days straight and I have only thing to say:
fuck javascript a piece of shit15 -
To quote Charles Bukowski:
"and when nobody wakes you up in the morning, and when nobody waits for you at night, and when you can do whatever you want. what do you call it, freedom or loneliness?"
I always have tendency to fall into feeling lonely and abandoned, but these days my life is tossing some of the wildest curve balls more than ever before.
The latest one yet just happened this Monday. My manager quit and there was no knowledge transfer, and it was not on the good terms with the company.
Now I'm the only member of my team, and I have to take care of some of the projects that I've never worked on.
Don't get me wrong, I'm not setup for failure, and there are no expectations for me to know how everything works, quiet the opposite. But working with our clients and debugging the projects that I literally setting up on the fly had been a rollercoaster.
Second time in this company I will be looking for a manager in my department, and teaching them how everything works. Fun times.. fun times never change..5 -
"Yesterday "
Client: ''Perfect! How did you do this do quickly? "
Me: "I used a library"
"Today "
Me: "I'm still debugging. It will take some time"
Client: "well, It has already taking too long.... I can hear Mozart in the background. Maybe you need to go to a library to get some quite and get it done fast. Visit the one you used yesterday. "
Me: "library?Ahh... I meant plug in like.... Code, a library is a bunch of packed code. "4 -
Alright,
I recently installed pi-hole...
Everything was immediately perfect.
So, about two days later, I install a linux system... Hadn't had one when I setup my pi-hole. (Well, no Linux with desktop environment...)
So... Now I had error messages in Chrome... Connection change detected. The page didn't load, 3 seconds later it loaded. Many pages had to be reloaded.
And I focused my Google-Fu on issues connecting to pi-hole. Some issues where there, referring to Safari and pi-hole, but none for Chrome or/and Linux.
But what's a pi-hole? A DNS Resolver/Non-authoritive server and a DHCP server...
Maybe I haven't turned off my router's DHCP server correctly. So, wireshark... "bootp or dns" filter...
All dns communication is perfect, via UDP and from the pi-hole to my machine, not from the router. No DHCP messages from my router either...
Almost accidentally I found a page speaking about this issue. Had nothing to do with the pi-hole. Timing was a coincidence. Had everything to do with IPv6. Somehow that's switching over. Even worst, after reading that, I remembered I had the same issue in the past. I just forgot.
Turning off IPv6 was the solution. And fuck. Let this be a PSA: "Confirm your bloody assumptions when troubleshooting/debugging or waste time like an idiot... Just like me..." -
Friendly reminder that if every element of one array is equal to the corresponding element of another array that doesn't mean the arrays are equal. I hope next time I'll think of this before spending a day debugging everything else.8
-
Never write at the limit of your talents! Remember: debugging is always twice as hard as writing code. And if you write as cleverly as you can, you won't be able to debug it anymore.🧠7
-
Always test your fucking mocks
I spent 3 weeks debugging every part of the application, except for the mock network connection. The mock network connection didn't trigger closing events on the sender side. -
Did your motivation ever suffered for company enforced tooling/stack?
I'm striving to be as adaptable as possible to not bitch if I have to use Angular insted of React or Java instead of Go but the stack which I was forced to use for the last two years is killing the joy I find in programming.
I'm talking about Spring WebFlux a stack which in theory is very promising (IO performances of NodeJS but in Java) but in practice is a pain to use: it makes polymorphism very hard forcing to rewrite tons of code, it significantly reduces your library choice, even after studying a damn book about it debugging remains a huge headache, unit testing often requires hacks and workarounds to be done...
Programming with it always feels like trying to fit a square peg in a round hole and I'm catching myself in procrastinating more and more, initially I feared I was burning out or losing my passion for the field but I noticed which the rare times I get to use a more canonical stack like .NET my motivation instantly returns but sadly I can use it only for few hours and then I return to WebFlux and my passion flees again.
I'm considering to look for another job but sadly lately I neglected my GitHub so I might have hard times in finding it.2 -
Xiaomi's bootloader unlock procedure is So. Fucking. Tedious. I have no words... oh wait, I do. HIDING THE PERMISSION BEHIND A HUNDRED DEVICE-SIDE SWITCHES WON'T MAKE IT ANY SAFER, IT WILL ONLY MAKE MODDERS ANGRY. Why do you need a third switch besides OEM unlock and USB debugging anyway? If I toggled OEM unlock it's obvious what I'm trying to do and every other option should change to comply with that intent. Don't roll your own Android if you know fuckall about UX.9
-
Some days I feel like I really know what I am doing and today was not one of these days...
Working on a game engine using Vala and now using Raylib in the backend for rendering and input.
Wrote a VAPI for Raylib and when I was doing the 'Rectangle' struct... I made it's members integers when they are floats...
So this whole time; when using a camera everything would jitter like crazy.... because I was taking the transform which is all floats... rounding it then casting to an int only for the int to be cast into a float again....
Lo and behold; changing the members to floats and removing the rounding and casting makes everything silky smooth...
I have been debugging every bit of my current render loop trying to work this out when it was 100% unrelated.... I hate myself sometimes1 -
I’m trying to explain the theory behind ‘Rubber Duck Debugging’ and to be honest, they don’t believe me 😂 they say I’m drunk. Help me out here, who else uses a rubber duck or something similar to help debug code?8
-
Every time I want to post here about a problem, my social anxiety tells me what I should try before asking about it.3
-
I love "mature" projects. I just deleted an angular router guard that was apparently only added for debugging in 2018, and the only route it was guarding was deleted in 2019.
In total, this one guard took multiple hours of work due to angular updates and such causing it to break compilation.
Not a single person thought about removing, or even rewriting it. This might be due to two things: the people that were part of this team back then are no longer in the company, and guard was called "AuthGuard"1 -
My current job makes me want to question my life choices.
Its a complete burnout.
I do 9 to 6 never 6 though its always 7 or 730 come home exhausted, and still on almost all days need to attend to customers after hours. Customer meeting at 8.30pm are quite consistent occuring. Being a developer, debugging meetings I can understand to a certain extent, but why the f i am preparing quotes and pitching products.
Want to prep for new job boom no time left to do so other than weekends.4 -
Ahh, Unity’s “Wheel Joint.” Who knew it had “polarity.” I spent good several f*<king hours debugging this $h!+ just to find out I just placed them backwards on a 2-D car. Instead of the joint turning the wheels, they were trying to “turn the chassis.”
This meant the chassis received an impossible force which would rip it in half in real life. Of course, this was a unity game, so what happened instead was the physics engine flipping out which sent the car into the air!
I guess it was good for some lulz, but it took way too long to debug. I guess it’s time to take a little time off of that project.4 -
Me: *changes a long and complex calculation to fix old mistakes*
Program: *keeps outputting the same wrong result*
Me: *goes mad for a good hour trying to discover the problem by debugging it like a angry rat*
Also me after one hour of debugging: *discovers he never changed the output source of the function and it's still outputting the old result*3 -
So, I've had a personal project going for a couple of years now. It's one of those "I think this could be the billion-dollar idea" things. But I suffer from the typical "it's not PERFECT, so let's start again!" mentality, and the "hmm, I'm not sure I like that technology choice, so let's start again!" mentality.
Or, at least, I DID until 3-4 months ago.
I made the decision that I was going to charge ahead with it even if I started having second thoughts along the way. But, at the same time, I made the decision that I was going to rely on as little external technology as possible. Simplicity was going to be the key guiding light and if I couldn't truly justify bringing a given technology into the mix, it'd stay out.
That means that when I built the front end, I would go with plain HTML/CSS/JS... you know, just like I did 20+ years ago... and when I built the back end, I'd minimize the libraries I used as much as possible (though I allowed myself a bit more flexibility on the back end because that seems to be where there's less issues generally). Similarly, any choice I made I wanted to have little to no additional tooling required.
So, given this is a webapp with a Node back-end, I had some decisions to make.
On the back end, I decided to go with Express. Previously, I had written all the server code myself from "first principles", so I effectively built my own version of Express in other words. And you know what? It worked fine! It wasn't particularly hard, the code wasn't especially bad, and it worked. So, I considered re-using that code from the previous iteration, but I ultimately decided that Express brings enough value - more specifically all the middleware available for it - to justify going with it. I also stuck with NeDB for my data storage needs since that was aces all along (though I did switch to nedb-promises instead of writing my own async/await wrapper around it as I had previously done).
What I DIDN'T do though is go with TypeScript. In previous versions, I had. And, hey, it worked fine. TS of course brings some value, but having to have a compile step in it goes against my "as little additional tooling as possible" mantra, and the value it brings I find to be dubious when there's just one developer. As it stands, my "tooling" amounts to a few very simple JS scripts run with NPM. It's very simple, and that was my big goal: simplicity.
On the front end, I of course had to choose a framework first. React is fine, Angular is horrid, Vue, Svelte, others are okay. But I didn't want to bother with any of that because I dislike the level of abstraction they bring. But I also didn't want to be building my own widget library. I've done that before and it takes a lot of time and effort to do it well. So, after looking at many different options, I settled on Webix. I'm a fan of that library because it has a JS-centric approach. There's no JSX-like intermediate format, no build step involved, it's just straight, simple JS, and it's powerful and looks pretty good. Perfect for my needs. For one specific capability I did allow myself to bring in AnimeJS and ThreeJS. That's it though, no other dependencies (well, at first, I was using Axios because it was comfortable, but I've since migrated to plain old fetch). And no Webpack, no bundling at all, in fact. I dynamically load resources, which effectively is code-splitting, and I have some NPM scripts to do minification for a production build, but otherwise the code that runs in the browser is what I actually wrote, unlike using a framework.
So, what's the point of this whole rant?
The point is that I've made more progress in these last few months than I did the previous several years, and the experience has been SO much better!
All the tools and dependencies we tend to use these days, by and large, I think get in the way. Oh, to be sure, they have their own benefits, I'm not denying that... but I'm not at all convinced those benefits outweighs the time lost configuring this tool or that, fixing breakages caused by dependency updates, dealing with obtuse errors spit out by code I didn't write, going from the code in the browser to the actual source code to get anywhere when debugging, parsing crappy documentation, and just generally having the project be so much more complex and difficult to reason about. It's cognitive overload.
I've been doing this professionaly for a LONG time, I've seen so many fads come and go. The one thing I think we've lost along the way is the idea that simplicity leads to the best outcomes, and simplicity doesn't automatically mean you write less code, doesn't mean you cede responsibility for various things to third parties. Those things aren't automatically bad, but they CAN be, and I think more than we realize. We get wrapped up in "what everyone else is doing", we don't stop to question the "best practices", we just blindly follow.
I'm done with that, and my project is better for it! -
Spent almost two days debugging the hell out of an interrupt handler only to find out that my reference code (official example from the vendor) has some wrong function calls damn it.3
-
Somehow they felt like the first day of a month isn't always n°1 (and last day might be smaller than 10)8
-
Started a new job as junior developer. One of my first task was to sent a simple notification on an event in out product. Write the code, test that it works, push to devops.
Code compiles, tests pass, it’s deployed to internal test env. Check that my notification works in the test env. No problem.
It’s deployed to the customers test environment. It works and customer accepts it for prod.
We release to prod and of course it fails. Seems to be a simple string.Format that fails for god knows why. After 3h of debugging on prod without success we decide to roll it back.
Today we decided to try it on a backup of the prod db since one of the strings was taken from the db. Still working. No matter what data I input when trying it locally it still wont reproduce the issue we saw on prod.
Fuck this6 -
I always wonder why the IT guys seem to be short tempered when dealing with dev related issues.
Now I understand...
For a few days I have to help my colleague setting up his new project and dear Lord...
I thought I have enough patience because I am a woman...
This guy is very very junior, I couldn't get any input/ideas from him when debugging
Dear god, help us because I am the only one with enough experience in this project.12 -
Protip: Don't use Rider's winform designer. It will glitch out and destroy your work.
And don't use Visual Studio because it will freeze every time you close the application you are debugging.
Actually, just go be a beet farmer.5 -
**Sees a different error after hours of debugging the previous one**
ME (crying inside) - What type of sorcery is this?3 -
What's your worst debugging experience?
I just had it today and yesterday when I tried to connect to an aws postgres rds..... 😭😭😭7 -
*laughing maniacally*
Okidoky you lil fucker where you've been hiding...
*streaming tcpdump via SSH to other box, feeding tshark with input filters*
Finally finding a request with an ominous dissector warning about headers...
Not finding anything with silversearcher / ag in the project...
*getting even more pissed causr I've been looking for lil fucker since 2 days*
*generating possible splits of the header name, piping to silversearcher*
*I/O looks like clusterfuck*
Common, it are just dozen gigabytes of text, don't choke just because you have to suck on all the sucking projects this company owns... Don't drown now, lil bukkake princess.
*half an hour later*
Oh... Interesting. Bukkake princess survived and even spilled the tea.
Someone was trying to be overly "eager" to avoid magic numbers...
They concatenated a header name out of several const vars which stem from a static class with like... 300? 400? vars of which I can make no fucking sense at all.
Class literally looks like the most braindamaged thing one could imagine.
And yes... Coming back to the network error I'm debugging since 2 days as it is occuring at erratic intervals and noone knew of course why...
One of the devs changed the const value of one of the variables to have UTF 8 characters. For "cleaner meaning".
Sometimes I just want to electrocute people ...
The reason this didn't pop up all the time was because the test system triggered one call with the header - whenever said dev pushed changes...
And yeah. Test failures can be ignored.
Why bother? Just continue meddling in shit.
I'm glad for the dev that I'm in home office... :@
TLDR: Dev changed const value without thinking, ignoring test failures and I had the fun of debunking for 2 days a mysterious HAProxy failure due to HTTP header validation... -
So I made an update to my React Native app. I changed UI of a couple of screen, added a few animations here and there, refactored how my graphQL resolvers work in the backend(no breaking changes), changed how data gets loaded into the database etc.
It worked in dev so I figured hey let's deploy it. Today is(was because it's now 3am but more on that later) a national holiday so no one goes to work so no one will use my app so I have an entire day to deploy.
I started at 15:00(because i woke up at 13:00 lol). I tested the update once again in dev and proceeded to deploy it to prod. I merged backend to master, built docker images, did migrations on the db, restarted docker-compose with new images. And now for the app. I run ./gradlew assembleRelease and it starts complaining that react-native-gesture-handler is not installed. Ugh, rm -rf node_modules && yarn install. It worked. But now gradlew crashes and logs don't tell me anything. Google tells me to change a bunch of gradle settings but none of them work. Fast forward 5h, it's around 20:00 and I isolated the issue to, again, react-native-gesture-handler. They updated from 2.2.4 to 2.3.0 which didn't fucking compile. 2 more hours passed (now 22:00) and I got v2.3.1 working which fixed the problem in 2.3.0 but made my app crash on startup. YOUR FUCKING LIBRARY GETS 250K WEEKLY DOWNLOADS AND YOU DONT EVEN BOTHER CHECKING IF IT COMPILES IN PROD ON ANDROID?! WHAT THE FUCK software-mansion?
After I solved that, my app didn't crash. Now it threw an error "Type errors: Network Request Failed" every time I fetch my legacy REST API(older parts use rest and newer use graphql. I'll refactor that in the next update). I'll spare you the debugging hell i went through but another 5h passed. Its 3am. My config had misspelled url to prod but good for dev... I hate myself and even more so react-native-gesture-handler.3 -
Today I spent half an hour trying to figure out why my IDE stops on an exception that is very obviously caught.
I left a breakpoint there because the stack traces behaved weirdly.7 -
I just spent 4 (four) hours debugging why my perlin noise used the same gradient for every point. Turns out I forgot to assign the seed for the random generator so it defaulted to 0. (I seed it every round with the map seed and coordinates so I don't have to store anything for visited regions)
So, how's your sunday night going? -
Fuck you safari for automatically converting UTF-8 NFD characters to UTF-8 NFC characters. Cost us like an hour debugging!
-
Guess who just spent the entire day before launch debugging why compose doesn't work on an ec2 instance where I DIDN"T INSTALL FUCKING DOCKER
I guess this is the key difference between me and seniors. Seniors know where to look where shit breaks because they have been breaking it for at least 5 years.7 -
Do you guys remember the fun little joke utility called fuck that corrected typos?
While debugging an absurd 2s shell load time, I noticed today that the command it appends to .bashrc to _set a fucking alias_ takes almost 400ms to execute.1 -
It's 2022 and mobile web browsers still lack basic export options.
Without root access, the bookmarks, session, history, and possibly saved pages are locked in. There is no way to create an external backup or search them using external tools such as grep.
Sure, it is possible to manually copy and paste individual bookmarks and tabs into a text file. However, obviously, that takes lots of annoying repetitive effort.
Exporting is a basic feature. One might want to clean up the bookmarks or start a new session, but have a snapshot of the previous state so anything needed in future can be retrieved from there.
Without the ability to export these things, it becomes difficult to find web resources one might need in future. Due to the abundance of new incoming Internet posts and videos, the existing ones tend to drown in the search results and become very difficult to find after some time. Or they might be taken down and one might end up spending time searching for something that does not exist anymore. It's better to find out immediately it is no longer available than a futile search.
----
Some mobile web browsers such as Chrome (to Google's credit) thankfully store saved pages as MHTML files into the common Download folder, where they can be backed up and moved elsewhere using a file manager or an external computer. However, other browsers like Kiwi browser and Samsung Internet incorrectly store saved pages into their respective locked directories inside "/data/". Without root access, those files are locked in there and can only be accessed through that one web browser for the lifespan of that one device.
For tabs, there are some services like Firefox Sync. However, in order to create a text file of the opened tabs, one needs an external computer and needs to create an account on the service. For something that is technically possible in one second directly on the phone. The service can also have outages or be discontinued. This is the danger of vendor lock-in: if something is no longer supported, it can lead to data loss.
For Chrome, there is a "remote debugging" feature on the developer tools of the desktop edition that is supposedly able to get a list of the tabs ( https://android.stackexchange.com/q... ). However, I tried it and it did not work. No connection could be established. And it should not be necessary in first place.7 -
Lessions I learned so far from my first big node/npm project with tons of users:
1) If you didn't build something for a while, expect 3 hours of resolving version conflicts for every two weeks since the last build.
2) Even if the tests pass, run the containers on your own machine and make sure that the app doesn't randomly crash before deploying
3) Even if the app seemed to work on your own machine, run the tests again in an environment mimicking prod at most 15 minutes before replacing the running containers.
4) Even if all else indicates that the app will work, only ever deploy if you expect to be available within the 4 hours following a deployment.
5) Don't use shrinkwrap for anything other than locking every version down completely. A partial shrinkwrap will produce bugs that are dependent on the exact hour you built the app _and_ the shrinkwrap file, and therefore no one will ever have seen them other than you.
6) Avoid gyp, and generally try not to interface too much with anything that doesn't run on node. If parts of your solution use very different toolchains, your problems will be approximately proportional to the amount of code. And you'd be surprised just how much code you're running. (otherwise it's more logarithmic because the more code the less likely a new assumption is unique)
7) Do not update webpack or its plugins or anything they might call unless you absolutely need to
8) Containers are cool but the alpine ones are pretty much useless if you have even just one gyp module.
9) There's always another cache. To save yourself a lot of pain, include the build time in every file or its name that the browser can download, and compare these to a fresh build while debugging to assert that the bug is still present in the code you're reading
+1) Although it may look like it, SQLite is far from a simple solution because the code and the bindings aren't maintained. In fact, it'll probably be more time consuming than using a proper database.3 -
took me years to learn js, php, c# and I ended up now learning and debugging STL... This twisted logic is soo painfull3
-
AAARGH
I fucking give up. I can't debug my code, and all my programmer friends have better things to do than to help me. The fact that portaudio requires me to store things as void* makes it even more convoluted if possible.3 -
Quick questions for some vim lovers out there.
I've seen a lot of youtube videos of people using vim/nvim/spacevim/... as their main IDE, claiming that they are perfectly fine with this setup. However, most of this people are programming in not heavy object oriented languages, like JS, C, Rust, Go.
My question is: are there any Java developers who are using vim as IDE and are satisfied with their setup? Is is even possible to migrate from Jetbrains tools to your setup without huge productivity drop? By productivity I mean - a lot of IDE stuff like name refactor, great lombok support, debugging tools7 -
Good one 😅,
Indeed #Debugging isn't always that much fun, but I have learned a lot by debugging the code and still learning so many things. It helps us become better.
Agree?1 -
Today, in "Typos that wasted hours of debugging"...
PHP...
>:(
PHP is such a bitch when it comes to unset variables, why didn't it trigger a warning or something when I tried to $typo[$index]?? I may be missing something and my head starts to ache.
Fixed tho', lesson learned.4 -
Me: I've spent 2 hours on this problem, this is exhausting, I need to take a break...
*10 seconds into the break*
My Brain: I think I know what the problem is
Me: Onto another 2 hour coding/debugging session!
Who needs breaks anyways1 -
Deliberate and fully conscious procrastination. Distract yourself deliberately every few hours. Do something completely different in your free time and when procrastinating.
Also, take your time, think things through.
When debugging obvious typos and "impossible" causalities that you still not see after reparsing the code the tenths time - calm down, procrastinate a bit, and restart debugging - discarding assumptions and result from the previous tries.6 -
That was in the digitally-controlled analog equalizer I worked on (and still AM working on) with my dad, we kept sending something through the SPI line that was consistently sending clown vomit and corrupted data to the display and as a result my whole code was hanging and bootlooping like crazy.
The fix? No idea! Because I had (and still don't have) ANY step-based debugging, all I could do is try multiple ideas and see if one of them would stick. That ended up being the solution.
I still have a video of this issue, I just need to find it. I will post it here when I have it.3 -
How the fuck is Firebase still a thing? I just spent hours debugging a random "not authorised" error, only to find out you need to enable a deprecated API even if you're only using the new (recommended) one. Do they tell you about it? Fuck no, they keep it disabled by default, they tell you to only use the new API, and they make it pretty much impossible to find the deprecated API you need to enable without a direct link.
And why the fuck does the official SDK send image URL as { "imageUrl": "http://..." }, when the endpoint expects it to be { "image": "http://..." }? Why the fuck does the documentation mention both options interchangeably, while only the latter one actually works?7 -
Yesterday I spent many hours debugging obscure compilation errors.
At the end of the day I was like "Fuck it, I'll think about it tomorrow morning".
This morning the compilation works fine. No errors. It's the same code as yesterday.
I'm raging5 -
Cordova is the perfect example of the importance of managing a state.
You have 100 plugins in your config and one of them fails? Well, now you are in an inconsistent state. You can't delete the plugin because it doesn't exist but you can't add it because it already exists. If you search any question about cordova on StackOverflow literally ANY answer is like "delete the platform and install it again".
In average I find myself in an inconsistent state more than once a day. No error is handled so I find myself debugging their code and it's horrible, looks like written by someone that had no idea of what he was doing. I know it's legacy and capacitor should be preferred, but what the hell? Really? -
pair programming and debugging with your senior
referring to line number so we know specifically what we are referring to
line 69 comes up repeatedly in multiple files
what are the chances4 -
Nothing better than debugging 7000+ lines of css code when the theme had Grunt setup by default. (Old theme needs update because of client reasons)
Luckily the dev did a good job of adding comments. So I got that going on for me.
Trying to stay more positive this week.4 -
Two years ago we took over this project which has been a nightmare to maintain. It's a set of netcore 2.1 webapps running on an on-prem windows machine. Everyone who has worked on it so far has quit, leading to two episodes of it being passed on with near zero handover.
Its function is fairly simple, so naturally we have been nagging to redo it and cloudlift it.
I was finally given one week to see how far I'd get, and had a poc running in Azure after one day; 4 apps in clean net6, SSO, and managed identities. The only thing lacking was setting up the authentication for third parties.
And... they still don't want "something new" when the old one works. Back to IIS and debugging windows event logs.1 -
I hate the fucking Spring WebFlux and the goddamn Project Reactor on which it depends!
Even debugging a simple CRUD microservice with simple business logic is such a pain in the ass, exception handling has a lot of "magic" implicit stuff which makes me waste hours in fucking trial & error and I have to use very little breakpoints because if a request is paused for more than few seconds it gets terminated.
I love functional programming but why shove it in fucking Java making me waste 90% of my time in trying to guessing what the fucking framework is doing, why not just use Scala which runs in the JVM? We don't even need compatibility with legacy code since it's a greenfield project!
And before you ask yes, I read a fucking book about Project Reactor and Java reactive programming and a lot of docs on Spring, Spring Boot and Spring Web Flux.2 -
Just ended a 4 hour debugging session trying to work out dlv debugger for golang, only to know that "dlv doesn't work on wsl".
Movies depiction of us was so wrong :'(1 -
Maybe I'm stupid, but I'm annoyed that there are no good ways to debug Blazor WASM.
It doesn't help to tell me that I got a null value, unless the error tells me which of my 50 variables is causing it5 -
Can you give me some tips on how to debug a massive app? (Android app running on android studio which is basically intellij idea).
For example I need to fix a bug where a certain action results in unexpected behaviour.
But oh my god the codebase is so large (mainly architecture is MVVM and rxjava) that searching for the specific place is like searching for a needle in haystack.
For example I added a breakpoint in few places, but I can see only like 4 or 5 last frames in the stack that led to the current action, last frame is a lambda which doesnt help me so frankly Im unable to even track where current event started. I am loosing my mind. I cant even find where the buttonclick action started because everything is reactive and done with observables which can be anywhere.
Any tips on debugging will be appreciated7 -
The it manager said that the site on my private vps where we are using a small tool as reference, is a security issue and what if it may be hacked... Well, from this point of perspective all the websites shall be switched off. The tool lovered the problem resolution from 30 to 2 minutes.. I have asked for on premise server before but noone gave a shit so I hosted on my private vps. I wont give it back for free, its a sure thing. Soon they will start to get the complains that its offline because the customer is using it for debugging too. I feel like IT and dev is really moving appart. They act as bunch of pathetic jelous guys who couldn't learn programming and ended up in installing windows on machines...7
-
Seriously, FUCK initialization in parenthesis.
Because of fucked-up C++ standards I spent half an hour debugging a cryptic AST error because my method definition was apparently parsed as a member initialization.7 -
Me: I opened a support ticket with the software vendor last week. I haven’t heard from them yet and the can be slow to respond. I’m unable to debug the issue on my end. If you can’t wait, here are some solutions to explore. [sends a few suggestions]
Stakeholder: Can I give you examples of another error that I think is related? Is that worth exploring?
Me: 😑 No. I’ve reached the limit of what I can do for debugging. I need the vendor to answer my support ticket. -
Well i spent an hour debugging to find out i wrote throw instead of return somewhere. I have no idea how i even managed to do that.
-
Debugging is removing various bugs from program code. So, programming is about creating and adding these very bugs to the code?👾1
-
"Debugging is similar to being a detective in a murder mystery when you are also the killer and are unsure of whether you are resolving the case or hiding your traces!!".
But seriously, why does debugging have to be so challenging at times? It appears as though the code is attempting to trick us in some way. And let's not even talk about those mysterious error messages that have no meaning at all. Is a bit more explanation necessary, code? Give us a break, please!2 -
What does devrant think about custom IDs?
Instead of:
- "d2ac9db1-3222-4e99-97cb-e14fb4240f43"
Something like this:
- "user-d2ac9db1-3222-4e99-97cb-e14fb4240f43"
- "document-34ea29ce-6022-40d4-821d-95b240633ba9"
They can be saved as binary in DB (like in the old days before native UUID support), have basic protection against being confused with IDs of another prefix and are pretty much self-documenting (better debugging/logging experience).
Plus, every ID would have their own value object (increased type safety) and if required, prefix can be omitted for 3rd party systems.
I think, it would be well worth it... 🤔32 -
Omg why are social cards so hard to debug? Did no one think of such obscure techniques as local debugging? And why doesn't Twitter show me the error message? It's the same code for fuck sake! It works with one article but not with another. There MUST be some very exact problem with one of my images, but Twitter just doesn't fucking give me a proper log.1
-
Why are we debugging our stories?! Heck even our products design?.... In the end we have our tasks objectives updated mid sprint.... What is this chaos?!