AASIF SHAIKH AHMEDABAD, IN

Small screens.
Big possibilities.

I build mobile apps that feel right.
Flutter, Android, and a little thoughtful AI.

6+ years in company teamsThoughtful work. Lasting products.

THE MOBILE MINDSETFIG. 001
A small screen. An open canvas.INTERACTIVE STUDY
MY EVERYDAY TOOLKIT
  • Flutter
  • Dart
  • Android
  • Kotlin
  • Firebase
  • REST APIs
  • Offline sync

01 / A FEW TEAM EFFORTS

Products I’ve helped ship.

All work ↗︎

02 / LESS SCROLL, MORE KNOW-HOW

A little knowledge.
Thirty seconds at a time.

Swipe. Tap. Take something away. →
Flutter 01 / 06

Rebuild less. Read more.

Use const widgets where possible; measure rebuilds before you optimize.

const SizedBox(height: 16)Tap for the why +

A const constructor lets Flutter reuse an unchanged widget instance. It does not make every rebuild disappear. Use DevTools to find the expensive work.

Read the reference ↗︎
Offline sync 02 / 06

The network is a guest.

Let local data keep the screen useful while the network catches up.

local → screen · queue → serverTap for the why +

A local source of truth and an explicit retry queue make failed requests easier to reason about. Decide how to resolve conflicting edits before you need to.

Read the reference ↗︎
Kotlin 03 / 06

Let cancellation travel.

Keep related coroutines inside a scope with a clear lifetime.

viewModelScope.launch { load() }Tap for the why +

Structured concurrency ties child jobs to their parent. Do not swallow CancellationException in a broad catch; cancellation needs to reach the coroutine machinery.

Read the reference ↗︎
Performance 04 / 06

Profile before you guess.

Measure on a real device in profile mode, then change one thing.

flutter run --profileTap for the why +

Debug-mode timing is not representative of release behavior. A trace can tell you whether work is happening on the UI thread, raster thread, or elsewhere.

Read the reference ↗︎
AI in apps 05 / 06

Give AI an exit door.

Keep a useful manual path when a generated answer is slow or wrong.

loading → answer | retry | editTap for the why +

This is a design recommendation: disclose generated content, let people edit it, and preserve their input when a request fails. A model response should never silently commit a sensitive action.

Read the reference ↗︎
Android 06 / 06

State survives the screen.

A ViewModel can retain UI state through configuration changes.

UI ← StateFlow ← ViewModelTap for the why +

A ViewModel outlives a configuration change, but not process death. Use saved state or durable storage for data that must survive beyond that lifetime.

Read the reference ↗︎

03 / INTERACTIVE STUDIO

Code you can experience.

Flight physics, visual systems and on-device AI →

04 / WHAT I CAN HELP WITH

Mobile first. More in the toolkit.

See all services ↗︎

Also in my range: brand · web · graphics · SEO · marketing Explore working examples ↗︎

ASPHOTO / TODO(confirm)

05 / THE HUMAN BEHIND THE BUILD

Aasif. Developer. Focused on mobile.

Ahmedabad-based, 6+ years building mobile apps.
Currently at MyCo; previously Nichetech Computer Solutions.

A little more about me ↗︎

HAVE SOMETHING IN MIND?

Let’s make it feel right.

Tell me what you’re thinking ↗︎