DevOps

Chat Robots Next Level Tooling

Chat Robots Next Level Tooling

by Ole Michaelis

The video titled "Chat Robots Next Level Tooling" presented by Ole Michaelis at RubyConf 2014 addresses the challenges developers face with tooling and collaboration in their workflows. Ole emphasizes the importance of effective communication and collaboration tools, particularly through chat rooms, which can enhance developer happiness. He states that while developers often create various scripts and tools for their daily tasks, these tools frequently fall short in collaborative environments.

Key points discussed include:

  • Developer Happiness: Ole starts by questioning why developers, who often prioritize happiness in programming, continue to use subpar tooling.
  • Asynchronous Communication: He highlights the asynchronous nature of chat rooms, pointing out that they allow developers to communicate without interruptions, preserving focus during work.
  • Persistence of Information: Chat rooms offer a persistent environment where messages can be read later, making them ideal for updating absent team members.
  • Enhanced Collaboration: Ole notes that real-time collaboration in chat can lead to faster problem-solving, especially in incidents.
  • Integration of Chat and Tools: Ole discusses the need for tools that bridge the gap between chat environments and web services, citing the need for better integration.
  • Hubot: He introduces Hubot, a chatbot that connects various tools to chat rooms, enabling functionalities like deployment triggers and centralized alerts—all designed to improve workflow and collaborative efforts.
  • Sharing Incidents and Information: By using chatbots, team members can share incident information and logs seamlessly, eliminating the need for cumbersome SSH processes just to gather relevant data.
  • Fun Features: The talk mentions that Hubot can facilitate fun interactions, making tools more engaging and thus increasing team participation.
  • Challenges of Adoption: Ole concludes by acknowledging the difficulties of gaining acceptance of these tools among non-technical staff but asserts that making tools engaging is essential for broader uptake.

Ultimately, Ole advocates for enhancing tooling through chatbots, leading to a more productive, collaborative, and enjoyable work environment. His call to action encourages developers to reflect on their tooling choices and aspirations for more integrated communication frameworks.

00:00:18.400 All right, everyone. I had the idea to do a very German thing at the beginning, so I wanted to start on time. Didn't work out, but it wasn't about me; it was about you. You weren't here.
00:00:20.840 All right, so we are running three minutes late. I think that’s fine. I'd like to start with a question: Why do you program in Ruby? Actually, this is more of a rhetorical question. I want you to think about it and not answer me directly.
00:00:32.000 I hope that one of your answers is because it's optimized for developer happiness. And if that is correct, why is your tooling so shabby? I came up with this question on my own because I found myself in this situation, and this is basically the story of this talk. So it's about chat robots and next-level tooling.
00:01:00.600 You can find me at Coders on Twitter, so if you have any feedback—especially the positive kind—please just tweet me. The negative feedback, I'd rather hear in person. As developers, we've been hanging around in chat rooms since forever, but why do we do it?
00:01:34.759 Let me put it this way. I'd like to answer this question with a quote from Chris Wanstrath, CEO of GitHub, who said, "If you have a sick day, you're not going to miss everything if your communication is set up to be distributed." I think this is one very good reason to hang around in chat rooms.
00:01:46.640 I don't know if you've experienced this as well, but if you're not in the office one day, the more you rely on mediums that are recordable and replayable, the less likely you're going to miss something important. Like most companies in the world, my company is not fully distributed. We have a branch office in San Francisco, our headquarters in Hamburg, Germany, and one office in Tokyo. So we are somewhat distributed, but still, if I'm sick, I don't want to miss anything that's going on in the office.
00:02:21.879 When I joined Jimu, I found a repository named "admin server scripts." This was supposed to be a hub of scripts, but all of a sudden, it was a big collection of batch files that did all sorts of different things regarding servers—adding new ones, deleting ones, and all kinds of administrative tasks.
00:02:39.600 Chat rooms are awesome for three main reasons. The first reason is their asynchronous nature. Asynchronous communication is pretty clear for us developers. If you want to know something from me while I'm focused on work, I do not want you to interrupt me. Unlike other people, especially product managers, who often don't understand this and can disturb you when you're most focused.
00:03:05.000 The second reason is that chat rooms are persistent. Whatever you write can be read whenever I want to. If you're using modern tools like Slack or HipChat, you can even search for previous messages. This allows everyone to catch up on what happened anytime they wish.
00:03:28.759 The third reason is that chat rooms facilitate better collaboration. You can collaborate with your co-workers in real-time; as long as everyone is in the room, you can quickly address problems that may arise.
00:03:42.839 On the other hand, we are putting more and more services onto the web. Most of us are web developers, so this situation can clash. We are used to chatting, but then we are moving everything into the web. While some tasks might not fit into the chat pattern, others require more structured tools.
00:04:12.480 There are many good deployment tools available, but most of them are tied to a web interface. Even tools like Capistrano, which utilize the shell or bash, are not collaborative. I'd like to talk about incidents. Besides being a programmer, I've done Ops work and on-call duty for about a year at Jimu. I want to share my experience about alerting and monitoring.
00:05:02.560 In the event of an incident, people usually SSH into a machine and rely on their knowledge to query log files and make assumptions. Then they report back in the chat without sharing their reasoning. This leads to a lack of information and important details.
00:05:38.960 Tools like Monit exist, but they can be cumbersome to use because they don't provide a clear interface for alerts. I believe there is a need for a bridge between chat and web tools so that we can have a more integrated experience.
00:06:09.480 Who among you has heard of Hubot? That's great; almost half of the audience! Hubot is written in JavaScript and runs on Node V8. For this talk, I want to use it as an example of how chatbots can connect various tools to chat rooms.
00:06:47.000 Imagine being able to trigger deployments from chat or have alerts delivered centrally. When these things land in your chat rooms, it brings about several advantages. First, sharing is caring. Everything is directly shared with your co-workers. Let me give you a little story about Jimu.
00:07:56.519 When we experience an outage with our services, our support staff can just look in the chat to find out if a server is up or down. Having that information preserved as history is crucial. It's recorded, and everyone can search for recent outages or postings.
00:09:00.720 In fact, imagine your chatbot posting links directly to your communication tools, corresponding to chat lines. My favorite feature is collaboration. Let's think about the server outage I mentioned earlier. Rather than SSHing into machines, you can now use the chatbot to gather relevant logs and work with your colleagues directly in the chat.
00:10:22.560 This makes it a super powerful tool, allowing teams to collaborate seamlessly on incidents. There is a quote by Jesse Newland from his talk at RubyConf last year called 'ChatOps', highlighting the importance of collaborative work in chat.
00:10:59.000 The concept of creating separate chat rooms for incidents allows people to join and silently observe without interrupting the flow of work. This transcript of the chat can be invaluable for postmortem analyses.
00:11:27.159 But enough about failures. I think one of the biggest reasons Hubot exists is for fun! You can post images, GIFs, videos—whatever you want. This integration opens up many exciting possibilities.
00:12:32.959 Everything that Node.js can do—TCP, HTTP, network communication, and email—can also be done with your chatbot. In my previous company, we did a fun hack that involved linking an Arduino board to the office door buzzer, allowing us to open the door via HTTP requests.
00:13:34.000 This was quite cool, and if you're interested, it’s available on GitHub as open-source. My old CTO improved upon this setup in his next company. It's remarkable how simple programming can lead to great functionality.
00:14:56.720 The basic part of Hubot is that anyone can contribute because it's all JavaScript or CoffeeScript. You don’t need to be a computer engineer; you just need a little knowledge of JavaScript to create useful scripts.
00:15:58.240 I wanted to show you a basic script for Hubot. As good engineers, we start with documentation, which is necessary for generating documentation in Hubot. If you have commands, configuration, and dependencies mapped out, it becomes much easier to develop.
00:17:20.560 Hubot has an HTTP interface that connects with webhooks, allowing integration with Travis CI, GitHub, or anything with a webhook. This opens up tons of options for interaction within your chat.
00:18:05.760 Now let’s explore some demo commands. My company switched to Slack, and here is the bot we use. For example, I can get an image from the bot with a command. When I asked for an image, the bot provided a link. You can also 'mustachify' users, which adds some fun to the interactions.
00:20:00.560 Another feature allows you to check ticket statuses by linking to our issue tracker. Hubot verifies that this is a link and replies back with the issue title, which saves you from having to click through manually.
00:21:47.920 We also have a feature that shares information about people in the company, making it easier to know who to talk to when you need something. If I ask who a person is, the bot gives me relevant information and helps me connect.
00:22:45.440 Overall, this showcases what you can do with your bot. The flexibility of Hubot means you can implement just about anything you want, increasing productivity in a fun way.
00:23:15.680 Developers love tooling, and we often end up spending a lot of our working time on tools. This is not necessarily bad; with Node.js uniting various programming language communities, we see a blend of skills and ideas that enhance collaboration.
00:24:30.000 I want to quote Garen Means, who wrote about tooling: "We need more engineers and more productive engineers. We don't need people wandering through issue trackers aimlessly." This underlines the importance of effective tools in our workflows.
00:26:01.439 I believe the biggest challenge in implementing a company-wide chat workflow is gaining everyone’s acceptance, especially from non-technical staff. Nonetheless, I aim to make these tools as engaging as possible so everyone feels motivated to take part.
00:26:40.000 So let’s level up your tooling. You can document your deployments, coordinate your work, and have a lot of fun with these chatbots. My name is Ole Michaelis, and I’m a web engineer from Hamburg working with Jimu. That's all I got. Thank you very much.