 All right, so talk today is on scaling composed with Fizz. Fizz is a tool that we built internally to kind of help us with communication. So J.P. and with Compose, if you don't know who we are, hopefully you will after this talk. We're a fully managed platform for open source databases. So we have several offerings today. Mongo, Elasticsearch, Redis, Postgres, Rethink, etcd, RabbitMQ, and DiskQ. And this is a sponsored talk, obviously. So I did want to throw in a marketing slide for my friend Tom. If you go to compose.io.com, we do 60 day free trial right now. And we also have kind of a campaign going on. If you try out Redis, we'll send you a special edition Redis t-shirt. So Compose in 2015. So we're a company starting 2010 and 2015. We had about 20 employees, I think, and we're fully remote. We have a pseudo office in Birmingham where a couple people like to congregate. But for the most part, we're a remote team. And we span the United States and several other countries. So around this time last year, we were acquired by IBM, which was my reaction when this happened. And but since then, we've continued to grow. And so the green dots are all of our new employees since the acquisition. And what's cool is we've just continued to kind of spread. We're even more remote now than before. And I think we're actually doing a pretty good job of making it feel like we're one big team all in the same place. Just quick right now, is anyone else in here on a remote team? Or is pretty much everyone office? Got one, two, a couple of people are remote? All right, cool. That's good to know. So a breakdown of organization, it's primarily engineering. And then next to support and ops. And then there are other three groups are pretty much all the same. And it is not a typo. We don't have sales people then or now. So that's always a fun thing. And organization structure is a little different as well. We're pretty much all empowered to make our own decisions. We sort of choose what you work on and who you work with, and how you go about doing it. And so in practice, this is kind of what this looks like. And I'll kind of talk about this as part of the tool. But it's always a fun thing to see. All these lines going between each person represents things they've worked on together. And so you don't really have a cool way to see that if you're not all in the same office, where you really kind of get that day-to-day interaction. So we really try to do it with the tool. So breakdown of the app, obviously it's a Rails app. And the primary store is Postgres. And we use Redis for some Slack commands, as well as sessions. And then we're actually trying out DiskU for ActiveJob. So it's sort of the backing store for that. And so kind of have a checklist. So if you kind of break it down, one and two are sort of going to be the core of what Fizz is. And then I'll talk a little bit about what's not a project because we don't do project management, which is always fun. And then four to seven just kind of help you with your day-to-day. Kind of help you get insight into what others are seeing and what they're doing. So the first thing is what's everyone working on. We get this a lot. Even though we have this tool, people are still want to know what others are doing. And they want to know what they're doing, not just within their own group of engineering or marketing. They want to know what's going on around the rest of the company. So the first concept we have is called Posts. And the tool tries to help you remember people's names. Even though there's only 40 of us, it's still not easy to remember all the names associated with each person. So as you're typing out a post, we do give some help there. And here's just a couple of example posts and go into more detail about those in a little bit. So when I had and then when Matt had earlier, and then they're not all serious either. So the other thing is there are things that happen throughout the day that are kind of you would normally share in a work environment, whether it was you had to deal with something with the wife or you had to deal with something with the house. In this case, Kyle had to deal with IBM. And so he felt that that was worthy enough of a post. And so here's kind of our general rules for posting. Emoji, strongly encouraged. You should mention other people. I shamed Michelle earlier today for not always including other people in her posts. But the idea is you want to be working on stuff with other people. And the only way that someone's going to know that is if you mention them in a post. And then we feel like we've made hashtags cool again. Lisa, who's in our marketing and analytics group, loves to use the hashtags. And it's kind of like GitHub Markdown. Most of it's pretty much supported. You can do lists and code Markdown. And we want to be posting often. Ideally, you'd post once or twice a day. Maybe when you get going in the morning to talk about who you're working on something with or what you're doing. And then at the end of the day, what you have accomplished. If you go more than two days, except for the weekend, the fizz bot will heckle you in the general channel of Slack. So you will be shamed if you do not post. And the other thing that we do is we kind of like some interaction in the tool. It's not used that much today. But I think as we continue to grow as a team, it's going to be something that we use a lot more as the threadable post. So you can comment on the main post, or you can comment on someone's comment. And you can also like a post, which is something that we felt like is pretty good. And I have an empty slide in here. I don't really know what happened. So that's kind of the general concept of post. Everything's really built around that. It's simple. It's to the point. And it really kind of highlights what you're doing. But the other thing is people often do grunt work, or they do work behind the scenes that no one ever knows about, except for maybe one or two people. So we wanted the ability to make that known and make it easily seen. So we have a concept called praises. And it's just in the same post form you just prepend it with slash praise. And it basically gives credit to that person. So a lot of times what I see happen is people are head down working on something. And they actually forget to post for a couple days. But you may notice that. And so a lot of times people try to take the time to praise that person. We also praise people for going on vacation and actually taking time away and being on vacation. Because the hecklebot doesn't really know what vacation is today. It's one of those things we're hoping to get in soon. And you're not supposed to be able to praise yourself, but there's probably a bug in there now that somebody did earlier today just to test it. So here's just example praises. These are also work-related a lot of times, but not always work-related. They have a slightly different styling. And the biggest thing is you want to praise at least one person. And the next thing is a project. So is anyone a project manager? Thank goodness. OK. So the idea with project managers is a lot of times they're kind of the keepers of the communication. So you're working on a project. They're the ones doing the status updates. They're the ones communicating whatever it is you're working on with other people. We don't have that because we don't really do typical projects because we don't have managers. Teams self-organize around a single goal. A lot of times that's whether it's a feature release or even a bug fix. And even then, when you're kind of gathering around a central thing, we don't have leads. There's not someone that's like in charge of the project because it's not a project. We also don't have due dates, but that doesn't necessarily mean we don't plan for things. So what's kind of cool with the fizz is as you're working on something, it's a lot of times you can really see when something's almost finished because people are basically saying, you know, about to wrap this up. And the biggest reason we don't have roadmaps, we kind of every day almost we just really evaluate what's the most important thing to be working on right now, whether it's for the customers or for internal support. And we really try to base all of our work off of what's most important right now. But that doesn't actually mean that we don't do email with this. But that doesn't mean there's no communication. We have a special tag called Noteworthy that DJ, he's one of our writers. He basically takes all the posts that have used that hashtag in the last couple of days and he'll generate an email for everybody. So what we call these are actually milestones. And they're very simple and short and to the point. And you don't really like complete a milestone. You can join a milestone at any time. And when you're done doing whatever the work is, you just move on to it. Move on to something else. You don't do more than one thing at a time. So milestones, you can't really be a part of two of them. But you can work on another project or another milestone without actually joining it. So it doesn't prevent you from helping others out and you can kind of reference that in the post with the carrot symbol. So if you did a post with carrot 32, it would actually be attached to that actual milestone. You see the goal is always very simple and straightforward and something that should be accomplished within a week. Very few milestones will span more than a week. We don't really, I don't know if many that have gone that more than two weeks really. So I've mentioned hashtags a couple of times. And what we really use it for is a way to give context to posts. So we are able to basically take a post with one or more hashtags and people and aggregate that information to give context around whether it's a central function or a central group. So we feel like we've made the hashtag a thing that people use in the workplace and it's not gonna get shamed for. So we use them a lot as a shocker. Marketing loves to use hashtags. No big surprise there. But every group kinda uses it. And so what this shows is basically all the users that have used this hashtag within the last several days. And here's some example ones. Lisa is probably the most frequent hashtagger in her posts, so it's always fun to show hers. And then on the top hashtags, that's on the each person has a profile and so you can kinda go see what are the things they spend the majority of their time on. So this is mine and so it's mostly engineering related stuff. And then we also have it hooked into Slack where if you use with certain channels you can set it up to where if somebody includes a hashtag like marketing, the marketing channel. But every post, no matter what it is, will hit our general channel. And we feel that's important because a lot of times you wanna read back through when you're out and we also built some new stuff to where you can basically be gone for a week or a day and you can easily kinda get a feed of what all has happened. So the last thing you kinda saw earlier is connections. So one thing we don't have is obviously really organized groups. We have general engineering, we have general marketing and we don't have like product development. We don't have, you know, our UI group even though still we're all engineering. And so without giving context to the work that we're all doing there's no way to see like something I'm doing is actually applies to another group. And so that's where connections come in. This is where I thought it would be kinda fun to do a little show off some part of the app. We create what we call edges. And so we use a common table expression in Postgres and so we can do some recursive queries. So what we're doing in this one is we're taking all the mentions and the hashtags on posts and we're kinda cross correlating them with one another and then we group them and then we use that in this select query where we create weights. So it's basically saying these two users have done something together within some certain frequency and it kinda creates a score. And then we kinda throw them in a hash and return the nodes which is just each individual person and the edges as well. So here's kinda what the edge would look like. You'd have the ID, you'd have the two users and then the weight and then the other bit is the nodes which is just each individual person. And it kinda gives us a really fun graph of the company as a whole. And so to us this is what a healthy working environment looks like. You don't see a lot of siloed people. You don't see one particular person doing a lot more than others. You don't see, you know it's basically you don't wanna see any outliers and we feel like that's what this shows and it really no matter what the view is, you know you don't really see it. This one kinda breaks it down so you can see each individual person a lot better. But even the links, you know they're, it's hard to see them, I think it's the slides. But we feel like, so one cool thing is banks who's kind of in the middle there, he's been around for I think a week and he's already got connections to six or seven people in the company. So it's a really cool way to see, if you've got someone new, are they getting involved? Are they kind of diving in? Are they working with other people? And we feel like that helps us a lot. So the next thing is Slack. It's kind of our lifeline within the company. When you log on in the morning, you kind of hop on Slack and sort of see what's been going on right now. You may wanna read back through. But all of our posts, they hit general and these are just some examples of things that can happen throughout the day. But a big thing that kind of people talk about is fear missing out. If you're on vacation or if you just wanna take the day off and you kind of wanna know what's happened, what have people posted about, you can go to the app and scroll back through it. But what I've found is that I spend the majority of my day like Slack is there in front of me. I'm not kind of jumping into other tools a lot. And so if you just, we have special slash commands. So you can do slash day or daily summary or weekly summary and it'll just dump in whatever that range is for you. And then so you can easily kind of read back through it and since it's a slash command, you can delete it. So it's not gonna clutter up your main channel or wherever you post that. So the last thing is GitHub. So this is something I added for engineering and specifically almost kind of selfishly for myself. Because I'll be working on something and I might go a day without posting. And so as I'm finally getting down to posting, I'm trying to think back through like, what have I done? Like, I know I've worked on more than one repo or I've spent a lot of time reviewing someone's pull request. These are all activities that we want people to spend time on, pull requests are vital for us. It's kind of how we do all of our, it's how all code gets deployed and issues as well. We have a central repository where support will just file issues with information from customers about bugs and then so that's work that we can then correlate from support and then engineering will get involved and anyone will get involved with that GitHub issue. And so you wanna be able to kind of take all of this action that's happening in another tool and be able to kind of use it in your posts. And so here's an example of what happens in Slack. You can just run slash fizz activity and it'll basically dump out all of your activity for the last week I believe and it breaks it down and kind of groups it within each specific thing with a number. And so what we do here is when you run that command, the trick is you run it and you get some output in Slack but you need to be able to correlate that back to an actual post. And so when I was working with one of the designers he originally, the numbers were gonna correlate with the actual post ID and he felt like that it made more sense to just give a straight numbered list. So what we do when we generate this is we have a user and then we have whatever the number is in the sequence and then we just create, we dump a list in Redis and so when you use it, we can then pull it back out and say all right, they gave us 64 and 65. What post ID does that really correlate to? So when you do a post in Slack, you can just say slash fizz what you did and at the end you just throw activity colon and then whatever, however many numbers you are on there. And you'll see that those correlate to 60, I don't think I had it in there. So it'd be 64 and 65 in the list there. And so what happens in the post, the actual post, we try to kind of mimic it after, if you go to your user profile and GitHub and it'll show you a little breakdown of what all you've done, we try to model it after that and be able to actually link to the activity. So if someone posts something and you see some commits to a project that you're interested in or you work on yourself you can then go and take a look at it. So the other items we're hoping to add soon, we use HelpScout for our ticketing system and Trello, our ops team likes to use that and there's lots of other things that we use, we don't really make people, only use one tool. So the goal is for us to open source this pretty soon here. When we first started working on it, we were pretty lazy and with hard code things that really should be environment variables like our Slack token or our Slack channels or anything like that. So we're trying to clean up the code base a little bit to get it out there because we think it might be of interest to other people and it does use more than one database but we're a company who can help you with that. So that's all my questions or else all my talks, are there any, anyone have any questions or comments? All right, well thanks for coming. I'll be around afterwards and we got a booth if you want to come by and talk database or talk Fizz.