Jonathan's Blog
name

Jonathan's Blog

Mindful Leadership and Technology


Author
Featured

Bots Conversational UI Humor Turing Test

Bots Rising - Part 7

Posted on .

If you want to pass a modern Turing test your bot must be seamlessly human AND complete all of the following actions:

  1. It must offer the human evaluator an upgraded service plan.
  2. It must demonstrate authentic human emojis.
  3. It must talk about how much money it made last year.
  4. It must name drop strange people in obscure industries the human evaluator has never heard of.
  5. It must successfully sell the human evaluator a commemorative T-shirt.
  6. It must NOT entice the evaluator to call it an idiot just to see what it does.
  7. It must mispronounce the human evaluator's name.
Featured

Bots Conversational UI Slack Software Development Accoutability

Bots Rising - Part 6

Posted on .

Our internal bot has been running for a while and getting some use.

We've gotten it so that it runs for 7 - 10 days without issue, but after that length of time it seems to quietly lose the connection and we previously weren't checking for that. I'm not sure if that is a feature of Slack itself or the library we're using. In any case, 7 - 10 days seems pretty good and we should probably add some code to recover if something happens.

To get to 7 - 10 days with a Slack bot, the key was to use the Ping/Pong functionality you can see here. It's part way down the page, just look for 'pong'.

We're currently pinging every 10 minutes. This is a lot less than I've seen recommended, but I believe those recommendations were based on building chat clients with the RTM API, not long-running bots with lots of downtime. I don't want to get in trouble with Slack for sending a million ping messages for no reason.

Instead of upping the number of pings we send (which may have helped) we've added some functionality to check as part of our ping/pong functionality to check for the health of the connection. This seems to be the more responsible way to run the health check and reconnect if the connection is offline.

We've tested our reconnect, which works well. Now we just need to wait 7-10 days to see the production failure occur and see if it recovers.

Featured

Work Technology Time Time Savings

Tracking Saved Time

Posted on .

We're great at tracking costs, money, time spent.

But where do we keep track of time saved? What bank can you put it in?

Of course you can't. You can really only spend time - so you save time in the same sense that you save $2,000 when you buy a car. You save it by spending $30,000 or $40,000 or $50,000 instead of slightly more than that. Which is really just a smaller outflow than it is a true saving.

It would be great to have a system that told us how much time all our previous efforts have saved us on a current task. With money there can be a net accumulation of 'savings' (like the car example) into actual savings in a bank.

Time affords us no such option. The only way to keep track of such savings would be to create a record of such transactions and do the bookkeeping necessary to maintain that. Something like this:

By planning ahead and due to all my previous experience, I saved an 5 hours today.

It would be great if you could show how much time your efforts saved yourself and others. Would it be worth it to keep track of those things?

A quick Google search indicates that no such record keeping system exists.

Featured

Software Development Technology Software Accoutability I hate the phrase 'spaghetti code'.

Coding and Accountability

Posted on .

If you are a developer what code are you accountable for?

Is it only your own? Is it your own plus that of a system that you've worked on for some period of time? Is it your team's? Is it every project ever worked on at your company?

I ask this because I've seen a lot of different answers and I will share with you my own approach to this and why that has been my approach.

When I approach a code base I did not create, my first question is to ask, "What can I learn from this code?". This question can and should consume you for some time. You won't know the answer right away, if you think you do, you probably aren't listening closely enough.

Once you know what you should be learning and have begun to learn you can ask how you can make it better. There are always ways to make improvements and to meld your learning with what you already know.

At no point during this process do I use the phrase 'spaghetti code', precisely because it places the source of misunderstandings outside the self onto an inanimate object: 'the code'.

Code is, at one level, a tool to communicate to a machine what you want it to do. It can't be 'spaghetti' if the machine understands it and does what the humans in the room wanted it to do.

On another level, code is a tool to communicate between one developer and another the intent to make a program and what that program was supposed to do. You may choose to blame the previous developer (who completed their assignment), but I don't see how that helps any business situation you happen to be in.

My approach was to be accountable for all code that I touched.

For code written, from scratch by me, I am accountable for all of it, no matter how long ago I wrote it.

As a boss or manager, I don't necessarily expect every person to have that level of accountability, but I expect them to be on a journey that moves in that direction.

And I hate, hate, hate the term 'spaghetti code' (if that wasn't already clear) because it is such a victim phrase. Are you the victim of code? I certainly never wanted to be. I wanted to win and make the code do what it was supposed to do.

Think of the great developers you know. Do they use that phrase? I've never heard one do it.

The 7 Habits of Highly Effective People is very instructive on this point in general. Stephen Covey was not a developer but the lessons are apt to all of us, at all times.

Become proactive. You'll be glad you did.

Featured

What Happens on Localhost ...

Posted on .

... stays on localhost.

Unless you put it on the internet.

Featured

You Don't Need a Class ....

Posted on .

You need a project. You learn more if you do something that interests you - it will motivate you, help you press on boundaries and do hard stuff, and make you actually release something.

It's harder to do a project - you're more likely to fail, for one. You also need to define your own scope and decide your own direction. That isn't always easy to do.

Remember that you have the internet. There are very few problems that the internet can't help you solve. It won't solve them all for you, but it will help you solve a lot of them. The internet gives you access to massive of amounts of knowledge and expertise.

So go out and pick a project for yourself - start doing the work and you're going to learn a lot and learn it quickly. You don't have a choice when you're trying to get something done.