PixelBlitz in Public with Martin Lasek

PixelBlitz in Public with Martin Lasek

[00:00:00] New Years Announcements
---

[00:00:00] Leo Dion (host): Hey folks. Happy New Year to celebrate the one month anniversary of Bushel. I'm offering a 50% discount this week for the Pro subscription for Bushel. That's right, you can get a 50% off a yearly subscription of bushel at 31 99. USD. So if you wanna do any advanced stuff with snapshots such as adding metadata or automatic snapshots, and we have some really great features coming down the line that are gonna be pro only, I highly recommend you take advantage of this.

[00:00:28] Leo Dion (host): This week. Bushel is a really great app. I've heard nothing about good things from folks, and I think this is a great opportunity for you to. Up your Mac OSS development and Mac oss testing game. So definitely take advantage of this. It's only gonna be available 50% off for a week. And if you are more hesitant and just wanna be a beta tester, we are still looking for beta testers, so you can definitely check that out at Get Bushel app and sign up for test flight there.

[00:00:59] Leo Dion (host): Thank you so much. For everybody who's been supporting me on the work I've been doing in Bushel. It's by no means done. I took a break over Christmas, but we've got some new versions coming out soon with bug fixes, new hubs with more macOS versions, and it's great. It's gonna be awesome. It also wanted to let you know that I'll be speaking at New York's 50 this year April 23rd and 24th.

[00:01:19] Leo Dion (host): My talk will be advancing in SWIFT by learning how to count. I think it's gonna be an interesting talk on mathematics numbers and swift in avoiding some overly complicated code and when maybe really advanced features are worth your time. If you are interested in coming to see me at New York Swifty, you can use the discount.

[00:01:40] Leo Dion (host): Code discount promo code Leo, and get 10% off your ticket. That's Leo to get 10% off your ticket to New York. Swifty. If you're gonna be there, let me know. I'd love to see you and it's gonna be a fantastic time. I love New York and I think I'm really excited to to speak about this really interesting subject.

[00:01:58] Leo Dion (host): Lastly, I've opened up some spots this year for new projects, so if you are looking for help with any of your apps or any of your work in the Swift and apple space in 2024, you definitely want to get ahold of me, Leo, at bright digit.com. I do work in iOS, Mac, OSS watch, OST v oss, vision Pro, server side, whatever it is.

[00:02:21] Leo Dion (host): I would love to help you and your team. I have 10 years of experience and if you. I have been following this podcast. I'm pretty good at explaining and talking about stuff and communicating with your team, so I wanna help you out. What can I do? What can I do to help you with your Swift UI issues, your weird core data problems, or just just need an extra helping hand?

[00:02:43] Leo Dion (host): Definitely reach out to me leo@brightdigit.com. We'd love to help you. You can also reach out to me on social media as well. Feel free to dmm me. And let me know how can we help you and your team with whatever app projects you have coming down the pipeline. Thank you so much for listening to this podcast and watching my YouTube videos.

[00:03:03] Leo Dion (host): I'm really excited for 2024. If you wanna continue to stay up to date, I highly recommend following me on social media. And also signing up for the newsletter. We have a new article coming out on dependencies that we're gonna be sharing in our newsletter that I highly think it's gonna be fantastic and super helpful if you're having issues with dependencies and testing.

[00:03:21] Leo Dion (host): The newsletter is located at bright digit.com/newsletter. Sign up there to get the latest issues as they come out. And then if you really wanna stay on top of everything, we have our brand new Patreon patreon.com/bright digit, where you can get early access to episodes, articles, all sorts of stuff that I'm working on.

[00:03:41] Leo Dion (host): See how things are going with Bushel or whatever apps I'm working on right from there. So sign up for the Patreon to get early access and you're. It's definitely worth it. I highly recommend checking that out. Thank you so much for tuning in today, and I hope you enjoy the rest of the show. Bye.

[00:04:00] What does building in public mean?
---

[00:04:00] Leo Dion (host): Welcome to another episode of Empower Apps. I'm your host, Leo Deante. Today I am joined with Martin Lasek. Martin, thank you so much for coming on the show.

[00:04:09] Martin Lasek (guest): Yeah. Thanks for having me.

[00:04:11] Leo Dion (host): Before we begin, I'll let you go ahead and introduce yourself.

[00:04:15] Martin Lasek (guest): All right. Yeah, so my name is Martin Lasek. I'm an iOS engineer at Alaska Airlines. And I have been an engineer since almost a decade, and I've always loved backend side of work as well as frontend. And I'm stuck with frontend and iOS development, but always have something for the backend as well going.

[00:04:34] Leo Dion (host): At Alaska? Do I might, I assume they have a separate team for backend stuff.

[00:04:38] Martin Lasek (guest): That's true. Yeah. They have a separate team for backend. I'm only front end and at Alaska.

[00:04:42] Leo Dion (host): Okay. Okay. Awesome. We we're both gonna be speaking at New York Swifty as we talked about before the recording. And I mentioned in the pre-show you've, what are you speaking on?

[00:04:54] Martin Lasek (guest): At New York swiftly, there's gonna be an actually a new and exciting talk for me because I just got into game development. Using Swift from from scratch. And I wanted to see how easy it actually is to implement a multiplayer game. 'cause I couldn't believe it's hard how everybody says it is to say, oh, don't do it.

[00:05:14] Martin Lasek (guest): So I did, just did it. And then I thought, Hey, this is actually so straightforward. I should talk about it at New York, 50. And so that's gonna be my talk.

[00:05:23] Leo Dion (host): That's gonna be awesome. Yeah. We'll talk a little bit more about that later in the show in your little multi-player game project. But one of the things you wanted to talk about today was the idea about building in public. What exactly did you mean by building in public exactly.

[00:05:41] Martin Lasek (guest): Yeah. The base idea is basically sharing anything and everything you do as you built something. App, website, sas or even not even software related. Just share what you're building as you're building it in public. So you're building it in public and that's the gist of it. And I just discovered this last year actually there's a whole community on Twitter.

[00:06:07] Martin Lasek (guest): And last year when I discovered this, I was like, holy cow. There's so many people are building in public and they're sharing their experiences and their learnings. I want to do that too.

[00:06:16] Leo Dion (host): What who are some folks that you would recommend following on Twitter who are building in public?

[00:06:22] Martin Lasek (guest): Oh yeah. There's so many and I'm sure I'm gonna miss some names for sure. Especially the handles. 'cause I don't remember the handles. But maybe there's show notes where we can like list three or five. But some of them became closer friends. Like we have Mateo we have Eman.

[00:06:37] Martin Lasek (guest): Chris Sebastian there's like classic ones that are like the goats of it levels io and what's his name with his headshot probe sauce. But yeah, there's a bunch of smaller ones that I'm highly engaged with, and then some bigger ones that, that it's also worth following to see how they're, how they actually did it.

[00:06:55] Martin Lasek (guest): 'cause they made like. Levels IO made, I think 500 K in one month. During the AI profile, he actually kicked off the market of AI profile pictures by some accident, if you will. Yeah.

[00:07:09] Leo Dion (host): So one of the, so I've I try to build in public and my problem is getting myself into the habit of sharing what I'm working on. What are some ways or tips that can encourage people, not like they don't want to do it, but more just getting into a habit of sharing what they do in public.

[00:07:27] Leo Dion (host): What are some habits or tips that you might have to help with that?

[00:07:30] Martin Lasek (guest): I think the first thing I would say is don't sweat if you're not consistent about it. Or you don't find anything. 'cause I feel like most people might stress themselves out of. Out like I have to post something. I have to find something that is worth posting. That would be like my first advice.

[00:07:45] Martin Lasek (guest): And then the second is just as you build something and every time you code, you always have something that you find interesting that you just did. 'cause it's always or you have a new feature that you just finished or you started and you just share that. It sounds sometimes boring, but it's really not.

[00:08:01] Martin Lasek (guest): Because if you put yourself into other shoes, other people's shoes. You don't find the same thing. You find boring to post boring to read from others, if that makes sense. Yeah. So don't, it's like art. You're putting artificial stones in your own way without proof oh, this is boring.

[00:08:17] Martin Lasek (guest): Says who?

[00:08:19] Leo Dion (host): Yeah. What I was gonna say what was something that you posted in public that you were surprised by? How how good or positive of a reception you got.

[00:08:30] Martin Lasek (guest): Yeah. So there was this one post that kicked off actually by latest sauce that I'm building. So I have a workout app, and last year I decided, okay, you know what? I want to now start generating revenue with the, apps I'm building. 'cause I've never really put this as a priority.

[00:08:47] Martin Lasek (guest): It's like the classic developer. I'm just building because of the sake of building and it doesn't have to make money, it's just a side project. But lastly, I thought, okay, you know what might as well try to, generate some revenue. So I started building new features for my workout app, better workout in public.

[00:09:03] Martin Lasek (guest): And then I just posted one post about the feature request board that I implemented in it. And I shared it with a short story, very short how the idea came to life. And I had this idea already 10 years ago. And this one went viral and people were saying, oh, I would build this if it was a standalone product, and I would have to, I would love to add this to my app and whatnot.

[00:09:25] Martin Lasek (guest): And I'm like, okay, I'm gonna make this a standalone product. So that, yeah, really was surprising that it went viral and then kicked off the next app that, that I'm building now.

[00:09:35] Leo Dion (host): What do you think makes that more viral than, say other projects that you've done?

[00:09:39] Martin Lasek (guest): Yeah, it's a good point. It's hard to say what makes something viral really.

[00:09:43] Leo Dion (host): part of it I feel is the shareability of it. Like when you talked about the AI profile, I was like, okay, that's perfect. Or, the stuff we've seen with widgets, like that's easy for someone to post on TikTok. And that usually helps with the virality of something.

[00:10:00] Martin Lasek (guest): You're right. I think a general rule is you have a higher probability if you share some kind of media, like videos or pictures, increase your chance of engagement.

[00:10:10] Leo Dion (host): Okay. Yeah, I agree. I, it's just sometimes I'm working on boring apps and like trying to figure out how to do that.

[00:10:17] Martin Lasek (guest): SS

[00:10:18] Leo Dion (host): more challenging.

[00:10:20] Martin Lasek (guest): boring.

[00:10:21] Leo Dion (host): Yeah. Yeah. What would you recommend as something people should avoid sharing when they are sharing something? Is there anything that you're like, yeah, that probably isn't ready for prime time, or it's a privacy concern, or something like that?

[00:10:36] Martin Lasek (guest): I've been always more on the on the side. That is a little bit more lenient I have good faith in people. I always assume the good and obviously there is bad out there and they would cause some harm or try to scam you if you share too much personal stuff. I've luckily never run into it personally.

[00:10:54] Martin Lasek (guest): But I guess it's just about your project. I feel like you can share anything. You can share anything about your project, as long as it's not, disclosing your. Private information that's my take on it. There's some developers who would not like to share everything, so they avoid the copycats, right?

[00:11:10] Martin Lasek (guest): Because you want to generate some revenue and you're creating competition. But I believe that's not a really a problem per se. Copycats are always gonna be there and. You're gonna you're passionate about your project, so you're gonna always have an edge over those people and ultimately prevail.

[00:11:27] Martin Lasek (guest): That's my, yeah, that's my thinking.

[00:11:30] Leo Dion (host): What what do you, have you ever tried to like just fully open sourcing an app and going that route and what's your thought process on going either way with that?

[00:11:38] Martin Lasek (guest): Yeah. Yeah. Open sourcing to me contradicts my current goal of generating revenue. Because if I'm open sourcing it and I'm trying to generate revenue, then it's for sure just easy to for anyone to just copy, paste the app and just submit it to the app store themselves.

[00:11:56] Martin Lasek (guest): So I am not open sourcing anything right now. Generally, I love open source software and I'm contributing what I can and I'm creating whatever I feel can be open source, like my packages dependencies. But yeah. Not products, not things that are meant to generate revenue. Those per those things are not open source.

[00:12:16] Leo Dion (host): My kinda like rule of thumb is maybe like open sourcing components of the app as separate reusable swift packages, but not like the whole app itself per se. That seems like a better fit. Unless it's an educational tool it's not really like worthwhile open sourcing a whole app.

[00:12:36] Martin Lasek (guest): I think that's a great balance. You open source is still while keeping, hopefully the proprietary stuff

[00:12:42] Leo Dion (host): Exactly. Exactly. What are some other, like key things you wanted to mention about building in public that you've found helpful? How long have you been doing it? You said for a year.

[00:12:53] Martin Lasek (guest): Yeah, I did for one year now, and I've not been consistent with posting every day. There's others who are super consistent with it and they grow faster for sure. And growth is not really why you're doing it in the first place. It's more like because you, because of you sharing it, other people are gonna start engaging with you and you want to actually engage with them because those are like-minded people who are.

[00:13:16] Martin Lasek (guest): Doing the same thing like building in public. And so other things that I would recommend to do is find other people who are building in public and support them. The support is coming back and it costs you nothing. And it helps them, stay motivated and they will help you stay motivated. And eventually some of them become friends. Sorry. Yeah.

[00:13:35] Leo Dion (host): One thing I was gonna mention was that you're currently working on something building in public. We hinted at that, the multiplayer game. You have a YouTube channel, obviously. If people don't know about it, please join. I'll put a link to his channel in the notes and maybe in the card here or something.

[00:13:53] Leo Dion (host): But, yeah. You've been mostly working on this multiplayer game, and that's been a whole built in public stream, right?

[00:14:00] Martin Lasek (guest): As well. Yes. Yeah.

[00:14:02] Leo Dion (host): How long has that been going on and what have you found, like how long have you been streaming, like your work? I know you do courses online, but like as far as like actual, like just streaming Xcode, what have you found is like something you've learned or you wish you knew when you first got started?

[00:14:22] Martin Lasek (guest): I found it doesn't harm your business if you stream what you're coding. Like I'm streaming even wish kit development and wish kit is something I'm generating revenue with. And some would argue while you're exposing yourself to copycats and they cannot easily copy code because it's actually not open source.

[00:14:38] Martin Lasek (guest): That part, yeah, but, and I have been streaming on and off and more recently I started to be more consistent about it. It's just a little bit hard as a dad and husband to find the time. So most of the time it's starting at 10:00 PM or midnight when I have the time for it. And then I stay up until 3:00 AM like last night, sleep four hours, and then I return to my nine to five like today.

[00:15:00] Martin Lasek (guest): But yeah, what I found stream with streaming is you have a different. Type of people who are coming in who are not building in public, but interested in software development and you love co talking about code, and I assume all of us love talking about our code, then this is just a fun thing to do, you can build in.

[00:15:18] Martin Lasek (guest): So this thing is, what I'm thinking is, look, I'm sitting at my desk coding anyway, might as well just turn the camera on and stream it. And the benefit of that is, that's like free marketing. It's free audience building. And to be honest. If you stream simultaneously on five platforms, which I do, you get the best.

[00:15:37] Martin Lasek (guest): ROI you have one single input and I get a return on of investment on YouTube, Twitter, Twitch.

[00:15:44] Leo Dion (host): Are you just using like restream to do that?

[00:15:47] Martin Lasek (guest): restream is one of the options I use actually stream labs. So I can yeah do it from my from my machine,

[00:15:54] Leo Dion (host): That's

[00:15:54] Martin Lasek (guest): but,

[00:15:55] What is PixelBlitz
---

[00:15:55] Leo Dion (host): so you do wish k and you do your multiplayer game, that's what you've been streaming lately, correct? Explain, so I'm curious now, what's this multiplayer game? Do you have a name for it yet?

[00:16:08] Martin Lasek (guest): There is a name for it. Yeah, I called it Pixel Blitz.

[00:16:11] Leo Dion (host): Okay, so how does work? What's the game? I'm curious.

[00:16:14] Martin Lasek (guest): So the game the, I approached it actually backwards. Usually you would have an idea, you sketch it out and then you go build it. But this time around, the idea was to use web circuits to build a multiplayer game. But I wasn't sure yet what kind of, I just wanted to do it to learn. So I just started off with just like a 2D Pixel character on the screen to be able to shoot a bullet and walk.

[00:16:41] Martin Lasek (guest): I. Left and right and then implement web sockets to translate that information to, or, send that information to a second device and see how I can make this work. And then it just took it from there. Ch step by step. I started this end of October, beginning of November, and it was just chipping away every week a little bit.

[00:17:00] Martin Lasek (guest): And now it's in the state of where you can have. You can have your player on the field with up to five other players simultaneously. You can have your name, you can shoot them, you can pick up items. Now I'm at the state to say, okay now I have to introduce a world state in the backend, because you cannot just pick up items on your device and on every other device is not synced up or they pick up the thing at the same time.

[00:17:22] Martin Lasek (guest): So you have to do that. And. It's still simple as it's, everything is like MVP, you just allow yourself to have some things that just don't work properly, like a little bit of lag, or the enemy actually shot you first, but your data, was faster or, arrived faster. So too bad.

[00:17:39] Martin Lasek (guest): When someone has poor network and it's slower. Then you're that first. But yeah. So this is basically a multiplayer shooter game 2D on a on an island. And right now you can just shoot one another and pick up ammunition.

[00:17:54] Leo Dion (host): Okay. Okay. So explain some of the technology you're using behind the scenes.

[00:18:00] Martin Lasek (guest): Yeah, totally. So for iOS, I'm using SpriteKit.

[00:18:04] Leo Dion (host): Okay.

[00:18:05] Martin Lasek (guest): that's basically it. The assets, I'm MVPing everything, so I'm just going online and just snatch the assets from HIO that are for free. Just so I don't have to do that. And for backend, I'm still using Swift but Vapor as a framework.

[00:18:18] Leo Dion (host): Okay. Okay. So how's, which are they, are, is this their first time dealing with spray kit and vapor?

[00:18:26] Martin Lasek (guest): As a combination, yes, but frontend Swift and Backend SWIFT is has been since 2016.

[00:18:33] Leo Dion (host): Okay. Okay. So you've done some of this stuff before. What did you find in your experience with using, let's start off with SpriteKit. So you've built stuff with Spike kit before.

[00:18:46] Martin Lasek (guest): Not really. Not really. That's also like I would say the first time.

[00:18:51] Leo Dion (host): Okay. What did you, how did you find it?

[00:18:53] Martin Lasek (guest): So I know that you have also built something with web sockets. That's what I'm using for the web web technology. But how do I find SpriteKit? So surprisingly, it's super simple and straightforward and honestly. That the resources are thin on the internet, but chat GPT really helps.

[00:19:15] Martin Lasek (guest): Like chat. GPT really helps you there with anything and you Yeah.

[00:19:19] Leo Dion (host): Yeah, I've never built a game, or at least I haven't built a game in a long time. So I've never dabbled in spray kit, but yeah we've both worked on website, so how'd you, what'd you think of Vapor and Sockets before

[00:19:31] Martin Lasek (guest): I love it.

[00:19:32] Leo Dion (host): Okay. Yeah, that's awesome. Do you are you just sending like Jason back and forth and decoding it, or how are you

[00:19:39] Martin Lasek (guest): Yeah. Yep. That's basically what it is right now.

[00:19:43] Leo Dion (host): Okay. Okay. And then what are you storing your web sockets like just in a dictionary or using some database or something?

[00:19:51] Martin Lasek (guest): Yeah. There's no database right now. I just implemented an architecture and it just grew from nothing to something really in the beginning, honestly. The first time I just made web sockets work, the backend didn't, wasn't even aware what data was sent. It was just a pass through. It was just like, oh, data's coming in from this web socket.

[00:20:09] Martin Lasek (guest): Let me broadcast it to all the other connected web sockets currently, except for this one. That's it. And yeah, and now I then you implement like a dictionary where you have, you call it maybe rooms, and then you say, okay, up to five websites can be stored at the first key. Of the dictionary in an array, and then that's your room and then you broadcast within it.

[00:20:29] Martin Lasek (guest): And then you Yeah. Introduce new rooms as new players are trying to enter a game and they're all munched together up until five. And then a new room is created fairly. Yeah.

[00:20:41] Leo Dion (host): Yeah, we've both done work with Web Sockets and Vapor. I use it in heart Twitch and gb for sending heart rates. So I use Health Kit. He kit takes in a new heart rate and it sends it to the web socket, and then on the web socket is open. It listens for someone's new heart rate and displays it essentially.

[00:20:59] Leo Dion (host): Yeah,

[00:20:59] Martin Lasek (guest): and

[00:20:59] Leo Dion (host): go ahead.

[00:21:00] Martin Lasek (guest): build it as a maybe also as a widget for Twitch or something. It was meant for streaming.

[00:21:05] Leo Dion (host): Yeah, so the way it'd work is there's just a web URL that displays the heart rate. It uses view. Yeah, it uses view. And then it just basically you would put that URL in OBS and then it would display that URL and like you could put it wherever you want in OBS and so

[00:21:24] Martin Lasek (guest): Yeah. And how successful has it been? Because that's a cool idea.

[00:21:28] Leo Dion (host): Yeah, it's really useful.

[00:21:30] Leo Dion (host): It's interesting I'm going through and trying to think about what's next for it. Probably like a rebranding perhaps. And maybe there's a lot of updates to watch OSS that I really want to take advantage of specifically. Right now I just do a put. When I want to output a heart rate and I wanna move that over to a web socket.

[00:21:50] Leo Dion (host): 'cause web sockets weren't available on watchOS when I was building it. Yeah, that's one of the things I wanna start doing and a few other things. Yeah.

[00:21:57] Martin Lasek (guest): So you're saying the connection from the web socket to your backend is actually just a network request, but the front end of the heart rate is a so good connection to the backend.

[00:22:07] Leo Dion (host): Yes. Yeah. Yeah. The web, the webpage is the one that uses the web socket, and then when you do a put from the watch, it updates, it sends out to all the web sockets. Yeah.

[00:22:17] Martin Lasek (guest): Yeah.

[00:22:18] Leo Dion (host): Yep. Yeah, exactly. Yeah, it is very cool. We've moved recently over to Redis for some of that stuff. But it worked perfectly fine with the dictionary as well.

[00:22:28] Leo Dion (host): I didn't have any problems with that. Sounds like you're going, I wanna do binary Jason or beat. B bison, beon. I just never could figure out how to code it on the web front end quite as well as I wanted it to. Just seeing if I can make that packet of info as small as possible is what I'd like to do as opposed to a string.

[00:22:48] Martin Lasek (guest): I wonder my question would be, do you run into any problems that you need to do that? 'cause that's always what I

[00:22:55] Leo Dion (host): no, I don't, no I don't, honestly. Yeah. Yeah. That's totally fair. Yeah. Whatever I could do. Yeah, go ahead.

[00:23:02] Martin Lasek (guest): for the fun of it. You want to do it for the fun of it,

[00:23:04] Leo Dion (host): for the fun of it, just the like, stability okay. Now if I want to send even more info, like I don't feel like, oh crap, like the string is getting way too long. Just to efficiency. I'm running, where are you hosting your stuff at?

[00:23:16] Martin Lasek (guest): on. Heroku.

[00:23:17] Leo Dion (host): Yep. Oh, okay. So same here. Yeah. Yeah. Yeah, I don't know.

[00:23:21] Leo Dion (host): Heroku's great for getting started. I highly recommend it. I know it's not free, but it's still pretty darn cheap. And like it's just easy to get up and running and you can expand it easily. And I've had, we've had some in, we've had some issues with Heroku, but I'll take it over. Having to walk through every little thing on Amazon or some other outfit that's like more difficult to just get going.

[00:23:46] Martin Lasek (guest): Yeah. The startup thing is like a big deal for me. 'cause I don't know proper alternatives where it's so easy to get going. I know there's

[00:23:53] Leo Dion (host): put the build pack and you go,

[00:23:55] Martin Lasek (guest): Yeah.

[00:23:57] Leo Dion (host): Yeah. What what made you want to do, okay, so a couple of technologies I was gonna ask about that I don't know if you looked into, was doing something like share play. Did you look at that as a possibility of sharing game? Whatever game status.

[00:24:13] Martin Lasek (guest): Yeah. Never. I've never looked into share, play. So it is like you, you're sharing your display as you play the game.

[00:24:20] Leo Dion (host): But you can share I've done it with a to-do list where you can share a to-do list, and then both iPhones with separate apple IDs have stay in sync with share play. I've done that.

[00:24:31] Martin Lasek (guest): Is it like a,

[00:24:32] Leo Dion (host): pretty well. But then you don't you don't need a server, so I don't

[00:24:35] Martin Lasek (guest): Oh, I see.

[00:24:36] Leo Dion (host): yeah,

[00:24:36] Martin Lasek (guest): Okay. Yeah, I haven't looked into that. I haven't never considered that. I did think of, or even su suggested to do like a local multiplayer game where you use like a local there's like APIs that you can use to locally connect with oth with other iPhones, and that would be something that's also new to the Explore.

[00:24:54] Martin Lasek (guest): It's just so much.

[00:24:56] Leo Dion (host): And then the other thing I was gonna say to even make it more crazy, and I know we've had, we've talked about this on the show 'cause we've had Tim comment on and a few other server team folks distributed actors. Did you ever look at that?

[00:25:08] Martin Lasek (guest): Man. No, but it's very like at the top of the list.

[00:25:12] Leo Dion (host): Okay. Okay. I've never looked at it. It sounds super cool because of somebody who's like really wants to get into concurrency and

[00:25:21] Leo Dion (host): Distributed actors is essentially server side concurrency stuff. And it sounds a lot like what you're trying to do. But yeah I haven't jumped into it. I just wanted to mention it.

[00:25:29] Leo Dion (host): Because yeah, but web sockets are great. Yeah. They work, they're really easy to get going. I'm totally a

[00:25:35] Martin Lasek (guest): Yeah. Yeah. And I'm also go ahead.

[00:25:38] Leo Dion (host): There, I was just gonna say, there's like good web like support for it. It's not like some weird technology that you're not gonna find if you're gonna do anything on a webpage.

[00:25:46] Leo Dion (host): There's plenty of jss, no JSS libraries to get started with that as

[00:25:50] Martin Lasek (guest): Yeah, anything. Any, yeah, you'll find it in any language, I'm sure.

[00:25:54] Leo Dion (host): Yeah.

[00:25:55] Martin Lasek (guest): Oh yeah. Yeah. I would love to demystify web. So quiz. 'cause that's, I remember when you start off as a developer, there's always these milestones where you feel like, oh, I'm not independent yet. I cannot just build anything I want.

[00:26:06] Martin Lasek (guest): When you start off building websites or whatnot, or apps, if you will, I. Then you're always limited by the skillset you have, and at the beginning you don't even know how to authenticate stuff or build sign up or registration. And that's one of the, yeah, and that's like intimidating at first.

[00:26:20] Martin Lasek (guest): And then when once you go over this, then you feel like, man, this is it's a new milestone now I can build even more stuff. Put putting things behind authentication. And I think web soccer is one of those things. Where you, it is not that hard, but it's like, it can be intimidating 'cause you just don't know how to use it and.

[00:26:37] Leo Dion (host): I love what you're doing though too with your stream where you're taking two fairly, and this is my, this is the same with why I enjoy doing hard twitch. It's two strange technologies you're putting together. Like you're doing game development and web sockets and you're like merging them together.

[00:26:54] Leo Dion (host): And I love that. Like with me it's like health kit Swift UI and web sockets and technologies you wouldn't think would go together and be like, I, those are the projects I love to do because nobody's gonna do that. And it really, it's difficult, but it really helps you both understand both technologies.

[00:27:12] Leo Dion (host): Like you're learning two new technologies at the same time. Sprite kid and web sockets and Vapor that's awesome.

[00:27:18] Martin Lasek (guest): totally. Yep. It's, you're right, it's difficult, but at the same time, it's only there's two differences of difficulties. One is where it's just like sweat, oh, building a wall is difficult because it's just heavy to do like stones lifting, but it's not like. It's not oh, solving a formula that you have no idea how to solve, because that's difficult too.

[00:27:37] Martin Lasek (guest): But I can't, I'm like, I'm too stupid, whatnot. So web suck is like the first thing I would say. It's like building a wall is just it can be difficult, but Yeah. You're chipping away and you everybody can do it.

[00:27:50] Leo Dion (host): It's steep, but it's not long. Maybe that's a good way to put it. It's like it's a steep hill, but it isn't like you have to do it. Once you get over the height, it's not too bad, but it's not like a marathon per se. Yeah.

[00:28:02] Martin Lasek (guest): Oh, totally.

[00:28:03] Leo Dion (host): I dunno, maybe that analogy works. We'll see. What was like the biggest challenge or what has been the biggest challenge?

[00:28:08] Leo Dion (host): WebU building Pixel. Pixel. Pixel blitz. Did I say that right?

[00:28:13] Martin Lasek (guest): yeah. Maybe I should think of renaming it if it's,

[00:28:17] Leo Dion (host): it's awesome.

[00:28:18] Martin Lasek (guest): The biggest challenge in building pixel blitz was let me see, getting well, web sockets getting the players synced, I guess just the part of the web sockets to get the players synced. 'cause on the device you want to think about you have you as a player and then how do you efficiently add enemies and update enemies and.

[00:28:41] Martin Lasek (guest): And I just introduced a dictionary where I can instantly access all the enemies given through an id and then update their position. I think, yeah, really just, I don't know. There was not

[00:28:53] Leo Dion (host): Just so the game state is totally stored on the server, right? More or less.

[00:28:59] Martin Lasek (guest): so there is no game state as of right now. Right now it's just. One device sends information to all other devices about itself, and all the other devices are updating this one enemy based on the information received. So that's all

[00:29:16] Leo Dion (host): conflicts at all?

[00:29:18] Martin Lasek (guest): No, because there's no one else controlling this enemy.

[00:29:20] Martin Lasek (guest): What I also do is, okay, yeah. Like this could be a conflict. For example, what if two, what if you and I shoot. And he dies on your device because of your bullet. But my bullet arrives at your device like a millisecond later, right? Because there is a delay by nature and I'm actually killing him on my device first.

[00:29:39] Martin Lasek (guest): And your bullet is one milli millisecond later. So what I did is just whoever, like you and I are sending this information to the backend and whoever was first to send this data is the one who actually killed it. So you know what I mean? This is like this, like small things that I just forgive myself to it still works.

[00:29:56] Martin Lasek (guest): It's fine. Let's just move on. You can tackle this problem at a later point if you want to, but that's

[00:30:01] Leo Dion (host): there's like a timestamp on events that would give you the ability to declare, which is ear

[00:30:06] Martin Lasek (guest): I. Basic, no, because if there were, then you could decide which one was shot first. But it's basically just oh, server received from you. He was shot and then, okay, he's dead now. Sending it further to Eman he's dead. And then my bullet will never, reach him because he's already dead.

[00:30:22] Martin Lasek (guest): Yeah. So I'm avoiding challenges, if you will,

[00:30:26] Leo Dion (host): Yeah. And that makes sense.

[00:30:28] What's an MVP
---

[00:30:28] Leo Dion (host): Okay. So that's a great segue to our next part of our talk MVPs. So is this a, is this Pixel blitz? Would you call it an MVP?

[00:30:37] Martin Lasek (guest): not anymore, to be honest. It is not MVPM anymore. I

[00:30:42] Leo Dion (host): more like a research project, right?

[00:30:45] Martin Lasek (guest): yeah, and I still try to keep it hard as MVP as possible.

[00:30:50] Leo Dion (host): Okay.

[00:30:51] Martin Lasek (guest): Okay. But there are certain things that I just gave in implementing that didn't need to be in place for it to work. And for me, MVP basically just means you have the idea and how much can you strip away to still make this idea work before it breaks.

[00:31:09] Martin Lasek (guest): If the idea is okay, multiple players on a field shooting one another, then you don't need a name label on top. You don't need items to be picked up. You know what I mean? And you don't really need the player to look in all directions. You can just have the player always facing down.

[00:31:23] Martin Lasek (guest): So you see this player and he can shoot in all directions, and I can just release this game as is and say, okay, you know what, everybody can, Andrew this field, a hundred players might be a little bit crowded, but and then this, it works. I guess maybe for MVP you would limit it to five because it also breaks the game.

[00:31:39] Martin Lasek (guest): And that's the. But that's it. I should have already released the game.

[00:31:44] Leo Dion (host): Are you actually gonna release it on the app store?

[00:31:47] Martin Lasek (guest): I am. I am.

[00:31:48] Leo Dion (host): That's awesome. So had shared a, an image or a comic, I don't know if you saw it in our notes, but yeah. So that was always. I thought it was really funny and apt because I've definitely built MVPs that are more like the top as opposed to the bottom.

[00:32:05] Leo Dion (host): We'll share it in our show notes as well, but the idea of building a car is like building the first wheel as opposed to like building something usable.

[00:32:14] Martin Lasek (guest): Yeah.

[00:32:14] Leo Dion (host): I guess I was gonna ask have you ever been in situations where you accidentally have built just a wheel as opposed to a full car?

[00:32:22] Leo Dion (host): 'cause I know my, my issue with MVP is sometimes I used to be more like the top, where it's okay, just try to prove that it works, but then you don't build out the full idea and then but you should be building out a full app and then like on top of it as you get more traction.

[00:32:39] Martin Lasek (guest): I have difficulties to understand how for me, MVP means this is a stand, a standalone product. You can now present to someone and have it, have this person use it. I have difficulty to understand how someone could. Declare something as an MVP for someone to use it. If you cannot use it yet, just the wheel, you cannot use it.

[00:32:57] Martin Lasek (guest): Unless they, I don't, I don't know unless they're building more than MVP,

[00:33:02] Leo Dion (host): I think it could be a case where it's it's oh, we just have a signup form. For something to see if you're interested in it, as opposed to a product where they can touch it and share it and

[00:33:13] Martin Lasek (guest): I see. So it's like partially working, but it doesn't come full circle.

[00:33:18] Leo Dion (host): Yeah. Maybe that might be a case or yeah, I don't know. I

[00:33:22] Martin Lasek (guest): Yeah. The question is the question like, how to avoid this or

[00:33:27] Leo Dion (host): Why do you

[00:33:27] Martin Lasek (guest): ever been in this?

[00:33:28] Leo Dion (host): Yeah, I think that's part of it. And I also think just what are some common mistakes I guess, that people have when they build an MVP?

[00:33:35] Martin Lasek (guest): Feature creep is one

[00:33:38] Leo Dion (host): think more of that. Okay.

[00:33:40] Martin Lasek (guest): that I see most is feature creep or other. I guess that, and also when people. Yeah, I think that's it because then people also start getting this demotivated and then just, they just don't continue and they just don't release 'cause they think it's not done yet

[00:33:56] Leo Dion (host): All

[00:33:56] Martin Lasek (guest): really it's already working.

[00:33:58] Martin Lasek (guest): There's so many developers who have app ideas and never wor like they work 10 years in the industry, but never published an app. And then as much there is developers who have started an app and never finished it. Because 'cause of feature creep when it could already, be on the app store, you're getting feedback and Yeah.

[00:34:16] Leo Dion (host): How can you decide whether some feature some feature. It just isn't worth adding to that MVP and how to decide if it's, how do you decide if it's essential for an MVP or not?

[00:34:29] Martin Lasek (guest): If the idea works or not. It's basically for me the dividing part, like how to describe it. I think it's. To me it feels if your idea doesn't work in its most rudimentary way, then that's not done yet. For example, for WISH kit the most simplest implementation of it is basically just allow users to submit a feature request and then collect that as a list and allow them also to vote on.

[00:34:54] Martin Lasek (guest): Feature requests submitted by others. And that's it. That's, this is like very rudimentary. And it could just be the title, or just like a text box. That's it. And it works. And this is how I released it as well, with the dashboard. On a dashboard, you could only view the feature requests and you could not do anything beyond that really.

[00:35:13] Martin Lasek (guest): You couldn't, interact with it much. You could delete it. Or you couldn't change like a state or something. So okay, you can see it, you can delete it. So there's some management to it else. It's not gonna really work if you have an infinite amount of feature requests and there's like gibberish in between.

[00:35:27] Martin Lasek (guest): And then that's the MVP. And then it is working, it's come, it's basically like it's coming full circle. Like it's closing the circle of how your product is supposed to use to be used. And then you can put glitter on every piece of it, okay.

[00:35:41] Leo Dion (host): Yeah. I think it's a really good description. I like that a lot. Is there anything else you wanna talk about before we close out? Do we miss anything?

[00:35:49] Martin Lasek (guest): Let's see.

[00:35:50] Martin Lasek (guest): I think you covered all questions that were asked online. Yeah. I think we're good.

[00:35:56] Leo Dion (host): One other question that I had, I didn't put on here, but I'm currently researching a way for people to add new fe like request new features in my app. So you have Wish Kit. You wanna explain what Wish Kit is? 'cause that's one of the products I'm looking at right now.

[00:36:13] Martin Lasek (guest): Oh, totally. Yeah. So Wish Kit is an SDK that allows you to integrate a feature request or feedback board into your iOS or Macs app with just one line of code. So that you can basically know what next feature to build instead of guessing. 'cause we always have tons of feature ideas that we'd have in our minds, but we don't know which of those feature quests features that we have in mind.

[00:36:38] Martin Lasek (guest): We'll convert users or users are asking for. So let them tell you, you, you cannot think of all features that your apps are missing either. So let them tell you basically. You can integrate wish good. It's the, it's free to sign up and integrate and then they will start submitting feature requests and vote on others.

[00:37:00] Martin Lasek (guest): And the good thing is based on the voting system, like on Reddit, the top most voted feature, okay, my shiny feature only has 10 votes, but this one has 50, so I should rather implement that one right and stop wasting my time implementing something that's not that desired. 'cause ultimately you want to improve your app and.

[00:37:19] Martin Lasek (guest): And the market tells you what's needed for the app to be better and so yeah, which could helps with that. That's the goal yeah.

[00:37:25] Leo Dion (host): yeah, that's it's definitely one of my top candidates right now for what I'm looking for. So I highly recommend people check it out. And then again, what was your talk for New York Swifty? I.

[00:37:36] Martin Lasek (guest): Yeah, talk for New York. Swifty is I think the title says something like don't build a multiplayer game. And

[00:37:44] Leo Dion (host): And the don't is the knot is crossed off. I remember now. Yeah.

[00:37:47] Martin Lasek (guest): Yeah, you have the NT is like in parentheses. So implying do and yeah. I'm gonna introduce in a very rudimentary way how quickly you can actually implement a working. Prototype of multiplayer game with spike kit and web circuits for the backend, and hopefully so much that you want to build it.

[00:38:04] Martin Lasek (guest): The same night you heard that talk.

[00:38:06] Leo Dion (host): Martin, thank you so much for coming on. It was great. Where can people find you online?

[00:38:11] Martin Lasek (guest): Twitter, I'm very active on Twitter. My name is Martin Lasik, just like in one word. And this handle is used across all platforms. Luckily, Instagram YouTube, and Twitch. I'm active there as well.

[00:38:23] Leo Dion (host): Yeah, and I'll put links in the show notes as well to your two YouTube channel and Twitter and all that fun stuff. If you want to see Martin and I in New York in April we have a discount code available. Leo, use the discount code Leo to get 10% off your ticket to New York, 50, so definitely check that out as well.

[00:38:42] Leo Dion (host): Thank you Martin.

[00:38:43] Martin Lasek (guest): Yeah. Thank you so much, Lee, for having me. It was it was a pleasure talking to you.

[00:38:48] Leo Dion (host): We'll definitely do this again. If we geek out about Web Sock, it's in New York. I'm excited.

[00:38:52] Martin Lasek (guest): Cool. Me too.

[00:38:54] Leo Dion (host): People can find me on Twitter at Leo g Dion, bastard on Leo G. Dion at c Im, my company is Bright Digit. If you're listening to this on a podcast player, please poster review and. Subscribe if you're watching this on YouTube as well.

[00:39:10] Leo Dion (host): Thank you so much everyone. Happy New Year, and I look forward to talking to you again. Bye everyone.

Creators and Guests

Leo Dion
Host
Leo Dion
Swift developer for Apple devices and more; Founder of BrightDigit; husband and father of 6 adorable kids
Martin Lasek 
Guest
Martin Lasek 
Building https://t.co/VBbGQ43x0G - collect user feedback for your iOS and macOS app ✨

Join our newsletter

checkmark Got it. You're on the list!
image of podcast supporter
Join 1 supporters
Mastodon © Bright Digit, LLC 2018