Andrea Bizzotto ๐Ÿ’™ Profile picture
Dec 31, 2021 โ€ข 11 tweets โ€ข 3 min read โ€ข Read on X
Here's a thread about my 2021 in numbers as a content creator making Flutter tutorials and courses. ๐Ÿงต

Total Revenue: $69,532

Here's a breakdown by month. ๐Ÿ‘‡
Here's a pie chart about revenue by income stream.

80% of total revenue came from sales on Udemy and Teachable.
This year I had $20,660 in expenses.

This is a large number primarily due to outsourcing costs (design & development) on my site.
In 2021, 459K visitors accounted for 658K page-views on my site.
I spent a lot of effort on SEO, and it paid off.

The vast majority of the traffic came from Google search.
My most visited page (about Dart Null Safety) was opened over 50K times.
I have sent A LOT of emails to my subscribers.

Here's all the feedback I collected from them.

I use this feedback to continuously improve new and old content
Between courses, tutorials, website, YouTube, Twitter, my newsletter etc, I spent 1458 hours on my business.

Here's a breakdown:
What are my goals for 2022?

๐Ÿ’ฐ $100K in total revenue
๐Ÿ“ˆ reach 100K monthly unique visitors on my website
๐Ÿ“ฎ Grow my newsletter to 25K subscribers
๐Ÿฆ More than double my Twitter followers to 25K
๐Ÿ“น Reach 50K subscribers on YouTube
This has NOT been an overnight success!

I started in 2018, and slowly made this my full-time job.

Here's what it took:

- 4100 hours (so far)
- set realistic goals
- not giving up
- continuing to learn and figuring things out along the way

Full retro coming tomorrow. ๐Ÿ‘
As promised, here's the full retro with all the details:

codewithandrea.com/meta/my-2021-iโ€ฆ

I can't wait to share what I have in store for 2022. ๐Ÿ’ฏ๐Ÿ’™

โ€ข โ€ข โ€ข

Missing some Tweet in this thread? You can try to force a refresh
ใ€€

Keep Current with Andrea Bizzotto ๐Ÿ’™

Andrea Bizzotto ๐Ÿ’™ Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @biz84

Mar 20, 2023
Can GPT-4 and GPT-3.5 play Wordle? ๐Ÿค”

I decided to find out! Here's what I discovered:

โœ… GPT-4 understands the game and can improve on each move
โŒ GPT-3.5 doesn't quite get it ๐Ÿ˜…

Want to know all the details (prompt & answers)? Then read on! ๐Ÿงต GPT-4 completed Wordle in 4 moves: - apple (XXXXO) - ember (
First of all, I've used the same prompt for both models.

I tried to be very explicit about the game rules and provided an example.

Here's what it looks like. ๐Ÿ‘‡ I need your help playing Wordle. Your job is to guess an exi
Here's how things went with GPT-4.

First three guesses: Yes, I understand the rules. I will try to guess the 5-lette
Read 12 tweets
Sep 30, 2022
I know that many people out there are looking for their first tech job (Flutter or otherwise) and times are tough.

Having hired talent twice in the last year, I received many applications but very few good ones.

So here's some advice from a "hiring manager" perspective.

๐Ÿงต
If you knew you had FIVE seconds to make a good impression, what would you do?

This is not a hypothetical question.

If a hiring manager has 50 applications sitting in the inbox, how would they quickly tell the good from the bad ones?

In other words, how do you stand out?
Things that go a long way:

1๏ธโƒฃ competence
2๏ธโƒฃ enthusiasm
3๏ธโƒฃ trustworthiness

Let me elaborate on each one. ๐Ÿ‘‡
Read 15 tweets
Sep 29, 2022
If your users speak another language, youโ€™ll need to localize your Flutter app ๐Ÿ—บ

Hereโ€™s how to setup Flutter app localizations in just 5 minutes, using code generation.

Also covered: template vs non-template files and synthetic vs non-synthetic package. ๐Ÿ‘€

๐Ÿงต Image
1๏ธโƒฃ As a first step, we need to add the required packages to the pubspec.yaml file. Image
2๏ธโƒฃ Create l10n.yaml at the root

โœ”๏ธ arb-dir is the input folder where Flutter will look for the localized strings
โœ”๏ธ output-dir is where the localizations classes will be generated
โœ”๏ธ template-arb-file is the main template that contains a description for each localized message Image
Read 14 tweets
Jul 25, 2022
What's the difference between errors and exceptions in Flutter?

โ†’ Errors are programmer mistakes. They are fatal and we should not try to recover from them
โ†’ Exceptions are failure conditions that are out of our control. We should handle them and recover gracefully

Thread ๐Ÿงต Image
Errors are fatal and when they happen the program *cannot* recover normally.

โ†’ we want to discover (and fix) them as early as possible in the development process
โ†’ we should track them in production using a crash reporting solution, so that we can measure impact and severity
The most common errors we may encounter are:

- AssertionError
- TypeError
- ArgumentError
- RangeError
- UnimplementedError
- StateError

and many others.

They all *extend* the base Error class, and the full list of errors can be found here:

api.flutter.dev/flutter/dart-cโ€ฆ
Read 7 tweets
Jul 11, 2022
In the last few months, I've been sharing many useful Flutter tips & tricks. ๐Ÿ’™

Here are the top 10! ๐Ÿ‘‡๐Ÿงต Here's a list of my top 10 Flutter tips & tricks.
1) Rules to follow for good app architecture

Read 12 tweets
Jun 9, 2022
Sometimes we need to write business logic inside classes that have multiple dependencies.

To do this, we can pass the dependencies as constructor arguments.

A much simpler solution is to pass `ref.read` as an argument.

Here's a thread with all the details. ๐Ÿงต
Reader is just a function we can use to read a provider's value, *just once*.

And once we get the underlying value (a repository in this case), we can call methods on it.

Note: when we want to access a provider inside a widget callback, we do exactly the same thing.
An alternative way of doing this is to pass "ref" directly.

As a result, we have to call "ref.read(provider).someMethod()" inside our class methods.

Though if you only ever need to read (and not watch or listen), using Reader makes your intention more explicit.
Read 4 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(