 Got here in 2004. I was just a strip and Pretty much what I'm saying for eight months before I went home Nice always get back and with that MG road actually twisted off the wall carry around your hand before there are a bunch of what you do Well, it's a very clever device. I Also have an Amazon Echo. We heard about some of those yesterday with the session very cool device I have an Apple TV Got some switches like that little Amazon IOT buttons this button some magic happens in the cloud I got to figure out how to hack that so it doesn't go to cloud But it's like a very cheap little button a five dollar button um And so the question I get from some of my colleagues is yeah, this whole my ot is kind of but what are you going to use it for? Why should you bother? What's interesting about this environment? What is the business case? Why would you bother doing this? And it's one of my friends in california who says this to me and uh, I did a startup with him And he started to ask that question I my answer is kind of like well first of all There's a high volume if you get automated houses you have a high volume application High volume of the devices that means the bicycle goes way down. It's cheaper and cheaper to do these things So that's why all these people sort of care about this because it allows you to get the device again And I think for in terms of ease of use if you can get to work in your house You really have tackled ease of use That you have you know various people that are not They're able to run these sort of things that make them work you can figure out how that works depending on the advantage in the marketplace And finally because we're we're nerds it's fun to play with it That's kind of what it is But I felt it was a bit disingenuous when he talked about why would you want to automate your houses? Because I pulled out my iphone. I'm gonna make you said let me sort of tell me devices you having your house He's got 74 things hooked to his network Every television every light switch hooked to the network. It's got 120 cables Running around this house looking things together in the region. He how he runs this house. He's got a three-hide wide rack in his basement Yeah, this is not your typical thing. Uh, I don't have room for this in my house My flat is really tiny So, uh, but by him saying it's not important. Well, look what he's doing This is pretty cool to live in this house and do all these magic things All right, so I think it is interesting for those Now because it's interesting for everybody wants a piece of the pie So you have all these guys saying I can control your house for you And of course you got amazon echo. Um, really nice device Uh, I went to the consumer electronics show this year Lots and lots of devices are hooking into alexa or have alexa mutations in there with the cool kids But equally as much is there were google reps running around everywhere Saying oh, by the way, look at this. We can hook this to google. Look at this I mean the little white uniforms and they were everywhere and they had little You know google stuff around them. This google basically says oh, that's pretty cool Well, I got a better device because mine comes in white Uh, I also come in some other colors. I'm way cooler than the amazon colors Uh, and pretty much they do a pretty decent job of that as well But they're not the only player At one point microsoft says I want to run your house. I'm running for your xbox This becomes your essential device It's kind of falling out of favor because it's not really programmability of this thing They always said I was in there. I could do this and they kind of never followed up with that So it became a bit of a non-player Um, the other guy of course apple says they do this and apple three a really nice job of Next thing you put this little tiny box. It's about yay big Um, put this in there and by the way because of the apple networking stuff I could sit here in bagel or my iphone and control the lights in my house through my apple It actually doesn't work I can actually do it that way as well. So there are players in this market as well uh, interesting enough, um Philips themselves put the little hue bridge out there and basically The original bridge allowed people to write their own code and plug their own devices And then of course the product owner says well, what you really want to do is sell only philips device We don't have the other guys in there So they did an update to their software and made it impossible to plug other things into it Which we just basically said is a company and it speaks. We're gonna play with you anyway. We quit They said, oh, you're not gonna play anymore. We'll put it back. It's too late You know the guys did so basically they had a chance to be that guy and they screwed it up because they closed So but it wasn't contender at some point. I mean one of the most fascinating ones I was came out Actually a year before it at CES and that is Samsung they said your refrigerator can be your hub And it was so incredibly clever because it's got power. It's got all the hardware in the refrigerator And they put this gigantic touch screen right on the door. It doesn't take any more space in your house And unfortunately this thing costs $2,000 But a very cool idea and it's kind of one of their items says I'm in there And by the way, touch screen is probably better than talking to an echo It's not how size it so I think they're like clever in that they have a new version out this year. I saw that Well, what a nice play Now you're sitting here saying, okay, well, which one do I hook my device in? Which one should I use from my house do all my devices work with all these other variations? The program we know that doesn't have a happy ending So there's a whole a whole iot iot morass at this point, right? Which one do you hook to can you do this or not? There are articles that we're talking about that This is one from you know, I've got a year ago now. I'm talking about the api clutter associated with this Of course, what do we do when we have api clutter? Well, of course we need to go middle way So now middle where it starts appearing for any your house And of course now there's six of those So we went from six devices to now 12 different apis So I don't think again, they're not helping us My solution is I don't want to play with that stuff. That world is just crazy. It's going to stay crazy. They're going to be fighting this stuff out Um, so my idea is I'm going to do some microservice. I want to play with my microservice and architectures Well, let me just fire all of these guys. Let me just kind of see what I can do myself With some microservices and why don't I pick microservices? Well, a couple of interesting reasons is first of all, I don't know what I want to do So I'm kind of in this fuzzy I don't know how I want to run my house and I don't know what device is coming next and there's all sorts of uncertainty around there So I'm kind of in that old graveyard space. And so it gives me some flexibility It also because there's very tiny little services I if something comes out and changes I can change that part of the system very easily Without necessarily affecting the other point. I like that sort of highly a couple of architects Because I don't want to keep rewriting my monolith around my house every time a new version of a device comes out And I'll sort of layer my functionality on top of that We'll see some examples of architecture later. So that's why I kind of want to play with microservices And I want to use asynchronous microservice in particular By asynchronous microservices, I mean the idea that they really don't even know about each other There's concept of very very loosely helpful services And we ran a workshop. I think on Monday this week Maybe you may have attended we talked about building a synchronous microsystem And saw how it highly becomes how easy it's right So one of the things I like to do with asynchronous microservices, first of all, there is not like synchronous It's kind of not like the Netflix thing where you have restful interface and all this stuff It really are just more like agent And they're very tiny, very loosely coupled, easy to deploy Don't have to worry about registration And they're actually very compatible with the concept of an experiment Because again, I don't know what I want to do. I want to try things out. The bad idea is I don't have to You know spend hours and hours recompiling stuff. I want to be able to turn off in a few seconds and say that was really a thing too Now it's sort of the analogy I like to use when I talk about the sort of asynchronous microservices It's sort of this model I call rip practice of the pond It basically, again, this is a picture I drew of my iPad one time flying across the country It's one of my fingers, so I do not apologize for your artwork. This is pretty good for me Well, one of the important things is, you know, basically you want to put an event plus in place So we're not going to have some some little my SQL database that has all my information In a centralized place, I'm going to have a centralized event box And that's going to be my quote data record at some level. That's where all the interesting things are going So the services don't know about each other. All we know about is the event box They do something interesting. They tell the event bus about maybe somebody cares. Maybe somebody does it Not my problem That's that loosely coupled So I have rapids rivers is actually the concept of taking a subset of these messages And putting them together for use of a service that makes sense And a pond is basically some sort of static representation Yes, I need to know exactly what's going on So perhaps if I'm doing this in a commercial environment, the pond would be your entities Who would be the things that says here's my email address from my client. Here's his phone number Here's his name. Here's how long he's been a client. That's sort of static information So the fact his email address is changing all the time is a series of events on the rapids This is the latest one. It's just going into the pond Yeah, that's kind of the analogy I'm trying to run so the key is an event bus Not an operational data thing And when you have this sort of pattern, you can begin to build various things for the things and this is called a deep pattern The idea is a service will somehow announce to the bus that it needs something And it says I have a need maybe I want to know if I should loan you money And I ask that question and I'll maybe a lot to me or let's do this question maybe not I have to worry about the case when nobody answers because that's probably the case at least in this algorithm So I kind of have a couple of guys here doing this And just the blue service maybe a person who's looking at your bank account He says wow, it stays positive. This is good. That's the regular deposit probably have a job So yeah, I think you're showing me money The green guy may be going off to one of the credit bureaus Again, these two services don't know about each other And I may have another service that says wow if you go to the university and have a postgraduate degree The prior better credit risk So let me go look up if I know that and vote on that basis Again independent services don't know about each other kind of voting on what they think should happen So nice nicely done. So these guys sort of give their best answer. You might be answering make a decision So a very powerful sort of model for doing very fuzzy things Because again, I don't know if either of I loan you money when you're ever going to pay it back I just don't know that's why it's fuzzy if I can absolutely determine that I could give you a really great interest I can't tell that's why I have a high So again need patterns different sort of patterns for asynchronous algorithm The nice thing about this if I have another idea for a better blue service I can build that better blue service deploy with this blue service still running to see if I like it And a bottle I don't tell the first blue service about don't have to tell the green one about don't even have to tell the yellow one about Again independent deployment very aggressive easy to change the system So by the way, if the green guy goes down, I'm still getting answers Maybe not as good answers I get but I'm still running. I haven't stopped So a very graceful degradation very powerful aspects of these asynchronous algorithm The nice thing about this sort of system then is I can build an incremental application I can sort of start out with something simple and make it a little smarter the next day a little smarter the next day You get this really powerful ROI commercially because between the time you start doing something to get your first result is very very very short an ROI is about how long you have to hold on to the money till I start my money back And being able to build a system like this is powerful One of the things we did in the workshop is we started building a little system Put some additional ads on the page of an existing website we had And so we put it a bit much in place and and put the service in there to put a message on the bus and ask for these guys to suggest advertising It was up and running in fact within a couple hours. We have a system that was up and running And then we made it smarter By putting more information about this customer now we have a better decision to make You keep doing this day after day and you get any better better system So the powerful thing is again incremental application In my house, I don't want to have to sit there for the next two years and write a system and then turn it on I want to turn it on now and then start trying to make it better and smarter and better and smarter Impatible for the league again fuzzy problem So what technology choices did I make for home again home system? I don't be too sophisticated about this I decided to use raven and q for my event bus I could use the copka bus, but I don't need all the complexity of coffee. I don't really need the persistent copka The raven and q was good enough I was going to use jason. Oh, yeah, there's some better compact jason stuff But I want to be able to see with the bits on the wire a little more and by the way, I'm not have a lot of messages here So jason I would not touch xml So it's definitely a jason source system Um, I'm going to use docker containers and probably some more although I may actually put kubernetes out kubernetes is getting pretty standard Um, I use docker containers one and at some point when I haven't done it yet I find myself very lightweight with the linux five Signals of closets somewhere and let them run my system. I'll probably have two of them for reliability Take all the time. So this is where I run my little docker stuff That's kind of my technology stack You got to make some architectural decisions as well one of the key architectural decisions is you know Um About designing just in time. I've been a fan for a long time of just in time I don't want to be up front and design When you get to a fuzzy problem, you really can't decide up front So you want to make sure that from an architectural perspective your respect the fact that there's uncertainty You make sure you don't have to lock that in. I do believe in architectural decisions It's just sort of have to have a fundamental idea that we wouldn't relate to the micro system That's the fundamental point So somebody's architect is right I wouldn't try to make it any other so you just don't apply as necessary In fact, after I started putting this presentation together I had better ideas about how to work my system and the next time I spent some significant time at home I'm gonna basically rework it so I'll need to line again again search Um, I want to build services that are behavior oriented So I don't like these concepts that it's these services where I'm the guy who under you know knows this and use Of this because you have to write some service that sucks all that data and makes a decision That's sort of a single point of failure. It gets really complicated I want a little service that do do something on their own each service does this little bit of job Very simple even working you create these sort of choreography of service. We'll see some examples of that in the club um The idea is basically view only search to make decisions They see some aspect that'll make a decision and they'll publish a decision. They don't worry about who's listening Just publish your decision. Maybe interesting in the future It's an idea we stole from google that's how google actually works internally as well Oh, we're gonna get reliably for our ability because i'm gonna build most messages that based on item post So the same message hits you twice. It doesn't impact. I'll do I'll still do the right thing But I want to ignore it. It's like a time. I'll ignore it. It's like a time You tell me I want the light blue. You tell me make it blue. It's already blue. I'm perfectly okay saying fine It's not an error That allows me to put redundancy in my services. I can bring two copies of every service for for reliability And this system will still work. I can bring another version up Work So again that principle comes very important as well So, uh, I need a little a little bit of framework associated with this and I run a microservice workshop Code for this by way is is public. It's on get my github account pretty easy to find It's a code we use in the microservice workshop So I got I got java versions. I got these sharp version. I have ruby version And the framework is actually pretty for straightforward. It models that uh idea of the african rivers quite easily This happens to be the job implementation By the way, I'm writing it in ruby. I went writing in javas crazy And most of you understand javas, so we'll look at it from that perspective So what you see here is uh, first thing I do is I set myself up a new service This will be hooked to a river Uh, so it's called the river. Uh, if you'll listen to four packets coming off the river Where I hope my service is And then basically I I established my connection to the rapids That's the rabbit in this case. That's the place. I'm going to be publishing my message Then I go in there and say well, these are the type of messages I'm interested in So I basically register what I'm interested in that's going to be criteria. I don't want the message In this case, I may say I want a message that says I want anything. It says that the source is a fill up to you hub Somebody comes from the hub. I want that message If it has I want to make sure it has the current state some light number of lights Counting and what the version is of that light service is Whatever the information is I can make sure I get that So basically if I get a message into my system, it has all those quicker traits. I want to process The processing API is basically I reach within for let's start getting the message I'm making new instance of the service and the service will start coming in Then basically I write myself an API here is for the interface is when a packet comes in and meets that criteria I get involved with this API And he's going to give me a connection to the same things back to what I care to Um, and the packet I came in with and if there's any sort of problems with the packet I get a little As well, so I make my decision based upon that message what I want to do with So that's why I just dropped the code in So again with about you know, 15 20 lines of code. I can have a service that actually looks at my system All right, so how do you use this sort of stuff? Well, first of all, you got to hook into this hardware So the hardware itself is going to have all sorts of variations Hardware will get updated and the new version. So I want to isolate that from the rest of my system I'll do that with a microservice Most of these iot hardware kind of have almost two levels of api The first level is kind of very primitive hardware It says the lights turn on lights turn off whatever Most of them have a higher level because they want to do more for you Kind of very dangerous because what they want to do what I want to do may not allow So in this case, it's called key which is sort of a combination of various behaviors So basically I'll put my event bus in place for having Q in this place And I'll build what I call these tier one services Which are just their job is to take primitive hardware and turn it into something interesting to put on the bus So I will control it to the tier one services. That'll be my interface to the outside of the world And that's again the iot hardware changes or by a new device. I need to bear a tier one service And again, some of the services will be services that The device and public results some will be things that change the device Probably two different services because they're doing two different things Don't try to you know gang these guys together club these things together into multiple services Separate them out if you possibly can't make this Uh, I will need occasionally some information about the higher level stuff. I follow those tier two services But by and large I want most of my my concept of tier two stuff seeing stuff Many things I figure out what I want So I really don't want to hook to the hardware if I can avoid it So once in a while in case I need to hook to the hardware we can't get to it otherwise I want to try to avoid that. I want my Aggregation to be what I want not what they define And then you finally have more interesting devices like these guys which I need to suck things out Turns out to be a press a button on this device I only get a scene check. I don't get some primitive signal So I have to that's one of those cases where I have to sort of pull for that thing You put that button and I'll have to do that. So occasionally I have to suck that data out All right, tier three services are services that actually really have more interesting behavior For example, I'm looking at multiple devices and trying to have a more For instance, I have a It takes up on the time of day I have a motion sector center So I walk toward the bathroom and it's the middle of the night. I don't want all the lights to come on I just want to leave me a little bit of light come on. I'll leave the blind lights on And that's kind of writing one of these more complex behaviors again a separate service It's very important to know what helps when you're on your system So one of the first things you write is actually a monitor It's here's what I'm watching you have all sorts of monitoring including looking error logs and the like Um, if something does go wrong in my system, I'm probably I haven't haven't anticipated But once something does go wrong and I figure out what it is I can usually write code to the detector the next time quicker So I call these error detection services Those that sort of pick that information up And you know once I sort of figure out how to correct this and I can make an important mistake It says if this error happens, it's what I want to do to correct it So for instance, if you bought close this power it comes back up And I'm like, oh, how do I do this recover? Well, I want to figure out what my light colors used to be and take all that back off again Do that I'll write that error recovery as well So this is sort of my taxonomy of the various services I'm building to make this thing work Now it turns out one of the problems you have with this with this use this that I kind of irritating is Sort of like the way this picture I got a video for this but it's not sure but It turns out if you have these nice color lights So I have I have a green light on this side yellow over here Who up here I turn off the light switch Power turn it back on again all the lights go white It's like white white white when you're picking right on color. It's like white It's completely forgotten what color the lights are and I'm like that's irritating I mean if I want to turn the light switch back on I want the blue and the yellow and green because that's what it was So I wrote I wrote a service to handle that for me This gives an idea of of how we put these together The one thing you go to see here is there's no sort of master service. It's sort of controlling reason No orchestration service What you're seeing is each little service person with this part do we create what I call choreography Where the idea is, you know, one of those services doing this Which looks really stupid by itself. Do you see the other guy doing this? So it's kind of like putting together. They actually have interesting behaviors by themselves I want to create this concept of choreography So let me do a little flow diagram. What's how this works. So I got my event bus The revenue queue got my new hardware nice hard device And I guess for microservices the only job is to figure out what the huge state right now is and tell the network So it turns out I have to pull to do that. So that's this job I'm pulling the huge hardware say hey, by the way, what color all of your lights Where is the motion detector being triggered right now? Just pick all this stuff back up. So this job is basically Pull that hardware and push that information on the button By the way, it turns out if the light is turned off and therefore there's no power to it I actually get from the huge hardware. I said, I don't know what this light is It's missing which is interesting information It's why I published that on the bus as well since I have no idea what this light is So all that stuff gets published on the bus his job is done Not that hard to write that code It suddenly happens to do a hardware in there API changes. That's all I have to touch Now I have another service that says what state the huge should be This job is I think I know what color y'all want you to be That's his job So if you hear something about a light being on the on the bus It says oh by the way, the light is blue and he says blue. Let's be red. You idiot And he will publish a message to make it red So in fact if the light turns on it's white now all of a sudden we discovered again, it's white It's like white dude. It's mostly blue. So it's a quicker from white to back to blue So that's all it takes to make that happen Again, his old job is I know what light supposed to be if you tell me it's not that but I'm going to make it good Easy to write this code And put put these things together and now I have for some light color We a little further I want to put scenes together have combinations of colors of light For example, when my favorite port team is on it's kind of like they have blue and sort of orange in their colors I want to go in my entire house people that are in Life actually wouldn't scores are happening. So I build myself a server that does that This is one of these scene levels So basically the pointy picks up the idea that you know I have a little switch that says I want this scene Of course that switch information goes into hardware. I suck it out of the hardware and put it onto the bus But it says oh by the way, this button got hit. Well when this buggy hit this light scene says, oh, that's my button So I'll take that button say, okay. Well, no these are the colors that I want you to be and I'll go color messages This guy frees out. Well, if you're not that color already, I'm gonna make you that color and off he goes And by way is now persistent color because if it goes off quite again, it'll go back to the right color Job over again. This guy. Let's just for a button. That's a bunch of colors. That's easy to write Even in java Uh, another thing I want to have is a dashboard I want to be able to sort of sit here and sort of have a little picture of my flat and what the lights are I want to sort of see it even sitting here And so what I'm doing is I write a little service that does that Sitting there and he's basically just listening for all the colors. So these are lights around these lights off You do what colors they are And I build myself a jason structure to capture the light information and push you back to the bus This job is over Oh another guy will pick up that jason structure and either you know do a web map or maybe to my ios device I haven't written that code yet, but you know the jason structure is there. So here's the current state of all the lights What do you want to do with this? No, no, but it's not his problem. It's a jason structure. Here's the current state of the lights So again, you can see I write these little tiny services very easy to work Again, it gets some really sophisticated behaviors of my house These micro services so fun to play with this sort of architecture So my observations from you know, sort of working in this sort of environment There's a lot of messages I'm pulling all the time pushing message out all the time A lot of these are not going to have any impact. I don't care One of the things that we do in these systems now you go ask netflix how they optimize their overall system Netflix. Oh my goodness huge company We got a huge footprint in the in the cloud Uh, they got tons and tons and tons of customers all over the world What's where they going to optimize for you ask them the answer is we optimize for programmer productivity We will spend dollars to be fast And to some degree that's my trade off here. I don't care if I have lots of messages. It makes my job easier Yes, they'll be way more sophisticated some of these services and save myself a few messages But why would I do that? I'd rather have new functionality because this works fine So let me take advantage of the fact that things are fast Uh, you notice I've not no needy restful interface There's no registration of services these services were independent of each other I didn't have to go send one message to the other guy back Which means I can sort of add services willy-nilly without reconfiguring anybody to worry about Very powerful concept as well Uh, there's no reason I can't play two copies of every service up Imagine I have two copies of each one of the services I looked at This doesn't still work the same So guess what if I look reliability Lennox boxes Painters no signal common gravity cues let them both try to hammer all the lights. We're pretty happy. I'm not writing unit tests Unit test think about the functionality. It's how hard is it sort of take a signal in and say feed me six white color I've been already unit test You think it's you can't get that right you can't get that right you should not be a programmer It's not that hard And if it's wrong Yes, we're actually pretty in place though because we're writing really complicated algorithms to writing these in these gigantic model lists They're afraid we don't understand the system But you can't understand the 20 lines of code again find yourself another job So things like unit tests which are very important for model lists and spiritual applications May not make so much sense for you're working in a complex environment Well, I think that my system has fast failure All right to fail and then fix it. I write better services rather than writing acceptance that's before I deploy So a very strange thing about the sort of microservice, especially a secret systems is unit tests go away except That's what we saw when we were doing these original microservice systems in London Is that we didn't have tests anymore? We went from no books to production systems No staging service no testing service No books to production We work fast We take advantage of that as well So, uh, if you sort of look at the processes associated with this you're going to see some interesting differences between Developing these traditional systems we're familiar with the agile processes and these sort of interesting little conflicts So if you look at the xp bias, this is one of my favorite list of things that are really fundamental to every organization that Is I go in there and coach organizations and transform organizations. I want to make sure these are all true And courage is particularly interesting because I re-courage is no fear trying to create a no fear environment And so I look for the fear and I try to crush the circle of fear So those are important And now if you're working in traditional systems, if you have values You wind up having these practices You stand up estimates duration and In retrospectives of the life You have these sort of a built well-defined roles A bit of talent to figure out what you need to do next And the architect, the developer, the roadmap to help you understand that the retrospectives It's a key way to make sure it all works and to help manage these customer roles When we're working in these complex things all of a sudden a different set of processes So if they're trying to do things in gratitude And in my experience in working with these sort of complex problems You know, this turns out to be the fuzzy practice They almost all go away This is why a traditional organization with great traditional practices Struggles moving into complex system problems They're trying to force this stuff into it In fact in the roles in particular all of a sudden these roles go away as well Um, you heard me make some presentations several years ago here. I talked about you know my anarchy Basically says solve these fuzzy problems What do I need to be or he doesn't know what I need either He doesn't know what to tell me to do because it's a fuzzy problem And what I need an architect for because I'm constantly changing the system That's a sort of implicit role of developer now in scrum master about process if we go to these stories We have a backlog doesn't exist either Don't need that guy Uh qa where we test what the system has built. I don't do unit test only go exactly So I'm sorry. What does qa do again? We're basically having a So I needed a customer that says this is what I'm trying to accomplish And the job of the customer now is not to feed me stories But to teach me the domain What's the domain? What are the key performance indicators? What a success me teach me your domain? Oh, my domain is really complicated. He tells Excuse me. Have you ever tried closure? You're trying to deploy the amazon cloud AWS tools you think your job is more complicated my job really Don't believe it. We can we can handle the complexity. Just tell us what your job is Oh, we have a newspaper. I'm sorry. How complicated is that again? You have articles? Oh, let's stop Um, so the number is the company developers and customers solve you this sort of problem The customer role is teach me your domain. What's important? Why is it work? How's it work? There's a case study from a project I worked on in 2006 again a London company Just sort of showing some of this stuff happen. These were the people in there By the way, I'm the I'm the Fred. This is George. I'm the Fred this case So we had sort of a traditional sort of team structure Uh, this is a ThoughtWorks project. I'm going to manage your tech league reality titles So Dave was actually the official project manager. Uh, George was the tech lead He was former great ruby programming. You ruby really well I was what just one of the developers along with George was the right code and we had a couple other developers as well Jerry was our business analyst This was our team and of course Matt was our customer Um, so this is what the official titles look like what was really going on is it turns out We were going to test the code ourselves the day who was a party manager says I'm going to do the acceptance test Of course the customer's doing as well. So we didn't need a tester. So we had that role recovered Uh, it turns out in terms of running the team and stuff like that If I'm in a project, I'm helping run the team. So I'm doing that I'm interfacing with the client directly about that. There's that gray hair gives you prestige Why right here? We'll see if it is that um in terms of being a tech lead. Yeah, I was actually driving I was the UI designer working with the customer about what he wanted. I was the UI designer as well And basically between Dave and myself and the customer and Jeremy. Uh, we did the analysis We did the help And in fact, Jeremy realized almost after the first week He's not important He don't we don't need this. We understand how to do that a customer says we need that so Jeremy rolled himself off the project So if you look at this, it's like, you know, there is no sort of Doing what they need to do So if you go back to sort of this you can look at agile stuff is you got stories and you have to structurally rolls which make a lot of sense Way into like your test driven development. You have the second test You go to get migration scripts. You've got to roll the database back and forth So you're playing the fuzzy stuff whole different set of things. You want to be focused on future level ideas It is all about what idea do you have to try to make things work? Oh, we're doing full second development What's the most efficient communication between two skills? It's because I know both things in two cases in my head It's way more efficient than trying to talk to my other guy Slows me down. So if I could do both jobs competently, I'll be an expert on competent I'm faster. We treasure full stack developers. We have a team fuzzy system Oh, we want systems that fail fast on their own A microservice is a wonderful technology because of decoupling and how fast you work in that environment I heavily recommend a synchronous micro for solving fuzzy problems He kind of means says I have a traditional problem. I want to use microservices. I'm saying I bother There's I don't see a competitive advantage for but you got a fuzzy problem. Don't try with spiritual methodology Oh, we use event-based architectures to help decoupling and we're doing continuous deployment We're doing this project in this system. We built in London. We are producing new kind of production every three and a half minutes You feel going to production every three and a half minutes So yes average average project size with one person average project length of four hours We didn't have a lot of planning sessions associated with that kickoff meetings and backlog and you know We're working that way you work So that's kind of the story of course more devices are coming. I've actually now ordered myself thermostat Again, that's a motion detector on view system. I do have to buy my Linux box There's also kind of a version of I want to kind of build excel for iot It turns out it's a really nice model for that out there already. That's I have ttt If this is that sort of architecture Which is kind of an architecture is pretty easy for every person who are described what they want to behave What I want to do is take that language and call it into a micro service And that's one of my one of my challenging projects when I have more time So that would be a nice thing, of course security is really important as well Because you know all these iot devices are very very happy and all the denial service attacks are because people are Thinking we're massive They're not well protected. So in my world, I'm basically going to do a couple things like that here First of all, I'm going to you know to get into my system. You're going to go through some authorization. I'm probably going to use the people authorization um But my rabid mq bus Is completely internal has no external ip address. It's a doctor container with no external ip address So nobody's going to hop on my bus. It's like these things that are pretty expensive And then we're going to set my own wireless hub only for the IP device. We'll not have any external ip The only way to get to the external world will be bridge a bridge micro service that gets me to the outside world You've all sorts of dedication So that's how I'll attack that as well I'm going to try to lock it down to make sure I don't get hacked Um, and what I really want to do of course now doctor rental raspberry pi We just really kind of cool What I really want to do is basically get myself Back of uh, you know raspberry pies this become my hub And I want to go to my friend in california and point out My size how big is your rack? You know, that's my rack and he does the same thing your rack So, um, yeah, I think it's very this is just to change the technology in just five or ten years That could be very powerful That's my story Thank you You know I've over I've talked too much so but I will be around today and tomorrow So find me if you want to understand more of this. Thank you again