Sign in

Felix Yew

@felixyew.bsky.social
165 followers 15 following 1.1K posts

Indie hacker 🚀 | Developer 👨‍💻 | Entrepreneur building startups & solving problems | Passionate about fintech, AI, and cloud security

PostsRepliesMedia
Felix Yew @felixyew.bsky.social · 15h
Developer happiness: Feature finished ❌ Bug prevented before production ✅ Different kind of dopamine. #buildinpublic #indiedev
051
Felix Yew @felixyew.bsky.social · 19h
Add tests for bugs you nearly shipped too. A near miss is still valuable information about where your system is weak. #buildinpublic #indiedev
171
Felix Yew @felixyew.bsky.social · 22h
I caught a bug today before release. That feels much better than reading about it in a support email tomorrow. #buildinpublic #indiedev
062
Felix Yew @felixyew.bsky.social · 01/10/2026
Average request: fast. That one request the user is staring at: 14 seconds. Statistics can be technically correct and emotionally wrong. #buildinpublic #indiedev
381
Felix Yew @felixyew.bsky.social · 01/10/2026
Average latency can hide terrible user experiences. Look at slow outliers too. P95 and P99 can tell a very different story. #buildinpublic #indiedev
151
Felix Yew @felixyew.bsky.social · 01/10/2026
New month. First task: investigating why one cloud operation occasionally takes much longer than expected. October apparently chose debugging. #buildinpublic #indiedev
030
Felix Yew @felixyew.bsky.social · 30/09/2026
September developer report: Features shipped: some Bugs discovered: yes Things learned: many Coffee consumed: confidential #buildinpublic #indiedev
170
Felix Yew @felixyew.bsky.social · 30/09/2026
Track invisible engineering wins too. Fewer crashes. Fewer requests. Lower memory. Faster restore. Simpler code. Features are not the only progress. #buildinpublic #indiedev
171
Felix Yew @felixyew.bsky.social · 30/09/2026
End of September. A lot of my work this month never appeared in screenshots. Database changes. Sync fixes. Recovery logic. Encryption improvements. That is normal. #buildinpublic #indiedev
051
Felix Yew @felixyew.bsky.social · 29/09/2026
Developer abstraction lifecycle: 1. These are basically the same. 2. Add one exception. 3. Add seven exceptions. 4. Rethink everything. #buildinpublic #indiedev
051
Felix Yew @felixyew.bsky.social · 29/09/2026
Abstract shared behavior. Do not abstract away meaningful differences. Sometimes two systems look similar on a diagram but fail in completely different ways. #buildinpublic #indiedev
092
Felix Yew @felixyew.bsky.social · 29/09/2026
Today’s challenge: Keep local vault, iCloud, and zero-knowledge cloud backup behavior understandable without filling the codebase with special cases. Storage abstraction sounds easy until reality arrives. #buildinpublic #indiedev
091
Felix Yew @felixyew.bsky.social · 28/09/2026
Rewrite temptation: This would be so much cleaner from scratch. Production experience: Would it though? #buildinpublic #indiedev
071
Felix Yew @felixyew.bsky.social · 28/09/2026
Refactoring a mature app is not about rewriting everything. Preserve what already works. Replace complexity where the return is worth the risk. #buildinpublic #indiedev
061
Felix Yew @felixyew.bsky.social · 28/09/2026
Started today looking at old Safety Photo+Video code next to the newer cloud architecture. You can almost see two generations of thinking living in the same project. #buildinpublic #indiedev
071
Felix Yew @felixyew.bsky.social · 27/09/2026
Something I appreciate more every year: Simple code is usually the result of difficult thinking. #buildinpublic #indiedev
061
Felix Yew @felixyew.bsky.social · 27/09/2026
This week was mostly about reducing moving parts. Less duplicated logic. Fewer backend calls. Clearer sync states. Not exciting work. Very useful work. #buildinpublic #indiedev
071
Felix Yew @felixyew.bsky.social · 26/09/2026
You know the architecture is getting complicated when variable names start sounding like legal documents. #buildinpublic #indiedev
051
Felix Yew @felixyew.bsky.social · 26/09/2026
Booleans multiply surprisingly fast. isUploading isRetrying isPaused isWaiting isReallyPaused Sometimes an explicit state machine is simpler. #buildinpublic #indiedev
261
Felix Yew @felixyew.bsky.social · 26/09/2026
Weekend debugging session. I found myself fixing a problem by adding another flag. Stopped. Removed the flag. Fixed the state model instead. Feels better. #buildinpublic #indiedev
061
Felix Yew @felixyew.bsky.social · 25/09/2026
My code: Retry failed request. Also my code: Congratulations, you now have two folders. #buildinpublic #indiedev
051
Felix Yew @felixyew.bsky.social · 25/09/2026
If an operation may be retried, design it to be idempotent from day one. Retries should not create duplicate reality. #buildinpublic #indiedev
0101
Felix Yew @felixyew.bsky.social · 25/09/2026
Found a code path today that could trigger the same backup operation twice. Nothing catastrophic happened. That is not the same as saying the design was safe. #buildinpublic #indiedev
192
Felix Yew @felixyew.bsky.social · 25/09/2026
Developer creates 17 internal states. User sees: Loading… Maybe we can do better 😅 #buildinpublic #indiedev
181
Felix Yew @felixyew.bsky.social · 24/09/2026
A cloud backup can be technically correct and still feel broken. If the user cannot tell whether it is uploading, waiting, retrying, or finished, the experience has failed. #buildinpublic #indiedev
061
Felix Yew @felixyew.bsky.social · 23/09/2026
Today’s refactor: No new feature. No new screen. Just fewer reasons for future me to complain about present me. #buildinpublic #indiedev
051
Felix Yew @felixyew.bsky.social · 23/09/2026
If changing one module forces edits across five unrelated places, your boundaries probably need work. #buildinpublic #indiedev
071
Felix Yew @felixyew.bsky.social · 23/09/2026
One thing I’m learning while upgrading Safety Photo+Video: The hardest code to maintain is often not bad code. It is code solving too many responsibilities at once. #buildinpublic #indiedev
061
Felix Yew @felixyew.bsky.social · 22/09/2026
Backend optimization: Yesterday: call API 100 times. Today: call API 5 times. My server bill quietly approves. #buildinpublic #indiedev
0111
Felix Yew @felixyew.bsky.social · 22/09/2026
Before adding more servers, inspect how often your client talks to the backend. Sometimes scaling means making fewer calls, not buying more infrastructure. #buildinpublic #indiedev
081
Felix Yew @felixyew.bsky.social · 22/09/2026
Spent today looking at how Safety Photo+Video handles thousands of small cloud changes. One request is cheap. Thousands of tiny requests are not. Batching can completely change performance. #buildinpublic #indiedev
081
Felix Yew @felixyew.bsky.social · 21/09/2026
Me: finally fixed the sync bug. The sync bug wearing a fake moustache: Hello again. #buildinpublic #indiedev
2101
Felix Yew @felixyew.bsky.social · 21/09/2026
When the same bug returns in a different form, stop patching. You may be looking at an architecture problem, not a bug. #buildinpublic #indiedev
0111
Felix Yew @felixyew.bsky.social · 21/09/2026
Started the week reviewing a sync issue I thought was already solved. It turns out the fix handled the symptom, not the cause. Back to the architecture. #buildinpublic #indiedev
081
Felix Yew @felixyew.bsky.social · 20/09/2026
Tomorrow’s plan: Probably one feature. Reality: We will see what the bug tracker has planned. #buildinpublic #indiedev
1101
Felix Yew @felixyew.bsky.social · 20/09/2026
One thing Safety Photo+Video keeps teaching me: Reliable software is mostly the result of respecting failure. #buildinpublic #indiedev
0112
Felix Yew @felixyew.bsky.social · 20/09/2026
Two more weeks of building. Less code than expected. More understanding than expected. I will take that trade every time. #buildinpublic #indiedev
0111
Felix Yew @felixyew.bsky.social · 19/09/2026
Nothing makes a developer happier than reproducing something terrible. Very normal profession. #buildinpublic #indiedev
0121
Felix Yew @felixyew.bsky.social · 19/09/2026
Keep enough context with unresolved bugs. Device. OS. App version. Storage state. Network. Sequence of actions. Future-you may eventually find the missing clue. #buildinpublic #indiedev
191
Felix Yew @felixyew.bsky.social · 19/09/2026
Today I reviewed an old bug marked cannot reproduce. Six months later, I finally reproduced it. I almost felt happy. Almost. #buildinpublic #indiedev
1101
Felix Yew @felixyew.bsky.social · 18/09/2026
Changed the progress UI to show the current operation. Same speed. Much calmer experience. #buildinpublic #indiedev
0111
Felix Yew @felixyew.bsky.social · 18/09/2026
Long operations need signs of life. Users can tolerate waiting much better than uncertainty. #buildinpublic #indiedev
0102
Felix Yew @felixyew.bsky.social · 18/09/2026
A small UX bug today: Backup was working correctly, but the progress percentage stopped moving for too long. Technically fine. Emotionally broken. #buildinpublic #indiedev
191
Felix Yew @felixyew.bsky.social · 18/09/2026
A small UX bug today: Backup was working correctly, but the progress percentage stopped moving for too long. Technically fine. Emotionally broken. #buildinpublic #indiedev
081
Felix Yew @felixyew.bsky.social · 17/09/2026
My dev device: Works perfectly. Brand-new device: Who are you and why do you assume this file exists? #buildinpublic #indiedev
2120
Felix Yew @felixyew.bsky.social · 17/09/2026
Test onboarding, migration, and restore from genuinely clean state. Your development phone knows too much. #buildinpublic #indiedev
130
Felix Yew @felixyew.bsky.social · 17/09/2026
I spent the morning testing restore on a clean device. No cached state. No old database. No shortcuts. Clean-device testing exposes everything you accidentally depended on. #buildinpublic #indiedev
030
Felix Yew @felixyew.bsky.social · 16/09/2026
Deleting code successfully might be the closest developers get to decluttering therapy. #buildinpublic #indiedev
040
Felix Yew @felixyew.bsky.social · 16/09/2026
Dead code still has a maintenance cost. If a path cannot happen anymore, remove it. Future you should not have to wonder if it matters. #buildinpublic #indiedev
160
Felix Yew @felixyew.bsky.social · 16/09/2026
Today I found an old fallback path that could never actually run anymore. Deleted 80 lines. Nothing broke. Beautiful. #buildinpublic #indiedev
140