In the in the program you might see that it says I work at campaign monitor. I actually didn't pass probation a few weeks ago with that company so I can tell you a story about where the quality coach role didn't quite work out but I'll be starting a new job when I get back to Sydney for mobile testing so my specialty has been mobile it's one of my passions and I want to show you a robot that I built in a two-day hackathon today so there was a there was a competition to name the robot first of all put your hand up if you've done an Arduino project before cool how about you know involved with mobile testing on some level there we go so there was a competition to name the robot during the hackathon so it was named Taffy McTap folks I'm gonna kick you off with a demo first this is Taffy over here I'm going to exit out of my browser go to my IDE or my terminal I'm going to start a node server on my local machine there we go go over to here you can you can see the there we go back over here and I will just type in this function so that's just a demo of Christmas Carol I built this robot as during a hackathon just before Christmas so it was themed with Christmas but maybe you can recognize the next next tune it's a little bit more complicated I just heard a bolt come off at least at least my prayers to the demo gods were answered and nothing exploded but I lost a bolt where did that bolt come from I don't know I have to find out later anyway so now that I've got the demo out of the way I'll go through the rest of the presentation it's an open source design based on tapster 2.0 it's all 3D printed you can access the source code was originally designed by Jason Huggins one of the founders of the selenium you know we wouldn't be here if it weren't for the amazing team that helped out with this you can see version one of the tapster in this image the configuration is a little different it's actually they're playing Angry Birds as well so you can use it to play video games if you like all the parts are 3D printed we had a at my previous company we got a 3D printer for to give away as a prize at a conference we were sponsoring but they wanted to allow the engineers to play with the 3D printer so instead of just buying one to give out as a prize we bought two one for the office and one for the conference so I was able to use the printer in the office for this just before the hackathon I also it took me about 20 hours to print most the parts note to self do not put things on the edge of the printer or else you might get some mistakes so they were printing off fine and this took I don't know 45 minutes but it took a long time to find out that it had started to go off the edges a little bit I also went to my local hacker space out in Sydney to laser cut some of the larger parts the base and the and the clear parts were laser cut rather than printed so if you have the opportunity to go check out your local space it's an amazing community and they're always full of really helpful people who happy to show you how to do anything there users and Arduino on the top and our three server motor configuration the three server motors are arranged in a Delta bot config this is often used on the industrial line maybe in a chocolate factory where you have to pick things up and place them with precision over and over again so that's why this design is is useful for this one users magnets and ball bearings for joints I'm actually just going to disassemble Tappy here and pass around some parts for you oh that's where the bolt came off I have to reattach the server motor later that's not going to work so Tappy is now armless you now have a piece of it in your possession it took about two days worth of build time I spent some time after work building it once I printed all the materials and I spent a day in the hacker space but it was surprisingly quick I thought it would take a lot longer than I expected to build it cost me about 300 dollars in parts which that's an Australian dollars that's about 15,000 rupees but I was trying to follow an American build of materials I ordered a lot of the parts from American stores and that increased the postage I probably paid about a hundred dollars worth of postage for most of these parts but now that I've built one it would be easier to I know what materials I'd need to find locally so I should be able to build that a bit cheaper and I don't know what the prices are for electronics are like here in India or if there's a market for Arduino or local suppliers for a lot of these things the play piano algorithm we hacked away in one and a half days I pay programmed with the developer while we did this exercise I thought I'd have a lot more issues with calibration it didn't take as long as I was expecting to build I thought the first thing out of the fence was was going to be just trying to get it to touch the screen and but most of the hard work had already been done runs the standard formata protocol on the Arduino chip itself that just allows you to translate whatever language you want to run on your local machine such as node or other languages and it just translates it into the Arduino machine code or assembly like language I don't really know this in details it's just the magic of the technology it was pretty easy to get up and running I'm running a node server on my local machine and it also uses a Johnny 5 API which is a JavaScript API for robotics internet of things it's been around since 2012 I haven't seen if there's been any local commits to it lately but it's all open source this is part of the if you go to Huggins's source repository for this this is some of the math sets involved for translating the rotations of the motors into XYZ coordinates so I didn't actually have to do the maths myself it had already been figured out we have you pass in your coordinates you do a little bit of maths either reflecting and rotating and then basically just palm out those angles to the to the server motors using a map function but this was all done beforehand so it was a lot I didn't have to figure out all the maths and the tricky bits myself if you know this is a piano layout and we're mapping each key to a area so for example we have the F3 key here and the black one here is the F3 shop put your hand up if you come from a music background we're going to have like a really brief overview of music theory in this talk as well so automation and music theory go hand in hand right so for that F3 key we map where it's pressed and where it's lifted because we want the robot to move from above the key before it presses and then back up before it moves to the next one it moves to the lifted phase and then presses and then back up so we've just mapped out the XYZ coordinates of where those keys are we did that through a lot of manual process using that go function we would just pass in XYZ and figure out where the button was on the on the key and and then just coded that into our source so it's it's currently hard coded it's not collaborate calibrated for the screen and so it's just just off my based off my iPhone 6 screen size so it doesn't accommodate different resolutions just yet but I did have a pixel at one point and the keys were close enough that it still worked I used the S here after the F3 to represent that black key the sharp key and that has a slightly different area this was the iPlay trombone so this was the sheet music for the Imperial March you can see that we have a lot of flats in the key signature that means I had to transpose this music into the keyboard on my screen size I had to transpose it into a different key I also had to convert all of the flats into sharps as well because I've written all the notes as sharps a sharp and a flat are the same thing it's just a different way of talking about it for example that that F we talked about the F sharp is also a G flat so they're pretty easy to convert you can see here that it gets a little bit more complicated and if you remember back to the demo of the robot it the timing wasn't quite right it can play the slow notes quite well but when you try to introduce more complicated timing it tends to stuff up a little bit and it was hard to get this to work I think the next phase for this robot would be to figure out how to get the timing more right because we're just basing each each bar has four beats and we're breaking each bar into sixteenths and then we're just mapping them back to the to the robot but you play a note for one sixteenth that's not in the same ratio as a quarter bar a quarter note for it and then we map each song into its own function and we pass in a string that represents the the music so for example here we've got a method called play advance and this means play the F3 key for four sixteenths of a bar this one here means play the G3 sharp key for one sixteenth of a bar so that's how we've converted music into code for this robot so how can this help you test in the grand scheme of things probably not that much I felt this robot as part of a hackathon to demonstrate how robots could be used for testing but I still haven't found any really good valid use cases other than bringing it to conferences and giving really good demos I was a contractor at Google Maps at one point and there was one feature where it could have made sense to do this type of testing so I was helping triage bugs that came through for public transport and one of the local teams in Sydney was working on a new feature that if you were walking up to a bus stop or a train station you'd get a notification alerting you to the talent table of that bus stop or train station within the next five or ten minutes so as you're walking around the city you'd probably get notifications of different commute notifications and the first way to test that is to try and fake your GPS location but the Android system underneath is too smart for that you can't just fake your GPS location and have this feature work it's a bit trickier than that and the way Google Maps models the world they have these beacons everywhere and so sometimes you actually have to walk into a beacon and then out of a beacon to trigger this feature so it introduced problems with testing they also wanted to do battery testing with this feature too one of the ideas I put forward with with how to test this on over a large scale because you needed the robot or you needed the phone to be moving if we just attach this robot to a Roomba and let the Roomba drive around the office for three hours getting in and out of access points while this interacted with the app I think that would have been one way to hack long-term battery testing for this feature if we wanted to but being able to do the same test at the same time on two different devices I guess would have been a bit tricky too but I imagine that's been one of the few cases I could use this robot for testing. I'll go through some lessons learned through building this the instructions to build were a little bit all over the place I don't think they were in a central repository on the internet I did have to find some other ones and there seemed to be a little bit of a mismatch they might have been based on the previous version of the tapster robot I probably should add some of my own instructions on the internet but I've been too lazy contributing to open source and and what not is is not high up on the priority list at the moment unfortunately but I printed too many parts but now that some of the parts are broken I'm actually glad I printed more parts but it meant that the builder materials didn't have quite the right list of things I needed to get going and the bolts that I ordered I had issues with the bolts I ended up because it was using an American build of materials all the bolts were in you like inches and the threading per inch and sizing and what not and we don't really you can't really go to the hardware store in Australia and get those nuts and bolts because of metric so I but I did just end up getting some bolts nuts and bolts from the local hardware store which were close enough anyway but it added that extra layer of I wasn't too sure what to do any questions on that I do have some bonus material that I would like to go through cool we are up to bonus material so now you can build a robot and you can automate whatever you like hopefully it's inspired you to play around with a little bit of Arduino my next Arduino project will probably be one of those autonomous gardening systems that can do the weeding and the watering and whatnot I think that would be pretty cool but so you can there's this question of sure I can automate all of this but where do I start how do I start my automation and go from there so I'm going to walk you through a visual risk-based framework that I developed with one of my previous teams to help answer that question so I will exit out of this one the previous company I was working at was called Tyro I'll just give you a little bit of context they do f-posts terminals so if you go to your cafe or your florist you use a terminal to pay for a card a card to pay for your transaction or a coffee whatnot they have a microservice backend they utilize test-driven development and pair programming was a huge part of their culture there so collaboration was pretty much part of their culture just as an example every machine was set up for pair programming so you'd have one machine two monitors two keyboards and mouse mice not what's the plural for I don't know but each each work station would be set up for pair programming and often the way this would work someone would drive someone would have the keyboard and mouse and someone else would provide feedback and then it might switch and change it's a really interesting environment to work in if you ever get the chance to so I'm going to get into the framework first you can break your app into flows for example say with a banking app you might do registration my video not working I guess not let's see oh no there we go I just needed to go back and so Darth Vader is logging into his banking because even Darth Vader has to charge on credit cards and he's going through the two factor authentication setting up a password setting up a pin now is in his bank account he has five hundred and twenty dollars you might want to transfer funds have a look through your previous history just to make sure that a transaction went through you might want to send off a contact us request if there's something happening you want to question something you can send off the contact us request and Tyra will give you a phone call at a convenient time you might want to change your pin might think your pins compromised so you went to your old pin you went to your new pin twice and logging in so we've analyzed all of the flows of our app unfortunately most apps out there don't quite have six flows but now that we've had a think of all the different ways throughout we're going to map these flows onto a risk board so on our x-axis we're going to put our frequency of use if something low frequency on the left hand side high frequency on the right side we're going to put our impact if broken on the on the y-axis and draw a nice little graph like this break it up into three areas and we're going to start with number one registration has a fairly low frequency of use it shouldn't happen all that often but it has a really high impact on the user if the user can't register something is gone terribly wrong so I would like you to pair up with someone you say hi we are networking at this conference after all and I would like you to map out the other six things that are on that sheet with someone there are some of these worksheets you can use up at the front you want to come on down we're friendly people we don't bite that hard oh so on the up here we have some sheets you're going to be using doing the same sort of thing that Sam has up here on worksheets up here to repeat your instructions Sam to move the sticky notes to do risk analysis on the flows we're just going to map them into where we think they should go do we have sheets up there oh yeah yeah all the sheets are up in the front here okay how we're going with that exercise hopefully by having a conversation with someone you realize that we have different understandings of risk we all apply our risk radar differently so it is perfectly fine for you to have a different answer than I do because the context of when I did this exercise is completely different to your context you're going to have a different understanding of where these things should go but for example transfer funds is probably a higher frequency of use of registration and also a pretty high impact if you can't get money out of your bank account you can't run your business you might want to view your transactions but maybe you don't do that as often and there might be some sort of work around you can also access previous transactions on the terminal itself as well so maybe you don't care so much if it's broken in app contact us you might even question why you have this in the app in the first place because you can generally access our our phone number from our website and give us a call whenever you need but there there might be regulatory reasons why that feature is in the app being able to change pin you should probably put your hand up if you've ever changed the pin on your bank account surprisingly large amount I've actually since I've been banking for 15 years I actually haven't changed the pin on my my bank account but it has a pretty high impact if you're concerned that your pin is compromised and it doesn't go through correctly that's a pretty major issue and being able to log in it's the first thing you do before you do anything and if you can't do this then shit has hit the fan to use an Australianism you might want to map different areas of risk as well so we'll give the stuff in the upper quadrant three stars to say this is really important we might want to focus our automation on these areas first because we think these areas are going to impact our customers the most if there's a bug in this area we want to find out about it first before our customers do this area you might give two stars you might go we might be okay with releasing stuff with bugs in this area as we as we iterate but we would like to know about them at some point and here you might question why bother testing this on a at least from an automation point of view what value does it add to have a UI test for the contact us request other than it gives you at coverage you might want to map other elements of risk as well this is only a 2d representation you might want to put like a sticky note or a color on something that might have security implications so number five change pin even though from a user's point of view it might have a low frequency of use it might have security implications so this might drive your influences around we might put more automation here even though we think it's a low-use feature because of security risks and here's an example of the one I used a Tyro it grew out to a bit more than six but this was just as we were launching our banking platform and starting to do our Android app as well we started on iOS but having this next to the board and when we were developing a new feature and going where do we think this fits in the grand scheme of things would help us determine what type of automation we might want to build for this before we've built that so it helped facilitate those conversations I've also used the key to represent others potential risks as well things that might have a financial impact or illegal impact from running your own business next we can break these flows into tests but I'm going to check how I'm going for time 20 minutes left okay I'll continue going thank you and I'm going to walk you through a whiteboard exercise to be able to think through your testing we're going to number our flow here for example our change pin we're going to walk through this one we're going to put an orange sticky note here to represent this one next we're going to go through our setup for the test what type of data do we need beforehand we're going to use the pink sticky notes here to represent that we need to be registered and we need to be logged into the app before we start this test so for example we need to be presented with the home screen the next thing is the going through the tests the steps and the checks I'm going to use blue here to represent a user action so for example we click on the hamburger side menu we click on the options tab and we have some sort of expected outcome I'm going to use a green sticky note here see menu list we see the screen and I'm going to continue through the process here so next I'm going to use blue we're going to click on change passcode we're going to click here or tap so shouldn't say click because it's an app and we should see the change passcode screen so from here when you change your pin in app you enter your old pin once and then your new pin twice what are some of the other things we could test in this situation the entering the same pin trying to change it to the same pin yeah session timeout is another good one incorrect old pin what do we do with that situation so hopefully you realize that there's a whole bunch of stuff we can do we could enter the correct pin and continue down the path we could enter incorrect pin and stay on the current thing we could enter a pin after a session timeout we can enter the phone in airplane mode and ensure the next network call fails and see what happens in the app we can also press the back button and go back to the previous screen without so all of these is it's it's really good for brainstorming for exploratory testing to do this type of walkthrough to go at each point in each screen what can I possibly do and and go it doesn't make sense to automate all of these things but for example trying to put your phone to sleep and then relaunching the app app you yourself doesn't really support this feature very easily or the X codes UI automation test suite doesn't support this type of testing either as soon as you put your app to sleep your test stops running and you it's it's kind of hard to relaunch that test but in terms of manual testing that type of test is fairly cheap to do you can invest a lot of engineering into doing that type of test but you have to question the value it adds as a we're going to go do a segue down more of a non-happy path case if we enter the incorrect pin we will see a notification saying that the incorrect pin was was entered if you continue then to enter it incorrectly two more times you actually lock the pin so through doing this exercise I've discovered a new flow I'm going to call it number seven lock pin I'm going to go back to my sheet there and and map out where I think lock pin fits into everything else but through doing this type of analysis I've discovered a new feature but this this test we're talking about here is about the change pin so I'm just going to take a note and come back to that later and I'm also not going to go all the way down the error path but I might just merge this enter incorrect pin once and then enter correct pin just to get that coverage over UI I think your UI automation should be just testing the flow through the app and this comes with some caveats of it does mean you have less tests they do get slightly more coverage but it makes them harder to debug and in my team we weren't reporting on the number of tests we wanted to reduce our build time our build time for our iOS app was taking 25 30 minutes and that was just too long for a fairly straightforward app and I wanted to try and reduce that down to maybe five or ten minutes through having this that our UI automation was very on point unfortunately the refactoring to do this type of testing it was never prioritized due to product development because developing new features is always always gets a high priority and then we continue down that test there just to just to remind you of what the colors here mean we've used the orange here to map back to our risk board we've used the pink here to represent data we set up before or during the test we might have to do a back-end config set up or change while doing some of these tests we've used blue here to represent a user action and green for some sort of check or success indicator and here's an example of going through that test in a little bit more detail I've used fat green arrows here to represent the happy path and the smaller black arrows to represent divergence or non-happy parts and then we continue from there but that's the the segue I wanted to take you down but yeah so have fun with testing and hopefully this risk framework gives you a little bit more of a framework or analysis tool before you deep dive into automation taking that step back and thinking about what do I want to automate first awesome thank you Sam


Another thing is it's even hard to find a qualified police officer to come to work You know, that's the hardest part about it all But it's very hard to force somebody to know as bad as times are right now people need a job and no jobs It's hard


Okay, we are rolling, we are rolling, rolling, rolling, rolling, well. Hello Claude, how are you? I am largely good. Yeah, you look good, you look rested, even though you said that you woke up really early. I did, but I went to bed extremely early, so... What time is early? I think like nine something. Nine o'clock? Life be life in right now. How do you go to bed at nine? How?  I want, I don't say I want my body to give up. But like, I've tried, I've tried, and I just can't go to bed at that time. I feel like the night is still young, like at nine o'clock last night I was watching Loki. Right. It's, come on, as you know, Jen, is it Jenzi? Jen, do you watch TV? Not really, I'm not going to lie. Every now and again, every now and again, I'm currently excited about geek out. Do I want people to say that I'm a geek? Just go on, we're all in a geeks. By the time people have seen this, I would have been enjoying the final episode of Attack on Titan, which I've been looking forward to since... Is that on Netflix? It's not, now it's on websites. I'm not going to say which ones. It's on websites, so when one doesn't work, you do it. I'm, of course, I'm watching it on completely legal websites. Of course you are. So, of course, as a little Biden citizen. Well, I haven't heard of it, but if you're saying it's good... Honestly, I think it might be the best piece of TV I've ever made. No, this is serious. No, I'm being deadly serious. I would actually fight people about this one. Wow, physically, verbally? No comment. Okay, well, it's really good to see. We were saying we haven't actually physically seen each other for a month. Yeah, just online meetings so far. Yeah, just online meetings, which, yeah, regularly. But, yeah, it's still lovely to see in person. So, obviously, you know, with these episodes, we really want to... Well, I really want to unpick, get to know you a bit more, let the audience know you a bit more. People just want to know what you're doing.  What have you been doing this past month that have not seen you in person? But before we get into that, I want to break the ice a little bit. I want to try something different, because, obviously, you're an intelligent man. You know, you're well-versed. You've been around.  So, I've got some riddles for you. I was thinking of the perfect ice breakers, and I was like, let's get a riddle. So, let's see. We're going to just do a few. We're going to start really... Easy, but you know. Okay, first one. What has to be broken before you can use it? An egg. Is that right? Yes! What, you see? Okay. Wow, if I had... I would be...anyway. Okay, next one. What month of the year has 28 days? February. Let me do one more time. What month of the year has 28 days? What month of the year has 28 days? Okay, let me just tell you. Okay, let me just tell you. All of them. Yes! All of them. Are you guys September or October? What? All of them. To be fair, the cameraman actually tried to give me a clue, so that's... Oh, my gosh. See, I'm so concentrated. I didn't even see you there. Okay, next one. What question can you never answer yes to? Never answer yes to this one? What? Okay, no. Are you asleep yet? Okay. Apparently. I would not have got that one. Let's do one more. No, no, no. I know. What goes up but never comes down? What goes up but never comes down? Positivitation, I don't know. Think about it. Think about it in your personal... Think about it in your personal... What goes up but never comes down? What goes up but never comes down? My meat. Wow, okay, that's good to know. Is that true? Your age. Okay. Yeah, yeah. I was hard, thank you. You're welcome.  No, I'm joking. Riddles are not the easiest for me, so it's actually quite nice to get somebody else to do them for a change. Do it on camera as well. I know, right? I want everybody a chance as well to think about things. Thank you for listening to today's episode. If you haven't already, make sure you sign up to our mailing list at dreamnation.co forward slash mailing list and from there you'll be able to find out about all the things that we have coming for you. But yeah, today I wanted to talk to you about something that I think you do really well. Yeah, I'm trying to give like, you know, three parts to it that's it, something that I think you do really well. I also see how much you put in to be able to do it really well. Right. And that is multitasking. Yes. Or juggling. Juggling a lot. For people that don't know, maybe I'm not going to be doing a whole intro about you.  You also have a full-time job. You also have in, you also mentor people and you've got Dream Nation and that in itself as well in the last five months, especially before the job that you got was intense. Extremely. Extremely. Intense. So, yeah, I'm really keen to kind of understand the world of juggling and I think mainly because I'm at the stage as well right now where I'm juggling a part-time job, freelance work as well as building my own business, it's like, I'm struggling. We've had conversations, you're like, are you okay? Yeah, I'm on the edge of burnout. I heard that. So, yeah, first of all, like, do you actually see it as juggling? Do you actually see it as multitasking? It's multitasking. Do I see it as that? I don't actually. Maybe because of the way that my life is organized, it all feels like different tracks that happen at the same time. So, yeah, to me, I guess technically it's multitasking but I don't really feel like it because I don't believe in multitasking. You don't believe in multitasking? No. Sorry? I don't. What are we doing? You don't? Okay, we'll explain. I don't believe somebody can do two things at the same time to a high standard. Oh, wow. Even when you are doing it, like, you're trying to, I don't know, have a conversation and make breakfast at the same time. What I've learned over the years is that all you're doing is switch between both tasks really quickly but it then means that you're doing both tasks below the standard that they could be. So, when I say I don't believe in... You've just got really deep. When I say I don't believe in multitasking, what I actually mean is that when I'm in any given moment in time, I'm fully in that moment. And I remember saying this to you when we first started working. Yes. Is that as long as you have me in a meeting, I will 100% be there. I'm not going to be speaking to you and then doing something online or whatever. Like, you have my whole attention. But the minute that meeting ends, whatever I'm going to next has my full attention. Yeah. Okay. Yeah, you have said that a few times to me. But I don't think I really took it as that you don't believe in multitasking because I think how do you, in that moment, give all your time to one thing, even though you have so many other things that are circulating in your mind that you need to do? Like, how do you fully... Because now you're saying it, I'm thinking, yeah, do I actually ever fully give myself to one thing? So, what it sounds like you're asking is, am I ever fully present? Or how do you become present? Yeah, I think that's what it is. And it's practice. So, that is literally what meditation is for. It's to teach you to be present in any given moment. But when you do things like meditation, we describe it as the practice of meditation because it's a skill that you continue to develop, but something that you do you need to also continue to get better at as time goes on. So, in my early 20s, I invested a whole lot of time into meditation.  So, it then means that it's easier for me now to be fully present in the conversation, in the meeting, in a task or things of that nature. Not perfect at it, but I'm much better than before I started. And the other practical thing that I do is if I do have an ideal task that does come to mind when I'm in another setting or meeting, I will write it down straight away. And the minute that it's written down in somewhere that I know that I'm going to come back to, then my brain can be like, it's safe. Let it go, focus on where you are right now. Okay, yeah, that actually does make a lot of sense. Okay, so being present then, what does that exactly look like to you? Like, being present in a situation, what does that, like, give me an example of one of the things that you do and that you're like, yeah, I'm completely focused on it. Giving an example would be hard. I feel like the example should be more how it feels to be around me. So you shouldn't feel like I'm distracted. You shouldn't feel like I'm looking at my phone or writing a message to somebody else or thinking about my next meeting or my last meeting or things of that nature. I'm very intentional about not bringing things into other areas. So even if the last thing that I did really irritated me. In fact, you've been there before when I've been irritated by something. Oh, yeah, of course. But you also knew that within an hour or hour and a half I had another thing. I was going to go and host an event. So I had to be 100% present when that happened because if I come to that event and I'm now greeting people with bad energy or I'm still irritated, people will pick up on that. And then I know that that will then set the tone for that next event, which would then mean that the energy of that won't be what I would have wanted it to be. So do you remember what I did? We were in the car and you put on some meditation practices and stuff like that. And then you're like, oh, I feel much better now. Literally. But I was also in that car and I didn't feel any change. I said, you didn't change internally or you didn't see it changing me. No, I saw it changing you, but I didn't. I'm trying to think, maybe meditation is not something that I have properly invested time into to grasp and understand because like I said, I was in the car with you while you were meditating. And I didn't feel like... So there are two reasons why. Well, three reasons why, actually. The first reason is that you didn't really take part in it in the sense of it was given instructions but you wasn't really doing them. So that will be part of it. The second reason why is because you was what you were asking. So if you remember, you were having to deal with some emails to do something else.  And the third reason is because I can now switch it on and off more easily because of the hours and years, basically your practice that happened before this point. So even if you was fully in that moment and practicing, it still would have been harder for you to get to that point. I get you. Outside of just work, I'm married so it's like... How I see multitasking and prioritization, stuff like that, is a bit different. Do you feel that... How is it for you? Obviously you're not married, you may be in a relationship or etc. But do you feel like not having that additional responsibility allows you to flex on how much you can be present with or how much you can do? I'll be exactly the same. You'll be exactly the same. How do you know? Because it's intentional. Although I'm not married, I still have many relationships, friends, etc. So I know what I'm like with people and I know the way that I think and operate in many, in different scenarios. And I know that when I'm with people, I don't change. I will always be present there and then. If I need to do something else, I'll let you know. So I'll tell you, OK, right now I need to do X, Y or Z. So if you give me 5, 10, 15, an hour, then I will be back with you. But right now I need to do this. It's actually one of my few pet peeves, is when people are multi-tasking when you're meant to be talking or spending time with me. Yikes. As a result, I don't do that too. Your quality time, what's your love language? Love languages, they are... Top two. I've got three. One is like, fully at the top, which is words of affirmation. Oh, seriously? I just didn't know. Love languages work in a way that what do you like and what does the person... Oh, I know. But what you also might notice is the thing that you like tends to be the way that you default to show and love to people. That's true. So one of the reasons why I can be so complimentary or take the time to point out when someone says something really well is because I really appreciate when people do that for me. It also really hurts when the opposite happens for me as well. And that's the thing with love languages. Much as they are the way to show you love, they're also the easiest way to hurt you as well. Okay, so... Words of affirmation was number one. Number two and three, they were linked at the same score, was physical touch and as a service. Okay. Quality time was really low and guess was literally zero. Quality time really low? I don't know. I don't tell you why, but I will say this with a lot of my good friends even if I go for months without seeing them it doesn't feel... There's no love loss on my end. I'll meet you and see you as if I just saw you last week. So there's never an issue from that standpoint.   So I don't need a large amount of quality time but when it's there it needs to be good.  Number 24, 2023 we will be hosting our first workshop of the year. It's going to be focused on helping you to become a board member. For more information visit the Dream Nation website at dreamnation.co that's dreamnation.co Okay. So back to the different things you do how did you... I know you've got a workshop coming up about becoming a board member but how did you decide the things that you were going to dedicate your time to especially because you would be quite stretched across different areas like when did you... how did you decide like okay yeah I'm going to make this decision to give my time to this I'm going to make a decision to not give my time to that what goes through your head? If I'm honest it's because I only have one objective and that is to make Dream Nation a success. That is the only when it comes to my career and the choice in my life that's what matters to me. So how do I become successful with this mission of empowering people to become practical dreamers and every choice that I make will be in line with helping me move further with that. So for example the board roles that I take on they're accomplished in a couple of things one it's an additional income stream which is obviously helpful for funding the work that we do for the vision of helping people to become practical dreamers because I realise that although I can give people information I can give people opportunities and things of that nature training etc to help them grow sometimes there are things in your life which are bigger than you that stops you from being able to pursue your dream and those will normally be systematic things or things on the societal level whereas by being a board member between positions where I get to work on people's lives they actually have a clearer pathway that if they choose to go and pursue their dreams now some of the systematic things are gone so that's the second way that being a board member helps and the last part of it why it's so useful is being a board member, especially because I started quite young has been equipping me with the skills that I need to be the best possible executive in the future so some people might have noticed I kind of skipped quite a few career stages in my day job because in my day job I'm the Director of Innovations sorry but I got there relatively quickly because and this is one of the things the recruiter said to me was combining my entrepreneurial experience with my board experience meant that I was a very safe bet to be able to take on such a senior level role within the organisation that I work for currently so I'm right now developing through being a board member I've been developing the skill sets to be a great leader because if I fulfill my goal for Dream Nation then it will become a public trading company and I would like to still be good enough to be the CEO of that company when it happens and the reality is we still do live in a world where prejudice does exist so as a young black man I am aware that I'm not going to be given as many opportunities to fell as other people will be that have the same opportunity so by the time I get to that point where I'm the CEO of a public trading company I need to be excellent otherwise I might not keep that position for very long so that's part of my training too that's a lot of pressure but yeah it makes a lot of sense life is that's life I really like what you said I really like what you said about basically everything you're doing is to further Dream Nation I think that it's such an important point because if I reflect on the decisions I've made in my career as well like if I've taken a job and I see that it's actually not benefiting me in the long run for the goal it's like okay that's a reason to leave but it has to be very clear what the goal is otherwise you're just going to be taking any opportunity it might further you financially but it's actually causing a stagnation or a distraction to the actual overall goal I know for me for example last year I actually got offered a really really good job in terms of salary and high level position it was the CEO of an organisation role that I was offered it was the CEO role that I was offered yep for a good paying job like I said but I turned it down and at the time it was significantly more money than I was making at the time and it looked like a great opportunity on paper but I understood that taking on that particular role would have derailed me because the people that I would have had to report to the board of the organisation that I would have to report to in all my research shows that they were not chaotic but they wouldn't have been a healthy working environment for me and I would have understood that the amount of pressure, stress and the impact would have on my wellbeing and mental health although I'd have the money would begin to impact my dream nation so if I were to now be stressed out all the time and then now have to be a boss to yourself or other members of the team and I'm giving you that energy you're not going to want to be here or if you was you're not going to give me your best so I did need to make a decision that although at the time hurt because I wanted to need that money it ended up working out for me in the long run yeah that's that's the hard thing I mean having conversations with people about when things look good but they're just not in your plan like it's very hard to decipher I mean personally I'm a Christian so I have my ways of deciphering but even in that like it can still be like okay this is a good thing and it can't you can see how many doors that it could open but it's but it's a destruction yeah and sometimes in life you're told that okay yeah but you know you go through things and you learn the lesson but what if this was not even a lesson that you had to learn had to learn like yeah so one other thing I wanted to ask you just to um yeah just to just to wrap up what what would you say is worth getting out of bed for wow what is worth getting out of bed for do you want me to give you context? yes please okay so I got a job opportunity it didn't do but um I went and asked some mentors in the business and they were like if it's worth getting out of bed for you should go for it and I was like I found it really hard to understand what is really worth getting out of bed for and in the end it fell through so I didn't have to make that decision but I've always thought like in this world of juggling and finding you know and taking on opportunities like how do I know that something is worth getting out of bed for I'm going to say probably if it does one of two things either it truly excites and fulfills you or it's very practical in terms of accomplishing a specific goal that you have right now because I would love to be able to say that every job you take on or every opportunity you take on is going to be fun and fulfilling that's a lie that's not how life works and if you go through life with that mentality then you're not going to succeed this is right on some of my mind because one of my mentees is I've been trying to shake this out with him it's not always going to be fun it's going to be hard sometimes so if the opportunity in front of you is purposefully forward propelling you then that's worthwhile probably not indefinitely you shouldn't be doing things that are harming you or detracting from you for long periods of time I don't recommend that but if it is accomplishing a part of your long-term vision great or like I said as well if it does fulfill you if it's making you happy if it is helping you to become a better version of yourself then that's worth getting out of bed for thank you for tuning in to today's episode we release a new episode every Sunday so make sure that you subscribe and follow us so that you never miss out if you would like some more inspiration while you wait for the next new episode then check out the recommendation above don't forget to follow us on social media or ask us a question or a dilemma that you would like us to answer on the podcast this is Club Williams, you've been watching behind the dreams and we look forward to seeing you at the next Dream Nation event


Computers keep changing the world, but their power and safety is limited by their rigid design. The T2 tile project works for bigger and safer computing using living systems principles. Follow our progress here on T Tuesday Updates. I'm Dave Ackley. This is the 19th T Tuesday Update. Let's get into it. We're trying to demonstrate how to build a whole new kind of computing, a kind of computer that can become as big as we want it to be. How do we do that? We do it by building an individual little tile that has display, processing memory, interconnect communications, everything, and that it can interconnect with others of its own kind. Next week is the 20th episode, which was the deadline to have 133 or more of these things manufactured and running together. We're not going to make that deadline, but we've made a tremendous amount of progress trying to get to it. What we actually will have to show next week remains to be seen. Last week, the goal was to demonstrate intertile software motion. I mean, once we have hundreds of these tiles, and as we develop the software, as we figure out exactly what kind of computational environment we want to provide to programmers to the upper level, we're going to need to be revising the lower level system software a lot. And the last thing that we want to do is to have to have put hands on 133 tiles every time we're going to make a change. The intertile software system, it's called the Common Data Manager, has the job of getting that stuff distributed out. We wanted to see it last week, we'll see a demo of it today. In addition, we have progress on manufacturing the cases, a little bit of information about the build materials. Let's go. All right. So, we've been working on revising the case design and trying to get a point where we could finalize it. I added a bunch of sort of industrial scaffolding look, because I thought that helped it, and I think it does. One of the things that I did, I should have done long ago, is now there is an identifying number that is derived from the time, when every time the build, the 3D thing is compiled, it puts the current time, which is the number of seconds, 1970 divided by 1000, onto the thing, because I've got these things all over the place. I've got these cases coming out of my ears. How do I know which one I'm dealing with? Well, now they have numbers. Here's an example of one. It's looking pretty cool, I think. Now, if you're a 3D printing person, you look at this first layer here, and you say, you've got a pretty severe case of under extrusion, because the first layer has not been sort of squeezed out to be completely flat. I kind of like this. It kind of feeds into the whole scaffolding, the look that I think I'm going for, I'm calling organic industrial, because that's really what these things are. They're really drawing much more flavor and design sense from living systems, from organic systems, but they're still manufactured using our industrial base and so forth. I kind of like the under extrusion in the first layer, we'll see how it goes. I started going for a manufacturer. I started doing four up, it's 10 hours after changing the layer thickness on Andrew Walpole's suggestion. So here it is, this is almost done at 9 hours and 52 minutes. Four of them are just about set, two buttons per. That's not all you have to do. So here's one of the earlier white ones with the buttons that have been put into their, popped into their little locking shaft. There's also these two glow rods, one on the west and one on the north, whose purpose is to carry the light from the light emitting diodes, which are down on the circuit board level up to the top of the case level, so that you can see it better. And having a lot of trouble getting the size of the hole for those glow rods, which are 1 eighth inch acrylic rod, to be reliable. And I don't really know why, so I tried to. So here it was, I was making some of them, cutting them off two centimeters each, or I think that's what it is, and got into a rhythm and I kind of made a hole back. So that'll hold me for a little while, although we're going to need more to finish the ring lotus, the 133 tiles. Here's just a beauty shot of one of these two layer ones I made, where you can see the glow rod in the north and the west. So I went to say, why can't I redesign it a little bit, so I could make the hole a little bit smaller, but then have kind of like relief gaps in it, so that if I had a particularly small piece of acrylic rod, I don't know exactly why these tolerances are changing. If it was narrow, the inner parts of the things would grab it, but if it was a particularly thick one, it wouldn't be that hard to squish the plastic back, because it would have these little gussets, these little cuts in it. And I screwed around with a lot of them, and so here's an early one where I didn't have very much of the things, and it gradually became more. Here's the west one. Here I am beginning to print out a one with a little bit deeper cuts. Here's a deeper one still. Eventually I actually moved the end a little bit away because it seemed like I was getting much more reliable grip, much more reliable sizing on the west holes than I was on the north glow rods. And so the west one looks very nice, but it's got nothing around it, so it's got nice scribbling magic marker from the under extrusion look, and so forth. And here's a west one with a glow rod in it. Here's a north one with a glow rod in it, and so on. So here, you know, completely assembled. It comes off, popped the two buttons in, put in the two glow rods, and now, oh, there's another issue, which is the actual socket holes to screw the thing down. Those are actually embedded so that we can use 25 millimeter screws when it really needs to be more like a 28 millimeter screw, which is extremely non-standard and hard to get. It's okay to make little holes in it, but since the thing is printed face down, where the holes end is sort of being printed over air, if you think about it going upwards. Two of my holes look pretty good anyway, and two of my holes did not look so good, and the last one looked really terrible. So in fact, I went back and I sloped the bottom better and made a bunch of changes, and got it so that the three of the four are looking pretty good, but the fourth one still sort of has that one thing across, but it's easy to pop it out with a screw when you first put it in. So here's another four. Do you see what's wrong with this picture? Yeah. What happened to the second button on this guy? It got some kind of crazy Hydra head, and I said, well, that's not such a problem. I will just go ahead and print some extra buttons. Well, no, not that simple. These buttons really have a tendency to come unstuck. So really what I needed to do was to somehow make the base a little bit bigger, but I couldn't make it actually bigger, so we make, you know, a brim. So I redesigned to add a ring around the bottom whose sole purpose is to provide additional sticking surface area for the buttons down and it has to be removed afterwards. I did a few tests. These are two different size brims. I went with the one on the right and a little more stick, although they both seem to work pretty well. And I haven't had a failure of those since. And so now my box of finished cases is starting to fill up. There's been a couple of more shifts in since then. I need to go into the office and pick up the rest of the PLA because this role is starting to get low. So that's the cases. On the through-hole parts. Now, we need to get those things to attach the Beaglebone greens to our circuit board. That's these things. They're 75 cents each, getting them from Adafruit. But worse, Adafruit only has 61 in stock. We need at least 150 or 200 sets to go. But they do give the datasheet. I poked on the datasheet and the datasheet mentions this 4U CON technology ink. So I did some Googling for that. And I found their website. And I said, yeah, you can sign up for an account and do things there. Of course, they were on Chinese New Year's for most of last week, so I really didn't get into this stuff until Sunday and Monday. So I don't have a whole lot going on there. But the long and short of it is, is yes, they have the parts and they're 10.5 cents each. But the minimum order quantity, MOQ, is 1,000 pieces. Now, we need 400 pieces max if we're going to say 200 tiles, max 2 per. And once you add in shipping, you're talking $237 for the minimum order quantity of 1,000 pieces. But that's 23 cents each. And hell, even if I just use 400 of them and throw out 600 of them, so it would be $237 divided by 400, that's like 60 cents each. It's still cheaper than getting them from Aida Fruit Plus Paint, not even including the shipping from Aida Fruit. So we're probably going to do an order. Of course, there's that lead time that's a little scary, but I'm hoping it won't be that bad. While I was there, I discovered they also have the part for the inner tile connectors. We need these things, the female headers that have these ribs on them to go into the things. And I tried to buy those from AliExpress. I had bought some, but now they seem to be gone. These guys got them. Definitely would be doing an order for that. But in fact, we don't actually need these things in order to send the order for the tiles off to ETS. So that's somewhat of a secondary issue. So finding4uconnector.com was a helpful breakthrough. I was wondering, am I supposed to feel bad for cutting Aida Fruit out of the middleman? I mean, they pointed me to it with the datasheet. I mean, in a way, this is the open source nature.  You know, I was trying to make an order for 4U Connector and their shipping was too expensive, but whatever. So I think they're okay with it. And all of the ones that have been built so far have been using Aida Fruit parts. So I hope it's okay. All right, moving on. The common data manager. So how can we get software to go from one tile to the other to the other without having to do it by hand? I spent a lot of time working on that last week. I spent time working on it this week as well. The first thing I wanted this week was a way to have user space, just unprivileged programs, be able to have an idea how well the packets are doing, how many bytes and packets have been sent in each direction, and a bunch of other statistics.  And we can then, an unprivileged, a regular old program can just read this thing and display information about how much stuff has been going on and so forth. But once I started trying to use it, I was starting to get these terrible problems that I was getting these packet errors from the Southeast and the East, and you know, the feeling, the sinking feeling in my stomach, like oh no, here come the errors again. But, and I ran it down and, you know, saying, oh, there are these weird similarities in different cases, and, you know, I looked in the assembly code, is it possible I did something weird there? But no, but no.  I made this error probably 40 years ago, and I made it again here. And it has to do with switch statements. A switch statement make a multi-way branch based on the value of a variable. The problem with a switch statement is once you finish one case, it doesn't automatically jump to the end. It falls into the next case. The code that I was starting with used to say return, so that's not a problem. But now that I added the statistics, I couldn't return yet because I needed to do extra code afterwards, so I set a variable instead, and I forgot to put in the break statement. So this is the fix. That's just the nature of programming.  But nonetheless, I got through that. Things started working again. I wanted to be able to do some graphics on the screen using purl scripts. I found this thing called Graphics Frame Buffer. I'm not sure if I'm going to stick with it, but I did get it to manage to get it to work. It's got test patterns. You can draw, text, and so on and so forth. So I'm using it now. So let's do a demo. All right. So here we have, once again, we've got the gray, blue, and red corresponding to the black cable, the blue cable, and the red cable. We only have four tiles here today. But these tiles, because I didn't get around to updating the code in this one yet, but you know, it's good enough to get the idea. And so they're all running the more recent Food.ulum sketch, which is really kind of going too slow. It may just have to shrink the picture down and not actually update the whole thing. We'll see how it goes. But this has got a lot more coolness in it. And so in particular, we now have, oh, here it is. CDM, the CDM directory is the common data manager inside it. There's a sub directory called common. And the idea is that everything that is in any of the CDM commons on anybody should be in the CDM common sub directory on everybody. And so these guys all hopefully have all the same stuff in them. It looks like they do. And now here's another neat trick. It only works for these two guys. But if I push the user button here, it takes a few seconds. But let's cross our fingers and hope for the best. Come on, buddy. All right, that guy worked. Did I not get it on this guy? Let's give him another push just to be sure. And I don't know what's going on with him. Well, but we can go with this guy. So now what he's displaying is that's the same in the packet packet statistics that we saw but now they're being visualized. What is with this guy anyway? That they're being visualized by little arrows going in and out the edges. It's a bummer that that guy won't do it. Here's what I'm going to do. I'm going to fake this thing out. Suppose I take cdm and I copy it to not cdm 11.mfz Now at the moment, it's actually the exact same file and the thing actually underneath the hood it does do checksums and cryptographic checksums and all this stuff. So it actually has ways of knowing that those are exactly the same file but at the moment the code is the cdm code is not sophisticated enough to recognize that those things it goes by different names. So in fact, hopefully what's going to happen except for the fact that since this guy didn't do it it makes me wonder if maybe this guy is stalled out I suppose we could check. Uh-huh. Uh-huh. Yes, it looks like he appears to not be running for some strange reason. Maybe we could start him up. Uh-huh. He must have died. Okay, well good. We're dying but we get to see a little war. When we first started up it reads through common and figures out everything that's in there and then once it's done that it goes into the neighbors. I have this, it has this checksum and so forth would you like it? And now that we actually have done this now I bet this will work. Alright. Okay. So these are the only two that can do it because these are the only two guys who have the user button wired up the correct way. These other two are just old ones. But now with luck this guy is going to announce oh, there we go. So right here you can see that he's now feeding a significant number of bites to get bigger arrowheads for more action. Uh-huh. And now he's feeding it up here to this guy and maybe he's about, maybe he'll start feeding it over here as well. It's all kind of randomized what order that it happens to do things. Eventually either this guy, he'll either feed it up this way or this guy might in fact feed up. Uh-huh. Well let's take a look and see among the ones that we're actually doing here. So it's not CDM-11. Look at that. There's not CDM-11 and and not CDM-11. So we can't talk to that guy directly. Someone will feed it to him soon enough. Uh-huh. So that is intertile software mobility. So we're going to take different purposes, different gathering up of stuff, wrap them up in MSC files, dump them in CDM common of any tile and it will propagate not fast because it's a background activity. In fact the MFM engine has been running this whole time in the background even though we took over the display to show our statistics and run this thing. The engine was still going. Pretty cool. Uh-huh. So that's the progress. Oh and there's one other interesting thing. You know one thing about common data management is what do you do? What happens? Suppose I don't really need not CDM-11. Suppose I delete this. Let's say I felt like cleaning up. I'll just delete it. It's wicked hard to delete files on this thing. This looks exactly like the state that we were just in. The guy hasn't got the file and in fact it probably won't happen before we're done with this video. But the other guys will just feed it right back in. You either have to do it all at once you have to delete from everybody by hand or you have to do something more sophisticated and we will do something more sophisticated but we're out of time for now. So what's exactly up for next week? We'll find out next week. Thanks for being here. Thanks for watching. Thanks for helping out. I'll see you next time.


Welcome to JSATV, the newsroom for tech and telecom professionals. I'm Jamie Scott-Okitaya, here at Telecom Exchange NYC Fabulous Hotel, W. Hobokim. Joining me here today, I'm really honored to have Mr. John Barnacle. He is the president and CEO of Peerless Network. John, welcome to JSATV. Thank you. And this is your first telecom exchange, I want to say? It is, actually. Welcome, welcome. We're proud to have you. Our viewers may not be familiar with Peerless. Let's correct that right now. John, tell us a little bit about your company. Fair enough. We're based in Chicago. We are a voice services communications provider. We offer a full range of services to anyone from large carriers, to voice providers of all shapes and sizes, and a growing number of enterprise customers as well. So we have a national footprint, and then including some international points of presence. And we're always looking to expand our service portfolio and footprint. And talking about expanding, you just had an announcement about your agent channel. Can you tell us a little bit more? Yes. So Peerless has been in service since 2008. We've largely been in a wholesale realm, providing services to those carriers and other service providers. We have 1.4 million plus SIP trunks in service, for example. As we decided to bring those services to enterprise customers through an agent channel, we realized that a lot of the things that we did in bulk for large customers weren't going to cut it for those folks. So we developed a self-provisioning portal that agents can use to satisfy their customer needs. We knew that they would need more visibility, more control over their services, because they were going to be ordering things at a more granular level. And so our folks are very talented developers. They developed a portal that overlays on our network and all the other systems we've built over time. And we unveiled that at the Channel Partner Show in Vegas last month. Yeah, and it's very innovative. Like, basically a whole check-out system for your agents, and they still get sort of the credit for the sale. It's really nicely done. Thank you. We've been getting great feedback from the agents, and enterprise customers can sign up themselves if they want to go that route as well. But the feedback has been excellent. The simplicity of it, the ability to do real-time provisioning, to be able to check everything from network stats to commissions for an agent on a real-time basis, it's really as good as there is in the business right now. There isn't that type of visibility out there, so that's definitely a game changer. So getting back to catering directly to those carriers and enterprise customers, tell us a little bit about what you consider to be the peerless differentiator. Well, I think a lot of it starts with the network itself. So we own our own network. It's national on scope, and like I said, it has international points of presence too. But I think a lot of the intelligence for the network isn't in the network per se. It was developed by our internal folks, and that allows us to do things like roll out new services quickly. It allows us to customize solutions for customers as big as AT&T and as small as a small enterprise customer. And that's really been key to our success thus far, and we'll continue to innovate and adapt that way. I love that flexibility and yet still customization. So what can we expect from you guys for the remainder part of 2019? Well, I think more of the same. For example, we have more functionality being rolled out into the portal just in the next few weeks. Our new release will include our UCAS services. After that, we'll be following up with messaging services of various kinds. We have been expanding our force, support people to handle the increase in orders that we've seen just since the Channel Partner Show. Channel managers to bring on more agents. I think 2019 is really off to a good start and we'll form a foundation for future years. We're really excited about it. Peerless Network, definitely a company to keep a good eye on. Where can our viewers go to learn more? www.peerlessnetwork.com Peerlessnetwork.com. Thank you so much, John. We really appreciate you spending time here with us today. And thank you viewers for tuning in to JSA TV. Happy networking.


Welcome back. In the first part of this lecture, we have seen how in a QM scheme a molecular system is usually partitioned that is a small region treated at a quantum level, computational expensive, and the rest of the system with a classical resolution, computational less demanding. Obviously special attention has to be paid when coupling the quantum and the classical regions. In particular in the Hamiltonian of this fictitious QMM system fictitious because the real system is not separated into parts with two different physics. The potential energies contain three types of interactions, interactions between particles in the quantum region, that is between electrons and nuclei, interactions between atoms in the classical region, and interactions between quantum particles and classical particles. According to how one takes into account these last interactions, the different QMM schemes can be grouped in subtractive and additive schemes. In the subtractive scheme, the potential energy of the QMM system is obtained in three steps by performing three independent calculations. First, the energy of the total system is evaluated at the mm level, for example at the force field level. Then, the energy of just the isolated quantum subsystem is calculated at the quantum level and added to the previous result. Finally, the mm energy of the quantum subsystem is subtractive. This to avoid to countwise the interaction within the quantum subsystem. The main advantage of this QMM coupling scheme is that in the code no communication is required between the quantum mechanical and the classical routines. This makes the implementation relatively straightforward. However, there are also several drawbacks. A major disadvantage is that in the first and in the third step above, a force field is required for the quantum subsystem, which may not always be available. In addition, this force field needs to be sufficiently flexible to describe, for example, the effect of chemical changes when a reaction occurs. A further drawback of this class of methods is the total absence of the polarization of electron density due to the classical environment. This shortcoming can be particularly problematic when modeling, for example, biological charge transfer processes, since these are usually mediated by the protein environment. Therefore, for a realistic description of such cases, a more consistent treatment of the interactions between the electrons and their surrounding environment is needed. This can be obtained through an additive scheme. In such schemes, there are no calculations at different resolutions taking place separately, like in the previous scheme. But the potential energy for the whole QMM system is a sum of three contributions, quantum energy terms, classical energy terms, and QMM classical coupling terms. In contrast to the subtractive schemes, the interactions between particles in the quantum region and the classical atom in the MMM region are treated here explicitly in the last term of this expression. This additive approach is the coupling scheme implemented in the QMM interface of the Cp2K code that will be described in the tutorial. The quantum energy term usually comes from the DFD-Konsham and Miltonian in such additive schemes. The classical energy terms comes almost always from a classical force field, and its choice can be limited by the availability of force field implemented in the code that you want to use it. While the third term, describing the interaction between quantum and classical regions, is usually decomposed into parts, the bonded and the non-bonded parts. The bonded part is the part that describes the covalent interactions between quantum atoms, that is the atoms in the quantum regions, and classical atoms in the MMM region. Therefore, this bonded part is present only when the boundary between the quantum and the classical regions cuts a covalent bond connecting a quantum atom to a classical atom, as shown in the picture here if you look at the yellow fragments. Moreover, in this case, care has to be taken when evaluating the quantum wave function, that is when you solve the Schrodinger equation for the quantum part. In fact, a straightforward cut through the QMM boundary will create one or more unpaid electrons in the quantum subsystem. In reality, these electrons are paired in bonding orbitals with electrons belonging to the atoms in the MMM sides. However, now those electrons do not exist in the MMM region due to our artificial partitioning and the lower level of resolution that we decided to use in this region. In literature, a number of approaches have been proposed to remedy the artefact that originates from such open valences, many of which are available in CP2K. For example, we can saturate the dangling valences with a monovalent capping atom, usually a hydrogen atom at an appropriate position along the bond vector. Alternatively, it is possible to use the link atom pseudo-potential approach, which consists in introducing in the QMM system a description of the classical atom at the border bound to the quantum atom through a special pseudo-potential with the required valence charge. It can be shown that this method requires constraining the bond distance appropriately. Another approach is to place a set of hybrid orbitals on the boundary atom between the quantum and the MMM fragments. One of these orbitals is included in the QM region for the self-consistent optimization that we have seen in the first part of this lecture to find the wave function of the quantum system. While the other orbitals are treated as auxiliary orbitals that do not participate in the QMM optimization, but they provide an effective electric field that contributes to the external potential felt by the dynamical electrons. Let's come back to the QMM energy coupling term. Beyond the bond part, there is also a non-bonded part that describes the interactions between the QM and the MMM regions not connected through a covalent bond. This part is usually formed by a steric term that is a term that takes into account the van der Waals interactions and the pure electrostatic term. In most of the QMM approaches, including in CP2K, the interactions in EQMM bonded and EQMM steric are handled at force field level. This means that, for example, in the bonded term, you can find chemical bonds between QM and MMM atoms modeled by harmonic potential, as well as the angles defined by one quantum atom and two MMM atoms, but also torsions involving at most two quantum atoms, which are commonly modeled by a periodic potential function. Similarly, the steric term EQMM steric is usually described by a Lennard-Jones potential, and the parameters come from the force field used in the MMM part. The rest of the non-bonded interaction that is the interaction between quantum and classical atoms separated by three or more atoms in the topology are included in the electrostatic term. This is really an interaction between classical partial charges in the MMM region and the quantum charge density. But how is this term calculated in practice? Really, several approaches have been proposed for this term. In the so-called mechanical embedded, the simplest electrostatic coupling scheme, the electronic wave function is computed for an isolated quantum subsystem. In other words, the classical environment cannot induce polarization on the electron density in the quantum region. Within this approach, different ways to get EQMM electrostatic have been proposed. The simplest and very rough approximation consists to completely negate it, so in this case EQMM electrostatic equals to zero. Alternatively, one can assign classical charges to the atoms in the quantum region and then evaluate EQMM electrostatic in the usual way that is as a sum of per wise coulomb terms between these quantum atoms and the classical atoms. For the assignment of classical charges to quantum atoms, people have used either a fixed set of charges for the EQMM atoms, for example those given by the force field, or they have computed the charges somehow by, for example, the least squares fitting procedure to optimally reproduce some quantities such as the electrostatic potential at the surface of the quantum subsystem, and then recompute the charges ideally even at each integration step. An improvement of this mechanical embedding is to include polarization effects of the quantum region due to the presence of the classical atom in the EQMM region. In fact, in this so called electrostatic embedding scheme, the electrostatic interactions between the quantum and the EQMM subsystem are handled during the computation of the electronic wave function. That is, the EQMM electrostatic, which I remind you has to be headed in the quantum Hamiltonian, depends on both the classical charges and the quantum charge density. Increasing further the level of sophistication implies to include in the model also the polarizability of the classical atoms. In this electrostatic coupling approach called polarization embedding scheme, both regions, quantum and classical, can mutually polarize each other. Although this last embedding offers the most realistic electrostatic coupling between the quantum and the classical regions, polarizable force field for biomolecular simulation are not so effective yet. Therefore, despite the progress in the development of such force fields, QMM studies with polarizable mm regions are so far not so popular. The Cp2K QMM interface adopts the electrostatic embedding strategy that now I will describe in more details. By construction, the QMM electrostatic energy term that in the electrostatic embedding one should add to the quantum Hamiltonian is the red expression in this slide. This means that the electrons that define rho see the classical atoms as special nuclei with non-integer and possibly even negative charges QI. As it is, this expression immediately arises two problems originating from the peculiar short range and long range behavior of this term. That is the so-called electron spillout and the very large computational cost required to evaluate this term. Let's start with the issue at the short range. A problem that may arise when using standard partial charges to describe the charge distribution in the mm subsystem is the risk of overpolarization near the boundary. Note that now there are no covalent bonds in between quantum and classical regions. However, also in this case, the point charges on the mm side may attract or repel the quantum electrons too strongly, which could lead to the electron density spilling out into the mm region as catching the picture. In reality, this would not be possible due to the Pauli repartion of the electrons of the atoms in the mm regions. That, however, now are missing in the QM scheme. This phenomenon of electronic spillout at the boundary can become serious if a large flexible basis set or worst a non-local basis set is used in the QM calculation. As happened, for example, in CP2K, because with such basis sets the electrons are fully free to delocalize. This artifact can be avoided by modeling classical charges as smeared out charges instead of the traditional point charges, where the smearing function can be a Gaussian distribution or another suitable function centered on the mm atom. The smearing function used in CP2K to the same is this one. For the ones of you that are very interested in the theoretical details, this is the exact potential energy function generated by a Gaussian charge distribution. In contrast to the point charged model, with the smearing function, the coulomb interaction between the electrons and the smeared charge distribution does not diverge if the electrons approach the mm atoms. As you can see in the plot sketched here. Let's now move to the second issues in the calculation of EQMM electrostatic in the electrostatic embedding, the one at long range. In fact, due to the coulomb long range behavior, the computational cost to compute the electrostatic EQMM energy term, EQMM electrostatic, is surprisingly large. Let's try to evaluate it. Typically, this term is calculated by collocating on the nodes of a grid in the quantum region the contribution coming from the mm potential. Therefore, let's see, the number of operation that a direct evaluation of this quantity requires can be estimated as the number of grid points times the number of mm classical atoms. Typical grid points number are of order of millions, while classical atoms are order of 10,000 or even more in system of biological interest. Therefore, it is evident that in a real system a brute force computation of this term is impractical. Many QMM codes face the problem by adopting strategies such as hierarchical methods or multiple techniques, which are based on the observation that contribution to EQMM electrostatic of the classical atoms far and far away from the quantum region can be replaced by less expensive expressions. These methods are very effective, but require a fine tuning of parameters to yield optimal performance, which leads also to a loss of accuracy that makes error control sometime difficult. Instead, Cp2k solves this problem by adopting a different approach based on the representation of the electrostatic potential of the classical atoms that is the electrostatic charge times this meaning function as a sum of function with different widths, some of gaussians of different widths derived from the so-called gaussian expansion of the electrostatic potential. This in combination with the use of a real space multigrid technique. Even if the details of this approach are a bit beyond what I can introduce here, let's try to provide a few more elements to help you understanding this a bit better. Multigrid approach means that we use different grids, finer and coarser to represent on a computer continuous function in a real space, like for example the function in the GIP expression. In the right-hand side of the GIP expression, you can see NG gaussian function and another function called R loop. Now, the gaussian function in the reciprocal space have an intrinsic cut-off. Now remember what we have seen in the first part of this lecture. Each grid in the real space correspond to a cut-off in the reciprocal space. Of course, the computation on the finest grid is the most accurate one. If we map a gaussian function on the first grid whose reciprocal cut-off is equal to or bigger than the intrinsic cut-off of that gaussian function, then every gaussian function will be represented on the same number of grid points irrespective of its width. In practice, a grid with 25 points per side is usually sufficient for an optimal gaussian representation. But if each gaussian can be represented on the same number of grid points, this means that the gaussian can be considered a compact domain function, that is, it is zero beyond a certain distance. This meaning function on the left-hand side of the GIP expression instead cannot be correctly approximated as a function with a compact domain. Therefore, in practice, when calculating the EQMM electrostatic, the GIP decomposition allows converting the problem of mapping a non-compact meaning function left-hand side term on a fine grid into the mapping of NG-approximately compact function on grids lower or at least equal to the fine grid, plus an additional non-compact function, RLU, which, however, is very smooth and therefore it can be mapped on the coarsest available grid. Why do we do that? Because the sum of the contribution of all the grids suitably interpolated is approximately equal to the function mapped analytically on the finest grid. That is the result that we want to calculate in practice. But the total cost in this case is one or two orders of magnitude smaller because the total number of operation for the grid points evaluation results to be much smaller. The algorithm to evaluate the EQMM electrostatic potential on the finest grid can be outlined as follows. First, each EQMM atom is represented as continuous Gaussian-like charge distribution via A's meaning function. Then, the electrostatic potential generating from this charge is fitted through a GIP expansion. Then, every Gaussian function of the GIP expansion is mapped on the first grid level whose reciprocal cut-off is equal to or bigger than the cut-off of that particular Gaussian function. This way, we can limit each Gaussian to only a finite domain without loss of accuracy, as mentioned before, so that only EQMM atoms embedded in the EQMM box or close to it will contribute to the finest grid as sketch in the picture. Finally, in the last step of the algorithm, the contribution at each grid level is interpolated starting from the co-orchest grid level up to the finest level because the EQMM electrostatic potential we are looking for, that is the one with the higher accuracy, is the one on the finest grid. Unlike other approaches, the lack of tuning parameters here makes this multi-grid implementation a totally free parameter scheme without any significant loss of accuracy. Consequently, very stable simulation can be obtained with also optimal energy conservation properties. Okay, we have arrived at the end of this brief introduction to EQMM approaches. If you have a question or doubts on this part, I'll be waiting for you in the Q&A session in a few minutes.