Latest Projects
CatchNone
CatchNone is a macOS/iOS app that simplifies catch-all email orchestration. Give every shop, newsletter, and account an address of its own, and keep your real one to yourself.
Kanji Koi
Kanji Koi is a Japanese learning app that helps you prepare for the JLPT exam. It's a fun and easy way to learn Japanese characters by drawing them or using flashcards.
Published Packages
multi_network_image
A lightweight package that allows you to easily handle multiple sources for adaptive images in your Flutter applications.
flutter_kanjivg
Simplifies parsing and displaying information about Japanese in Flutter applications. It handles stroke order animation, provides original radical forms, and more!
data_saver
Reads Data Saver on Android and Low Data Mode on iOS through a single Dart API, so an app can back off on a metered connection. Written against the platform APIs in Kotlin and Swift.
smooth_gradient
Gradients that interpolate along a curve instead of linearly, which removes the grey band a plain two-stop gradient leaves in the middle. The kind of detail a design spec never mentions.
Latest Articles
Year Review, 2025
One year ago I made a tweet in which I described some of my experiences that I had that year. This year I decided to go with a long-form blog post so I can go more in-depth about all the topics. Side Projects Overview…
Receive App Store & Google Play payouts with Revolut
You wake up, open your RevenueCat dashboard, and to your surprise it looks like your app overnight went viral and now your in-app purchases are responsible for 10% of your country’s GDP 🤯 The next question is - how do…
Implementing ads in Flutter: Monetize your app with AdMob
After finishing your awesome project the next logical step is to monetize it. Fortunately, When it comes to mobile apps there are many ways to do so. The most basic ones include: In-app purchases (including consumables,…
Introduction to flutter_hooks: Get rid of your stateful boilerplate
You probably wrote at least one Flutter widget in your life. Writing them is straightforward - define a constructor, override a build method, and return whatever you want. But wait! Real apps are not that simple. You…