Building an App from Scratch: Part 0

Who am I? What is Flutter?

Garrett Byrd
5 min readOct 4, 2022
Photo by Amber Maxwell Boydell on Unsplash

The former is either an intense metaphysical question or a line from Les Mis; the latter can be determined with a single google query.

Who am I?

My name (as you likely determined by looking at the author of this writing) is Garrett Byrd. I am an applied mathematics graduate student currently attending a satellite campus of a state university. (I know, I’ve always been destined for greatness.) My research involves computational fluid dynamics, which is an excellent setting for the exploration of the analytical and numerical aspects of the fascinating world of partial differential equations. With hopes of one day joining the white-collar army of those who call themselves “coders”, I am seeking to expand my skillset from just scientific computing (read: I know Python, and a little C++ and Matlab and use them to plot numerical approximations) to something remotely useful — in this case, mobile application development. That is,

I am going to build a mobile app and document my learning and progress along the way.

Without all the fluff, I’m a 22 year old graduate student who wants to break into industry. I also have a website, which I am known to occasionally update.

What is Flutter?

In a move which is almost certainly a poor career decision, I have opted to build my first app with Flutter (Wikipedia). Of course, there is a plethora of established, time-tested JavaScript frameworks which could do the trick. Flutter, instead, is the new kid on the block. So new, in fact, that the first version (v0.0.6) was released in November 2017, a mere five years ago (source). Version 1.0 of the software development kit was released just over a year later, on 04 December 2018 (source).

New technology is fine; we didn’t go from hunter-gatherers to Tetris by relying on the same set of sharpened sticks and stones. In the rather brutal market of the tech world, though, why choose the less established option?

The short answer is that I don’t really know. A more robust answer that I might provide to an interviewer would invoke the “do what you love” argument. That is, Flutter is more interesting to me. I want to learn Flutter and Dart more than I want to learn ReactJS and JavaScript. Moreover, as much as I may have slandered its newness thus far, Flutter is gaining traction because of a number of advantages over JavaScript frameworks. Broadly, Flutter is designed specifically for mobile development, and everything is a widget, which resonates with the familiar Python mantra everything is an object. One major advantage is that Flutter is inherently cross-platform, i.e., I will not have to spend time learning how to localize my app to Android, iOS, etc.

What is the intended outcome?

No, I don’t have a business plan, a cap table, and pre-seed funding lined up. I am not dropping out of school and quitting my job to learn Flutter and develop an app with dreams of becoming the next tech billionaire (yet). I want to learn a skill over the coming weeks and months with the outcome being a deeper understanding of full stack development and a considerable project for my portfolio.

Beyond my own personal gain, I want to provide a first-hand account of the broadening of my perspective from academic programming to “real world” programming. Along the way, as you might have guessed from the bright blue littering of hyperlinks all throughout this article, I want to document and share the learning resources that I have used. One is likely to criticize the ample usage of Wikipedia articles as “sources”. Indeed, you’d be hard pressed to find en.wikipedia.org/wiki/Derivative in the reference section of a calculus textbook. However, these glorified journal entries are not being submitted to arxiv. Wikipedia articles (especially in the world of STEM, I have found) often offer easy to understand introductory paragraphs with easily navigable supplementary materials. To newcomers of a particular subject, parsing the opening paragraph and reading through the provided example (if there is one) on a given article is a meaningful first step in the understanding of something unfamiliar. Furthermore, I will also be sprinkling in resources from geeksforgeeks.org, selectively from youtube.com, and with all likelihood, medium.com. Finally, and perhaps it’s a bit obvious, this is ultimately a kind of accountability system.

The roadmap

Photo by N. on Unsplash

As of writing this pilot article, it has been about 2 months since I last opened my “App Dev” folder or looked up anything relating to Flutter and app development in general. I do, however, have a lingering outline which I plan to use as a loose roadmap.

Finally, the idea:

I will be developing a basic social media application.

Nothing is concrete, but here are three development “pillars” which are significant enough to guide the entire project:

1.) Built on Flutter, Google’s mobile app SDK built on the Dart programming language.

2.) Map-based interface, implemented with the Mapbox API

3.) GraphQL backend, likely to be implemented via DGraph

Qualitatively speaking, I feel as if these three goals provide specific tools with which I can gain an understanding of frontend (Flutter), backend (GraphQL), and general design/API implementation (Mapbox).

Along with these major points, I expect to also implement “standard” communication app features: users, messages (text, picture, video), stories, story and map-based interactions (voting, responses, etc.), and others. If all goes well and the project isn’t abandoned after a month, I would also like to make use of my education and use Python to perform (at least basic) data analyses.

What now?

As these continue, I hope to transition away from the stunning Unsplash images that Medium is so famous for and into the practice of sharing snippets of code, as well as screenshots of the UI as it comes along. Until then, comments, recommendations, and criticisms are completely welcome. Communication is necessary and healthy in all areas of life, and I fully invite you to reach out — even if just to talk about the latest books we’ve read. This is a learning experience, and I fully hope and expect to make many errors and learn from those mistakes. I hope you look forward to the first considerable update, which I will release next week.

Since I provided an opening paragraph about myself, I have omitted the “About the Author” section from this articles. Here is a link to my personal website.

Next

--

--

Garrett Byrd

Applied Math Graduate Student, Python/Flutter Developer, Guy that likes Music | garrettbyrd.com