u24.gov.ua - United 24
savelife.in.ua/en/ - Come back alive prytulafoundation.org/en - Prytula Foundation
yellow-tape.com.ua/home-eng - Yellow Tape Foundation
koloua.com/en/ - KOLO
@olexale.bsky.social
Engineering Leader | Google Developer Expert | Coaching Productive, High-Impact Teams
u24.gov.ua - United 24
savelife.in.ua/en/ - Come back alive prytulafoundation.org/en - Prytula Foundation
yellow-tape.com.ua/home-eng - Yellow Tape Foundation
koloua.com/en/ - KOLO
As usual, if you enjoy the article, the best way to show your appreciation now is by supporting my country - Ukraine ๐บ๐ฆIf you can afford it, I encourage donations to well-established charity foundations (except for the Red Cross), here are a few:
17.12.2025 10:20 โ ๐ 0 ๐ 0 ๐ฌ 1 ๐ 0Iโve seen many strong teams slowed down by code they wrote themselves. Not because it was bad, but because it was โgood enoughโ at the time.
I wrote about why this happens in settled teams, and how I try to reason about it: olexale.medium.com/when-good-en...
But Dartโs Records make this so much nicer:
๐ง๐ช๐ฏ๐ข๐ญ (๐ข, ๐ฃ, ๐ค) = ๐ข๐ธ๐ข๐ช๐ต (๐ฐ๐ฑ๐ฆ๐ณ๐ข๐ต๐ช๐ฐ๐ฏ๐(), ๐ฐ๐ฑ๐ฆ๐ณ๐ข๐ต๐ช๐ฐ๐ฏ๐(), ๐ฐ๐ฑ๐ฆ๐ณ๐ข๐ต๐ช๐ฐ๐ฏ๐()).๐ธ๐ข๐ช๐ต;
โจ No casts.
โจ No hidden index dependencies.
โจ Much cleaner, safer, and more readable.
And now you know it too ๐
Example:
๐ง๐ช๐ฏ๐ข๐ญ ๐ณ๐ฆ๐ด๐ถ๐ญ๐ต๐ด = ๐ข๐ธ๐ข๐ช๐ต ๐๐ถ๐ต๐ถ๐ณ๐ฆ.๐ธ๐ข๐ช๐ต([๐ฐ๐ฑ๐ฆ๐ณ๐ข๐ต๐ช๐ฐ๐ฏ๐(), ๐ฐ๐ฑ๐ฆ๐ณ๐ข๐ต๐ช๐ฐ๐ฏ๐(), ๐ฐ๐ฑ๐ฆ๐ณ๐ข๐ต๐ช๐ฐ๐ฏ๐()]);
๐ง๐ช๐ฏ๐ข๐ญ ๐ข = ๐ณ๐ฆ๐ด๐ถ๐ญ๐ต๐ด[0] ๐ข๐ด ๐๐บ๐ฑ๐ฆ๐;
๐ง๐ช๐ฏ๐ข๐ญ ๐ฃ = ๐ณ๐ฆ๐ด๐ถ๐ญ๐ต๐ด[1] ๐ข๐ด ๐๐บ๐ฑ๐ฆ๐;
๐ง๐ช๐ฏ๐ข๐ญ ๐ค = ๐ณ๐ฆ๐ด๐ถ๐ญ๐ต๐ด[2] ๐ข๐ด ๐๐บ๐ฑ๐ฆ๐;
Today I learned a neat #Dart trick for running multiple async operations in parallel.
I used to rely on ๐๐๐๐๐ฟ๐ฒ.๐๐ฎ๐ถ๐(), but that meant:
โข Casting results manually (๐ข๐ด ๐๐บ๐ฑ๐ฆ๐, ๐ข๐ด ๐๐บ๐ฑ๐ฆ๐ โฆ ๐ฉ)
โข The logic depended on the order of operations (easy to break, especially with LLMs ๐
).
u24.gov.ua - United 24
savelife.in.ua/en/ - Come back alive
prytulafoundation.org/en - Prytula Foundation
yellow-tape.com.ua/home-eng - Yellow Tape Foundation
koloua.com/en/ - KOLO
If you like the package, the best way to show your appreciation now is by supporting my country - Ukraine ๐บ๐ฆIf you can afford it, I encourage donations to well-established charity foundations (except for the Red Cross), here are a few:
25.08.2025 11:59 โ ๐ 0 ๐ 0 ๐ฌ 1 ๐ 0Just updated bdd_widget_test!
โ ๏ธ Heads up: This release includes a breaking change. I had to remove some functionality. If you miss it, please reach out!
๐ Mind-blowing: 61K+ downloads last week! Happy to see that so many of you find it useful.
Check it out: pub.dev/packages/bdd...
u24.gov.ua - United 24
savelife.in.ua/en/ - Come back alive prytulafoundation.org/en - Prytula Foundation
yellow-tape.com.ua/home-eng - Yellow Tape Foundation
koloua.com/en/ - KOLO
6/6
As usual, if you enjoy the talk, the best way to show your appreciation now is by supporting my country - Ukraine ๐บ๐ฆIf you can afford it, I encourage donations to well-established charity foundations (except for the Red Cross), here are a few:
5/6
If youโre interested in more details, I just published an article on the topic:
olexale.medium.com/0a95cef1dd63
4/6
4/ When complexity grows, we add MORE complexity instead of simplifying the problem.
๐ก The solution: Start small. Break big problems into small ones. Let your app guide you to what's actually needed.
3/6
2/ We build emotional attachments to past solutions. They become our default, and we get defensive when challenged.
3/ Context changes, but our solutions don't. A banking app โ calculator โ social network, yet we apply Clean Architecture universally.
2/6
๐งต Just published an article on why solving NEW problems is easier than KNOWN ones (especially for experts): olexale.medium.com/0a95cef1dd63
TL;DR ๐
1/ We fall into the pattern-matching trap. Solved it before? Must use the same solution again.
1/6
u24.gov.ua - United 24
savelife.in.ua/en/ - Come back alive
prytulafoundation.org/en - Prytula Foundation
yellow-tape.com.ua/home-eng - Yellow Tape Foundation
koloua.com/en/ - KOLO
If you enjoy the talk, the best way to show your appreciation now is by supporting my country - Ukraine ๐บ๐ฆIf you can afford it, I encourage donations to well-established charity foundations (except for the Red Cross), here are a few:
17.07.2025 09:50 โ ๐ 2 ๐ 0 ๐ฌ 1 ๐ 0In this talk, I cover:
โ
When on-device AI makes sense (and when it doesnโt)
โ
How to integrate AI models into your Flutter apps
โ
Live demos to kickstart your own AI-powered features
If youโre building #Flutter apps and thinking about #AI - this is for you.
๐ Just published my "Integrating On-Device #AI Models into #Flutter Apps" talk from FGS!
In a world obsessed with LLMs and chatbots, itโs easy to forget the power of running AI locally - no servers, no latency, and better privacy.
www.youtube.com/watch?v=tRNr...
Podcast: iOS Keychain vs Android Keystore. Whether youโre building for Android, iOS, or both, youโll get practical tips and clear explanations to help you choose the right approach for your next project.
www.youtube.com/watch?v=nB4h...
That reminded me of my childhood - my friends and I used to clone each otherโs toys by making aluminum copies. Not because we didnโt have toys, but just because it was fun to create molds and pour in melted aluminum ๐
30.05.2025 20:37 โ ๐ 1 ๐ 0 ๐ฌ 1 ๐ 0๐The MiniClient series is complete!
Want more? I might stream about CI/CD, testing, or on-device AI.
Drop your ideas in the replies or YouTube comments!
๐ค Next stop: #FlutterGlobalSummit. Donโt miss it!
๐บ Catch all 3 streams here: youtube.com/playlist?lis...
Itโs all about balance. Knowing when to try new things is just as important as what to try.
By the way, the final stream of the MiniClient tutorial is happening tomorrow. I hope youโll learn something new youโll want to try in your own experiments. Donโt miss it!
(4/4)
youtube.com/live/bHxqnyB...
But when Iโm working on something production-critical or for a client, I rely on well-tested tools and familiar approaches. Thatโs not the time for experiments - thatโs when reliability matters most.
(3/4)
When Iโm experimenting or building a proof of concept, I intentionally change one or two things: a new dependency or a new architectural idea. Small changes keep things manageable and help me learn without derailing the project.
(2/4)
After my first two streams, Iโve been asked a few times:
โโDo you always structure your projects this way?โ
โโDo you always use the same dependencies?โ
The short answer is no. Every project is a chance to learn, refine, and grow.
(1/4)
youtube.com/live/bHxqnyB...
How to Block Screenshots, Screen Recording, and Remote Access Tools in Android and iOS Apps - watch our newest podcast featuring @olexale.bsky.social & @mhadaily.bsky.social
www.youtube.com/watch?v=ZHhs...
u24.gov.ua - United 24
savelife.in.ua/en/ - Come back alive
prytulafoundation.org/en - Prytula Foundation
yellow-tape.com.ua/home-eng - Yellow Tape Foundation
koloua.com/en/ - KOLO
If you enjoy the streams, the best way to show your appreciation now is by supporting my country - Ukraine ๐บ๐ฆIf you can afford it, I encourage donations to well-established charity foundations (except for the Red Cross), here are a few:
14.05.2025 11:52 โ ๐ 1 ๐ 0 ๐ฌ 2 ๐ 0๐จ Final MiniClient stream โ ๐
May 20 ๐ 4 PM UTC
We covered utility, feature & application layers. Now it's time for:
๐งญ Navigation
๐งช Testing
Wrapping up this comprehensive guide to building complex Flutter apps
www.youtube.com/live/bHxqnyB...