Igor Shtein's notes on backend development, Flutter, DevOps and self-hosting — things I know I'll want to reference later, and you 🧑🔧 may find useful too.
The problem One of the goals of Doshboard is to allow travelers, such as digital nomads, to make finance tracking more precise and convenient. One aspect of it is proper timezone handling. It is a frequent situation for a nomad to have a bank account in their home country, and as usual with banking apps - they assume that you only view transactions from that country. 'Abroad' is a word bankers…
x402 Cloudflare has published an announcement couple of days ago about Monetization Gateway launch. This is revolutionary for many reasons. It removes the high entry barrier for monetization, it lets you have a very precise control over what you charge for and how low the payment can be. This literally can change how we use internet making advertisement economy internet runs on obsolete. It sounds…
The problem I am adding a server to my Flutter app Doshboard (intentionally overengineered for learning - don't do this in your pet projects). Internally the microservices already talk gRPC , but the public API conventionally uses REST, so I put a REST - gRPC transcoder in front of them. Do I need that transcoder though? My users wouldn't mind lower data usage and better streaming, and I wouldn't…
After developing for some time with BLoC , I finally made the switch to Riverpod . The benefits looked really clear as I saw Riverpod as an evolution of BLoC that goes beyond the abstractions of business logic and actually handles orchestration of the logic blocks. However, with this orchestration comes complexity, and not complexity of riverpod itself, but from the fact that you now can do the…
So you’ve installed Riverpod , Freezed , or Drift , ran the code generation for the first time, and noticed a bunch of new files with .g.dart or .freezed.dart appearing. Now you’re wondering: Should I commit these files to version control? Unfortunately, there is no "one size fits all" answer. The short version is: If you aren't sure, you should commit them. However, there are specific…
Say you are following Flutter best practices using immutable models, and historically the best way of doing it have been the freezed package. If you do - you are likely annoyed with all the files generated by it where you end up with 3 files instead of 1. Excluding these files from IDE altogether is not practical since you may want to pick into the generated code to see what it actually looks…
The N+1 Query Problem: A Django Developer's Nightmare (And How to Wake Up) Picture this: Your Django application has been humming along beautifully for months. Users are happy, servers are stable, and you're feeling pretty good about your architectural choices. Then you casually open Sentry for your morning dose of masochism, and BAM—a new issue appears like an unwelcome party crasher: "N+1…
Backward incompatible migrations Some migrations may be backward incompatible and will break production for a shot period of time between the migration application and pod rotation. This also will be a problem for a blue/green deployment if you to decide to implement it. To avoid this kind of downtime migration should be done in 2 steps. Caution Use this method only for the listed below…
Lets save you and future me 5 minutes of precious time as of how to parse the dart tests and coverage results in gitlab pipeline. tl;dr In your .gitlab-ci.yml i mage : i nstrumentisto/flutter:latest s tages : - t est t est : s tage : t est b efore_script : - e xport PATH="$PATH":"$HOME/.pub-cache/bin" - f lutter pub get - f lutter clean - f lutter pub global activate junitreport - f lutter pub…
The setup So you have a truenas scale server, which holds all your most precious data . And chances are this is a machine you want to be able to access from anywhere because of this. Maybe even you want to actually utilize the sharing capabilities of your NAS, like Samba to use your data. Good use of resources would be to turn you NAS into a VPN server. This is done really easily on Truenas scale…