Hey, hello, and welcome to the show. It's me, John Park. It's time for John Park's workshop, and here we are. Ready to go. It's been an exciting morning and early afternoon getting prepped for the show today. All kinds of things were breaking, so it's gonna be exciting and fun. And I'm full of coffee, so let's do it. Hey, thanks for stopping by over in the chat. I know that we've got C Grover who just popped in over here in our Discord chat, which looks a lot like that right there. And if you wanna join in our chat, if you're wondering where are all these people talking, that's it, it's our Discord. It's adafru.it slash discord. You'll get an instant invite and you'll wanna head over to the live broadcast chat channel. We do have a whole bunch of other channels, however, that are great for project help, help with Circuit Python, help with 3D printing, show and tell, off topic, pet photos, all kinds of great things there. So hello, Andy Calloway, Gary Z, Abadouzz, Abadouzz. I don't know how to say her name, I'm sorry. Nice to see you all and hey, Dale, thanks for stopping by over in the YouTube chat. I do have that one open and I can keep an eye on it. And I got my iPad over there, so hopefully I'll be able to see what's going on in the chat while I'm at the workbench today, which we'll be spending some time over there. I've got some stuff set up that I'm excited about. But first of all, let's do some housekeeping. So first of all, I wanna mention our jobs board. If you are looking for work, if you are looking to hire someone, this is a great place to check out. It is the Adafruit Job Board, jobs.adafruit.com. Let me bring up my webpage here and that's not it. But this'll be, just go to jobs.adafruit.com. You can see here, someone's looking for a creative engineer fabricator in mechatronics at Shopcat in Brooklyn, New York. That's a pretty new posting. As of last week, and you can see there's even some positions filled here. We'll edit it if it opens again. So there's some movement going on over there on jobs.adafruit.com. It doesn't cost anything to use. You can just go there and fill in your information if you're looking to post your resume info or if you're looking to put a job placement. We won't automatically include that. It actually is all vetted through PT and LeMore. So they will have a look at things to see if they sort of are a good fit for our community. So that's where you'll find some good job info, jobs.adafruit.com. I've got this show on Tuesdays. Right there, it's called JP's product pick of the week. Sometimes it looks like this. That's what it looked like this week. And every week I go through a product. Sometimes it's brand new. Sometimes it's an oldie but goodie like this one. This is product ID 259. So a pretty early one. I think we're up into the 5,000s right now for IDs in our store. I go through a product. I show you how it works. Go through the specs. Take a look at the data sheet if there is one. Do some coding examples if that's pertinent. And there's a huge discount. This week it was 50% off on this great USB LiPo charger. Here's a little one minute recap in case you missed it. The USB LiPo battery charger. It charges in three stages. It does a preconditioning, it does a fast charge and then it does a trickle charge. It tells us that we have power with a little red LED here. And then this is indicator that is yellow right now that tells me this is charging. And then when it gets to a full charge and it's just doing the trickle, that LED turns off and we instead get the done or green LED to light up. So if I have battery plugged in, you'll see that immediately powers up the device. Now if I want to start charging this, I can just plug in and it won't interrupt anything. You can see the power is still running over here. There's no hiccups there. And now we are driving this either off of available battery power or over the USB. It's never gonna turn that device off. The USB LiPo battery charger. Yes, you get my hand. All right, let's get set up for this. I've just got to bring up my coding window. Is mic off? When was mic off? Was mic off when I said, let's do the circuit Python Parsec? Well, I think we're back now. So hopefully that is all good. Thanks for the warning over there in the chat over the Discord. Mike, yeah, I guess I came on without a mic. How about now? Have you got any audio? Did you hear the Parsec song? My software is claiming that I'm making sounds. Let me check the chat. Audio, good now, thanks. Okay, good. Great to know that that's working before we dive into this.  All right, let's jump over to this example. For the circuit Python Parsec today, I wanted to show you how you can scan a Wi-Fi network using an ESP32-S2 based microcontroller. Right here you'll see I have a Feather ESP32-S2 and I have a little, just a tiny little bit of code here that you can see that allows us to scan the networks. So here's how the code works. It imports Wi-Fi, then we set up a little list called networks, it's empty to start with. Then for network in Wi-Fi radio, to start scanning networks, it appends the name to that little array. Then we stop scanning the networks, we sort those based on the strength of the signal and then we print those out. So here you can see when this runs, my little antenna there just sniffed around and it found three SSIDs and it gives us our signal strength on those. I think the strongest is the lowest number there and then it's done running. I don't know if we'll get any different results if I kind of wave it up in the air. Let's rerun that, so I'm gonna hit control D. Whoops, let me hit control D and run that. And hey, we picked up one more just by virtue of me holding that up a little bit higher. So you can imagine you could bolt a little screen on there and have a little Wi-Fi SSID sniffer that's pretty portable, maybe put a little battery on it. And that's how easy it is to sniff for Wi-Fi networks using CircuitPython. And that's been your CircuitPython Parsec. Yes, CircuitPython. So that was actually, I'm so glad that went well once we got the mics sorted out because that was one where when I had, this was fresh out of the bag. I hadn't used this Feather ESP32 S2 and it was one of the few that shipped out early and didn't have a boot loader on it. I had to go through the sort of fresh boot load using the ESP tool on Chrome to get this thing flashed. And at first I was like, uh-oh, am I gonna make this in time? It was kind of a last second thing. So, whew, glad that worked. And thanks to our good friend, Todd Botte, who can't join us. He's not in the chat today on the show, but Todd Botte had a nice example code on hub for doing a little Wi-Fi sniffing. I also imagine that, I can't remember if this one is a, I don't think this one is, but this one has a coprocessor. The different Pi portals have an ESP32 coprocessor, if I recall correctly, and a M4 chip maybe as the main chip. So these may be able to reuse that code. That code of just importing Wi-Fi, that's pretty specific to the ESP32. Oh no, we have some buffering going on. That's too bad. I had started that project originally using one of our airlifts, but I think the code I needed for that is different. I couldn't just install using SirCup, install the Wi-Fi. All right, so hopefully the streaming buffers will clear out. Looks like it's still running in some locales. Looks like in fact, the Facebook stream looks pretty good. I don't know what's going on with YouTube. So I'll give that a minute to calm itself down. And he says it's good now. All right, great. I suppose I could, yeah, it's funny. The health warnings I get on YouTube don't seem to have a lot to do with reality. They're not very helpful, unfortunately. So if we're good to go then, what I wanna do is start talking about the project of the week, which involves this guy right over here. So let me move my base of operations over to the work bench. Head on over here. So grab my coffee on the way over there. So you may recall, some people may recall, I had, oh, I've got a light out. Let's see, is it gonna, hey, whoa, that's bright. Okay, I had picked up this at an estate sale. And this was probably a couple months ago. It's a lovely Model 500 Western Electric telephone, real standard sort of in the U.S. at least. This is the phone that we had here for decades and decades. I grew up with these before touch tone became as common. And it's a rotary dial phone. You never owned these. These were always on loan to you by Bell Systems or whichever local bell you had once those started to split up, built like a tank. And what I wanted to do was tap into this rotary dial mechanism today. So for those of you not familiar, the way these phones were dialed was put your finger in a number, go to the right, let go, and it clicks a little switch, a certain number of times. So just pulsed that switch six times. So that would register as a six, register as a nine and so on. So let's take a look inside of it. We'll take it apart, get inside of there and then talk about how we can read those pulses and use them to create an interface. You may recall actually I've done a similar project before using this old lineman's handset. It's the same mechanism. This was a butt set or a Batinsky or lineman's handset used to climb up a pole, hook onto a line, see if it's working and still be able to dial numbers. Mechanically it's just a little bit different. You can see that the finger stop moves just because it's in such a compact area. And I had to modify this one so that I could have the dial going directly to these leads rather than work internally with the mechanism. When I did that project before, I actually clipped it onto a circle playground express and I was using make code to do it. Today what we're gonna do is tap into the dial sort of a little more properly and we'll use circuit Python in order to read pulses and then write them out as USB numbers. So one, two, up through zero will actually get written out over USB as if we're typing those on a keyboard. So that's my idea with this. So first of all, we have RJ 11 and I think these might be RJ 10 which are the two line plugs for the handset and the four line plug for going into the wall. I will actually, my plan is use a bit of phone cord to make a USB cable that can plug into this phone without having to modify it that much. So we'll see how we do on that. It's kind of a long line and I don't think it's shielded so it could be a disaster but we'll find out. So this is the pair of screws here that will unscrew to release the shell. So it's mostly just a shell sitting on top of pretty much everything else. So I'm just gonna dive in here and oh, Andy Callaway found where Lars moved to. That's disturbing, more, there we go. Okay, so there's the shell and we won't need that for now. There's really nothing much going on there. So I will set those about right here in front of Lars. And now we get to the guts of this. So you'll see there are a couple of these jacks for the handset and the main line and I think we'll tap into this one into these wires to create our USB connection there. And then as far as the dial goes, I think we should pull this off to take a look at it. We actually, it's got wiring coming off of the bottom of the pulse dialing mechanism that is connected up to this block here, which is sort of the guts of the phone. And what we'll do is just loosen a couple of screws here and you can see, getting a call, there are some retaining clips that just pop out on each side here and here. So by the way, I'm not gonna try to do anything with the ringer on here. I think these ring at 48 volts DC or it might be that's the steady line and it's even higher when it rings. So you need quite a bit of power to use this internal mechanism here. So I'm not gonna be messing with that for this project at least. But this is the very cool dialing mechanism and the way these work is they have a little mechanical governor that allows them to rotate at a constant rate. So as we turn that, let's turn to a zero, you should be able to see little flywheel here and a little governor mechanism and gearing that just like with a watch or a clock, it makes it move at a consistent rate. And that rate is important because the way the phone system worked at that time when these were in use and actually some phone lines will still work with pulse dialing and even some modems like cable modems and things like that will allow you to use pulse dialing and then it converts that into a digital signal or a modern digital signal to send to your sort of voice over IP style phone line. So this has two pairs of wires coming off of it and one of them is just simply to let the phone know that dialing has begun. And so that is a normally open switch that closes when this moves at all. And that's the pair of white wires on here. And that is used just to disconnect the sound from going to the earpiece. So you just don't hear all the loud dialing sounds in your ear. That's all that one does. So as soon as this moves, that's gonna turn off and we'll actually let's tap into that right now just to do this as we go. So I have a photo that I took of this so I know where these lines go. Doesn't actually matter which block the white wires go to the pair of them, but I did mark them. And the wires have been in this thing so long. I think this phone's probably from the 50s or early 60s that the wires kind of have a memory of where they go. So this right here, if we take a multimeter and just put it into continuity test mode, I'll hook up to these two wires and you'll hear we don't have any continuity until we begin dialing. So as soon as it starts, that closes that switch and that tells the system to disconnect the earpiece from the rest of the phone. So we're not hearing all of the dialing sounds in our ear. See, it's just any dialing that's happening. It's closing that switch. And then as soon as it finishes, it lets that switch open again. So that's the white switch. We could use that for something. For example, light up an LED or something like that to know that some dialing is taking place. That's one way we could do it. And then these other two, these little blue wires here, we'll bring the phone back into this but for today at least I wanna get in where. And if you look closely here, let me, what you'll see, and this has a little, I don't know if I can remove this little plastic cover here, I probably can. It's kind of molded to this. I don't think I wanna pop it off. Oh, I've popped it off. Okay, that's just some shielding for keeping things from contacting. So you can see there's these little leafy contacts that touch or don't touch, they're sort of springy, depending on what's going on with the mechanism. So the white wire line, those are apart from each other until a little cam moves and then the two contact each other and that's what closes that switch. Opposite is true for the blue line which is the individual pulses. Those are normally closed and then each pulse of the number dial spinning opens them for about 50 milliseconds or so. So if we connect up to this, we probably won't hear a perfect, I don't think my multimeter's fast enough maybe. So we're gonna hear it get interrupted a certain number of times, right? So it actually would have been at six times but my meter isn't fast enough. Okay, so the meter's not able to capture that fast enough but what's going on is it is closed and then it'll, if you dial a three, it'll go open one, two, three times and it'll send us three pulses. And so that's why this timing is important because those pulses need to be within a pretty small margin of error about what is it? I think 10 to 20 milliseconds apart so that they're considered part of a sequence. So we're dialing a three and not three individual ones, for example. So what we'll do, again, I'll set the phone aside for now but what we're gonna do is use a microcontroller. In this case, I've got this, let me zoom out a little bit. Got a cutie pie here that I was testing things with and I'm using a pull-up resistor and a debouncer in code so that we can just simply connect one side of the dial pulses to ground and the other to a digital input pin and I happen to be using the RX pin in this case. So with this setup, what we should get is a switch that is normally closed and that means it's heading to, I believe that means it's heading to low and then for each pulse as it opens, it'll head high and we'll register that change, sort of edge detection in the debouncer and then be able to do something with that. So what we'll do at this time is take this over to the workbench, plug it in. I was having some problems with this particular microcontroller right before the show started as well. So we may do some reconfiguring of things and I might not be able to use the breadboard but I should be able to just hold the contacts down on this one, which I think I'll use this in the final one. I don't really need any sort of proto board for this. My idea will be to run wiring from this plug, which has three wires in it right now. So we'll need four to do USB and so that'll give us power and data on this and then I'll have a couple of these little alligator clips like I did here, just running back to the terminal blocks on here if that works or we can disconnect them from the dial or go directly. So let's take this over here and see what we can get working and let me know, I can keep an eye on Discord so let me know if you have any questions or thoughts. Okay, so I will write this arrangement of things that should work. I'll pause it over there. QZorn on YouTube asks if that's the phone Lily Tomlin used to un-laugh in. That's a good question. Okay, so yeah, first things first let me just see if I can get this QDPI recognized. I don't know what was happening with it before when it was, yeah, so it's blinking. Let me see what you can see. Yeah, so that was blinking on there and let me go over to, yeah, I don't see it showing up. It's not happy. Let's just see if we can, let me see if I can reset it. Okay, let me just try to put CircuitPython back on it. We need to download that. Okay, let me, I'll show you in the browser where I'm going for fun. So here's, I'll just go to CircuitPython.org head to downloads. I'll do RP2040 QDPI, oh it doesn't like that order. QDPI RP, there it is. And I'll download the 7.1.1 UF2 file. And then you're not seeing this right now but in my finder I see the RP-RP2 drive show up, USB drive show up. And so I'm just gonna drag this UF2 onto it. And that actually should, if that works the way it typically does, that should give us all of our libraries and code that were already on there. Good chance it's gonna be preserved. So it just flashed the thing, it's restarted and it's showing up now as a CircuitPyDrive. So that's good. So now you can see, let me hide this. Now you can see over in, oops, over in Atom, I should be able to open code.py off of that drive. Oh yeah, okay, so the thing got reset, that's right. So I'll paste in, so I'm just repasting this. One thing that'll happen here is there may be some libraries like HID and debouncer that are just not by default on that image of CircuitPython. So what I'll do is I'll open up the serial REPL here and then I'm gonna save this code onto that drive. And what it'll probably do is import error, no module named Adafruit HID. So again, this is something you won't see, I've shown this before on CircuitPython Parsec. I'm just gonna open up a terminal window and in there, I'm gonna type in cirq-up-c-i-r-c-u-p, it's like for CircuitPython update, install Adafruit underscore HID. It's gonna go grab that file and any associated ones that it needs and put it on the disk. Oh, it said that there was a problem downloading the bundle, please try again in a moment. All right, so I'll do the manual way. What's going on there? So I can go back to circuitpython.org, head up to libraries and I'll just download the library bundle. This means that I will just need to manually drag and drop libraries over. I don't know what's going on with circuit, that's bizarre. So that downloaded a zip file that I'll open up and again, sorry, you won't see this part just because I don't have a screen share for this. I'm going into the CircuitPython bundle, library directory and I'm opening up the library directory on my QDPy there and then I'll drag over Adafruit HID and it'll copy that over and then if we keep an eye on the REPL there, it'll then find the next thing that's missing that it's trying to import, which is debouncer. So I can find that juggling a lot of windows, find debouncer, debouncer, not alphabetical. Debouncer, there you are, okay. And I'll drag that into my library on the CircuitPython drive as well and then we'll check out the next. Okay, so no errors, I think. That's good, so I'll go, oh, nope. No module named Adafruit ticks. What is it missing there? Hmm, that's a new one on me, Adafruit ticks, where are you? Hey, there it is, Adafruit ticks, thing has changed. All right, and now again, we'll check the output here and I can hit Control-D to goose the board. Okay, so it looks like it's booted and it hasn't run into any problems. Now, since the way the dial is gonna work, it's just closing this and opening this contact. You can see there it counted pulses and oops, it also typed for me. So that's good, that means things are working.  So these two alligator clip leads. These are really convenient, by the way. I don't know if you've seen these in Adafruit Store, they're little cable assemblies that have a header pin on one end and an alligator clip on the other end coming in a few colors. Okay, so let's try, I'll dial a one and you'll see there it counted one pulse and in my sort of serial print output and then up here where my cursor is I can type things in there and so can the circuit pie drive. So this is, you can mess yourself up pretty well with this but you can go type in a nine and a five, seven. So that's working pretty well. So let's take a look at the code and see what's happening there. Also I will keep an eye on my discord to make sure we don't have any. Issues, yeah, oh thanks Michael. Michael says debouncer requires ticks now. I did not know. So here's what's going on code. I'm importing the board and time libraries for board pin definitions time so I can wait for stuff, pause. Digital IO so that we can read a pin as a digital input and then HID stuff is all just about being able to type and then the Adafruit debouncer. Then I'm setting up a pin on the board. In this case it's board RX. I'm calling this the switch in pin. It's set as a pull up. So it's using the internal pull up resistor on the chip and then the switch is the debouncer object that's in that digital IO pin. We then set up keyboard and then I've created a little list here of the things I want it to be able to type. So one through nine and a zero. This could be anything. This could be ABCD and so on but that's what I'm gonna use for now. Then I have this little function here that's called read rotary dial pulses and we set a very specific time out here which allows us enough time to read one of these pulses based on the governed speed of this dial but not so long that we get broken up nine becomes a five and a four. In this function the debouncer update happens so switch.update in parentheses and then I made myself notes here because it's always confused me. So yeah, this is a normally closed switch pin. So it is pulled low normally and then it goes high when it is opened which is what's happening every time it sort of pulses. So if it has not risen, if it's just hanging out low then nothing happens, return zero. The pulse count starts off at a one when this gets called because we've definitely started turning the dial and then the last pulse time is set to time monotonic which is just this sort of ongoing clock since the device was powered up. While the time monotonic minus the last pulse time is less than whatever that timeout is that means that this is one set of pulses that are together that are being considered one number are happening. Switch gets updated, if the switch rises we increment the pulse count by one and then we reset that timer so that the next one we can check as well and then we return that pulse count, whatever that is. So this function at the end of the day it just gives out a pulse count which you see printed down there below and then in my main loop here we're doing the number of pulses equals go call that function and then what happens if we get pulses? So if there are pulses I'm printing out pulses count equals and whatever that number is and then I'm doing my little keyboard send.  Keyboard send is a press and a release so it's perfect for this type of setup. So keyboard send, key map and then that's that little list I made whatever the number of pulses is minus one and that's just to get to zero indexing. So if the number of pulses is one then I'm going to use the zero item in this list which is this, key code one. So one ends up being one. And that's it, that's how simple that is. So you can see here we'll go and go through the numbers zero, one, two, three. And so that recovery time between dialing is longer than 0.2 seconds. So it doesn't confuse those, it doesn't add them up or anything like that. You're not gonna dial a three by dialing a one and a two. So it's all based on that sort of very precise timing. And you can go and look, there's a lot of resources out there on the web about what the timings are on these and you can see actually what happens if you make this number too low, let's do 0.1. Now watch, I'm gonna dial let's say a six. So it counted that, oops, you can see there, as three twos. So the timing, if we get that timing wrong there, I picked that up as a three here. It's three twos and a one. So it gets confused if you have too short of a pulse time here. So we'll leave that at the point two that's recommended. Let's see, so any questions about that, let me know. What I wanted to do, what I wanted to try next and this is dangerous because this could be what kind of screwed things up earlier, but I wanted to see can I get this to dial using my phone. So I'm gonna use a little adapter cable so that I can go from USB to my phone. So I'll unplug this and let's switch, switch our view here for a second. And let me grab, so since I'm using iOS I've gotta use this little weird iOS adapter. I mean it's not that weird, they just call it a camera adapter, which is weird but it's really kind of an OTG which goes from Lightning to USB. And now if I plug this into my phone maybe this is what caused my problems before, shouldn't, I don't know what caused those problems before, this should, if you look at my phone here, if I dial a four, hey it's working. So that'll send, that'll send whatever USB, same as it sent to the computer. And now let's see if I can use it on the phone app, I actually don't know if it'll allow that. So let's see, two, that's fun.  All right, it's a super, super inconvenient dialer but you can see there it was, I'm not dialing any number in particular, it was working good, I'm excited about that. So what I wanna do now is, oh there's a question, WagonLose asks pulse dial to touch tone. Yeah, you should be able to do it, I was able to do touch tone dialing on a Circuit Playground Express using our nice little external speaker, I think I have one of them right here. This little speaker up really at the, just the right distance from the microphone on a phone will send dual tone, multifunction, or touch tone to the phone. So you could build your own rotary to touch tone device, which would be fun. The, yeah the trickiest thing about that is that touch tone is a pair of oscillators running at two different frequencies. And so it's pretty hard to do that without threaded sort of multitasking. It may be possible on Circuit Python, it would be way easier to just make some wave files, you can download wave files of each number, so rather than generating your own pair of oscillators per number, because it's this sort of column and row thing, you might be better off just getting a wave and playing each of those wave files at the right time. So let's now see about hooking this up to the phone itself. And this may be something that becomes too fiddly and we'll pick it up next week or I'll do it in the interim and show you my progress next week. So let's head back over here. And here's what I was envisioning. I've got the standard phone cable, twisted pairs. So this is 426 AWG gauge wire. And this one happens to be nice. Some phone wire, if you've ever dealt with it, used to be this like foil junk. This is actually copper wire. I've tinned the ends of these and I can zoom in here a bit. So this is the wiring. And what I needed to figure out is if we wanna go ahead and make essentially a USB cable with this phone jack on one end, so I can plug this into the phone, the other end into the computer or my iPhone or something like that. I need to know what my wiring pattern is for USB. So I was doing this earlier just to test things out. So here is one end I could use, at least just for testing purposes.  Sorry, positive data line. I made that yellow, some people make that black and then switch these around and then use black as ground. So following that, oh, these kind of fell out but these are temporary. I have another breakout here that I was gonna use to go to the QTiPi because QTiPi doesn't have, where's that spare one? QTiPi doesn't have the USB pins broken out. The KB2040 might be a good choice instead because it does break out the two USB data plus and minus so you could kinda go a little more directly but this was kinda my idea is use this little plug to plug adapter. We probably have some other better adapter in the store and I just don't have one on me. So with that arrangement there, we would get wiring out to USB. So that means on this end of this guy, I'm gonna sub those for this and I have a little, I'll just translate white to green on this one and otherwise I'll keep the color in the same. So let me put this together here and I'll get that in focus. There you go. Franklenses, you can get the jacks from oldphoneshop.com and they have the 500 series and the 2500 which is the touch tone one modular jack set. Thank you, Franklin, that's great. I'll check that out later. So there's a link in the discord if you're wondering. So this'll be black, yellow, green, red going from right to left. Black, yellow, red, green. Remind me of that in a second when I forget. No, black, yellow, green, red. Yeah, there we go. Black, let me arrange these and then do it. So this is sorta temporary doing the cable this way. We do have some DIY USB cables that might be better suited for the long run but I'll, for now. So there's this little sort of dance you do to try to get all these. I think I'm gonna strip this a little longer. Oops, get, yeah, beware like really flat, floppy phone wire. It's gonna have this garbage-y foil stuff that's super annoying to deal with.  All right, I think I had black, yellow, green, red, right to left as my goal. Screw these the rest of the way, hold on. There we go. So these go on top of the little metal contact there. Sort of pinches and elevates them up. Not all of them work that way. Some of them push down on a thing but very often that little screw terminal thread lifts up the contact, squishes your wire. All right, they look to be in there. Okay, so now what I may have just made is a RJ11, if I have that right, I think that's RJ11 to USB. So that would allow me to plug phone to computer or phone to iPhone. And where I'm plugging that, there's some stuff here, is this jack right here, like the ones Franklin pointed out. You can see this one goes like that, plugs in. Now, like I said, unfortunately this one is just a three conductor one. So I'll need to add, doesn't even have the little spring terminal end there, so I'll need to add wiring to make that work. I think I'll do that offline, but my idea was just to say, okay, if I can simply tap into these wires and they're all just screwed in on little blocks here, those are what I would connect to this right here and then have the QDPI sitting in here with connections to the dial. So that's the idea is to non-destructively edit here, non-destructively change this to have a same plug and just unscrew some things and connect them up. So I'll leave that be. What I'll do for the short term though, let's do just a regular USB cable coming out. And actually you can, nice thing is you can, since that's free to move out of the way, we can just have a USB cable coming out of this hole and just tuck this inside. So to that end, what I'll do is take this QDPI right here, we'll run just a regular USB cable out and then I'm gonna connect this to the dial and I think I'll use these, a couple of these. In fact, I'll use these very ones because I don't see any extras that I have laying around, here's one. I'll use these to just tap onto the dial where it lives. So let's see if that works first of all. So I'm gonna, can we still read those when they are connected to the rest of the system? Should, but it's not always the case. So I'm just gonna rest those in there and we'll connect those back up. So this was, I believe, there. I'm gonna consult my photo I took earlier so I get that right. There we go. Look, it's inception of, so you get that on there and this one up above, I'll leave the white wires off for just this quick test. By the way, you may be asking what about switch hook dialing? For those of you who may have been goofing around with these phones back then, the pulse that was sent down to the phone company when the dial turned was the same as the pulse sent when the switch hook went off and on. So you could dial a one, dial a two, dial a three and so on. It's really hard to get a nine right, but I don't know yet if I'm gonna try to add that. That would be kind of fun, especially if it had some different function. Oh, I got these wrong. Not that it matters, but the, I haven't looked to see where it connects this switch, which wiring comes out of the bottom there. I haven't looked to into that yet. Nice bells, huh? All right, so this one, and sorry, you'd be able to see this a lot better if I were using some tweezers or pliers. There are some tweezers or pliers. I think that's not any better, sorry. There we go. So yeah, so the question I wanna try to answer right now is if I leave those connected to the rest of the phone and just clip to those terminal screws, will that still work? And I think we should be able to find out with, this might be what caused my issues earlier with the board needing to be reset, because I think I was trying this when this happened, but we'll find out. So I will go into the phone here. Let me go back to the notes application. And so this should power the board. Okay, so this, when the phone's virtual keyboard disappears, that's a good sign that means that it is recognized that a USB keyboard has been plugged in. Okay, that works, good. So we can leave this connected, which is neat. The potential actually exists that you could use this both as the regular phone and as the USB dialer simultaneously, because now, other than the switch hook right now, nothing is unplugged. I don't think any voltage goes through the dialing mechanism or anything like that. So let's unplug that. And I will reconnect the white wires as well just to get them back in place. And those are here and here. C Grover says tapping the hook was a theatrical way to get the operator's attention. Did that make a lot of noise for the operator? Okay, so what we can do now is I'll reinsert these little retention clips of the dial and I can tighten the screws that hold it to this post at this gorgeous angle. I think this was, we looked at this last time, I think this was the second design basically, the first revision of this phone by Henry Dreyfus, the great industrial designer. So what I wanna do is check, does this one have that same code running on it? I think I have it on there. And then I will solder these on like this. So that's just what's gonna clip into the system and then have the USB cable. I can probably test this just holding those in place like so. So let's reconnect to here. And so this one just happens to be a Qtipi M0. The other one was a Qtipi RP2040, that shouldn't make any difference. And so I will hook into these two dialing lugs here, terminals, let's plug USB into the phone. Okay, little green light, that's a good sign. Connected to the wrong, hopefully I didn't just break it. Maybe that's what I did before. No, probably not likely. I have done bad things to this board. You can see it's blinking angrily now. Drat, all right, let me, let's go fix that. All right, whoopsie. Let's head back over here. Hope you don't mind the realistic tour of troubleshooting issues I'm going through here. So plug this into the computer. I should see, these are some little troubleshooting signs. So this one I can double click to get it to bootloader mode and then I should be able to put the firmware back on it. So the UF2 file. So Qtipi boot just showed up on my desktop. Qtipi M0 firmware. Sorry, you're not seeing that part I know. Hello, Johnny Bergdahl, welcome. Wagonload says, use a magnetic read relay if you wanna keep pulse dial function of the phone. Oh, interesting. Radio Shack Touchtone chips. I have a few, I had one of those. I never did anything with it, but I got one. I thought this is somehow gonna be useful. Okay, so now I have Qtipi loaded back on to here. Code is back on. Okay, so that's a good sign. Let's just go test that then again on the phone. All right, Kazitski, you got your KB2040 keyboard. Excellent. So now, what I did before by accident was I plugged one side of this into the five volt instead of the ground. So if you look closely at the Qtipi, you actually have to pay attention to what you're doing because you probably won't be able to see it in great detail there. But the very last pin there is five volt I meant to go to its neighbor, which is ground, which is how I screwed things up. Okay, so here you can see it has shown up on my phone as a keyboard. You know that, because you don't see the virtual keyboard. I've hopefully got those pinched tight enough in there to contact these lugs. Is it not? Am I not convincing enough to need to solder those in? I shouldn't have to. Let's reset. No, let's try. Now let's bring this back over to the workbench. Let's see if the code is really running when I have it plugged in. Okay. Oh, sorry, I went over there and didn't change the camera, so you were not seeing any of that. My apologies, it's okay, it didn't work, so we're back. And wait, am I, do I have this wrong? What was I plugged into? Was I plugged into three volt and not ground? I think that's the case. Yeah, because this is pull up. I bet that's it. Let me test that right here. Sorry about that, I don't have my little wiring diagram here. Let's go over to Adam, let's save this, this board. Oh, this one doesn't have HID on it. That's strange. Oh, I did it, hmm, shouldn't have gotten reset. All right, let me get this board. I, by the way, renamed cutie pie. I'm gonna re-rename it to circuit pie drive so that it can maybe work with circuit. Let's rename it, circuit. Yeah, I'm having a problem getting these bundles. All right, that's okay, I will drag it over. I don't have any J-hook alligator clips, that would be fantastic wagon loads, that would work the best for this for sure. I might have to make some, I don't know if I've ever seen any. All right, back to the bundle. Could have sworn I had this drive working like that before. Library, yeah, it doesn't have HID on it. B, HID, this is why I like when circuit is working because then you don't have to drag stuff around. Manage disk space, okay. Let me delete some stuff off of here. Don't need Neo-key, don't need seesaw. This is the issue with the M-zero cutie pie. It's got very little space. Hopefully enough for HID. If not, I will bail on trying to use this one. Okay, HID, good, and now I need debouncer and ticks. Bouncer, oh no, not enough disk space for that. Okay, so I can't use this M-zero. Oh, we'll ditch that idea. So in the interest of time, I think we'll bail there. Let me just head back over to the workbench and hook it up the way I had it. And then we'll get out of here and I will do some of this wiring offline. I'll make a little wiring diagram for us to reference as well as a guide. So that's what's necessary, if I recall correctly, is the three volt, and no, it's ground. It's got to be ground. Let's see if I got that right. Let me grab that USB cable. I have not tried to dial the number that is on here. I don't know if anyone has. I think that's probably not working anymore, but could be. Yay, working again. Okay, so that's the one that works. I think I will try the KB2040 since it's got the data lines out. It'll make USB wiring really nice and neat. And I won't have to go through some adapters. So it could be that or it could end up being this KB2040 cutie pie friend here. All right, great. So let's wrap that up. We'll pretend that got put back together, but that'll have to wait. All right, I think that's gonna do it. Thanks everyone for poppin' by over in the Discord and in the YouTube chat. The cron job says, hi, it looks like I'm late to the show. You're gonna delay lunch and rewind. Good, well, you'll see us say that later. Good, Wigo connectors, yes. Gonna check that out later. Franklin, thank you so much for the link. Timeout is the shorting. Start to end dial sequence, such as dialing a one. See, go over a little five volts. Illinois could ring the bell. Oh, good thinking. And Griffin Brooks says, where do I go if I have questions about Adafruit projects? So you can go to the forums. I think forums.adafruit.com or forum. I forget if it's singular or plural. So head over to the forums. There's a link on the Adafruit site to the forums on there as well. You can also go to project help in the Discord. So the Adafruit Discord is adafruit.it slash discord. And there's a general project help as well as some more specific ones depending on the nature of your questions. All right, that's gonna do it. Thanks everyone for stopping by for John Park's workshop. I will see you next time and tune in tomorrow for a deep dive with Scott. Thanks everyone. Bye-bye.


The next step for me was starting to go out and audition and work and so my parents' role was that I wasn't allowed to do that before I was 18 and I had to be in college and so I was studying at USC and going out and just hustling and especially during pilot season you know I was going to class I was taking a full course load and then going to two three auditions a day and you know driving around LA just trying to figure out how to make it work and I booked my first regular job on One Tree Hill and had to pack up my life and moved to North Carolina and I think it was like 15 or 16 days. Wow. Something crazy. But how long after getting into you know going to school and going to auditions did that happen? Three years of being a full-time student and auditioning full-time as well and it was nuts and like the number of movies you know that it would get to me and one other person like it would be me and Jessica Beale, me and Lindsay Lohan like it was always down to me and someone who was more famous than me at that time and and there was something so frustrating about that but also so encouraging about it because I was like well okay if I'm the other person who they think could do this job as well as this very established person then I'm doing something right so I just it just kept my head down and kept the auditioning up and I was talking to a friend of mine recently who talked about how it took her 10 years of full-time hustle to you know be the lead on a TV show and she was like yeah it took me 10 years to be an overnight success and it's really true you know people don't see the years of the work that you have to put in I think it's the same in the startup world you know you launch a successful company and nobody knows that it took you three years of sleeping on the floor of your office and five years at a hack job before that that you hated you know to to make it work


Folks, I got a few stories that I wanna bring to you today. Just some great news updates, the latest and greatest from Nintendo that should create some interesting discussions. One of that being that, hey, it looks like Nintendo may have been teasing more rare NSO games. That's right, rare LTD. Look, we just got that nice little five pack of games at the developer directory yesterday. Shadow dropped on Nintendo Switch Online. You guys know about Blast Corpse and Killer Instinct and all the rest, but they actually looked like they are teasing for more of them. So we gotta talk about that. On top of that, we have some launch sales in, just like one of the few places we get real numbers coming out of Japan. So we get to look at the launch sales for Mario versus Donkey Kong. And on top of that, we also need to talk about Nintendo really making some fundamental changes to their marketing likely because they're heading into a new generation if we actually look at the history of their marketing changes. First, let's dive into this one over here that's very interesting. I actually found out about this through GameXplain, so full credit to them, linked to their video down below. But during the NSO trailer yesterday, there is this scene where there are four games that are surrounded by constellations making the shape of a box. You actually look at the background, there's four more games or well, four more constellations at least making the shape of game boxes. Two of them are quite tall, likely featuring NES titles. And two of them are wider, which could be Super Nintendo or Nintendo 64. Now I obviously don't know what games these are going to be, none of us do. This could just be nothing. It also feels sort of like a subtle tease for those that pay enough attention. Look, we've been getting some rare games trickling to NSO over time. And in my opinion, if some of these games are featuring Nintendo IP, maybe Nintendo wanted to save that for a regular first party direct. And that's where I come into here and say, diddy Kong racing anyone? Look, there's a lot of really good rare LTD games from back in the day, but diddy Kong racing with full online multiplayer would really make my day and would be something we'd even probably live stream for a little bit just for fun. So I don't know, what do you guys think about this? Do you think this actually means anything? Do you think we're actually going to get some of these games? Or do you just think that we're reading too much into this? Let me know down in the comments. Next up, we need to get into the Japanese sales charts because look, Mario vs. Donkey Kong launched last week and a lot of people might wanna know how it's doing. So we're looking over here at Nintendo Life and they put up this interesting article that says Japanese charts, Mario vs. Donkey Kong takes its fight to the top, over 60,000 copies. So we need to get right to the list here out of Famitsu. So we see it at number one, Mario vs. Donkey Kong is sitting there at 61,930 units sold, pretty decent launch right there followed by Super Mario Bros. Wonder and Momotaro Dantetsu World. I'm not even gonna try to pronounce the rest of that. By Konami, actually super close to having three Mario games at the top with Mario Kart 8 Deluxe at number four. So you can take a look at that list there and that's really, really interesting. Another notable one that was brand new last week that a lot of you guys may have heard of is Skull and Bones from Ubisoft. That one launched into 6,635 units only on PS5. Now when we go down here, this list is quite interesting. This is the hardware for last week and you look at, they did the math there. It says, you know, 48,391 total switch consoles were sold compared to 38,212. So around, you know, 10,100 or so more systems of switch sold than PS5. And that's fascinating, of course, is Switch is still maintaining a slight edge over PlayStation 5 in week over week sales in 2024. What I also always find hilarious is, look at the bottom at number nine, new 2DS XL. That's right, baby. While these things are no longer being made, right? Nintendo does not make these anymore. Somehow, a grand total of 14 of these bad boys sold brand new all across Japan last week. I don't know. Look, I just find it to be really interesting to think about and man, when I look back at Nintendo, I always wonder what is it about their systems that keep them selling well after they're even out of print and I guess that's just having stock available. I don't even know. Look, it's whatever. Let's go ahead and get into our last story. So our last story is actually quite fascinating because Nintendo has these big marketing changes they make seemingly when new systems are coming out or when a new generation has begun. What are we talking about? Well, the other day we did have that partner direct and that's really exciting stuff and honestly, I really enjoyed it. But maybe one of the most notable things that come out of it is that they updated the graphics for Nintendo Direct which they haven't really done at all since 2017. Look, the Nintendo Switch came out and then we switched era Nintendo Direct style graphics. We had Wii U era ones. In fact, fellow content creator arrow posted up this nice little video clip looking at the three next to each other over on Twitter and I gotta be honest, it is quite interesting to watch how each era has had its own style of visuals for Nintendo Direct. Now I would argue that this new style isn't as big of an evolution away from what they set up with Nintendo Switch but that would also make sense if we're heading into a Switch 2 situation where you don't wanna make it seem like we're completely different than what we were before because we're building on top of what made Switch successful. So look, obviously this doesn't really mean a whole lot in the grand scheme. It's just nice to look at and talk about but it is interesting to think that Nintendo might've already have their marketing in 2024 changed up for Direct's and they're already implementing it now signifying that we are getting kinda close to Nintendo actually showing us a new system. I know, I know, okay, delayed and all of that stuff. I'm just talking about in the here and now like, hey, Nintendo made a major change to their graphics on Nintendo Direct's and they haven't done that for a long time not since obviously the beginning of the Switch era. Now, one thing I also wanna note about this that I find to be just a little interesting is they didn't call that Nintendo Direct Partner Showcase a mini even though in hindsight it behaved exactly like Nintendo Direct Minis in the past. So this could suggest also a marketing shift heading into the next generation where they get rid of that mini branding and just stick with the subnames like Partner Showcase, Indie World, Nintendo Direct without a subtitle is literally just a big Nintendo Direct. Maybe there's no such thing as the Nintendo Direct Mini. So I find this just to be something to pay attention to as the year goes on, as the years go on and see if we ever get that Nintendo Direct Mini branding back. I don't know, I never really mind you the branding to be honest, but for some of you guys maybe you're just happy it's gone or maybe you're confused, maybe you want it back. I have no idea. Let me know what you think about this whole Nintendo Direct Madness stuff down in the comments below. That's it folks, a three pack of news for you today. There's other news floating out there, some updates on some of the games that were undounced in the Direct. Honestly, none of it was really that fascinating to me but I'm sure it is fascinating to you. We'll link to some of the best stories down below that might interest you as an example. There's one out there about Shimagami Tensei 5, Vengeance, it's like twice as long as the original game. We'll put some information down there for that. Didn't cover it in today's video because frankly, it's just not a game I'm that interested in. Thank you guys so much for being here and I'll catch you in the next video.


OK, so, good afternoon, welcome to our session, the session calls operators experience and perspective on SDN with VLANs and free networks, where we would like to show you the perspective of our experience in operating different solutions, different SDN solutions in different customer environments and what we tested and how we built the infrastructure. The presentation, again, at first, something about TCP cloud, what's the company, what we are doing, sorry, presenter, something about Workday, then several words why it's happening here. The presenter, I don't know, it started to, I will use it without presenter. So, something about OpenStack networking, the key points, then the criteria for the enterprises, because we have more than 15 or 20 enterprise customers and they have different needs, so we will bring the perspective on this. Then the use cases and finally we try to do small comparison, our personal comparison of SDNs. So, what is TCP cloud, I don't know if someone was at yesterday keynote, but we are company which focusing on building private cloud solutions for the enterprise customers and we are also, we have two domains, one is private clouds based on OpenStack and second is IoT Internet of Things platform where we integrate this open source projects together. We will today talk more about the networking stuff and OpenStack. And something about Workday, this session should be with Edgar Magana from Workday. Unfortunately, he cannot be here because he was voted into user committee and they have some parallel meeting, so Edgar will not be there, so instead of him is my colleague Marek, who is chief network engineer in TCP cloud. So, the Workday is the customer who use the Juniper Contrail SDN, it's a public reference and maybe what's interesting that they use the L3 Fabric everywhere, so they don't use the VLANs, but they have underlay network based on L3 Fabric and then they put on top the Juniper Contrail. And now let's jump on the networking. So, all clouds are about networking and every time when we speak with the customer and we are doing some case, we are discussing stuff about networking. It's the most controversial and problematic part because there's a lot of plug-ins and everyone has a different environment, hybrid environment and it's really difficult. And you usually have to solve issues like high availability, scalability, migration, multi-tenancy between the environment and together with OpenStack networking comes the NFV and function like usually a lot balancing as a service, firewall as a service, VPN as a service and what's the most important is that there is more than, I try to count the plug-ins and there is more than 30 or 40 networking plug-ins and every year there is new SDN solution which says, yeah, this is the best SDN than other SDNs and we are working with OpenStack and you should try it, you should do this, this, this, this, everyone does something else so it's completely impossible for someone who wants to try it, choose which is suitable, so we will try to give you our perspective of viewing how we see this. So if you look at the last OpenStack survey, you can recognize that most of the environments are on OpenV switch. The OpenV switch is used usually for the public clouds, for the environments with the V-lands, sometimes with the VX-lands. And from the historic perspective it was very difficult to make the OpenV switch and neutron working in the operation because of centralized network node. Nowadays when it's the DVR solution it's much better to manage it and then there are a lot of many other plug-ins. The first vendor plug-in is the OpenContrail and we will speak about this solution in this presentation too. So the general SDN objectives when we came to any customer it's like we need the secure multi-transit solution with network isolation, with the policy driven, we need to get the Bermertal server inside, we want to manage dynamicly and schedule VM, attaching the ports, create policy between the networks, the security groups. It must be dynamic, you need to have clickable and orchestrated solution with VNF, with insight, with the plug-in. So this is the general objectives, what everyone usually have like you and you are starring. But what are the critical points? I think that the first step is you need to decide if you want to use overlay or not overlay. If we start with the VLANs, there is a limit. You have 4000 VLANs, I know it's too much for some environment but most of big customer has issue with this. There is no failure isolation domain, it's difficult for the managing and our experience is that the companies are separated into departments, so you have network departments, storage departments and when you need to have new VLANs, it's difficult to orchestrate Bermertal devices. In a lot of cases customers has different boxes. So it's complicated. So it's a VLANs. The second one is the overlay. After VLAN came the overlay, so it's simple. You don't need to usually configure the network boxes because you have encapsulation, VXLAN, GRE, MPLS over GRE, many encapsulation and one controller which orchestrate everything and this is most of SDN like you recognize it like Plum Grid, Midonet, MNNSX, Nuage Networks and maybe much more. And then recently they realize the new SDN, SDN solutions, which started to talking about no overlay, overlay is bad. Two years ago, on one year ago, everyone spoke about overlay. Overlay is great, use overlay, everything must be there and now time coming into market and I can see that no overlay is bad. It must be some intelligent IPv6, not translation between this. So it's a project for Calico and Romana and by point of view it's more for the really cloudify workloads like application which don't need L2 connection, don't need the live migration, which is almost impossible in some enterprises to build the cloud for them without live migration, no IP failure. So you're just launching cloud native application and if you lost one, you redeploy anyone else and you don't care what's the IP address and I think it's a future. It's a future for the containers, for the Kubernetes, for these orchestration plugins. When you don't care where is it and what's the IP address, you just want to know where is your service endpoint. So from our perspective, the VLANs are not so suitable for the clouds, for most of our customers because VLANs are static and we cannot replicate an overlap solution next to other developers needs to launch multiple same environments next to it so it's not possible. Calico and Romana is the future and we don't have a use case in real enterprise customers. So we will talk about the overlay and overlay solution and compare them here in this session. So the key criteria for the enterprises from our point of view is usually some functions like long balancing as a service so the application must be long balancing so it's inside of the solution some long balancing. Then the direct traffic data path which was the most critical thing in couple releases before Juno and even in Juno is what not in the production with OpenV switch the direct data path from the north south you have to go through some network node failure of the network node and I remember that when we had it in the production we could not sleep because usually it was very difficult to make it up and running then north south communications this is the next point to look at the SDN and think about if your SDN goes through the network node if the vendor has some appliance some special appliance which can be scalable or if it can be integrated into each router existing network devices this is I think it's important then multiple external networks how easily you can create multiple networks because in enterprise customers you cannot came and say them you will have just floating IP pool if not and that's it so think about external networks then performance and scaling is there any reference for a customer who has more than 15 oz or it's just SDN with one booth and with the nice party so this is very important and then the bare metal connection because a lot of workloads especially databases and some other appliances cannot be put into cloud so they need to get them out and then there are some SDN optionals for some service providers optional requirements the first one the open source for me is the most important but it's not critical for others but for me it's most important because when it's open source a lot of people can use it you can find the use cases you can contribute it you can see the whole development it's not behind the wall that some couple of people developing something can show you the slides you cannot take it try it so it's difficult and you never know what vendor will do then L3 VPN EVPN capabilities most of service provider requires from us to get the L2 VPN in their network in their virtual machine and then the recent stuff multi cloud solution Marek will talk about use case and architecture how we build a multi cloud integrated solution with SDN integration of the physical low balancers most of company needs to have SSL offloading directly on the hardware not in the virtual machine so it's the next stuff and then some IPv6 support and Intel DPDK to increase packet per seconds into your routers and SRIOV so it's a new feature stuff so let's talk more about two solution after we give you this requirement I am sure that you will find maybe two SDN vendor solution which are suitable and we took the open control because workday use the open control and control and most of our customers 90% customers running on the open source control and we will compare it a little bit with the DVR so if you look at this slide you can see that it's not easy to understand usually for someone who start why your instance is attached to the Linux bridge then it's top port goes to some QVO port then to QVR port then you go into internal bridge then you go into VLAN and goes outside so it's difficult to debug it you don't have any analytics you have nothing and you will be if you want to operate this you have to have very good know how and knowledge and it's very complex by the way Linux bridge is used because OVS interface is not able to work with IP tables so they put in Linux bridge between the solution so it's very complex and it's L2 and you need to bring your external network into each compute node in your infrastructure because otherwise it will not work so you can imagine that it's very difficult to put multiple external network in your infrastructure so I think that the use case for this is for companies we need just one external network simple solution not so big so this is my opinion and if we compare it with another open source solution open control you can see that the VM is just connected to the V router to the tap interface there are virtual routing forwarding tables for each network it's fully L3 it's overlay and you can have fully L3 fabric so you don't have to use any VLAN everything can be L3 rootable direct connection between them it doesn't use IP tables because if you boot 60vm on the server and 5 IP tables for every chain so 5x50 so IP tables are also not so very good for the scaling here are IP tables directly in the V router so this is the difference so last my point before I get the word my colleague is that the very good point is to have a direct datapad from your VM not only inside of the cloud but also on the outside so no network node I think DVR fix this issue but no also a proprietary gateway we have experience with two customers which tries some different sdn solution and they have a lot of issue with integrating external network through the appliances even if you can scale your appliances vendor solution appliances for 4vm or for bare metal machines you cannot get 9.6 gigabit throughput from your virtual machine outside of the cloud which is possible when you do the routing on the routers and not routing on the servers and I think that the routers are here for the routing so this is encapsulation usually MPLS over grand VXLAN with EVPN stitching so for example open control can be used with any network vendor Cisco, Juniper MX Alcatel we tested all these devices and terminate network there so this is from my site so Marek will explain more about other use cases what we did ok thanks the first thing I want to tell you are the considerations it's ok ok so as I said there are a few considerations you can do to have a better network performance between the virtual machines running on the different hypervisors and the first one is the encapsulation you use with OVS you got only VXLAN with open control you have a VXLAN as well but also MPLS over GRE and MPLS over UDP we are actually using these two encapsulations because the performance is much better than the VXLAN it's mainly because of the hardware of loading that suits better for like UDP and GRE than to the VXLAN and we only use a VXLAN if we want to north-south traffic from the contrail to the MX routers or other routers to get L2 stretched all over the data center so and when we are talking about scaling nodes and scaling the network I think that you will first run into the performance issues with rabbit rather than the networking issues with contrail so we actually sometimes switch off the analytics at the contrail because it gets really chatty no ok now I would like to tell you something about the features that are brought by the third party SDN controllers like open contrail and the first one is multi-cloud networking you can take like two different cloud providers like OpenStack and Kubernetes and connect them together through single SDN platform as you can see in the picture we can connect OpenStack together with Kubernetes so the virtual machines directly communicate with the docker containers and another use case can be having two separate OpenStacks for example on different geographical locations and you want to have the virtual machines on the same network so they can communicate on the same virtual network so this is how you can do it and the stuff behind this actually are pretty simple contrail controllers use well known BGP protocol to exchange the routing information so the only thing you do you actually create the BGP peering between the contrail controllers so the contrail controller actually doesn't even know that there is another contrail behind it he actually doesn't give it to them whether it is a router or another controller it just uses BGP to exchange the information so what can you do with that for example here we got Kubernetes and OpenStack together federated by contrail and you can have applications running on the Kubernetes because that's what our container is good for and but you want to have a backend running on the VMs so how can you do that you actually can do it with contrail by the BGP peering and if you are familiar with MPLS L3 or L2 VPNs actually what it takes is to put the root target under the VRF so to do that we only need to go the contrail controller of OpenStack and put the root target and then go to the Kubernetes controller and put the same root target and then can the containers communicate with the databases on a like same network L3 or L2 another use case that is quite good is how to connect the legacy world you maybe have applications maybe some kind of databases, Oracle databases which can be virtualized but sometimes you want to communicate with them on layer 2 so how can you do that there is a possibility with OBSDB contrail can manage physical boxes via OBSDB so you say which physical port belongs to which virtual network and then every traffic that goes to that goes to the interface is switched to the virtual machine and it's not vendor dependent so juniper switches or retest it also with OpenVswitch we put OpenVswitch on a bare metal server and we managed it with OpenContrail another stuff is managing the physical load balancers like F5 maybe you saw it with another vendors that they tell you that they can actually manage the physical balancers but it's actually through their UI so you just go to another dashboard and create balancers over there but I think that's not the benefit you can actually do it from F5 dashboard I think that the key benefit is that you should be able to manage physical F5 or other balancers via heat so you can have heat resources to actually manage the physical balancers this actually works with OpenContrail so as you can see in the picture it goes to the MX routers and from MX routers to the F5 and then you are just happening back to the router or you can go whatever else you want ok so the last thing that people are handling nowadays is how to use IPv6 in cloud not every solution supports that OpenContrail have full IPv6 support and not only with the virtual machines in the cloud but also you can expand it outside to the routers it's just another family protocol if you are using multiprotocol BGP so you just enable IPv6 tunneling on the routers and you got it ok, těku so we have the last 5 minutes so this slide just shows how we are deploying the OpenStack it's a logical model if I briefly explain this yellow are the OpenStack APIs and RubyMQ virtual machines everything is virtualized we are separating we have different approach than other vendors we are virtualizing and separating all the OpenStack services so this is the OpenStack APIs then we have 3 virtual machines with sealometer with MongoDB because sometimes sealometer broke up everything so you want to still have the functional of your cloud so we are separating this then we are separating proxies with the horizon and SSL proxies which proxies from outside of the world traffic to the inside to the n-genics then we have graphite servers for the collecting matrix from the cloud for our billing system and automatically integrated monitoring system based on open source monitoring framework and these 6 virtual machines are for the open control so we are running 3 2 kastandra clusters 3 virtual machines are for control config and control and 3 virtual machines are for analytics for the collecting matrix from the cloud this picture shows the cluster deployment I will skip it last slide where I tried to little bit compare the solutions so as I mentioned the important is the licensing so the control is fully open sourced no any limitation like other open source SDN same like DVR the hypervisor orchestrator we showed that we are able to scale your Apache server on the docker containers and your database is running on the virtual machines on the open stack very easily so it supports the Kubernetes because docker itself support for the docker itself doesn't make sense for us the only one case how you can use the docker is through some orchestrator like mesos or Kubernetes also support VMware vCenter this is same for DVR had some limitation because VMware doesn't want to have so much support in DVR because you should buy the NS6 and other SDN also support the VMware the support of VMware is every time it's through the virtual machine on the ES6 node all traffic has to go through this virtual machine except NS6 because all other vendors don't want to go into VMware kernel because it's not approved so they have service machine on each hypervisor to route traffic outside then the gateway routing as I said we are able to integrate this solution and attach your floating IP directly on edge routers in your DC and create any kind of VPN in DVR you have to bring and other SDNs doesn't have features for the floating IP association directly through the edge routers and it's easy because they usually prefer the VXLAN many times I came with the customer and they told me we need the VXLAN I asked them why and they said because vendors said that VXLAN is the future I think that MPLS over GR is fine and as Marek said the offloading on the Intel cards especially on old one Intel cards is much better than for VXLAN and the performance we are near the line speed with the solution in the VMs it's east-west traffic also north sound traffic and when we tested DVR we had some issue and we was not able to go through the 6 gigabits and when I discuss it with other people who use that they bought special NIC cards which provided better offloading for them so this is it and other SDNs because they have appliances and not routers they are also not able to go in one one session get this powerful performance so yes we are open contrail contributors and the SDN conclusion is that for us overlays still make sense because customer requires lot of this feature and they are not able I cannot came to customer and said no live migration no L2 no this stuff so it's almost impossible so there must be overlay and overlay brings the great integration between VM and containers which you could see on my keynote that we from Raspberry Pi created MPLS over GRE tunnel to the data center in Europe directly from the Docker container from this conference so it's pretty cool so join us our community it's huge on the slide customers are growing I think that lot of big enterprises it's running in the production like AT&T and other references what was mentioned on the summit so yes and I would like to say that it's not about Juniper as I usually also getting question that we are paid by Juniper we are not paid by Juniper we just realize that this work so thank you very much if you have any question please ask there is mics two mics where you can ask questions you mentioned that you sometimes found the analytics and the flow chatty did I understand that you turned it down because of that can you say a little more about that in the release of the contrail 2.1 or something like that we had some issues in the analytics because it sent information in each flow so it doubleized the traffic and we also had analytics integrated with the control and config together and we have one Cassandra cluster for everything and it completely destroyed the environment so we had to separate it into two Cassandra clusters and for some cases we disabled but the new version which was released has a special flow mapping and there are significant improvements in this analytics but yes we had to disabled so every software has some some mistakes so in our internal cloud we disabled analytics but at our customers they required usually that so it's running there hi thank you for your presentation so I have a question I understood the advantage of the OVA network based system opposite based system but I'd like to know your opinion about pure L3 based network as you presented as beginning of this presentation so in terms of advantage of the difference between the OVA network and pure L3 network as I mentioned if you mean the Calico and Urmana as I said it's a future and I would like to use that but the use case the customers needs the L2 for example between the VMs and as I mentioned the Calico and this stuff is more suitable for the containers and for the cloud native applications which are which was developed in this way but if you come to enterprise nowadays where mostly there is VMware v center and they think that they can take it like this and put it there and everything running it's not possible and you need to do some changes and what you cannot tell them is that there will not be any your features what you are using and switch here so this is the reason sorry, not a question just related to that, I thought I would just add that actually Project Calico does now support VM live migration as of the last year support it's possible to support live migration I like this project it's not like it, I don't like it I really like this new approach and I would like to use it and in some cases we are now trying to get it to customers so it doesn't support live migration so is there any other question thank you for your attention thanks