Skip to content
Suleiman Francis

Engineering

How I think about engineering

Four write-ups, one per discipline, each grounded in software I’ve shipped — including a case where my own metric didn’t hold up.

Disciplines

Write-ups by discipline

  • Frontend

    Designing resilient frontend architecture

    Most frontend bugs I’ve fixed trace back to one of three things: unclear ownership of state, validation in the wrong place, or an abstraction that was shared too early. The architecture work is mostly about preventing those.

  • Backend

    Building reliable realtime experiences

    Realtime features are easy to demo and hard to keep correct. The work is in what happens when the connection isn’t there — which, on mobile, is often.

  • Mobile

    Shipping cross-platform mobile software

    Writing the screens is the smaller part of mobile work. The larger part is integrations, releases and knowing what happened after a release went out.

  • AI / LLM

    Building practical AI features

    The useful question is rarely “which model is best?” It is “what is the smallest, cheapest, most predictable thing that solves this task — and how will I know if it works?”

Capabilities

Engineering capabilities

Grouped by discipline, with where each one was used in shipped work.

Frontend

Whistler Web and the SeamHealth blog in Next.js; Whistler Admin and Clientshot Public in React 19; Clientshot in Angular; component libraries used across 3+ internal products.

  • React
  • Angular
  • Next.js
  • TypeScript
  • JavaScript
  • Tailwind CSS
  • Redux Toolkit
  • TanStack Query
  • Zustand
  • RxJS
  • Component architecture
  • Accessibility
  • Responsive systems

Backend

The Device Intelligence service in Python and FastAPI; REST API design and integration at SeamHealth; a signed webhook function for Whistler Admin; the Socket.IO realtime client in Whistler.

  • Node.js
  • Python
  • FastAPI
  • Express
  • REST APIs
  • JWT
  • RBAC
  • PostgreSQL
  • MongoDB
  • Caching
  • Validation
  • WebSockets
  • SQLAlchemy + Alembic
  • Docker
  • AWS (ECS, RDS)

Mobile

Whistler: a React Native + Expo app on Google Play with push, deep links, social sign-in and over-the-air releases.

  • React Native
  • Expo
  • Flutter
  • Offline-first architecture
  • Push notifications
  • Deep linking
  • Native integrations
  • Play Store / App Store deployment

AI / LLM

Two Whistler post classifiers: an on-device fastText model in the app, and sentence embeddings (all-MiniLM-L6-v2, ONNX Runtime Web) in the browser; LLM evaluation and RLHF at SeamHealth — prompt design, rubric-based review, data annotation and human feedback on model responses.

  • LLM evaluation
  • RLHF
  • OpenAI and Anthropic APIs
  • Prompt engineering
  • Response evaluation
  • Data annotation
  • RAG fundamentals
  • Hallucination detection
  • On-device classification (fastText, ONNX Runtime Web)
  • AI agents (elizaOS)
  • Model behaviour analysis

Engineering practice

GitHub Actions CI, Docker images, Playwright e2e, Vitest, Jest and pytest suites, Sentry, Mixpanel, Firebase Analytics, k6 load tests.

  • Git and GitHub
  • CI/CD (GitHub Actions)
  • Docker
  • Testing (Vitest, Jest, Playwright, pytest)
  • Cloudflare Workers
  • Jira
  • Code review
  • Documentation
  • Agile / Scrum
  • Observability
  • Product analytics

Approach

From requirement to evidence

The same loop on every project, whether it’s a form field or an ML feature.

  1. 01

    Understand

    Clarify requirements, constraints, users, data, and the business goal behind the request.

  2. 02

    Architect

    Choose boundaries, state ownership, API contracts, data structures and dependencies deliberately.

  3. 03

    Build

    Write modular, typed code with abstractions that earn their place.

  4. 04

    Test

    Check behaviour with unit, integration and regression tests — including realistic failure cases.

  5. 05

    Ship

    Automate builds and releases, and stage them through environments before production.

  6. 06

    Observe

    Use crash reporting, logs and analytics to see how the software behaves for real users.

  7. 07

    Improve

    Iterate on evidence. Measure before claiming, and say so when something hasn’t been measured.

Production engineering

From code to production

Only tools I’ve used on shipped work are listed.

  1. 01

    Code

    Typed code, with pre-commit hooks as the first gate.

    TypeScript · Husky + lint-staged

  2. 02

    Pull request

    Every change reviewed before merge.

    GitHub · Bitbucket

  3. 03

    Tests

    Unit and integration tests; end-to-end tests run against a mock API.

    Vitest · Jest · Playwright · pytest

  4. 04

    CI

    Lint, types, tests, dependency audit and build gate every pull request.

    GitHub Actions · Dependabot

  5. 05

    Build

    Reproducible web, container and native builds.

    Vite · Docker · Gradle · EAS

  6. 06

    Deploy

    Staged release channels; JS-only fixes over the air.

    Vercel · Cloudflare Workers · EAS Update · Google Play

  7. 07

    Monitor

    Crashes, errors and product usage in production.

    Sentry · Mixpanel · Firebase Analytics

  8. 08

    Iterate

    Load-test risky paths and feed findings into the next change.

    k6