import SocialEmbed from "../../../../components/SocialEmbed.astro";
# Flutter Desktop/Web and VR
<SocialEmbed platform="youtube" id="nyxBRXjONoo" />
## Description
Looking into the future of Flutter development, our experiments with VR, our thoughts on Code Generation and passion about new tech.
Norbert Kozsir - @norbertkozsir
https://twitter.com/norbertkozsir
https://github.com/norbert515
Rody Davis - @rodydavis
https://twitter.com/rodydavis
https://github.com/rodydavis
https://youtube.com/rodydavis
https://rodydavis.com
Our podcast player:
https://rodydavis.github.io/creative_engineering/
Follow on Twitter:
https://twitter.com/CreativeEngShow
## Transcript
**0:00** · welcome to creative engineering this is our first podcast on all things creative and open source projects what we're working on and what we're excited about with me today I have my co-host sbert how about you tell us a little bit about yourself thanks Ro um my name is sbert um I'm studying computer science in Germany been doing FL for about 2 years now and always been interested in pushing the technology thinking about our ways to do it and just trying things out right now unfortunately um having a lot of work so I'll right now in a phase
**0:33** · of trying to get back into making stuff happen and doing cool stuff how about you roie yeah so I have uh been working with f for quite a while now um before this I had a non-traditional background I was a musician worked as a audio engineer for a number of years system administrator and just one day decided I wanted to explore creative passion again and that led me to software development specifically development uh where I built my first app that got me my first
**1:04** · job and it was um really challenging but at the same time I had this unrelenting passion for creating things because I realized that app development was just this blank canvas um and was super excited about it so what uh Got You Started With flutter um it's quite a fun
**1:22** · story well it's not that fun to be honest but basic was a sheer accident like I was sitting in my computer one day and we just scrolling YouTube as you do and I saw this video I think was from the dark con um and they talked about something called Flor and never heard about it um I actually haven't watched the video but like the next day I came
**1:45** · back and was like oh that sounded interesting let's let's just take a look uh I watched and was like super interested back at that point I was working or just as a hobby project on an app in Android um like I've been doing Android before Flor and basically the
**2:03** · app was a book collection app like at that time I was reading a lot I thought how cool would it be if you could um some somehow gamify reading books collect those books and just have your virtual um bookshelf and so I thought to myself okay flourish sounds pretty interesting um could I try this out and
**2:25** · see how it goes in Flor um so I downloaded the SDK um I installed it I never heard about Dart before um but was actually very easy to get into like Dart is very similar to Java in cotland which I've been doing before and I've literally coded the app from from first
**2:45** · hearing about Flur to having a very basic MVP like it was very basic they had a search bar and you could Quarry an API um but I had to done in about one or two days and it felt great um and soon
**3:00** · after I actually like back when I was doing Android I always thought about making a Blog and I was like what should I talk about so with Flor I decided okay I made this little La why not um make a Blog about it and that was my very first blog post and from there on it just more blog post most more stuff um yeah wow
**3:22** · that's awesome yeah I feel like a lot of people um have a similar experience with flutter where Dart was not really the limiting factor and also I feel like a lot of people give Dart a bad name because they think of Dart one and it's by far not the same Dart um for me I had
**3:38** · a pretty similar experience because I was doing a lot of c.net development um as well as I also did Android but before Android my experience was actually in Swift and um Objective C building iOS apps but then I came across uh this platform called flutter when I was doing looking for a crossplatform solution I had looked into I actually created examples in Native script zamarin react
**4:04** · native and then this was just when flutter beta 2 launched and I was like sure I'll give it a try and then I was blown away with how stable quote unquote uh the Beta release was of this framework and how it was so much more mature than um a lot of these other Frameworks out there that had been out for so much longer and I love the fact that you could use this SDK and update
**4:28** · to you know version and not have to break everything yes there are going to be things that didn't work but it was like you know changing usually a variable here and there and um I was just really happy with the developer experience side of flutter yes also you briefly mentioned Dart not being a limited factor um to be honest the more
**4:49** · I work with dart and the more I look at our languages I feel like Dart right now to be honest for mobile development is one of of the best languages in my opinion because it combines so many powerful things like okay just in time completion ahead of time compilation which is like one of the big things but even small language features like always
**5:13** · adding the the spread operator the there's so many other things which just make Dart a very expressive and a very fast to write in language like I rarely have times where I sit down have a problem I think okay Dart is actually holding me back in doing this which I had in Java like if I remember back just having to Define new classes to have a callback having all those things before the L lambdas came in uh I think it was Java 8 wasn't it yeah like d yeah yeah Dart feels like a
**5:48** · good language and it somehow combines the power of having those untyped JavaScript things and just being fast but also having the the Java and the strongly typed things to make things productive and bug free and also um yeah
**6:06** · you touched on the the hot reload that to me was just something I was so excited about you know like when I was working with Firebase on iOS I mean you know you're talking about like eight minute build time sometimes and it's like you know like oh I'm gonna go adjust something in my storyboard oh let me move it by half a pixel oh still wrong let me go compile again eight minutes you know and just this like weird infinite Loop that you get in um and for me I don't know if it was the same for you but I was always afraid of UI development before flutter I had done
**6:38** · a lot of UI development but I just thought it was like a bad UI designer but what I realized is I didn't have a platform in which I was able to create um and express myself while experimenting and not being afraid to try something with flutter like I could prototype four or five different screen uis in the course of like 15 minutes that would take me me you know easily a couple days to do an iOS um they're just
**7:03** · and also at least with storyboards and declarative UI you put so much into the UI that there's almost like this um you know this sunk cost fallacy where you feel like you've put so much work into it and you just don't want to break it you just want to make sure it stays working or or you do the inverse where you just find components and be like oh this is the stock components they look good so might as well use them I was guilty of that because it's just like well I can use the table view here I can use the navig component here I can use you know um
**7:34** · these you know just all the default stuff and I felt like that really limited my UI because you know it was only ever as good as the OS was going to make it yes and also like just not being afraid of doing something on your own like an Android and stuff if you see a designer try out something new and just
**7:53** · pushing the boundar is was like oh my God that's so hard like I have to read so much documentation and figure out how to operating systems handling this and flor's like okay so we could use a hero widget we could also look into how the hero widget works and just build something from there like you have all the expressivity like you can build so many custom things um without much of a hassle like like most of the things that are done are super easy to build the only
**8:23** · thing I'm a bit afraid of in Flor are slivers because slivers are always super complex um and they're they're sometimes weird but even like they they also have a lot of components which you can just use out of the box and at the end you can make something work but other than that like all the things are just so easy to use if you want to make some custom painting or have some sort of graphic it's like super easy to do that with flutter well what's nice about flutter to is you can
**8:53** · take you know an existing you know render box for example you could write your own layout strategy if you want wanted to um you could completely um you know follow CSS grid um just with pure You' have to implement all the the layout Behavior but you know flutter was the first framework that allows you to truly you know set your own behavior you
**9:14** · can have it as abstract or as down to low level as you want you could go straight to the canvas and just paint everything custom or you could just rely on pre-built widgets like containers and all this other stuff and you can still get a really cool performant UI um yeah there's some things you got to watch out for um that you need to be careful of but overall I mean I feel like you just really can make expressive UI fast yes and I mean combining that with hot Tre like it sounds dumb but just having that hot reload makes it so much more fun and
**9:46** · like you're more happy to develop with hot tro like I feel like that it's the most frustrating thing ever if you have a um bug which might not be that big of a bug but you have to try a few things out like maybe you have a wrong path and you have to see where it's a relative one or whatever and build times are high
**10:05** · like it's so frustrating to change something little and then wait for literally 5 minutes until you can see okay it didn't work let's try something different and it just eats up so much time but also energy like you're not actually working but it feels like hard work compared to just making UI hot reloading and just going through that blazingly fast yeah and also you know
**10:31** · you you have this hot reload cycle but it also keeps the state of the app so you can be you know 20 screens deep and you're just updating that change which is awesome um and speaking of hot reload being fast uh what your experience been like with working with floter on the desktop um as a prototyping tool yes so
**10:51** · that's actually one thing if somebody ask for my secret tip and fur is if you have an app which doesn't use too many many plugins which are maybe not implemented desktop go give FL desktop a try and see how it may improve development like it has so many benefits like for example if you have an application which doesn't use any plugins so everything works for a desktop first off resources like my
**11:17** · Hardware isn't the best 8 GB of RAM isn't that fun to use intell J with an Android emulator um so instead of using a real device just booting up Flor deskt top uh running it in there is such an improvement also like just being able to resize the window and see different configurations is so great um how's your
**11:41** · experiences yeah I I have the same um you know I love being able to prototype UI I find layout bugs in just a matter of seconds on desktop where that takes me you know months to figure out oh I built my app but let me test it on the iPhone 5 oh everything's broken so it's like you know it's like uh with desktop um I don't know if a lot of people know this but you know you can you can test web UI on desktop because you can test
**12:09** · all your responsiveness and it'll be the same UI when you launch it on the web so um I don't think web supports hot reload at the time of the recording this episode but um yeah it's been super nice to be able to do that and also you'll be surprised at how many plugins do work I mean Firebase authentication Cloud functions and a bunch of other Google signning even I believe just recently got support so all these things you can actually do on the desktop already um and yeah and it's not too bad to do API calls anyway so it it works on Mac most
**12:41** · like I think all those cool things that work work on Mac so um which doesn't help me too much to be honest for me it helps yeah it's true like the biggest thing right now with our desktop is that it doesn't support Firebase like that's pretty annoying because I had and have a few projects with Firebase which I'd love to use for a desktop to develop and prototype with but I just can't because most of the app relies on on Firebase and I mean I could
**13:11** · Implement some sort of mock of Firebase on desktop but that wouldn't like that would be too much work for um yeah that yeah yeah I mean there are some there's a cool package out there which we can always link to in the description which is called fire Dart which is a dart native uh compatible implementation of Firebase it's all in pure Dart and it basically wraps the grpc kind of SDK um what's nice about this is like I
**13:39** · have built a couple admin utilities so I can like create Crown jobs that like update fir store documents things that aren't necessarily a good fit for functions but are great fit for like you know these onetime content updating um operations so what's neat about that is that actually already does work on desktop and doesn't depend on anything else you just have to pass in you know the the uh you know the the secrets to make it work yep um so what um you know one of
**14:11** · one part of this podcast is we we love to explore all kind of things that are you know flutter is one thing that we are both incredibly excited about but we also are really involved in a lot of other projects and excited about General Technologies and um other projects and apis that we're familiar with so um what are some experimental projects that you're working on that uh have gotten you excited over the you know past couple months yes so as of right now I'm
**14:42** · prepacked with work so my free time for experimental projects have has sunk quite a lot which I hope uh will come back soon um but what I'm always very interested in like one thing that stands out to me and I think um I I'm not the only one who likes um building de developer tools like we as developers use stuff and see what's what's slow
**15:08** · what what could be better and just building stuff which makes your own workflow better is so fun and I was always thinking about um how could you make for instance in this case FL development faster and um yeah just just
**15:25** · fast like I was always thought like if you have an app idea and you know what it's going to be like you know you you will have to log in you have account settings all that stuff why does it still take you a couple of weeks or even months to build that app why can't you just sit down um maybe take some designs which you bought maybe you have a designer and just finish the app in a weekend um so one big project which I've been working a lot on last year mostly
**15:54** · um is the widget maker which gun has gone through so many iterations and things um project as of right now is on hold for just a bit um working on something else um which is pretty similar but um yeah just just making um
**16:14** · developer tools is very interesting right now how about you roie so real quick what what is the widget maker for those that are curious oh that's that's a very good point I didn't mention that um so the widget maker the original idea was um a lot of languages have or a lot of UI Frameworks have those uh dragon drop Builders which basically allows you to drag uh in your elements composite them and then have a finished running app um the in the difference about the
**16:46** · widget maker and the original concept is um those R um UI bus rely on a very static representation of UI think of XML in Android or HTM L and CSS on web but Flur is different thur has this code which is very in a sense organic is very chaotic and it can be very very hard to
**17:12** · put into a structural form like yeah in in some language like HTML you have like one or two or three ways to do something in Dart and Flur you have infinite ways like you don't have to return a widget you can return a function invocation which returns a widget which is totally the same yeah but it's still different
**17:34** · and people might be doing that because they have some sort of clever ideas how to abstract something away and the problem is you don't want to limit people in their creativeness like okay you cannot do this because you're using this but um it's also very hard to work
**17:51** · with such code and that's one thing I've always been trying to work around with um but yeah that's the widget maker nutshell wow that's awesome yeah I have I know I remember first seeing it on Twitter and then being able to use it and I thought it was just so cool to be able to like prototype a screen or even just a widget um because for me I have
**18:16** · this dream that I I hopefully will realize someday is um you know be able to build a flutter project on my iPad you know be able to Proto prototype it and do everything because I feel like when you're in the prototyping phase the design phase that should you don't need a compiler for that you don't need that yet uh but once you get to that point you want to have a you know robust ready too project so I don't know I'm still exploring it with um my flutter editor that I've been building but you know it's um it's it's a cool concept because
**18:50** · flutter I love that it doesn't limit you in that way like you it's not like on Android where you just have XML like you said or you know you can you can really it's a declarative way but it's also it's whatever you decide is the best way to generate now that means that there's some best practices like for example if you're using a function to return a widget sometimes it's not always recommended but um one of the member in
**19:17** · the community named Remy he's made a awesome package called functional widget which you can actually annotate those functions and it generates the actual implementation under the hood um speaking of which that brings me to one of my kind of um things that I'm exploring pretty heavily is um code generation and flutter because uh flutter has been the first tool that I've really used to do code generation hardcore and the fact that you can just like you know with a couple lines of code generate you know thousands of lines of everything you possibly need um
**19:50** · is super cool um one thing one use case for this that people are unaware is like you can very easily take a data class and and and dart for example annotate a couple fields and then have Json serialization um just out of the box you can uh there's a package called more m o r um which is super cool where you can
**20:12** · annotate tables and uh generate a whole SQL light database just with code generation and not have to write SQL statements themselves so um there's a lot of places in which you know flutter and dart in general allows you to to
**20:28** · write code that writes more code and and I think that's pretty cool um some experimental projects I'm working on are um I've been exploring rust uh with flutter uh I think rust is an awesome language been going through the Rust book and I think it's incredible just uh
**20:46** · how well it you know the first of all how well the book reads but how cool it is to be able to write like an audio library and then have it compile to wherever you need um so I've been exploring creating like WM R Wy wrappers really um using wer and then calling into that with ffi ffi is a really cool
**21:06** · technology in Dart which allows you to call into any existing C and C++ code or library and yeah I think I think it's awesome have you have you worked with ffi yet yes I actually have I've also explored using rust on um FL especially for the desktop um one thing that's super interesting about this fi rust
**21:26** · thing is that those libraries you build if you use uh a library which is implemented on all operating systems or just has some functionality which works every there it can work on every platform like you can compile to all desktop platforms but also mobile so as you said you can have a an audio plugin
**21:46** · which just works in all platforms and you don't have to implement the other side like the native side multiple times you can just have one implementation have one repper for that and just have it work on all platforms which is super powerful the biggest thing I've seen with that though is um a lot of the ones that work on all the desktop platforms usually don't work on web and the ones that work on web don't usually work on desktop at least for the audio stuff has that been the same for you haven't been exploring web with uh ffi too much to be honest I mean uh rust and web okay so I
**22:17** · haven't uh done anything with Rus and web yet um can you sh a bit about your experiences because that's still very new to me the whole um web assembly and rust on the web so the cool thing about web assembly if people aren't aware it's a it's a nice binary interchange format that allows you to easily load these modules um and run and execute code in
**22:40** · the browser not in JavaScript but directly in the binary format so um one cool thing about that is Russ can compile to web assembly as a Target um on on mobile and desktop you can use ffi ffi doesn't exist on flutter web so to
**22:57** · get around that you can actually use the web assembly Hooks and flutter um which are part of the built-in Dom um you know just part of the regular HTML Library you can call into web assembly and it'll call a code I have some examples on GitHub that that kind of dive into this but it's really cool because you can use the same rust code um if it's a generic
**23:19** · enough code like a you know like kind of um like a math library or something like that the cool part is Russ will compile to all the targets pretty easily um if you're dealing with things that deal with like file AO and stuff like that then it's only going to support a limited number of targets but what's cool about that is um you know you can like for the counter example in flutter I was able to write the counter logic in Rust compile that
**23:47** · to web assembly and then use wer to run web assembly in flutter on all the platforms so since W wzy if you're unaware is the wrapper around web assembly that allows you to run web assembly on desktop mobile and web on
**24:04** · web you don't have to have it wrapped since you can just call directly into it um but that's really cool I think that's a an exciting feature for um sharable code because what's neat about that is like think about like all the packages we create and what if we wanted to create a native plugin and instead of doing it in Dart or if Dart supports web assembly we could write the the native code have it compiled to web assembly and then the plugin would just be the wrapper around that web assembly module so instead of having to write you know
**24:34** · C++ and Linux or sorry C++ and Swift and Objective C and C or we could also just write a plug-in that calls the ffi handles and stuff like that so I think that's a a nice interesting wave of the future of plug-in development too yes definitely one thing I also wanted to talk about quickly you mention a few things uh before we switch to the native topic um
**25:03** · first of code generation like one thing that I'm always um curious um what people think is so for me code generation is this weird thing it's super powerful and it can do so many amazing things but I don't really like having to generate code to write valid code like for example um Jason parsing
**25:25** · like I first have to write code which doesn't compile on its own because it depends on part files and some things that's are going to be generated later and you have to actively run the generator or start the Watcher which does it all for yourself um and you have the state where
**25:42** · the code is broken until you run this command and it somehow adds more mental complexity for me like you have this things you you cannot touch and I I don't like it too much what is your opinion so so I've taken a different
**25:59** · approach which is like I've been a super huge fan of freezed um because I like anything that's I'm generating with code is almost always an immutable data structure something that's not going to be modified or changed um in fact it won't be changing at runtime and it'll always be whatever I release it with um
**26:20** · so from that standpoint yeah it it is kind of weird sometimes when you're like in this Loop of like make you a change and then you run the generator and see what broke because it may update a lot of different things that don't exist anymore I had that big problem with more for example like I'd update a SQL statement or you know whatever and then all of a sudden you know three different screens have to return a different object so that was kind of interesting
**26:47** · um to deal with but I would say for the most part the benefits of outweigh the cons for me yeah like I still hope like I love coach generation and um it's great because it just adds this new layer of metup programming which exponentially increases the power you have um but yeah I as somehow hope there's going to be some sort of solution which is more which feels more natural and is easier to to use like I I
**27:18** · haven't used code generation just recently but I remember using those Json sterilizers and each time I wanted to use them I had to go for a tutorial because I realiz okay now I have to add this serializer and I have to import this part file andg files and was always a bit complex and I I really hope it's
**27:40** · going to be uh easier at some point well I do know that there there is some work being done on flutter like there is a flutter generate command which does kind of it takes that abstraction instead of generating the code you know right along with part files it generates the code inside the build folder so as a build Target so I don't know if that would be helpful because I mean it is helpful but
**28:05** · I don't know if that's maybe would be easier for you because then it's more of a you have everything you need because you're declaring it um and then it basically generates it the implementation like you're working with an abstract class and it generates the hardcoded class if that makes sense that's interesting yeah because yeah also as you mentioned like where the generative files are like it's always super not confus using um but it's like
**28:29** · all those fils which you don't want to look into and don't want to touch um and you're thinking should I commit this to repository should I have other people generate them themselves and it's always like this a bit of a hassle you know the uh the latest recommendation on the flutter team and the dart laying is that you do check in generated files now when I first started with flutter it was not the case but um they have since changed it to where it is recommended which is
**28:54** · kind of cool so like you know if you're working collaborating on Project like uh have a project called amp store we you know I'll out of you know Simplicity I will go ahead and generate all the files and then if someone needs a change then I can update it but yeah for the most part uh only usually one or two people are generating the new files because in theory you're wanting to generate as little as possible um like you don't you
**29:22** · don't want to just be like you know generate application and then all of your application is gener because it's like uh while they would be great and we wouldn't have jobs that would be uh you know it's it's you know you want to there's this flexibility that you or um this dance that you have to make you know where you know you have this tradeoff of generating code to save you time and generating and writing code to
**29:48** · be flexible and there's this balance that you have to strike and it just really depends on the project for sure yes definitely so um another thing that we both have really gotten excited about is using the Oculus Quest and at flutter interact we were both able to try this I
**30:06** · was able to bring my headset to flutter interact and I just was curious about what was your thoughts about you know trying VR for the first time and what's got you excited about you know just the general scope of VR in general um actually that was my first time trying VR like before that I used to um go to a
**30:26** · So-Cal VR space my city a couple of times um they have those HDC vies um basically for stations you pay for 30 minutes and you can have up to four players and play some games um but the thing that was so that stood out so much to me when you brought a VR headset is how accurate that was compared to the HTC which HTC is perfect and the ocus is
**30:51** · also perfect but at a significantly lower price point and without cables and setup like I remember we were at the Airbnb we had a couple of hours left and we just took the Oculus Quest I I drew
**31:08** · the whole Airbnb on the ground and was able to navigate through that without colliding with any objects and just feeling confident because it didn't lag it didn't have some sort of weird artifacts it just worked and at that point I got so excited because just being free like instead instead of being bound to a computer with cables and stuff you can have this headset take it on wherever you are and have all those
**31:35** · um very interesting immersive experiences yeah um I feel like for me it was I tried it in a Best Buy it was the first time I ever tried VR and it was an Oculus Quest yeah I believe the time and I just remember taking off the demo and being like I cannot leave the store without this because it was just like it had completely changed my mind I had used Google Daydream I had been using Google cardboard since it came out I had been using pretty much any um access
**32:06** · besides using like the rift and you know Oculus uh Oculus Rift and ht5 yeah I um you know I was just I was so fascinated with mobile VR but then the Oculus Quest was the perfect balance I was looking for which was the flexibility of desktop
**32:22** · VR with the mob ability of you know mobile VR and the fact for me was the hand controllers you know being able to like just reach out and I remember playing the SP P space pirates demo and just being like looking at my hand which had a gun in it and being like how is it so detailed I could just look around and I was like it looks like it's right there and your brain is like freaking out and be like and then also there's
**32:47** · this app called you know the plank experience and you could just walk out and I just everything in your mind is like trying to convince you that this thing is reality and it's uh it's incredible the technology and how far it's come I haven't actually tried that one yet like the pl experience a lot of people told me about it um I'll definitely have to try it at some point I remember when I very first tried VR I think it was actually on Gamescom like
**33:13** · quite a couple of years ago when the how was the first headset called uh which was by Facebook uh oh go I think you talking about the same I think it was it was one of the very first ones I think it was
**33:29** · was their main one I'm not quite sure how it was called what but basically it was a sitting experience like uh being at Gamescom just waiting all day to get in and I remember playing this game where you were were in this uh space suit or whatever and you could jump around onto high buildings and jump down and jumping down from that building actually felt like falling even though I was sitting have you got the update for hand tracking yet um yes um I do like I I think there were
**34:02** · a few R features um I'm not sure if I have the big new update I think that also has a few UI changes but I definitely feel like the hand tracking got way better and yeah talking about hand trkking like that's the next step like those controllers are pretty cool like but it's still like you have to use the controllers you have to get into into those straps um you have to have your hands it depends on game but just having your fingers and having all this control that's I mean it opens so many
**34:34** · more possibilities uh what have you tried with hand tring like what is your experience so my favorite uh latest Point update was the fact that it can automatically switch between hands and controllers based on interaction which is so awesome like so for example like a normal day in VR I may pop on my headset
**34:52** · open big screen maybe watch a movie and it's just that's an interaction where I just need my hands but then like I want to pop out beats saber that wouldn't be kind of awkward with hands but it works great with the controllers and then I go over to Robo recall and I bring out the controllers but then I want to go back to like um you know YouTube for example or Netflix and it's like hand controllers or just using your hands is nice yeah but do those apps work with fans like when uh I tried uh the hand
**35:18** · tring a couple of times and most apps didn't support hand tring even though they didn't actually need controllers that much do it doesn't nflix and all those apps support hand treking the only one I've used so far that supports it really well is the Oculus TV app so yeah um yeah because a lot of the developers need to update their apps to support this new feature um but in what I suspect is maybe we'll see a um I think
**35:46** · we're going to see a compatibility mode that can be turned on in settings allows you to use hand tracking in any app so we'll see So speaking of VR how do you feel about developing for VR because I feel like once I started using it I got really excited about VR but
**36:05** · there was just something in me I was like I have to create something on this platform because it was just like app development's really fun desktop's really fun but like there's something about being immersed in a 360 environment putting anything where you want and just I don't know like what's your thoughts on that because I I just think that's like the next wave of application yes like actually the main reason why I
**36:31** · bought that Oculus class like I tried out with you I think I literally bought the quest like a few hours after um yeah it was yeah was basically what you can create with it like I I know VR I used VR before um I know the feeling it's great and having buying something like this for that price I think was like 300 bucks which compared to the other uh the
**36:57** · r VR headsets is like super cheap because for those you need the headset you need all the equipment and you need a good gaming PC but with the quest like just being able to um move around free like I thought about so many ideas you could Implement like just think about it you're not bound to a PC so you can even
**37:17** · though it would look very awkward you could take on and use the headset anywhere like I thought about how cool would it be if you'd be in a car obviously not driving yourself but sitting in there as a passenger getting that headset on having some sort of location data and maybe acceleration data and just replacing the stuff you
**37:39** · see outside with VR stuff maybe you're in a race maybe you're just looking at beautiful landscapes yeah exactly yeah just just having the ability to move around freely and just not being restricted was like mindblowing to me for you yeah for me um
**37:58** · I have been experimenting with um you know uh there's this technology called Web XR um which has come out web VR has been out for a little bit now and web VR is the ability to do virtual y experiences on the web um web XR is that
**38:15** · um with a proper implementation and a proper web standard the difference is web XR can also Target augmented reality experiences so I've been creating a bunch of demos recently and particularly I love this framework called A-frame which is built on top of 3js it allows you to declaratively build these scenes
**38:34** · um with HTML which is super cool or at least web components um and what I like about that is uh there's even a project called react 360 which is cool too where you can build you know websites in UI and you know VR kind of formats but I think it's so cool because you know when you're when you're developing in this you know experience you don't have to be Bound by just like a A 4x3 or 16x9 aspect ratio box you
**39:02** · know you can have all your important content in front of you you can have look around for you know other details you could literally build you know like a mission control room and have everything you need and what's cool about the the quest is you can literally walk over to anywhere you want and have
**39:22** · everything change like you know versus and interactive too versus you know in a 360 video it's all just passive and in a mobile application it's all about what's just on the screen at the same time but like it really and especially interactive movies and stuff like that allows you to like let the user choose what they want to do and you know how they want to see it yes also just just mixing that with
**39:48** · the topic we had before FL like um Chris Sals actually had um a very interesting uh device build which you called the FL octopus um basically it's like this thing which consists of eight arms um with each of those arms being connected to some sort of mobile device or desktop
**40:11** · and just hot reloading and developing Flur on all devices at the same time and like with the Oculus Quest you could take this FLIR octopus to the next level instead of just having eight devices you can develop with like you could literally have 1,000 devices like just imagine having a big big house a flat having a wall putting on the VR
**40:34** · headset and having all sorts of device configurations on that wall just walking around and interacting with the app and seeing how it works well I'll tell you what if I'm uh developing with the flut octopus and um VR I'm going to be doing it like X-Men and have like a sphere development room yeah it's um it's pretty crazy how
**40:57** · how you're not limited anymore by just like this 2D space it's like it's literally mobile development going 3D and it's um because you know you still have menus and all these other stuff but you just you adapt it for virtual reality so you don't have a lot of flat panels you have curved panels and you don't have so much your depth is
**41:18** · literally depth so material design is really big on you know elevation so cool thing is that translates to VR because because you know a floating action button will actually be physically closer to you than it will be um and whatever and I think another cool thing you know octopus is one awesome thing to do in VR but another thing for mobile development and web design I think would be a cool way to explore it would be like what if you wanted to explore your
**41:44** · view hierarchy or your list of dependencies and node graph or like just like visualizing a data table schema you know it's just like you see things from that perspective you cannot see in in other ways it's interesting yeah like a lot of errors and a lot of um time you spend as a software engineer is just um coming up with Solutions fixing stuff and just visualizing stuff is so important in the whole process and just having this as you said this this another layer which helps you put things
**42:17** · into context and just iterate and move around like you could even combine this with some sort of collaboration like think about having some sort of room with a lot of devices um and you have your buddy with you who sits in her table in real life maybe on her side of the word and you're just both coding if he wants to ask you a question you just come over and look over his shoulder and
**42:42** · just point out okay look at this line maybe change this and you could go to his virtual keyboard and mouse and and fix it for him and then walk around then point on the device on the screen and just uh compile the app for that device like the possibilities
**43:02** · are quite literally endless yeah and I feel like in a time like this I mean at the time of this recording we're going through the Corona virus and so it's like having to do everything from home and having you you
**43:17** · kind of really start to love the idea of virtual reality because I don't know about you but I I miss hanging out with people and it's like uh being able to you know connect with people in this virtual way not bound by anything like you know I don't have to fly to another country just to be able to collaborate with someone on a project yes you can do it over GitHub and poqu and screen sharing but what's cool about VR is you also have your avatar and it's just I
**43:44** · don't know about you but it's just like having a conversation VR is so much different than a FaceTime call or whatever because you just you have this non-verbal communication too that just you don't get in other platforms yeah I mean that's a big thing like that's I think why still not all work workers remote because that physical in-person um connection sometimes can help like I
**44:08** · mean remote works uh in a lot of cases but sometimes just having some way of actually working together um can make a difference the interesting thing I I thought about VR2 is right now with the Oculus quest in my opinion we're at a point technology wise where everything
**44:28** · is is there what you need to build something like we have hand tracking you can send voice over over the internet you can move objects you can synchronize pixels like that's what it is devices you can send over keystrokes you can do whatever you want all you have to do right now is combine all those Technologies and build something new it kind of feels like the early days of the web like everything's possible it's all super experimental um but nothing from like from core
**45:00** · technology is missing right now to build something cool yeah we're just limited by what we can create it's an interesting yeah it's it's no longer well we need more Hardware like the only thing that Hardware is helping with right now is machine learning yeah you know you want to have as crazi as powerful computer possible but all it does is just shave off time um until we
**45:24** · get to like you know a full like Quantum Computing state where you can um really start to do these mathematical problems that can exist in multiple States I I just feel like right now we're in a new wave of just like we're only limited by the things that we can create and how fast we can create them um which is pretty exciting time to be a
**45:49** · developer so uh this next section I want to have devoted to just any new packages that you have found in the last week or so um is there anything you'd like to share that you've come across that just you know super glad you found Yes actually it is not a package and it is not directly related FL um but I found this um GitHub project uh which is called screen copy like it's um Sr
**46:19** · cpy um which basically allows to copy your phone screen onto your desktop um which is super cool if you have um less powerful Hardware like I do uh for desktop isn't working yet because I'm using Firebase and windows um and the cool thing is I'm using ADB over WiFi so what I can literally do is have my phone somewhere in the house compile to the phone and have the screen on my computer and just have an Android emulator which
**46:50** · is not an emulator without the performance impact so does it remote debug too yes like every everything like you can hot reload you can have break points like it's literally um it's the same as if you have connected your phone with a cable um but it's over Wi-Fi and
**47:07** · you have your screen on your computer and the cool thing too is you can interact with the phone like you can use your keyboard you can um you can even drop an AP case into the window and have it installed in the device like I I just came across it like a couple of hours ago and I was like that is cool um yeah
**47:26** · so does it allow um like tapping on dragging around on the screen it all works it all works like you can use your you it's like I played around with it for about 10 minutes um but I'm definitely going to use this for those times where FL desktop isn't working or my computer um would burn down if I started another emulator um but yeah like we'll have the
**47:51** · links to those in the description um so yeah absolutely check those out um but yeah how about you um for me the packages I've been most excited about recently is the new freeze package um and the new state Notifier and flutter State Notifier these all work together in a really cool way um it allows me to have this form of State Management which is a a One Direction data flow um but
**48:17** · also allowing me to have take advantage of you know value Notifier um as well as you know just having this provider based um object model you know you can look up and down the widget tree to grab your model and to call your actions but the data is like you never have to worry about updating the data in the wrong place because everything's like get only and immutable um I think this is a
**48:41** · really cool way because you you can run into a lot of issues like oh well I updated this data on this screen but I forgot to update it on this other screen but you know for example am store uh one of the package or applications I built in order to do undo redo uh you don't want to have to like you know call this um undo stack you know from everywhere
**49:03** · you just have a single place where the data changes and you just you know you can listen to those events and just you know it's kind of more of a stream based U which I think RX is pretty similar too but um yeah it's it's really nice one-way data flow I mean I think Redux got it right for that that's pretty cool um sounds very interesting I'll have to definitely check that out too yep and then um what about any uh projects that you've been working on uh at least recently projects right now um yes but
**49:35** · um very little time and I think I should be able to share more details in a future episode um but how how about you yeah I always have a you know a ton of projects but at least at the moment um flutter editor has been one I've been pushing a lot um yes you you talked about the briefly before do you want to uh give us a bit more info about that um
**50:01** · so I first of all if you guys are curious you can always um subscribe to my YouTube channel I've been doing some live streams of me coding it um but so basically the whole concept of the flutter editor is I'm building a template generator for flutter that is a no code way to prototype and design flutter applications um you know without having
**50:21** · to need the compiler the cool part is if you run it on desktop and you do have the compiler installed it can do a lot of other stuff for you um so it can actually do hot reload it can debug your application it can do all this other stuff but it's not meant to replace vs code it's more meant to replace the design side um what's cool that I got
**50:41** · working uh last night is you can you know for example I you can create themes for your flutter application you can add custom colors you can use the Color Picker and do all that and it actually updates the theme file inside of your flutter application so you you can literally have this open next to vs code um update the theme file and then all of a sudden your app will be running and will show the new changes of the new theme colors um you can change the theme modes and all this kind of stuff you can do linear gradients radio gradients so
**51:11** · um the goal is just to really empower the user to do all the stuff that are hard to do programmatically like it's really hard to go look up like the CSS color codes and all this different stuff it's a lot easier just to have a Color Picker and just be like use the eye drop tool and be like okay I want it like this color in the app but I want it slightly different shade or opacity um as well as you can edit existing files um it has a cool pwa manifest generator in there so you can like you know customize all your settings for you know
**51:42** · Progressive web apps and then also one other tool that I built in there which I'm excited about is you can resize your icons so you can upload an icon image and it'll automatically update your project with the uh the new icons in the correct folder so Mac OS Windows Linux wherever um that one's pretty cool because it's sometimes a pain to have to go to update your icon every time um
**52:06** · because you have to update it in so many different places and now including the web you know and the the favon and everything it's just there's there's so many things that you have to do and so easy to miss stuff yeah it sounds pretty cool like I'm super excited for uh future updates and your progress on that so um where should people will follow you if you if they want to see what cool things you're building so you could pretty much follow me on every platform as Ro Davis r o y dvis um that includes Twitter GitHub YouTube and um we'll have
**52:38** · links to all this in the description below uh what about you um yeah mostly the same like Twitter GitHub um medium it's Norbert um k o Zs i r um Kier um awesome basically um again trying to get
**52:55** · get more um back into posting online stuff and building cool things which I've unfortunately been missing out on a bit in the last couple of weeks and months but I'm super excited to um participate um more again yeah absolutely and um if you guys are curious we are both pretty um approachable so um if you have questions
**53:19** · about the podcast or have things that you want us to talk about make sure to follow us on Twitter and give us a shout um by the time we're posting this we probably should have a Twitter Channel or something for this but um yeah we this is all about the community and what you guys are creating so we are excited about projects that we find and we love to bring up new stuff all the time so um thank you so much for listening if you have feedback um you can also email us um send to us on Twitter and then um and
**53:51** · most importantly if you love this please give us a raid on iTunes and a Stitcher wherever you listen to podcast because that really helps this podcast grow thank you so much thank you