 to do that, but to also have some guardrails if you want in place to be like, hey, hey, no, like, you know, clean this up please, and then I don't have to feel bad because it's just a piece of software that yell at them, so I'm like, and usually, and usually what's cool about this is like if you're a group of developers that want to implement this, like you're kind of in it to get to do it, like it depends how you communicate obviously, but the way I manage people, it was always about like, hey, let's, don't we all want to build the best code that we can, like let's, let's give ourselves the tools and the way to do it, and that's kind of how I got into this idea of CI, and if we don't have too many questions, I could show, I'll have actually a kind of live example of CI that I can show as well, to just show also another kind of pain point that I use to CI, but well, it's more like continuous deployment, but I can show that as well. Yeah. Do any of the tools that you mentioned? Oh, that's actually a super good question. I should have mentioned that. So the question was, depending on the tools that I mentioned, Slack integration, I can't confirm, but I would be willing to bet my hand that they probably all do, maybe exception might be like Bitbucket, because they don't want to play nice with Slack, and they'll just do it for HipChat, but I feel pretty confident that they all have it, because it's just, we all work in Slack. I could definitely tell you that CircleCI has it, because I use CircleCI with Slack, but yeah, if you wanted to... Bitbucket does integrate Slack. Okay, Bitbucket integrates with Slack, so... They don't do anything else. Bitbucket would Slack. Okay, so we've already covered three, I know Mighty actually does it one from my research show, and Travis as well, so, yes, so... We did it, we did it to you. Yeah, so, yes, they integrate with Slack. Any other questions? Yeah, so with this kind of process, this is obviously for something in more of a team-based environment, but if you're like a solo developer, is this something that we can take advantage of? I'm trying to bring it up. I'm super bad at managing. I might just use... So, I think that's an excellent question. So the question was, what do you do if you're a solo developer? Like, why is this being useful to you? And... Okay, let me bring up the bearing. So I want to show a bit... So this is GitLab, CircleCI. So what is... This is... So recently, I built my first plugin on the plugin directory. I don't like SVN. I don't want to use SVN. And I wanted to do... To have this managed completely automatically. So I'm actually writing an article on this. It's not part of this one, but it'll come out probably within a month, where I explain this entire thing with CircleCI. But what this does here is... It runs... So this deploys your plugin automatically to the plugin directory. So I'm solo. I'm managing this plugin. I want to do... You release this and things like that. I want to automate everything around that. And do my testing. And do my acceptance testing. So this is actually what it would look like. This is what it looks like with CircleCI. So you start over here and it builds... So there's a separate process, because it's not tied to anything else. It runs on its own. But if you're familiar with the WordPress directory, you can have assets like icons, the label on top, the image on top. So this job here will deploy that automatically for you separately. But here we have the standard build process that I was talking about. So we check out the code. We're doing a bunch of things with it, so that if we continue using it, I use Composer. So pulling Composer dependencies, things like that. So that's all of that. Then runs code quality checks. Then we have what we call the CircleCI is a fan out. So at that point, once the code quality checks are passed, it'll run all your unit tests in the different PHP versions for you separately and it'll run them until there's a pass. And once all of the pass you send back in and it'll run acceptance testing. So I'll create a PHP. So I'm not sure here who's that familiar with that, but PHP now with PHP 7 has a built-in. PHP has a built-in web server that you can use. So I just start up PHP web server, make sure WordPress install my SQL database, and then I run some acceptance testing on my plugin to see is it doing what it needs to do. If it does perfect, I start deploying the plugin to the directory and that's all done automatically. So if I tag a new version, it'll run all the tests. If everything's green, it'll deploy that automatically to the repo. So that's an example of what you can use it as a solo developer. And I'll be writing about that specific workflow with CircleCI soon. I'm in the process of writing that article. Yeah. So is the code quality unique to this one? Or is that part of all of them? The code quality testing? Yeah. What about, is that atone, is that only on this particular C? No, the code quality is, so that's a big question. So the question is, is the code quality job here just for CircleCI? No, actually what's happening with the code quality step is exactly what I talked about earlier. So actually for that step, what's running is actually Grump. So Grump, I had it configured with a smaller range of tests to run for CircleCI. And Grump runs, checks my code for complexity, code styling, and all that stuff. And if that fails, then that job fails. So you could do that code quality, that code quality step, you could do it with Bitbucket or GitLab or all that, because it's just Grump. No, that's fine, that's why there's an article that you could refer to. I'll be tweeting it later, but I explain all these tools. And yeah, if you want to start with somewhere, like Grump is really the one to start with, because you can really use it as a foundation for everything else that goes after. Yeah, John? So if you're getting started with CI, and you look at something like CircleCI, and you have to get to set up a Catholic, number of containers and parallelism and all that stuff, what's a container? What do you need? What do you need to get started for something like this? Is a container a project, or what do you need to get started on multiple projects? So I'm going to try it. So the John's question was, what do you need to get started with this? So without getting too crazy in the technical, these are all kind of... This is all about one configuration file, but what's happening on the platform is it's all Docker. So it's all containers that are running your code in an isolated format. There's reuse that you can do, and I'll be talking... When that article on this comes out, I'll be talking at least in the context of CircleCI, a lot of those things that you can do because you can cache things, you can save things for later, because if you build your plugin in one step, well, that container gets destroyed after, so you need your code that you built to stay somewhere. So that's part of the configuration process and all of that, but really underlying it for all these platforms nowadays, it's all Docker. Yes. So the question was, what has passwords evolved? So this is a small security plugin that I built recently. What it does is that it actually checks... So let's say you log into your site and you're using a password that's appeared on a security breach before. It will either warn you about it or it will just flat out prevent you from logging in until you change that password, and then I check as well the password. So I don't like to be set a password to another broken one as well, so I check all of that when WordPress generates passwords. I'll also check those. So it does that, and then it also changes the hashing function used by WordPress to hash your passwords. So that makes it harder for malicious actors to decrypt your password if they steal your database. So that's what the plugin does. Yeah. Can you talk about code coverage and I'm not sure I've been told about it, but what maybe a percentage you would suggest would change? Oh, okay. So the question is about code coverage. So that could be a talk in itself, because again, there are whole new wars fought around code coverage versus like 100 versus. So I'm a pragmatic person and I feel so this is also a tangent. So one thing, I write a lot of object oriented code if you read my blog, it's like a lot of it is how to write good object oriented code with WordPress. So in the context of object oriented code, my view is that any public method should be tested, at least with one test. It doesn't, you don't have to cover everything, but you should cover at least one test. That's what I consider for me optimal coverage. Testing every private, protected method for like 100% coverage, I think is a bit of a fool's errand and not that useful. Other question? Thank you very much.