All right, other people will be coming in when they come in. Does that go off? Can y'all hear me? Monitors aren't great, so I can't hear if I'm loud enough. I need to be louder? Oh, okay. Okay, he's going like that, and I'm like, is that thing going to be louder? Yeah, forgive me, I'm a little nervous on this one. I give a lot of talks, I'll get to that in a second, but this is the first time I've given this talk, and this is the first time I've given anything this complex. So if you lose me, or I lose you more like, the slides are all online. You can go to mcdwayne.com, which we'll talk about today, actually, and that's where all the slides, everything's the very top link under my session Slides and Such, which I found out today I shouldn't be using as an H1, thanks to Francesca and her lovely talk this morning. Anyway, I like doing stuff outside of tech, web comics and comic books or something I'm passionate about personally. I make a lot of crocheted things. I actually have a web store, but I'm not gonna tell you where that is, and I love karaoke. You came to karaoke last night, thank you. If you didn't, well, come next time, it's amazing. Again, I love Twitter. I didn't say that the first time, but if you go to my website, you'll figure that out. Twitter's my preferred method of communication in the world. I like having public conversations. And in fact, I have this ongoing project this year, and I've talked so much that if someone could get a picture of me in front of this picture and puts this on Twitter, thank you, Mary. Anybody's, please, this would be helping with this project in 2018. This is an ongoing, serious project, folks. And by the end, I'll figure out where all the pictures got put. And by the end, I'll figure out where all the pictures got put, and I will make an animated GIF, I promise. All right, I understand that everybody heard that, but that's more for people in the room, the WordPress TV. I work for a company called Pantheon. And I'm gonna end up talking somewhat about Pantheon today, because, well, I work there. I get free hosting environments, but you can too. I also get free hosting since I work there, but I think you should look into it for the tool set that I'm about to describe. Works there very well. It doesn't necessarily need to work there. We just built a really powerful platform that does multiple environments very easily and does things like get feature branching without a lot of thought. And I like that. But I wanna know who you are. I mean, I've been in WordCamp Montreal a couple days now. I need to slide down this way to get out of that light just a little bit. But who in the room is a developer? Awesome. This talk really isn't aimed at you, but I'm glad you're here. Who here considers themselves a content editor? Awesome. You're my intended audience. And who here considers himself a copywriter? Ooh. I'm gonna talk about that. Who here is like a jack of all trades and they just like glue and stuff together? Oh, then you're gonna love this talk. You're not my intended audience, but you're probably the most out of it. But before we get too far along when I start explaining concepts and drawing charts, I wanna show a quick video and I'll talk through it. There's no sound. So I'm gonna show you if YouTube loads it. Here's my website and here's my staging environment. They look identical because they are. That's the way it should be. And I'm gonna run this little utility I wrote called post it now. And I'm gonna feed it a file. I'm gonna feed it something written in markdown where it can parse the first line into the title and the rest of the body. Give it permalink. Give it an image to put as the hero or featured image. Give it some alt text. It fails if you don't give it alt text. I think that's important personally. I give it some terms. It can only pass in slugs, but I'm happy with that methodology. And it's gonna go ahead and build this onto my dev environment for me without me having to actually ever touch WP admin. And there's the address for where that actually lives. And then it's gonna run some testing. What you just saw there is behavioral testing. We'll go through it and I'll explain what it just did and what it checked for, but it passed the test. That's the important thing. And now it's gonna build it on my test environment. There it is. And now I'm running what's called a visual regression test. The machine is going through pixel from pixel from those two pages dev to test and say did it pass? In this case, it passed. Nothing broken my shipment of it from one place to another. So I say push it live. Yeah, let's go ahead and push it live because this is my actual live environment. I test a lot, so I put a manual stop in. You can configure it to automatically push, but for right now, I'm happy doing it the way it is. And eventually I sped this up a little bit, but some parts I left real time. And there it is in my live environment. And if I redirect to work correctly, when I made this demo, they didn't. I fixed them since and they're on my real live site is this post I just made, everything unfurled, my YouTubes and whatnot. And don't worry if you're in the room right now going what just happened because that's what the rest of this talk is about. For those of you who I have pestered with questions and theories and explanations of what I've been trying to do, that's why I'm super happy to give this talk is I finally get a chance to, without break, explain what I've been doing. This is what we just saw. I took something locally. I could have grabbed it from online. It doesn't really matter where I got it from, but I got content and I got metadata and I shoved it onto a development environment. And then I said, hey, we should test that. I behaviorally tested it and make sure things worked. I was thinking about it into what things actually worked later. Then I pushed it over to a test environment. And I wanted to make sure that the config didn't break between environments. Again, we'll dig into this. And because it all worked, I felt very confident pushing it to my prod environment, my production environment. This shouldn't look foreign to everybody that raised their hand as a developer. This is professional website development from a code perspective. We push it, we test it, we push it again, we test to configure again and we push it to live. Why aren't we doing this with content?  Why on earth are you doing this? This is really complicated. Well, yeah, in fact, I do run a little silly blog, a travel blog. Everywhere I go, and some of them other random thoughts end up on the site mcduane.com. And it is my home on the internet. I firmly embrace some of the ideals of the indie web. And I believe everyone should too. If you're using WordPress, you're already halfway there. You should own your content. You should own your space on the internet and you should own your own name spaces and ideologies. Mine's in WordPress. Mine lives on Pantheon at the end of the day. But unfortunately, everything I do on the internet comes with a technical debt. It comes with some technical burden and things I just have to do every day. This is one of my favorite web comics in the world, catandgirl.com. Probably, I have a print of this at home. This is one of my favorite things. It's impossible to read. If you get the slides, it's in the speaker notes the link directly to it if you wanna study it. But nothing terrible. It's just like, I gotta do this and I gotta log in and do that. Now I gotta log in and do this and now I gotta fix it this way. Now I gotta add meta. Now I gotta do this. And it's just a hundred little paper cuts. And I said to myself, there's just gotta be a better way to accomplish all this. So like with any project, I wrote down some goals. And I said, here's some things that are important to me and what I'm doing. These might not be important to you. When I realize this next section, some of you might say, I don't agree. That's fine. If you're fine living with the hundred paper cuts a day, I don't have any begrudgia. And again, this is my indie web project. This is my content online. Again, if it's not for you, you can have different opinions. One, I wanna write anywhere I wanna write. I wanna write in the text editor of my choice. The main reasons why are these three. I use Sublime Text and the first is Text Wrangler. More than I use anything else because they work on airplanes. They work when the Wi-Fi goes out on me three times in a session yesterday. It just works. I don't have to think about it. My computer can blow up literally. And if I've done it right, I can just pull it back from GitHub and be right back to where I left off. Inside of this, a conversation I've been having. And if there's one conversation we can have after this, this is the one I would love to have. Is the fact that copy is not content.  I don't know that I don't have the right word for it. Part of content. It can be content. Nothing's stopping it. But these are two separate things. And if we go into the world of Gutenberg thinking copy is content, we're gonna have a bad time. We're gonna have a bad time pretty quick. Well, I don't know about you, but last time I typed anything manually into Gutenberg and hit Enter, I got a new block. That tells me it's a content editor, not a copy editor. Wanna hit a new carriage return? I want a new carriage return. That's how copy works. Again, my opinion. And I wanna be able to write completely distraction free. I don't wanna know if I'm connected to the internet. I don't wanna know the pop-ups that suggest proper spelling and grammar and things as I'm typing. I just wanna type and get it out of my head. Editing's for later. We learned this in second grade. First draft is just ideas. Second draft, you edit it down. This also means I can leverage get because everything's just a text file. And now my world gets interesting because I can go get, log my history and find out where I inserted ideas. I use this for my personal writing all the time. And I can tell you where an idea came from. I can put things in my get log and from one place I can tell you the evolution of an idea as it goes through time. There's a lot of other tools I'm gonna talk about. I'm gonna speed up a little bit. But that's the first goal. So that's right locally. Or I wanna write locally. Two, ever since I started using the WPCLI, my function or one of my goals in life is to never, ever, ever have to log into WPC Admin ever again. It's slow and it's useless now. Because we can do things like this. Yes, this is actually how I made this post. And for you who are like, this is a blur. This is literally where this talk came from. I was at WordCamp St. Louis explaining this jumble of curl and said and all of this wonderfulness. And someone said, man, I can just like throw my URL in there. That might work. And I'm like, that's a good idea. So I componentized it up and started working on it. And that was the next section. Well, if I'm gonna do this repeatedly, I better not have to hand edit this thing every time. Or man, I'm gonna start messing up really bad. So let's build something that can do this for me and do it repeatedly, reliably. And do it in a way where I can throw it out to the universe. These are all open GitHub repos. More than welcome to go to pull requests. If you can help me fix it, please do. If you have better ideas, please and develop them. If someone walks out of the room and says, I like those ideas, but man, that's a rough version of that. And I could totally build it better. I encourage you to try. I encourage you not to try, but to do. Here's where I started from. And I really wanna make a lot less mistakes in production. This, believe it or not, drove a lot of what I've done this whole process. You log in, you start typing in live, you hit print or publish, and then while you stand there and stare at it and hope you got everything and wait for someone to comment and say, hey, you misspelled this. And if they're nice, they'll do it in private. And if they're not, they will say nasty things. Oh my goodness, your grammar's wrong. But then again, Chris Lima once said very well in the talk, there's this magical power in WordPress. And actually most CMSs, that when someone says something nasty in a comment, you can hover your mouse over this one section and hit delete. And you have control over that because again, it's your web, it's your content. You have power over that. There's nothing rude about deleting a rude comment. But I don't wanna do this manually because if I do it manually, I lean over a computer and I stare into a screen and my eyes are just not good after a while. And I think I wrote it right the first time anyway. There's these other tools that can do this programmatically for me. They can just, things I would visually inspect for, they can visually inspect for. The behavior I expect that I click around for, they can just do that for me if we tell them what to do, because they're machines. So that was it, that was my goals. I didn't sit down and write this list verbatum. I had a very, very different list, but when I find it down for this talk, this is what it ended up being. These were the things why I chose what I did. And this is what I built. We're not gonna go through everything in detail here. If today you walk out and say, I've never heard of two of these and you started investigating it, then hooray, we won. Ideally, we can start thinking all of these things like everything else on the internet as a giant pile of tools. If we spend all of our life and all of our time and all of our efforts around just WordPress, then we might as well not go to Jamstack Talks. We might as well not even worry about the WPCL, or the WP, I'm sorry, the REST API. We might as well not worry about Gatsby or any of the other amazing JavaScript technologies that are coming along, and let's ignore React because we're ignoring the rest of the known universe when we start ignoring the rest of the tools available to us. Because we don't live on an internet that got us to where we are. We live on an internet that's getting us to where tomorrow is. And I don't know what that looks like. There's devices that haven't been invented yet. If you would've tried to explain Alexa to me in 2002, I would've said that's a neat idea, it'll never work, because Lambda didn't exist. If you tried to explain to me VR, I would say yeah, like in the 1980s movies, it's terrible and it will probably get there one day. And I just ordered an Oculus Go because they're that good. Someone showed me one. And that's the world I want to live in. And all it is is putting the right gear in the right place. And this goes well beyond what I'm showing today. And this goes well beyond what we're doing at this camp. This is the internet and whole. It's just putting the right gear in the right place and tuning it correctly. And if we can step back from what we're doing and say well, this is what I wanna do in the big picture and get out of the framework of I gotta do it in this plugin in this way. Or I have to do it in the Gutenberg proper way. And step back and say, what am I actually trying to accomplish here? Well, we can accomplish anything. That's the magical beauty of open source. We all know what we're doing a little bit to share enough to build amazing, complex, beautiful things. But I am gonna talk about the components that I think are the most exciting. Each of these could be a talk unto itself and a couple of them are. That will be delivered later this year. First is Markdown. Who here already knows Markdown by heart? All right. Who here knows HTML and the basics of HTML by heart? They could sit there and write an H1 and H2, make an underlying, or not on it, but a bold happen, an italics happen, a strike through, all of that. Guess what? You already know Markdown. You just don't know the exact specific implementation of it. It takes 20 minutes to learn. This is what it looks like. You want an H1, you put a hashtag. You want an H2, you put two hashtags. You want an H3, so on and so forth. You wanna make a link?  Square bracket and parentheses. And guess what? Places already use this. Anybody use Reddit? Yeah, you can write in Markdown. Anybody use GitHub, Bitbucket, any of these, OpenStreet, SourceForge? List keeps growing. Another important technology that uses Markdown, well, I'll get to that in a second. There's awesome tools to learn Markdown. There's awesome worksheets and cheat sheets in the Markdown tutorial, which is how I learned it. There's a zillion of these things. The standard hasn't changed a lot in 30 years. It's hardened. It's hardened as much as HTML1 does, it did. WPCLI, and I know some of you were thinking, wasn't this supposed to be a WPCLI talk? None of this works. None of the things I have done today work without the WPCLI. WPCLI allowed me to step away from the admin and stop thinking in a box. WPCLI let me start thinking about what do the core of WP actually do? What do the internals actually function like? Who knows that they can modify any user role capability without a plug-in? Anybody? Yeah, a handful of you. The rest of you, that's the WP roles in CAP. Like, WordPress WPCLI lets you adjust these things properly in the WordPress proper way. I'm using the post functions. To use that on my hosting provider, I wrapped it in their CLI. I use Terminus, we have our own CLI. No reason you have to. If you are doing this on your own remote boxes, you can just remote with WP. I'm not gonna teach you how to do it today, but it's a function of WPCLI. You can aim it at things and say, do this here and that there. That's a fundamental other aspect. If I need to have a here and a there, which means I need multiple environments, I need to have at least local, at least staging, at least prod. If you don't have that, well, you're writing things to live more or less. If you don't test things between you move them to staging and prod, then you're hoping nothing breaks. Moving at least twice, I think, is fundamentally important. Software development's embraced it for a long time. Constant editing, I think it's time to come along. Gutenberg. I debated a while on what image to use here, so I used an old tweet from Bridget. Mullenweg said at WordCamp Europe, most, his favorite feature of Gutenberg coming out was copy, paste, or markdown. That's how powerful this is. WordPress, as of now, uses the same underlying things you can use on Reddit and GitHub and a growing list of places. It's the standard most efficient way to move content around, or I'm sorry, copy around the internet with formatting already attached. HTML is the standard, markdowns the shorthand how to write it without having to do a bunch of brackets. Still some brackets. Unfortunately, this says you gotta copy and paste it. So for right now, it's manual, you gotta copy, paste, then. And again, I never want to log into WP Admin ever again. So I'm not going to ever copy and paste into there. Which means there's this technical limitation where soon, I'm sure, put it in core because it's been in WordPress.com for a while. You can go in and click on a button and it says accept markdown. There's a plugin that does this still, WP Markdown. And it does essentially this, transform on load. Transform as it pushes it in. So as Gutenberg's receiving this information, between the time you pushed it from wherever repository you're pushing it to Gutenberg, on the way in, it transforms into markdown and then Gutenberg knows what to do with it. That's mostly true. There's some technical aspects to that, but that's essentially what's happening. We're transforming on rate. And then Gutenberg says, oh, I know exactly what to do with this, hooray. And Gutenberg's awesome for content editing. It really is. Throw a chunk of copy in there and then move pictures around and put clips around and make things bigger and smaller and drop cap. And it's awesome. I personally don't like it for the actual copywriting experience. That's why I'm doing all this in the first place. Then I get to testing. How many people have ever heard of Word Hat in this room? That's more than I thought. This is based on Be Hat. And you've got to know Be Hat, less people. How's that possible? It's based on Be Hat. Be Hat means behavioral testing. Be Hat is really, really easy to write because it's intended for people that aren't technical to write their own tests. It's called the Gherkin language. It's pretty readable. Can anybody tell me what specifically I'm looking for and what text shouldn't match if I'm searching the page based on this feature? Yes. Specifically, the string, slash, slash, twitter.com. That means something didn't unfurl because all the Twitter links I do don't use www. All the Twitter links that I always pull from Twitter are HTTPS slash, slash, twitter.com slash something. Beautifully, Gutenberg accepts raw URL. Another really powerful benefit of it. If you throw it just a raw URL, it probably knows what to do with it. It probably does. If it's Twitter, if it's Facebook feed, if it's Instagram, there's a giant list. It will say, I know what to do with this. I'll make a block because I know what this is. I'll make a block out of it. So that's how I do Twitter. That's how I do YouTube. That's how I make things. Some behavioral test and say, hey, did this thing actually work the way I wanted it to? Then the other test I run is Backstop. Backstop.js is an open source library. It says pixel to pixel is A the same as B. So you can go look at two images and say, hey, is reference and test identical? And this one answer is obviously no. Imagine if you had an extra period on one of these. Just down there in the second to last paragraph. You might see it, you might not. This will. Pixel to pixel is it the same thing? And you might be thinking, yeah, but that's great for plugins and giant pieces of code and did this update break something? That's what's intended for. But we've just entered to a world of configuration dependent content inside of configuration dependent content. And yeah, the other use cases are great. If someone's turned off a plugin in live and pieces your content dependent on that plugin, it's gonna break. Hopefully they turned it off in tests and you can copy your config over from live to test before you test any of this. Make sure updates don't break and again, great. But who here's ever used the nested block feature of Gutenberg yet? Has it worked as expected every single time? Yeah, I got a this and a no. That's my worry. When we drop this come October or whenever it drops, when Gutenberg drops, this is gonna become a problem that I don't hear a lot of people talking about outside of the high end publishing in space. I just came from WordCamp for publishers in Chicago. They're talking about this. If you're Dow Jones or if you're the New York Times or someone with that caliber and that large of a publication with those million and millions of eyes on you, this matters a great deal. That's why they're scared of Gutenberg. Is this gonna break a workflow that they had in place for a long time in a testing framework that they've developed over time? Backstop gives us a very quick way. Oh, let's take questions at the end. Oh, what's the question real quick? Oh. Yes, Gutenberg is replacing TinyMCE. As a 5.0, TinyMCE will be the classic editor plugin, which you can put in at your leisure. But Gutenberg will be the default experience for all new installs and for every update that doesn't have the classic editor installed. This isn't a call to alarm. I think it's a good thing, but it's something we very well need to be aware of in the industry. Who here has clients that they've trained on content editing already? Now's the time to tell them about Gutenberg. Like today, go call them right now. As soon as this talk's done. I'm not joking. The plugin will be in core. The plugin will be the default experience. The plugin won't exist to plugin anymore. It will be core. That's the plan. Will it actually happen on time? It already is behind schedule. I can't tell you any more details than that. In fact, if anybody could tell me an update on the last production schedule of it, I'd love to hear. It's somewhere in the GitHub requests. Anyway, you have this tool, Backstop.js, at your disposal. And you also have this insanely powerful tool inside of your machine right now that can do just about anything you tell it to do. Because there's probably a library or a tool someone wrote that will make it do anything in the known universe. It's called Bash, the Born Again Shell. There was, predecessor was the Born Shell and they thought it'd be funny to call it the Born Again Shell and Bash stuck. And this has been, a piece of technology has been around for 40-ish years. The modern version's been around for over 30. And if you imagine WordPress is 15 years old and we've gone from, who's ever seen a WordPress 0.1 site? Yeah, it's called B2. Very ugly, very minimal, very blocky. And now we're at, about to release Gutenberg and we're in 2018. Imagine if we had twice as much runway and you could iterate extremely fast, like faster than you ever could with a GUI. That's what Bash is. For those of you who don't know Bash scripting, for those of you who are already on board, like, I'm sorry, this is boring, but Bash will let you do anything. Here I'm just pulling things across the internet. I'm curling this repo that I made, or a little text file I made, says hi working at Montreal, or I'm saying hi, but it says working in Montreal. It can do anything you tell it to do in a row. That's the comments at the top that explain what it's doing and when we get into the actual Bash programming itself. But it's a script, it's a robot. Robots are amazing at doing very complicated things over and over and over and over and over and over again without fail, without mistake. And if it messes up, there's logs. If it does something out of order, you just go and reorder it. It can do anything we tell it. It can do it extremely fast. And it can do extremely complicated things that take me a half hour to fully explain what I mean and what I'm doing with it. It can do it in a way that I can actually componentize up and take pieces and chunks and share to the world. And at the heart, I think this is what we want to be as plugin and theme developers and WordPress developers in general. We're built on the GPL after all, a GNU public license. Freedom zero is the freedom to inspect the code. I want everyone here to be able to inspect my code. If you want to, you can. That's how we should all feel about our code. And this lets me do it. Bash is a very easy way. Bash is also, can let me move from my local into something else. Who here has ever heard of CircleCI or Jenkins and be like, what the heck is that? You can be honest. Awesome, it could help people. CircleCI is a computer you don't own that can run a Bash script. That is it. There's cron with fancy knobs in it and there's things you can hook up to GitHub repos. But that's essentially it. It's a computer you don't personally own somewhere out on the internet.  The better you are at Bash, the better you'll be at every other aspect of computer science. So I got to the end and it built this thing and it's how I've been posting now for about two months. Adding pieces as I go, adding the testing pieces that aren't that fully baked yet, be honest with you, but my use case is very simple. My website, mcduane.com, has a use case of one user. Me, in the future. I know that I mostly use this machine or my phone sometimes on good Wi-Fi networks. So I've tuned for that. That really doesn't come into play here, but I know that these goals, knowing my end user in mind, will help me get to a world where I can do things very quickly or I can write in the editor of my choice or I never have to log into WP Admin ever again. I purposely avoid it because it's way faster if you don't by the way. I wanna make things I can extend and reuse and share and make less mistakes in production, but put that a different way. At first, I just logged in and it was wrote to live. Things broke on my production side all the time and unless someone told me just likely stay that way then I thought, wait a minute, there's gotta be a better way and that's why I use CLIs to post all my blog content to my site and now I test along the way because I'm sure I'm gonna make mistakes. I'll ever CLIs. I like CLIs. Yeah, yeah. Glory Gainer, everyone. I'm Duane, I work at Pantheon, I like stuff and I wanna have a conversation with y'all. So with that, thanks. Questions over there first. Why is performance an issue with WP CLIs sometimes compared to doing it in the database or was the second part or directly via bash and direct manipulation is a performance issue? That's a complex question. First question back is always what version of PHP are you on and what version of WP CLI are you using? If you're on the latest and latest, it's fast in my experience. I also have a tendency to lag with it because I always wrap it inside of another CLI. That's the beautiful part about CLIs, you can wrap them in each other.  So I have to wait on that latency which is a couple seconds.  I don't wanna go, I don't wanna know SQL. I, we live in a world of 20 years of post-SQL at this point of no SQL. Cassandra is 14 this year. It's, I don't wanna go step back in time. I realize I'm saying that in the same time I'm saying learn bash. But WP CLI lets me avoid ever having to know how to write to a database. I can never accidentally overwrite my database. If I wanna copy content from stage to live and I have 15 orders come in, how do I do that with the database without disrupting that live content? WP CLI can build it in over time and it doesn't affect anything going on in a live environment. So the performance penalty compared to all of the other stuff I can get myself into by manipulating the database directly is well worth the time to me. Again, my use case, yes. If you're migrating 10,000 pieces of content, this is gonna be really slow and you probably should just overwrite your database at that point. Probably should never overwrite your live database though. There's other ways to do that. But given that the actual use case is me like giving it a few things and waiting four minutes, I have zero problem with the lag time from again my use case. If it's faster to log in and do it through the admin, something's wrong somewhere. If you're waiting on screen, either that or you have the fastest screen paints in the history of the world. And I don't know, everybody's mild differed on everything. So those are just my thoughts. Yeah, you're right. WP Bakery, I do not know. Oh, the page builders. How does Gutenberg affect the page builders of the world? You have to ask the page builders. I don't use them and I don't know. I know that most of them have already announced they've adopted and are compliant with Gutenberg. What that means will vary from Baker to WP or Beaver Builder to the, I actually don't know the rest off the top of my head. I don't use them. You'll have to ask your particular of choice. Over there, I had a question. Ah, yes. Ah, yes. The tuneability of CLI, that's actually an excellent point. It is, the WP CLI itself is an open standard. 2.0 is about to drop. You can go look at the news on this on GitHub right now. Daniel released it three days ago or the news of it three days ago and performance improvements that him and Alain have been working on it will be baked into there. But I completely forgot about that. Thank you very much. You can config, just like you can config it, you can config anything. Excellent point. Other questions. Wow, I got through that way faster than I thought I was going to. Some of the limitations of WP CLI. Some people would say this use case is actually a non-ideal situation to use it in. Manipulating content with it can't get tricky like I showed. You're doing it by hand. Like feeding it a line separate as a title, separate than a body out of the same dock. You can't do that natively.  The beautiful part about it is if I do hit an limitation, extending the WP CLI is actually ridiculously easy. It sounds like, oh my goodness, there's all these things I need to build and put in the right places. But WP CLI itself has a function called scaffold. And there's a function you can put in called scaffold block. And this action will build, I'm sorry, not block, build plugin, scaffold plugin, WP CLI scaffold plugin will build WP CLI commands for you. And all you gotta do is drop in the PHP. So if there are limitations, you can simply make it do what you want. The best talk I've seen about WP CLI in the last two years was from Ben at Corner Shop Creative. He gave it at WordCamp Seattle 2017. And it's how their company built a theme called Crate and WP CLI tool called produce that inserts mustache code throughout their theme so they can modify anything and do completely custom coding in a programmatic way that everyone can get on board with very quickly and they know exactly what gets changed, what doesn't. It's a very standardized way to extend the tool to modify to their workflow. I think that's what I missed in all of this. I get very excited about the component pieces to step back and say, I learned so much doing this about the interconnectivity of systems and how everything actually works together. I know so much more about the WP, about the WordPress database schema right now that I did when I started even though my goal is to never actually touch the database. I know so much more about how plugins are written even though I've not produced a plugin whatsoever. I know more about the enqueuing system. These aren't bad things. Were they practical? I did this in my spare time on nights and weekends just thinking about it. Eating up a lot of my brain in the last few days but being able to do all of those things is cool but it also gave me complete and utter freedom of what I wanted to do. How many people work with editorial workflows where they're tying together like five, six different systems but they're doing it by hand? We copy-paste from this system from Google Docs which is the best thing for collaborative editing ever and to this other system that's actually just the approval system for internal tickets on it. Then we pass it to QA. Then we do these other things. There was a great talk at publishers. Slightly different idea but Jody and Tate, I'm sorry, Shada from Web Dev Studios were talking about this tool they built which is reimagining the WP admin as an editorial tool and that's re-skin it, that's rebuild it and react so you never have to leave WordPress to do all of the pieces. Figure out what the actual workflow is and then mold that workflow into WordPress using the WP editor and modify the thing. I disagree in the fact that I think if we treat WP CLI, if we treat WordPress as the be all end all everything and we try to mold everything into it, that's gonna become a headache and chase in our own tail of just trying to modify anything into the WordPress way. Versus we use WordPress for what it really is which is a CMS, a content management system and we build things into it and we pull things out of it. It would be a much smarter way to think about it long term, especially in a world where the editor itself is just about to cause a lot of controversy and you're gonna have to retrain clients and you're gonna have to have a lot of conversations about why it's good and why it's bad. If we step back from that and say, no, it's just a repository that keeps metadata around that we can pull from APIs at runtime, then yeah, it goes a lot faster and we can start thinking about component parts and then things like Gatsby don't seem like threats, they seem like giant benefits to us that if we don't have to think about the front end anymore or we're free to do anything we want or we can start thinking about the front end in completely new radical ways that don't exist yet. All right, there we go. Oh yeah, oh sure. If you go to my slides, mcduane.com, the very first link is the slides for this and the GitHub repos. So go look at the code. If you see something interesting or like I wanna change that, suggest that we change it. There's the pull request system. Go edit it, click the little button or clone it down, make your changes and then push it back up and tell me that you did it and that's how all software gets made on the internet, man, not all of it, but that's how it's used in GitHub. But I'd be happy to like take issues on it. There's a lot of typos and a lot of strong opinions in it. And if you wanna use it in production, I will not support you. It's in the read me. Oh, what's the learning curve for those things? Whew. That's a really hard question because I don't know what the learning curve is of anything because I've already learned it. And that's a weird statement, but it's true. So I was fortunate enough to learn the basics of BHAT as a side effect of what I do for a living is developer relations. So the general theory was there and I understood Gherkin a little bit because it's so darn easy to read. All my features, which is what you call the individual tests in BHAT are up on my GitHub. You can look at them. Word hat is a wrapper around that that has presets that you can just like this line, this line and this line go together and I just put in my, I changed the variable and that's it. And that's all the test writing I had to do. Like, that's the test up here. Yeah, the only thing I modified in that whole thing manually was Twitter. That was it. The rest was just like, the rest is a description. That took me probably a week. But the thing that actually got me over the line is if you go back and watch the video at the beginning you'll see loop and your Taylor loop count demo 2018. I took someone else's work, said, oh, I just need to modify these parts and I reuse the exact same library. But guess what? That is 90 plus percent of software development. Let's stand on the shoulders of giants. I didn't write Linux. I'm never gonna write Linux. I didn't write Mac, but I use it every day. I didn't write Bash. I can extend it all day. But I stand on the shoulders of giants. Word hat took me a little bit longer. I'll be honest with you. I'm sorry, Backstop took me, I'm sorry, Backstop was the one I borrowed someone else's library. Word has the one that I went and installed fresh and had to read like about four tutorials and have a conversation with someone. And I would highly encourage you. If anybody was like, oh, I don't wanna do that because I would be alone and stuck out there, don't. There's a world of people that are willing to help you with this stuff. The support form for this stuff itself jump into the make.wordpress.org slash, or Slack. Make.wordpress.org slash chat. That is the world of people that make WordPress. And there's somewhere out there in the support forums. There's somewhere out there in the world someone will say, hey, you should go look over here. This person can help you. They might not be your first person you ask, might not have the answer, but I've never been told no, no one knows that. It's like, they might know, they might know. I don't know, but they probably know, or you should go read this.  My use case is pretty simple. Behat took me about two days of thinking about it. Again, at nights and weekends to like get to this point. If I was gonna do anything more serious with it, like I'm trying to figure out how to do a spell checker that also semantically figures out if it's the right word. That's a lot more logic and I'm still not even close to that, but yeah, I'm working on it. What time are we supposed to be out of here? Sorry. 115? Oh, I was gonna say, wow. Well, that puts us a time then, so we can get to our next thing and take a drink of water before the next thing comes up here. So, any other questions? Probably a lot of them. make.wordpress.org. That is the community for WordPress. That is where all of core and marketing and that's the team that I help run and TV and CLI and all of the other parts of the community live. So you can go there and join the community, join the Slack. But there's an awesome Slack that everybody that makes WordPress is in and it's just make.wordpress.org slash chat, slash chat, because we might not chat, CHAT. Make, here I'll just type it. Make. Yeah. Make.wordpress.word slash chat. That, oh no. That's a different thing. That's a different thing altogether. That's a WP shoot. WP shoot is an extension I wrote for WP CLI to explain how WP CLI works that just counts and puts in a loop. So if I stop it, that went through that 862,000 times in the time it took me to go to stop. That's how fast PHP 7 is. But that's not here or there. Anyway, that's it. Thank you.


What's up everyone? Takedown here. Welcome back to another video. Today, once again, I'm going to go over some of my most recent sales, including some tools that I did buy from Crazy Bins that I was able to double my money on. Let's get right into this. So just like some of my most recent videos for my sales, I do focus a lot on video games. And in this video, there is going to be a lot more video game sales that I am going to be talking about. So let's get started. Up first is a PlayStation 1 game called Driver. This game only sold for $5. But honestly, I was just glad to get it gone. It's something that sat here for a while. It was included in a large video game lots. And a lot of the PlayStation 1 games have been sitting for quite some time. I know it's only $5, but that is still a great sale in my opinion. And it is getting profits and inventory moving some way. Next is another PlayStation 2 game called Cars. This game again only sold for $5, but I was glad just to see it moving. Next is a Nintendo 3DS game, Minecraft. This was the cartridge only. And I did talk about picking this up in a Nintendo 3DS lots that I recently did sell. And this one here sold for $15. And it was cartridge only. Honestly, I didn't think I was able to sell it or I was going to be able to sell it. I was going to include it with the Nintendo 3DS, but I ended up checking it out. And it was consistently selling between $15 to $20 on eBay. So I ended up selling it on eBay for $15. And I thought that ultimately was a great deal. Next is the actual Nintendo 3DS that I did pick up with that game. And that was the Legends of Zelda console. And that one I did sell on eBay for $365, which was an amazing deal. I think I only paid, I'm trying to remember. I think it was $190 or possibly $200, but still that is $165 profits, not including the games that I did sell individually. I did sell the one I just mentioned for $15. I did sell another game for, I think, $20. And I did sell one for $40, which was cartridge only. And that was the Kirby game. So I did make a lot of profits on this, and I at least doubled my money, which is amazing. And that's always a goal for me whenever I buy these video game lots or comic book lots is to at least double my money, if not triple, or make as much money as much profit as I can. That's what I do it for. Even if I can't double my money, but it is still decent profits, I will always buy something and at least check it out and see if it's worth it. If it is, I will try to buy it. But this here, the 3DS lots was definitely worth it. And the 3DS console itself sold for $365 on eBay, which I thought was a great deal. Next up is the Xbox 360 console, the e-console that I bought a while back, and I did share that with you guys. This one here, I did sell for $125, which I thought was a great deal. Now, I did sell one maybe six months ago for $130. So I was expecting that, but still $125 was still a great deal for this console. And that was an amazing profit for that as well. With that lots, I also was able to sell on eBay an Xbox 360 game that I did buy with that lots. And that was for WWE 2K16, which honestly, WWE and sports games in general, I don't expect to get a lot of money out of. But this game here, I believe it had stone cold on the cover, which means I remember it's in my collection for my personal collection because I do love wrestling. If I remember correctly, that game, the story part of it was Stone Cold's career, which he's Hall of Famer, people love him. So maybe that's why I was able to sell it for a little bit more. And that's why it's trending for a little bit more. But this game did sell for $13, which I thought was a great deal. I didn't expect to get a sports game, let alone a WWE game that is a couple of years old to be able to sell for that much, but it did. And to me, that was great. Next up was the rest of the Xbox 360 games that I did have from the lots. They were included with the Xbox that I did talk about just a moment ago that I did recently sell. And it was a total of 58 games. Now, 48 of those games I was selling for $5 each. The other 10 I was selling for $10 each roughly. And I did have them listed individually on eBay as well. Somebody came and sent me an offer. And I know they were going to resell it because they did tell me. But ultimately, I thought it was a great deal. Not only did they take the 58 Xbox 360 games, they also took 12 PS2 games, all of the PlayStation 2 games that I had left remaining as well, along with one PlayStation 1 game. And it was a Final Fantasy game. Now, that game, if it was in pristine condition, I would have probably been able to sell it for $30. However, the label was a little water damaged and the case was a little cracked. So I decided to include it in this lot since he was interested in it. And he did offer me $200 for this entire lots. And that $200 was all profit. Even with the Xbox 360 lots, I already made my money back, selling a couple of the games individually and also the console.  And that was amazing. $200 profits was definitely something nice to see. And I do know he's going to resell it because once I met with him, he did tell me. He said he's going to try to sell them for $5 to $10 each. In my minds, some of those games, best of luck to him because I've had them listed for a while. I've had the occasional person to message me for just one game or two games. But for me to go and bring it to them for only one game, wasn't worth the time. That's why I decided to take this offer. Next up is the items that I did buy recently from Crazy Bins. And I did share that in a video with you guys, sharing the items that I did pick up from Crazy Bins and my opinions on Crazy Bins. Now, since that video, I have yet to go back just because I've been a little bit more busier with the business and work. But I do plan on going back to Crazy Bins pretty soon because to the items that I did sell, I was able to double my money on. So the first item is a socket set. It was brand new. All of these sockets, once you open up the case, were brand new, sealed in the bags, never used. And they're fairly large. And I know since working in an automotive shop, if you go to Snap-on or whenever Snap-on comes to these shops, usually they charge $20 per socket. So I know I was going to be able to sell the whole set for at least double what I paid for. I only paid $25 for it. I was able to sell it for $50. And to me, that was a great deal not only for me, but the person that bought from me. Because like I said, those sockets, if you get them from Snap-on Truck, that would be about $20 per socket. And there were seven sockets in this set. So I doubled my money and they got a really, really great deal from me as well. And the last item, which was from Crazy Bins as well, I also paid $25 for. And that was the Nut Driver set that was sealed brand new, never even opened. And that there, I know I did see listings on eBay for $100. I haven't had anybody message me. I've had it listed on eBay for quite some time. So I decided to lower my price locally and try to get it at least to be around $50. So I can at least double my money. I paid $25 for it. I wanted to at least sell it for $50. So I can say once again, I doubled my money off of something that I picked up from Crazy Bins. And yes, I was finally able to do that. I met with the guy a couple days back and he did pay me the $50 for it. And I thought that was a great deal. Again, not only for me because I get to double my money, but this is something that retails for usually $100. And he only got to pay $50. So he got a great deal on it. And I did get to double my money. So I do plan on going back to Crazy Bins hopefully very soon. I don't know when I'm going to be able to actually go and plan to go just because work's been crazy. A lot of the stuff of the business have been crazy. Today is the restock day, which everything is $25. I was planning on going first thing this morning. Somebody messaged me for comics. And then whenever I went and was getting everything ready, they never messaged me back, which did suck because I could have been at Crazy Bins first thing then whenever they opened and found some great stuff. But at the time, that's this guy, I realized he was not even going to message back. Crazy Bins has already been open for an hour. And I knew I missed out on a lot of the greats bigger items. And I knew it wasn't worth going today, but I do plan on going back very soon. And anything I do pick up from Crazy Bins, I will share with you guys because yes, there's definitely profit to be made from Crazy Bins. But I hope you guys enjoyed this video, me going over all of my recent sales, including the 3DS, the Xbox 360 console as well as the tools that I bought from Crazy Bins. I'll see you guys in the next video. Please take care. Peace.


just wanted to share some software that I've been working on here for guardhouses for gated communities and such to make it quick and easy for the guard at the gate to see who's allowed through the gate and log who comes and goes and if you've seen pure software I did use my cookbook application that I wrote for my wife as a base for this although this is a bit more complicated there's a bit more forms in here but let's go ahead and have a quick look at this so I filled in some fake information here right now you can currently see that there are six residents in the database I just made up fake information but let's go ahead and create a new resident so I'm gonna go new resident and we'll say Thomas Pickle we'll say is his name and he lives at eight six eight river turn drive or drive there we go and we'll say his phone number is<PHONE_NUMBER> and if you had a second phone we could put that there other residents would be let's say his wife or girlfriend or maybe some teenagers living at the house or if he has a roommate let's go ahead and put somebody in there we'll say that Thomas Pickle has a girlfriend and her name is Jennifer Smith sure all right have a couple Smiths in the database but we'll do that actually let's do something else let's do I'll make up a name Jennifer face there we go now guest sometimes at these gay neighborhoods you have regular visitors so you can put guests that are allowed in that guard doesn't have to call and say hey so-and-so's here if this person shows up go ahead and let them through and we'll just say Frank Bonnie sure and then comments can be any comments like don't call after 10 p.m. that way if anyone comes by 10 p.m. the guard's not supposed to call the house so go ahead and we'll click submit and that's safe we can still make some changes here if we want let's click on home and go back to our database our our main list here you can see currently there are seven residents in the database let's go ahead and look for our Thomas Pickle obviously right here you can see him already but let's pretend there's a thousand people on this list I can type in pickle and they're right away the guard goes oh Thomas Pickle let's say Frank Bonnie shows up he goes oh you're allowed in I can go ahead I don't have to call I'll just let you right in so I'll click on that and right away it brings up here if you needed to call you know Thomas Pickle there's the phone numbers up at the top there and if you have a hidden device card reader you can swipe their driver's license in this field and will automatically fill in their first name last name and address but let me go ahead and type in Frank Bonnie here and we'll say his address is 123 12th Avenue blah blah blah I'll get his license plate number off his car and any comments that I want to put in there I'll click submit and he goes in again if you swipe the the driver's license the only thing you really have to put in there is the tag number so he's in and after a few seconds goes back to the list view here because the next car will be driving up and I can start searching for them and again I can search as we did for Pickle but if they come here and say hey I'm here to see Jennifer base she shows up as well because she's an other resident in that house but if I do Frank you can see that Frank Bonnie doesn't show up because doesn't search visitors just residents at this screen okay now let's say a resident shows up and says hey I just was wondering who do you have logged that visit me recently let's say it's Thomas Pickle I can click here on history and it brings me to this menu of history I did a slightly different color just to so you don't get confused on what screen you're at and let's type in Pickle and you can say oh let's see Bonnie Frank visited at you know this date and time his address is this his tag is this and he visited Thomas Pickle which is what we just searched based on I can also say you know if they Thomas Pickle drives up and says hey has um Bonnie Frank Frank Bonnie come through you can type in Bonnie and also searches that so it searches both the visitor and the resident in the history view here okay so now let's go back to the home screen let's say we'll just use Tom Pickle Thomas Pickle I just realized I named him Thomas Pickle isn't that funny like Tommy Pickles anyway um type in Pickle here that was completely subconscious that I did that let's say Thomas Pickle calls because he bothers the guard at the gate a lot so now he's calling and he's saying hey I'm expecting um or I want to change my phone number I want to add a phone number so if I'm not available you can call this other phone number and get my girl friend Jennifer base so you go okay click here and then you can click anywhere up in this gray box and it brings you to that user to that resident and you can modify any of the information so now we can come in here and we can say okay if the first phone number is busy call the second phone number which is<PHONE_NUMBER> submit and then if I go back home and I type in Pickle you can click here and see the second phone number shows up so it's very simple to change the information that way now let's say uh we'll use a different resident uh a resident at this case I'll say um now we get a phone call from Terry Klein you type in Klein Terry Klein says hey I'm expecting uh the cable guy to come sometime between 10 a.m. and 10 p.m. today because that's how cable guys roll you can click on Terry Klein here click on here and go down to comments which you can put anything in here and they show up on the main search so you can say cable guy between 10 a.m. and 10 p.m. um whatever day they want we'll say 2015 that's today I'll click submit it tells you that it has been entered I can go back home now and now cable guy shows up later on maybe there's a different guy on the gate or you just forgot we type in Klein whoops and he shows right here expecting cable guy between 10 and 10 p.m. you can write other notes you know um don't call just let them do or let me know when they're here or whatever but here you know that he is expecting the cable guy so you can come in here you can check in the cable guy when you're done you can come in here clear out the comment click submit and it's cleared out so now we go back here we can type in Klein and you can see that comment is now removed so this is an application I wrote and pretty straightforward and simple to use again works great on tablets and phones and all you need to do is you know set up a server to run it on which is very simple and easy to do and I just thought I'd show the overview of this also if we click up the top here where it says project page it will bring you to the source code if you want to get this it is up on my github page uh username metal x1000 it's called the open gate and it is under an agpl license so I thank you for watching this video maybe you'll find the software useful maybe you'll want to add to it and uh I just hope that you have a great day


Ladies and gentlemen, boys and girls, it's about to go down. That is exactly what's happening. And I've been talking about January, being the largest January that we've ever seen, right? And I'm gonna get into some data and show you exactly why I've been talking about that for the last two months, okay? But what I didn't factor in, okay?  I think we learned that this year when all the mortgage gurus said that we're gonna end the year around five and a half percent, it was gonna hit somewhere in the fives, you know, somewhere in the fall. Yeah, that's what all the mortgage gurus were talking about. So I think we've learned that we can't predict rates as well as we can home prices. But nevertheless, we are where we are. And I took mortgage rates out of the equation. And I said, January is gonna be the biggest January because of what I'm gonna share with you in this video. I wanna break down the actual data here. But starting yesterday, we have this massive rate decline from after the Feds meeting and the senior treasury comes down. And then we have this huge relief in the 30-year fixed mortgage. It dropped 26 basis points yesterday and 20 more basis points today. We haven't seen a drop like that in Lord knows when, right? And right here, we talk about mortgage rates drop under 7% for the first time since August. They're actually down a lot lower than 7%. But again, what I did not figure in to my theory here on January being the biggest January we've ever seen, I did not figure in rates being this low. I figured them staying around seven. So now that we're down here, you know, they can bounce back to seven. They can go lower. We don't know what they're gonna do. But this is massive because when you figure in what I had figured in to having the biggest January we've ever seen in the housing market and then you sprinkle on top of that lower rates. Oh my gosh. This is literally the perfect storm. You know what the perfect storm is? Like a triangle, okay? And it's three things coming together at the same time.  Meeting together and creating this massive storm, okay? Meeting it together at the same time. That's what we have here, ladies and gentlemen. There's three data points. There was two. There was two data points. And we didn't even need the third for it to be the biggest January we've ever seen. But now we actually have a third that makes it the perfect storm. And the third is rates. What are we down to today, Johnny? We are down to 6.62. Can you believe it? Not more than 30, 40 days ago, we were over 8%. Touched eight, went up a little over eight. And now we're down to 6.62, man. That is some relief. So we'll see where it goes here over the next week or two, going into the new year. We'll see. But I think the market is speaking here. And we're gonna see rates, you know, maybe they jump down too fast. Maybe they'll level out a little higher. Maybe they'll remain under seven, okay? But then throughout the rest of 2024, is the Fed talked about that they're gonna have these rate cuts next year. So that's gonna do nothing but put downward pressure on mortgage rates and make the real estate market go crazy. Now, before I get into the data, there's a couple of things here. When rates come down, I've been talking about this for a while, when rates come down, we're gonna see the trade up seller list, but then they're gonna buy. So that creates a net even for active inventory. Then we're gonna see the first time home buyer come in. They're gonna come in by drone.  And they're gonna take a lot of inventory off the market, which is gonna be a net negative for active listings. So what we're gonna see is a lot of transactions because the trade up seller is gonna create a net even, but two transactions. The first time home buyer is gonna create one transaction, one net negative for active listing. So we're gonna see transactions. So we're gonna have three transactions, right? For every one minus one active listing, okay? So we're gonna see this jump in transactions. It's gonna start January 1st. We're gonna see people coming out, looking at homes all over the place. Open houses are gonna have lines around the door. And we're gonna see them go under contract within the first week or two of January and close in the first week or two of early February. And we see that trend every year. I'll show you the data. But what we're gonna see is this happen and it's gonna happen in drones. And we're gonna see transactions rise. We're gonna see active listings drop, go from bad to worse, and it's gonna put upward pressure. I hate to say it, upward pressure on prices. So what's gonna happen, ladies and gentlemen. So here we are at 6.62. And let's just take a look at this with the first time home buyer demand. 50 year birth rates. We see here in 1990, this is 1990 right here. We see this massive spike up in 1990. That's 33 years ago, soon to be 34 years ago.  We've got more of them right now than we know, than we realize because they've been suppressed by the mortgage rates. Well, guess what? Rates are coming down. What are they gonna do? They're gonna come out. They're gonna come out and buy stuff because remember, they can get lower than the average rate. This is 6.62. That's the average rate in the country. You can get lower depending on different products, different mortgage brokers, builders, buy downs. All that stuff is still happening. So it's just, it's gonna be tremendous. And after the first of the year, everybody's gonna say, this is the year we're gonna go buy. If we're gonna buy, better buy now because rates are coming down now. See, everybody's been sitting on the sideline waiting on rates to come down or prices to come down. Well, now rates are coming down. And a lot of these people, wait, wait, wait. And then they wait. And then before you know it, it's too late. People have already jumped. That's why I've been trying to tell people to buy in the fall, in the winter, before January, by now when there's no competition. Why? Because competition raises prices, ladies and gentlemen. It's just simple data.  But we've got more first-time home buyers than we've had in 20 years, in 20 years. Okay, first-time home buyers. Everybody knows that we have more trade-up sellers than we've ever had, than we've ever had, ladies and gentlemen. We've had more, we have more trade-up sellers. How many think about it? People, do you know whether you're an agent or not? How many people do you know that want to move but they can't because they're locked into the rate? Yeah, that's pent-up demand. They want to but they can't. When people want to do something but they can't and that group of people continues to grow, they want to but they can't. That's called pent-up demand. Demand that can't happen yet. It's pent-up. It's pent-up for some kind of reason. And when it releases, the longer that it's pent-up, the bigger it gets and when it releases, the bigger the surge is and that's a reason why I said that January's going to be the biggest January we've ever had in terms of pending deals in February for closed deals. Look at this data. I'll make this graph bigger for you. You can see the pending deals. Pending deals just spike up. They spike up. First week of January, right here every year. Look at this. This is just data. Even in the year where interest rates were higher, we still saw the same trend. We're not going to see a different trend this year. We're going to see the same trend but it's going to be much sharper because of all the pent-up demand. Guys, you realize we just had the lowest amount of pending deals a few months ago than we've ever had since they started recording pending deals back in 2001. The lowest, right? That's music to my ears because it tells me that there's so many suppressed buyers. There's so much demand brewing underneath. When I hear transactions are retracting, I'm like, oh, you better watch out. And that's why I've been telling you real estate agents right now for the last month, for the last two months, stack your inventory. It's sitting on the market. Why are we going to list stuff? Because in January, everything's going to sell. Everything's going, it's going, right? Step up right here. Who wants a house? Who wants a house? Everything is going to sell. Stack your inventory now while you got time. Well, it's not that busy. And some of you are busy right now. I say that, and then you guys are going to comment below and say, I ain't got time to do nothing. I'm putting this under contract. I'm showing properties, especially with rates coming down over the last two days. I bet your phone's been ringing. This is your moment, ladies and gentlemen. The worst of the real estate market has passed us. We made it. If you're still in the business, you made it. Congratulations. Now, step up to the plate in 2024. And for all the hard work and hardship that you went through over the last year and a half, let's make it count. Let's put all that knowledge to use. Let's, you know, get our business to a place where we've learned these lessons and gotten used to this slower market where now we understand how to scale, realizing the market's going to rebound. It always 110% of the time resurges, right? And it's going to research very, I've been saying this very violently. Next year could be the year that we actually see 5 million transactions. A lot of people, a lot of the big forecasters are calling for 4.3 million, 4.4 million. They don't know. They don't know. It could be that. It could be more. They don't know. This is the pending deals. It happens first, second week of January every year. Then we see solds, right? It goes down the same way. And then those pending deals start closing, you know, around the early February, but a bang, but a boom. We off to the races again. This January and February is going to be no different, ladies and gentlemen. This is the moment that you have been not, you shouldn't have been waiting for nothing.  I'm going to put a link in the description, right? We've got weekly calls. We're doing a listing challenge every single month. I've given prizes. We're going on vacations. We're doing events, right? We're creating a community. I'm going to put a link in the description.  Until then, I'll see you guys on the next video. Let's go.


You're at a networking event and the often dreaded inevitable question always pops up. So tell me what do you do? Four words complete dread. What do I do? How do I explain it without being boring to this person? Will they understand what it is that I do if I explain it to them in under a minute? The ask for your elevator pitch can evoke sweat fear and tears But if you spend time crafting your pitch in advance and Practicing it you may get what you hope for and that is an invitation to follow up Today I'm sharing the essential elements for a sales professional's elevator pitch stick around It's Leanne and it's a question that can create anxiety in any of us So tell me what is it that you do? It's an invitation to deliver our elevator pitch But if we haven't practiced it in advance it can come out as mumble jumble At least it does for me and it can not only be embarrassing But if I don't interest my new friend then it won't warrant a follow-up and that my friend is the true wasted opportunity So today I'm providing you some quick tips on how you can craft your elevator pitch But before we dive in don't forget to subscribe to my YouTube channel and click on that little bell to be notified of new content I'm delivering personal branding tips each week, and I don't want you to miss a thing and Stick around to the end of the video if you're struggling with what to write and what to say in your elevator pitch This bonus strategy might just give you the fuel you need to create something spectacular So let's take a look at your elevator pitch Tip number one decide on the goals of your pitch For most of us sales professionals that goal is likely to introduce our client to our product or service But we need to do so in a way that'll get us to the further tips in this list And that is to create interest and earn the right to follow up Tip number two be clear and easy to understand Your new friend should walk away with a good understanding of what it is that you do In fact, they should be saying to themselves. Oh, yeah, I get it and they make a connection with your product or service Tip number three your pitch should be of a reasonable length Most people suggest between 20 to 40 seconds for your pitch or the equivalent of a ride in an elevator So visualize getting on the elevator at the ground floor a stranger jumps into the elevator with you And you have the opportunity to share what it is you do and how you impact your community Tip number four ensure all of your keywords are included now What exactly is a keyword? Well, it's the word that your potential audience or client would pick up on that would elicit an emotional response and Create interest so ensure your pitch includes those words and they will pick up on them and ask you further questions Tip number five don't do the selling during the pitch the pitch is kind of the Invitation where relationships begin and you're almost planting a seed to find common points of interest So that you're both encouraged to learn more about another in future conversations This isn't the time for the hard sell we need to leave that a little bit later in the relationship Tip number six create interest the words that you choose and the energy you're portraying when delivering your pitch Should leave your new friend wanting to learn more about you Find the right words Project energy and passion for what it is you do and you've created a connection with your new friend Tip number seven and this is my favorite one is earn the privilege of a follow-up The elevator pitch should leave them wanting more and should earn you the privilege to ask for contact information so that you can follow up with them and further the dialogue and Tip number eight practice makes perfect once you've checked all the boxes on the seven tips that I've outlined Now it's time to practice practice with a colleague practice in front of your mirror But make sure that you can deliver your elevator pitch smoothly with energy and seamlessly Remember the goal is to create interest through your words and through your energy So as you're practicing make sure that it comes across as very natural and not a rehearsed pitch and Here's the bonus tip if your position is difficult to articulate Consider asking them a question to give some context about what it is that you do. So here's an example for you In my role as a site selection specialist for conference direct It's such a niche role in my industry and it's somewhat hard to describe in only 30 seconds So instead I sometimes lead with this question I ask my friend. Have you ever attended a conference before? Chances are my friend has so now I can say well that conference was organized by a professional and I help those Professionals find venues that will meet your needs as a conference attendee and the goals of you and your organization at the event So I've given them a little bit of context on what it is I do by leading with some common ground see if that strategy will work for you Is it time to brush up on your elevator pitch? If so, I'd love to hear what tip most resonated for you as you start to craft a new pitch for this year For more personal branding tips and tricks check out my personal branding playlist here Or hop on over to Leanne Calderwood.com and check out my five dimensions of personal branding framework This is an outline of the things that you can consider when growing your own personal brand I Look forward to hearing more about your branding journey And if we ever meet to hearing your elevator pitch as well. Have a great week everyone. Bye for now


OK, today is February 1st, 2021. This is the DevSync. We are mid-sprint on 19, focused on third-party skill development at the environment for doing that and delivering three DevKits to our rollover partner. So let's check in and see how we're doing. Chris Bear's got his work up there, so let's check in with Chris and his dogs. And my dogs. So yeah, I got working on the first part of the Pantakor API, which is passing the new config value that Chris added to the config using passing that to Selene at paring time and storing that and then later using that to get the device ID and activation time. So that's what these three tickets are all about. They're separated out into smaller tickets, but they're all kind of related. So yeah, I've been working on that. The coding is ready. I'm running some tests now. And once I'm done testing, I'll move on to the next endpoint. That's what I've been doing today. All right. Sounds like what we expected. And Derek. Hey, y'all. See, today I was mostly working on the SJ240 feedback that Josh has been giving me. And my goal, actually, I have one board. G5 board here that is not being used. So my goal is, as I'm printing this one out, is maybe to get this one to Chris or somebody when I'm done with it. Mine is totally functional. This one will be as well. But there's just slight iterations, mostly around printing to avoid printing issues and failures. So not so much functionality wise. So anyway, hopefully I have another fully buttoned up SJ240 design. Actually, we should start using the new terms that Michael put together, I think, because it's like NYC DK3 or something. Or the SDK2. The SJ240 is still the valid part number. That's just the part number for the. Right. Well, that's just the housing, though. This would be a full list. OK, so anyway, I'll have one of those here and there, too, to distribute to somebody. And then I'll be out of, I won't have any more SJ240 ones. So let's see. Going to have a review with Gaz tomorrow on the postcard and disclaimer sheet. And we can be done with that, hopefully. Although I expect a little bit of revision. And yeah, that's about what I've been up to. OK. Oh, actually, there's something I do want to mention. I was trying to do a video for Gaz with one of the dev kits assembled. And I had to flash a Pi 4. And it was giving me this interesting behavior where I would test it with the Pi OS, Raspberry Pi OS, and it would boot from USB. But I could not get it to boot with our image, our Panticore image from USB. And I swapped it in and out with the one that was known working. And the known working one worked fine. The known working Pi 4 worked fine with both images. So I'm not sure what happened that it would accept the Raspberry Pi OS via USB, but not our build via USB. And Gaz has mentioned some other radio syncrises around USB boot that we might want to keep our eyes on. The firmware that you flashed the eProm up to, they're releasing at a pretty rapid clip. So they're releasing once every two or three months. The Raspberry Pi Foundation is pushing new eProm firmware. You may have two different versions of the upgraded firmware between the two PIs. So one of them that you flashed a while back might be like a November version. And the one you flashed just now might be like December, January. Is that possible? Yeah, that's certainly possible, because I grabbed a fresh version of the eProm tool recently. And I ran into an issue with one of these PIs that it flat would not bring the Wi-Fi up, but I marked the Pi bad because it's the only time I've seen it. But yeah, we might want to validate that when we are upgrading the eProm, that we're not just grabbing the top of the heap and loading whatever's the latest and greatest that we have an actual, like this is the supported version of the eProm. Yeah, right. OK, well, we need to sort that out then. It seems like there could be an issue with the latest. OK. And can you take it for that? On the one that doesn't work, can you load Raspbian? And then I don't remember the command. You should be able to find it with Google really, really quick. It's a quick command that'll dump the eProm version to the CLI and just send me the version. Yeah, yeah, I can do that. Yeah, we don't. Let's not dig into it. I'll talk to you about it after, Derek. Josh. I'm building Mark IIs as quickly as I can possibly build them with the parts I have available. And then providing feedback to Derek on the places where we can improve things from both an assembly and a printing perspective. As soon as these last, there's like 15 audio chambers to go. I'll start printing these enclosures in bulk. So it looks like we can crank out at least two a day here. But with all six printers running, we might be able to get three or as many as four per day of the full SJ240 kits. And then we'll be bidding out or going out to get bids to see if we can find a print farm that's willing to do them at a reasonable price as well. And then finally, we'll probably be helping Derek to interface with Steve Michon so we can actually get the injection molded parts rolling. Oh, and then the other thing that we're working on is getting in touch with the vendors for components and starting to line up mass production type numbers with a goal of pushing 2,000 units in month one, which is targeted either June or July, and then scaling up at 10% per month from there. Hopefully, to meet demand, we're still in a situation where we sold more than we can build. I'm looking forward to having the opposite problem. Well, that doesn't sound like any fun, but OK. Excuse me. All right. Who's next? Kevin. Well, Kevin's not here. Let's see what I can say about what Kevin's working on. Did you ask him about 207? Oh, yeah. I thought I closed that one. I'll close it now. And the other ones are all in progress. 257, 259, he's started to work on those. Test jig is, it's all basically going to be part of the test jig system. Ken, I have a quick question about MakerFab. If we send them, so we're sourcing the, Hey, Chris, come talk real quick. So we're sourcing the speakers in China, yeah? No. The speaker drivers are coming from either PartsExpress or Madison. But they're coming from China originally. They're coming from China. Derek would be able to answer that one a little bit better. Derek, is your original? Yeah, in Shenzhen. OK, so we're getting all the stuff from China to bring it into the States for assembly at the moment. Do we want to start looking at seeing if we can get MakerFab to work with the local plastics place and actually turn out either them or an integrator somewhere in Shenzhen, get them to start turning out complete speakers and boxes? Yeah, we can talk to them about that. OK. Yeah, they do offer that service. We also, have we mentioned that to Seed Studio too? We talked to their head of ops in the US. And Seed Studio package, we can give it to both of them and whoever else and just say, yeah, let's look at this. OK, we had run into some issues, Derek, about supply, which is why we have two different suppliers for speaker drivers. And PartsExpress was going to get us a development unit for their version of the Tempani driver. Have they shipped that yet? Have you received it? Yes, I have, but I've not had a chance to test it. You haven't had a chance to ring it. OK, and it's not a direct replacement. The dimensions and the holes and stuff are different. OK, that's not good. Because the second issue is just that there's a challenge getting those company drivers. Like, they're just not, the supply is not. Yeah. I don't think we can get 2,000. The supply issue, I think, won't resolve itself, but it'll become much easier to resolve when we have a predictable order and predictable quantities and just say, hey, this is how many we need here, here, here, here, here. Yeah, there's a possibility. Well, OK, this is not the right time for this. Yeah, it's definitely an issue that we're aware of. And in fact, it's on my list of things to do here. Um, all right, who's next? Yes. I think that's me. Yeah, so I, class, the user story is done. There's not too many of them, but, you know, it feels like they cover everything. I had a look at Lingua Franca yesterday. That's all, did one more little fix. But it's all working. The thing is, it was an unintentional incompatibility with Python 3.5. So I think the easiest thing is just going to be to release it with 2102 and jump straight to Lingua Franca 0.4, which just adds more languages and stuff. Um, the, I haven't done any more on the, on the documentation yet, but we've been, we've had a few of the kids get out to key developers and been helping them get their setup. So that's a good way of testing any assumptions that I have of knowing the system. And, yeah, just started compiling the new port audio with some changes that can sent through. So we'll see how that improves the listener experience. And I've also been getting back to some other community hours to try and push those through the pipeline until people have seen the chatter and dev with some frustrations about how long it takes us to review things, which is very valid. And then, you know, we do need to stay focused on the mark, too. We also need to make sure that we're respecting the time that they will put into contributing to Microsoft. Yeah, spending some time on that as well. Yeah, that's very important. And hopefully a lot of those people will have mark twos on their desks very shortly. And so this will kind of all come together. Guys, did you see my diatribe I posted earlier today? Uh-oh. I haven't, I haven't, I haven't checked this morning yet. It was, it was calm. But really, one thing I'm concerned about is adding a bunch of new functionality to a complex system that is not fully tested yet. You know, we're trying to get this mark two out. And, you know, if we add a bunch of new stuff that destabilizes, you know, and this is going to be in people's hands, I was a little concerned about that and moist that. The good, the good thing came out of that, though, is I got a community member, pink to me, directly after they read my diatribe and asked me how they could help with some of the testing and some of the VK stuff, some directions. And also, there was somebody who responded directly in the dev channel about asking how they can help with VK. So. Yeah, both of them. Good response. I was just curious, you know, what people thought about, you know, how much new functionality we've been pushing in the core right now with all the mark two stuff we got going on and trying to get that stabilized. You know, generate new stuff that we have to worry about. Anyway. Well, at the moment, you know, the market is building off that feature branch, so it's not getting any of the updates that are going into mainline core, which is, yeah, we do need to address at some point. I thought you were downmerging occasionally. I went to do that yesterday and there's a whole bunch of conflicts. Need to dress. The next one is going to be a little bit painful. But, yeah, we do need to do that. I should make a ticket to that, actually. So, yeah, like, we do need to get the testing up, because, you know, it's still like, you know, when you, it was a wake-up call when you did that cover all, the new coverage thing the other day and, you know, it showed 50% coverage, which I know it's just a number. You can't use that to determine, you know, the quality of the testing, but it's not a high number. Do we have any standards for PRs and with respect to, you know, their incremental, you know, changes to the coverage? Like, so for example, can people submit a PR with no tests and therefore just decrease the coverage? We get a lot of PRs to do tests. I strongly encourage people to add tests. It's harder than that. Like, it depends what sort of changes about how easy it is to test that part of the system as well. I mean, I've toyed with the idea of, like, mandatings that, you know, if we don't have a test for it, we can't measure it. That's where I was going. I think it's a great idea, especially, you know, the closer we get to putting this in the hands of more people than just, you know, our community developers and, you know, we start generating a bunch of mark twos and people start, you know, when we have a PR that breaks because no tests were added, that's going to be bad. Yeah, I mean, in my experience, it's just been, if you don't test it, it just doesn't work, no matter how simple the feature is. You forgot something and it will break. And a lot of that will be exposed to a proper unit test. But a lot of it won't and will be only exposed in, you know, a system test like the VK tests. So. And even if it works right now, it may not work when someone else touches the code, you know, in a week time. And, yeah, you can blame someone else for it, but like, there was nothing to tell them that what they did was breaking your thing. So.  Every time we make code change and test it's really the number one way. Yeah. I mean, yeah, so where we are right now is really just the bare minimum of what we can get away with, right? Yeah.  But we didn't really focus on like trying to get a particular code coverage or anything like that, right? And we know that we actually, we've only implemented one out of the three phases of the VK system. So we know there's lots of core that just aren't being tested in the VK system, right? Because we don't cover the speech to text and text to speech and, you know, those things. Yeah. So yeah, I mean, we really need, you know, the community to help us out with that. You know, it's great to get new features, but, you know, we've got our hands full with getting stuff working as it is. You know, asking us to write more tests is really not something we're excited about right now. So. Yeah, and that was one of my points was, you know, if, you know, we really want to make sure, I think we fell into this trap early in the company's history was, you know, had new features, had new features, had new features, but, you know, what you've got doesn't work. You probably shouldn't be adding to it. Right. Yeah. And if the voice assistant can't wake up, respond to a query and update itself reliably, then, you know. Features are kind of working, right? Yeah, exactly. All right, so enough on that. All right.  You've been doing a great job with that. But I would fully support if you wanted to start, you know, putting in some requirements on, you know, submitting tests with PRs and that sort of thing. I mean, we will get there eventually. I mean, I don't want it to be a shock to the community, but, you know, eventually that's where we have to go. Well, no, I mean, I'm surprised that's not already a requirement. Like, yeah, if somebody, like, for example, I talked to the folks out at Neon on a regular basis, they said last week that they have some PRs in that are significant. But yeah, if it doesn't come with comprehensive test cover, you know, first we need to dock our test procedure and make it available. If we've done that, any PR that shows up without proper text coverage gets bounced for test coverage. And if they want the PR included in the stack, you know, they need to provide test coverage. Our guys aren't getting paid to provide test coverage for features that we didn't develop. And as Veer said, you know, we, yeah, we, if we can't get the basic stuff working because we're having trouble with failures and so on and so forth, lumping in a bunch of additional features isn't going to be helpful. I know that we had been down this path a couple of years back, but it sounds like it has, it fell by the wayside either immediately or sometime in the interim. All right. Who's next? You. Me. Oh, okay. Right. So let's see. I'm going to be working with Kevin this week on getting the final firmware buttoned up and start working on all those issues with respect to lead times on devices that kind of came up earlier in the call. I've been basically, I've been working on investment business type stuff this week. So not a lot of work on the fun parts today. So, but we do have, I did, we were talking with the FAB for the SJ201s over the weekend, and we got them to confirm or commit to a plan to get everything shipped before the Chinese New Year, and actually get them out of the country before the Chinese New Year really starts to take hold, because if they ship them on the last day and then the shipping company shuts down, that's no good. So I am expecting that we will have our, a shipment of a couple hundred boards in here, probably on Monday is my, well, maybe Tuesday, we'll see. And then we'll go through and do all the QA process and flashing firmware and all that kind of stuff here before we send them on to Joe. So that's exciting. And yeah, that's about it. So that's everyone. Great. Ken's not here today. He's taking a personal day. He'll be back tomorrow. And we'll get his update then. Anything else that people want to bring up outside of the sprint? Nope. Nope. All right. Well, it looks like we're making good progress. The focus, again, this week is on getting the developer environment up and running. So we want to make sure that when people get their dev kits, they can actually log in and start building skills and deploying them to their own units and all that. I was taking a look at the schedule and thinking about just using the Mark II that's here on my desk. And I had previously slated the wake word machine learning loop as our next priority. But I really think that we should take a step back. Again, in the vein of not adding more features before we fix the ones we have, I think we should go for a bug fix sprint next. And just not necessarily UX focused, but sort of like even the level below, like a level zero user experience. Just like there's a lot of just really basic stuff that is crashing or not working. And doesn't even necessarily relate to the GUI, which obviously has a lot of problems with it right now. But just the core, the way core is responding to things. I think there's an odd interaction between the echo cancellation and actually disabling the microphone that makes it look like the microphone is not actually disabled, but it is. It's physically disconnected, but it still triggers the system occasionally because of the echo cancellation being applied to no input. So things like that, stuff that will really be get in the way of developing at a basic level. So I don't know what you all think of that. We can think about that. We've still got a few days to decide. I think it's a great idea, because I think one of the things you mentioned last week that I agree with 100% is if we can't get precise working by the time this stuff goes out, let's just, let's get something that does work. And it did, to me, I think it'd be great to have a runway quick listener, but have it work really well, but if we can't get it working really well between now and then, there's other solutions to that. Yeah. All right. Okay, so that's it for today. We'll talk again tomorrow. All right. See you all later.


Welcome traders, another Tim Bell Charter. Me, Patrick Munley, want to take a look at Bitcoin here. We traded up into the resistance zone, the 50,000 to 52,000 area. We obviously had to buy the rumor, sell the fact yesterday with El Salvador accepting Bitcoin as common currency. We sold off, I'm looking for a three-way correction now to ultimately test and hold the 41,000 area. Watch for bullish reversal patterns in this zone, set long positions to ultimately target a retest of the prior cycle highs up to the 64,000 level and beyond there we look for an extension up into the projected descending trend line resistance at 75,000. So watch for bullish reversal patterns at the 41,000 area to set long positions. As always, trade the plan, manage your risk.