About

I am not the rock star, I am not the guy who talks for hours in meetings. I am the guy who thinks conceptually, builds meaningful relationships across a business, builds high performing teams and works relentlessly to make businesses better.

Badges

Tastemaker
Tastemaker
Gone streaking
Gone streaking
Gone streaking 5
Gone streaking 5

Forums

The number of upvotes was irrelevant until it became relevant.

Previously, I would regard upvote count as mostly white noise. It's way too easy to manipulate, too dependent on the maker's existing network of followers, and isn't a signal of quality at all. However, last month, I stumbled upon something which had merely 40-odd upvotes but was precisely what I was looking for, and 900-upvote something else which I could not use even within two minutes.

It changed my perspective completely. Instead of seeing it as a matter of count, I now see it as a matter of who voted and when. I see a difference between someone receiving votes over three days through people with a history on the platform versus someone gaining votes in the first 90 minutes via new accounts.

•

7d ago

My error handling would have blamed my users for a database outage

A ten minute check for anyone whose code catches a broad exception around a service call and shows its message to the user.

In PHP, every database error I can get is a RuntimeException. So is almost every refusal I throw on purpose: please add at least one item, this plan does not include that. From the first commit my controllers caught RuntimeException around service calls and showed the message, which is right for the refusals and quietly wrong for everything else that shares the type.

A review in August read what an unreachable database would have produced. On the invoice form, a validation error made of an SQLSTATE line, on a form the user cannot fix. On checkout, a message saying the payment had permanently failed, from the branch meant for refusals, while the branch that says try again later never ran. On every document page at once, not found, for documents that exist. In the API the same kind of catch would have answered 4xx, which a client library reads as do not retry, so the request a retry would have saved gets dropped.

The fix was to give the refusals a type of their own. A refusal is a message written to be read by the person who caused it, whoever is to blame: unable to save the logo counts, even though that one is our fault. Everything else is logged and answered with a 5xx and one plain sentence. The new type extends the old one, so a catch nobody had narrowed yet kept behaving exactly as before.

•

13d ago

What's the best way for a new member to actually get involved here?

joining a new community always comes with a bit of a learning curve. I'm trying to figure out how to best balance scrolling through new products leaving useful feedback and supporting cool launches without getting overwhelmed.

For those who have been active here for a while what did your daily routine look like when you first started?

Any simple tips for jumping into discussions without overthinking every single comment?

View more