 We're going to next bring up Steven Levine. Steven runs the BuildPack project for us. He also helped to create CF local, the command line tool, that the plugin that ties into the command line tool that gives you a bit more of a local developer experience. But Steven's got something really interesting he wants to show us. So I'm going to let him come on up right now. Come on up, Steven. So you have something new for us, right? I do. I do. Yeah. I'm kind of excited. I'm not dancing in this one, though, right? No, not this time. OK, good. Good. So why don't you tell us a little bit about what it is you're about to show? So CF Dev is a new local experience for Cloud Foundry. It runs on your local workstation. It's only on Mac right now, but we'll have a Linux and Windows version really soon. So CF Dev? CF Dev. OK. Yes. Sorry, did I say something else? No. That's all right. Cool. CF Dev. So it has all the features of Cloud Foundry and Bosch. You can deploy Bosch releases, services. You can push apps. You can know everything's there. And it uses a lot of the same technology behind Docker for Mac. So it uses VPN kit and Hyper Kit. So it can use your operating system's native hypervisor. You don't need virtual box or VMware or anything. It just works. How many people knew that you had a native hypervisor just waiting to be used? Not many, right? I think it's kind of neat. So nothing additional to install? No. It just works after you install it. So in the interest of time to make the best use of time in this demo here, I went ahead and installed CF Dev and started it. So you can see up here, I ran CF install plugin on the plugin I downloaded from GitHub. And I ran CF Dev start to start it. You can see the nice ASCII art there, really pretty. It gives you instructions for how to log in and users that are sort of preset up for you. There's a special CF Dev Bosch end command that will point your local Bosch CLI at CF Dev automatically. And so I went ahead and deployed RabbitMQ, the service Bosch release, and the broker for RabbitMQ. Hey, there's that cloud native YAML scrolling by. Yeah, yeah, there you go. I'll kind of scroll over through that quickly. At the end here, I ran an errand to deploy the broker. So you can see, if I look at my Bosch deployments, that looks like it's getting cut off a little bit here. So I just want to make sure we're reiterating this. So CF Dev has an entire Bosch director, the ability to think about your local workstation as being an infrastructure target for Bosch to deploy jobs into. That's right. And you're able to do CF deployment. Yep, and CF is pre-deployed. And all the Bosch jobs are running in containers. It's inside of this one VM instead of running in VM. So it's pretty lightweight at the same time. Really neat. Really neat. How much memory do you need for this? So the version we just cut this morning should, it requires about eight gigs of RAM, or sorry, requires about four gigs of RAM by default. But we kind of recommend maybe a machine with at least eight gigs of RAM to run it. Yeah, it is a team working to push that down. Sorry? Is the team working to push that size down? We're trying to get it as small as we can. I think we think we can get the base footprint down to about two gigabytes. And we think of RAM. And then we think we can get the disk space much smaller too. It kind of eats up a lot of disk space right now. Awesome. So we're working as hard as we can to make it as small as we can. Sure. So you can see here I have CF deployed. And I have Rabbit and Q deployed. That's what I had done before this. And I can even look at the Bosch VMs here using the Bosch seal, just like I would with a real deployment. And you can see I have all my CF services running there, Cloud Controller, Diego, Go Router, everything, and the Rabbit and Q. I even have three nodes of Rabbit and Q running just locally here. And so I can even go to, in my web browser, I can go to the Rabbit and Q control panel. And you can see really every option I have in a full deployment of Rabbit and Q simulated locally in containers. And that'll work for any service you deploy to it. So I'm going to go ahead and log in to my, sorry. I go ahead and log in to my cluster. And SSL validation doesn't work quite yet. So you have to pass that separate flag. And then I'll log in as a regular user. And I can go ahead and list the services I have installed. And you see there's Rabbit and Q, and just magically there after I did the Bosch deploy. And I'm going to create an instance of that Rabbit and Q service. Just takes a second. And then I'm going to push the Rabbit and Q sample app for Spring. This will take about a minute to push. And I can kind of show you pushing an app to something that's running totally locally here. So this- These Spring app samples get a lot of exercise on stages. Yeah, Spring is very popular. So you can see here it's uploading the files. And it started the staging process locally. It ran through detection. Found needs to use the Java build pack. Just like if you push to a real instance of Cloud Foundry, but all happening locally on your machine. You can see it's getting through that staging process. Everything that I've built. So while it's staging, why don't you talk a little bit about the motivation for the CF Dev. I mean, we had CF local. There's kind of other takes on how to deal with the local environment. But what's specifically what motivated this? And who's your target? Who do you want people to use? What people do want to use it? That makes sense. We think of CF Dev is a great tool to kick the tires on Cloud Foundry to be able to get started as quickly as possible to be able to use any feature of the platform. So there are a whole bunch of tools that exist right now in different places that let you do parts of this. Like you can use Bosch Lite and then deploy CF to it yourself and get an experience that's kind of similar with VirtualBox. Pevital has PCF Dev, which provides CF, but doesn't provide Bosch at this point yet. So this experience is all of that wrapped into one can be started in one command. It's really good for, it can be used for local development, but I see it more as a tool for people who want to really play around with the operator features of Cloud Foundry and things like that. That's really neat. So it's a little bit more about the getting started easily if you actually want to learn what it's like to operate a CF environment. Exactly. That's really neat. And training and all that, but it's also really good just as a local development tool, too. Cool. So that app pushed successfully. And so I'm going to go over here and load the app in a web browser. And you can see it's just a RabinMQ sample app that lets you send a message to a RabinMQ queue. So I'll just say hello. And I published it and I'll receive it. That's not super exciting, but you get the idea. It's using that service behind the scenes. Cool. And I'm going to, next I'm going to do something a little more exciting. So I have an instance of RabinMQ running locally in Docker. And I have... So a different instance of RabinMQ. Yes. So it's a different instance of RabinMQ running locally in Docker. Sorry. And sorry if I can type here. I have this local service binding setup. So this is just credentials to log into that RabinMQ running in the Docker container with that IP address there. And I'm going to create an instance of that called localRabbit. And if I list my services here, you can see I have the local service instance and the remote service instance. And then I'm going to unbind the remote service. Or sorry, they're both local, but I'm going to unbind the instance running in CFDev and rebind the instance running in Docker to the application. And then I'm going to restart the app. Oops. Sorry. Should just take two seconds to restart there. Give it a second. I see next year we're going to look at some YAML again. Yep, yep. We're going to definitely more YAML. So now we have the app restarted. I'm going to go one step further here. And I am going to use CF Local, which is a tool that runs applications just in local Docker containers without CF, with the same credentials. I'm going to call this app LocalApp instead of TestApp and run it on port 3000. Why don't you remind everybody just CF Local quickly? Yeah, so CF Local is another CFCLI plug-in that really doesn't pull in very much of Cloud Foundry or Bosch at all. It just runs applications and builds applications using Buildpacks in local Docker containers. So it's a really lightweight local development tool, as opposed to CFDev, which is a kick the tires tool, a tool for workshops, for being able to use any feature of Cloud Foundry. So they're sort of different in the use cases, if that makes sense, and in their footprint too. And CF Local also, though, it can work with a Cloud Foundry app runtime cluster to push and pull applications and do some tonnelling of services. That's true. There are a bunch of service integration features in CF Local. I have a talk tomorrow. If you're interested in CF Local, we'll talk about it a little more there too. So I'm going to load the local Rabbit and Queue sample app from local host. And probably need to make that a little bit bigger. And say hello from local. And publish that to the Rabbit and Queue. And then I'm going to receive it from my app running in Cloud Foundry. Hello from local. Look at that. Shared service. Very neat. Very neat. Well, that was really cool. So CFDev, I think, as of last night, just became one of the newest projects in the foundation. Yep, that's right. It just moved into Cloud Foundry Incubator. You can see it here. We just kind of released this morning. Please go download it. Let us know in what you think. Report bugs. It only works for Mac right now. But we'll have a version for Linux and Windows out very soon. That's super neat. So give it a shot, folks. Thank you very much, Stephen. That was great. Really appreciate it. Really appreciate it.