Services.ts · Md Ziaoul Hoque
// Services.ts : the areas I work in

type WorkArea = {
  title: string;
  stack: readonly string[];
};

export const areas: readonly WorkArea[] = [
  {
    title: 'Platform and product engineering',
    stack: ['TypeScript', 'React', 'Next.js', 'Hono', 'PostgreSQL', 'Drizzle ORM'],
  },
  {
    title: 'Edge infrastructure',
    stack: ['Cloudflare Workers', 'Durable Objects', 'D1', 'R2', 'Queues', 'Hyperdrive'],
  },
  {
    title: 'Email delivery and deliverability',
    stack: ['SMTP', 'SPF, DKIM and DMARC', 'Inbound parsing', 'Deliverability reporting'],
  },
  {
    title: 'Data, analytics and conversion',
    stack: ['Google Analytics', 'Conversion rate optimisation', 'PostgreSQL', 'Reporting'],
  },
  {
    title: 'Automation and integration',
    stack: ['Python', 'Cloudflare Workers', 'Queues', 'CRM integration', 'Ansible'],
  },
  {
    title: 'Technical direction',
    stack: ['Architecture', 'Code review', 'Monorepos', 'CI and release process'],
  },
];

// The common thread: the work that goes well is the work where the
// problem is understood before the solution is chosen. Most of the
// rest is patience and good logging.
areas of work

Areas of work

01

Platform and product engineering

Building the whole thing rather than a layer of it. Front end in React or Next.js, an API behind it, a database under that, and the authentication, billing and background work that a real product needs before anyone will pay for it.

TypeScriptReactNext.jsHonoPostgreSQLDrizzle ORM
02

Edge infrastructure

Moving workloads onto Cloudflare and keeping them there. Workers for the compute, D1 and R2 for the data, Durable Objects where state has to be coordinated, and queues for everything that should not block a request.

Cloudflare WorkersDurable ObjectsD1R2QueuesHyperdrive
03

Email delivery and deliverability

The part of email that goes wrong quietly. Outbound SMTP, inbound parsing and routing, authentication records set up properly, and enough reporting to notice a reputation problem before the complaints start.

SMTPSPF, DKIM and DMARCInbound parsingDeliverability reporting
04

Data, analytics and conversion

Tracking that answers a question somebody actually asked. Event design first, then the implementation, then dashboards that show the handful of numbers worth acting on and leave the rest alone.

Google AnalyticsConversion rate optimisationPostgreSQLReporting
05

Automation and integration

Taking the manual steps out from between systems. CRM syncs, lifecycle email, scheduled jobs, imports and exports, and the internal tools that quietly do the work nobody wants to do twice.

PythonCloudflare WorkersQueuesCRM integrationAnsible
06

Technical direction

Setting the architecture on a portfolio of products and keeping a small team pointed the same way. Choosing the stack, writing the awkward parts, reviewing what comes back, and making sure the second project can reuse what the first one learned.

ArchitectureCode reviewMonoreposCI and release process
Md Ziaoul Hoque : interactive shell
Type "help" for commands, or "neofetch" for the summary.
~/portfolio ❯