About

I am a full stack web developer with a background in graphic design.

I can implement slick UIs using modern web frameworks such as React and Elm.

I can build backends using NodeJS/Typescript/GraphQL/PostgresQL and deploy them using Docker.

I am increasingly interested in statically typed functional programming.

I am proficient in Elm and a newbie to Haskell and nix.

I spend too much of my free time configuring Emacs.

I like science fiction.

I am open to collaborations and commissions.

Projects

  • 2016 - Ongoing

    THESIS is a record label releasing experimental and electronic music. This project has been an ongoing collaboration with Gregory Euclide since 2016. I am responsible for the design, development and maintenance of the webshop, and the related infrastructure. The site runs on a custom ecommerce backend developed using MySQL/GraphQL (Prisma), Typescript and NodeJS and is deployed to a DigitalOcean droplet using Docker. I recently redesigned and re-implemented the frontend using Elm.

    Stack: Elm, TypeScript, React, Node JS, GraphQL, Prisma, Docker, S3, CloudFlare
  • 2017

    The digital counterpart of the book Under Pressure: Water and the City by Arjan van Timmeren and Laurence Henriquez. The site serves as an interactive introduction to the topics explored in the book. It maps important locations pertaining to excerpts from the book, that were annotated with geo-locations and categories of topics. The bulk of the project was the development of custom tooling and a content management system, that allowed the authors to annotate parts of the text with relevant geo-locations, topics and markers. The annotated text snippets constitute the content for the website. The frontend itself is a static site, developed with React and gatsby and is deployed to Netlify. A simple ecommerce solution was also developed using Snipcart and Mollie to allow the sale of the book through the website. I co-designed the UI/UX together with Márton Kabai. The project was sponsored by Amsterdam Insitute for Advance Metropolitan Solutions and Delft University of Technology.

    Stack: React, MapboxGL, Node JS, Postgresql, Docker, Netlify

Projects @RNDR

Projects I've worked on at RNDR.

  • 2018

    25th Hour: Flow is a project by Audi in partnership with the Karlsruhe Institute for Technology (KIT), MobilityPartners and RNDR. Based on data obtained from a simulation conducted by KIT and MobilityPartners, 25th Hour visualizes the potential impact of autonomous cars, ride sharing and smart traffic management on the traffic of Ingolstadt, Germany.

    Stack: TypeScript, React, Mapbox, Kotlin, OPENRNDR
  • 2018

    A documentation engine that generates a static site out of annotated Kotlin source code. OPENRNDR has a fast-moving codebase with frequent releases, still searching for a stable public API. New releases often introduce breaking changes which require an update to our documentation. Dokka, Kotlin’s official documentation engine is a great tool for automatically re-generating our API docs, but the example code and tutorials we provide in our guide could still easily get out of sync with new releases. We needed a solution which would statically verify the correctness of code snippets in our guide, so that we could ensure they are is always compatible with the latest OPENRNDR release. I developed DokGen, a Gradle plugin, which renders annotated Kotlin sources into markdown documents and assembles a static site using docsify. When DokGen is run, the sources are checked by the Kotlin compiler, so if they ever use outdated APIs, the build fails and it becomes impossible to publish incorrect docs. DokGen also allows us to provide graphic illustrations for the code snippets so that we can visually demonstrate OPENRNDR functionality. More details about DokGen can be read in this Medium article or on GitHub.

    Stack: Kotlin, Gradle
  • 2018

    Website for the creative coding framework OPENRNDR.

    Stack: React, TypeScript, react-static, Dato CMS, Netlify
  • 2018

    Website for the architecture studio of Ro Koster and Ad Kil.

    Stack: React, gatsby, Dato CMS, Netlify
  • 2017

    Farsi / English bilingual cultural magazine.

    Stack: MongoDB, NodeJS, Electron, React, docker

CV

[PDF]

Work Experience

RNDR

2017 September - present

Web development, creative programming

  • Concept development and data visualizations for leading companies in the automotive industry
  • Developed several websites using React
  • Developed controller middleware for an interactive installation at Autostadt using Kotlin
  • Developed a documentation engine which generates a static site out of annotated Kotlin source code.
  • Prototyped several mapping tools with OPENRNDR
  • Ported legacy application code from Java to Kotlin
  • Server administration and maintainance of internal tooling using docker
  • Gave an OPENRNDR workshop at JFuture, Minsk
  • Developed and presented typographic demos for OPENRNDR at Google’s SPAN design conference in Helsinki

Freelance Web Developer

2016 March - Present

  • UI/UX design, backend and frontend development for thesisproject.us. Learned to use React, Redux, ES6, babel, webpack, npm, NodeJS, MongoDB, DigitalOcean, dokku.

  • Development of a content management system, a collaborative text annotation tool and the frontend for underpressure.online, using PostgresQL, NodeJS, SlateJS, React/Redux.

  • UI redesign, reimplementation of frontend in Elm, porting of backend to a TypeScript / GraphQL / MySQL stack for thesisproject.us to improve reliability/maintainablity and to accomodate newly requested features. A also developed a new admin UI using react-admin.

LUST / LUSTLab

2016 September - 2017 September

Full stack web development

  • Development of a React webapp used in the workshops of the 2016 WTHX hackathon
  • Development of the backend (NodeJS/MongoDB), CMS (React) and custom PDF generator (Electron run headlessly) for pagesmagazine.net
  • Concept development and data visualizations for leading companies in the automotive industry using OPENRNDR and d3.js
  • Maintanence work on an Angular 1.0 codebase
  • Containerization and migration of legacy websites
  • Server administration (Ubuntu)

Internship

2015 May - 2015 October

LUST / LUSTLab

  • Design and implementation of generative animations for large-scale architectural installations
  • Learned Java and OOP
  • Learned to use Git

Education

BA Graphic Design

Royal Academy of Art, The Hague

2012 - 2016

  • Creative Programming
  • Data Visualization
  • Typography
  • Concept Development
  • UI / UX Design

Skills Summary

Programming Languages

JavaScript (ES7) Fluent
TypeScript Fluent
Kotlin Fluent
Elm Proficient
Java Intermediate
Python Novice
Emacs Lisp Novice
Haskell Novice
GLSL Novice

System Administration

  • Ubuntu
  • DigitalOcean
  • Docker / docker-compose
  • dokku
  • Nix (at a beginner level)

Server side / databases

  • Node JS
  • GraphQL
  • Prisma
  • MySQL / PostgresQL
  • MongoDB

Frontend

  • Elm
  • React / Redux
  • Apollo Client
  • Styled Components
  • CSS modules
  • D3.js
  • WebGL
  • Jest

Tooling / Build Systems

  • npm / yarn
  • WebPack
  • Gradle

Editors

  • Emacs (with vim emulation)
  • Vim
  • IntelliJ
  • Atom

Other

  • git
  • bash scripting
  • Some experience with test driven development
  • Adobe design tools (Photoshop, XD etc)

Contact