Hi, I'm Jean.

I design,

engineer &

ship with AI.

About me · by demonstration

Make, then describe.

Self-taught engineer from Caracas. I think in pixels, vectors and stack traces. Below, four small things that actually run — instead of a paragraph telling you they could.

0104On-device AI
Scroll into view to load
left-click — includeright-click — exclude·ONNX-WASM · pre-encoded embeddings
01On-device AI01 / 04

Self, segmented.

Click the portrait. A SAM2 decoder runs in your browser, fed by pre-encoded image embeddings — ONNX Runtime + WASM in a Web Worker, nothing leaves your tab. Same pattern I use to keep latency low and bills off the GPU rental.
  • SAM2
  • ONNX
  • WASM
  • Web Worker
  • Pre-encoded
PaintingCaracasAutodidactMentorship
Personal

Caracas

Where it started.

Born in Caracas in '96. First touched a computer in a smoke-filled cyber café between brownouts, and never let go.

AI / ML6Frontend7Systems6Design5Personal4
02Embedding playground02 / 04

Mind, mapped.

Twenty-eight things I work on, projected onto a plane and clustered by relation. Click any node — the card pins, related ideas connect, the rest dim. Same trick that powers RAG, search and the segmentation tile above: vectors do the heavy lifting, geometry does the explaining.
  • Embeddings
  • k-NN
  • SVG
Scroll into view to load
03GPU shaders03 / 04

Stones, simulated.

A diamond ring rendered with React-Three-Fiber. The stones use MeshRefractionMaterial — true cube-map refraction with chromatic aberration — the same physically-based approach behind the diamond shader I shipped at Pandora. Drag to spin. HDR-lit, bloomed for sparkle.
  • Three.js
  • R3F
  • MeshRefractionMaterial
  • HDR / IBL
  • Bloom
App.js
import { useState, useEffect } from 'react';
import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
import { Pedometer } from 'expo-sensors';

export default function App() {
  const [steps, setSteps] = useState(0);
  const [today, setToday] = useState(null);
  const [msg, setMsg] = useState('');

  useEffect(() => {
    let sub;
    (async () => {
      const ok = await Pedometer.isAvailableAsync();
      if (!ok) { setMsg('Pedometer unavailable'); return; }
      const p = await Pedometer.requestPermissionsAsync();
      if (!p.granted) { setMsg('Permission denied'); return; }
      const end = new Date(), start = new Date();
      start.setHours(0,0,0,0);
      try {
        const r = await Pedometer.getStepCountAsync(start, end);
        setToday(r.steps);
      } catch {}
      sub = Pedometer.watchStepCount(r => setSteps(r.steps));
    })();
    return () => sub && sub.remove();
  }, []);

  return (
    <View style={s.c}>
      <Text style={s.t}>Step Tracker</Text>
      <View style={s.card}>
        <Text style={s.l}>Since opened</Text>
        <Text style={s.v}>{steps}</Text>
      </View>
      {today !== null && (
        <View style={s.card}>
          <Text style={s.l}>Today total</Text>
          <Text style={s.v}>{today}</Text>
        </View>
      )}
      <TouchableOpacity style={s.b} onPress={() => setSteps(0)}>
        <Text style={s.bt}>Reset session</Text>
      </TouchableOpacity>
      {msg ? <Text style={s.e}>{msg}</Text> : null}
    </View>
  );
}

const s = StyleSheet.create({
  c: { flex: 1, backgroundColor: '#0a0a0a', padding: 24 },
  t: { color: '#fff', fontSize: 28, fontWeight: '700' },
  card: { backgroundColor: '#171717', borderRadius: 16, padding: 20 },
  l: { color: '#888', fontSize: 13, textTransform: 'uppercase' },
  v: { color: '#fff', fontSize: 56, fontWeight: '800' },
  b: { backgroundColor: '#fff', borderRadius: 999, padding: 14 },
  bt: { color: '#000', fontWeight: '700' },
  e: { color: '#f87171' },
});
9:415G

Expo Go

Scan to run.

generating…

Open Expo Go on iOS / Android, tap Scan QR Code.

expo · react native · pedometer · tap card behind to swap

Scroll into view…
04Cross-platform04 / 04

Steps, counted.

A pedometer step tracker, live in an Expo Snack. Subscribes to expo-sensors Pedometer for real-time events and pulls today’s total from the Health / CMPedometer history APIs. Open the QR with Expo Go on a phone — the count ticks up as you walk.
  • Expo
  • React Native
  • expo-sensors
  • Pedometer
  • Snack

End of demos

More of the same kind of work — shaders, AI, mobile, the small details — lives across the rest of the site. Keep scrolling.