hatef@home03.09.26
Product Engineer
--:--:-- CET
Open to roles · Product Engineer

Productengineerbuildingthings thatclick.

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

Operating · TS · React · Node · Postgres · Agents
Speaking · EN · IT · FA
Status · Open · Product Engineer
▸ Uptime · 00:00
↓ 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

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

Keyboard Shortcuts Are Not a Feature

№ 02

Overengineering is a product risk

№ 03

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

  • Joined when engineering was ~3 people and stayed through growth to 80+. Established frontend as a business capability — introduced Vue.js and demonstrated how better UI improved trade-entry speed and reduced errors, making the case for the company's first dedicated frontend role; then built the function from scratch, including hiring, interview loops and onboarding for four engineers.
  • Rebuilt the Bid & Offer application from a tool traders were bypassing into one they open daily — reworked query paths, pagination and rendering to eliminate browser crashes on 20k+ record grids and bring loads down to seconds, recovering bid/offer and spread data analysts had been losing. Now handles hundreds of daily entries across three continents.
  • Own the Sales Margin service company-wide — replaced file-based margin calculators with a structured P&L capture system; own the APIs and event handlers end to end, including snapshot correctness when trade data changes after capture; ran rollout, training and hypercare.
  • Lead design and delivery of the end-to-end counterparty KYB flow across HubSpot, internal pre-trade services, Trulioo, webhooks and core counterparty systems — setting architecture while staying hands-on and guiding junior and mid-level engineers.
  • Led the monolith-to-microservices migration, improving reliability and deployment speed across teams.
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 ▸