About

๐Ÿ‘‹ Hi, I’m Mohamed Shalan โ€” a senior mobile software engineer with 9+ years building and scaling native Android apps in Kotlin, plus cross-platform work in Flutter and Kotlin Multiplatform. Over the past year I’ve also taken on a second, self-directed track: defining how AI coding agents should operate safely inside large, multi-language codebases.

I’ve worked across delivery, telecom, and e-commerce, shipping subscription and rewards products used by millions of people daily โ€” and, more recently, writing the audits, RFCs, and governance frameworks that decide how AI agents are allowed to touch production code.


๐Ÿ”ง What I Do

  • Architect and build native Android apps with Jetpack Compose, Coroutines/Flow, and multi-module Gradle architecture, alongside Flutter and Kotlin Multiplatform for cross-platform delivery
  • Audit codebases for AI-readiness โ€” scoring rubrics, test-coverage gaps, and guardrails that decide whether an AI agent can safely work in a given module
  • Design governance frameworks for AI agent skills โ€” CI quality gates, versioning, and security review, keeping deterministic checks (which block) separate from model-backed ones (which only advise)
  • Build developer tooling that treats reproducibility as a first-class requirement โ€” lockfiles, pinned commits, checksum verification โ€” applied to AI agent skills the way npm applies it to packages

๐Ÿง  What I Believe In

  • Determinism vs. AI as a design axis: the pipelines that must be correct every time stay deterministic; AI is layered on top with explicit guardrails, and it’s always clear which is which
  • Evidence over confidence: architecture decisions and audit findings should point at line numbers, commit hashes, and dated sources โ€” not vibes
  • Security-first by default: if you’re the one proposing AI infrastructure, you’re also the one responsible for its blast radius
  • Honest scoping: a framework that “advises” isn’t a guarantee, and I’d rather say that out loud than let a promise outrun what’s actually enforced

๐ŸŽฏ Current Focus

Most of my day-to-day is still native Android. Alongside that, I’ve spent the last several months defining a mobile organization’s AI engineering direction โ€” auditing AI-readiness across codebases in multiple languages, designing agent-skill governance that CI can actually enforce, and building the tooling to distribute and version those skills safely.


๐Ÿงช Projects

  • ๐Ÿค– Mobile Automator (open source, Apache 2.0) โ€” a host-agnostic CLI that lets AI coding agents author and run mobile UI tests over MCP, using portable JSON scenarios matched on visible text and semantic role instead of resource IDs, so the same test runs on both Android and iOS
  • ๐Ÿ“ฐ AI Pulse โ€” a fully local AI news aggregation and scoring dashboard (n8n, local LLMs via Ollama, SQLite, Vue 3) with automated workflows and a calibration feedback loop

๐Ÿ–‹ Why I Blog

I use this blog to share what I learn โ€” from code-level tricks to high-level engineering decisions. Topics I like to write about:

  • Mobile architecture (Android + Flutter)
  • Developer tooling & automation
  • AI agent engineering, governance, and safety
  • Clean code, testing, and CI/CD
  • Engineering leadership and IC progression

Let’s connect:

Thanks for stopping by!