 All right, welcome to October 7th, the Minecraft Developer Sync. Woo, we're here. All right, so we kicked off our sprint earlier this week. And I asked everyone to go through and curate their own tickets for the sprint, hope everybody had a chance to do that. And so let's just go through, do a quick status update, where we are, any blockers, anything that came up as a result of going through those tickets and deciding what's going to be and what's going to be out. And before we get started, an exciting announcement to make, the patent roll that filed against us, our motion to dismiss was granted today, as well as a motion to stay, which is a very different thing. So we're not out of the woods yet, and they can always appeal. They can always raise objections. But for now, everything's on hold. We're not doing anything. So we've won the first round, which is awesome. No, I don't know. The first round was they filed in the wrong venue, so we run the second round, too. Continue to. Also, we haven't mentioned it yet, but we did also file an IPR inter-partase review of their patent. So we're going to take that down regardless, so they don't go bothering anybody else with it. Yeah, they are definitely not in a good way, unless they are, well, they're not in a good way all in all. Like, I would say that if we were the Google or the Amazon and we're sitting on $100 billion in cash that they could potentially get into their greedy, grubby, little hands, maybe the fact that we're in litigation would maybe give them a shot. But given that at the end of this, even if they went, they're going to end up with an empty bucket. They're in a really bad position. Like, they had their case dismissed. Their pets are being attacked on two separate fronts. They don't have any revenue because they're not a real company. And then, of course, we've sued them in state court to go after our expenses and any punitive damages that we can get. Plus, as an added benefit, I'll throw this out there just in case the attorneys are listening and can understand words that are longer than one syllable. The fact that we're winning is likely to cause people to pile on to the case. And so the state case where we're seeking damages, the state of Missouri can reach into that case and pursue them for additional damages as well as, I believe, they can pursue them for criminal misconduct. And so given that we're winning, one of the things I'm going to be doing is reaching out to the state government of Missouri and the attorney general there and saying, hey, look, we're going to beat these guys anyway. Why don't you guys pile on? And you can crow about how you're protecting businesses in Missouri from patent trolls. And hopefully, they see that as an opportunity to represent the businesses in Missouri, and they go after them too. So we've got a lot of great people in our court. We've got United Patents that has filed an IPR, the EFF has weighed in on it. We're working with Lee Chang, who's famous for beating patent trolls. We're winning. And at the end of this, this should serve as a warning to anybody in the future that wants to come and troll us or to try and take the resources that they didn't earn from us. We will fight. We will win. And you will look like a total jerk in public national. I feel like I'm going to be playing going to fly now in the background right now. So as great as that news is, it's really a distraction. And so let's move on to the business that we're actually here for, which is making cool awesome voice assistance software. So I'll start with Chris. How do you feel about the spread so far? So far, so good. I have some show and tell. Ooh. Ooh. I like show and tell. Did Chris just take his shirt off? Because I'm on the phone, I can't see. No. So this is the intro screen to the tagger. Buttons don't work yet, but they'll take you to the next screen, which is this screen. So this is the Waveform library that I was talking about before. This is a Waveform I pulled off of the internet for free. This is just the first screen. The difference, the only difference between this and other screens will be the content on the top and the bottom. But the Waveform player works. I have a very low tolerance level for stupid bullshit. So that's the Waveform. Was that Ken? Fun. It's Karlin. What? I was going to say, was that Ken? Yeah, I was going to say Karlin. Oh, you're all close enough. I'm very happy for today's news, too. So you can do play, you can pause. And the other thing I've found out about this library is that if I flip a flag, then we can do this. Time boxing. Yes. You can only do one time box. Low tolerance level. But so we'll have to chop. There's four or five of them in there to chop them off one at a time. But that works out of the box with the library I found as well. Awesome. All right, that's great. That was in my couple of days was getting. This is just the framing next to the plumbing and the electrical. We've got rearranged on my screen now. So Ken, you're next. So yeah, I got sidetracked a little bit because I wanted to get the SJ201 enclosure code up to the repository and get it reviewed. There's a pull request out there for that. And then I actually thought the activate button was working, but it wasn't doing what it was supposed to. I rallied back around with Derek and verified its functionality and actually fixed that. So when it's not doing anything, if you push it, the activate button acts as if the wake word was detected and it starts the listener process. And I go on the code from the Mark 1 skill the way it does it with signals, since all the underlying code used that. But I burned up a lot of time trying to get it out of there and try to get it out of the message bus or not. So anyway, the SJ201 library is out there. The skill has been refactored to pull, lead, switch, and volume from module name blah. So in the future, it could be SJ1. Right now, it's SJ201 underscore rev A. I assume if something changes, it'll be rev B. And add nauseam. And then later, if we have other hardware, we can add those. I could even create a re-speaker set as well if we wanted that. And then depending on how crazy we wanted to get, you could also probably automatically pull that stuff from a config file. That being said, the pull request is out there. It's ready to be reviewed. There's a little housekeeping left, which is I need to go back and figure out which of these modules required pseudo. Initially, I did too many of them because I was learning. But now I've come to learn that the only one that needs pseudo is the Adafruit led library. So I have my new SJ201 that I cranked up, the one where the volume is not working. But other than that, I can get line out on it and the mics are working. So I'll be applying this code that's in the pull request to that and seeing what I need to add to the requirements.txt, which are the modules that are needed that don't have pseudo requirements. I'm still not sure what I'm going to do for pseudo requirement modules. They're system-wide. I'm not seeing an easy existing path in our setup code to do that. I'm loafed to put it in custom setup, but I may. But I'm not sure yet. But the bottom line is during initial install, there's going to have to be a call out to a pseudo space, PIP3 install blah. It'll be bored, and I think Neopixel. So once I get that buttoned up, I'll figure out how we handle that, and I'll commit that as well in a separate pull request. And once that gets merged, the next build should be supporting the SJ201 out of the box. So with that done, like I said, just some more house keeping. In the morning, I will go ahead and start moving on to the void comp tests for the back end wakeward tagger stuff that we talked about. And I created that ticket as well, and that's out there. OK, thank you. No visuals, but a very thorough update. I appreciate it. If we really need to, again, there is a shell script to run on install. We used to get used a lot more before we had the more complete manifest YAML that lets you install different system packages and all that sort of stuff. But yeah, I really hope we can find a way around the pseudo thing, because yeah. Well, we have, so if you look in our setup script, it has a pseudo flag, a command line flag. I think it's called dash R or something like that. And it means to run setup as root. Now, I haven't tried that because that seems a bit harsh. You mean a dead setup? I actually have been in the setup code, the start code, and started selective services using pseudo. And that breaks things. I've gone into the py environment config and said use system-wide modules so that it would pick up the system-wide modules. But unfortunately, there's module clash between the virtual environment modules and system-wide modules that render inflection useless. And it creates bugs and throws exceptions. Yeah, so I'm sure that. I know that there'll be reasons for all of it. I just hoping we can find a way around it, because yeah. And I think the pseudo during, you know, Minecraft core dev setup thing was added because people kept doing it, but it's really not recommended. So it was, I think it was added as a, if you really desperately want to do this, then we'll give you the option, but like, please don't. Yeah, it's just a one-time setup thing. So, you know, I might go in there and just put an exception path in, specifically for these two packages and that's it. Yeah, I think the script even splits up a big red flag, you know, keys don't do unless you absolutely think you need to. Yeah, yeah. So that's the housekeep I'm gonna have to do. And once I get that done, I'll get on my VK test. Okay, great. Yes, how about you go? Yeah, a lot of time spent reviewing the lingua franca. Enormous PR refactor from Chance and it's yeah, it's really, really good stuff. So I've probably mentioned it before, but essentially the idea is it makes everything very consistent throughout the whole library because currently, you know, the same method in different languages will have, you know, an underscore in a different place or, you know, just tiny things like that, which also just makes it a bit more confusing when you're trying to import them in somewhere. And so it actually handles everything from a very high level. So, you know, you load a language and then you call the consistent method name and it just works or you can load multiple languages and then, you know, set during the call which language you wanna use in that instance. And then the top level no longer needs to be touched, you know, when we add new languages or new functions to existing languages, you just add them to their respective part of the code and then the top level will detect that and load them. And then there's some good, you know, you can set some default behavior if it makes sense to do so for any of those as well. Anyway, so it's a huge change. Took a long time to go through, but it's looking really good and really the comments that are made on it fairly minor and Chance is already working his way through those as we speak. So, yeah, it's looking really good. That's awesome. I saw a comment come through from Chance, I believe it was about a number of discussion topics and, you know, revolving around languages, like multiple languages and things like that. Where would those discussions take place? Looks like you were basically asking for, hey, we should split these things, you know, these topics out into separate discussions. Where would that normally take place? Because I have some comments and some ideas on them. I am not recalling which comment that you're referring to specifically, but I mean, they would, depending on if they were, they might take place in Lingba Franca if they're very specific to that or less so the chat. I think the chat is good for like hashing things out, but, you know, it's not great for searching and going back to refer to discussions that have happened. Yeah, yeah, yeah. I was gonna say what about the forums, yeah. Yeah, the forums is a good one. I actually got some of the forums. All the Minecraft called repo if it's a sort of higher level, you know, yeah, it was a good notification. So, I assume that he was saying that it probably wasn't the best forum for discussing. All right. I may have missed the forum, I may have been asleep. It was on Monday, but it was like seven bullet items. Anyway, okay, so that's good. Yeah, it'll be great to get that rolled in, supporting different language, obviously. Also saw some chatter on the check language stuff. I assume you're on top of that. Yeah, yeah. I think it's, you know, I think we need to, it's hard because like languages don't help us get the mark two out quicker. So, you know, we need to focus on the things that I'm half speaking for the community here. But like, we need to focus on the things that they get the mark two out and we really wanna support more languages. But we're obviously a pretty small team and we need to, yeah. I do wanna point out, I sent Michael an email yesterday that kind of laid out like, and the next eight things in my view, and you know, Michael's used the one that's gonna be controlling here, that need to happen. And languages are right up at the top of the list. That the, you know, we need to make, you know, custom wake words and custom voices are gonna be pretty high on the list. But once we've built, once we have the ability to build wake words and voices and we're shipping the mark two, I would argue the very next thing is to, is to build the tools required to move my craft into these other languages. And the reason the custom voices thing comes before languages is because in order to support a language, and I'm gonna use Hawaiian because there's a really passionate group of Kanaka here that really badly want to preserve. And there's been a real awakening in the Hawaiian language and the same for Catalan, right, in Spain or in Catalonia, depending on your politics, that are really passionate about their language. And at the same time, the bigger platforms don't support that. And so once we've built the tools that allow us to build new voices in English, it should be not a simple port, everything's simple. When you're like, hey, it was just written software. But you know, it should be a very straightforward step-by-step process for us to then extrapolate that any language that can be represented by ASCII and then enable our community to go ahead and start building voices and building NLU in their native languages through the tools that we're providing, right? And that really is a huge, it's a huge win for everybody who doesn't speak a language that's spoken by a dominant colonial power. And it's a huge win for us too as a community because it means that we can support, we're able to sell Mark II's and sell our products into these unique markets that Google and Amazon, frankly, they don't care about. And so there's thousands of languages in India, thousands of languages in Africa, thousands of languages in Asia that Google and Amazon will never, ever, ever support because they don't view a two million person language as an opportunity. That's a huge opportunity for us to win. Yeah, totally. But I think this PR is a great step forward on that. I think another piece that we need to look at in the not too distant future is automating the translation, the skill and core translation process. So it previously was okay, manually triggering these updates and then processing the PRs every month or so. And to be honest, I haven't done it since he left. So it means that skills slowly get out of date as the skill gets updated, but the translations don't. And so one of the things that's led to is, well, I don't know if it's led to it, but some languages try and submit PRs directly to the skill repos, but it's just not possible for us to process that many PRs when we're talking about, as Josh says, potentially thousands of languages, thousands of skills, multiplied by each other times the number of updates. It's like, it just doesn't work. So we need good processes around that. Oh, that sounds great. Is there a ticket for that? There is, yeah. Oh, great answer. I'm gonna go make sure it's up to date, but there is a ticket. Okay, so is that up for you guys? Yeah, I think so. Hackday professors is going on as well. That's slightly more annoying this year because they're trying to not be as annoying to projects that aren't participating, but it makes it more annoying for people that are participating. You just have to label tag things a lot more, but yeah. Okay, Derek, can you give us an update on where you're up to and the latest on the SJ201s? Sure. Yeah, so I'm gonna do the update on the SJ201s first. So I've been talking a little bit with Kevin today and our assembler, which is called Advanced Assembly, and things are on track to get the 20 boards by the 16th, yeah, so the next Friday. And then they'll be overnighted to Kevin and he'll do all his bring up tests and stuff and make sure all's good and then kind of distribute him to the rest of us. Well, they'll come to me. So that's all smooth sailing. There were some parts that had to be shipped to them so it did go a little slower than what we'd hoped. Couple days slower than what we would have liked, but that's about as quick as we could get it done. So, yeah, all's good there. We ordered, so I've been kind of ordering a bunch of parts and stuff for the 20, the purchase parts outside of the board, so the speakers and the displays and the cables and the screws and all that good stuff. And working a little bit also on the more production. So most of parts right now, we're getting through kind of easy to acquire distributors. So they're not the same distributors we'll use for production. So I'm working on that as well, getting some samples sent from those distributors and the cheaper price ranges for the displays and the speakers. And then actually I've been really just fighting some 3D printer troubleshooting the last day. I got the Ultimaker back up and going, but it was having some weird issues where it would just freeze during the middle of a print. So I had to troubleshoot that and just end up being basically a day on that. Ended up finally just reverting to a pretty old slicer and that got around it for now. But I am as of yesterday afternoon back in printing mode. So I've got the Ultimaker going and I will have the form labs going. So we'll be churning out parts. And I talked to Kevin a little bit too, he's up for printing some, he's got two pretty good FDM style printers. So gonna get him to print at least stuff for him so we don't have to do that. And Josh is on standby to print stuff as well. I think he's actually working on one right now. So yeah. I have the printers here running flat out. So I'm printing multiple units simultaneously across both printers and keeping them running 24 hours a day. Nice. In case you haven't noticed, I'm super excited that we're gonna have an actual no ship product. So I'll probably get ahold of you tomorrow Josh with the new file or the files for the fully 3D printed version. But for our purposes, kind of what we talked on Monday, you know, the laser cut design with the 3D printed acoustic chamber is gonna be plenty fine for us to do a lot of our stuff on. So, but we should be able to do a lot of, we need to talk about how many of the 3D printed ones we want to do because project rollover has basically the ones that they had were 3D printed designs. And we really wanna replace them one-to-one. We probably wanna allocate a lot of resources to doing that. Yeah, I'd rather not send them the laser cut ones. Right. So yeah, I'm kind of gearing up to get that, done as fast as we can. Was a decision made about what to do if we have one of the last revs, SJ201s, can we send those into Kevin and have them fixed or are they just garbage? Well, I think we send them to Kevin, but I think they're garbage. I mean, I don't think that's worth fixing them since we've had enough changes. That's my two cents. I don't know, Michael, what do you think? I think hold on to it actually, at least until we get everything up and running. They are ultimately they're garbage because the firmware is gonna be different between these. This is what RevD and we had to replace one of the chips so the volume control, for example, was not gonna be the same as it was before. That's true. No, that's not true. The volume control is the same. The audio path is different. So that was actually the one problem that we're really solving with this pin is having a single audio path output instead of the dual audio path output. So, yeah, so that'll be a little tiny bit of a change on the firmware side. So, you know, 10 should not, definitely not get rid of this. And you may wanna hold on to yours for now. I think the only other thing I've been up to that's worth mentioning is yeah, it's kind of curious, you know, Chris, Chris Vee you and I should talk a little bit more about the mobile side of the tagger because most of the mockups, you know, all the mockups we've done. And I think the only thing I'm not really worried about anything in the design. I think, so, you know, everything is based on what we've done before in terms of layout and stuff. So we know how it flows for mobile except for the selecting of the clip. That's the one part that I might, we might need to think about a little bit more. Just make sure. Detective people are on a certain type of, or like, you know, detect if it's a touch screen or whatever certain size screen and give people only certain tasks that don't require them to do that. Yeah, I mean. I vote for Gez. I vote for Gez's solution rather than trying to like get into fancy did design stuff. Why don't we just limit the clips that get sent to mobile to clips that are appropriate for mobile? There's nothing more annoying than companies trying to wedge non-mobile tasks onto a mobile device. Like let's just, like we'll just use the binary ones on mobile. I should be really straightforward. Yeah, that works. Keep it simple. Great. So I guess that's everyone. I have updates. I actually work now or I'm starting to work. So I have backups running. I sent a, it's not classified as nastygram but it's on the border of it to Ken and Chris V yesterday about the distribution of the data in the root of the storage server. So if you guys could get in there, I'm grabbed, I may be done grabbing an entire copy of it. But if we could get that organized or if it's not organized, at least get a readme file that says what the hell everything is. There's like backup and then backups and then there's wake words and then wake underscore words and then combinations of those things in various cases. So I'm grabbing those and that process will be automated. I will also take the extra hour it takes to document it and drop a document somewhere so people can understand it. I also exposed the server here to the broader internet so that it can be accessed through a public IP. So you guys should be able to get in and out and do what you need to do on the server here. And then I resolved the issues with permissions have gotten artificially restricted and I did want to ask it. That happened on purpose because like Gez was locked out and a bunch of the passwords were set to you couldn't view them. And I know that the default permissions in the last pass can be a bit restrictive. But was there a reason that we had Gez locked out of a bunch of folders and stuff? Nothing I did. Okay, so I kicked it all open and gave you guys access to everything. So for all you hackers out there like all you need to do is get Gez to click on your email. I'd tell them that. But be warned he's not running Windows so you're gonna have to get him to pull down your little shell script and run it with his credentials. The next step for me is to push on the either it looks like the choice is gonna be between Ubuntu and Pantacore and it may end up being a combination of both. So we may end up using Pantacore to deal with operating system level stuff and firmware level stuff and then use Ubuntu to do application level updates. I use Snappy to do that. But I'm gonna start with something super simple like a shell script change a line and figure out how we push these updates out to the devices in a secure way that it doesn't cause a bunch of headaches and evaluate software from various different folks. I'm still evaluating Bolina so if the Bolina sales rep is listening it would be awesome if you would actually show up for your meeting because it's hard for me to buy stuff from you if you don't show up. And that's pretty much that for me. And then simultaneously I have all the printers cleaned, running, pull out, or like order some more resin and some more PLA but Derek as soon as you send the updated designs I'll start the printers on that and then start working on a maybe a more efficient scheduling mechanism but yeah, I think the answer to your question about when do we stop 3D printing and the answer is when the injection molded parts start showing up. Like until then, once we have designs and we're happy, especially with the PLA where the incremental costs are the electricity and like a $20 full of plastic I think we get super efficient at printing them and we print them as fast as we can and we get them in the hands of as many people as possible even if they're just evaluations for folks like our friends at NASA who is looking at sending microps into space. And that's all I really have. In space. All right. Okay, great. Well, thanks for that update. Yeah, things are really moving along here. It's getting very exciting. I think that by the end of this year we will have lots of, lots more great news. So I'll just leave it at that. So that's it for this devsync unless anyone's got any final words, any last words. I came up with the best phrases. I was quite curious about, I saw one of my emails, the newsletter, the pop socket thing. What's that all about? Oh, we didn't talk about that, did we? Okay, so there's a company, there's a Kickstarter out there that I ran across called TalkSocket. And basically what they've done is they've jammed a Wicword recognizer into a pop socket. And that's got a little Bluetooth connector on it. So guess what this does? It allows you to install third-party voice assistance on any phone. Because the key to one of the major blockers that we've had in terms of getting, micro-opt even conceptually onto an Android or an iPhone is that you can't use their listening for pretty obvious reasons. They don't want just anybody to have a permission to just listen to the microphone all the time, right? So in that sense, they're protecting their users. But at the same time, there's absolutely zero room for third parties to put them in like ourselves or even Amazon to put their voice assistance onto a phone. So they've solved this in a very clever way and I saw this and we got in touch with them and they've said that they will support micro-opt as well. So they originally were created to be able to install Amazon onto Android phones and iPhones. But we called them up, we talked with them and we're super happy to support our wake word as well and that will basically clear the path for us to have a mobile version of micro-opt. So there's no schedule for that right now. It's definitely not going to impede our progress with the micro-opt too, but it also is a really clever solution to a problem that we're trying to solve. Yeah, I encourage people to check out. I think our Kickstarter is over at this point. They'll be moving on to the Indiegogo in-demand and you can pick it up there. And yeah, I thought it was really cool. So I can't wait for that to correct come out and hopefully sometime next year we'll be supporting that. And just as a reminder to the folks out there that might go and back this on Indiegogo or on Kickstarter, when you back an Indiegogo or a Kickstarter product what you're doing is backing the journey, not buying the product, right? So this is not about like, hey, I can buy this thing and it will show up someday. This is about showing support for the ability to do an independent voice assistant using this little piece of hardware. They may or may not ship it. They may or may not thread the needle to become a profitable company, but it's certainly a journey that we want to support and we hope that they get to delivering hardware but if they don't, I'm not gonna be bent and go and melt down their personal Facebook page. Yeah, that's an excellent point. I've had quite a number of Kickstarter projects not materialized, but you know, that's part of the game. All right, any other? There's 40 hours to go on the talk so I can kick the starter. Oh, okay, great. Jump in and do it if you want. Yeah. And I will match that with a complete non sequitur which is the clear gorilla glue is fantastic. I highly recommend it. Fantastic endorsement. I think we'll call it a day. Thanks, everybody. See you on the next.