 Give him a round of applause, you started? Okay, hello everyone, so if you feel it's a little bit... I speak a little bit soft so you can come closer. Okay, so before I start maybe I need to make a selfie picture first with you guys. I want to send my wife that I'm still working. Okay, so say cheese. Come in. Okay, thank you so much. Okay, I'll send her later. Okay, so my name is Frank, I'm from Vietnam. A little bit about myself, I'm kind of developer, a maker. Nobody. Okay, I think yesterday I got a lot of problems with the internet connection here so I need to get a SIM card and I got the internet connection from here for my device. So, besides that I also try to speak in some community event. I speak more about Azure and software development. So I'm thinking about, I'm speaking on the wrong track for today because here's more about hardware, right? But I'm talking more about software. And I'm also a community event organizer in Vietnam. I organize kind of events like Azure Tour XP Day, Extreme Programming, something. And my main job is about Azure Coach for a company named DEC Technology. Okay, so have you heard about Vietnam? Who ever been travel to Vietnam? Who not yet? Okay, so I show you a video about Vietnam. So that you can imagine. So very flexible, self-organized, self-disciplined. Okay, so here's our daily life. So I need to deal with it every morning and every afternoon. Okay, and, oops, sorry girls. Okay, so who's under 18? Because it's quite sensitive. Sorry girls. Okay, so my topic, the previous name. Are you killing Jenkins? But actually I will show you more about building continuous integration culture for your software team. So have you heard about continuous integration? Okay, that's good for me. So the first level I would say like push CI in place first. So in theory continuous integration was called by Ken back at a part of Extreme Programming. So he said you need to integrate your code into the main line. And you need to do it several times a day. And it should be verified by automated test and detect the error early, the bug early. So the early you find the bugs, the cheaper you spend for that bug to be fixed. Okay, that's the idea. So it's come to the loop about development, compile and test and integration and test more and integration more. So we need to chance the developer mindset a little bit. So it's not, it's not, it's a software development practice. And it should, the developers always need to think about it and you need to, it's a part of the development and you cannot separate it. Okay. So some good practice actually for this one I steal from the internet. They have more items but I remove quite a lot. I just skip some that are valuable and easy to practice. So you maintain a single source of repository of your code. So I'm still a fan of subversion, not Git because I feel that the branching in Git is too complicated. Okay, because I still refer single repository. And commit, the team commit the code more often, push more often, always integrate and the green, the green light is always on. Even when you run your unit test, it should be past and fix the bug immediately when it's broken and always improve. So this is the idea. Some good practice that have you to build up a good continuous integration. And who know this guy? Who know this guy? Okay. Who know Jenkins? Okay. So this is Jenkins in Ninja version. There's a guy in Japan. He's in charge of drawing every icon for Jenkins and this is the new outlook of Jenkins. Okay. So a lot of teams using Jenkins get the Jenkins involved in their development lifecycle. That a lot of people hate him. They kill him. So who's here create your email filter for Jenkins message? Wow. Thank you. Okay. So give him a big hand. So actually a lot of people doing that. Right. So who is developer? Okay. Do you create filter for Jenkins? No. Do you have Jenkins? Okay. That's good. That's good. How come we use Jenkins before we change the team city? Team city? Do you filter the team city message? Actually the guy who shut up team city, he doesn't make team city into channel email. Okay. He disable team city, right? Yeah. So that's the idea. So a lot of team involved the CI systems. And after that they filter the message. So they didn't get the error message early. And they didn't fix debug early. So that's mean the queue Jenkins, right? So to overcome this problem, so we create a device named hate. We call it hate. So this device will tell the developer only two messages. Hate. Your code is great. Hate. Your code is suck. Okay. That is two messages. And here is our first version. Okay. It's quite big. And we hang it on a pole. And we run it with a Raspberry Pi and a bunch of relays. So it's quite complicated and expensive. So around $100 maybe more for one system like this and just one team using. And after using this for one year and we come up with the new version. So here you can see a new version. So it's lightweight. I can bring it here and portable configurable and plug and play. Okay. And it looks much better. So we plan maybe within this year we can improve it a little bit and we can public as an open source as well. Open hardware and the source code as well. Within this device we use a very cheap. Cheap inside. So this is ESP A266 and this is for US dollar chip. So you can find it easily. So in Vietnam maybe it's a little bit cheaper. Maybe 3.5 because we import it from China. The quality is not so perfect but it's still acceptable. And it's already have Wi-Fi inside. So for this we connect to my Jenkins system via Wi-Fi. And this is the first prototype that we did. So the team try to make it try to visualize it by paper. They put one LED inside. It's not so fancy and here is the main board. They try to visualize the main board actually on that version. That is the first version and it have two layer of the circuit board. And for this one they improve it and we combine two circuit board into one single circuit board and it's much better inside. But I don't want to show inside. Okay. Here is the first version. It looks quite ugly. So the second version is much better. Okay. And the LED. The second. And we use our... We build a 3D printer by ourselves as well. And we print out the box for this device. And we use the laser cut machine. I borrowed from my friend to cut the top of the device. They are all open hardware as well. So you can find the design from the internet. Try to get the common cut with the laser cut machine. And you can buy some motor and some wire. And you can make it. And you do this printer for I think two weeks with five person. Okay. And here is the device. Okay. And after we have the device, so we try to create a culture that the team should use this device properly and have fun with it. So we create a rule. We name it 30-minute rule. So it means somebody proc the view. He need to fix it within 30 minutes. Okay. So if not, they will... He also need to do 20 of push-up. So they have... So our developer is very strong. Actually. Okay. And additionally, they contribute something to the team building fund of the company as well. We have the box. And they put some money in. And we can use it for some activity of the team. Okay. The team decide to use it by their way. Okay. And last but not least, I will make some demo how to use it. Okay. So this one is portable. So it have little hole in here. And it's like your Wi-Fi router. So you can use a pen or some small thing to press the button, small button inside. And so that this device will be reset. And you can see the web config like this. You can connect with and see the web config like this. You choose your Wi-Fi connection. And the Jenkins URL. And in here, each device can serve a five different Jenkins job. So you just fill in the job name. And after that you save. And the device after that is already config. So you can work with your project. Okay. So I... So in here I write a little bit code. So it just calculate the BMI, for example. So in here if I modify something in here. For example, I change this to zero. I run the test. And it's read. So if I commit this to... I also have... Let me see. Okay. So here is the Jenkins system that I built. And it have the project here. Now the code is perfect. So I try to commit this file. Okay. It's right here. Okay. Make it fail. And let's see. So my Jenkins is start. Actually press the Jenkins. It start building. And the device start flossing. So it fail. Okay. The last one is I think... Okay. So it make some noise as well. And if the team didn't fix the fail build. So it will alarm every 10 minutes. So the team need to pay attention to fix the build. So right now it fail. And I... You have 30 minutes to fix it. And maybe I should do... Yeah. No. I have only 25 minutes. Okay. Yeah. Actually our team is not so big. So X team have around 5 to 10 people. So they just like sit in the corner. So this kind of sound is enough for them. Yeah. Already enough to bother them. Okay. Make it... Break again. Break again. Okay. Good idea. Okay. I pulls. So that is much something wrong with it. It's running too fast. Okay. Let's see if this one is... Okay. It's building. So I put the code. This is my symbol code to GitHub. And whenever I push, GitHub will call to my Jenkins to trigger a build. And this will flashing. So for that device I don't trust it. Maybe something wrong with it. Okay. So now it's break again. Okay. So that's... We are nearly there. So for who using Jenkins, so one plugin that is very important for me, that is BlueBall. It's been default Jenkins using the BlueBall, but I refer GreenBall. So it's much better. It makes sense for me. So for who using Jenkins, please install that plugin. Okay. So that's it. So any question? What kind of sound do you want like playing some... Help me, help me. I think it's possible. It's possible. So we need to change... As I remember there is one... We need to change the chip inside as well. There's another chip that's supposed to... That can have to play some mp3 as well. You can record the sound, the voice, your voice there, and you can play. It's not so difficult. Any other questions? Yeah. Can you say how this scales out with the emerging things like playing kind of... concepts, basically it's for the GitHub, like where you can build all your branches, just with one integration with the GitHub or the product, and the stickers that are reflected on the repositories in a full request, do you think about how it will scale out with that kind of... Can you repeat your question? Yeah. So my question is like... the GitHub and the Jenkins integrations, now they are coming to the new world pipeline. I'm kind of an engine concept, so it can be done all of the GitHub types of branches, and the stickers can be prepared on the branches that will be performed. So some things go to... are using in that integration, how this particular scales out with those... with the drawing. Yeah. Yeah. So the idea is that... our project right now is getting more and more complicated. It's getting more and more complicated. So... but we still... the idea of Azure R2 is doing something small. So we try to decoupling our system more online so that we do something small. So for this unit should be done within the team side. And for... for some... in a bigger scale, we can do a slight integration for the whole product, for example. So in my colleague, we do quite a few products for telecommunication... in the company. Very big company. So the system is very big. So when I jump into the project, I don't know where should I do, where should I go, because it's too big for me. And within the team, we can use this. But for... it's like for the company department scale, we have like 1,000 people. Not only in our company, but the other provider of the customer as well. So around 1,000 people. So we need to make some web portal without integration as well. It's so very detailed about the integration. And also, this will tell you which nodes will be failed. Because we build a system based on a lot of nodes, a lot of nodes, of the server. So... In your own way, make request to the Jenkins server to ask, what is the station of the... Not really. So in Jenkins, it has an API. And they publish this data here, the API. So this one is just connected to the internet. And when the Jenkins change their status, they will put a room to this device. So, it's configured. Yeah. It's running via STTP. Can we have like two different LEDs, like current strippers, okay, green and then... Actually, it's possible. It's possible to do that, but we just want to make it simple. Like, red and green. So, your code is great. And your code is... Yeah. What kind of language do you use? So, for ESP A2, we use kind of C++. But it's the same library with AntuNode. AntuNode library. Look like C++. So, Jenkins and the device will connect via Wi-Fi. Jenkins already provide that API. So, in Jenkins, they have the API to public the Jenkins status. So, this is why we just need to do some programming on the device. So that the device can call that API. And we put some configuration on the website that I showed you before. It's like the URL and the job name. So, the device now, where should this go? So, it's calling the REST API Yeah, the REST API. Exactly. Jenkins is quite interesting. The UI is not so free. It's acceptable and the most important thing is free. Any other questions? Anybody want to buy it? No. I forgot to mention. So, the e-haul cost for the material I think is about 25 years. We have to make a filter for this also. Just for you. I still want to make some improvement about the device and after that maybe we can we are thinking about putting it to the open source because our company also contribute for some open source project. We love to do that. So, this is like the project. We do it for fun. It's not our business. So, thank you so much.