 Hey everybody, it's Brian and welcome to September 2020. I get a lot of emails out in our YouTube channel here and out on Facebook. And I really just wanted to address some rumors I've been hearing. I've been getting a lot of people saying help, what is Flutter and does it mean that Qt's gonna go away? So we're just looking at the TIOBE index, which is basically just a search analytic, you know what people are searching for. And you can see top slot has pretty much always been C++ Java, Python has really crept up into the third spot. Way down at the bottom here you see this Dart. So Flutter is written in a language called Dart. And this double chevron here is what has people really, really nervous because it's just skyrocketing up the charts. So Flutter is written in Dart and Dart is getting a lot of popularity because of Flutter. You can see just in one year's time it's gone from the 24th to the 20th spot and it's just going to, I expect shoot way up here very, very quickly. So why, what is all the hype? Let's take a look here. Quick recap, Qt is one framework, one code base, any platform, I found that to be very, very true. I have Qt running on everything from desktops, laptops, cell phones, Raspberry Pi, other embedded devices. You can run this pretty much anywhere C++ runs and it can use pretty much any C++ code out there. You will have some interrupt issues and things like that. For example, trying to combine Qt and Boost sometimes get a little weird, but you have the full power of C++ and everything C++ related. That being said, Qt has a massive framework, a massive code base, when I say massive, it's really not massive, but it's bigger than most people really want to deal with and it is highly, highly complex with a steep learning curve due to C++. They've done a great job of making it easy to work with but C++ scares a lot of people away. But the fact that C++ is still in the fourth slot tells you just how popular C++ it really is. So what is Flutter? If you don't know what Flutter is, it is a new user interface toolkit that runs on Dart. Remember, Dart is this little language here that's shooting up to the top of the charts very quickly. Is it a threat to C++? No, I don't think it is. Will a lot of people use Flutter? Yes, are a lot of people asking them, so should I use Flutter or Qt? You bet they are. So what really does Flutter bring to the table? Well, you can do mobile, web, and desktop, but you notice what's missing is embedded. So that's where Qt's really got the market. If you want to work with embedded, Qt's pretty much what's out there. I mean, it's one of the better ones out there. Flutter is bringing a lot to the table, though. It has all the power of Google behind it, which is just a massive company. And they also have coming from another platform. So they're actively targeting now their competition, including themselves. So if you're coming from the old Google Android programming to Flutter, it's night day. I love Flutter compared to the old Android. It's got native performance, it compiles down to native ARM machine code. It is very fast. It has some of the fastest garbage collection I've ever seen. And it's actually pretty breathtaking when you use it. The problem Flutter has is, well, there's a lot of hype behind it, and I don't think it fully lives up to that hype all of the time, but it is an amazing product. The other problem Flutter has is it's evolving so fast it's hard to keep up with. So let me back up here just a bit. One of Qt's problems is that it evolves slowly, which is a benefit and, well, a slight against it. It's a benefit because you're not constantly chasing the newest, greatest thing. But if you're waiting on a feature, it can take forever for it to come and you're often out looking for, well, some C++ library out there to augment it. So Qt is slow to change where Flutter is evolving so fast it's hard to keep up with. I started doing out on Udemy, a bunch of courses on Dart and Flutter. And like Flutter beginners, when I started the course, from when I finished the course and published it, there were so many changes in Flutter, I had to go back and redo it because all the students coming in were going, this doesn't line up with the real world and all this course sucks. And I was very frustrated. And then even after a year goes by, they went and changed it again to do the soundness of variables. So they kind of switched from like a, the way Python does it where you don't really need to declare the data type to the way like all the other languages pretty much do it where you have to have a data type and it got really frustrating. That being said, when they did that on PubDev, the packages repository for all things Dart and Flutter, a lot of these packages broke. So if you were using an older version of a package with a newer version of Dart and Flutter, it just didn't work and the error messages were not very self-explanatory. So you got a lot of craziness and that is the other big problem is Flutter and Dart itself are actually pretty lean and mean. And what I mean by that is you have the basics of what you need to make an application but the minute you wanna do something like encryption, you have to go out and get a package. And if you just search for the word encrypt, there are at the time of this recording 408 packages and you have to kind of search through and read all of them and figure out which one is the right one for you and does it actually do what it says it does and does it compile? Does it actually work for your project? Is it actually an industry standard? And if you're doing especially something like encryption, you wanna make sure that it's actually secure. Oh, that gets super frustrating. So Flutter's little gotcha here is that if you're going to step outside of what I call the core of Flutter and you go into package land, you're gonna have a very bad time very quickly. Don't get me wrong, there's some great, great packages out there but it's just horrible trying to figure out which one to use and then making sure it maintains and then if Flutter updates and the package doesn't, do you suddenly have a bad time and you have to downgrade Flutter which may have some special thing that you need and it just becomes a nightmare trying to mesh all that together. Google being who Google is will obviously sort that out but right now it's kind of a mess. Mobile web and desktop is the way to go, they're probably gonna add embedded. So which one's right for you? Well, it really depends on what you wanna do. It really does. For the bulk of the applications out in the world, they are either going to be web, desktop or mobile. So Flutter is going to gain a massive following very, very quickly and they are probably going to be more of a threat for languages like Java, Python and .NET and Swift and all of those but for C and C++, I think that C and C++ are gonna be here to stay at least in my lifetime. And one other note is that Qt, and when I say Qt, I mean the company Qt is very aware that C++ has a steep learning curve. So they've started really merging and leaning towards Python which if you look at Python, Python has a massive following and yes, Python can go head to head with Dart any day of the week as far as how easy it is to learn, how flexible, how powerful and this and that. Dart I think has some improvements over Python but Python is always continually improving. Under the hood, Python is very stable, it's very easy to learn. You can pick Python up as a language in about six hours or over a weekend and a couple beers. It's just dead simple. So when you merge the power of Python with Qt, now you see just how powerful this is. Flutter though is going to gain a lot of popularity and one thing I absolutely love about Flutter is it already has tight, tight integration with Google. You're talking tight integration with like Gmail, Google Apps, Maps, Docs, Drive, all those things, you can actually find a lot of those out in pub.dev. So whenever somebody comes to me and says how do I, whatever it is in Flutter, I say have you looked for a package because there's a package out there that does that, I promise you, whatever it is, there's gonna be a massive amount of things out there. But with that massive amount of things, you're gonna have a lot of complexity and a lot of interop issues where one package doesn't work well with another and one package is at one level of Flutter and the other package requires a legacy version of Flutter and vice versa. It just becomes a real nightmare. All right, so what are your thoughts? I mean, what do you think about Qt and Flutter? I've worked with both. I think they're both really, really solid. I've got courses on both. You can see my Udemy has got Qt, Qt, Qt and Dart, Flutter, Dart, Flutter. I love both these technologies. To be brutally honest, I lean more towards Qt because I know that I can do just about anything with Qt but Dart and Flutter, I'm gonna just say it, I think they're gonna just completely annihilate Java. I know a lot of the Java programmers are laughing but I really do think future-wise, unless Java steps up their game, Java's gonna have a hard time competing. Python, I think Python can definitely go head-to-head with Dart and I think it's very smart that Qt is really starting to lean on Python and I almost would go a step further say they should make some bindings for Dart into Qt. That way, if a, where is it, where is it? Dart, Flutter programmer has to work with a Qt project they can still use Dart. And if you haven't checked it out, Dart is actually a really, really easy language to learn. If you know any C-style language, you can pick this up in about a weekend. It's very just robust, very quick. Working with it in a mobile device can be a bit cumbersome at first if you don't know how to sub an emulator but once you get it going, it's pretty straightforward but I suppose the same could be said about Qt. Anyways, drop a comment below, let me know what you think. I do want to start making some videos on boy drums. I've been way off in Udemy land for a while now and I feel like I've neglected YouTube and I want to just start getting back to kind of the whimsical nature of how I used to just open up a compiler, crank out some code, record it and plop it up on YouTube. But honestly, I've covered so many topics in the last year and a half. I don't really know where else I can go without just redoing the same thing that I've been doing. So anyways, drop a note below, let me know what you think.