Month: August 2020

Be A Slacker

Be A Slacker

No online collaborative tool is perfect, but when used well, Slack is pretty close. Having participated in multiple Slack workspaces across several organizations over the past few years, I’ve become somewhat opinionated (and hopefully qualified) on what constitutes “used well”. Here’s my take on some best practices:

Yes, I own Slack socks
  • Set up your profile with your real name, and add a high-quality photo. This helps interactions feel more personal, and when communication is done primarily over the Internet, every little bit helps.
  • Set up notification rules and a do not disturb window in preferences.
  • Strongly consider disabling audio notifications, as they can be a distraction to those around you.
  • Conversation in public channels is always the preferred approach.
  • Single-user DMs are acceptable for private conversation, but consider if your discussion might be valuable for others to see and contribute to. When in doubt, go public.
  • Group DMs should almost never be used unless the topic is sensitive and needs immediate response. Otherwise consider using a public channel with @mentions.
  • Temporary channels are an acceptable alternative to group DMs. Prefix them with temp-, and /archive them when conversation is complete. Typically these should not need to exist more than a day or two.
  • Discussion in a public channel where response from a specific small group or individual is needed can be easily accomplished through use of @mentions. Brief side discussions can be done with threads vs. splitting off into a new channel or private DM.
  • @channel notifies all members of a channel, even if they are outside of working hours, and should be reserved for emergencies. @here is almost always more appropriate, as it only notifies members within working hours. Even better is a small list of specific @mentions.
  • Use /mute when you want to stay in a channel but not get notifications from it. @mentions will override mute, so you’re still reachable.
  • Use /dnd when you need to ignore all notifications for a period of time (e.g. to go heads-down on a task, you’re giving a presentation).
  • Consider turning off message preview in notifications, unless you want to run the risk of a sensitive (or embarrassing) message being viewable by others.

Happy Slacking friends!

On The Shoulders Of Giants

On The Shoulders Of Giants

I took an entire class in compiler theory in college, and really enjoyed it. Can still picture the classroom in my head, in fact (3rd floor of the ENS, all the way in the back past the nursing lab). So how is it that I never learned of Frances Allen, who died last week at 88?

History is a thing that few understand in its entirety. It’s usually treated like a separate subject, but at minimum each of us should endeavor to understand the history of our own fields of study.

A Virtual Bank Is Still A Bank

A Virtual Bank Is Still A Bank

Recently I was attempting to set up automatic payments with a utility company via their website. I dutifully entered my bank’s routing number and my account number, but when I tried to submit, I was told the routing number was invalid. I double-checked it with the bank’s website, but I still got the error.

Being something of a nerd, whenever I run into trouble like this on a website, I open up Chrome’s dev tools to see what’s going on. Turns out the UI was sending the routing number to an API endpoint that ensured it belonged to a real bank before submitting the form. For whatever reason it appeared this API didn’t have my bank in its database.

Which made me wonder if I could twiddle the site’s Javascript to skip this API call and submit the form anyways. Lucky for me they didn’t perform any minification, and it was straightforward to bypass this verification step. When I did so, the form submitted just fine and told me automatic payment setup was complete. I suppose I’ll find out on my next billing cycle if it worked, but I bet it will.

Three takeaways from this little adventure:

  • As I said a few days ago, I’m glad to be the kind of person that has both the knowledge and curiosity to solve a problem like this, instead of falling back to an interminable customer support call.
  • If you’re going to put a blocking validation process in front of your customers, you better be darn sure to get it right, especially if having it fail means a loss of potential revenue.
  • Client-side validation is only a convenience, and Javascript is easily manipulated (even if minified, but honestly people, minify!) Server-side validation of all input is absolutely essential.