Skip the intro
babazadeh.dev

CTO at Neuroject · building since 2007

Moe
Babazadeh

I architect AI-driven platforms and scalable digital products. CTO at Neuroject, building the alignment layer for construction enterprises.

Hire Moeor scroll, and follow the click down the stack ↓

L1 Render16.7 ms a frame

  1. Hit test: the pointer’s (x, y) is walked down the layer tree to the topmost element there: a.hire.
  2. Style: :active now matches, so the button’s computed style changes.
  3. Layout: geometry is recomputed only for boxes that moved. A transform moves none.
  4. Paint: each layer records its draw calls, then rasterises them into tiles.
  5. Composite: the GPU stacks the layers into one frame. The budget is 16.7 ms.

Layer 1 · Render

Platforms I’ve shipped

The click lands on one pixel. To learn who owns it, the browser hit-tests down through the page’s compositing layers. These are the layers I’ve built and led.

layer 1 of 5Next.js · Laravel · AWS · Autodesk APS

NeuroBuild screenshot

NeuroBuild

The alignment layer for construction enterprises: one multi-tenant platform for BIM models, WBS, quantity take-off, bills of quantities, tenders, and 4D progress reports, now with AI for natural-language questions and early risk warnings. I lead it as CTO.

neuroject.com ↗

layer 2 of 5FastAPI · OpenAI · pgvector · SvelteKit · TypeScript

SmartClaim screenshot

SmartClaim

AI-assisted R&D tax credit claims for the UK, Ireland, Australia, and South Africa. I work across the FastAPI and pgvector API, the SvelteKit app, and the TypeScript client SDK, and added its security gates: secret scanning, Semgrep, and Trivy on every pull request.

smartclaim.uk ↗

layer 3 of 5ESP32 · nRF52840 · React Native · Next.js

Attendum screenshot

Attendum

Attendance monitoring live at universities in the UK and US. I wrote the firmware for the ESP32 card readers (NFC, RFID, BLE, over-the-air updates) and the nRF52840 Bluetooth beacons, and built the iOS and Android app, the staff dashboard, and a Canvas LTI app. At a single university, it has more than 200 devices online, covers over 100 classrooms and 10,000 classes, and has received over 3 million records in the past two years.

attendum.com ↗App Store ↗Google Play ↗

layer 4 of 5Hardware · Firmware · GSM · Sensors · Telemetry

Logger screenshot

Logger

GSM weather stations that take several sensors each and send their logs home. The fleet has been online for over 15 years: more than 50 active stations and over half a billion records.

layer 5 of 5React · Redux · Firebase · Office.js

Active-Class screenshot

Active-Class

An LMS with live exam proctoring and Azure Face identity checks. I built the user dashboard, an Office add-in that brings live polls and word clouds into PowerPoint and Word, and the product website.

active-class.com ↗

L2 Event loop< 50 ms a task

  1. The main thread is idle. The event loop waits for something to do.
  2. Pointer down, pointer up: the browser queues a click task.
  3. The loop takes the oldest task and runs it to completion.
  4. Listeners run on the call stack, one frame per function call.
  5. fetch() hands the request to the browser and returns a pending Promise.
  6. The stack unwinds, nothing blocks, and a frame paints the pressed button.
  7. Bytes arrive. The networking task source queues a task.
  8. Resolving the Promise queues a microtask, not a task.
  9. Microtasks drain before anything else runs. All of them.
  10. requestAnimationFrame, style, layout, paint: the button says thanks.

Layer 2 · Event loop

What’s on my call stack

CTO at Neuroject, building the alignment layer for construction enterprises. Building since 2007: robots, IoT and firmware, then web, mobile and AI platforms.

console.trace()October 2026

Trace: now
    at cto (neuroject.com)
    at chiefFullStackEngineer (neuroship)
    at <anonymous> (2007)

runningJune 2024 – Present

CTO · Neuroject ↗

  • CTO since September 2026, after two years as Chief Full Stack Engineer. I lead the architecture, roadmap, and delivery of a cloud-native, multi-tenant platform that connects BIM, schedules, budgets, and risks into traceable decisions.
  • Bringing AI into the platform, from natural-language access to project data to early warning on schedule and cost risk.
  • Led the architecture and build of NeuroBuild on Next.js, React 19, and Laravel, hosted on AWS Amplify and Laravel Vapor, with 4,700+ commits across five codebases.
  • Set the engineering bar: a permission check on every API route, audit trails, and production alarms and GuardDuty alerts kept in infrastructure as code.

runningMay 2026 – Present

Chief Full Stack Engineer · Neuroship

  • Chief Full Stack Engineer on contract, alongside my role at Neuroject.

L3 HTTP · TLS1 round trip

  1. Before any HTTP, a TCP connection. The browser sends SYN.
  2. SYN-ACK, then ACK: one round trip just to agree to talk.
  3. ClientHello guesses the key exchange and sends its share up front.
  4. ServerHello answers with its share. Both sides derive the keys; everything after is encrypted.
  5. The server proves who it is: certificate, a signature over the handshake, Finished.
  6. The client’s Finished. TLS 1.3 took one round trip, and the lock closes.
  7. POST /api/hire rides HTTP/2 stream 1, headers compressed with HPACK.
  8. HEADERS with :status 200, then DATA. The response is on its way back.

Layer 3 · HTTP · TLS

About

The request leaves over TLS 1.3. Here’s what comes back.

response · stream 1HEADERS

Moe Babazadeh
:status
200
x-name
Mohammad Babazadeh (Moe)
x-role
CTO, Neuroject
x-building-since
2007
x-stack
TypeScript, React & Next.js, Laravel (PHP), Python & FastAPI, AWS, React Native & Expo, Embedded C, PostgreSQL & MySQL

DATA · stream 1frame 1 of 3

I started building websites as a freelancer in 2007, studied electrical engineering with a focus on control systems, and spent my university years building robots, including a 1st place at RoboCup IranOpen 2010.

DATA · stream 1frame 2 of 3

Since then I’ve built for an electronics and IoT company, a grocery marketplace, an edtech company and a construction-tech company. Today I’m CTO at Neuroject, leading the platform that connects BIM, schedules, budgets and risks for construction enterprises, and bringing AI into it.

DATA · stream 1frame 3 of 3 · END_STREAM

Along the way I’ve shipped apps to the App Store and Google Play, hardware that’s still logging data after 15 years, and fixes to open source projects like Gatsby and DefinitelyTyped.

L4 Network≈ 30 ms an ocean

  1. fetch() becomes packets: the request wrapped in TCP, then IP, then Ethernet.
  2. Each router reads the destination, decrements the TTL and forwards. traceroute exploits exactly that.
  3. At the coast the packets go into glass: a subsea cable about as thick as a garden hose.
  4. Light in fibre covers about 200,000 km a second: 6,000 km of ocean costs about 30 ms each way.
  5. Back on land, a few more hops to the edge of the data centre.

Layer 4 · Network

Patches I sent upstream

Upstream is where packets go, and where fixes belong. Pull requests to open source packages that, together, are downloaded more than 300k times a week.

src moeBabazadehdst gatsbyjs/gatsby2022Security

gatsbyjs/gatsby ↗

Removed the deprecated uuid@3.4.0 from gatsby-cli and gatsby-plugin-sharp.

That version can fall back to Math.random(), which is unsafe for IDs. npm flagged it on every install.

★ 56k163k downloads a week

src moeBabazadehdst nanostores/persistent2022Data loss

nanostores/persistent ↗

Synced storage events only for the store’s own key.

Opening the app in a second tab wiped saved data.

★ 38382k downloads a week

src moeBabazadehdst HuolalaTech/react-query-kit2026Type safety

HuolalaTech/react-query-kit ↗

Opt-in strictVariables: typed query variables become required at the call site.

A forgotten argument compiled fine and only failed at runtime.

★ 48631k downloads a week

src moeBabazadehdst DefinitelyTyped/DefinitelyTyped2025Type safety

DefinitelyTyped/DefinitelyTyped ↗

Typed the optional RegExp filters on the Forge Viewer’s getPropertyHashes.

Calls that Autodesk documents failed to type-check.

★ 51k22k downloads a week

src moeBabazadehdst microapps/gatsby-plugin-react-i18next2021Bug

microapps/gatsby-plugin-react-i18next ↗

Added forwardRef support to the localized Link.

Refs passed to localized links were silently dropped.

★ 1195.4k downloads a week

L5 Servers0.5 ms in the rack

  1. The request reaches a load balancer: one address in front of many servers.
  2. Round robin: each healthy instance takes the next request in turn.
  3. Health checks every two seconds. Fail twice and an instance is drained out of rotation.
  4. Traffic climbs, the autoscaler adds instances, and each one warms up before it takes traffic.

Layer 5 · Servers

More I’ve built

Behind one hostname, a pool of instances. Behind the platforms, a pool of smaller builds: apps, sites, firmware and tools.

target groupweb and mobile

  • i-01

    Education Guide

    A React Native app on both stores that helps students starting university get to know their course, campus, city, and career options.

    Expo · React Native · TypeScript

    education.guide ↗App Store ↗Google Play ↗
  • i-02

    School.how

    Online tutoring for every child: diagnostic tests, courses, quizzes, and 1-to-1 lessons over live video. I built the dashboard and the website.

    Next.js · MUI · VideoSDK · Uppy

    school.how ↗
  • i-03

    Learning Kit

    The product website for Learning Kit, built for 0&1.

    Next.js · AWS Amplify

    learningkit.com ↗
  • i-04

    Exam Kit

    The product website for Exam Kit, an online exam monitoring system by 0&1.

    Nuxt · Tailwind CSS

    examkit.com ↗

target groupdevices and IoT

  • i-01

    EPC

    An electronic pressure and flow controller: embedded hardware and firmware that hold pressure and flow at their setpoints. In production.

    Hardware · Firmware · Process control

  • i-02

    Mini PLC

    A compact PLC controller built on STM microcontrollers: the board and firmware for automation on a small footprint. In production.

    STM · Firmware · PLC

  • i-03

    Pulse IoT

    Device telemetry on plain shared PHP hosting: ingest, rollups, alarms with hysteresis, OTA firmware, and reports. No Composer, npm, or build step.

    PHP 8 · Vanilla JS · OpenAPI

target grouptools and libraries

  • i-01

    Photo Dedup

    A native macOS app that finds duplicate and look-alike photos by how they look. Fully offline, and nothing is ever deleted.

    Swift · SwiftUI · Vision

  • i-02

    matrix-keypad-freertos

    Reads matrix keypads as a FreeRTOS task, with built-in debouncing and configurable layouts and pin maps. Portable across microcontrollers.

    C · FreeRTOS

    Code ↗

L6 Database≈ 100 µs a page read

  1. SELECT title FROM archive WHERE year = 2024. The planner picks the index on year.
  2. Read the root page: 2024 is not below 2024, so take the right-most pointer.
  3. One level down: 2024 is below 2025, so take the left pointer.
  4. The leaf holds the key and three tuple IDs: (page, slot) addresses in the table.
  5. Follow each TID to its heap page and read the row.
  6. Three rows. With hundreds of keys per 8 kB page, four levels can index billions of rows.

Layer 6 · Database

The numbers

Finding one row among half a billion takes a handful of page reads. Here are the rows that describe me, then the whole archive.

=# SELECT value, label FROM stats;

valuelabel
11.8k+commits since 2021
10+products live
5devices in production
0.5B+sensor records logged
2apps on App Store and Google Play
300k+weekly downloads of packages I patched

(6 rows)

=# SELECT year, title, made_at FROM archive ORDER BY year DESC;

yeartitlemade_at
2026react-query-kit: strictVariables ↗Open source
2026SmartClaim ↗SmartClaim
2026Pulse IoTPersonal
2026Photo DedupPersonal
2025Forge Viewer types ↗DefinitelyTyped
2024NeuroBuild ↗Neuroject
2024Education Guide ↗0&1
2024Attendum Canvas LTI app0&1
2023Attendum app ↗0&1
2023Attendum card reader firmware ↗0&1
2023Attendum BLE beacon0&1
2023Learning Kit website ↗0&1
2023Exam Kit website ↗0&1
20230&1 website ↗0&1
2023matrix-keypad-freertos ↗Personal
2022School.how ↗0&1
2022UK Flour Millers dashboard ↗0&1
2022Gatsby: insecure uuid removed ↗Open source
2022nanostores/persistent: tab sync fix ↗Open source
2021Active-Class dashboard ↗0&1
2021Active-Class Office add-in0&1
2021Active-Class website ↗0&1
2021gatsby-plugin-react-i18next: Link refs ↗Open source
2017Grid-tie multicell inverter (paper) ↗arXiv
2012Self-balancing robot with fuzzy controlUniversity of Tabriz
2010RoboCup IranOpen Deminer Challenge, 1st placeUniversity of Tabriz
2009Small Size League soccer robotsUniversity of Tabriz
—Logger: GSM weather stationsIn production
—EPC: pressure and flow controllerIn production
—Mini PLCIn production
—Pipe inspection robotRobotics

(31 rows)

L7 Kernel≈ 100 ns a syscall

  1. epoll_wait: the server sleeps until a socket has data. No CPU spent waiting.
  2. accept4: the new connection becomes file descriptor 7.
  3. read: the request bytes are copied from kernel buffers into user space.
  4. sendto: a query to the database, in Postgres’s wire protocol: Q, a length, the SQL.
  5. recvfrom: the rows come back, starting with a RowDescription.
  6. writev: status line, headers and body leave in one call.
  7. close: descriptor 7 is free. Between every one of these, the scheduler chose who ran next.

Layer 7 · Kernel

Career

The kernel decides what runs, when, and with what permissions. Here’s what has been scheduled since 2007.

$ ps -o pid,stat,start,time,cmd --sort=-start

STATSTARTTIMECMD
RMay 20265mNeuroship · Chief Full Stack Engineer (contract)Contract role alongside Neuroject.
RJun 20242y 4mNeuroject · Chief Full Stack Engineer → CTOBuilt NeuroBuild, then CTO of the alignment layer for construction enterprises.
exit 0Feb 20213y 4m0&1 · Lead Frontend DeveloperActive-Class LMS and proctoring, Attendum firmware and apps on both stores.
exit 0Aug 20206mAlget.nl · Senior Frontend DeveloperA React marketplace that took local grocers online.
exit 0Oct 20127y 10mNiknam Electronic Rayan · Software → Senior Software EngineerIoT platforms, live GPS tracking and connected devices.
exit 0Aug 20075y 2mFreelance · Web DeveloperWebsites and web apps for clients in PHP, JavaScript and jQuery.

exit 0February 2021 – June 2024

Lead Frontend Developer · 0&1 ↗

  • Led the frontend architecture of Active-Class, an integrated LMS and exam monitoring platform, including identity checks during live exams with the Microsoft Azure Face API.
  • Shipped Attendum end to end: firmware for the ESP32 card readers and nRF52840 BLE beacons, the iOS and Android app, the staff dashboard, and a Canvas LTI app.
  • Built Office.js add-ins for PowerPoint and Word, the School.how dashboard, the Education Guide app, and the Learning Kit and Exam Kit websites.
  • Redesigned the CI/CD pipelines to cut build and deployment overhead.

exit 0August 2020 – February 2021

Senior Frontend Developer · Alget.nl

  • Built the React frontend of a digital marketplace that helps local supermarkets and grocery businesses sell online.
  • Implemented state management and client-side data handling that cut unnecessary API requests.
  • Shipped MVP features quickly with the product and backend teams, and improved deployment workflows with CI/CD.

exit 0October 2012 – August 2020

Senior Software Engineer · Niknam

  • At Niknam Electronic Rayan, built IoT platforms and connected systems for monitoring, tracking, and data visualisation across multiple industries.
  • Designed web applications and real-time dashboards, and integrated hardware devices with GPS and mapping services for live tracking.
  • Modernised legacy platforms for performance, usability, and maintainability. Software Engineer from 2012, Senior Software Engineer from 2017.

exit 0August 2007 – October 2012

Web Developer · Freelance

  • Built websites and web applications for clients with PHP, JavaScript, jQuery, HTML, and CSS.

L8 CPU0.3 ns a cycle

  1. The B-tree’s search inside a page, compiled: a binary search in a dozen x86-64 instructions.
  2. Registers hold everything in flight: lo in rax, hi in rsi, mid in rcx, the key in rdx.
  3. Five pipeline stages overlap five instructions. A mispredicted branch flushes the work behind it.
  4. Eight 8-byte keys fill one 64-byte cache line. The first load waits on DRAM, about 100 ns; the rest hit L1 in about 1 ns.

Layer 8 · CPU

Toolchain

Everything above compiles down to fetch, decode, execute. These are the languages and platforms I write in, and the instructions retired so far.

instruction set8 extensions

  • 0x01TypeScript
  • 0x02React & Next.js
  • 0x03Laravel (PHP)
  • 0x04Python & FastAPI
  • 0x05AWS
  • 0x06React Native & Expo
  • 0x07Embedded C
  • 0x08PostgreSQL & MySQL

perf statinstructions retired

11.8k+ commits since 2021

4,700+ of them across the five codebases of NeuroBuild.

L9 Siliconpicoseconds a switch

  1. A modern processor holds billions of transistors. Zoom in on one.
  2. An n-channel MOSFET: source, drain, and a gate on a dielectric only nanometres thick.
  3. Raise the gate above its threshold and electrons gather into a channel: the switch is on.
  4. Drop it and the channel vanishes. Every layer above is built on this: 1, 0, 1.

Layer 9 · Silicon

Roots

The bottom of the stack is what I studied: electrical engineering with a focus on control systems, then nanoelectronics. Below it: the degrees, the robots and five devices in production.

education and early work2008 – 2017

  1. 2008–2012

    BSc Electrical Engineering, Control Systems

    University of Tabriz. Thesis: a two-wheel self-balancing robot with real-time fuzzy control.

  2. 2009–2011

    Small Size League soccer robots

    A team of five fully autonomous robots playing a real match.

  3. 2010

    RoboCup IranOpen, 1st place

    Deminer Technical Challenge.

  4. 2010

    National Skills Competitions, bronze

    Mobile Robotics.

  5. 2014–2016

    MSc Nanoelectronics Engineering

    University of Tabriz. Thesis: plasmonic wave sources based on multilayer structures.

  6. 2017

    Paper on arXiv ↗

    Design, engineering and optimization of a grid-tie multicell inverter for energy storage.

devices in production5

  • LG-01

    Logger · GSM weather station

    Several sensors per station, with logs sent home over GSM.

    50+ stations · 15+ years online · 0.5B+ records

  • EPC-01

    EPC · Pressure and flow controller

    Embedded hardware and firmware that hold pressure and flow at their setpoints.

    In production

  • PLC-01

    Mini PLC · Compact PLC

    Built on STM microcontrollers, for automation on a small footprint.

    In production

  • AT-01

    Attendum reader · ESP32 card reader

    NFC, RFID, BLE and over-the-air updates. Wireless, with a battery that lasts about 16 months.

    200+ devices online · 3M+ records in 2 years · 10K+ classes covered

  • AT-02

    Attendum beacon · nRF52840 BLE beacon

    Bluetooth proximity check-in, updated over the air with DFU.

    In production

The response climbs back up: out of the silicon, through the kernel, the database and the servers, across the ocean, decrypted, resolved, painted. Every click does this.

200 OK · back at the surface

Hire Moe

CTO at Neuroject, building since 2007. Tell me what you’re building: the platform, the product or the team behind it.

moe@babazadeh.dev