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.
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.
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.
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.
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.
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.
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?
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.
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.
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.
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.
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.
Martin Lasek (guest): Yeah.
Thanks for having me.
Leo Dion (host): Before we begin, I'll let you go ahead and introduce yourself.
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.
Leo Dion (host): At Alaska?
Do I might, I assume they have a separate team for backend stuff.
Martin Lasek (guest): That's true.
Yeah.
They have a separate team for backend.
I'm only front end and at Alaska.
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?
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.
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.
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.
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.
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.
Leo Dion (host): What who are some folks that you would recommend following on
Twitter who are building in public?
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.
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.
'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.
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.
What are some habits or tips that you might have to help with that?
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.
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.
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.
Says who?
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.
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.
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.
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.
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.
Leo Dion (host): What do you think makes that more viral than, say
other projects that you've done?
Martin Lasek (guest): Yeah, it's a good point.
It's hard to say what makes something viral really.
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.
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.
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.
Martin Lasek (guest): SS
Leo Dion (host): more challenging.
Martin Lasek (guest): boring.
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?
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.
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?
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.
That's my, yeah, that's my thinking.
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?
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.
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.
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.
Martin Lasek (guest): I think that's a great balance.
You open source is still while keeping, hopefully the proprietary stuff
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.
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.
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.
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.
But, yeah.
You've been mostly working on this multiplayer game, and that's been a
whole built in public stream, right?
Martin Lasek (guest): As well.
Yes.
Yeah.
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?
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.
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.
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.
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.
ROI you have one single input and I get a return on of investment
on YouTube, Twitter, Twitch.
Leo Dion (host): Are you just using like restream to do that?
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,
Leo Dion (host): That's
Martin Lasek (guest): but,
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?
Martin Lasek (guest): There is a name for it.
Yeah, I called it Pixel Blitz.
Leo Dion (host): Okay, so how does work?
What's the game?
I'm curious.
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.
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.
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.
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.
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.
Leo Dion (host): Okay.
Okay.
So explain some of the technology you're using behind the scenes.
Martin Lasek (guest): Yeah, totally.
So for iOS, I'm using SpriteKit.
Leo Dion (host): Okay.
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.
Leo Dion (host): Okay.
Okay.
So how's, which are they, are, is this their first time dealing
with spray kit and vapor?
Martin Lasek (guest): As a combination, yes, but frontend Swift and Backend
SWIFT is has been since 2016.
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.
Martin Lasek (guest): Not really.
Not really.
That's also like I would say the first time.
Leo Dion (host): Okay.
What did you, how did you find it?
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.
Like chat.
GPT really helps you there with anything and you Yeah.
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
Martin Lasek (guest): I love it.
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
Martin Lasek (guest): Yeah.
Yep.
That's basically what it is right now.
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?
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.
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.
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.
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.
Yeah,
Martin Lasek (guest): and
Leo Dion (host): go ahead.
Martin Lasek (guest): build it as a maybe also as a widget
for Twitch or something.
It was meant for streaming.
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
Martin Lasek (guest): Yeah.
And how successful has it been?
Because that's a cool idea.
Leo Dion (host): Yeah, it's really useful.
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.
'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.
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.
Leo Dion (host): Yes.
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.
Martin Lasek (guest): Yeah.
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.
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.
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
Leo Dion (host): no, I don't, no I don't, honestly.
Yeah.
That's totally fair.
Yeah.
Whatever I could do.
Yeah, go ahead.
Martin Lasek (guest): for the fun of it.
You want to do it for the fun of it,
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?
Martin Lasek (guest): on.
Heroku.
Leo Dion (host): Yep.
Oh, okay.
So same here.
Yeah.
Yeah, I don't know.
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.
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
Leo Dion (host): put the build pack and you go,
Martin Lasek (guest): Yeah.
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.
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.
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.
Martin Lasek (guest): Is it like a,
Leo Dion (host): pretty well.
But then you don't you don't need a server, so I don't
Martin Lasek (guest): Oh, I see.
Leo Dion (host): yeah,
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.
It's just so much.
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?
Martin Lasek (guest): Man.
No, but it's very like at the top of the list.
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
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.
Because yeah, but web sockets are great.
Yeah.
They work, they're really easy to get going.
I'm totally a
Martin Lasek (guest): Yeah.
Yeah.
And I'm also go ahead.
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.
There's plenty of jss, no JSS libraries to get started with that as
Martin Lasek (guest): Yeah, anything.
Any, yeah, you'll find it in any language, I'm sure.
Leo Dion (host): Yeah.
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.
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.
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.
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.
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.
Like you're learning two new technologies at the same time.
Sprite kid and web sockets and Vapor that's awesome.
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.
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.
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.
Martin Lasek (guest): Oh, totally.
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?
WebU building Pixel.
Pixel.
Pixel blitz.
Did I say that right?
Martin Lasek (guest): yeah.
Maybe I should think of renaming it if it's,
Leo Dion (host): it's awesome.
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.
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
Leo Dion (host): Just so the game state is totally stored on the server, right?
More or less.
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
Leo Dion (host): conflicts at all?
Martin Lasek (guest): No, because there's no one else
controlling this enemy.
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.
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.
It's fine.
Let's just move on.
You can tackle this problem at a later point if you want to, but that's
Leo Dion (host): there's like a timestamp on events that would give you
the ability to declare, which is ear
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.
Yeah.
So I'm avoiding challenges, if you will,
Leo Dion (host): Yeah.
And that makes sense.
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?
Martin Lasek (guest): not anymore, to be honest.
It is not MVPM anymore.
I
Leo Dion (host): more like a research project, right?
Martin Lasek (guest): yeah, and I still try to keep it hard as MVP as possible.
Leo Dion (host): Okay.
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.
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.
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.
And that's the.
But that's it.
I should have already released the game.
Leo Dion (host): Are you actually gonna release it on the app store?
Martin Lasek (guest): I am.
I am.
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.
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.
Martin Lasek (guest): Yeah.
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?
'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.
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.
Unless they, I don't, I don't know unless they're building more than MVP,
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
Martin Lasek (guest): I see.
So it's like partially working, but it doesn't come full circle.
Leo Dion (host): Yeah.
Maybe that might be a case or yeah, I don't know.
I
Martin Lasek (guest): Yeah.
The question is the question like, how to avoid this or
Leo Dion (host): Why do you
Martin Lasek (guest): ever been in this?
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?
Martin Lasek (guest): Feature creep is one
Leo Dion (host): think more of that.
Okay.
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
Leo Dion (host): All
Martin Lasek (guest): really it's already working.
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.
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?
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.
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.
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.
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.
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?
Martin Lasek (guest): Let's see.
I think you covered all questions that were asked online.
Yeah.
I think we're good.
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.
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.
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.
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.
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.
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.
Martin Lasek (guest): Yeah, talk for New York.
Swifty is I think the title says something like don't
build a multiplayer game.
And
Leo Dion (host): And the don't is the knot is crossed off.
I remember now.
Yeah.
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.
The same night you heard that talk.
Leo Dion (host): Martin, thank you so much for coming on.
It was great.
Where can people find you online?
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.
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.
Thank you Martin.
Martin Lasek (guest): Yeah.
Thank you so much, Lee, for having me.
It was it was a pleasure talking to you.
Leo Dion (host): We'll definitely do this again.
If we geek out about Web Sock, it's in New York.
I'm excited.
Martin Lasek (guest): Cool.
Me too.
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.
Thank you so much everyone.
Happy New Year, and I look forward to talking to you again.
Bye everyone.