Aaron Pina

187 posts

Aaron Pina banner
Aaron Pina

Aaron Pina

@aaronpina

Zug-based .NET security obsessive | Practical JWT guides + building tiny useful apps | https://t.co/qIvRv0N0Uu (open now in your exact time window) | QuickResult NuGet

Katılım Nisan 2016
209 Takip Edilen39 Takipçiler
Sabitlenmiş Tweet
Aaron Pina
Aaron Pina@aaronpina·
🧵1/ Tired of Result libraries that force you into heavy error classes or clunky chains? I spent years writing monadic code under Paul Louth (the language-ext guy) and wanted that same clean LINQ feel, but lightweight, zero dependencies, and dead simple. So I built QuickResult. v1.8 is now stable & feature-complete.
English
1
0
3
64
Aaron Pina
Aaron Pina@aaronpina·
Dinner Date update 👇 This morning I focused on two things: 1. Building the new premium dynamic sub-type filtering (so when you search for “restaurants”, it actually shows the real types of restaurant available in your area). It’s more accurate but expensive on API calls, so I’m adding caching. Still on a feature branch. 2. Got Codex to write a bunch of unit, widget, and integration tests. I was getting too many regressions when adding new features, so this was necessary. Planning to add an AGENTS.md file soon too. On the flip side, still zero sign-ups on the landing page and zero additions to the testing group despite posting on X. Starting to realise I need to stop coding for a bit and actually do some marketing. Might have to bite the bullet and ask friends & family to join the public beta testing group (feels awkward but I guess that’s part of it). If you’re in Switzerland and have an Android phone, I’d really appreciate it if you joined the test group. Testers get full premium access during and after the beta. Link: groups.google.com/g/dinner-date-… #buildinpublic #indiehacker #DinnerDate #Switzerland
Aaron Pina tweet media
English
0
0
0
3
Aaron Pina
Aaron Pina@aaronpina·
Desk photo and update from Dinner Date today 👇 Main focus was getting the public beta ready. Added a temporary flag to disable the paywall for testers (anyone else do this for early testing?) Published the build… then discovered maps weren’t loading. Codex helped me track it down - had to add the release SHA-1 fingerprint in Google Play. Fixed it. The beta build is now in review. While we wait, anyone in Switzerland who wants to test can join the group here: groups.google.com/g/dinner-date-… I’ll send the download link as soon as it’s approved. Looking for Android testers - you’ll get full premium access during and after the test. Who’s in? Just reply or join the group. #buildinpublic #indiehacker #DinnerDate #Switzerland
Aaron Pina tweet media
English
0
0
0
18
Aaron Pina
Aaron Pina@aaronpina·
Android beta testers needed for DinnerDate! 🍽️ Find restaurants, bars & cafes open exactly when you want to go out. Set your time window and location - perfect for planning real dates in Switzerland (Zurich first). Google Play requires 12 testers for closed testing. Join the group here: groups.google.com/g/dinner-date-… or DM me your Google Play email. I'll test your app back if you have one! #AndroidBeta #BetaTesters #DinnerDate #Zurich #Switzerland
Aaron Pina tweet media
English
1
0
0
29
Aaron Pina
Aaron Pina@aaronpina·
Just spent the whole day on the “not-fun” side of Dinner Date: Heavy configuration work across Google Play Console, Google Cloud, and RevenueCat to get the production app and API keys properly set up. Finally moved from local debugging into Internal Testing mode. Now I have to wait up to 36 hours for all the permissions to propagate... Building the actual app is so much easier and more enjoyable than all this admin/config stuff 😂 Still looking for Android testers in Switzerland for the closed test. If you’re in CH and can help test, you’ll get full premium / unlimited access during and after testing. Anyone interested? Just reply or DM me. #buildinpublic #indiehacker #DinnerDate
Aaron Pina tweet media
English
0
0
0
24
Aaron Pina
Aaron Pina@aaronpina·
Progress on Dinner Date today: - Finally replaced the default Flutter icon with my actual app icon. - Switched from Claude to Codex in agent mode; it’s been noticeably more reliable. - Added a super-user system in Supabase so only internal testers can access debug features. As a professional developer, I’ve realised I really need to get better at Dart & Flutter so I can properly review and guide the AI instead of just accepting whatever it spits out. Next up: implementing a lifetime subscription tier that I’ll give to testers for free. I’m looking for 12 Android users in Switzerland who are willing to test the app. If you join the closed test, you’ll get unlimited/premium access during testing and after launch. Anyone in CH interested? Just reply or DM me. #buildinpublic #indiehacker #DinnerDate
English
0
0
0
47
Aaron Pina
Aaron Pina@aaronpina·
Small but important wins on Dinner Date today: - Got the signed release bundle working (Codex in Android Studio finally delivered after Grok kept giving me bad advice 😂) - Implemented RevenueCat sandbox + did multiple rounds of manual testing (Google login, subscribe, expire subscription, etc.). It’s looking solid now. - Decided to launch Android first, then iOS shortly after. Still need testers for the closed testing phase before I can go fully public. My landing page wait-list is basically empty, so I’m thinking of pushing another Instagram post to try and drive some sign-ups. If you’re in Switzerland and want to be one of the first to try it, feel free to hit the link in bio or reply here. Any tips from people who’ve launched solo mobile apps? How did you get your first 12–20 testers? #buildinpublic #indiehacker #DinnerDate
English
0
0
0
49
Aaron Pina
Aaron Pina@aaronpina·
Haven’t posted a build-in-public update in a few days, so here’s what I’ve been up to: - Set up Supabase and Google login - Generated 7" and 10" tablet screenshots using Grok Imagine & Gimp (because I don’t have physical tablets 😂) - All screenshots are now uploaded to Google Play Next up: creating an internal test release. The part I’m stuck on is the “closed testing” requirement. Google wants at least 12 testers for 14 days before I can go public. I don’t have 12 people ready to test yet. For now I’m still driving people to the landing page (dinnerdate.ch). If you’re in Switzerland and want early access when it drops, feel free to sign up! Any advice on how solo devs usually get those first 12 testers? Or do you just start with a small closed test and gradually open it up? #buildinpublic #indiehacker #DinnerDate
Aaron Pina tweet media
English
0
0
0
40
Aaron Pina
Aaron Pina@aaronpina·
4/4 If you’ve been following the series, this one is a big step forward. Repo with all the changes: github.com/aaroncpina/Aar… Let me know what you think. Especially if you spot anything that could be improved.
English
0
0
0
2
Aaron Pina
Aaron Pina@aaronpina·
3/4 Machine-to-machine auth is now spec-compliant and production-ready. The foundation is also much cleaner for adding Authorization Code and PKCE in the next article. Full write-up and all the before/after code, plus testing commands here: aaronpina.com/jwt-authentica…
English
1
0
0
6
Aaron Pina
Aaron Pina@aaronpina·
🧵1/4 Article 12 is live. I finally ditched the old fake /user/register endpoint and the entire “pretend clients are users” approach. We now have real OAuth 2.0 client registration: proper client_id and a securely hashed client_secret, a dedicated Client repository, and clean authentication inside the TokenService. The auth server is starting to feel like the real thing.
English
1
0
0
8
Aaron Pina
Aaron Pina@aaronpina·
After a much bigger refactor than I expected, Article 12 on my JWT Authentication blog is ready. We now have a real OAuth 2.0 authorisation server with proper client registration instead of the old user /register hack. Coming Tuesday morning at 07:00.
English
0
0
0
7
Aaron Pina
Aaron Pina@aaronpina·
Made solid progress on the business side of Dinner Date today: Wrote and published a proper Privacy Policy on dinnerdate.ch Added it to Google Play + got most of the Store Listing done (uploaded phone screenshots, etc.) Hit a wall when I saw I also need 7-inch and 10-inch tablet screenshots… will tackle the emulators tomorrow. Also tried Cursor for a bit (everyone says it’s the best agent), but it kept ignoring instructions and hallucinating. Switched straight back to Claude and cancelled Cursor 😂 Anyone else had better luck with Cursor, or is Claude still king for Flutter work? #buildinpublic #indiehacker #DinnerDate
Aaron Pina tweet mediaAaron Pina tweet media
English
0
0
0
20
Aaron Pina
Aaron Pina@aaronpina·
Just spent my whole coding session today on the business side of DinnerDate.ch instead of building 😂 - Created my Google Play Developer account - Set up RevenueCat for subscriptions - Now waiting on Google to verify my identity Anyone know roughly how long identity verification usually takes in 2026? Also, does anyone have experience charging in CHF (Switzerland) with RevenueCat / Google Play? Any gotchas I should know about? App is coming along nicely though. Weekly, monthly and yearly tiers are ready in test mode. Would you actually pay for unlimited romantic dinner spots and multilingual support? Drop a 🔥 if yes. #buildinpublic #indiehacker #DinnerDate
English
0
0
0
7
Aaron Pina
Aaron Pina@aaronpina·
Just shipped full multilingual support for DinnerDate.ch 🇨🇭 ✅ German ✅ French ✅ Italian ✅ English The app now auto-detects your phone language and translates everything — UI, Google Places tags, day names (“Mittwoch” instead of Wednesday), the lot. Claude used proper Flutter localisation (l10n.yaml & helpers) so no more hardcoded English strings. Feels so much more polished now! Switzerland, this one’s built for you 🔥 Would you actually use this for date-night planning? Drop a 🔥 if yes, or tell me which language you’d want first. → dinnerdate.ch (link in bio) #buildinpublic #indiehacker #DinnerDate #swissdating
Aaron Pina tweet mediaAaron Pina tweet mediaAaron Pina tweet mediaAaron Pina tweet media
English
0
0
0
19
Aaron Pina
Aaron Pina@aaronpina·
JWT + OAuth 2.0 (with refresh tokens) is my default for almost everything now. Quick breakdown: Session-based -> only if you’re building something very simple and already have a monolith with sticky sessions. It doesn’t scale well and adds server state. Plain JWT -> great for internal services or microservices where you control both sides. Stateless and fast, but you have to be careful with token revocation and short expiry + refresh tokens. OAuth 2.0 & JWT (the combo most people actually mean) -> best choice for anything that needs to be secure, scalable, and support multiple clients (web, mobile, third-party apps). You get proper flows (Authorisation Code & PKCE), refresh tokens, and you can easily add scopes/claims. I almost never use plain sessions anymore unless it’s a tiny internal tool. What are you building?
English
1
0
1
12
Krishna Kumar
Krishna Kumar@krishnapro_·
Which Authentication do you use? 1. JWT 2. OAuth 3. Session-based
English
1
0
0
34
Aaron Pina
Aaron Pina@aaronpina·
Just finished my morning coding session on DinnerDate.ch ✅ Polished the UI hard: - Grouped opening hours by day (no more duplicate labels) - Nice two-column layout for hours - Search panel now caps at actual content height - Added “No spots found” empty state - Alphabetically sorted the sub-type drop-down Also discovered a stupidly fast Linux shortcut to pull screenshots straight into Android Studio with one command: adb exec-out screencap -p > ~/Pictures/screenshot-$(date +%s).png Core functionality is now basically finished 🔥 Next up: - Figure out monetisation - Add German / French / Italian (because Switzerland) Would you actually use this for date nights? Drop a 🔥 or tell me what you’d want first. dinnerdate.ch (link in bio) #buildinpublic #indiehacker #DinnerDate
Aaron Pina tweet mediaAaron Pina tweet mediaAaron Pina tweet media
English
0
0
0
17