Pockets _1 Event Photos 18.jpg

[what]

I transform complex information into compelling stories adaptable across digital and physical landscapes.


[why]

I believe that novel outcomes are born of novel processes that borrow from disciplines beyond traditional graphic design.


[how]

My process is sometimes playful, often data-driven, largely participatory, and always evolving.


[who]

Past clients include Processing, Amazon, LinkedIn, Kohler, Cadbury, Phillips.


[when]

9 to 5 → Digital branding and web design for a research and policy institute at The New School. 5 to 9 → Creative coding and graphic design for independent ventures in art, music, and technology.


[where]

Born in Bombay. Based in Brooklyn. Studied Design + Technology at Parsons, New York.


https://100.sta-chicago.org/winners/2023/type-playground

https://100.sta-chicago.org/winners/2023/type-playground

Love Letters from NYC

🎤 Chinatown.js at Sanctuary, 2024 🎤 TypeLab at Typographics, 2024 🗞️ p5.js Community Sketches, 2024 🏆 Society of Typographic Arts, 2023 🎤 Type Thursdays, 2023 🎤 Intro to Motion Graphics, Pratt 2023

https://devpost.com/software/plantar-db3rq0

https://devpost.com/software/plantar-db3rq0

Plant AR

🏆 MIT Reality Hack (Hardware Track), 2024 🖼️ MIT Reality Hackathon Public Expo, 2024 🗞️ Visions of Reality, Better Worlds 2024

https://graphis.com/entry/0e501bff-7220-4bd4-8835-246f5480099c

https://graphis.com/entry/0e501bff-7220-4bd4-8835-246f5480099c

Bling Bling

🏆 Graphis New Talent Annual, 2024 🏆 AIGA Flux Awards Finalist, 2024 🎥 Chroma Art Film Festival, 2023 🎥 AMT Moving Image, 2023


https://www.c2award.com/winners/c2a/2023/5567/

https://www.c2award.com/winners/c2a/2023/5567/

Entropy

🏆 Creative Communication Branding, 2023 🏆 ICDE Bronze Medalist, 2023 🗞️ Crafting Chaos into Creative Brilliance, C2A 2023

https://fluxdesigncompetition.org/winners.php

https://fluxdesigncompetition.org/winners.php

Craft Collect

🖼️ Games for Change Exhibition, 2024 🏆 2xAIGA Flux Finalist, 2024 🖼️ Wonderville Game Pop-up, 2024 🏆 GD USA, ’Designing for Good’, 2023 🖼️ Entropy Thesis Show, 2023 🎤 Entropy Symposium, 2023

https://indigoaward.com/winners/6770

https://indigoaward.com/winners/6770

I Won’t Forget

🏆 Indigo Design Awards Silver, 2023


https://innovationcenter.newschool.edu/quantum-design-jam-2023/

https://innovationcenter.newschool.edu/quantum-design-jam-2023/

Biobits

🖼️ TNS Innovation Center Quantum Jam, 2023

https://materialconditions.salt.codes/mc-01/do-you-see-a-face-on-the-horizon

https://materialconditions.salt.codes/mc-01/do-you-see-a-face-on-the-horizon

Face on the Horizon

🖼️ Salt.Codes, 2022 🖼️ Immersive Realities Lab, 2022

https://ai-observatory.in/reclaiming

https://ai-observatory.in/reclaiming

Scenes May Contain

🖼️ MozFest 'Reclaiming AI Futures', 2022 🖼️ AI Observatory, 2021

super-embed:

<style>
  body{
  overflow-x: hidden;
  }
  .trail{
  position: absolute;
  top: 0px;
  left: 0px;
  margin: 0;
  min-height: 100vh;
  width: 100vw;
  z-index: -1000;
  }
  .star {
    transform-style: preserve-3d;
    width: 1px;
    height: 1px;
    position: absolute;
    z-index: -9; 
  }
  .star:before {
    position: absolute;
    content: "✦";
    color: inherit;
    inset: 0;
    text-shadow: 0 0 0.8em #fff5;
  }
</style>

<section class="trail"></section>

<script>

  let xPosTrail=0, yPosTrail=0;
  const trail = document.querySelector(".trail");
	const sidebar = document.querySelector(".super-sidebar");
  const vh = Math.max(document.documentElement.scrollHeight || 0, window.innerHeight || 0),
    dist_to_draw = 50,
    delay = 1000,
    fsize = [
      '1.1rem', '1.4rem', '.8rem', '1.7rem'
    ],
    colors = [
    '#39D0BA',
    '#6B64F7',
    '#D6FF62',
    '#FF715B',
    '#FFD9DA',
    '#FFF275'
  ],
    rand = (min, max) =>
      Math.floor(Math.random() * (max - min + 1)) + min,
    selRand = (o) => o[rand(0, o.length -1)],
    distanceTo =  (xPosTrail, yPosTrail, x2, y2) =>
      Math.sqrt((Math.pow(x2-xPosTrail,2))+(Math.pow(y2-yPosTrail,2))),
    shouldDraw = (x, y) =>
      (distanceTo(xPosTrail, yPosTrail, x, y) >= dist_to_draw),
    addStr = (x, y) => {
      const str = document.createElement("div");
      str.innerHTML = '&#10022;';
      str.className = 'star';
      str.style.top = `${y + rand(-20,20)}px`;
      str.style.left = `${x-200}px`;
      str.style.color = selRand(colors);
      str.style.fontSize = selRand(fsize);
      trail.appendChild(str);
      const fs = 10 + 5 * parseFloat(getComputedStyle(str).fontSize);
      str.animate({
        translate: `0 ${(y+fs)>vh?vh-y:fs}px`,
        opacity: 0,
        transform: `rotateX(${rand(1, 500)}deg) rotateY(${rand(1, 500)}deg)`
      }, {
        duration: delay,
        fill: 'forwards',

      });
      setTimeout(() => {
          str.remove();
        }, delay);
    }

  addEventListener("mousemove", (e) => {
    const {clientX, pageY} = e;
  
    if(shouldDraw(clientX, pageY)){
      addStr(clientX, pageY);
      xPosTrail = clientX;
      yPosTrail = pageY;
    }
  });
</script>