I'm a Flutter & Dart enthusiast. No RGB keyboards or 42inch widescreens. Just me and my laptop at the dinner table. Building @gymplyapp.

Alkmaar, Nederland
Joined April 2021
I have been fighting this button since September 23rd. I have spoken to Sevanthi, Ranadeep and Khaysia. I am about to return the MacBook. Every @AppleSupport expectation ever crushed by this horrible experience, I cannot believe it is this hard to take an easy 100 dollars.
1
1
190
Added the App Store badge to gymply.app πŸ‘€ Just waiting for my work apple phone to arrive so I can try and get an apple developer account πŸ™
2
1
2
280
Arme Marcel. Rust in vrede, man. – at Alkmaar, The Netherlands
51
I've sold the ROG and bought a refurbished MacBook Air. I can now finally, finally develop for iOS as well πŸ’™ Let's see if Antigravity can get it up and running quickly πŸ₯³
15
380
I'm bored, let's try Fedora again πŸ™ – at Alkmaar, The Netherlands
3
400
The good part: Just ran a script to compare folders to files and I apparently missed hundreds of exercise images for GYMPLY. The bad part: Copying and renaming them one by one nowπŸ₯² Great extra value to gymply.app but this is quite tedious work πŸ˜‚
1
2
118
Just did the refactor for signals 7.1.0. I'm so hoping I did this correctly πŸ˜‚
1
108
New clutch, snare and pulley. Anyone ever ridden one of these? Trip down memory lane on Italian engineering. Still rocksolid after close to 30 years #citta #gilera
3
188
LOL, one single refactor absolutely depleted my free tokens for Antigravity IDE πŸ˜‚ Back to using my own API key in Android Studio πŸ˜…
2
195
GYMPLY going strong on Google Play, about 10 downloads a day πŸ™ Using it on a daily basis, still loving what I've cooked up 😍 Nostr feed only has me and a few users, that needs to pick up traction though, it's lonely πŸ˜‚ gymply.app
4
85
Went on an 8hr ride with colleagues. Body still hurts, but it was sooo good. The Netherlands might be flat, but it's still pretty 😍
1
99
Must read. Please protect your keys and at least set a spending cap, now possible via Google AI Studio! Thanks for the write-up @ulusoyapps πŸ™ Hope they rip up the bill soon.
The GCP project of my @FlutterDev @Firebase app got suspended this weekend for abuse, after a single day of €3,167 in unauthorized Gemini API charges. The root cause turned out to be a #Firebase Hosting default that is hard to know about. Worth sharing what I learned. I thought the Firebase and Google Cloud project was clean and safe. Client uses Firebase AI Logic (proxy, no on-device Gemini key) with App Check via Play Integrity / App Attest. The suspension email said "key published on public sources." But: my GitHub repo is private and was never public. flutter build web was never run for this project. Where was the leak surface? Google AI Studio showed three Gemini-callable keys. Two tight (server-side). One was a "Browser key (auto created by Firebase)" β€” Unrestricted, since Nov 2024. That was the web app in my generated firebase_options.dart, from when I configured Flutter web at project init. Here's the part I didn't know about: Firebase Hosting auto-serves your web SDK config at a reserved URL β€” https://.web.app/__/firebase/init.json β€” as plain JSON, unauthenticated, to anyone. It includes apiKey, appId, projectId, authDomain. This endpoint is active whenever you have (a) a registered web app in Firebase Console + (b) any Hosting deploy. Contents of the deployed site are irrelevant. Mine was a simple CSS landing page that doesn't reference Firebase JS SDK at all. Endpoint leaked the key anyway. Bots scrape *.web.app/__/firebase/init.json because the pattern is universal across every Firebase project. Mine got picked up, the key was Unrestricted (= usable for any enabled API), and someone burned €3K of Gemini inference in a few hours. Project reinstated after appeal; outstanding balance still in review. Lessons I missed: - Auto-generated browser keys are Unrestricted by default (at least the time project was created). Always add HTTP referrer + API restrictions at creation. - Don't register a web app unless you use the JS SDK. - Set a Gemini spend cap + budget alert. €100/day cap. You can easily do this in Google AI Studio What I would ask the Firebase team: β€” Browser keys should default to restricted (HTTP referrer to project domains, API restriction to Firebase services) -> not sure this has changed after the date I created the project. β€” Reserved __/firebase/init.json should be opt-in. Static websites hosted with Firebase Web hosting do not need the API key info. β€” Firebase Console should warn when a key has been Unrestricted for >N days. Google AI Studio warns when you visit API keys page, but it should be visible on homepage. β€” Default-on spend caps for Generative Language API. TLDR; "Private repo" is not a meaningful security boundary when the key has another publicly-reachable surface. Audit not just your code, but every endpoint your project ID exposes including the ones the platform creates for you without telling you. Always manually verify API restrictions.
2
220
Apparently shared my google console link, but who cares, I'm happy πŸ˜‚
31
With Gemini’s help, gymply.app now offers one‑time and subscription donations. Supporters can change the app icon as a small gesture of appreciation. Anything else I should definitely add for supporters?
3
134
FUN! GYMPLY supporters now get to choose their appicon. A work in progress, but it works on my emulator πŸ˜‚
2
140
Particularly nice and finegrained muscle heatmap package for Flutter: pub.dev/packages/flutter_bod… Going to look into separating my musclegroups into smaller muscles for more refined details. gymply.app
1
8
385
Don't mind if I do πŸ‘€ Fedora absolutely rocks on my ROG X13 πŸ’™
1
2
127
Got my friend's old helmet camera (he leveled up to insta360 x5) and tried it out yesterday evening. This is great fun, just dump all files in some actioncam app and it creates this πŸ’™
4
185
Added a muscle heatmap for gymply.app πŸ’ͺ Getting ready for a quick 🏍️ ride before work now, have a great day all πŸ’™
1
5
229