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.