Ensuring tech blogs don’t become the Instagram for Coders where we portray everything in our coding lives as perfect…
I had 3 bugs this week.
- eventual consistency latency: Used a hash to wait for S3 to update a file, but didn’t wait long enough. Normally s3.getObject is a 60 ms operation even if megs in size, BUT eventual consistency can make it up to 20 seconds or more. My code didn’t work, I have to “wait & retry longer”. The worst kind of bug, it only happened “some times”.
- No published interface: One microservice was ok with creating default values, another required them and when missing blew up. This is what you get without clearly defined public interfaces and using dynamic languages at scale. Martin Fowler has a post on how to fix.
- Empty Array === blow up: We have a common case where we load some data, but it could be empty. That’s ok, finish early. The code didn’t; it had no clue what to do with an empty Array and blew up. Except I already fixed it. Then didn’t check the code in 2 weeks ago. 20 years on and I still can attend amateur hour 😛. Too many video games where it autosaves for you <– my excuse.