[MUSIC PLAYING]
SEBASTIAN TRZCINSKI-CLEMENT: Good afternoon.
How should I pronounce your first name, Mouaz?
MOUAZ AL-SHAHMEH: Yes, [? Damazin ?] sent the greeting
from here, from Riyadh.
Yes, Mouaz.
SEBASTIAN TRZCINSKI-CLEMENT: So thank you
for taking the time to meet with me.
You're one of the Dev Library contributors.
You've submitted content that got selected.
But before we talk about technology
and your submissions, would you mind
sharing with me a little bit about yourself,
maybe three words, or three numbers, or anything
you'd like to share to tell us a little bit about who Mouaz is.
MOUAZ AL-SHAHMEH: Yes, thank you for the question.
Mouaz Al-Shahmeh, software engineer,
and a Google Dev Library contributor, and author,
and Flutter and that technology--
with technology, maybe from 12 years in general
and Flutter from first edition, yes.
Maybe more than three words, but--
SEBASTIAN TRZCINSKI-CLEMENT: That's totally fine.
What got you started into these various areas--
Flutter and Dart?
What prompted you?
What got you interested in the first place?
MOUAZ AL-SHAHMEH: Yes, that's a good question.
Maybe Flutter, as a cross-platform,
you deal with the one code base, with the Flutter technology,
rather than you deal with the specific platform.
For example, you deal with Android.
You deal with the programming language as Java or Kotlin.
Or you deal with iOS, iPhone apps.
You deal with iOS, Swift, or Objective-C, if you're old;
the same for Windows, C# or Visual Basic.
The same for web, you deal with many,
many programming languages, such as PHP, C#, .NET, whatever.
The idea here is you deal with one programming language.
It's Dart, Dart programming language.
Maybe the concepts of programming is one.
But here, the idea--
you code one.
You code once.
This idea is better for maintenance,
maybe for all platforms, for maintenance for testing.
For any reasons of software engineering,
one code base is better, from my opinion.
This passioned me for Flutter technology.
SEBASTIAN TRZCINSKI-CLEMENT: What surprised you,
if there's anything that surprised you
when you started using Flutter?
Is there anything that was surprising in good or bad ways?
MOUAZ AL-SHAHMEH: OK, maybe the land does not--
or the map is not the actual land.
For Flutter, this idea--
you can see the difference from version to other version--
for example, from Nairobi, latest conference of Flutter,
Flutter Forward.
Flutter 3.7 is more than or change--
there is many changes from first edition-- or last edition, 3.
There are many changes--
from code, from Dart programming language.
As you know, Flutter is based on Dart programming language.
It's the software development kit, Flutter SDK.
From edition to another edition, you see the difference.
Maybe from first edition, Flutter
supports Android and iPhone.
Second edition of Flutter, you listened--
sound null safety with Flutter 2 and support
of sound null safety.
With Flutter 3-- maybe before Flutter 3,
2-point something like that--
Flutter supported Windows and web stable.
As I talked before, from edition to another edition,
you see the difference with Flutter--
more coverage of platforms, more stability, more performance,
yes.
SEBASTIAN TRZCINSKI-CLEMENT: So you've
submitted a number of projects and blog posts
to Dev Library which got accepted.
Two of your projects caught my attention.
These are the games that you rebuilt in Flutter.
And that's Tetris and Bomberman because I'm the generation
of Tetris and Bomberman.
Do you want to talk more about the projects
that you've submitted?
You have more than this on your Dev Library author profile.
You also have a blog post--
three blog posts.
And you have a meta-SEO package.
Do you want to talk more about these various projects and blog
posts that you've written and submitted to Dev Library?
MOUAZ AL-SHAHMEH: You have two questions.
For games, Flutter games, there is a famous package.
It's Flame now.
Maybe I can answer the package or the game itself.
I developed more than 40 games.
And my GitHub library was-- yes, I love open source projects,
so other developers can contribute with me--
solve issues, many things in open source projects.
You feel with games now--
with 2D, Flutter supports now 2D games.
Bomberman is a famous game with the--
you have the bomb.
And you can close this bomb and deploy blocks until you
finish the game, you won.
Yes, this is the idea of the Bomberman.
I wrote it with Dart, Dart programming language,
with the technology of Flutter.
We moved to Meta SEO.
The Meta SEO package I write with the Dart programming
language.
I embed support of search engine optimization
from web to projects of Flutter web.
Flutter supports web app.
There is difference between web app or website.
Web app, for example, progressive web app, PWA
or SPA, single page application-- all of this
is named web app.
Website, another topic-- website,
you deal with back-end, for example.
The same website, you have back-end and front-end,
the same in the same project, the code
of back-end and front-end into the website.
There are many topics other than web app.
For example, SEO, search engine optimization,
I have this package--
or I published this package--
to enhance web app to support the browsers--
for example, Chrome, Mozilla Firefox, Safari, whatever.
I study master in web sciences now.
This topic's from my area.
XML-- you deal with the extensible markup language
for support of browsers.
The browsers read the tags--
for XML, for example, or HTML.
To support search engine optimization,
we deal with metatags.
Metatags is located in header of the HTML file.
Metatags, for example, metatitle or OG Open Graph
for supporting if you will share, for example,
link with image or title of description
in WhatsApp, for example, or Facebook, whatever, or Twitter.
You have Twitter card.
Many, many of metatags in this package.
So with this package, you support the SEO--
not all the SEO because the body of the HTML,
you need some SEO for, for example, H1, 2, 3, 4, 6,
and the paragraph, whatever, of HTML.
But this package from header of HTML, you
can, with this package, support your search engine
optimization, maybe almost of metatags in this package.
SEBASTIAN TRZCINSKI-CLEMENT: What challenges--
sorry, let me rephrase.
Did you face any challenges when you
were coding and trying to develop
this package or these games?
And if you were encountering challenges,
what was your approach to try and tackle that challenge?
Did you use specific websites or a method
to try and solve your challenges?
MOUAZ AL-SHAHMEH: Yes, this is a good question.
The same as I talked before--
rapid four editions-- you run four editions.
From day to day, Flutter is different.
This is the idea.
You need to be up-to-date with Flutter.
SEBASTIAN TRZCINSKI-CLEMENT: So where do you go to?
Do you read the official documentation?
MOUAZ AL-SHAHMEH: Flutter.dev official is the best.
Maybe there are many documentations for Flutter
or resources for learning--
YouTube, whatever.
The best, in my idea, is the official documentation
from flutter.dev.
And I see the link and go to the Dev Library, [INAUDIBLE],,
and yes.
This is the best link.
I love it, yes.
Another, if you need to deep dive into Flutter SDK,
api.flutter.dev--
you will see all of the API information about Flutter SDK.
I use it for building the Meta SEO package API of Dart, HTML,
and Dart JS, JavaScript, yes.
It's very useful for development with Flutter.
SEBASTIAN TRZCINSKI-CLEMENT: I'll
put all the links in the description of this video.
I'll put also the link to your developer profile
on Dev Library so that people can be inspired from the work
that you have been doing.
Is there any piece of advice that you've
heard around Flutter or around the tech industry
that you think is the worst advice?
That is, the advice that you're hearing, it doesn't make sense.
That does not make sense to me.
Is there anything like that that you've heard and you think,
this is silly?
MOUAZ AL-SHAHMEH: Oh, so there are
many advices we can talk about.
But one of them is just code from software engineering
concept.
There are many steps before code.
You need maybe collect or analyze the domain,
collect the requirements of your app or game, for example.
Next step, you need to design, modeling-- for example,
unified modeling language, UML, or any design--
design of system, design of app, design of game.
The latest-- or not the latest-- before the latest
is code, begin coding.
After code, test your code and maintenance, retain the cycle,
yes.
The worst advice is just code, start code directly, yes.
SEBASTIAN TRZCINSKI-CLEMENT: Thank you.
That's quite refreshing because, indeed, sometimes people
say just get started and start coding.
So I think it's refreshing to have another perspective, which
makes also total sense.
For someone who is starting with Flutter specifically,
do you have any specific recommendations?
Or let's say, if you were starting today and realizing
everything you've learned on the way,
would you do anything differently?
How would you get started today?
What would be your advice for someone
who's a complete beginner?
They know coding a little bit maybe,
but they don't know anything about Flutter?
Where should they get started?
Flutter.dev is the best way to get started or anything--
MOUAZ AL-SHAHMEH: From the startup
is the advice is changed from the starter coder.
Maybe encourage the starter directly
go to Flutter without Dart.
I published many of Dart resources in my YouTube channel
and many resources-- for example,
blogs or YouTube videos, about four hours or three hours,
about Dart programming language, about data structure
and algorithms in Dart.
If you need to, start correct, and you
have the time to build the strong knowledge and--
yes.
But if you need to encourage with the technology,
directly with the Flutter, build something with Flutter, yes.
SEBASTIAN TRZCINSKI-CLEMENT: OK, so that's valuable advice.
You're saying flutter.dev.
And also, if you're interested with Flutter,
don't waste too much time on Dart.
It's not useless, but it's maybe more preferable, in hindsight,
for you to go straight to Flutter in this case.
I think that's very concrete advice that you're giving.
Why do you think contributing to open
source projects is important?
Because you don't have to do this, right?
You could totally just code, and remain in your corner,
and do your own stuff.
But you're actually helping others.
And why do you think this is important as part
of the global developer community?
What is your motivation?
MOUAZ AL-SHAHMEH: This is also a good question.
For open source, maybe Google--
all services of Google is open source.
Flutter, all of Flutter technology is open source.
You can see all the documentation.
You can see all of the API SDK software development kit.
All things is open source.
This access the developers to maybe contribute,
maybe enhance the SDK itself the same for my projects.
Apps or games, I publish in stores.
Developer's contribution, maybe you
have feedback, good feedback, about something
you're not seeing or something you will not listen--
or see the description of your bug or anything.
The feedback is very useful from whitebox or blackbox testing.
The open source is with whitebox testing, in my opinion,
is very useful.
SEBASTIAN TRZCINSKI-CLEMENT: I was
curious if you're excited about any technology that
may arrive in the future or any improvement to Flutter
that you're interested in that you'd like to see happen.
MOUAZ AL-SHAHMEH: There are many that
are already integrated with the Flutter--
for example, TensorFlow.
For machine learning, TensorFlow communicates
with Flutter technology, with machine learning and coding.
There are many-- for example, ChatGPT,
without a hint about ChatGPT.
There are very communications between Flutter technology
and others because it's cross-platform.
You deal with any platform.
Especially now you deal with embed system, not
operating system--
embed system in Linux, for example.
SEBASTIAN TRZCINSKI-CLEMENT: Have you
tested already the integration with TensorFlow?
Or are you tempted to try?
Or are their areas that you want to try yourself?
MOUAZ AL-SHAHMEH: I heard from my colleagues.
But the ideas of machine learning,
artificial intelligence is my field, software engineer,
as a software engineer.
SEBASTIAN TRZCINSKI-CLEMENT: Any final few words
you'd like to share with developers who
are going to watch this video?
It's not a question that is initially coming from me,
but let's say you have a gigantic billboard that you
can put anywhere on the planet.
What would it say on that gigantic billboard
that you can put on the highway anywhere on the planet?
What would it say?
MOUAZ AL-SHAHMEH: Maybe no just code,
don't just code, but think about the application or game
before you code.
Illustrate the shape of your application
or your game before directly code.
That's my advice.
SEBASTIAN TRZCINSKI-CLEMENT: So think about the business needs,
think about the application before you delve right
into the code.
This is something you shared earlier,
which makes total sense.
In fact, to your point, I think it's a rare skill also
to have the ability to see both the product, the business
case for it, and also be able to code.
And I guess that's why, in a lot of companies,
you have sometimes a product manager
and then an engineering team.
But if you can marry both skills,
I think that's a unique advantage.
So I like your approach of saying,
think where you're going instead of just coding straight away.
MOUAZ AL-SHAHMEH: Yes, thanks, Sebastian.
SEBASTIAN TRZCINSKI-CLEMENT: Thank you very much
for your time, Mouaz.
I think it was very enlightening and very refreshing also
to get your perspective as a Flutter developer.
Thank you very much.
MOUAZ AL-SHAHMEH: Thank you.
SEBASTIAN TRZCINSKI-CLEMENT: Shukran.
MOUAZ AL-SHAHMEH: Afwan.