Not Alone

“Anything that can go wrong, will go wrong” – Murphy’s Law

Or Chinua Achebe would put it: “Things Fall Apart”.

Isolation is my coping mechanism when things fall apart. I feel fully responsible for what’s gone wrong so it’s unlikely I’m ready to surface if I don’t have a solution in hand.

Elusive solutions reinforce how I’m not suited to be doing what I’m doing in the first place. Nagging guilt rips me up, tears down my confidence and sends me on a downward emotional spiral. Justification for such self-destructive thoughts are firmly rooted in the belief that it’s my fault everything is broken.

Two unrelated problems I’m dealing with are convincing me to reconsider this way of coping when things go wrong.

1. Socket.io Timeouts on Heroku

2015-02-11 04:23:25.532 401 <158>1 2015-02-11T04:23:27.077498+00:00 heroku router – – at=error code=H12 desc=”Request timeout” method=GET path=”/socket.io/?EIO=3&transport=polling&t=1423628576949-4083&sid=zakjqdM8me8vYrJ0AAB4″ dyno=web.1 connect=0ms service=30003ms status=503 bytes=0

I’ve been getting a flood of emails from the log monitoring service about timeouts on a small application I’m hosting on Heroku. When I started getting these emails, I put the blame squarely on myself.

“Heroku is a well-tested platform. There’s no way the problem doesn’t originate from their end. Can’t be Socket.io either. Everyone else uses it, so what are the odds it’s them? It’s definitely something wrong with my code.

I’m such a crappy programmer. I’m 27 and I still can’t write a decent application? What am I doing with my life?? Better dive into Sublime Text and find where I screwed up”

2. Mouse Doesn’t Work Properly in Sublime Text 3

I’m unable to use my mouse while working on code. It works on menus and sidebars but it simply refuses to work where I need it the most. The fact that it’s working on pretty much every other part of the interface leads me to believe this can’t be Sublime Text’s fault. Either I’ve screwed up my mouse or installed something that messed with the drivers and now I’ve broken it.

I decided to tackle the Mouse Problem first because it would be far less effective to be working on the other issue with a broken mouse.

Sleuthing on Google turned up a topic from four years ago where someone else had a similar problem.  Quite a few others had this problem too, on different operating systems and versions of Sublime Text. This is definitely the right trail!

Near the bottom of the page, someone posted this:

Ahaha, I’ve finally tracked down the core of the problem!
It was… hardware related ) You wouldnt beleive it :))

An additional “back” button of my external mouse was stuck!

“Additional back button? Does my mouse even have … oh my God … this weird piece of plastic is actually a button!??”

It worked! I clicked the thing I didn’t even know was a button and everything started working properly on Sublime Text. I don’t know when it jammed or how, but clicking it worked.

Others who had blamed themselves like I did had uninstalled and reinstalled Sublime Text, re-downloaded drivers, upgraded versions and the problem was the program’s faulty interaction with a button that isn’t typically on a mouse.

With everything in Sublime Text working perfectly well now, I can tackle the issue that Heroku emailed me upwards of 100 times that night alone- the timeouts.

Google led me to an issue in Socket.io’s repo posted four years ago, coincidentally enough. Turns out Socket.io refused to stop trying to reconnect no matter what the settings were. It kept trying and timing out repeatedly. Someone must have left a tab open and their browser was trying to reconnect the whole time. Socket.io issue, not mine.

I beat myself up for days on end about both issues, only to find out it’s not my fault. How embarrassing. More importantly, what a waste of energy, morale and time. I’m working on a new way of dealing with problems from now on.

The first and most important step is accepting that things fall apart and I’m not the only one who experiences this. Finding others in the same situation helps. It helps emphasize that I shouldn’t beat myself up so badly. It helps me realize there are others who have been searching for a solution. Someone might have found one already. Even if a solution hasn’t turned up, there are more clues on the source when you can consider the problem from multiple perspectives and see it in different settings.

Things fall apart and I’m not alone in experiencing this.