Welcome to JSA TV, the newsroom for tech and telecom professionals. I'm Jamie Scott-Okitaya of JSA reporting to you live here at the Chorus Communications Lounge at Channel Partners Evolution. And I am with Mr. Warren Rayburn, the CRO and EVP of TeleSystem. Warren, welcome to JSA TV. Good morning. Thank you for having me. It's an honor and as a matter of fact a good friend of mine introduced you to me just moments ago and the word integrity was mentioned. So I'm really quite honored to have you here, Warren, on the JSA TV hot seat, if you will. And you've been in the news of late, Channel Vision's channel program of the year for 2018 recognition. Congratulations on that. Thank you very much. So tell us what makes your channel partner program so unique and notable. Well, thank you. Getting a touch on the word integrity, I think it's a matter of the trust and confidence that's been developed historically with our partners and the relationships that we've engineered over the course of our existence. We've been in business since 1999. Chorus Communications is one of our longest tenured partners. So again, it comes back to for us standing by what we sell, being accountable for what we sell, engineering and delivering on those solutions. Ultimately, again for our program and the differentiators therein, it comes back to agility, accountability, the design components, the consultative element of who we are. We're creative in the offerings to our partners as well as it pertains to developing unique solutions, developing unique programs. We're willing to get creative. We want to help people succeed. We want to help people develop their businesses, grow their business alongside ours. And if we're fortunate enough to win the opportunities presented, we want to make sure that we're building a book of business together. Our average subscriber length of relationship is nine years in duration. So that's something that our partners can count on is residual income over a significant period of time. Our SPFs are competitive. But again, we want to differentiate ourselves in the creativity that we display and ultimately being accountable for what we sell. And that's very true to what I'm reading and hearing on the Channel Partners Evolution floor. So amazing job. Tell us a little bit about your security play. Yeah, absolutely. And in fact, we have two seminars today that we'll be hosting off the floor in one of our meeting rooms. But holistically speaking, we have four scrubbing centers across the country. We partner with Carrero. So we have a robust DDoS solution. Those scrubbing centers are located in Denver, Toledo, Ohio, Philadelphia, Pennsylvania and down in Mississippi. So we have everything being addressed on the DDoS side as it comes into our network. And then we take that situation and that solution out to the edge. And that being a managed security play on-site with the customer. We also have a cloud-based option for them. And we even have incorporated recently managed Wi-Fi into our offering. And we have two flavors of that also. So again, coming back to that creativity and agility, we're taking that from the core out to the client site. And a lot of news on the expansion front as well. I hear there was a ribbon-cutting ceremony recently in Denver. Can you tell us more about that? Yeah. So it's a very proud moment for all of us. I started with the organization in 2001 with the ambition to build a national model and a national network. So that is the westernmost point currently of our network. Looking to go well beyond that into 2019 and the future. But very proud. It's a third appearance of our MetaSwitch. It's a completely redundant data environment for us as well. So again, getting back to the security and the redundancy and the geographic diversity that we're looking to utilize to reinforce our national presence and our messaging. So much great news. 2018 is certainly a stellar year for you. What's on the horizon for 2019 in telesystem? Absolutely. So it's looking to continue to proliferate on that national stage. As I said, getting beyond Denver, we're looking to create more of a physical presence out there. We're going to expand our channel program with support options in six geographically targeted strategic regions. So for us, it's just building on the success of 2018. It's continuing to offer the services and build upon those that are making an impact in the customer space. So we're very proud of where we're at, but we know we have a lot more work ahead of us. So we're looking forward to the future in a big way. Well, certainly a growth story. Telesystem, a company to watch. Where can our viewers go if they want to learn more? Sure, absolutely. Please visit us at www.telesystem.us. We have a contact us form there. We'll get you in touch with one of our channel managers at that point. Feel free to reach out to me directly as well via LinkedIn. Bruce Wirt as well is our VP of channel sales for all of North America. And we'll be happy to help. There you have it. Telesystem.us. Thank you so much, Warren, for your time and your intelligence responses. They were awesome, very informative. And thank you, viewers, for tuning in to JSA TV. Happy networking. Thank you.


Yo, yo, yo, yo, yo, color is anywhere and everywhere. Each color has its meanings and can be used to tell stories, catch the eye of others, design products, and much, much more. Now, color blocking was big in the 80s and 90s and I can see why people get intimidated by these two words. But it is pretty simple and the good news is you're probably already doing it like a pro without even knowing it. So, today, I'm going to teach you how to use color blocking and color theory to compose some clean outfits. And I'm probably going to ruin the rest of your life because it's going to be all you're thinking about. Hell, my buildings are color blocked. Okay, so like I said earlier, color blocking applies to all types of design. And so, to understand how to design your five flame emoji outfits, you're going to want to understand the color wheel. Yes, yes, yes, let's take it back to elementary school where we'd all get excited when the teacher pulls this out. We learned how to play the recorder, went through those i-spy books. Oh man, the nostalgia. And those are good old days. But we also learned how to paint and mix colors. So, I'm going to run through this real quick because I don't want to bore you, man. But basically, there are three primary colors, red, yellow, and blue. And combining any of those three colors gives you your secondary colors.  Great! You get orange, red and blue make purple, and blue and yellow make green. Now, each of these as well, you can adjust the hue of the color itself by adding white or black, or basically changing its luminance. So obviously, red and white make pink, adding black to orange gives you brown, et cetera, et cetera. You can also affect the color by adjusting its saturation, or basically how vibrant, rich, or bold the color is. And if you guys didn't already know, all the colors combined equal white, and black is simply the absence of color. So I'm going to link this website so you can see how each color gets affected, and you can pick and choose the main types of ways you can color block, play with it, so you can get familiar with the colors. So now that we know how colors are made, let's talk about the first way. It is the most simple way, and it is pretty much impossible to mess up. I'm talking about contrasting. Yeah, contrasting is basically how it's done. We are going to stick to black and white for now because those are the main contrasting colors.    There's a reason why the band's old schools look so great. You're seeing Laurent Teddy Jackie. Each of these use the simple concept of contrasting black and white to create a clean, minimal piece. Like I said earlier, you can completely change a color by changing its luminance and saturation. Lighter, making it more pastel, and darker, making it, you know, post-breakup teenager. So with that, you can use that to add color to your outfit while making it contrast. Let me explain. Light wash denim with a dark olive green piece still follows the rule of contrasting because the top is still in the spectrum of being a dark color. And the light denim is, of course, light. Hey man, just remember, light and dark. It doesn't have to be black or white. I mean, it's the same reason why a raw denim and a white t-shirt still works. Raw denim is basically black in certain lighting conditions, but really it is a blue color. So contrasting it with a super light tone like a white t-shirt still follows the rule of contrasting. So now, let's dive into the super fun part of color blocking and to really step up your style game. Complimentary colors. Check out that site linked in the description. Select complementary colors. And you guys will see that complementary colors are on the opposite sides of the color wheel. They complement each other like fast cars in happiness. You're gonna be really dark and woo-hoo-hoo-hoo-hoo-hoo! The colors are used together to brighten each other up. It's really hard to explain, so let's just throw some fits together. My favorite is red and green, but also you can change the tone of one color. So I'm gonna roll with a classic fall vibe. Military cargo pants with your Jordan bread ones. A classic fit that works beautifully. Now we got orange and blue or your IG look. Now changing the blues hue, you can make it teal, complemented with orange, which is what you see in all IG pictures and travel videos, and for good reason. The colors complement each other, resulting in a super aesthetic, clean look. And this is why I like rocking my Royals with my orange staple shirt. And the dapper fellas are really gonna understand this one. We all know navy suits look amazing with brown dress shoes. Well, navy is blue with its luminance darkened and brown is also orange with its luminance darkened as well. So those pieces still complement each other. So bro, pick a color, figure out its complementary color, and you can adjust its hue, shade, tone, those are all the same words, and still pull off a super clean complementary look. Now before we get into the next way to color block, it can actually be a lot to think about. And sometimes I just like buying pieces that are already color blocked itself. And if this is the case with you, if you get a color block shirt, wear very neutral pants, and if you got a color block pair of pants, then your tops should be very neutral and not very loud at all. So that is why I want to talk to you guys about Black Taylor, who is the sponsor of this video today. As you guys know, cargos are like rice to me. I can't live without it. And my go-to place to cop cargo pants is from Black Taylor. They have so many unique designed cargos with awesome customer service, and they even have cargos that are already color blocked. Like I said earlier, military cargo pants with the bread ones, oof, are my go-to, and Black Taylor is the perfect place to go. So if you guys are looking for a neutral pair of cargo pants, or you're bold color blocked ones, click the link in the description. Make sure to use my discount code to save some of that money, because it is my go-to place to pick up some cargos. Make sure you click the link in the description and let's keep it moving. Next up is the monochromatic aesthetic. Look, this really ain't my thing too much unless it's the black tonal look. But basically monochromatic is where you select one color on the wheel and change the shading of that color to compose a clean outfit. It's very simple to follow. I personally like to keep it pretty mild. I wouldn't really stray out of cream, gray scale, or olive green, but that's just me. Now next up, we got analogous colors which sit next to each other on the color wheel. I mean, this outfit right here is already kind of in and out, kind of, kind of in and out. All right, so this outfit here, I can't talk. Okay, so this outfit right here pretty much follows the analogous color blocking technique. Now, you guys can't see my bottoms. I'm wearing underwear. But analogous colors follows three colors that sit next to each other. These are just two, so if I wore like a blue bandana, this would really follow the analogous color blocking technique. But I don't like to go too crazy with that. I usually like to stick with two colors that sit next to each other on the color wheel. But you do you, man. If you like what you like and you feel confident wearing it, just roll with it, bro. Now, next up is something I don't see people talking about when it comes to color blocking. I mean, everyone does it anyways, but I guess I'm just going to explain it. So it's something I like to call monoluminance, or basically just one tone. It's either rolling with just light colors or just dark colors. For example, I really like wearing a salmon shirt, light denim, and a pair of white sneakers. All of these are of a lighter tone, salmon being red combined with white, light wash, denim being blue combined with white, as well as white sneakers being white sneakers. Same applies to the darker look. Yes, I know this can be a little bit complicated, but test it out, bro. It's fashion, wear what you want. I really don't understand how people be getting upset about clothes. And I also got to throw some bonus tips in here.  I'm sure you guys have probably been thinking why silver looks better on some people and why gold looks better on some other people. It all depends on your skin undertone.  Plus, you can also use your hair to color block as well and just wear your typical accessories. So what's perfect are fanny packs, bandanas, extended belts, and crew socks. These can be used to add a splash of color and to be used to contrast or compliment another item on your outfit. Ah, Jesus. Well, fellas, I hope that was worth the wait. This video is a little bit intimidating because it's so hard to organize all these thoughts and make it flow well so you guys can understand. But yeah, hope you guys enjoyed this video. Make sure you guys give this video a like. Comment down below what's your favorite color blocking technique. Subscribe to the channel. And make sure you follow me on Instagram, bro. What are you doing, man? And until then, stay flying. I'm out, bro. Peace.


How you doing guys? Max here. Now we're here at the heat MMA gym down in Antrim with the National Lottery. We're gonna showcase some of the projects that the lottery invested in across Northern Ireland. Now I hear Ryan Burnett's in here today guys, so we're gonna head on in and see what they're up to. We went to the gym and we just got talking to the lads and the girls as well and we just start doing a bit of boxing training and just sort of breaking the ice for about half an hour so 45 minutes. Came back here and it's where we start talking to the young people and it is really getting good. Once we start relating and connecting the people they start holding it up and it got good. It's been a very positive experience for our young people because Ryan was very open, very honest about his life and his background. Was able to tell our young people that he's been in the same situation that they've been in. He's made bad choices but the big thing is you make good choices. It's up to you whether you make a bad choice or a good choice so it's been really beneficial and positive for our young people because they can see that Ryan relates to them completely. Me coming down here just takes a little bit of advice from someone that they look up to to change their ways and it can be as simple as that because it happened to me as a young lad. I mean I was getting so much trouble when I was young and I was in exactly the same position. It was a big wake up call. I always thought like how can I be a pro. I was thinking that when I was living in a small town down there I looked at Ryan and I was like if he'd done it I could do it and he said I got the skill and I've got the boxing IQ so I think I could do it like. He was telling us to just keep at school, don't mess up our lives, that he messed up when he was younger and that he knows how it's like and then he started making good decisions and then look where he is now. From sitting there talking to them I think they're all I think they're all actually sitting there thinking you know what like that could actually this could actually be me here it's not obviously they're probably not going to be a professional boxer but you know they could make some for themselves and it's not that big a deal it's not that big a deal that maybe they got expelled from school or something hopefully made them realize that they're way more to life a long life ahead of them. This is a tiny little bad decision they've made and they've got all the time in the world to make to make up for it you know. Well there are more places that are around the better and the big plus because we are big lottery funded and the whole project's big lottery funded it's a it's a bigger project than just what you see what Ryan saw today. We also have then our plus 16 again funded by big lottery so when our these young people leave um two years with us we still stay in contact with them you know we need more places like that that stay in contact with these young people 16 18 20 22 and people that they know that care for them. The lottery have given their effort allows these kids somewhere to go and it allows me to come in and just simply have a chat with them which might actually change their their course in their life because it's it's not it's not hard to tell that a lot of these kids are heading in the wrong direction but with the correct advice they can actually be coerced to the right way and it's only through this sort of setup that the lottery is doing that that can actually take place I think that gets looked over a lot I mean people don't really think about that but when you do start thinking about it it's so so important because the next generation they are the next generation do you know what I mean and the last thing the last thing that everyone wants is a kid just going down the wrong path and just ending up either dead or just a horrible life this prevents it


from Las Vegas. It's theCUBE, covering AWS re-invent 2018. Brought to you by Amazon Web Services, Intel. And their ecosystem partners. Well, good morning. Welcome back to AWS re-invent. This is day three of our coverage here on theCUBE. We made it. We have survived the show here. That's been a great show. And still a lot of energy out here on the show floor. Justin Warren, John Walls. We're with Lou Cerny, who is the CEO and founder of New Relic. And Lou, if you look just over your left shoulder, there's that really impressive New Relic pavilion you've got. We've been admiring it all week. So congratulations. That's been a great show for us. And our theme this year is build fast and break nothing because that's really the objective of moving to the cloud is building software that customers value as rapidly as possible. When you're building stuff fast, there's risk. And so how do you build fast with the breaking nothing? It's measuring everything in real time, everything in that environment, seeing exactly what's going on so you can make sure the stuff you're building works for your customers. And that's what we do for so many people who are adopting the Amazon cloud. Kind of reminds me of John Wood, the old UCLA basketball coach who'd said, be quick, but don't hurry. That's right. That's right. So it was all about pace and understanding and putting that culture in the team. So how do you put that culture and into with your clients? You know, it's one of the great truths. How can you manage what you can't measure? So we're a company that makes it trivially easy to measure software, infrastructure, digital customer experience. Our customers come to us every day and say, what I'm in love about New Relic is within seconds of setting up my account and deploying the agent. All of a sudden production is lit up. I can see what's going on. That measurement helps our customers have more confidence in moving to the cloud faster, deploying more frequently, delivering customer value more rapidly. Now, one of the themes that we've had over the last couple of days, and John and I were talking just before we came on this morning, that complexity. We've been hearing that time and time. The amount of change is happening so quickly and we've got all of these different systems. We've got microservices, we've got containers, we've got serverless. It's a really complex environment. How do you help the humans understand? How do you get them to understand what's going on in this really complex environment that's moving so fast? You're absolutely hitting on the key challenge and what we're great at, what our customers tell us they love about us is we simplify that complexity. And how do we simplify it? Well, one, we have a deep understanding of how these systems work and we've fought very hard about how do you surface the interesting information that's most relevant to understanding the health and application. And really in that moment where there's a problem, how do you make it as easy as possible to understand the cause of that problem as rapidly as possible? This is like, our customers, they're right in the pit of the most high-pressure situations when there's a production issue. Every second counts. Every second counts. You've got to find that issue as rapidly as possible. And what our customers tell us is they're sick of having to juggle around between three, four, five. Many of our customers have dozens of tools that are intended to watch production. They turn to New Relic platform because it's all in one platform. And when seconds matter, you don't want to be switching between tools and context to understand what the nature of the problem is. And that's super important. It's kind of like we all become pack rats in a way, right? We save things and we just keep putting them in this room, in this room, in this room and it comes time to kind of clean up or get our act together. And that's what you're doing for people is helping them get their act together. Absolutely. And once you've got an understanding about how the system provides you, go from overly cautious and timid to confident. And with that confidence, you can start playing offense with software. We talk about all the time. 15, 20 years ago, IT leaders thought of software as a defensive mechanism. When I say defense, I mean, it's a way to reduce costs. How do I reduce the cost of billing? How do I reduce the cost of handling a support call? Now it's offense. It's the growth engine for these companies, right? The digital customer experience is driving top line growth. And so when you're confident in your ability to move fast with your software, you're actually participating in the growth of your company. That's why it's so strategic. That's why the cloud is growing so rapidly. So if you've got a customer who's not with New Relic, clearly you want them to, they should be going with New Relic. Yeah, they're misguided, but they'll get there. What does it feel like to go from not having New Relic in there and dealing with this complexity and having those struggles, and then as you put in New Relic for the first time, what's that onboarding experience feel like? I once was blind and now I see. John Newton, amazing, great. Yeah, absolutely, exactly. No, it's truly that. Our customers tell us that before I discovered New Relic, I had no idea what was going on in production. And it was opinions that were telling us what was going on. And when you've got a bunch of teams working on a complex system and there's a problem and it's like the loudest opinions going to determine how you go forward, that results in chaos and it results in organizational misalignment. And with data, all of a sudden, people align on how you move forward. Yeah, so with all that data that's there, I mean, that can actually be complex itself if I'm trying to see everything all at once, that can be overwhelming. So how do you help customers dial in on what's actually important within this sea of information that they can now look at? Well, you know, we have a variety of ways in which we approach that problem. The first is an opinionated user interface. We have more experience in the realm, my first company I founded in 1998, created the category of application performance management. And so I've been thinking about this problem, my teams have been thinking about this problem for a long time. We come to our customers with an opinion on what matters in the application environment. But even then, beyond that, we're layering on AI, but we call it applied intelligence because artificial intelligence, people overuse the term. And honestly, our customers don't care whether we're using a collaborative filter or good old fashioned algorithms, but they want us to put more smarts in our platform to tell them what's anomalous, to tell them what's abnormal, to tell them what to pay attention to in this sea of data. New Relic collects about 15 million data points every second off of our customers' applications and infrastructure and digital customer experiences. 15 million data points every second coming to the New Relic cloud. And we analyze all of it in real time to surface to our customers what's important, what's anomalous and what's interesting. Yeah, so let's get into that discussion about what's anomalous and what's interesting. How do you differentiate that? Because as you said out of 15 million data points every second, I mean, you're going to develop trends, but by the time you evaluate it seems like one set of data, you're off to a completely different set of data because it's a very dynamic environment. Well, it's a combination of an understanding of how applications work in general, but then the flexibility to recognize how an e-commerce application might be very different from a content application like USA Today Networks is a big New Relic customer. And so we need to provide enough of a platform that our customers can give New Relic some guidance on the nature of their application. And we can discover its architecture and we can discover things about it, but we really can't discover its business purpose. And so there's a combination of what we do out of the box with the customized ability that get our customers the point where the software's doing the work for them. Right, so having been in the show now for three, four days, what have you seen around here? What are customers looking at that they're going to bring on to their environment next? What are some of the things that they're looking to do? Well, I think that Lambda is coming mainstream, right? And so when we think about where the world is going, microservices are going to be here for a while just like all the other technologies you said, like the pack rat analogy is true, but in the future when someone starts a brand new project, they won't even think about infrastructure. They'll just think about their code. And New Relic's philosophy on visibility is you start with the software because the software is the whole of the business logic. The whole point of all this infrastructure is to run software. And so our most important starting point for visibility is the software itself. We just made an announcement this week about delivering the first product that automatically instrument Lanza to tell you if your Lambda function is misbehaving, exactly how is it doing that? And so as the world continually moves from the old IT used to obsess on infrastructure and new IT obsesses on how do we deliver more software faster? And that aligns very well with what we're great at and what our philosophy is on delivering visibility. It starts and ends with the software. And it feels like people are going into Lambda really quite quickly, because I was talking with some meetings this morning that they were saying that enterprises in particular may not have actually jumped onto the container bandwagon yet, but they're looking at Lambda and just going, you know what? It's going to skip straight to that. Yeah, I'm seeing quite a bit of that. Containers still have an awful lot of value. They're wonderful light ways to host what used to be on a virtualized environment and get that isolation, all that benefit. Kubernetes is also a big deal. We made an acquisition of a company called CoastScale that we announced last quarter that accelerates our capability to do work in Kubernetes environments. We're always inspired by what our customers are doing to accelerate how they build their software. And that inspires us to make sure our platforms continually their tool of choice to make sure they can see the entire environment. So you're getting as much from them as they're getting from you? Absolutely, it's a great partnership we have with our customers, we learn from them, and then we provide them with thought leadership on how do you think about making sure you're seeing the entire environment so you can spend more time delivering great software and less time debugging it. Excellent. Well, let's get back to that great booth of yours. Awesome, great. But thanks for being with us. Yeah, thank you. We appreciate sharing the new relic story and success on the last day of the show. All right, well, thank you, all right. Excellent. All right, Lucerdi joining us. Thank you. From New Relic, back with more here with AWS re-invent. You're watching theCUBE from Las Vegas.


Greetings random electronics friends. Today I got a box in the mail and it was from eBay. So this is a Radio Shack TRS-80 Model 100. It's kind of like a basically a portable computer with a large LCD display. So I got it for $80. There are two of them and there was also a book. So the listing says one definitely turns on and functions with batteries. One is unconfirmed. Both are being sold for parts and repair as is. Comes with the handy reference guide to get started. Things to do with your TRS-80 Model 100 computer. Comes with two battery powered computers powered by four AA batteries not included. Electrical power possible with pro something or other. One of these units definitely turns on and powers up properly but further testing does not be done. One of the units does not appear to. So here they are. Let's take a look at them. And indeed, things to do with your Model 100 computer. Dilithium Press. Wow. When was this book? 1983. Interesting. Other high level languages. Pascal. There's a set. Well you can program this in assembly language. Your Model 100 computer is not ready to be programmed in assembly language. Oh, when you turn it on. You need an assembler. At present there are no assembler programs for the Model 100 but several should be available by the time you read this chapter. Well, that would be nice. I would like to program in assembly language. So yeah, they basically, oh look there are notes in here. Printer should be tractor and friction load. Parallel plus serial. Be sure the cassette tape is in the recorder and has been advanced past the lead in maybe a bit further. So that's interesting. Alright, well anyway, that's a book. Interesting, I have some fabric samples. I have a whole bunch of fabric samples. That wasn't in the listing but okay. Does anybody have any suggestions about what I should do with these fabric samples? Because I sure don't know. But that's fun. Okay, so here we go. Two computers. So let's take a look at these. So, wow, it's very, very yellowed. And if this is the original color, that's really yellowed. Wow. So there are two possibilities. I could do the usual retro-briding on this. I did see that somebody else basically used spray paint matching the color. And they say that it turned out pretty good. It looks like there are some scratches on here. I wonder if this is just easily replaceable. It's just plexi. That's kind of a keyboard that really neat. Wow, that's kind of sticky keyboard. Okay, so we've got, this is the battery cover. Okay, I did get batteries. That's interesting. So here it says memory power. And I read that there is actually an internal battery in here, which is not great. Because, of course, internal batteries always leak. That's interesting. It says super rom or something. I don't know what that's all about. But that's kind of cool that you could put a chip in it. So yeah, one of the definitely important things to do is if this does turn on, make sure that the internal battery is out of there. How do I turn this on? Is there a switch? There is a switch. There's an off switch. Let's turn. Ooh, it actually turned on. Well, okay. Apparently this one works. How do I move down? I don't know if the camera is picking this up, picking up the LCD. But yeah, in any case, this is actually working. Select, can I just type in basic? Apparently so. 10, 10. The one is a bit sticky. 10, print, quote. Hello. With 1L, 20, go to 10, enter, run. Apparently it just scrolled off the screen and maybe it's printing something. Well, anyway, okay, so this one seems to work. I kind of wanted one that didn't actually work. So that must be this one. Let's see. So the battery compartment, ooh boy, that's crusty. That could use a clean. And one of the battery contacts, I don't know if you can see this. Let me see if I can get the light in there. Yeah, so this battery contact right here is all crusted up and that is very possibly just why this doesn't work. So I'm going to, let's see. Rob tries to fix a thing. Well, I'm just going to clean these contacts and just see if that actually does anything. That's unfortunate. There used to be something here. What was there? Oh, the FCC sticker. All right, so let's take the batteries out of this one since I was so kindly provided with known working batteries. And let me go get my fiber stick and clean these. Okay, so there is that. And this is this fiberglass stick that I, so this is a fiberglass scratch brush. Got the idea from my mate Vince. He seems to like using these and they seem to work pretty well. The only thing is that they're pretty nasty because they give you little bits of fiberglass, which is pretty nasty. So what I'm just going to do is just sort of rub the top of this just to see if I could get past any initial corrosion, especially this one, which may just be a lost cause. I don't know if that might do something. It could do. And I'll just get this one. This one looks pretty good. Let's take a look at these. So these also look fairly decent, aside from the corrosion and chemical stuff crystals that are stuck in the battery compartment. So yeah, really the only one that I would be worried about is this one right here because that was pretty crusty. So all right, maybe I should do a quick continuity test because it goes from here to here to here to here, here, here, here, here. Well, no, I'll just plug it in. Why not? Oh yeah, plug it in. I could always plug it in to something, external power, see if it works, but I'm not happy with how that sat in there, especially since it was backwards. Why are these backwards? Why did I put them in backwards? This one goes like this. This one goes like this. This one goes like this. All right. And this one goes like this. All right, well, let's just see if it powers up at all. Oh, I hear something. Oh, wow, that's not great. Yeah, there's something rattling around in there. And the Y key seems to be stuck. Well, okay. Yeah, well, again, the Y key is stuck. You can see that there's a streak down here. Maybe that's because the LCD connector is not working properly. The contrast seems to be off. See if I can pull that Y out. Okay. Yeah, seems to be working or not. Pressing I and I'm getting a 5. S works. W works. T works. Oh, that must be num lock, I guess. Yeah, there was a num lock here. And unfortunately that's stuck too. All right, so this one obviously needs a little bit of work. The keyboard is stuck. The LCD display appears to be part of it. Maybe one contact is not working. But aside from that, this also seems to be working well. So this one is the one that needs help. So let's see if we can help it, especially with the thing rattling around in here. All right, so let's just turn this off. Okay, so the one that doesn't work, so again the listing says one of the units does not appear to. I should probably look at the printout. One is unconfirmed. So maybe that was just because of the corrosion, because it definitely works. Yeah, this could also use some cleaning. There's some tape on here, which I can... I don't want to use the razor blade right away. I will probably use some, what is it called, goop off or goof off or oof off or something like that, which sort of loosens the adhesive. Let's see what was in here. Did I look at what was in here? I don't think I did, because this seems to be a little bit stuck. Let's see what's inside. Nothing. Okay, so apparently there is some sort of extra chip that you can put in here, which I did not know about, but everybody else who is familiar with this does know about it. Okay, let's use one of these fabric samples to... There we go, I've got a use for this. All right, let's go ahead and open this thing up. There appear to be four screws here. It's nice that they didn't hide them here. Two of the rubber feet are missing, but that's only to be expected. Gonna come out. Not without a fight. Let's see. Okay, maybe I should just get a spudger to open this up. I'm kind of assuming that maybe there's a tab. Let me see. Were there any screws over here? I don't think so. No. So there's no screws here, no screws here. So let me go get a spudger. Here is my spudger, and see if we can feel around in here. There we go. Okay, so that's one side, and it just promptly closed again. Let's do that again. All right, there's one tab. Should be another tab here. And there would be one more tab here. All right, there we go. Let's see what we've got. Okay, interesting. It opens up like a book. Okay, what was rattling around? A screw. There was a screw in here that was rattling around. That's not great. This is the famous reverse chip placement that pick and place machines would not want to do. So, yeah, upside down chips here. Right set up chips here. So, well, that saves some space. I'm not sure why that was done. Let me zoom out because I'm looking at this and I don't really see anything in particular that would require that unless they just did that because it was convenient for routing. I bet they just did that because it was for routing. Here is the battery that really should be taken out because they do tend to just leak. So, I'm probably going to just remove that. There are a lot of, let's see, there are a lot of things in here. There are a lot of things. That's interesting. A little rubber thing on a post. So, the keyboard definitely needs work because we've got some stuck keys here. The Y key is stuck. The num lock is not doing anything. The caps lock just got stuck. This is all stuck. So, I really just want to clean this. So, maybe that should be the first thing to do. I can probably take this out entirely and there are just two connectors, it looks like. So, let's see. Well, that's interesting. This is all loose. I wonder if somebody has already had a go at this. This must be where that other screw came from. It's kind of rusty. And, yeah, I think that is where the other screw came from. Here. And, wow, yeah, okay. So, it is a little rusty and a bit corroded. And the reason for that is that the battery compartment is right above it, which means hopefully, I don't see any corrosion in this area, which is good. So, yeah, so I don't think this is a damaged board. I think it will work just fine. Once I figure out the LCD problem and once I clean the keyboard out, the spacer here for the keyboard, and here is the keyboard itself, appears to be a metal bracket of some kind. That goes on to the keyboard over there. And this just comes right out. Let me unplug these. These are a bit tight. I don't see any particular locking mechanism. So, I'm just going to assume that you just pull these out. That's really tight in there, but it comes out. So, there's that. Okay, it is polarized, which I always check when I take a connector off, because if you take it off and it's not polarized, what's this? Is this a bug? Mouse dropping? Because if you take off a connector that's not polarized, then you don't know which way it goes back. This is a little dangerous. I don't really want to lean up against or force against those capacitors there. This is coming out now. These are just very tight connectors. Okay, there we go. Done. Done and done. So, we've got what appears to be a fabric on top of the, below the keycaps. I guess I could just pull the keycaps off. Is that possible? Yeah, they're still stuck. Let me see if I can pull one of these keycaps off. Maybe the caps lock button. Yeah. Okay, so the keycaps just come right off, and then the felt comes off of that. Oh yeah, okay. So, it seems as though the problem with these keys is actually inside the key. So, what I may end up doing is what I've done before is basically take all the keys out, take all the keycaps off, and unsolder all of these keys from the printed circuit board. Then, you can actually get inside each key and clean it. And that seems to work really well for these keys. Alright, so that's something that I'm going to have to do. Let's take a look at the LCD. See if there's anything funky going on with that. So, we've got a ribbon connector here, which does have tabs on it. So, I want to actually know that those aren't tabs. That's just the ribbon connector itself. Alright, is this polarized? No, it is not. However, will it just go on one way? Well, it's not going to twist like this. So, it's going to be straight like this. So, that's fine. And we've got an LED connector over here. So, let me remove that. So, we've got red on the left side, red on the right side here. Let's remove it from this board. Let's not. Let's remove it from this board. Something a little more firm. These connectors really are quite resilient to being pulled out. Okay, and this one is polarized. Great. So, what I will probably end up doing with this side is removing the PCB and just giving it a nice clean with IPA. None of the pins seem damaged. The reset button seems to work okay. These switches, well, I haven't tried. This is the power switch. This other one is answer and originate. I guess that must be for a modem. And then we've got this connector, whatever that is. Printer port, serial port RS232C. That's a serial port. But it's 25 pins. Okay. Here's the volume control. There's some dust in there. And there is also the on-off switch. And oh, what is this? Deer and ACP. I don't know what that is. So anyway, I would definitely take this out, clean the corrosion off of the battery. Okay, we've got this LCD. So let's see if we can figure out what's wrong with the LCD. Let's take it out first. And yeah, so the problem was on this side. And notably, that screw was missing. So I'm wondering if there is an elastomeric strip connecting to the LCD. So we've got the piezo. Let's remove that with the piezo connector. Like every other connector, it's extremely strong. And the piezo comes off. There we go, finally. Okay, so. Okay, this is the front. I don't know if there is a polarizer. If this is a polarizer or not, it may not be. It'd be nice to make a new one of these. Let's see. It looks like... Yeah, okay, so the bottom is just one piece of plexi. But then it looks like there is another piece of plexi that's glued on top. Better off leaving it alone. And it appears that there is some sort of... Yeah, there's obviously some printing over here, so I don't really want to mess with that. Okay, so that's this. So let's see. Oh, this LED is looking a little bit sad. It should be straight. There we go. I don't see anything obvious. I do see an elastomeric connector over here. Elastomeric connectors are used on LCDs that don't have pins on them. They're just glass with pads printed on them. And the elastomeric strip is basically just a rubber strip with basically conductors running through it like this at a very fine pitch. So essentially you just slap it down and you get wires that go down like this.  And it doesn't matter where the strip actually is as long as the strip is a fine enough pitch. So we've got one, two, three, four, five, six, seven, eight, nine, ten. Ten of these display units. Presumably that is to drive one-tenth of the screen. So if one of these chips were bad, I would assume that part of the screen would also go bad. So let's see. It was like this. And like this. Okay. So we had a bad streak over here. Now why is that? It could just... See that really says to me that there could be some bad connection in there and all that needs to be done is to have it cleaned up a little bit. In order to do that, I would need to twist these out of the way and then pull the shell off and then the LCD would just come right off. But I just want to see if there's any other sign of damage. I don't really see anything over here. The other possibility, no, I don't think it would be this ribbon cable because again it was just affecting a part of the screen and I think that this is just for communication to these chips. So again, if there was something wrong with this ribbon cable then I would assume that a whole tenth of the display just wouldn't work. The rest of the board looks pretty clean. So why don't we start with this. I'm just going to hook this back up to see if maybe the problem fixed itself. That doesn't mean that I should not clean it. I definitely should. So what I'm going to do is hook up the ribbon cable. Okay. So now I can just put that sort of over there like this. Hook up the keyboard. So now the keyboard is hooked up. And is there any external power connector? There's phone, cassette, printer, RS232. Yeah, there is. That's actually looking a little crusty as well. Look at that. Here, let me zoom in. Look at that. That's all crust. Yeah, wow. All right. That's going to need replacing. That's definitely going to need a replacement right there. So, okay. Well, we're going to go with the batteries for now since we know that works. So I'm going to carefully turn this. I don't want to damage the LCD. Let me zoom out. Let's go ahead and put the batteries in. Turn the unit on. Let's turn it upside down. Turn it right side up. And I don't want anything touching anything else. Okay. Let's turn it on. So, yeah. So we do have this streak here. Pressing down doesn't seem to do anything. This LED. Oh, I see. That LED says low battery. So that should not be lit, which is fine. But there's definitely something going on there. And pressing down doesn't seem to do anything. It almost seems like it's just one character. Right? Because the F is missing from here. And only the F. And it's seven pixels across. And I think these letters are all five by seven. So I wonder if there's something wrong with maybe a character generator. So maybe it's not receiving characters properly. I mean, what in here would do that? I don't know. So again, I'm pretty much suspecting this. So I'm going to take a chance. And I'm going to open this up. And I'm going to give it a nice clean. And then put it back and see if that does something. And the traces all look okay to me. So yeah, let's just do that and see what happens. Right. So in order to take the LCD off, I'm going to have to twist these bits of metal. And I hate twisting the metal because that always means that you're going to add fatigue to the metal. And fatiguing the metal means that you always have the possibility of breaking one of these tabs off. And then you're not going to get nice compression on that elastomeric strip, which kind of ruins everybody's day. So I'm going to use this, the Nejisaurus engineer. This is cool because it has usually pliers just have these lines running this way. This one has them running this way in the middle so that you could actually grip the head of a screw and turn it without too much trouble. So I think this is probably a good tool to use to turn these tabs. It seems to be working pretty well. I don't want to turn them very fast. And I also don't want to scrape the PCB because these vias are awfully close. Okay, that's all of them off. So I should just be able to push the top off to see what we've got going on underneath. I want to be a little gentle. I don't want to bend too much because this is a piece of glass in here. And replacing LCDs is pretty much impossible. Where's my splutcher right here? Looks like this could use a little help. So there's this. So it appears that it went on like this. And it is polarized because we've got two little slots cut out on either side so this can't go. It can only go one way. Now I lift this off and elastomeric strips are just sticky. So you can just peel it off. And then of course the important thing is that you have to know where the LCD itself goes. Because the LCD has lots of fine pads. So lining up the LCD when you put it back is pretty important. So yep. All right. Can you see that? Can you see the corrosion? That is the source of our problem. So there appears to be maybe a little bit of corrosion here as well. A tiny bit here. But yeah. That would definitely do it. If we look at the underside of the elastomeric strip. Yeah. See unfortunately it's sticky. You know you do have to make sure that it's clean when you put it back on. So okay. So I'm not going to remove the elastomeric strip from the LCD. There's no reason for me to do that. I think it's probably just fine. It probably sealed okay. The corrosion came from the other side. So let's just go ahead and give that a nice clean. First I will just use a little bit of the fiber to get just the top off. And then I'm just going to take some IPA and wipe that. So I've got my IPA container here. And I've got some Kim wipes. Just give it a nice clean. The corrosion is still there. I have to give it a little bit of fiber cleaning. I don't want to get too aggressive with the fiber cleaner. Because I don't know if the pads will come right off or not. If I do that. I heard that sometimes you can also use vinegar for this problem. Just to neutralize the corrosion that's in there already. It's still there. Let me give it a gentle scrape. Just a very gentle scrape on the top. Let's see if we can get anything off. It's being kind of stubborn. I'm going to look at it under the microscope to see what exactly it is. So it was a little bit of a sticky kind of residue. Scraping at it did help somewhat. So now it looks a little better. It's not perfect. There's still what appears to be a little bit of corrosion on it. But I think we can call that done. So, yeah. And it did seem to cover just about five pins. Actually not seven. So that would definitely be the source of the problem. All right. Let's go ahead and give the rest of the pads a nice clean. And then we'll see if we can bring this LCD back to life. I don't know if I'm supposed to be cleaning the elastomeric strip with IPA. But we'll see. I'll just give it a gentle going over. I just really want to get any of the dust that's stuck onto it off. Any dust or hairs or anything like that. Because that could really ruin your day. I can also look at this under the microscope. Okay, yeah. There were definitely bits of things stuck on here. And if you can look a little closely at this, it's really hard to see. But you can see that there's a strip running down the elastomeric strip like this way. That's the thin... Come on, focus on this. All right. How about we just do this? Okay, so that's the thin contact area. That'll contact this.  So how did this go on? Any clue? Any clue. I believe that there was a little bit of a defect on this side. You can see that over there. And that went on this way. I did notice in scraping this that there was a tiny bit of corrosion left stuck on the strip where the other corrosion was. So there appears to be a guide here and a guide here which presumably is where the strip should go. But it doesn't quite fit. So I'm a little bit at a loss to figure out where this is supposed to go. One possibility is simply to put it here and to move it over until it's done and then just call it a day. So let's see if we can do that. So I'm just going to line this up. So I've got it lined up like this. So now the question is how far back and forth do I have to move it? So let's go ahead and hook this thing up. I'll just attempt to hook it up. I need to put the batteries in it. Let's do that first. Batteries are in. So I'm just going to leave it like that and turn it on. It is on. So we can maybe move this a little bit back and forth. I'm not getting anything. I am getting something. It says select. Is it lined up? I think it might be lined up just like that. And you can see, hopefully, you can see the F in Microsoft. Now we are seeing a strip down the middle that isn't being lit up, but that's only because I'm not squeezing hard enough. So I think this is aligned. So the reason that I think it's aligned is that there's an S all the way over here and it's all the way to the left edge. It doesn't appear to be any more pixels in that direction. So I'm kind of hoping that that's it. Also, it appears that these two little lines over here are roughly centered. Place this here. And then see about attaching this back. Let's zoom out a bit. The idea is that I want to... Huh, I wonder if this is the thing that aligns the LCD. Could be. Because I do see that the edges pretty much correspond with these slots on the end. So maybe I didn't have anything to worry about. There it goes. Right in there. Let's just get rid of any crumblies. Okay, so. So now the key is that the strip is going to be compressed by the twisting of these tabs here. So what I have to do is basically press it down pretty firmly and then move the tab. So that's it. Now I don't know if that applies sufficient force because I don't know if in twisting these things whether they actually lift it up or not. I suppose that I could also compress each one of these tabs like this. I'm not sure I want to do that though, but I may have no choice if it doesn't work. So let's plug it in and see what we have. Let's plug it in the right way. Here we go. Plugging it in. Turning it on. Off. On. That sure didn't work. We're not getting much of anything. So I'm looking at the sides of the LCD to see if maybe it had to be moved over a little bit. Maybe it does. Ah, there we go. It works and I found the contrast control also. Okay, we've got a few lines that aren't showing up. So if I turn the contrast up a lot we can see that we've got some lines that are not properly connected. And if I squeeze these, if I squeeze this area it does seem to work okay, but it looks like this pixel down here is sort of bleeding into the other pixel. You can see this zero over here is a little thicker. It's basically duplicated pixels. Same thing with the E over here. So I think what's happening is some of these just aren't lined up quite correctly. There's some other doublings over here. So you can see that the Y is cut off down here. I think that is just on purpose because it just runs off the end of the display. The top of the Microsoft is on the top of the display which is correct. Although I kind of sort of see a pixel, a couple of pixels up there. A couple of pixels up here. See just above the zero? There's like that dot over there. Does that mean that we're missing an entire row? Well, okay, so what I can do is remove this again which unfortunately will cause metal fatigue and try to line it up properly again and this time try to be sure that it doesn't actually move. And actually comparing this to this working one I can see that the Y in bytes is actually complete. So in fact there is supposed to be an extra row and the whole thing is supposed to move up. So this is definitely misaligned. So I'm going to have to figure out how to get it properly aligned. Well, I suppose this means I should try again and this time I better get it right because otherwise I will fatigue these tabs too much, they'll break off and then they won't apply any pressure to the elastomeric strip anymore. Alright, so I've given the thing a good clean, gotten rid of all the little dirt specs and now I know how to align this properly. So I'm just going to place it very gently. Okay, so it does actually look like there are two missing pads on either side. Now it doesn't even seem to be toggling. Okay, so how do we remove this? It doesn't seem like there's any obvious point of entry. It's possible that the top could get levered off. Let's try it. Yeah, it doesn't look hopeful. Maybe what I could do is just consider this key a sacrificial key and just, you know, replace it. But for now, let's see if I could take the top off. How's my microphone doing? Still working? Yep. Okay, well I couldn't find anything really online about opening one of these up. So I'm just going to have to experiment and see, maybe sacrifice one of these just to see how it's taken apart. Alright, so what I did was I cracked open one of the sides. I guess I'll just, maybe I'll try pushing on this side. See it's not. It's not. Ah, okay. So maybe the key is that I just have to get enough leverage in here to open it up. So we've got a spring. We've got the key stem here. And the mechanism, let's see, we've got a plastic piece here with what appears to be a little wire through it and contact. And on this side we've got some copper metal, but I don't see what's supposed to provide the buckling action really. Oh, I see. There is actually some plastic formation here on this key stem, which may provide the buckling action. And possibly this also acts as a hinge. So let's just attempt to put it together again on the off chance that whatever was preventing it from working is gone. Not likely, but who knows. So I think what's supposed to happen is that when you press this key down, maybe this thing slides back and forth. We're supposed to slide back and forth. Well, it's certainly not doing it now. This is just supposed to go the other way. Beats me. It's a mystery. In theory this would get put back like this if the tabs weren't all broken. Well, it's almost working. It does kind of feel that it wants to lock, but it's not going to. So that's a loss. But hey, check this out. I got the LCD totally working. No blank lines. So I did that by just finding where the blank line was. That's where the signal should be and gently squeezing. So not too hard so that the glass would break. But the idea is that the strip really needs to press up against the pad on the printed circuit board and the pad on the LCD.  So it actually looks like it works. So really all I need to do now, I've cleaned the keyboard. It feels okay. These aren't the greatest keys. But the problem is the toggle switches. So I really have to go on eBay to find parts, computers, because unfortunately, or maybe fortunately, the other three machines that I have all pretty much suffer from the same problem, which is that the LCD has a few lines that are missing that can probably be solved relatively easy like I've showed. And the keyboard needs to be cleaned. And that's really all that's wrong. So I'm basically just going to look on eBay for bargains just so that I can use them as parts computers. And I guess that's really about it. I don't really have much to do. I do have to replace this power plug. So again, that's something that I'll have to use a parts computer for. But aside from that, I'm pretty satisfied. This thing just turned off. I'm not sure why. I guess it turns off after a while. So yeah, that's about it. There's not much that I can do with this thing as it is right now. I can run basic. There's a text editor. There's a modem, which of course I don't have. There's an address book and a calendar application. And that's about it. And you can put your own applications here and presumably they go into RAM.   There's a switch on the back which says memory power and you could turn that on or off. And if it's on, I believe what happens is this battery here gets connected to memory so it retains its memory. I have no idea how good this is. I can certainly measure the voltage, if any, coming out of it. 4.6 volts. That's actually not that bad. So the RAM itself doesn't take a whole lot of current. So you can see that the voltage is actually not drooping even though it is maintaining voltage for the RAM contents. So that's actually pretty good. Unfortunately, I do see some leakage. So I am definitely going to have to remove this and either replace it or just leave it out as is sometimes suggested so that this doesn't happen again in another 40 years. So, yeah, I can just take that out. And I think that's about it. So there we go. Sort of fixing a TRS-80 model 100. Thanks for watching. And don't forget to subscribe if you want to see more interesting fix-it videos or electronic design videos. Thanks again. See ya.


Hello, I'm Stefan Prodan, I'm a Flux Core maintainer for a long time now, very happy to be here with you and I'm super excited about Alec and what he will share with us, he will tell us how Cisco uses Flux XK, and after he is doing his presentation showing us how he is using his Flux, with Helm, with Customize, with Advanced Kitripo Setups, I will come up with some crazy ideas on how to optimize the current setup and hopefully some of you will try these crazy ideas and tell me afterwards if they work, okay? Thank you. Go Alec. Thanks, Stefan. Yeah, good afternoon. My name is Alec Carzon and I'm principal engineer in the Cisco IoT group and two years ago I had to come up with a plan to deploy a lot of workload on Kubernetes and in our case we have a lot of data centers to cover, probably around a few hundred clusters and we have not different wide variations of type of workloads to deploy, so pretty tough problem, but two years ago there was not much documentation on how to do this with Flux and I'm going to do two days, I'll kind of show you how we did it and how it works and in our case we have a big team, we have over 200 people working on this platform, going from developers to testers, people who release code, people who devops on SRE teams and it was really a challenge to see how to build something around Flux that allows all these different teams to work together without, no, with as little friction as possible and in terms of what we're deploying, we deploy a mix of open source home charts and a lot of home charts developed internally, around a few hundred and on every cluster that we have to deploy to they can be different types, different size, some data centers have different loads and in our case we had to deal with no disparity of targets and all of these data centers currently are running across the world, we have some in Europe, Asia, North America, Middle East and we also are trying to have a common model to deploy on-prem and on public cloud as well, so the other concern we had is when you define production, you have to make sure that not everybody can touch these deployments, so the way to organize the Git repositories when you use Flux is very critical in ensuring that you can control exactly what goes into production, so we're going to cover all of these different aspects. So if you're new to Git, the first thing that you'll have to do is kind of decide what kind of Git repositories and what layout you're going to use, so if you start there's a single repo that's very easy to use to start with, so a lot of people use single refos and then they start adding more home charts, more clusters and they start to run into issues, like for example, as your team grows you'll have single refos, we'll have a lot of commits on it and you have a mix of commits coming from developers, from your leads teams, and the problem is there, it's very hard to enforce that only certain people can commit to productions versus a task response and if you look at the Git log it becomes a mess because maybe 90% of your history will be developers testing deployments and then maybe 5% is just the production clusters, so not pretty much the only way for large scale is to have multiple Git refos and multiple Git refos kind of rest most of these issues, the challenge is how do you keep these Git refos in sync, so and the other challenge we had is how do you link Flux, deployments to the way that you build software, you can have a lot of users developing changing code and home charts, how do you tie all of these together, the way that we do in terms of Git repositories we use a two level model, two levels of Git repositories and what you see here is on the left side you see all the source code of your applications, that's where 99% of your code resides, in our case we have one Git repo per application or per home chart, and there you see a mix of open source time charts and internally developed time charts and we have a CI system that builds these home charts so every time somebody commits something there the CI kicks in and builds the home charts, the container images and go into container registry and the home repository, so that's the lower side of it, on the right side you see a lot of clusters and we have two types of two groups of clusters, let's say one that's on the production clusters and another group that are all the test clusters that we use for testing and for that we're going to see a little bit how these Git repos work together and let's start with the level two, this is cluster, we call it Blueprints, Git repository and this repo contains deployment instructions on typical workloads that you want to deploy on every type of cluster, for example you have two examples of Blueprints, one that deploys our vault server and another one that deploys an application that is comprised of several home charts and you see in this example we deploy the vault Blueprint in one cluster in production and then the application Blueprint we deploy it in three different clusters, so the role of this Blueprint repository is really to contain instructions of how to deploy a certain type of workload, like which home charts to deploy, what are their dependencies and these repositories is not very big in size, maybe a few thousand lines of code, it contains mostly flux, custom resources like Helm release, Helm repositories and dependencies between them and what the owners of these Git repositories are really people who develop applications, so developers own it and every time they add a new home chart they usually create a new Helm release on that Git repo and then they attach it to a Helm repository and from there it's ready to deploy to any cluster and this content there is also agnostic of the target cluster because we want to reuse the same Blueprint to run on multiple types of targets, so this repo also we don't want to release teams or SRA teams to touch it, all they know is that there's a Blueprint to deploy and we use intensively Git branches and tags to version our Blueprints. Next level is the level one Git repo, so this is really a place to link together a cluster and then a Blueprint, so we have one Git repo per group of clusters, so we have one Git repo for all the production clusters and one for all the task clusters and clearly the production Git repo only the release team, SRA team can make commits there, so it's much easier to enforce roles based on this. And then the cluster of the test one is developers and tests they can access it and they can make changes there, so in addition to for each cluster you have one folder in that Git repository and that folder contains basically a link to which Blueprint to use, which version of that Blueprint to use and it also contains the configuration parameters specific to that particular cluster, so that's how you kind of distinguish what goes into each Git repository. And so we're going to see on the next slides how we manage to control all these different configuration parameters. And then the second part is also how we attach a release, how do we release versions of Helm charts to departments. And as you can see, there's also two different models of departments we support. For testers, what they want is that whenever they commit something in the Helm chart, they want their test cluster to update automatically to the version that they just built. So this is kind of a live updates, and that's something that we will use mostly on the test cluster side.  So in terms of how do you differentiate your departments per cluster? For that, we're using a feature in Flux, which is called substitution variables. So it's a very nice feature that allows us to control exactly what we run and how we run on each blueprint in each cluster. So to see here, on the left side, we use the example of one Helm chart called FODINFO. And this Helm chart has a list of values, the default values of the Helm chart. And typically what you do is you want to deploy this somewhere, you have to create the Helm release file. And that file we point to the Helm chart to use. And it also contains a section called suspect.values. That allows you to override the different values in your Helm chart. So here are examples of two different fields and values that we want to be able to customize per target. And there, instead of putting the values we use for each cluster, we use a variable, a Flux variable. And then, optionally, we can also put a default value. So you see that there, the default blueprint, you can end up with a number of different variables. And then, in general, when you have a blueprint, a blueprint is comprised of possibly dozens of hundreds of Helm releases. And that gives you a list of Flux variables that you can use to customize each target deployment. So that's on the blueprint side. On the clusters, the triple side, that's where you define the value to use for each cluster on each of these variables. And so these come as form of a config map. And you see here an example of a production cluster. We want to override the number of replicas from default to three. And then, in the test cluster, we want to do something else. We want to change the color of one of the attributes of the Helm chart. And what happens there is that when you bootstrap Flux on these clusters, Flux is going to pick up the Helm chart, the Helm release and config maps. And it's going to merge everything together and then form the final set of values for that particular Helm chart. It's a pretty simple way to control all of the values that you can use for all of your Helm charts per blueprint. So in terms of controlling these config variables, a lot of people use a certain way to organize their clusters. In this case, for example, you have clusters organized by data centers. And in each of those centers, you can have multiple clusters. And sure, what's nice with Flux variables is that you can have overlays of config maps. So, for example, you can have one config map containing global variables that you want to apply to all the clusters in all data centers. And then for certain data centers, you also can specify variables for each data center. For example, if you use a common secret store, you put URL of that secret store, and then all of the clusters you deploy there will be using that value. At the bottom, you'll have the cluster level config map where you can really say, for this specific cluster, I want to use these specific values. So this way to overlay multiple config maps is really very convenient. And that allows you to also avoid repeating the same values for different clusters. So the other side of all this deployment is how do you link a version of your applications or the home charts to a certain blueprint. So when you point to a blueprint, you can specify either a branch or a tag. And in our case, when you point to a branch, that means every time we change something in the branch that gets reconciled into your cluster. Well, if you point to a tag, then it is really fixed with that tag. So let's see an example of typical workflow when you build home charts. So we can have a lot of home charts. When your developer commits something, a new stable version, what happens is that that home chart is built. And it goes into a home repo that contains a lot of home charts. And for each home chart, it also contains a lot of versions of it. And the main branch on your blueprint, you have a home repository that points to that live home repo. So that means that when you want to deploy these home charts on the main branch, whatever is on that home repo is going to get deployed on your cluster. In the home release, you also specify which version of home chart you want to deploy. That level, you can use a range, like greater than a certain version. And that allows you to kind of automatically deploy when you have new versions of home charts coming in your live home repo. They will get automatically reconciled and deployed on your clusters. So that's the mode that we use for all the test clusters. And for production clusters, we use a different way. And there are actually two ways to pin the version of home charts to your production deployments. The first one is to go to each home release. And then each of them, you change the range version, you put the exact version to use. So that's very inconvenient because as you get more home charts, you can have hundreds of them. It's really hard to go and make sure that all Android of them have the right version. So instead, what we do is that we version the home repositories. Which means that when we cut a release, we take a snapshot of the live home repo. And taking a snapshot means that for each home chart in that home repo, we take the latest version. And then we create a new repo for it. And at that point, the only thing you have to do when you create a release is you create a new branch in the blueprint directory, the repository. And in that branch, you just change one file, which is the home repository. So that file instead of pointing to your live home repo, you just point to the new repository that you just created. And you don't have to touch all these release files because they're still a range, but using that repository, there's only a choice of one. So that's why you can be sure that that's going to be pinned to a certain version and that's not going to change. And the next time you cut a new release, it's the same thing.  So it's a pretty simple way to kind of make sure that whatever happens in development, that impacts only a different home repository. And when you do updates in production, you go from release one to two. Between these two, you might have maybe one home chart that changes or 50. It doesn't matter because you can just reconcile and then update those that have changed. So the challenges with this approach is that when you have two levels of Git repos, sometimes it gets difficult to get them in sync. Initially, when we deployed this, we had a lot of update failures because, for example, you can have developers add a new home chart and then add a new variable. And in the production Git repo, we forget to add that value. So that happens or sometimes you add the wrong type. And in our case, we use also variables to specify a path in the secret store. Those kind of mistakes can cause update failures. So what we have to do there is really try to fill that gap and what we did there is really develop a small tool that will be in charge of kind of validating your config maps. This tool, I just pointed to a cluster's repository and we passed to it the cluster we want to test. And another option is to pass which blueprint you use and which are tagged to update to. So you do this before you update. And that tool is going to scrub all the config maps or the variables, and it will also connect to the blueprint and then look at the tag that's used. It will extract all the variables that are used there and then it will make sure that all the variables that are missing are pointed out. And we also added some validations in terms of making sure that the right type is applied to each value. For example, here you see the important four replicas. There's a default value of one. So it's really smart enough to guess that if you put a value to that variable it has to be an integer in the string, right? And those that don't have complex types like a color code, right? You can specify a syntax of that variable. So we use a Q language for that. So Stefan's going to talk about a Q in the next slides. And with that tool, that cut down quite a bit of the updates we have, mistakes we have in the updates. To summarize, so with that kind of organization we deployed to currently a few hundred of clusters and we have maybe a dozen blueprints, right? About 200 time charts. And we have over 200 people working on it without too much issues. And that's really, I don't think that was possible using any other method, right? Because we use intensively git branches to control all these different eolutions of ham charts that we have. Limitations of this approach is that you still have to write a lot of boilerplate code like for example the ham release. Probably 100, 200 lines of code. So there we could use some tools to make these less verbose, right? And the other limitation is the flux variables are really very simple in terms of values, right? They only support the integral, Boolean and string, right? And when you want to do things like lists or maps, then you're kind of on your own, right? So that's a big issue for us for complex deployments. And as we said, you need some additional tooling to make sure that your git repos are in sync, right? And some of the complex deployments we have are also required some big variations of ham charts like for example, for certain data centers, you only want certain combinations of ham charts to deploy. And from that point of view, the only option is really either to patch your ham release or to... There's not very good options there, right? Or to add more Blueprints. And lastly, the clusters, they still access to Git repos, right? So you have a lot of hits on your Git repos, Git servers, so that sometimes can be a problem if you have a lot of clusters, especially when you use enterprise Git server that are used for other purposes, right? And sometimes you can have... They can be down for maintenance and then you cannot do certain things Yep, so that's all for me and... Yeah, Stefan, you want to... Yeah, thanks, Alec. So we saw that it's quite complicated, right? Deploying to hundreds of clusters, mixing all these apps, bundling ham charts, it works, but it's... It's hard to comprehend how to separate. You need to iterate and create your own structure of Git repos. That's one. Second, we have this problem of Helm, which, and YAML, of course, nothing is type safe, so when you have separate constructs, but on the cluster they have to be bundled together to be applied, you get this un-sync feature, right? So in my opinion, we can improve this kind of complex setup, and I don't think it applies only here for Cisco, but for many other flux setups, which imply having a base app configuration, then deploying that to hundreds of clusters or hundreds of namespaces in many clusters, all that type of hard multi-tenancy when you have one cluster per tenant or soft multi-tenancy when you have one tenant per namespace, and you always have some kind of app that needs to be slightly modified depending on where it lands. So one evolution improvement would be desired state consolidation. I'm going to talk to me, it's about it. So we see that with GitOps and what Alex said, usually you use Git in your dev pipelines, right? Your developers push code there, then you have some CI process, and that CI process produces an artifact, and that's the thing that you are using in production. In most cases, that's a container image in Kubernetes space, right? So Kubelet does not go to your Git repo. It does not fetch the code from there to run your app. It goes to the container registry. In the GitOps approach, you run something in your cluster, that's Flux, and Flux goes back to that Git repo. What that means is that the Git server now becomes a hard dependency of your production system while for the development process is not a dependency of your production system. So there are a couple of challenges here. You have to make sure you can scale out Git. The more clusters you have, the more connections will go there. You need to ensure HA. You need to do upgrades. If the upgrades fail, everything fails, right? So how can we keep using Git for configuration as we use it for code? We have the same advantages. We can collaborate on it, but we don't have to have the Git server as a dependency in production, we could use the container registry. Most container registries out there right now are compatible with the OCI standard, and that means we can store there more than just container images. In our case, we can store there the Helm charts, Helm version 3 has great support for container registries. You can do a Helm push, and instead of using HTTP repos, you can use the container registry and push there your charts. But for the Flux configuration, there is also this option. We have an extension in the Flux CLI which allows you to bundle your... One or more director is a whole repository or more repository. It's up to you how you mix all these things together and you can produce an OCI artifact for Flux. Then Flux only goes to the container registry and usually those container registries, RHA, you already have sorted how you are upgrading them because they are already part of your production system. What it means to migrate from Git to OCI artifacts, for Helm is simple, you do a Helm push, but the target is the registry and for your Helm releases and Helm repositories, you will do a Flux push. It's not that complicated. There are also some API changes that you need to do in the Flux configuration. The major one is changing, switching from Git repo story API to OCI repo story API. But luckily we created the OCI repo story to be a mirror of the Git repo story. It's very easy to switch from one API to another and back and forth. The difference is in a Git repo you have branches that Flux follows. How you can do that with OCI repo stories, you have mutable tags. Let's say the main branch becomes the main tag. Every time you do a commit to main, you override the latest main tag and Flux resolves the digest of that. Like with Git, when you follow a branch, you resolve the commit and in the same way Flux for OCI repo stories is the latest thing, which is what's immutable is the OCI digest. OCI digest inside the Flux system is the same as a Git commit shell. It's a one-on-one mapping of those. We figured out the first improvement. The second one is about simplifying the whole way of how you define variables, you merge them, and you need to do some changes which are only for data center than only for some cluster in the data center and so on. We saw how we can do that with variable substitution and lots of lots of YAML. My proposal is instead of using Q to validate some part of the YAML, what Alec was showing, we can use the Q language, which is great for validation. You can also use the Q language for generating the final YAMLs. Q is a superset of JSON. It has a steep learning curve. You'll need to invest some time into learning Q. But once you do that, you have this powerful language where you can have complex types, you can express logic, and you can have all these variants of a particular application very well-defined typesafe in a compact form. So why would you use Q for Kubernetes? One of the things that I really want to highlight here is the fact that the Q language can import a Kubernetes API spec, being a deployment or a custom resource definition. It can import that then when you want to write a template for, let's say, a Kubernetes service or a Kubernetes deployment or any Flux custom resources, it can validate every single field in there as you would have the Kubernetes API as your disposal. But it's client-side. You don't need to do any kind of apply to itself when you build it. Then you'll get the same validation as you'd get when you apply it on the cluster, which is very powerful. You can basically validate everything way, way before it gets deployed. So we want to catch all these errors early on in our pipeline. And Q can do that because it really integrates with OpenAPI and can generate these schemas for you. So we have the Q language. That looks appealing to Kubernetes, but now how are we going to generate all these things? So for this, I'm working on a tool called Timoni. He's been in development for over a year now. My goal with Timoni was I was so frustrated with writing Helm charts all day, so I said, OK, it needs to be a better way. I discovered Q and Timoni's in nature feels like Helm, but it's completely different. But it has the template directory in there. We don't call it Helm charts. We call it modules and so on. The idea with Timoni is that it can bring the Q-type safety to Kubernetes templates and can make this more sane, pleasant way of defining all these Kubernetes objects. It comes with a couple of concepts. Modules, which are like Helm charts instances, which are like Helm releases in the cluster. A bundle, which is like a Helm file if you want, or an umbrella Helm chart. And a runtime, which is something you tell Timoni, hey, I don't want to give you secrets or give you all the configuration up ahead. You should look up in your cluster and fetch from there the configuration at the playtime. So instead of having to pull a secret down and store it in your Git repo with Timoni, you say, this variable comes from this secret in the cluster at this field. And using Q, you express that query and Timoni runs it, and that's how it deals with secrets. I made a bunch of modules to be able to generate flux objects. So it's released. You don't have to learn much of Timoni or Q. And you can use, for example, the flux Helm release module to generate Helm releases. You can generate tenants. You can generate OCI things. All the, almost all the flux APIs there will be at some point available at this URL and you'll have abstractions built on top of it. And you can generate all these complex flux objects easily through Timoni modules. Okay, so we have, we've learned Q. It's a big step. Then we've learned Timoni. It's even a bigger step. How we migrate now. So it will be a hard proposal here, right? We actually delete all the YAMLs from Git, which is... Okay? We don't store YAMLs into Git. There will be only Q definitions. Your developers will have to understand a little bit of Q and what's happening there. Then, but you don't, in this step, you don't get rid of Helm charts. So they can still do Helm charts, right? For now. So in the blueprint repo, where you have the Helm release definitions, there you'll be having only Q code that generates Helm releases, Helm repositories, customizations, OCI repo, all the things that you need. And then how you put them all together and how you change their tiny bits for each cluster is with this bundle concept where you can refer to all the modules and say, oh, if it's this target, I'm going to change this little thing here. What Alec was showing with Flux variables. Now, how you distribute all this stuff? Of course, to the OCI repo. And Timoni has all these build commands. So you can do a Timoni bundle build of all my variables. And you pipe that to the Flux push artifact command, push to the container registry. Flux on all these clusters, see the new configuration and starts and reconciling. Next step for Timoni, there are a couple of things that are not there yet. The API is not quite stable. There are alpha APIs, so I may break them. There is a Flux IO distribution for Flux where Timoni can deploy Flux in a single pod. It works on the edge, it doesn't need a CNI and I'm trying to promote this distribution as an alternative to the official Flux distribution. It will not replace, it will be just another option. And finally, what most people are asking for is a Timoni controller, so you don't have to build the YAMLs and push them to the OCI repo, push the whole Q definition there. So I don't know when a Timoni controller happens, it all depends on adoption. What I'm asking you is, like, give it a try, try to migrate the easiest Helm chart that you have to a Timoni module, see how that goes. Let me know. There are lots of people who love it, but they love it because they actually are into Q, right? I still think there is a major gap switching from Helm templates to Timoni and Q. I think it's worth it. Maybe spend a day or two. And yeah, let me know. I would really love to know. Thank you very much.


And obviously next week we have all about Eve. I think probably many of you have seen that film, but I'm trying to present movies that, yes, we've all seen them before, but every time you see them, the movie not only holds up, the movie gets better. So I would encourage you to watch all about Eve again. And the backstory on this movie is incredible. So I hope you come back and tell your friends about this because we wanna build this. And then the following week we have Tunes of Glory, which is a movie that we picked because it's not as well known, but it's every bit as good as the first two entries. It really is, it's fantastic. Alec Guinness and John Mills, and again a wonderful backstory, but very much in the context of the British film industry. Which is its own little family. And you'd hear a lot more about that. So I hope you all come back and...


The judicial system, Court of Law, plays an important role in our current C-FI system, contract enforcement. Does the judicial system have a role in DeFi? And what progress has been made for integrating blockchain with the judicial system? That's a great question, and there's some complexity to it here. Ultimately, the role of blockchain smart contracts is to implement adjudication in a digital realm. So essentially, the terms of the contract are enforced by the smart contract language as executed on a blockchain. This is seemingly not open to interpretation, but then you run into problems which are things like, what happens if there's a bug in the smart contract? Who's liable for that damage? What happens if the bug in the smart contract causes damage to real property or life outside of the blockchain system? And for example, and I'm just going to pull something crazy out of my mind. Let's say you have a system where you can rent vehicles using a blockchain. And let's say that someone is trying to transport a severely injured person to the hospital in a rented vehicle. And then the car stops before it gets to the hospital and says, please insert more ease to continue driving. And at that moment, gas fees are too high, so the payment can't go through and the person dies in the backseat of the car. Okay, outrageous for now, but a possible future. So we see that some of the effects of smart contracts will bleed over, that was a bad pun, unintended, into real life. And so what do you do in that case? The legal system exists among other reasons, not only to solve disputes, but also to assign liability. And liability arises that cannot be managed within the constraints of a contract, like for example, a pandemic, an act of God, a hurricane, or some other event where it's not clear who is at fault. The legal system helps, among other reasons, among other things to assign that risk, that cost, that damage to someone, someone who is both able to pay and at fault in some way in this system. So how do you connect the two? Well, there's a downside, of course, because the judicial system has two major weaknesses. The first major weakness is, of course, that it is subject to human whim and lack of objectivity. And that means that in every place around the world, justice is flawed and often very, very severely flawed and doesn't actually deliver justice. The second problem, which is an even bigger problem, is that all justice systems, more or less, except for a few exceptions like maritime law and things like that, are jurisdictionally bound and determined by the laws of a single country. So when you have smart contracts which operate on a completely borderless, transnational global system, whose jurisdiction are you operating in? Is it the location of the person who wrote the smart contract, the person who ran the smart contract, the person who has keys to the smart contract, the user or users of the smart contract, which ones? It gets very, very complex, very, very fast. And in fact, that would be the first question to be resolved by the judicial system, which is, who has standing and where does the jurisdiction lie? Which could effectively mean you never get any justice because you end up fighting that argument for years. Anyway, bottom line, there have been some efforts to integrate legal systems with smart contracts and some of those involve using things like international arbitration as a common framework that applies to more than 160 countries around the world by treaty and overrides local law, which might be an interesting way to go. The bottom line is that one of the ways that DeFi succeeds and it remains borderless, neutral and censored persistent is by attempting to reduce the amount of stuff that essentially becomes an exception to the blockchain's ability to resolve through the smart contract. So what you're trying to do is keep as much of it as possible contained within the blockchain so that you don't run into legal arguments outside. By doing so, by reducing the burden on judicial access and representation and jurisdiction and things like that, DeFi can not only remain global and transnational, but also it can remain open to more participants and give participants opportunity where they have been effectively excluded from traditional financial systems because of the judicial system. So again, the national systems, both finance and judicial, exclude a lot of people and one of the promises of DeFi is to change that.


Hey, it's Lee Russo from 94-3 The Point, and I hope to see you here in Asbury Park at Convention Hall and the Paramount Theater for Hackensack Meridian Health's Women Rock event, which is taking place October 21st. Celebrity womenologists with inspirational talks, art therapy, and much more, it all gets started at noon. Register you and your girlfriends for this free event by calling 1-800-560-9990 or visiting hackensackmeridianhealth.org slash womenrock. I'll see you there.