Open to product engineering roles

Productengineerbuildingthings thatwork.

Product engineer building full-stack products in energy trading — and a newsroom that runs on agents.

TypeScript, React, Node, Postgres, agents

Speaks English, Italian and Farsi

↓ Selected work↓ Writing↗ Get in touch▸ Open terminal /

Selected work

06 projects · 2018 →
cmd · /work --list --recent
utrechterpost.com · local news · English
The Utrechter Post homepage with the latest briefing and local stories
01 · Agentic publishing2026 →

The Utrechter Post

An English-language local newsroom built with specialized AI agents for research, editorial preparation, engineering review, and cited reader discovery—bounded by evidence, permissions, tests, and human judgment.

Next.js · Payload · OpenAI · CloudflareRead case study →
bid & offer app · NL-power · day-ahead
● LIVENL.PWR.DAD+122.05.2615:42:08MID 92.53SPR 0.25VOL 12,840 MWTRD 184▲ 0.9%F1▼ DEPTH · BID / OFFER42 BIDS·38 OFFERS⟳ 250ms#CPTYRECTECHREGMW€/MWH€/MWHMWREGTECHRECCPTY#1VATTENFAL48201WNDN12092.402ENECO48198WNDW8592.203RWE48192SOLS6091.854UNIPER48187HYDE24091.605SHELL48180WNDN17591.256STATKRAFT48177HYDE9090.807ORSTED48171WNDW15090.408EDF48168SOLS4590.109ENGIE48162WNDN11089.7510NEPTUNE48157HYDE7589.4011EBM48149WNDN9589.0512AXPO48141SOLS5088.7013BKW48133HYDE14088.3014ALPIQ48127WNDW10087.9592.6595WWND48205AXPO192.85200EHYD48209FORTUM293.1070SSOL48212BP393.45130NWND48216EQUINOR493.80160WWND48219TOTAL594.2055SSOL48223IBERDROLA694.50220EHYD48228DRAX794.9085NWND48231CENTRICA895.30140WWND48235SSE995.7575NWND48238EDP1096.20165EHYD48241VERBUND1196.6060SSOL48244ELERING1297.05120WWND48247PRIMEO1397.5045NWND48250REPSOL14TRADE TAPE · LAST 8 FILLSTIME · PX · MW · SIDE · CPTY15:42:0692.5545BUYFORTUM15:41:5892.50120SELLRWE15:41:4292.4580BUYENECO15:41:3192.60200SELLUNIPER15:41:1892.4055BUYSHELL15:40:5492.35160SELLORSTED15:40:3392.3095BUYEDF15:40:0992.35130SELLVATTEN.▼ BID92.40SPR0.25MID92.53OFFER ▲92.65DEPTH1,150 / 1,230 MWIMB-80⌘K[F1] HELP[F2] BID[F3] OFFER[F4] HIT[F5] LIFT[F6] PULL[/] FILTER[?] CMDSCONN OK
02 · Energy trading2024 →

Bid & Offer App

The order book at the heart of an energy trading desk — live bids vs offers across counterparties, regions and renewable tech. Rebuilt from a tool traders were bypassing into one they open daily.

TS · Postgres · KafkaRead case →
energy-trading-platform · 2019—24
energy-trading-platform · 2019—24
03 · Energy trading2019—24

Mono → services

Monolith → 12 services → pragmatic serverless. Architecture should reduce the cost of change, not celebrate its own complexity.

Vue · Node · K8sRead case →
ts-time-utils.h8frad.work
ts-time-utils.h8frad.work
04 · OSS2024 →

ts-time-utils

430+ utilities for dates, durations, timezones, calendars, and relative formatting. Tree-shakeable, fully typed, built for TypeScript-first projects. Zero dependencies.

TypeScript · MITDocs ↗
mamanfari.com
mamanfari.com
05 · Side2024 →

Maman Fari

A digital cookbook preserving Persian recipes — available in 7 languages, with every ornament and detail painstakingly hand-picked.

Next.js · PostgresVisit ↗
ateliertar.com
ateliertar.com
06 · Side2025 →

Atelier Tār

Small e-commerce studio for Persian heritage objects — limited-edition prints, ceramics, framed carpets.

Next.js · StripeVisit ↗

Try the API.

live · embedded · running this page
cmd · /demo --run ts-time-utils
Live · embedded · running this page

A small piece of my open source.

This is a real demo of ts-time-utils — my zero-dependency TypeScript library. Pick a date and watch it format, diff, and reason about it the way you'd hope a designed API would.

Open the playground ↗
ts-time-utils · v4.4
Date
—

Side projects

04 live
cmd · /side --live

Writing

04 essays · 2026
cmd · /writing --list
№ 01

The Unexpected Health Upside of Coding Agents

№ 02

Keyboard Shortcuts Are Not a Feature

№ 03

Overengineering is a product risk

№ 04

Better trading tools start with the trader's language

About

The short version
The rest, over coffee.

I'm a product engineer — I write the code and care deeply about what it feels like to use. Trained in distributed systems, obsessed with the details, now building software for traders at an energy trading firm in Amsterdam.

Iranian by birth. Italian by training. Dutch by paperwork. I keep a few side projects alive at any given time because that's how I learn — build, ship, talk to users, repeat.

M.Sc. from Polytechnic University of Turin (Computer & Communication Networks) · Fluent in English and Persian · Comfortable with Italian and Dutch.

Core

TypeScriptReactNext.jsNode.jsVue.js

Backend & data

NestJSLaravelPostgreSQLRedisMySQLDynamoDBOpenSearchGraphQL

Cloud & architecture

AWS CDKServerlessDockerKubernetesKafkaAzure

AI & developer tools

Claude CodeCodexClaude DesignAntigravityLLM/agent workflows

Product engineering

Product discoveryFeature scopingUX-focused engineeringTrade-offsCross-functional collaboration

Experience

10+ years
2014 — present
2019 - present

STX Group, Amsterdam

  • Senior Software Engineer2024 - present
  • Software Engineer2019 - 2024

Key techTypeScript · React · Vue.js · Node.js · OpenSearch · Postgres · AWS CDK · Kafka

  • Technical leadership

    Joined when engineering was around 3 people and stayed through growth to 80+. Built STX's first frontend team, hiring and onboarding four engineers.

    Introduced Vue.js and drove TypeScript adoption alongside other engineers, replacing fragmented, hard-to-maintain vanilla JavaScript with reusable components. Mentored engineers and participated in technical interviews across the wider engineering organisation.

  • Bid & Offer

    Co-architected the application and remain a core technical owner. Rebuilt a tool traders were bypassing into a product they use daily, handling hundreds of daily entries across three continents.

    Reworked query paths, pagination and rendering to eliminate browser crashes on grids with 20k+ records and reduce loading from roughly minutes to seconds. Improved adoption restored collection of the bid/offer and spread data analysts had been missing.

  • Sales Margin

    Own the service company-wide, from discovery through implementation, rollout, training and production support. Replaced fragmented spreadsheet and file-based calculators with structured multi-leg pricing and P&L capture, giving trading, sales and management a unified view.

    Own the APIs, event handlers and snapshot correctness when trade data changes after capture. In the first four months after launch, 4,100+ unique trades were priced across four legal entities and 13 currencies.

  • Counterparty KYB

    Lead architecture and cross-team implementation across HubSpot, internal pre-trade services, Trulioo, webhooks and core counterparty and approval systems. Stay hands-on while guiding junior and mid-level engineers.

    The integrated workflow is still in development, addressing manual data transfer, fragmented approvals and poor onboarding-status visibility. Business target: 50% less processing time, with a projected 2,500 company onboardings annually.

  • Platform modernisation

    Built the pricing, proxy product and reference-data frontends from scratch as part of the monolith-to-microservices migration. Contributed to architecture decisions across the new applications.

2018 — 2019

Grrr B.V., Amsterdam

  • Full-stack Software Engineer

Key techJavaScript · WordPress · Sass · Docker

  • Built client-facing features and custom plugins for high-profile brands.
  • Improved performance and maintainability through key refactors.
2017 — 2018

CastorEDC, Amsterdam

  • Full-stack Software Engineer

Key techPHP7 · Doctrine2 · ZF2 · MySQL · HTML5

  • Delivered features for a clinical data capture platform used in global research, working with structured data collection, audit trails and regulatory compliance requirements.
  • Refactored legacy codebase to improve stability and maintainability.
2015 — 2017

WEREA S.r.l., Milan

  • Full-stack Software Engineer

Key techAWS · AngularJS · Silex · MySQL · Stripe

  • Built and optimised RESTful APIs and full-stack features for SaaS platforms.
  • Integrated Stripe, Dropbox and Pusher to expand product functionality.
2014 — 2015

Diana Corp, Padua

  • Software Engineer

Key techMagento EE · PHP5 · AWS · Git · RabbitMQ · Jenkins

  • Built and maintained e-commerce modules and integrations, and supported migration to SAP B1.

Open to Product
Engineer roles.
Let's talk.

Currently
Product Engineer · Energy trading · Amsterdam
hatef@work:~$help · whoami · stack · projects · contact · clear
hatef@work:~$ — type help for commands
~/hatef ▸