Hacker News new | ask | show | jobs
by randomstring 1806 days ago
I worked at IBM a few years ago. When I started we were had to use Notes for email, not long after we got migrated to Verse (IBM's webmail system). Verse was better than Notes (damning with faint praise).

One day I wondered why Verse took so long to start, i.e. time to first render of emails. So I profiled the startup using a browser performance profiler. It didn't take me long to discover there was a sleep(5) in one of the Javascript files. Every employee was subjected to a sleep(5) for every single login. Of course for security reasons your email session timed out every 12 hours or so, meaning that every employee is logging into email at least once a work day. Some napkin math: at the time IBM had almost 400k employees, so that's 555 hours per day of wasted employee time. Or 138,888 hours per year of wasted employee time. To be fair some large number of IBMers may not have had jobs that subjected them to Verse.

5 comments

Maybe you spotted the mythical "speedup loop" in the wild?

https://thedailywtf.com/articles/The-Speedup-Loop

I'd never seen this before thats hilarious. Wonder how much of this really exists in the wild.
Oh it's very much a thing although maybe in different contexts.

My tech director in games used to have a ~40mb static array at the top of main.cpp with a big comment along the lines of "DO NOT TOUCH". When we'd come up on a demo or critical milestone and just could not get everything to fit in the ~512mb of ram we needed because the art team put in too many textures or our new subsystem too much memory he'd go in and knock 5-10mb from it and "save the day".

The same tech director removed mip level zero to get back ~33% of our texture memory. About a week later he told the art team that we'd optimized the game and asked if they noticed any visual differences. The art team said they didn't, about 4 weeks later it got out what he actually did and they were livid.

This reminds me of that episode of Star Trek: TNG where they find Scotty in a transport buffer, and he's shocked to learn Geordi gives accurate estimates to the captain.

https://scifi.stackexchange.com/questions/99114/source-of-sc...

It's telling junior developers don't click on IBM threads or else they'd be on this sub thread screaming that GP story is horrible, lying, cheating, and immoral. Oh how wayward the younger generations are!
1. I assume you're paraphrasing the details because JavaScript doesn't have a `sleep`, do you mean there were setTimeout loops or something?

2. Other than a job security sandbag, I wouldn't be surprised if this was an an even sloppier solution to a sloppy race condition where session token wasn't reliably cached across a distributed system or something. Gross either way.

Yes, paraphrasing. I forget the exact details, but the javascript intentionally blocked for 5 seconds before proceeding to do anything useful.
Having been subjected to 10 years of Notes, Verse feels like heaven no matter what.

The latest version from Notes I happened to use was Eclipse actually cross compiled to run on the browser (Notes nowadays uses Eclipse underneath).

Was it maybe a bodge to avoid a race condition somewhere else? Some kind of timeout to let some other system catch up? I could see waiting for a session to populate in a database or cache on first login. Hopefully it was only for the first login...

Not exactly what I'd call an elegant solution, but it is at least one semi-plausible explanation for a fixed wait.

/ shudder /

Did you get the sleep statement removed?
I filed a bug, but I suspect it was about as effective as shouting into a hole in the ground. The bug was still there when I left IBM.
Maybe it was used to 'solve' some data race?
how about solving data race problem correctly then?
Maybe the guy who knew why it was done was given the opportunity long ago?