 Alrighty, we are live. I had some weird audio issues earlier. So, if you can't hear me, please let me know. I had to crank up my mic mixer for some reason in my lab studio. I'm not quite sure why. So let me know if you can't hear me. I'm finding that music to be a bit loud, so I'm going to drop that down a bit as well. Okay, so for today's live stream, I am going to be testing WordPress Playground a little bit. If you don't know, WordPress Playground is a version of WordPress that runs in your browser. It's essentially using something called WebAssembly, which thanks Wikipedia, is a portable binary code format and text format for execution of the programs. Let's see what Wikipedia has to say about that. High performance applications on web pages. It's been around since 2017, and I know nothing about it other than WordPress Playground uses it. So, basically, if you go to the WordPress Playground home page, there is the version of WordPress running in the browser, for example. I can view the dashboard, view the front end. So this is all running. This is a standalone WordPress instance running inside, I think, an iframe. Let's check that out. Looks like this one's not running in an iframe, which is kind of cool. And you can do all kinds of fun things with it. So you can, there's a way to, you can save it using the export button, and it's basically the complete site that you built. You can host it anyway. You can restore a saved site. It has the potential to be like something that hosting companies could use. So you could spin up someone's WordPress site using this technology, which theoretically would mean you wouldn't need traditional hosting. So if you missed it, I recommend checking this out. Now, the main reason that I am here today is I'm trying to test this out as a replacement for my local Dev environment. So there is a visual code studio plugin that allows you to run WordPress Playground in VS Code. And there is also a CLI tool called WPNOW, which is kind of like WPENV or any kind of other Docker-based WordPress local environment, but it uses WordPress Playground as the back end, if you will. I have for the longest time, I would say for the longest time, but I have for a while now been using a personal local environment project that I developed about two years ago now. It runs on something called Multipass, which is a virtualized Ubuntu server. And what I like about it is I'm basically running an Ubuntu server on my machine, so I have access to all those Ubuntu things. So it is very opinionated. It is set up very specifically to how I do things. I'm trying to make it possible to use it across all operating systems. But essentially I can have things like local URLs that have locally signed certificates and basically just run. It runs like any other web server. So what I'm going to do today is I'm going to test out. I think I'll start with WPNOW, mainly because Visual Studio Code requires me to be inside Visual Studio Code. So I'm going to try WPNOW on a local WordPress site. I'm going to see what's possible and what isn't. So here's WPNOW. You can launch it inside a plugin or a theme directory. You can launch it inside a WordPress install. WordPress mode is essentially the mode that you can run. So it automatically detects the mode. I like the fact that it has a WordPress developer option. I'd like to try that out. So I think that's what I'm going to start with today. So to do that I am going to inside my development directory. I'm going to go into websites. There's a bunch of sites there. I'm going to just remove a bunch of these. Let's just create a new site. So let's call it WPNOW. My preferred way of doing it is I want to have a fully sort of traditional WordPress set up inside this directory. So if I open this in PHP store, I should now see my WordPress files. WordPress hasn't been installed yet because the config file hasn't been created, which is fine. So that's my preferred way to run WordPress to have access to all WordPress files. So now I should be able to run WPNOW start. I think I do already have WPNOW installed. Let me just check that. I could just install this in the project, I guess. Okay, it doesn't seem installed. So let's go WPNOW start. Just work. Okay, so the WordPress file doesn't really exist. And I mean, that's up and running. So that's pretty quick, I have to say. So it checks the mode. It sets a WordPress. PHP version sets a PHP 8. It's using the latest WordPress. It really checks. It says it's already there. So skipping the download. Oh, that's cool. I could have actually done... Okay, I'm going to close this. So it happens when I close the jail of suffrax. So I'm actually going to go back one step. And I'm going to remove everything in this directory. And then I'm going to run WPNOW start again. Did that delete everything? I don't think it did. Do you want to delete all files? Yes. Oh. Okay, the idea is that it's actually removing everything. So if I run WPNOW start, how does that work? Ooh, it doesn't actually install the files. So that's interesting. So where are the files? Now I'm curious. I'm trying to get the path. If this is running, there's no files which are running. So how does that work? So the mode here is Playground. Okay. So what does that mean? Launches a completely virtualized WordPress. I guess I have no access to the files. Okay, so how do I specify that version? Oh, it doesn't work again. Okay. All right, it's fine. So now if I download the core files and then run WPNOW. Now the question is, is this running this file? It's created a config running a WordPress mode. So does that mean that I can... Oh, it changes here. I'm looking at database directory. Can I break this file? So let's do... So that definitely is running. So let's see if we can... So I actually was fiddling with this file today so I know exactly what to change. So I just want to make this change. Okay. So I'm actually definitely working with those files. All right, that's kind of cool. So how does it work? Now I want to know how it works. Because I have a database directory and a dv.php directory. Where is my database? Because as far as I know, this thing is using the SQLite version of the database. It seems to be here. Okay, so SQL... So I'm talking to myself and not finishing my sentences now. Okay. I need a PHP. I wonder if that's because hidden files... Yeah, hidden files. This is a macOS thing. It's like a keyboard shortcut. Command shift. Yeah, I'm using a non... I'm using a non-mac keyboard. So I have to... Yeah, Command shift. It seems really hidden files. So where is the database? How does that work? Maybe it's all... I think it's sort of too... Hmm, interesting. I think you remember at one point there was a... trying to figure out where the database is stored. WP now and directory is used to sort of versions. So it looks like it does simulix. That's interesting. Okay. Hmm, okay. Okay, that's interesting. Okay, interesting. So that's how that works. Content folders. So that means... So what happens if I install a plugin? I'm going to stick something like fake and proceed here and just see what that installs. So it actually installs it in my local. That's cool. Okay, so the only things that are sitting in that directory are the sort of required things. In this case, so the database is stored there. Okay, that's cool. Hmm, I'm not going to lie, I quite like it. So my only two, let's call them, complaints is the URL structure. I would love to have a locally signed suit and a cleaner URL. But that's really the only thing that I could think of that would be a problem now. Let's see what happens when I update the bottleneck structure. Okay, that seems to be working as expected. It used to, previously it used to have an index.php in the URL, but it seems like that's fixed. That's actually really cool. I'm not going to lie. So if there was a way to have a cleaner URL and a locally signed suit with us, I suppose the locally signed suit is not that important. It is nice to have. It's not that important. So now what I want to do is I want to create a new one. So let's say MectorSquadLanePress. I want to put Word, Equor, Download, Propoena. Ah, Propoena has stopped. I mean, it just works. And it's quick. Super quick. Okay, so let's do some, so I want to show you all something. Okay, so let's quit over here. So, okay, so things that... Can you... Okay, so this is something I haven't fiddled with in a long time. And this is things like setting up URLs and things like that. Okay, so you can do custom URLs. You just need to have it set up in your house file. But what that would do is it would allow you to... Sorry, I just got stuck into reading there. So Blueprints basically allow you to run custom commands on your install. So let's see if we can configure this to work. So Blueprints are essentially JSON format. So let's create... Now one question I do have is... I don't know what happens if I set this to Port 80. I'll tell you why, because I've got other things running on Port 80. Let me now start Port 80. Okay, that's already a step forward. This is running on a local host. It's kind of cool. I had no idea that was even an option. Okay, so now... I should just check something. I want to make sure I don't have a learned press. I don't have a learned press, so that's great. Okay, so now I need to... My host file and put in my password. Yeah, I can't remember my password. Okay, so... I probably need to point one to seven. One to seven is only one. So now I need to specify the Blueprint. Okay, so let's create the Blueprint in this file. Let's use this one. So it's Blueprint.json. Let's close this one down. Clean press. Okay, let's just create the Blueprint in here. Okay. I will just call it... What did I call it? What did I call it in there? Then press the test. I just prefer to use 10.test. Here it is. So then press the dot. So now... I started on port 80 and pass in the Blueprint. See what happens. Ha! It works! That's cool. That's actually really cool. It doesn't mean I need to be able to edit my password, but that's fine. I'm capable of doing that. Do permalinks. Yeah, that works. Not going to lie, it's really cool. I can deal with not having SSH... SSL... SSL's nonsense. That's really cool. So now, in the Blueprints as well, you can do things like set... keybagging. So let's go back into the Blueprint. Set up the schema. Okay, and then steps... define. So that's the config. Oh, I could just do it. Into there. So this is how I prefer to run all my... sites. Let's see if this works. Okay, true. Okay. And then I also want to be able to set up my my site name. Steps. Plugins running custom code. I want to store things in the settings. I'm going to check the schema. For the versions which is constant, plug in site options. Site options. Plug name. Name, price. So that's where I want to set up already. That should be it. I don't have options. There is any block name. Okay. I mean, that's fair. Yeah, there is any block name. It looks like you stay logged in. So that's cool. The one thing that this could really use is... is activate some steps if you step to find such a little step. Or you can actually interesting. You can define it that way. Okay, so it's learning page preferred versions. It's pretty nice to be updated. PHP extension vandals is there as well. Features. Okay, so this is really just updating documentation. Okay, cool. And then steps. Steps. You've got to activate plug-in step. You've got to activate theme step. Copy step to find such a whole step. That sets the home and such a whole constant. That is what I've got. I've got to find WP constants. I mean, it's the same thing. But what you could therefore do is... move it like this. So you can take away the constants. There. Step needs to get an object. No, not there. No. So now we can say No. Press. Exist. Okay. Define for around defines the constant before in the script. It doesn't alter the following disk. Consumers with my constant existing to find. Now I prefer this one. Yeah, I'm adding. So that should install plug-in and theme is cool. I'm not going to use it right now. Define before run method is not the end of the world. Just means it doesn't actually physically make the change which I generally prefer. Okay, so that's what the blooper looks like. So that is a question. If I want to reset those... Does it just work if I run it now? Create a fresh state of this. Okay, so let's do that. And let's do that. And let's do that. Here. Must not have additional properties in steps one. Alright, maybe that one you can't set to record. Makes sense. Okay, let's run that and see what happens. Okay, so maybe that's not the way to do it. Set options. Block and I can press. Yes, this one. I don't think I need to do this before the steps. Oh, it's been different. This experimental option will change with that one. Use steps instead. That's fine. So we need to use this one. Okay. Steps. Steps. Ha ha ha. Funny. Alright, I'm going to need to... Right. Do that. Okay, so we don't do that anymore. It's only steps. That's the whole concept. Okay. There. Alright, we're done. Define side. Okay, but how do I step to find side name? Okay. Set side options. Okay. So how does side options work? Options object. There must be a series of side options that I can set. Options. Block name. Okay, so possibly the scheme is out of date. That's fine. I should be able to set these two up. Because that defines the side URL. That sets up the side options. This is the conflicts. Set side options doesn't seem to work. Okay. So... Documentation is a big thing. I seem to be working with an out-of-date schema or out-of-date documentation. So documentations are a big thing if I want to do this. If I could get these things to work, then that would solve a lot of issues that I'm... Maybe side URL doesn't work. Let's try. Maybe the reset doesn't work. It broke there somewhere. Okay, that's already been defined. Okay, my next question would be how do I wipe this? Anyway, I'm going to be able to figure that out. As if I actually go into here and delete that one. So let's close that. And then let's delete that. I could recall if there was an easy way to do it. What did I just do? I could recall if there was an easy way to do that. I quit that command. Alright. I deleted the wrong one. I was playing around with these a while back. Okay. No, I don't want to delete the blue bit. I'm just trying to get that to work. It feels like these things are not... Can you just call it besides? Okay. Okay, that worked. Then it gave me that for some reason. Alright, that's because... I need to download the files first. Last. So let's go to the P-core. Okay, so that's worked. Alright, looks good. Okay, so it's set up the home url, the satchel, the debug display, and the debug log. But it does it above those things. It's not really ideal, Adam, if you watch it. I would prefer it if it actually, you know, in this area. Like, if all of this is not easy or difficult for us to do, but this is really where custom values should be created. Just FYI. Also, the fact that I've said debug display is false means that I shouldn't see these. I do have a debug blog file, which is great. That's very cool. But if I've set up my config file there, then I should be seeing this error. I also don't know why I'm seeing where does that error take place. I bet you have a take. I don't know why I'm getting that error. That hasn't been said. So maybe it should do the find for run option. Okay, let's pop that in there. I'm going to stick this in the JSON file. Just keep hold of it. Okay, so let's go back here. Let's kill this. Let's delete the name. Let's still be expected. Let's delete the name. Pop the blueprint back into the directory. Let's start port agent. The reason this isn't so quick is because it's running those steps. Okay, so that's kind of to be expected because I've set debug here as well, so that's fine. So you only want to set things that haven't been set. Let's see if I stop this. Let's see what happens. Okay, well that's cool. I wonder what happens if I change that. Impress 2. Impress 2. Does it re-run those steps? Yes it does. That's cool. Okay, that's cool. I like that. All right, so that, I mean that could be used. That's handy. I do like that. This is something that I can use. I'll be honest. It gives me the clean URLs that I like. It just works. I'm logged in. I want to check what happens if I log out. I'm going to assume the username is admin and password. Yes, indeed. That's fine. I have no problem with that. Admin password on a local environment is perfectly fine. So I'm not going to lie. This is pretty good. So I'm not going to lie. This is pretty cool. And I could do things like install plugins like fake address and all those kind of things. I could take this and I could I could script something that outputs the blueprint for me. Replacing things with things. And it's easy enough to edit my host file. So I know enough about command line scripting to be able to actually create a command that might do this for me. So that's kind of cool. So I would do something like create a test blueprint with some placeholders and then run the command. Is this still throwing it there? Let me just see. So I quite like the idea of sort of setting up a blueprint version that I store somewhere locally and then I run a command which I could set up to download WordPress coin store change things to other things and then run WP now. So that's kind of cool. And I just need to make sure that my host file is set up. Hmm. I wonder what that would look like. Okay, so I want to find out about this blueprint schema. I guess what it's doing is it's using whatever WordPress side options are. Just have a look at the database quickly. So it's requiring you to kind of have an item. It's kind of expecting you to have an understanding of the different side options. But yeah, I certainly could use this. I could use this for for a local WordPress and so on. That's super interesting. Okay, what I want to do now is I want to check something. Let me just put it here. So there is a specific endpoint. That doesn't seem to work. Which is a bit of a power. It's not there in the world, but it would be preferable. I would need for it to work. I would need to I would need to do this. Which is not great because this isn't really well documented. See if you go to Posts for example. I don't know what the URL is to find the Posts. Everything is using Permalinks. So you would need to know how that works. If you need to post. So that would work. This is obviously how the blockage works in the backend. But it would really cool if I didn't have to do that. If I could just use Permalinks. That doesn't seem to work. So that's maybe something to find out about. But I do like how the group loop works. I do like the fact that I can set up configs and things. Interesting. Very, very interesting. I think what I'm going to do going forward from here is I'm going to try and see if I can use this to develop some content next up. So my main reason for using a local environment is for content creation. Following WordPress. And so I'm thinking now that I know this I should want to store this in just somewhere quickly before I use it. And I'm going to store some questions as well. So I'm trying to call this WP now public for now. I don't care. So first takeaway documentation documentation. Definitely things better documented so that all the options are available so that we know how things work. Second question is how to enable the REST API pretty permanent using WP now. I'm actually going to say this is WP now take rows. And this is WP now testing. It's fine. WP now. Other than that I'm pretty chuffed with how far this has come I'll be honest. I feel like a lot of the issues listed here that one definitely is closed. Cool if there was a way to do the minuscule one. But it's still open. I feel like WP now leads its own page in here. I do like the fact that you can change WordPress versions quite like that. Which extensions let's dive into some JSON things. What options do we have? Just simply that option. If that's the only option why not just I've lost the schema. Why not just have it all? I don't understand why you need to specify it. Maybe I'm just weird. I like the preferred version so you can specify PHP versions. That's cool. I don't know what version PHP WP now runs with defaults 8.1. That's cool. So I have to admit I'm quite excited that it will be now. It does quite a bit quite nicely. I quite like it. I'm curious to see if I'm able to use Blueprints in the VS Code extension. Because the VS Code extension runs inside VS Code. I'm planning on testing that out next week. Not next week. Next time I do a live stream. So I'm quite interested to know how that would work and whether it supports Blueprints. I'll do that next time. Now I'm quite chuffed with what I've discovered today. I do wonder about the WordPress Rest API I think. So I'm going to post a question about that and I wonder if there's one there already. Let's see. Okay. Don't see anything. Do you use the API? Post name. Let's see if that's true. I'll still say it's plain. That's why. I thought I saved it. It still doesn't know what it's looking at. Oh, dear. That's nice. But I've already done that. Way too many tabs open. Let's just post names. Oh, because I don't have the right general. It works. Alright, well then that's actually not even an issue. That's actually pretty cool. So I can just delete this now. Documentation is definitely the big thing. A bit of documentation on how the Blueprints works. Some way to generate Blueprints. I know it's not that easy, but some way to... Basically just to know what all the options are. So my biggest takeaway would be listing every single option in the Blueprint. Maybe it's really there. Maybe it's just steps. Those are steps. Those are steps. So being able to know. I suppose if you're using the schema, then it's fine. But if you don't know that you can save preferred versions, for example. So having a list of all of that somewhere. I suppose Blueprint data format. Fertile versions. Features. And then steps. So this needs to be updated to cover all of these. And then steps. So that's pretty fully functional. So At least I think the Blueprint data format just needs to be updated because here we have a line of page with preferred version and steps. We have our PHP extensions. Features. I suppose. Maybe it's just in case we're getting used to them. Find side URL. This doesn't seem to work anymore. So maybe an update there. Update it to find side URL. Yeah, that didn't seem to work. Let's make a note of that. That definitely worked. But I haven't tried. I haven't really tried any of the others. But I should. Alright, I think I'm going to call it a day there. That was pretty enlightening, I must say. Everything seems to be happening in steps. Which is something I was not aware of. Alright. I'm going to call it a day there. This has been rather interesting and enlightening. I'm looking forward to playing with this a bit more. My next live stream will probably only be in about three weeks time. Because I'm away next week. And then sort of gathering my thoughts after that trip away. But next week, next time I'll probably dive into the VS Code extension and just see what's possible there. And also maybe see if I can try and get some of all of this automated for myself. While I'm doing that, I'll do some digging around. Ask some questions in various places about how things work. And maybe see if we can get the documentation. I don't know. I feel like it's very close. I feel like the information is all there. I just maybe struggle to understand how it works or how it fits together. But yeah, I was able to get somewhere today at least. So quite chuffed with that. Alright, I'm going to call it a day. Thanks for joining the stream. Hopefully you found something interesting. Bye bye.