This is my personal story of the journey from Java back-end development to Flutter and Ethereum Decentralized Applications (DApps) development. I wrote this post to capture my thoughts and experiences so far for ease of reference in the future.
If you come across my previous blog post of titled “ The end is just a new beginning”, you will notice that in 2013 to 2014, I am on full-stack development, and start from 2015 I am solely focus on back-end development. I intend to closing the knowledge gap of front-end development since last year and I chose Flutter.
Before I start my journey for Flutter development, I would like to sum up my experiences in back-end APIs development besides the common Restful APIs, hence I published a blog post titled “ Standard query language for your Web API, why GraphQL and OData?”. The blog post described the reasoning of using GraphQL API and OData API with code examples.
In the early 2021, I created a Flutter App known as Flutter Widgets Explorer to learn about Flutter widgets, so that I don’t need to create a new Flutter project each time I want to learn about an interesting Flutter package I come across in pub.dev such as the Flutter Charting library.
As per any software project, the project is growing. It first being published to Google Play Store as mobile apps. then running as web apps in Fluwix.com and lastly Flutter Widgets Explorer mobile apps re-branded as Fluwix. Now the Fluwix is a Flutter showcases platform on the mobile apps and web. I also promote Fluwix via social media channels, so far the traffic is low.
I published the following prominent blog posts relevant to Flutter besides those showcases related:
- Flutter Multi-modules Support
- Flutter Navigation: flutter_modular or stacked?
- Free Code Audit For Flutter Project
- Flutter App Architecture: flutter_bloc or flutter_clean_architecture?
The Fluwix platform is solely front-end application at the moment, I did think about adding back-end features few months ago, you can find out more from this github issue. Should I use the traditional back-end stack I know well such as Micronaut or Spring Boot or brand new Web3 Decentralized Applications (DApps) stack such as Ethereum blockchain?
After closing the gap, I’m back to back-end technology again namely Blockchain. First, I took the Udemy’s Blockchain A-Z™: Learn How To Build Your First Blockchain course. Thanks to the clear explanation from the course instructor, I have good grasp of intuitions on Blockchain, Cryptocurrency and Smart Contract.
After completed the course, I start exploring the Blockchain space by look beyond the obvious choice for DApps development: Ethereum. Substrate, a Rust-based framework to build your own blockchain by Polkadot catched my interest. In a short time, I find out that to get into Substrate, the prerequisites are knowledge of Rust programming language and Web Assembly. I took the Udemy’s The Rust Programming Language course and completed the tutorial in Rust and WebAssembly book, then the Build a Bitcoin-like Blockchain with Substrate — Beginner Friendly YouTube video series. After completed the video 3 of 5 of the YouTube series, I realized that I jumped the gun, I’m a bit too far from DApps development. The Substrate framework is great for building your own blockhain, a layer below the DApps instead of DApps itself.
After a big trip to Rust and Substrate, I turn my attention to the obvious choice: Ethereum, I pick up the Learn Ethereum book and code along with it. Currently I am at 50% of the book, so far so good. You might interested to follow some of my github repositories:
- eth-erc721-marketplace: Ethereum Digital Art Marketplace (ERC-721)
- fluwix-token: Fluwix Token (ERC-20)
- eth-todo: Ethereum Todo Smart Contract
- substrate-utxo-workshop: Build a Bitcoin-like Blockchain with Substrate
- wasm-game-of-life: Conway’s Game of Life with Rust and Web Assembly
- eth-dapps-nextjs-boiletplate: Ethereum dApps Next.js Boiletplate
At this juncture, I can decide to build Fluwix as DApps over the Ethereum blockchain network. You can expect me to write more about this topic in the future. Lastly, a lesson learned “Sometimes it is far easier to stay with the obvious choice” even the exposure to the Rust programming language and Web Assembly is not totally wasted.
Thanks for reading. I hope you get something out of my thoughts and experiences. :)