Hi, I'm Gokul. I lead mobile at MyFi in Bangalore, and I've shipped Flutter and Swift apps since 2019. I also build open-source tools other developers install, and I take apps apart to see how they work.
Open to SDE and mobile lead roles
Things I've built that I'm proud of
If the connection drops, it reconnects and resumes from the last event. Each word below is one server event. pub.dev ↗
Pure black, with violet, amber and crimson accents. Zed extension ↗
class Feed extends ChangeNotifier { final List<Post> posts = []; @override Future<void> refresh() async { final res = await http.get(Uri.parse('https://api.example.com/feed')); if (res.statusCode == 200) notifyListeners(); } }
A short Dart snippet in The Dark Side's colours.
A home server I run for media, network-wide ad blocking and coding agents. One conversation plays below.
Favorite commits and learnings
The Android app made its subscription decision locally. I changed that decision in a modified build; ads disappeared. I reported it privately. Read the story →
The verified identity and the account selected for login could disagree. The fix ties access to the verified identity and opens an account only when the two match.
This is a very simplified version of what happened.
A small Go service keeps the AI stream running after the app closes. Reopen it and it replays what you missed; if you don't, one push says it's ready.
Poster images held every HTTP/1.1 connection the browser allows, so the movie list waited in line. Cancelling them on refresh fixed it. Read the PR ↗
The movie list waited for a free connection: 7.5 s in the real app.Poster loads were cancelled, so the movie list went first: 695 ms.
Six connections per site, all held by posters. Sped up; 7.5 s and 695 ms are from the PR.
A blur package screenshotted the whole screen every frame, and GPU memory hit about 3 GB. I replaced it with a two-pass shader that blurs in place.
Patching my theme's colours would have fixed it for my users only. I rewrote Zed's Dart highlight queries instead, and every theme got the fix. Read the PR ↗
class Feed extends ChangeNotifier { final List<Post> posts = []; @override Future<void> refresh() async { final res = await http.get(Uri.parse('https://api.example.com/feed')); if (res.statusCode == 200) notifyListeners(); } }
Illustrative snippet in The Dark Side's colours. The PR has the real screenshots.
Say hi
saigklkrishnan@gmail.comCopy email