safwanypMALMÖ, SWEDEN

// software developer

Safwan
Parkar

I write code for a living in Malmö. By day I keep the business logic behind IKEA Family running for tens of millions of members. By conviction I am a zero-build maximalist: raw ESM, JSDoc, and as few tools between me and the runtime as I can get away with.

Safwan Parkar
// salt n vinegar enthusiast
01

About

I am a software developer based in Malmö, Sweden, building backend and infrastructure that has to keep working at very large scale and stay simple enough that the next person can read it.

My taste runs toward the unfashionable: plain JavaScript, small dependency trees, and code you can run without a compile step. I care more about the shape of a program than the cleverness of its tooling.

Based in
Malmö, Sweden
Works at
IKEA · Ingka Group Digital
Handle
safwanyp
Writes
Node.js · ESM · JSDoc
02

Career

Software Engineer

IKEA · Customer Rewards team

Hubhult office, Malmö

I own and evolve the global business logic behind IKEA Family, the program that ties together how members earn, qualify for, and receive rewards across markets. It is the kind of system where a small rule change ripples out to a lot of people, so correctness and clarity win over cleverness.

150M+

IKEA Family members worldwide

served by the rewards logic I help maintain - the same rules running consistently across every market.

03

Philosophy

// the manifesto

Zero-build
maximalist.

Maximalist about what the code does, minimalist about what stands in its way. For backend and infrastructure I cut the build chain to as close to nothing as the job allows, so the thing I wrote is the thing that runs.

  1. 01Raw ESMShip JavaScript modules the runtime already understands. No bundler standing between the source and what actually runs.
  2. 02JSDoc, not TSTypes live in comments. You get the editor help and the checks without a build step turning your code into something else.
  3. 03Node, plainlyLean on the platform. Fewer dependencies, fewer surprises, a stack you can reason about end to end.
  4. 04Zero transpilersNo Babel, no bundler, no source maps to debug through for backend and infra. What you wrote is what runs.
  5. 05Functions over classesClosures and factory methods over JS classes. State stays where it belongs and behavior composes instead of inheriting.
04

Project

DeTypeScriptUnTSTS-Shredder

A tool that strips TypeScript back to JavaScript.

DeTypeScript takes a TypeScript codebase and shreds the types out of it, moving the useful annotations into JSDoc comments and leaving behind plain, runnable JavaScript. It is the zero-build philosophy as a migration path: keep the type information, drop the transpiler.

inTypeScript inAnnotated .ts source with interfaces, generics, and type imports.
runShred the typesType syntax is removed and the meaningful parts are rewritten as JSDoc.
outPlain JS outESM that runs as-is, documented with JSDoc - no build step required.
// before - strip.ts
export function add(a: number, b: number): number {
  return a + b;
}

// after - strip.js
/**
 * @param {number} a
 * @param {number} b
 * @returns {number}
 */
export function add(a, b) {
  return a + b;
}
05

Contact

Let’s talk shop.

// built the way I like it - close to the metal