Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Get a devDuck
Rubber duck debugging has never been so cute! Get your favorite coding language devDuckBuy Now
Search - "wk117"
This was at a hackathon which my study organises yearly. It's a 24 hours challenge and you've got to work in teams. It's always from 12 (noon) to 12 (noon the other day).
Another group of programmers was pulling their hair out because of their code not working, it kept crashing and they didn't see it after more than an hour (half of the team had difficulties with keeping their eyes open and it was about 3-4am so we were already programming nearly non stop for about 15-16 hours).
Walked by and offered to take a look:
"YES PLEASE FUCKING HELP"
Took a look and about two seconds later:
"oh you're missing a hashtag there *points*"
All programmers at once: MOTHERFUCKER! (or in Dutch: GODVERDOMME!) (motherfucker contextualizes the situation better imo)
I think I made their entire hackathon at that moment 😊30
Java - OOP Course
We had to write a game, an arkanoid clone
And a fun course, mad respect to the Prof.
Most students, including me had this ONE bug where the ball would randomly go out of the wall boundaries for no clear reason.
A month passed, sleepless nights, no traces.
Two months later. Same shit. Grades going down (HW grades) because it became more and more common, yet impossible to track down.
3 months later, we had to submit the HW for the last time which included features like custom level sets, custom blocks and custom layouts.
So before we submit the game for review, they had pre-defined level sets that we had to include for testing sake.
I loaded that.
The bug is back.
So I started setting up breakpoints.
And guess what the issue was.
FLOATING FUCKING POINT NUMBERS
(Basically the calculations were not as expected)
Changing to Ints did it's job and the bug was officially terminated.
Most satisfying night yet.
Always check your float number calculations as it's never always what you expect.
Lesson learned, use Ints whenever possible.18
I removed a sleep(1) call from the main loop of a chat server I wrote and sped it by a factor of a few hundred. :)6
Got a call while on vacations, the main server is down.
*holy shit* I thought.
As I opened my MacBook, the phone kept ringing and slack was going crazy.
“What should I do? Where is the problem?”, the voices in my head said..
I opened the terminal and tried to get a ssh connection.
Sweat was dropping down from my forehead.
“Connected” the terminal said.
“Fuck yeah, the server is up, only the app is not responding”, I thought and opened the log files.
Suddenly, “STOP” I shout at the log files that were appended way too fast.
Then I saw it.
I added an index to the modification date column,“ kill -9“ed the process, started again and went back to vacation mode 🙂
And of course I was the office hero for a while💪
For the smart asses, I’m aware that it’s a bad idea to -9 the app process in prod, but it was so overloaded that i was not able to kill it any other way. And we needed that server up again.4
There was this annoying fucking bug flying around my head for 3 nights straight.
When I finally caught the bloodsucker I hit it so hard it opened up a spacial tear into another dimension.
Put up its head on a stick as a warning to future bugs.
Am I doing this right? 😅4
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>();
List<Price> prices = dataProvider.GetPrices(productIdsParameter, 0);
foreach (var price in prices)
if (price.PriceTypeID == priceTypeId)
prices = dataProvider.GetPrices(productIdsParameter, price.PriceTypeID);
* 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
Not really a bug, but once I tried to learn building function ajax per table asynchronously instead of calling all of them at once. Spend like couple of hours of trial of error. It wasn’t needed at the time, but suddenly I need to fetch something separately because of a new feature. Just write a couple and line it’s done
This spring I was working on a library for an algorithm class at uni with some friends and one of the algorithm was extremely slow, we were using Python to study graphs of roads on a map and a medium example took about 6-7h of commission to finish (I never actually waited for so long, so maybe more).
I got so pissed of for that code that I left the lab and went to eat. Once I got back I rewrote just the god-damned data structure we were using and the time got down to 300ms. Milliseconds!
- If you're pissed go take a walk and when you'll come back it will be much easier;
- Don't generalize to much a library, the data structure I write before was optimized for a different kind of usage and complete garbage for that last one;
- Never fucking use frozen sets in Python unless you really need them, they're so fricking slow!3
This was WAY back in my first job as a programmer where I was working on a custom built CMS that we took over from another dev shop. So a standard feature was of course pagination for a section that had well over 400,000 records. The client would always complain about this section always being very slow to load. My boss at that job would tell me to not look at the problem as it wasn't a part of the scope.
But being a young enthusiastic programmer, I decided to delve into the problem anyway. What I came to discover was that the pagination was simply doing a select all 400,000 records, and then looping through the entire dataset until it got to the slice it needed to display.
So I fixed the pagination and page loads went from around 1 min to only a few seconds. I felt pretty proud about that. But I later got told off by my boss as he now can't bill for that fix. Personally I didn't care since I learned a bit about SQL pagination, and just how terrible some developers can be.5
A huge amount of memory leakage in a C++ project which was from a mistaken 'new' statement which was not deleted5
An overflow in C, the program was writing 16 Bytes in an array of length 10 due to some mistake.
The problem was this ended up overwriting another place in the memory that was used by another algorithm to perform calculations... So we thought that the algorithm was buggy all along.2
So we're working on a few initial apps for a hackercamp and finetuning the OS. We've been coding for like 17-18 hours trying to finish this off without a day 1 patch on the event itself, when someone starts swearing like a sailor. We walk past him take a look at his code and see that he's started an array at 3 instead of 0. He's one of the more experienced members on the team so this is a lack of sleep bug rather than a not knowing. To this day whenever someone makes an array error in their code someone always shouts "Arrays start at 3 right"!
Maybe not the most satisfying bugs but man is it funny as hell.
When migrating from MySQL server to MariaDB and having a query start returning a completely different result set then what was expected purely because MariaDB corrected a bug with sub selects being sorted.
It took several days to identify all that was needed on that sub select was “limit 1” to get that thing to return the correct data, felt like an idiot for only having to do 7 character commit 😆4
Once I was coding a pool game, and didn't know why the white ball kept on going on forever. It was 4AM, so I was already a little tired as you can imagine.
The glitch came from the fact that I had designed a whole polynomial function to imitate the deceleration of the ball... I replaced it with two lines: one creating speed and deceleration value, and another one subtracting the deceleration value until speed was zero. And then I went to sleep.6
While writing a raytracing engine for my university project (a fairly long and complex program in C++), there was a subtle bug that, under very specific conditions, the ray energy calculation would return 0 or NaN, and the corresponding pixel would be slightly dimmer than it should be.
Now you might think that this is a trifling problem, but when it happened to random pixels across the screen at random times it would manifest as noise, and as you might know, people who render stuff Absolutely. Hate. Noise. It wouldn't do. Not acceptable.
So I worked at that thing for three whole days and finally located the bug, a tiny gotcha-type thing in a numerical routine in one corner of the module that handled multiple importance sampling (basically, mixing different sampling strategies).
Frustrating, exhausting, and easily the most gruelling bug hunt I've ever done. Utterly worth it when I fixed it. And what's even better, I found and squashed two other bugs I hadn't even noticed, lol
There was a pretty big bug that I spent all day trying to pinpoint. It was getting really late, so I called it a night and went to sleep.
That night, I dreamed that I was still at the computer, debugging. I kid you not, in the dream I both found the bug and realized what the fix needed to be. In that moment, I woke up.
I ran straight to the computer down the hall, and sure enough, that was the issue and that was the fix.
Shoutout to the capabilities of the human brain.
Twitch Developer Rig sucked hard and was cropping my extension down to 300px high no matter if it was “panel” which should be this high or everything else.
So I posted to their forum and they committed a fix MINUTES later.
That’s how you deal with bugs.
Successfully wasted 4 hours then realised jQuery was not inserted..
Bug Fixed.. o_O8
Most satisfying bug to fix...
Literally any API bug that returns JSON. Nothing quite like seeing that JSON blob come back correct.1
Fixing "Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0"
Every damn time.1
My most satisfying bug fix?
I found a core concurrency issue in this gnarly homegrown ORM and reported it to the lead devs, who (very defensively, having written the damn thing) argued that it would never pop up in a prod environment and I was stupid for even bringing it up. Theoretically, this bug could cause pretty much every foreign key to be assigned to the wrong parent, but only if multiple instances of the application were open/running at once. They were so certain it would never happen on live that they explicitly instructed me not to fix it. After all, this bug had been active for many years on a previous project and nobody complained.
Problem was, that previous project was something that only a single user had open most of the time (think: a manager). The new project was something that would be used by multiple people at the same time (think: all the employees). Once we released this new-project-with-old-orm, it didn't take long at all for our customers to start complaining.
After that, they let me fix the bug. :)
I was working on a project, it was a race to the finish.
We are all on very little sleep, like none. Everyone is in a haze.
Last minute a bug comes up that we cannot explain. One of a lead guys say he will handle it but we can see him degrading.
We left him alone, until he comes out of the quite room looking like a scolded child.
“I can’t do it guys... I really can’t. I’m stuck and I can’t do it. I gotta go for a walk...”
As he walks away I say...
“Did you push your branch? I’ll have a look”
Now to be honest, I’m fucking running on fumes at this point as well. So I start to think... what’s the low hanging fruit here?
Spelling mistakes. Brackets. Shit like that.
It was a spelling mistake.
When he walked out of the building we were a fucking mess. When he walked in we were all high-fiving.
He looked at me and said...
“What was it?”
I said, “it was a really strange little error but I got it fixed.”
The guy, who is NOT the touchy feely type, hugs me like I saved his life. And in his ear I whispered...
“It was a spelling mistake” then I winked at him.
We high fived, released the fucking code and never spoke of it again. (Except laughing over a few beer)
I felt like a fucking super hero2
Core library was giving serious blow out of execution speed as data file size increased.
Traced it back to a GetHashCode implementation that was giving too many collisions for unequal objects, so when used as the key in a hash table it was causing the lookup to fall back to checking Equals (much slower).
Improved the GetHashCode implementation, and also precalculated it on construction (they were immutable objects), and run time went to warp speed! Was very happy with that.
Obviously put in a thread sleep to help manage expectations with the boss/clients going forwards. Can’t give those sort of gains away in one go. Sets a dangerous precedent.1
Decrypt api responses in an iOS app which my “senior” dev thinks it is more secure to encrypt responses in stead of setting up a proper SSL cert (they use plain http to save money 🙄)
They disable the encryption since it does not function as we wanted and set up SSL instead🙄4
Most satisfying bug I fixed?
Indentation bug in python after searching hours for the bug. Yes, indentation bugs still happen in 2018. Thanks to TDD I failed fast otherwise it would take way longer to find the bug.
Wouldn't call it a software bug but related:
Was developing an order system to expand in the UK. We have been developing it for the last 2 years and always had a one nasty bug in the system... Whatever we do, it still appears... Tried debugging to find the source, tried covering with tests - nothing helped it was still there. We even rewrote the whole system 3 times and it still was there!
One day, we have been given a stupid request from our manager - take a black background and make it even more blacker... That was it and I went to the CEO with letter where I stated that we should remove the manager... As I'm the Senior there, he did ask me why and eventually removed the manager...
Oh my guys, I've never felt so good after removing a bug! Since then - our application went live, we had our first customers and we were happily rolling new updates. And the best part - there was no BUG! Everything we did just had undocumented features or missing links but we haven't really had a single bug that was not caught by our automated tests!
Moral of the story:
Not only software can have bugs. People also can be "bugs" while bugging you about every single details they think is not working correctly.
It took me two full weeks to study this complex system (the system is a nice piece of work) and learn about graph theory to trace this bug reported by the client in order to find out that it was a data-entry issue. I had to trace x and y coordinates to debug this issue.
Although the result was a bit frustrating, it made feel capable and responsible. It was a good feeling in the end.
I remember when my module lead left a bug... he immediately went to the client location. He managed to go in the room where only restricted people were allowed.. (even I need to take many permissions to go inside) he confidently asked to check some logs to get the access to the machine, fixed the bug and came back in heroic style.
I was really impressed.
In an encryption-module, I had a bug, that caused my PC to crash, every time I tried to encrypt something.
Turns out, the loop, that appends
0-Bytes to the string, to make it Block-Cipher compatible,
Had an logical-bug in its exit-condition, that caused it to run infinitely and allocate an infinite amount of memory.
This is embarrassing, but the first days of learning about AngularJS I had to implement functionality about a new component of the WebApp I was building.
I did a good templating, I build the component along with its controller and services, I verified there wasn’t any memory leak and that everything was in an isolated scope. Yet nothing at all appeared on the app. It took me more than 30 minutes until I realized...
I didn’t put the source code on the index.html file 😅
For people who know more about compiled languages such as C or Java... that’s like not putting your source code file in the makefile. 😅
I felt literally like the dumbest person in the planet at that moment. 😀🔫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.
I was making a multithreaded goapp that has functions that have endless forloops and my code didn't execute after one function because I forgot to add go when calling it.
The most satisfying bug, the fucking mosquitoes at night, after buzzing around my head or hours. Fixed them by fucking smashing them on the wall with a shoe.
Oh wait, you meant a dev bug.
On my previous job, any problem that my egocentric idiot that i had as PM couldn't solve and i could, was satisfying to solve.
Probably the autosave feature in our medical eForm application. You might think that doesnt sound unnecessary, but it was built to solve a problem that shouldnt have existed in the first place.
Autosave was put in place to rescue as much data as possible in the event that the app randomly crashed while a paramedic was filling in a form.
So in one sense it was a necessary feature because the app was so unstable. But on the other hand, if the app was built properly it would never have been needed.2
Finally, fucking finally I fixed a damn bug that seems to be freaking popular on asus machines. This damn bug captures the fn keys needed to regulate the screen brightness.
All tools that display your keypresses didn't find them at all and I had a pretty tough time find the source of problem.
You can create as many arch memes as you want but you cannot deny that the they are truly MVPs imo.
Today I also:
* Fixed and refactored a bit of code
* added shortcuts for volume and keyboard backlight control
* Installed lots of fonts
* Got Steam to run
* Found out the meaning behind the Arch linux
* Felt disgusting using windows 10. Learned that 10 stands for the number of minuts before I must vomit 🤢
* Learned a bunch of linux stuff
But most importantly
I didn't know why I didn't ever told it:
I did a few multiplayer projects in Unity 4 Engine (beloved old multiplayer) and I wanted to create a custom dedicated server within the Unity engine.
I created a new project and started programming. The clients even connected to the server but I couldn't figure out how to sync the world's because the blocks the world was made of existed in both projects,but had different IDs (didn't knew there were IDs).
After a bit of googling I found out that it isn't possible to sync these projects. Tired of myself giving up I tried a different route and found out that these IDs would sync of you exported them as asset pack. So I did!
And it worked ❤️❤️❤️❤️
So I could have a less power heavy dedicated within the unity engine.
(PS: I knew I just could made a server in C# or so with sockets and what ever, but 12 year old me doesn't knew sockets)
I spent 4 hours to find I have written break instead of continue
I tried to make a Sudoku solver (using human techniques), and then I found it was NP-complete
The most crazy issue I've fixed was caused by a TCP behavior which I didn't know, called the "half-closed connection".
There was a third-party application installed on a production server which called a LDAP server for retrieving users information. During the day we had several users using the application and all worked fine. During the night, when the application was not accessed, something happened and the first call to the application in the morning was stuck for about 5 minutes before returning a response. I tried to reproduce the issue in a testing environment without success. Then I discovered that the application and the LDAP server were located on two different networks, with a firewall between them. And firewalls sometimes drop old connections. For this reason network applications usually implement a keep-alive mechanism. Well, the default LDAP Java libraries don't set the keep-alive on their connections. So, I found a library called "libdontdie", which force the keep-alive on the connections. I installed the library on the server, loaded it at the startup and the weird stuck behavior in the morning disappeared.2
My favourite bug fix was actually IT based and it was the first time my Eastern European, critical of my skills, family not only praised me but claimed that I was smarter than them.
My grandfather had changed from a telecom to a VOIP device for his landline. For some reason after installation, he could hear the other person on the line but they couldn't hear him. Me and my mother were away during this time so they called in the other family IT guy. This guy is no joke, he's one of the top in his company and makes a sweet six figures and lives in a mansion.
So he started looking things up, googling forum, etc. Couldn't find anything. Started calling the tech support and tried to deduce what it was and their tech support had never heard of such a problem. He takes his lunch breaks to help out my gramps. Keeps escalating, escalating and nothing. His conclusion is that they need to send him a new VoIP stick and they're not giving it to him. At this point, he's so frustrated that he screams at my grandfather to go back to paying 60 bucks a month for landline and to stop bothering him.
At this time me and my mother return and they have concluded that they need a new stick. My mom is great at intimidating people into free stuff so she and I go over to do so. At this point everyone is convinced of the problem and even I don't think I could fix it. But I decide to check if that's the case because I don't want my gramps to get a new stick and it still doesn't work.
I go through the typical forum hunting and there's Nada on the problem. I look at the stick and all the lights seem to be working, no error lights. And I wonder maybe the problem is not the stick, because usually you can't do anything at all if the hardware is broken. So I start thinking, maybe my gramps accidentally muted his handset while talking or something dumb like that. That wasn't it.
Then I decided to see if the problem was recreated on the other handsets. I tried one out and my mom could hear me but I couldn't hear her. What?! That's different! It was the opposite with the other phone. I conclude that it's working and there's something up with the handsets. So I go and do a reset on all of the handsets to make sure.
Lo and behold, the problem is fixed. It took me 25 minutes to solve. That guy gave up after a week of trying. My mom who assumed my IT skills were on par with other kids and nothing special had finally seen me up against an opponent, and not any opponent, a six figure high ranking IT specialist. And I didn't even use any secret, complex software knowledge that wasn't accessible to her or any other normal user.
That's when she finally said that I was smarter than her, that I just used my common sense. She would've needed some kind of prompting, hint or direction to solve the issue but I did it without any.
It was a very satisfying bug to fix.
To be honest the exact bug I don't remember. I do recall that it had something stupid I had been trying to fix to get nodejs working on a raspberry pi. I finally figured it out and managed to get a simple rest server going. After hours of trying to fix what might now seem insignificant, I was not only relieved that I got it working, but also thrilled that I kept at it and managed to fix it.
During my internship, I fixed a bug in android app related to user data updation..
BUT I didn't knew it's root cause and I have no idea how I fixed it.
Also, it was satisfying.1
I wasn't happy with one of our UI views for editing a database query that consisted of about 50 fields ("editing" being the operative term here, not just viewing. It had to be two-way). Everything was hardcoded and defined manually, with each block of ~10 lines being repeated and mostly identical apart from the occasional double inline field and name of the variable. It had "just ended up that way" over time due to the variable names in the UI being different than the names of the variables that came from the API.
I decided to overhaul it all where I defined the different input components and which fields should be included, then made a function which would generate the page based on these definitions. It was about 500 lines of modularized functions and classes where the class for the actual view was about 50 lines- compared to the 1400+ lines of the previous version.
But, it didn't work. It should, but it "just didn't". There was no error. All I got was a blank, solid white page. I could make a drastic change or try something completely different and I would get the same error, same blank page. API fetch succeeded, value assignments succeeded, the object exists, but if you iterated it it was... empty.
I started getting really discouraged that I had made it too abstract. Maybe I actually made it more complex and unreadable than before. Maybe just hardcoding it all was the better solution after all. Maybe I had gone against KISS and overdesigned it.
I was up pretty late and everyone had gone home. When the last guy left there was that mood where "yeah if I can't make this work we'll just use the current version...".
Turns out I had tried iterating over a property of the set of fields to render, rather than the entire collection. In the old method the variables were a member of an object, but now they were its own object, a change I had made to isolate the set of values which were to be viewed/edited and make them easier to pass back and forth. This member existed since I hadn't cleaned it out yet, but it was empty.
I had been banging my head against this for a whole day and I was ready to admit I had made a mistake and wasted my time before discarding it all, but then I backspaced this one property and the interface went from empty to rendering perfectly and with all functionality intact. I swear god rays were coming out of my screen.
Couldn't figure out for the life of me why axios wouldn't ping to the server. Turns out the CORS policy didn't like this. Two fucking hours, man.
There were multiple pojos which maps with one of our DynamoDb table with slightly different schema (leveraging nosql).
For one of the pojos, while populating one of the attributes, it was always throwing some weird exception and no one had any idea about it.
An intern was assigned to fix it in case some new pair of eyes can observe something weird about the pojo.
Later, I realized that the way DynamoDbMapper behaves inside a pojo is very particular and hidden.
A method was declared as public instead of private in the pojo, and DynamoDbMapper while mapping the pojo to the table with reflection, it said that this attribute (a substring of the method name) cannot be converted.
Finally, it was just a single word change from PUBLIC TO PRIVATE.
When I was creating pixel art creator program and each pixel was an separated object, performance was horrible, and after 2 days of intensive thinking I figured it out. I made working canvas. Ram usage dropped by 1800% and speed increased by 40000%. My satisfaction was unimaginable.3
Not a specific bug, but I always have that satisfactory feeling when I fix a bug inside a code like this:
1. Spaghetti af
2. Duplicated af
3. Heavy use of static fields instead of passing via callback when required
4. variable names like: textbox1 ..etc.
5. No comments
It is true that is a huge pain in the ass to deal with, but then I look at it as I was able to create something out of that mess, I mean all is mixed up nothing is clear, no clue where it starts and what caused it, but then I put the pieces together and end up with a solution of what I thought to be: It will never be solved when that mess is here.
Not an excuse for messed up code, I try fixing whenever possible, but hey, at least I did not run away and give up
Ok, bug 2.
Another iOS one. I was handed an app that was built half-assedly by another team in a couple of days for a demo, And I had to maintain it and get it into a release-able state.
Someone had implemented deep linking in the app, so you could open a record by using a url from Safari/email etc. Worked fine. Problem was, the app had a login/pin screen, and if you werent authenticated and you tried to link from a url, it would just bring you to the login screen and once you logged in it would take you to the main menu rather than where you wanted to go.
So I added some logic to the linking code that if the app wasnt authenticated it would save the link in a kind of global variable. Then once you logged in and the app entered the authenticated state, it would check for a saved link and execute it if present, then clear it so that it wouldnt try to open every time you log in.
That was an interesting one to try and solve.
The setting is a computer lab on campus. The assignment was due tomorrow and I was just finishing up the code. I was a novice at C and programming in general at that time. I finish the ~250 lines of functions or so but behavior of the simple library isn't right. I'm getting wrong values and I cannot find the source - I hate myself for not testing incrementally. Then, after looking for hours piece by piece while looking at references and StackO, I realized that I improperly dereferenced a pointer, something like *(this) instead of (*this) in a function. I didn't even know that I was making a mistake because I missed one of the relevant lectures. After that I realized that the errors thrown by the compiler weren't all that bad...
I'm really getting sick of the people in Go ccommunity (or should I say: cult) who claim that Go is a new C. Know your tool, for the love of god! Before you misuse it.5
Found a bug
- Calling function sent wrong parameter.
- Calling function itself was shit. Changed it.
- Few hours later, revamped whole class, updated all references and pushed to production next day.
Till date that class has not changed and still works flawlessly!
And probably first time I used queues in java. Algorithms FTW
When I wrote a templating engine (great overstatement) just for myself to learn, I had this bug in php5 and regex that would crash the whole apache server.
Literally nothing worked and I didn't know why. After rebuilding everything I tried with regex using only simple string manipulation all of a sudden everything worked fine.
For some test cases some text was overlapping. I tryed many times different ways and in the end what I did was changing the paragraph and putting a standard one and fitted it perfectly forever.
I have some really satisfying bug fixes in one particular project but it's under NDA.
So I'm not allowed to tell you guys any of them :(1
Not really a bug, but I have recently finished organising our Domain Controller.
It was a server set up about 8 year ago by someone with zero experience with server OS.
I had to completely re-work every single group, GPO, User Account, Login script, shared drives and DHCP.
I have now solved 90% of re-occurring problems with our network.
Now they want me to do the same with our Digital Storefront...
Most satisfying bug, it was something with good old $.ajax, way back when Axios wasn't a thing and SPAs weren't so widely used.
I was somehow able to fix the call params for a file that would not load with any other setup. Maybe it was just setting async to sync or something like that, however the thing is I was not familiar with AJAX at all, but I managed to get it run.
Then I googled, why its working and figured out all the answers on SO and other pages were the exact thing i set up for my call. I was so proud
some context: I was struggling with this bug for days and asked more experienced web devs, everybody answered, your code should just work fine.
Maybe thats why I have a positive relation with SO, because the first thing i searched there was something that I figured out myself, haha
Was using an open source piece of software for data storage and visualisation to work with the loggers my company makes. When importing old data for historical views, some of the csv imports would fail without any specific error messages.
It took me a couple of hours but after looking at their csv parser and making my own little one to test with, I eventually found out that it was all down to the way datatime (I think it was?) in java deals with DST, which apparently was to just fuck shit up.
Anyhow, a few simple lines added into the parser later and it all works just fine.
Was super proud of that one as it was the first time I actually looked somewhat good in front of my senior dev.
Ive fixed too many juicy bugs over the last couple of years to pick just one. So this will likely be the first of a series.
I fixed one a couple of years ago in an iOS app. There was some offline storage where records could be saved, and for security reasons they would be automatically deleted if not accessed for a certain duration.
Problem was, they never got deleted because every time the app synced with the server the timer was being reset.
Turned out the class being used to save the record in the first place, was also being used to update it on sync. And that class set the ‘lastAccessed’ property to ‘now’.
So I had to refactor the class structure so that we had 2 separate tasks as we should have in the first place, one to download the record and one to update it.
I always get great satisfaction by reworking and rebuilding ul li menus cos you know it's 2018 and fuk dat shit 90's implementation
In a Phaser game, I was unknowingly overriding a method of a parent class. It must've been Phaser.Group or Phaser.Sprite that my class was extending, I was calling destroy() on it without realising I was calling the parent class' method too and was baffled about why shit wasn't working. Found out maybe two days later and changed the method 'destroy()' in my class to 'pokeItWithAStick()'. This was at a previous job, but I'm mostly sure that it stays that way in the codebase three years later.2
Reversed network protocol didn't work, the sent messages weren't acknowledged or denied... basically no response from the server at all.
Turned out, after weeks of cluelessness, that I forgot to append PKCS#7 padding...
A very satisfactory debugging happened to me not long ago, when I discovered that assignement in C++ and Python doesn't work exactly the same.. I never took courses in Python so I had no way of knowing. I'm a self taught programmer, so I also always feel a bit insecure about my skills.
What made it really satisfying was that when I finally googled it, it was only to confirm the "diagnosis" that I had already made. I felt like years of struggles got me somewhere, now I feel a bit less insecure about my knowledge and skills in programming. :)
I uncommented the line inside a custom "library" made by a friend on a college project.
We spent 3 hours trying to make it work...the bug line was supposed to call one of the result functions, but the code had been made in a way that it was a mess and impossible to find at first.
That felt good.
most satisfying bug fix = getting Android MediaPlayer to PAUSE AUDIO PLAYBACK WHEN IM NOT INSIDE THE ACTIVITY
gosh how many of you here have experienced this before1
I had written a feature that stored some data for all methods in a code base. And it worked in 99.9% of all cases, but for some projects, somehow there were errors in the logs that I couldn't understand.
After hours of debugging, it turned out that I inserted the method objects into a map, and the (existing) base class for these objects used the character offsets for the method's start & end in the hashCode() implementation. This meant that in the (extremely rare) case of two methods in two files with the exact same start and end offsets, inserting them into a map would overwrite the previous value.
Once uncovered, this bug was trivial to fix ;)
A production issue was assigned to me a while ago and the OSE and I were volleying it back and forth (I don't have access to even see anything production) because neither of us had any idea of what to do.
Here's the twist: the OSE's analysis (and my assumptions) of the problem was off, so we were basically running around in circles.
Today, he and I had a good one on one as the only priority to put this mother fucker to rest. Turns out he assumed a lot of things in his hurry to give his analysis to his boss.
Confirmed a few things, lo and behold, it's a non issue. That's how the legacy, 13 year old system (that no one in the entirety of the company knows end to end anymore) works.
It was around 5 am in the morning when I deployed to production,
And suddenly after few minutes I was watching logs and found that feature effected other part and users getting errors, I fixed it immediately directly on master branch and pushed again,