Hi, I'm David. So I started using Scratch when I was 11 years old, and I wasn't very good at it back then. I was doing more of the cat spinning on the spot that was mentioned earlier. But now I'm back 13 years later with a bit more programming experience under my belt, kind of returning to my origins to see what I can actually do with Scratch now. So by day I'm a security researcher specializing in software reverse engineering. I'm particularly interested in file formats, protocols, serialization and parsing, among lots of other things. And I also enjoy breaking weak cryptography. But I'm not a cryptographer or a mathematician. So my mathematical knowledge is actually pretty weak. So this might be interesting for other people in the same boat to kind of see how I get by without actually understanding some of the maths. So the first thing that people ask when I tell them that I've implemented some cryptography in Scratch is they're like, why? Why on earth have you done this? Why would you do that? And the first answer and the shortest answer is because I can. And that's the only answer really, but I felt like I had to make up some other answers after the fact because otherwise I'd seem a bit insane. So one answer is that as a reverse engineer, it's all about spotting patterns in code to figure out what it's doing. And the only way you can spot a pattern is if you've seen it before and the best way to see it before is to implement the algorithm yourself. So by implementing algorithms from Scratch, it improves your reverse engineering skills. And implementing things in Scratch is kind of just an added level of difficulty really. And it means you can't cut any corners. You really do have to implement everything from Scratch with no cheating using libraries and things like that. The next reason is that I want to demonstrate that cryptography isn't like this magic black box that does stuff. You can actually construct it yourself with primitive components like Scratch. And finally, I'd like to show that Scratch is a real programming language because a lot of people like to say it's just a toy. It's not a real programming language. But there's really no reason that it wouldn't be a real programming language. You can do anything in Scratch that you can do with a computer. It might just be a bit more tedious. So my goals for this project is to have like reasonably fast cryptography, Scratch itself is quite a slow language. It's interpreted and the interpreter runs in JavaScript. So there's like a lot of layers of slowness going on. But I don't want to be waiting all day for a small message to encrypt. So I want it to be reasonably fast. And of course, I want it to be reasonably secure, but I probably wouldn't rely on it anyway. It is more of a prototype than something you would actually want to use. And finally, I really want it to be correct. So I want my implementation to match the specifications to the letter so that if I encrypt something in Scratch, I could put it into Python and decrypt it in Python so that it's compatible with other implementations. And finally, what do I mean by modern cryptography? Because that's a bit vague, deliberately so. But for my project, I want to have standardized ciphers that are actually used in the real world because I think that makes it more interesting. And also, I don't want to use any known vulnerable ciphers. So something like RC4 that you might have heard of is pretty old at this point. There's multiple published vulnerabilities in it. So I wouldn't want to use a cipher like that even though it'd be very easy to implement in Scratch. So the algorithms that I chose to implement, the first one is Cheshire 20 Poly 1305, which is an authenticated symmetric encryption algorithm. I'll explain what that means a bit later. But I chose it because it's secure and fast and it's standardized and it's used in TLS 1.3. Also, the X25519 key exchange algorithm, also secure and fast, also standardized, and also used in TLS 1.3. That's interesting because TLS is what underpins HTTPS used by web browsers. So every time you load a web page over HTTPS, there's a chance that your browser is using these same ciphers to encrypt the web page. And finally, as a hash algorithm, I implemented Blake 2B. Also fast, also standardized, and it's used in WireGuard, which is a very modern VPN protocol. And one nice thing about it is it only uses 32-bit integers compared to some other hash functions. A lot of other hash functions like to use 64-bit integers, which, as I'll explain later, are annoying to do in Scratch. Another reason I picked it is because it shares a lot of code with Cheshire 20 so I can kind of copy and paste a lot of my implementation. At some point, I would like to implement a signature algorithm. I haven't done that yet, but when I do, it will probably be ed25519. I don't know how it works yet, so I can't implement it, but one day I will. So I'll give just a quick overview of Cheshire 20. It's a symmetric encryption algorithm, which means that you can encrypt a message using a key and then decrypt the message at some later point using the same key. So that might be after you've sent it to someone else, or it might be saving data to your hard drive, something like that. And it was published in 2008 by Daniel Bernstein. And that's interesting because Scratch was published in 2007. So this is actually more modern than Scratch itself, even though it might seem a bit old in the grand scheme of things. And it's an example of what's known as an ARX construction, which means it only uses three core operations, addition, rotation, and exor. And I'll explain what those mean a bit later, but it's ultimately quite simple. Only three things I need to worry about. And it also, as I mentioned earlier, uses 32-bit numbers, which work nicely in Scratch. And it's a stream cipher, which means it works by producing a pseudo-random sequence of bytes based on the key, which it then combines with the bytes from your message that you want to encrypt using exor. So I did say this is from Scratch, so I'm going to start off with a very basic, how do computers represent numbers? So obviously, as humans, we're used to using the digits 0 through 9. And then when we want to do numbers higher than 9, we use more digits. So we go up to 1, 0 as 10. Whereas binary only uses the digits 0 at 1. We call a binary digit a bit, and there are eight bits in a byte. And commonly, you'll see other lengths of numbers. So 32-bit, for example, or 64-bit, or even more are frequently used in computing. So before I give an example of binary, I will remind you all how decimal works, because you kind of take it for granted. But you've got the number 137 on the left there. The first column is kind of worth 100. The second column is worth 30, and the last column is worth seven. And if you add those three components together, you end up at the number 137. And so binary is exactly the same concept, but we've just got zeros and ones. And so in this example, the number 137 is 1, 0, 0, 0, 1, 0, 0, 1. The first one is worth 128. The next one is worth eight. And the last one is worth one. And if you add them together, you will also get 137. So hopefully you can see how that kind of translates conceptually across. And obviously I said that Chacha 20 was an ARX construction, so we've got addition, rotation, and XOR. And obviously the first of those three is addition. And that's exactly what you'd expect it to be, except there's one catch. Because we're dealing with 32-bit integers, you can only represent numbers less than two to the power of 32, otherwise you run out of bits. So what happens is when a computer adds two 32-bit numbers together, if the result is too big, it just kind of chops off the higher bits, which results in it wrapping around to a smaller number again. So for example, if I had the number that's one less than two to the power of 32, and then I added one, I would end up back at zero. Or if I added two, I would end up at one. So that's called wrap around. So the next of the three of ARX is rotation. So for rotation, you look at the bits of your, through the number. In this example, I've got 23, the number 23 in bits. And you shift all the bits one way or another. In this example, I'm shifting to the left by one. So all the digits move to the left by one. And then the digit that would kind of fall off the end comes back round to the start. And if I was shifting by two or three, then there'd be two or three digits wrapping around back to the start. So in this example, I had 23, I shifted it the left by one, or rotated it the left by one even. And the resulting bits are equal to 46 as a decimal. And finally, we've got XOR. So fundamentally, XOR is a function that takes a pair of bits as input and outputs one bit. If both of the input bits are the same, then the output is zero. And if they're not the same, then the output is one. And bitwise, XOR, which is kind of what I mean when I say XOR in general, is where you have two numbers, you take their bits, and you apply that XOR function to each pair of bits at each number. So in this example, I've got seven being XOR before. And you can see how in the first column, where I've got zero XOR, zero becoming zero, because they're both the same. And in the last column, you've got one being XOR with zero becoming one, because they're different. And that results in 0011 at the end, which is equal to three. So seven XOR four in this example is three. And obviously, there's only four bits of this example, but the exact same thing is done with 32 bits as part of Chacha 20. So with those three core operations adding, rotating, and XOR, they're combined together to make the whole cipher. So Chacha 20 has 16 32-bit integers called the state, and they're arranged in this four by four grid. Now, the key is only 256 bits or 32 bytes, but there's 512 bits worth of state. So the key only occupies half of it, and it occupies the middle two rows, spit up into 32-bit chunks for each number. Now, at the top row, we've got this phrase. It says, expands 32 byte K, spit across four words. And what that is is an example of a nothing up my sleeve number, which cryptographers call them. And that's basically just an arbitrary, completely arbitrary number. And that's their way of proving that they're not doing anything sneaky with that number. It is purely an arbitrary number. They're not trying to introduce any vulnerabilities into the cipher somehow. And on the lower row, you've got the counter and the nonce. The nonce is quite important. It has to be unique for every message that you encrypt. If it's not, then you end up with the cipher being vulnerable and you could potentially crack some or all of the messages. And there's also the counter, which I'll explain in just a bit. So once you've got the state set up, there are 20 rounds, hence the name Chacha 20. And in each round, something called the quarter round function is applied to the columns of the state. Or rather, on every other round, it's applied to the columns. On the other rounds, it's applied to the diagonal columns. So that quarter round function looks like this. This is the same function represented in two different ways. So on the left, we've got a kind of pseudo code representation. It's not quite valid C syntax, but it's close enough. And on the right, we've got this kind of, I actually don't know what the name of this diagram is, but it's a diagrammatic representation of the same operations, where the yellow box represents addition, the blue circle is XOR, and the green box is rotation. So you do 20 rounds of that. And then finally, you add the initial state into your current state. The reason that's done is to make sure that the cipher isn't invertible. If that wasn't done, you could kind of undo the quarter round functions and derive the key. So that's quite an important step there at the end. So finally, after all that's been done, you've randomly mixed up all the data that was in your initial state, and now you've got your pseudo random values. And this is what you XOR with your message that you're trying to encrypt. And to decrypt it again, you XOR it with the exact same data, and you'll end up back where you started. Because something I didn't mention earlier about XOR is that if you XOR two things together and get the result, if you XOR the result with one of your inputs, you'll always end up with the value of the other input, if that makes any sense. So XOR is kind of reversible like that. So enough cryptography theory. Now it's time to talk a bit about scratch. So I'm sure you've all heard of scratch at least to some extent, but you might not realize quite how popular it is. There have been over 100 million projects shared on the scratch website. And by contrast, Github has about 150 million public repositories, which is of course more, but is not very much more. I'd have never of guessed they were in the same order of magnitude. And scratch is open source, which means I don't need to reverse engineer it, fortunately. The source code for their runtime is on Github so you can look at how their internals work, which is very useful. And I'm just gonna give a quick demo of like the capabilities of scratch. Won't take very long, hopefully. So I've got a little test project up here. On the right here, you've got your sprites and you've got your stage. The stage is where the sprites are positioned. And on the left pane, you've got your scripts. So you write code by dragging these blocks around and you've got all the standard control flow that you'd expect from any other programming language. You've got loops, you've got if statements, you've got variables, you've got lists, and you've got basic mathematical functions, addition, subtraction, et cetera. And yeah, I'll just make, I'll make the cat spin around since we were talking about that earlier. There you go. So that's an example of the kind of things you can do in scratch. So scratch, although in theory you can do anything because it's Turing complete, it has quite a lot of limitations when it comes to trying to implement cryptography. So it's all the numbers in scratch because it's running on JavaScript under the hood. They're all 64-bit floating point doubles. And I'll explain, sorry, 64-bit double precision floats even. I'll explain what that means in detail a bit later, but it's not a 32-bit integer so we can't just drop in the algorithm and have it work. It also lacks XOR, it lacks rotation, which might sound like a bit of a problem, but I'll go into how we address those shortcomings in just a bit. And of course, you've got to use your mouse.  And it's very tedious if you're a fast touch type in comparison. And also there's no version control. When I write code normally, I'm very used to committing it to Git. And when I can't do that, I feel pretty lost and feel like I'm about to lose all my changes at any point, which of course you can. So before I get into how I overcome those difficulties, I will explain how floating point numbers work. So as I said, Scratch's variables are stored as floating point numbers. And if you're familiar with scientific notation in physics, it's a very similar concept. So rather than writing that the speed of light is 300 million meters per second, we write three times 10 to the power eight. And floating point numbers are basically exactly the same concept. You've got the exponent, which is like the green section of that diagram, and the fraction, which is the red section of that diagram. And so in the speed of light example, three would be the fraction and eight would be the exponent. And there's one extra bit that says whether it's a positive or negative number or not. So that can represent arbitrary numbers. So you can have fractions. You can have really big numbers. But there's one catch. If your integer goes above, so it's the power 53 because there's 52 bits for the fraction. If it goes above that, then you start losing precision. And what that means is the accuracy of your maths will start to drift from the correct values, which was a big problem if you're trying to do something precise like cryptography. But fortunately, because the 32 bit numbers only go up to two to the power 32, that's actually not much of a problem for 32 bit numbers. As long as we make sure that we keep our numbers rounded to whole numbers, we won't run out of precision. So the next challenge is bitwise XOR. And of course Scratch has no XOR operator, but as a bit of a cheat, we can make a list of every possible result. So we can make a list of every pair of numbers and what the result is if you XOR them together. Every pair of 8 bit numbers that is. And so the list for 8 bit numbers is 65,000 entries long. So of course I wrote a Python script to generate that list. And then you can implement that in Scratch, like shown there. So Scratch lists are only one dimensional, but we've kind of got a two dimensional table here. So there's a little bit of arithmetic to convert the indexes. And that just has a plus one on the end because Scratch's lists start counting at one instead of zero, which is a bit annoying if you're used to it being starting at zero. Now that's for 8 bit numbers, but for chatter 20, we need to XOR 32 bit numbers together. And this is where it gets a bit crazy. So we need to split our 32 bit inputs into 8 bit chunks. And then we XOR those chunks together separately using the lookup table. And then we recombine them into one 32 bit results. And the method to spitting the numbers up is called shifting and masking. So shifting is very much like the rotation that I mentioned earlier, except the numbers that fall off the end, you don't bring them back to the start, they just disappear. So shifting left is actually equivalent to multiplying by a power of two. So five shifted left by two is the same as multiplying five by four. And conversely, five shifted right by two is the same as dividing five by four, but you need to round down once you're done, otherwise you would end up with a fractional number at the end, but you actually, you want a whole number at the end. So if you round down five divided by four, it's exactly the same as doing a bit shift right by two. And that can be done in scratch very easily. So with the XOR lookup tables, the shifting and masking, oh actually I haven't covered masking yet. So masking is quite a common operation you do in Bitwise logic. If you want to extract some portion of a number, for example, the last eight bits, you might end it with 255, which what that essentially means is you extract the last eight bits of the number. The scratch doesn't have a bitwise and operator, but in a pinch we can use the modulo operator, which fortunately it does have. So if you take a number and you put it modulo 256, you extract the last eight bits of the value. And for example, if I wanted to get the second last eight bits, I could shift it first and then do the modulo and I would get the eight bits that were the seconds, so the second lot of bits of the number. So combining all that together with XOR, yeah, XOR masking and shifting, you have this horrible abomination of scratch code. It doesn't even fit on one slide. It's going off to the right. Even I zoomed out all the way and it still wouldn't fit. So as you can see, this is pretty unwieldy. So I didn't want to have to write a whole program with hundreds of blocks like this. So I decided that I needed to automate this process somehow. So I'm sure you've all seen the XKCD comic about writing, writing tools. You'll always spend more time writing the tools than you do spend actually using them and you'll probably never finish them either, which is very true, but I still did it. So scratch scripts, when you save them to a file, they are stored inside a file called, what, with a .sp3 extension, which is basically just a zip file in disguise and inside that zip file is a JSON file, which contains a list of all the blocks in your scripts and that contains all the attributes, like what their arguments are, what their position is and what are the blocks they're connected to. So rather than dragging and dropping blocks around with a mouse, I could, in theory, write some code to generate this JSON file with all the blocks already in it and that's exactly what I did. I made a Python library that I called Boiga for generating a scratch code. Now the reason I called it that is because there's apparently a species of snake called Boiga Faustini, which supposedly is nicknamed the cat snake. I'm not quite sure why because I don't see the resemblance myself, but that's why I picked the name because the scratch mascot is a cat and the Python logo is a snake, so you put the two together and you've got a Boiga. So this library that I made is a bit weird. It's not quite converting Python code to scratch code. What it is is a library for expressing scratch syntax or scratch code through Python syntax. So it's actually more powerful than translating Python into scratch because you can write a program to generate other programs. Awesome. So I'm just gonna show you a quick example. So with that horrible XOR example I showed you before can actually be implemented fairly concisely in Python. This might look more complicated perhaps, but it's much easier to work with because you don't have to drag and drop a million blocks around. So this is an example of co-written with the library. Here, actually I might zoom in a bit so you can see it, but there we go. So here I'm declaring two scratch variables and I XOR them together and make the cat say the result. And here I'm doing all the shifting and masking and lookup tabling that I talked about earlier and it's all implemented through Python syntax. And you'll notice that I'm using the Python bit shift operator here. That is under the hood, translates it into the scratch blocks just like I described earlier. And if I run my script, which hopefully still works, if I haven't exploded, I hope not, I ran the wrong script. And if I open that and scratch, so this code was just generated by that script that I just ran. And if I click that little green flag, actually I make it full screen, you can see the scratch cat says hello world and then XOR is two numbers together and tells us the result. So now that I can write scratch code much more easily, effectively in Python, the sky's the limit really. So this is what I came up with. So what you're looking at here is all the ciphers I mentioned in the initial slide. So we've got the Chacha 20.1305, we've got the, gosh I forgot now, got the Lake 2S hashing and we've got the X25519 key exchange algorithm. Now I wish I had more time to explain what every bit of this does in detail. So if you wanna know, find me afterwards and ask me. But for now I will just show you it working because I think it is very cool. So the code that you just saw on the screen there was generated by this Python script and it's actually pretty short. There's only 94 lines of Python in this file but it's all calling into libraries that I wrote. Again, using this library. So I've effectively written a cryptography library for scratch that you can use with my tool to embed cryptography within any scratch projects. And so if I generate the scratch code just now, open it in scratch. Takes a little bit to load because there's almost 4,000 blocks in here. I'm gonna shrink that down a bit and scratch has this handy function called cleanup blocks that artfully arranges your blocks into a giant list so I can scroll through it all there. But actually if we get down to the bottom, this is like the main loop effect or the main function even. And if I zoom in, it's doing fairly readable things. So we've got, let's see, we're initializing a random number generator. We're getting some random bytes. We're performing an X25519 scalar multiplication which is part of the key generation process, et cetera, et cetera. So now I will show you actually doing something. So here we go. So it just, what it just did here is it generated an X25519 key pair. It generated a public, it did a Diffie-Hellman key exchange against a public key that I embedded within the program. Generated a shared secret and then encrypted a message or derived a session key from the shared secret. And now if I type something in here, like hello, it encrypts it very quickly.  So I'm quite glad that it was that fast after all that. And also obviously in this demo, the key is being printed on the screen. You probably wouldn't want to do that in any real application. So if anyone wants to try decrypting this message, you should be able to use standard tools to decrypt it. So yeah, that's it. Thank you for listening.


Live from the Fairmont Hotel in San Jose, California, it's The Cube at Big Data SV 2015. Okay, welcome back everyone. We are here live in Silicon Valley for the last day of three days of wall-to-wall coverage of The Cube. Big Data SV, our event, Big Data Silicon Valley in conjunction with Stratoconference and Hadoop World. We're The Cube. We're here to extract the seeds from the noise. I'm John Furrier with SiliconANG. Our next guest is John Kleiman, who's the director of business strategy at Red Hat. Welcome to The Cube. The Red Hat Summit last year was very interesting because we actually interviewed the CEO of Docker at the time, no, actually the founder of Docker before they changed their name, I think it was. But now Docker's been the rage. OpenStack's been amazing. You guys have been leaders in that. Big Data's happening. What's going on with you guys here at the show and what are you guys announcing? What's going on with some of the activity shared with the folks, your presence here at SV? Sure. So I guess I'll start where you mentioned on OpenStack. So we've heard a lot about the cloud. I think everyone has. I was found the Salesforce keynote. Very interesting. And everyone was here, right? Microsoft's here, Google's here. And so a lot of activity on the public cloud side, but also on the private cloud side. So just earlier this week Red Hat shipped the Red Hat OpenStack platform version six, which includes Sahara, which is kind of the infrastructure that allows customers to build effectively their own elastic map reduce inside their cloud. So we're seeing a lot of interest in that now that it's out and available. We've talked about it on theCUBE before. So that's very exciting. You know, we're going to be in Vancouver this year, so we're definitely going to be up there at CUBE again to continue this coverage. Sorry to interrupt. Go ahead. Oh no, that's okay. We love those summits, they're really awesome. Yeah, yeah. So the OpenStack community is coming together and starting to embrace the big data as a workload. I think Sahara will go a long way to helping that.  And so in that area, we've got a couple things. One is we announced a partnership with Continuum, which is one of the biggest players in the Python space, Continuum Analytics. And so we have a, as customers are looking from scale out to scale, or from scale up to scale out in terms of their Python implementations, they need an infrastructure to put that on. So they've, they just announced Anaconda, which is sort of their cluster management product, and then we put in a connector and verified that on top of Red Hat Storage Gluster. And so we announced that, and that's up on our blog post as well as some sample code. And then obviously whenever you're doing real time analytics and trying to get value out of your data, you want to get all your data sources together. So we also announced a new Impala connector for Cloudera Enterprise for our JBoss Data Virtualization product, which allows customers to pull data out of, out of Cloudera through Impala, and combine it with non-Hadoop data sources so they can do their analytics at a higher level. So let's take a step back, because I really want, I love talking with you guys. Red Hat is one of my favorite companies, I've been following you guys from Gen One when Open Source was, when you guys really came onto the scene. By the way, it's not a Tier One offering in the enterprise. Now you're Tier One, Open Source has exploded. Look at where we're living in an era of amazing Open Source goodness.  It's super, right? So it's great. You guys are so awesome at Open Source. What do you think about the Open Source situation right now? You got so many good things happening. I was asked to comment on the open data platform that Pivotal announced with Horton, where there's a variety of other players, some big names, and I usually would be a naysayer because consortiums tend to not get under my skin a little bit, but I was critical of Open Stack when it became kind of a marketing fluff thing, and then they tweaked their mandate, ship with code, let your code do the talking, and then also boom, Open Stack's successful. Cloud Foundry, I was very skeptical on when they just came on, there's no way that's ever going to happen. But they've cobbled together a little foundation. It's working that's generating revenue. So I'm going to reserve my judgment on this one because Open Source is so proliferated now. Is it changing at all? I mean, is there a modernization happening in Open Source that's adding to the goodness of where it's come from? I mean, is there a new dimension if the Internet of Things includes machines and code and people, and it's instrumented in real time, doing things in the open is 100% open. So if it's 100% open, does that change the dynamics of hiding behind the curtain in the old days? We all know the tricks, hide behind the curtain, lock and spec, market spec. So is it different now? Are you seeing any tweaks to this Open Source model in a good way, or bad way, or nothing? Is it the same? Can you share your perspective or observations there? Because that's something that we've been talking about all week. Yeah, so yeah, obviously, we're the purist, right? So to us, it's all about showing up with code and contributing to the community, and it's a meritocracy, so the more you work, the harder you work into it, the more open you are, the better. So that's, like you said, sort of the- I think that's like, I don't think that's pure, I think that's just the way it is. I mean, code rules, right? Yeah, yeah, and that's the way we look at it. But as you said, right, there's definitely been over the last, I don't know, five to 10 years, sort of this leakage, right? There's a lot of companies, they've been successful. They all say they're doing open source. They don't quite follow that model, the Red Hat model, right, which is upstream, always first, pull down later, harden it, for the enterprise, that's your value add, not necessarily putting in proprietary hooks. So there's, but as you said, you can't argue with their success. So maybe it is, maybe it's, there's multiple models now, right, there's the purist model, which is the one we sort of live by, but then there's this, you know, happy medium or slight adjustment to it. Well, it's not proven yet. So again, I'm using all my judgment. Even OpusTac has had some growing pains, but people are finding their swim lanes, as Jeff Kelly said. So we'll reserve judgment, certainly the purist way works, right? But you got to look at that and say, hmm, this open core, dancing around the edge, you know, hard and top, where does that go to? But you know, interesting, I want to get your perspective, because we're watching this, because you know, one thesis we have is, maybe there's a new modern tweak to open source that could take it another level. We don't know, we're just watching it. So appreciate your perspective. Now back to OpusTac and some of these other opportunities. OpusTac is interesting. So where do you guys see OpusTac intersecting with big data and the data fabric, the data lakes, the data oceans that are around us now is a lot of dynamic conditions and data are changing. Real time is a huge focus. Analytics are still the game. That's the app side. And OpusTac is all about infrastructure for developers, right? So app developers. So where's this all converging? What's the pressure points that are most active in OpusTac that you guys are involved in? Yep, yep. So I mean, the one easy one is Sahara. But beyond that, right? If you think about what you just said, the two worlds sort of colliding, right? You have the analytics guys who just want their answers out of the data. And then you have sort of the dev ops and the operations teams that have to deliver that. And as you said, as you move more to real time and you move more to sort of agile data, you really need, and the fact that the data sets are getting so big, and it's a polyglot world, right? Where you have to support multiple languages. To us, the logical answer to that is some type of a scale out infrastructure that's very easy to manage and very sort of dev ops friendly. And that's pretty much the description of OpusTac, right? It's a scale out, very oriented on a development ops sort of a perspective, very easy to manage, meant to scale out, meant to handle big data sets, meant to handle multiple workloads, accessing those different data sets, and be able to scale out as the demand goes and be able to sort of elastically do it, right? Just everybody is sort of elasticity is an assumption in the big data world. And so that's to us, that's a perfect storm. That's exactly what OpusTac is designed to do. So we think that and if you add into all of that, the fact that the vast majority of businesses, right, it's their data, they're trying to monetize it, they're trying to get value out of it, they're not going to want it outside their firewall, that's sort of a perfect storm in our mind for OpusTac. And you're thinking about OpusTac, what I like about OpusTac right now, remember the old OSI model of the seven layers of the stack? You know, the first two had to get done first, right? And then the TCPIP came up on top of that. So that's kind of really cool. So I see OpusTac really nailing that at the, I won't say bottom of the stack, but like that enablement, that infrastructure piece is really critical. Are you happy with where it's at in terms of the progress? I mean, I think generally people would like pretty happy with that right now. And then where's the work areas that you see the community really having to focus on? If you had to kind of say, okay, these are the areas to work on. Yeah, so I think you characterize it well, right? The things that are getting very solid is the foundation, right? So it's the compute, it's the storage, it's the networking. Those are all starting to get stable and those are our fundamental building blocks. The next sort of thing we got to do now is to make all the orchestration work, make the provisioning work, make the dynamic deployment work. That's non-trivial when you're talking about, but you can't do that until you get the basics done, as you said, right? So I think we're past the basics and now we're approaching that, now we're into the mix in terms of getting the deployment and the provisioning part all working nice and smooth. And then the next one is gonna be the workloads, right?  And so that's where the heavy lifting is right now, that's where a lot of the attention is. So what do you think about the open data platform announcement? What's your personal take on, I mean, I've read how you're a purist, so let me take a personal perspective on that, that company perspective. Do you think it's gonna work? Do you think it has legs?  What's your... Yeah, so it's very much the way you mentioned it before, right? We're the purists. So to us, it should be more about who shows up with the most code. And it's also about being open to everybody, right? In order to really do... So we agree 100% with the goal of the ODP. That's the same goal we have, right? Which is, hey, let's get a common base, let's all work on the same common base and let's go build on top of that. But in order to make that successful, to us it's the how that's different, right? We would like to see all the code in the open. No one group or one company controls that. It's truly open, everyone can contribute. And then you follow a process where it's an inclusion, you include everybody, you don't exclude anybody. And in order to be successful... That is a real critical piece. That inclusion not excluding is to me the number one criteria for success. Because that's truly in the open. I mean, that's our philosophy. We're all about open, not closed. We have some, we disagree with many people about their business models in the media business. You want to be closed and not include people. That's a choice. It's like religion, whatever you want to do. But if you're closed, a walled garden, not inclusive. So that's our philosophy. But again, if it's not done in the open, you gotta be open. So now the measurement with social media, you can't... People know what you had for breakfast before you leave your house. People, I mean, so it's all out there now. So like, compare and contrast what that does for the transparency, when you go back 15, 20 years, so IRC had back channels stop going on. But still, now out in the open, has that changed the game and open source in your mind, dynamics? Yeah, yeah. Can social media?  And so there's really no secrets. And then when you do try to have those closed door meetings, right? They're a lot of tweeted. That's right. They get tweeted before the meeting's over, right? And so the open data platform is a good example, right? That was leaking out there a couple weeks ago. And so you kind of can't do much behind the closed doors anymore. Just might as well just tell what your affiliation is. Right. And more importantly, to your point, you want to be inclusive. You want to include everybody. So what's the point of that? You're not really gonna, you're not gonna be able to control because everyone's gonna know what you're doing anyways. So why not invite everybody in, right? And if you're gonna invite everybody in, then there's already a business model for that. It's called open source. Where you put the code out in the open. No one company controls it. Everybody contributes.  Well, and now that open source has become so mainstream, I think there's an element that I'm watching is, okay, it might be, you know, the Democrats versus the Republicans or whatever we want, analogy you want to use. You know, what's best for the customer ultimately is the end game, right? So in the pure coding world, yeah, show up with code. Code will always trump cash. As Mike Olson would say, I love that line. Code trumps cash, meaning you can't buy leadership in open source. I agree with Mike Olson on that. But business model also is an issue, right? The business outcome will determine it. So, you know, maybe the diversity of models might be just an evolutionary game. So that's kind of why I'm watching it closely because it's certainly the bad tactics have all been seen before. We've, you know, talked to Cloudera Horton, works with you guys.  We know what that looks like. And so we'll be easy to spot those guys. So if it goes that way. Okay, final question for Red Hat. What's the strategy? Share with the folks out there. You guys are a leader in open source. You guys are the big grand poobah, if you will, for open source. You've got a ton of experiences as a company. A lot of chops. You guys have a hardened approach, 10-year SLAs plus on a lot of the enterprise stuff. It's super, super awesome. Took hard work to get there. What's next? What's the strategy of Red Hat? Share the strategy around the company, the plans, the code, the open source, quick summary and we'll wrap it up. Okay. Yeah, well so it's kind of more of the same in a sense. From a big data perspective, we're all about open. We think that's where all the innovation has happened, as you mentioned. We think that's the right business model for the big data industry. So you'll continue to see us build open interfaces, publish all of our APIs, be a player for every, you know, an entire ecosystem and provide sort of modular solutions so our customers can plug together the way they want to plug them together. They don't have to use all of our products. They can use some of them, et cetera. So you'll see more of that. Obviously agility is very important and also providing the infrastructure that's very dynamic, very elastic, like we talked about. We think that's open stack. So you'll continue to see a lot more hard work there from Red Hat and our partners and the ecosystem. And then finally, you know, as you've heard lots at the show, it's all about the application, the business value. The business value is all about drawing analytics out of the day, you know, having analytics that work against the data to get the business value. And so we're providing, you know, look for us to continue to work very hard on things like OpenShift and our Jboss Middleware to provide platform as a service so that customers can use whatever language they wanna use and develop in their tools that they want and yet do it dynamically and be able to deploy it very quickly. What about Red Hat's some of any visibility on what's coming on the agenda for that? Is it too early to kind of tease out a little bit of data on that? Yeah, no, it'll be the same as, are you, you know, what I just mentioned, right? It's gonna be all about open stack, it'll be all about set up. A lot of sessions, same deal. A lot of informational sessions, the queue will be there. Oh yeah. We'll be in Boston, hopefully the snow will melt by then. It was a report that said in New York there was the longest string of no murders in New York City in its history because of the cold weather. One of the comments was maybe the good bodies were frozen. But so the snow in Boston hopefully will be melted by then but we'll see. Greg, thanks for coming on theCUBE, really appreciate it. As always, a great conversation here on theCUBE. We'll be right back with our next guest after the short break. We are live in Silicon Valley, day three coverage, a big day to ask people to be right back.


Hi and welcome to the session. Let's work out the following question. A question says, a tent is in the form of a cylinder of diameter 4.2 meter and height 4 meter surmounted by a cone of equal base and height 2.8 meter. Find the capacity of the tent and the cost of canvas for making the tent at rupees 100 per square meter. Now this is how we interpret the question. We see that this tent is in a form of cylinder. The diameter is 4.2 meter. Since the diameter is 4.2 meter so radius will be d by 2 that is 4.2 by 2 that is equal to 2.1 meter so this is 2.1 meter. It is surmounted by a cone of equal base and the height of the cone is 2.8 meter. We have to find the capacity of the tent. So radius will be 2.1 meter. Height of the cylinder that is h is equal to 4 meter. Therefore the curved surface area of the cylinder say c1 is equal to 2 pi rh that is equal to 2 into 22 by 7 into 2.1 into 4 that is equal to 44 into 0.3 into 4. That is equal to 52.8 meter square. Now height of the cone h is equal to 2.8 meter. Radius of the cone is 2.1 meter. Therefore the slant height will be equal to square root of 2.1 the whole square plus 2.8 the whole square. That is equal to square root of 4.41 plus 7.84 that is equal to square root of 12.25 that is equal to 3.5 meter. Therefore the curved surface area of the cone say c2 will be equal to pi rl that is equal to 22 by 7 into 2.1 into 3.5. That is equal to 22 into 0.3 into 3.5 that is equal to 23.1 meter square. Therefore the total surface area of the tent will be equal to c1 plus c2 that is equal to 52.8 plus 23.1 that is equal to 75.9 meter square. Now we see that 1 meter square canvas costs rupees 100. Therefore 75.9 meter square canvas costs 75.9 into 100 that is equal to rupees 7590. So our answer to this question is that the capacity of the tent is 75.9 meter square and the cost of canvas for making the tent at rupees 100 per square meter is rupees 7590. So I hope that you understood the solution and enjoyed the session. Have a good day.


Yo, yo, now we're ready now. We're ready for this day. Okay comment of the week right now, and here we go folks It's time for yes, it's Monday Monday is comment of the week time. Are you ready for this?  I used to be a team sport athlete in high school hated running ran a 628 mile Puking because we were forced to run sub 630 for basketball 20 years of rest and 125 pounds later I decided I should get in shape before I turn 40 I had a little over two years to meet that goal and still running was no thought I had to lose 60 pounds before I could even start to exercise Six months and 60 pounds later I decided on a whim to see what I could run a mile in I made it a third of the mile of a mile and had to walk I Ran and walked a 13 minute mile wanted to die hated every second could taste blood But for some reason I wanted to try again and again and again Something so miserable yet. I wanted to keep doing better and pushing myself I had full control only me to compete no work stress life noise in the way Just me and my misery a year and a half and 90 pounds later I just set a new mile PR of 6 17 Wanting to puke absolutely miserable, but wanting more Thank you Detecting MO for that comment of the week and for sharing about your story and how like the struggle of life of You know, listen, we all get older Maybe we get a little out of shape at times But a light bulb goes off in our brain like wait a minute There's more to this life than just sitting on the couch right more to this life to just being Stagnant and not moving forward in all sorts of different goals in this world So thank you. What a great comment and I'm just inspired now. I'm inspired. I don't know about you But all right, let's get going. I got about an hour before the Sun goes down and yes a snow storm is on the way All right before we head out into the streets of Denver I can see that the the cloud bank of snow like moving this way So thankfully in addition to the mystery shoes arriving in the mail Something else arrived in the mail and you better believe that they're green my new winter running gloves right here I was gonna wait to show you these for back at the house, but I can't resist I can't resist showing them to you right now and we will talk more about these gloves in a later video first I'm gonna of course test them out for you guys just to see if they're legitimate and if they're a good product And I took a little bit of a risk buying them online and not testing testing them out in a store But I couldn't pass up the deal and of course the color. All right, let's get them on come on Time to go into streets of Denver. Come on Simba down baby that comment of the week got me going good run in downtown Denver And if you've been watching this daily running vlog for a little while now You know that I love to support local running shops local running stores the small guys that are just trying to make a buck in This world. All right. I am in full support of going to your local running store in buying running shoes from them However Sometimes a deal is too good to pass up and that's where the competition of the running shoe marketplace Makes a difference for us the consumers so we can pinch a few pennies and save some money So we can buy some more shoes that are on our radar for racing on different surfaces at different distances So here we go ladies and gentlemen. What is in the box? I have my big trusty knife here and we're gonna cut right into this guy this Yes was a oh Get a little hot. This was a cyber Monday deal. Okay, that's where the thirty four dollars comes in thirty four dollars for this shoe Can anyone guess what it is? All right, let's open this up. Hold on. Here we go. Don't cut yourself. Don't cut yourself. Oh Now you know the shoe company. Oh, no, I cut into the box. Oh, well now, you know the shoe company now What is the shoe? What is the shoe? Here we go? Dun-dun-dun-dun-dun-dun. And what color is it? I think you probably already know what color it is That's right I picked up for thirty four dollars the new balance Zanty version for the new balance Zanty version for with fresh foam through that midsole, baby And look at that color. Look at that color. Isn't that a pretty color all baby So I've been looking for a lighter weight road shoe and for thirty four dollars on cyber Monday I just could not pass up this deal It looks so good. All right, I'm actually holding this for the first time and Let me take out the the paper Nice not bad not bad at all. I'm just trying to feel the weight Yep, they get the right size. Yep, right size. Okay, it's pretty lightweight. It's pretty lightweight Okay, I have been intrigued by the Reebok float ride run fast shoe, but it's a lot of money. In fact It's either It's either as much as the vapor fly 4% or it's a hundred and like 80 I can't really I can't quite I have to do a little more research, but I'm intrigued by that Reebok shoe I'm intrigued by the vapor fly 4% flying it, which is an amazing shoe as well But who wants to fork over another two hundred and fifty dollars for a running shoe? I know I do not at times I can make that happen, but that's like maybe once a year Therefore this guy I think I don't know I mean I bought this because the price was right and I am running a 10k road race in about two weeks and the vapor fly 4% did not work so well for me at the 5k distance and so I Think I may have just found a good one and just a few brief observations of the shoe out of the box And again, I have not run in the shoe yet, and I believe I was mispronouncing. It's not Zanti. It's Zante I think what is that Italian? I don't know what what is that? What is that? So is that this shoe is not? Incredibly flexible, which is a good thing. I think it'll help me personally stay up on my toes a little bit It'll reduce the amount of energy loss when I'm because I like to strike my on my toes And I can tell that the flexibility is not it's not too flexible, which is a good thing for me I'm also noticing a ton of breathability through the toe box and At least that's what it appears like. I'll just have to test it out And speaking of which the sketchers and my first impressions of the sketchers is coming very soon Yesterday my toes were getting a little chilly in the sketchers Ultra-go through the toe box and as far as breathability it was almost allowing too much cool air through So I'm gonna have to figure out whether I need to wear thicker socks for this shoe or not I don't know if that's common in all sketchers shoes Maybe you could let me don't know down in the comments if you're a sketchers fan like what you experience with air flow through Your toe box, but this does appear on the zante to have a pretty breathable toe box Which definitely in the summertime is a good thing and also, you know Just hard workouts at any time because you know you're sweating and working hard and also through the upper it has this What they're calling the hypo skin the hypo skin this upper material here toward the back of the shoe They're calling it the hypo skin and it it's interesting. It's pretty fairly dirt feels very durable to the touch And I don't know like it looks really it just feels very comfortable to hold in like I don't know it feels like good good build quality as I'm holding it and the outsole is a pretty Standard pattern nothing you nothing too unique or crazy with that outsole definitely designed for the roads This is for sure a road shoe Not not a trail shoe and then you've just got that fresh foam That new balance is so well known for these days through the midsole and nothing You know not too many bells and whistles through the midsole as far as construction. So anyway, that's just a few observations And Just beautiful. Oh, I love this might be my most favorite looking shoe in 2018 we shall see we shall see okay the question of the day Let's get right down to it ladies and gentlemen. Here we go This is an interesting one an interesting question the day has nothing to do with the Zontes or with the new running gloves that I got Today or it has it's actually really really it's it's kind of for my benefit So I want to learn from you and I want to be inspired by you and encouraged by you and Challenged by you and so here's the question of the day Yesterday we talked about mileage on the vlog Go check it out upper right hand corner and as we prepare on a macro level for a year of running in 2019 on a macro level like I'm excited to actually Really think through and plan out my training schedule for 2019 Remaining flexible, but still having a pretty good plan as I prepare for my first road marathon But I also want to prepare very very well for running and YouTube and YouTube. That's right So the question of the day What do you want to see on? this channel in 2019 because guess what it's right around the corner and so if you've been watching for the last two weeks the last Six weeks the last eight weeks you've obviously noticed an upswing and running content on the channel and it's exciting and I'm grateful That a lot of you have discovered the channel However now that we are at this point in time I want to make sure that I'm preparing well, and yes, that is the keyword of the day prepare preparing well for 2019 on YouTube So this is your opportunity down in the comments to share your thoughts ideas opinions and overall Forecast for what you would love to experience as you watch videos here on this channel in 2019 I know that I just communicated a lot to you, but I cannot stress enough how important this is and think about You can think of it. You can think about it artistically content Um Questions of the day actually like what do you want to see on this channel because guess what? It's not just my channel anymore You know it kind of used to be for a long long time It's our channel and it's a beautiful thing and so thank you for taking the time to type out Two sentences five sentences 20 sentences however long it takes you to communicate your thoughts about the future on this channel I'm gonna stop there I could talk all night about that because I love it and I love you too, but I love you But I gotta go at it and I gotta go just admire my shoes. I gotta go sit there and admire my shoes. That's all that's all see beauty Work hard and love each other. Thanks for being here. Hmm. See you tomorrow


And indeed, we've just had a definition from James Lee here. Innovation is attracting people, resources and capital from all over the world to interact in a 24-hour global city.