arfat.dev
Portrait of Arfat Salman in glasses and a checked shirt.
Fig. 1 The author, probably about to explain closures.

Software engineer · Oslo, Norway

Arfat Salman

I design and build software end to end, from the interface down to the systems underneath, and I like explaining how it all works.

Full-stack engineer and instructor. Equally at home in a React component, an API or an architecture diagram, and most interested in software that keeps working as it grows. These days I’m in Oslo.

Across the stack Selected work Get in touch

§ 01

Across the stack

  1. Front end Interface

    Interfaces that stay fast, accessible and easy to change as they grow: thoughtful component design, state that is easy to reason about, and performance people can feel.

    • JavaScript
    • React
    • HTML & CSS
  2. Back end Services

    APIs and services that are dependable and pleasant to work on: clear data models, careful error handling, and code the next engineer can pick up without a tour.

    • Node.js
    • Python
    • APIs
  3. Systems Architecture

    Designing software to scale with the product and the team: where the boundaries go, how data moves, how it behaves under load, and the trade-offs written down.

    • System design
    • Scalability
    • Testing
Fig. 2 Where I work: all the way down.

§ 02

Selected work

01 Research · 2023

QCross

Cross-platform testing for quantum computing frameworks.

A testing platform that applies differential and metamorphic testing to three quantum SDKs: IBM Qiskit, Rigetti PyQuil and Google Cirq. Run the same program everywhere, transform it in ways that should not change the answer, and look closely when the answers differ.

  • Python
  • Qiskit
  • Cirq
  • PyQuil
02 Language · 2020

lox.js

An interpreter for the Lox programming language, in JavaScript.

A from-scratch implementation of Lox, the small scripting language from Robert Nystrom’s Crafting Interpreters. Scanning, parsing and evaluating, written to understand how a language actually runs.

  • JavaScript
  • Node.js
03 Tool · 2020

JSONPath Highlighter

See what a JSONPath expression selects.

A small web app that highlights the parts of a JSON document matched by a JSONPath expression, so you can check a query by looking instead of by reasoning.

  • React
  • JSONPath

§ 03

A short syllabus

I’ve worked as an instructor as well as a developer, and I still think the best way to learn a thing is to explain it to someone. Here is my writing arranged as a short course on JavaScript. Every reading is something I wrote.

  1. Unit 01

    How JavaScript waits

    Callbacks, then promises, then async/await: what an async function returns, where it pauses, and the mistakes that make code accidentally sequential.

  2. Unit 02

    Objects, all the way down

    Creating, reading and checking properties; a primer on prototypes; then the hidden attributes (writable, enumerable, configurable) every property carries.

  3. Unit 03

    Functions with opinions

    Arrow functions and lexical this. Generators that pause midway, power iterables and stream infinite data lazily.

  4. Unit 04

    Metaprogramming

    Proxies and Reflect, learned by rebuilding a real library, on-change, from scratch.

  5. Unit 05

    React, minus the foot-guns

    Binding in render, array indexes as keys, asynchronous setState: what goes wrong, and why.

  6. Unit 06

    Write an interpreter

    Scanning, parsing and evaluating a whole language by hand. The best way I know to understand everything above.

Also

Shorter pieces on Medium

§ 04

About

I’m Arfat. I live in Oslo, which I came to for a Master’s in Computer Science at the University of Oslo. Before that I worked as a full-stack developer and an instructor: building products across the front end and the back end, and teaching other people to do the same.

At work I gravitate towards architecture: where the boundaries go, how data moves through a system, and what will still hold up when the traffic, the codebase and the team are ten times bigger.

Outside of it, I like programming languages and the tools around them: interpreters, paradigms, and the testing that keeps them honest. That curiosity has taken me from Lox to OCaml and Standard ML, and as far as testing the SDKs people use to write quantum programs.

§ 05

Contact

The quickest way to reach me is email.