// Skills.ts : the working toolkit
// On the web since 2008. Roughly 18 years,
// the first few in marketing and the rest in engineering.
export interface SkillGroup {
label: string;
items: readonly string[];
}
export const skills: readonly SkillGroup[] = [
{
label: 'Languages',
// What the day is actually spent in
items: [
"TypeScript", "JavaScript", "Python",
"PHP", "SQL", "HTML and CSS",
],
},
{
label: 'Frontend',
// Interfaces people have to use every day
items: [
"React", "Next.js", "Vue",
"Astro", "Tailwind CSS", "Radix UI",
"TanStack Query", "React Hook Form", "Vite",
],
},
{
label: 'Backend and APIs',
// The half that does the work
items: [
"Node.js", "Hono", "FastAPI",
"Django", "Laravel", "REST API design",
"Schema validation with Zod", "Background jobs and queues", "Webhooks and third party integration",
],
},
{
label: 'Edge and cloud',
// Where most of it runs now
items: [
"Cloudflare Workers", "Durable Objects", "Cloudflare D1",
"R2 object storage", "Workers KV", "Cloudflare Queues",
"Hyperdrive", "Workers AI", "Cloudflare Pages",
"AWS", "Hetzner", "Docker",
"Kubernetes and k3s", "Ansible",
],
},
{
label: 'Data',
// Where it all lives and how it moves
items: [
"PostgreSQL", "Drizzle ORM", "Prisma",
"SQLite", "Redis", "Supabase",
"Schema design and migrations", "High availability and point in time recovery", "Multi tenant data isolation",
],
},
{
label: 'Email infrastructure',
// Sending mail is easy, delivering it is not
items: [
"SMTP delivery", "Inbound parsing and routing", "SPF, DKIM and DMARC",
"Deliverability and reputation", "Transactional templates", "Bulk sending at volume",
"Mail server administration",
],
},
{
label: 'Quality and delivery',
// How the work gets out of the door
items: [
"Vitest", "Playwright", "Testing Library",
"GitHub Actions", "Monorepos with Turborepo", "Sentry",
"OpenTelemetry", "Code review",
],
},
{
label: 'Marketing',
// The side the work started on
items: [
"Digital strategy", "SEO and SEM", "PPC advertising",
"Content marketing", "Social media", "Email marketing",
"CRM", "Google Analytics", "Conversion rate optimisation",
"Marketing automation",
],
},
];
export const totalSkills = skills.reduce(
(n, group) => n + group.items.length,
0,
); // → 72
// The overlap is the point: someone who can build the funnel
// and also instrument, measure and optimise it.skills.filter(…)
Skills and technologies
72 shown
Languages · What the day is actually spent in
TypeScriptJavaScriptPythonPHPSQLHTML and CSS
Frontend · Interfaces people have to use every day
ReactNext.jsVueAstroTailwind CSSRadix UITanStack QueryReact Hook FormVite
Backend and APIs · The half that does the work
Node.jsHonoFastAPIDjangoLaravelREST API designSchema validation with ZodBackground jobs and queuesWebhooks and third party integration
Edge and cloud · Where most of it runs now
Cloudflare WorkersDurable ObjectsCloudflare D1R2 object storageWorkers KVCloudflare QueuesHyperdriveWorkers AICloudflare PagesAWSHetznerDockerKubernetes and k3sAnsible
Data · Where it all lives and how it moves
PostgreSQLDrizzle ORMPrismaSQLiteRedisSupabaseSchema design and migrationsHigh availability and point in time recoveryMulti tenant data isolation
Email infrastructure · Sending mail is easy, delivering it is not
SMTP deliveryInbound parsing and routingSPF, DKIM and DMARCDeliverability and reputationTransactional templatesBulk sending at volumeMail server administration
Quality and delivery · How the work gets out of the door
VitestPlaywrightTesting LibraryGitHub ActionsMonorepos with TurborepoSentryOpenTelemetryCode review
Marketing · The side the work started on
Digital strategySEO and SEMPPC advertisingContent marketingSocial mediaEmail marketingCRMGoogle AnalyticsConversion rate optimisationMarketing automation
Md Ziaoul Hoque : interactive shell
Type "help" for commands, or "neofetch" for the summary.
~/portfolio ❯