{
  "hero": {
    "name": "Sasha Bédard",
    "role": "Creative Technologist",
    "city": "Montréal, Canada",
    "lang": "Français · English",
    "bio": "Adaptive\nVersatile\nPersevering.\n\nHaving always wanted to be comfortable in everything I do, I developed an extraordinary curiosity that today allows me to be ultra versatile.\nMy path was a revelation to me, because I could link all the knowledge, acquired in multiple fields, and nest them into each other, allowing me to better understand the why and how when it comes time to make more specialized tasks.",
    "email": "contact@sashabedard.biz",
    "tel": "514 497 2670",
    "github": "github.com/sashabedard"
  },
  "projects": [
    {
      "id": "01",
      "name": "SYN/APSE",
      "glyph": "SYN/APSE",
      "kind": "Installation",
      "year": "2024",
      "role": "Creative Developer",
      "cluster": 0,
      "tags": [
        "installation",
        "Nuit Blanche",
        "Lumino"
      ],
      "stack": [
        "TouchDesigner",
        "Unifi",
        "OSC",
        "NDI"
      ],
      "metrics": [
        {
          "k": "hours_spent",
          "v": "10 000"
        },
        {
          "k": "team_size",
          "v": "30"
        }
      ],
      "desc": "About the Project \nCreated by graduating students of the Bachelor's in Creation of Immersive and Interactive Experiences at UQAM, SYN/APSE is an immersive installation that invites visitors to experience a form of coexistence with their environment, emphasizing listening, collaboration, and interdependence between living beings.\n\nThe Universe \nSynapse is the act of connection, the impulse of life, the foundation of the Interconnection of the Living. Dive into an environment born from the evolution between technology and nature, generating a common sharing energy: Synergy. Two coexisting biomes, Infra and Supra, perpetually influence and adapt to each other within this synaptic network. At the heart of this ecosystem, four Nodes act as vital organs, catalyzing and distributing Synergy to Infra and Supra through the Roots. The Rhizome, a species that naturally rests dormant in the Node cocoons, seeks to connect with others and energizes through socialization. Transmitting Synergy to a Node mobilizes the entire ecosystem, causing the biomes to react, blend, and alter their rhythm.\n\nMy Role: Technical Direction – Software & Network Integration \nAs the Technical Director for software and network integration, my main mandate was to design, deploy, and manage the entire digital backbone of the experience, providing a solid technical foundation for the multidisciplinary team's artistic vision.\n\nKey Responsibilities & Achievements:\n\nNetwork Architecture (LAN + VLANs): \nDesigned and deployed a complete network infrastructure using the Ubiquiti UniFi ecosystem, optimized for low-latency critical data flow across the installation, from 3 data sites across campuses.\n\nExperiential Pipeline: Built the central software architecture within TouchDesigner to drive and support the installation's interactive logic and states in real-time.\n\nGenerative Fallback Architecture: \nEngineered a custom non-deterministic, probabilistic democratic fallback system. During idle periods or potential sensor interruptions, this system allowed the installation's network of Nodes to autonomously and probabilistically \"vote\" on the environment's next state. This ensured the ecosystem remained organic, unpredictable, and \"alive\" without ever relying on static, pre-programmed backup loops.\n\nCustom Tool Development: \nCreated specialized software solutions, including the local deployment of a Large Language Model (LLM) and the programming of a synchronized time management system.\n\nReliability & Quality Assurance: Directed technical stress-test sessions to guarantee seamless stability and flawless execution during the public exhibition.\n\nTechnologies & Protocols: \nSoftware: TouchDesigner, Local LLM deployment, Unreal Engine 5, MadMapper + MadLaser\n\nHardware: Ubiquiti UniFi ecosystem\n\nProtocols: OSC, NDI, Dante"
    },
    {
      "id": "02",
      "name": "M.O.N.A",
      "glyph": "M.O.N.A",
      "kind": "Interactive Research",
      "year": "2023",
      "role": "Interactive Designer",
      "cluster": 1,
      "tags": [
        "interactive",
        "Face Recognition",
        "AI",
        "Omnipresence"
      ],
      "stack": [
        "TouchDesigner",
        "CUDA",
        "ArcFaces",
        "FAISS",
        "SQLite"
      ],
      "metrics": [
        {
          "k": "database_size",
          "v": "80 561"
        },
        {
          "k": "ID_duration",
          "v": "0.02s"
        }
      ],
      "desc": "Mechanical Omnipresent Network Analyser\n\nMONA is an interactive installation exploring the persistence of digital memory and surveillance through a brutalist cluster of CRT monitors. The piece acts as an omnipresent observer, greeting visitors with dark, glitch-heavy visuals driven by real-time facial analysis.\n\nThe \"Crankshaft\" of the Engine :\nAt the core of the installation lies a custom Python-based recognition pipeline that serves as the mechanical crankshaft for the visual engine. Bridging legacy hardware with modern AI, the system processes webcam streams via TouchDesigner to analyze visitors against a massive dataset in real-time.\n\nTechnical Architecture & Logic\nTo create a \"living\" archive of the exhibition, I implemented a dual-index strategy using FAISS and the NVIDIA FFHQ 1024 dataset (75k images):\n\nFirst Encounter (The Doppelgänger): \nFor new visitors, the system vectorizes their face and queries it against the static FFHQ dataset. The result projects the user alongside their five closest matches—digital lookalikes pulled from the latent space.\n\nRecursive Memory: \nSimultaneously, the system writes the visitor's vector data to a dynamic, persistent FAISS index.\n\nRecognition: Upon a second visit, MONA identifies the subject against this accumulated memory. It triggers a specific \"Person Recognized\" visual loop, confronting the viewer not just with the dataset, but with their own previous data trace.\n\n\n\nMade with :\n\nClément Boucher (Project Owner and Artistic Director)\n\nRaton Gosselin (Backend/Integration)\n\nMaxime Simard (Visual Artist)\n\nJean-Christophe Zephir (Sound Designer and Audio Programmer)\n\nDominic Roberts (Scenography)"
    },
    {
      "id": "03",
      "name": "Intro to Video-Mapping",
      "glyph": "VIDEO/MAP",
      "kind": "Education",
      "year": "2023",
      "role": "Educator",
      "cluster": 3,
      "tags": [
        "education",
        "projection"
      ],
      "stack": [
        "MadMapper",
        "Resolume",
        "Millumin"
      ],
      "metrics": [
        {
          "k": "students",
          "v": "20+"
        },
        {
          "k": "sessions",
          "v": "5"
        }
      ],
      "desc": "OVERVIEW\n\nI've been asked, by Aurélien Lafargue, to help him out on his unavailabilities to teach video-mapping to a Mixed Media classroom, operating under Manon Galibois, the mixed media teacher at Lucien-Pagé. \n\nOur goal : Create a scenery built from scratch by students and then to video-map it with their visual creations. \n\nMy goal : Do as above, and share my passion for multimedia to highschool students. \n\nTotal of 5 workshops, with possibly more. "
    },
    {
      "id": "04",
      "name": "Le Culte",
      "glyph": "LE CULTE",
      "kind": "Performance",
      "year": "2022",
      "role": "Technical Director",
      "cluster": 2,
      "tags": [
        "performance",
        "VJ",
        "Photography",
        "Live Installation"
      ],
      "stack": [
        "Resolume",
        "TouchDesigner",
        "Lightroom",
        "Photoshop"
      ],
      "metrics": [
        {
          "k": "audience",
          "v": "300+"
        },
        {
          "k": "runtime",
          "v": "45 min"
        }
      ],
      "desc": "Le Culte - Overview\n\nBeing part of the interactive experience committee of Le Culte, I tried to do as many things as possible to get the full experience of this artist collective.\n\nDuring Déluge, I mainly worked on the backend of our installation and of our medias. I did a TouchDesigner patch that allows multiple video playback, light controls, sound control, Kinect interaction, OSC and NDI protocol for the VJ’s visuals, MIDI inputs, idle title screen, and the whole integration of multiple patches.\n\nThis patch marks the first time I did a TouchDesigner patch that needs to be fool-proof, fail-safe and as performant as it gets.\n\nUsing EngineCOMPs to optimize the CPU’s thread load, I created a monster that can be reused in any way due to its modularity and efficiency. It averaged 60 FPS while under heavy load, on a regular consumer laptop*.\n\nThis concept, based on a restaurant’s kitchen, has a Kitchen, Le Réchaud and La Passe (where the cooks usually hand off the meals to the floor staff).\n\nThis concept is quite simple, the Kitchen is where data is received, cooked and parsed. The output of the Kitchen is either sent to Le Réchaud or to La Passe.\n\nLe Réchaud is where external data, such as MIDI and OSC inputs, is received and parsed to La Passe.\n\nLa Passe is where all cooked and parsed data is used to transmit the correct data flow to the correct receiver, using Python to launch events and to terminate others.\n\nIf you want to know more about this technique, concept or optimization workflow, feel free to contact me, as I am very proud of this concept.\n\nAUDIOVISUAL\nTo capture a portrait is something I’ve done often, but to capture 60+ persons’ portraits in a weekend’s time is not something I do every once in a while.\n\nUsing Lightroom Classic’s Tethered Live View really helped a lot in optimizing my workflow, as every image was saved in the right folder on the right drive. It was easy to show the models their pictures, and to batch edit them to get the same base images.\n"
    },
    {
      "id": "05",
      "name": "MAPP_MTL",
      "glyph": "MAPP/MTL",
      "kind": "Festival",
      "year": "2022",
      "role": "Projection Artist",
      "cluster": 2,
      "tags": [
        "festival",
        "projection"
      ],
      "stack": [
        "MadMapper",
        "Resolume",
        "GLSL",
        "Notch"
      ],
      "metrics": [
        {
          "k": "surface",
          "v": "24 × 18 m"
        },
        {
          "k": "nights",
          "v": "3"
        }
      ],
      "desc": "Site-specific mapping piece at Montréal's MAPP_MTL international festival."
    },
    {
      "id": "06",
      "name": "Echoes Within",
      "glyph": "ECHOES",
      "kind": "Experimentation",
      "year": "2021",
      "role": "Filmmaking - VFX Artist - DOP",
      "cluster": 1,
      "tags": [
        "Experimental"
      ],
      "stack": [
        "DaVinci Resolve",
        "Blender"
      ],
      "metrics": [
        {
          "k": "total_duration",
          "v": "300s"
        },
        {
          "k": "fps",
          "v": "60"
        }
      ],
      "desc": "Project Overview\n\nTechnically talented, visually surprising.\n\nAll 3 of us have a background in either photography, motion design, production and post-production.\n\nIt made us very attentive to details and technicalities.\n\nThis short film was shot on a Canon RP with a 24-105mm f/4 lens and with a Sony A7iii with a 24-105 f/2.8 lens. Not a lot of post-production or effects, as we tried to do it the old fashioned way : reflections, smoke and light paths.\n\n\n\n\n\nEmbark the journey."
    }
  ],
  "stack": [
    {
      "cat": "Real-time",
      "name": "TouchDesigner",
      "note": "node graph + GLSL",
      "level": 95,
      "yrs": "5y",
      "warn": false
    },
    {
      "cat": "Real-time",
      "name": "Unreal Engine",
      "note": "virtual production, MetaHuman",
      "level": 65,
      "yrs": "2y",
      "warn": false
    },
    {
      "cat": "Real-time",
      "name": "Blender",
      "note": "modeling, geometry nodes",
      "level": 78,
      "yrs": "4y",
      "warn": false
    },
    {
      "cat": "Code",
      "name": "Python",
      "note": "scripting, pipelines, ML",
      "level": 88,
      "yrs": "5y",
      "warn": false
    },
    {
      "cat": "Code",
      "name": "HTML / CSS / JS",
      "note": "web + interactive prototypes",
      "level": 82,
      "yrs": "6y",
      "warn": false
    },
    {
      "cat": "Code",
      "name": "Razor / C#",
      "note": "backend & tooling",
      "level": 55,
      "yrs": "2y",
      "warn": true
    },
    {
      "cat": "ML / AI",
      "name": "StyleGAN2",
      "note": "latent exploration, finetune",
      "level": 70,
      "yrs": "3y",
      "warn": true
    },
    {
      "cat": "ML / AI",
      "name": "YOLO",
      "note": "detection, tracking",
      "level": 72,
      "yrs": "2y",
      "warn": false
    },
    {
      "cat": "ML / AI",
      "name": "FAISS",
      "note": "vector search, kNN",
      "level": 68,
      "yrs": "1y",
      "warn": true
    },
    {
      "cat": "ML / AI",
      "name": "Ollama · LLMs",
      "note": "local inference, RAG",
      "level": 64,
      "yrs": "1y",
      "warn": true
    },
    {
      "cat": "Practice",
      "name": "Dataflow Architecture",
      "note": "OSC, signals, networking",
      "level": 90,
      "yrs": "5y",
      "warn": false
    },
    {
      "cat": "Practice",
      "name": "Projection Mapping",
      "note": "calibration, geometry",
      "level": 92,
      "yrs": "4y",
      "warn": false
    },
    {
      "cat": "Practice",
      "name": "Ableton Live",
      "note": "audio-reactive design",
      "level": 70,
      "yrs": "4y",
      "warn": false
    },
    {
      "cat": "Practice",
      "name": "Data Visualisation",
      "note": "generative, editorial",
      "level": 80,
      "yrs": "4y",
      "warn": false
    }
  ],
  "experience": [
    {
      "date": "2021 — now",
      "now": true,
      "role": "Research Auxiliary",
      "sub": "applied ml & interactive media",
      "org": "mXlab",
      "loc": "Montréal",
      "desc": "Contributing to research projects blending machine-learning and interactive spatial media under the Society for Arts & Technology."
    },
    {
      "date": "2021 — now",
      "now": true,
      "role": "Projectionist — Satosphère",
      "sub": "360° dome operator",
      "org": "Société des arts technologiques",
      "loc": "Montréal",
      "desc": "Operating the Satosphère 360° dome; calibration, show-running, collaboration with visiting artists."
    },
    {
      "date": "2021 — now",
      "now": true,
      "role": "Creative Technologist",
      "sub": "Freelance",
      "org": "Freelance",
      "loc": "Remote · MTL",
      "desc": "Installations, performances, data-art commissions. Full-stack — concept, model, pipeline, stage."
    },
    {
      "date": "2021 — 2022",
      "now": false,
      "role": "Creative Dev",
      "sub": "data-driven campaign work",
      "org": "Attitude Marketing",
      "loc": "Montréal",
      "desc": "When not doing creative or web dev work, I was the solution guy towards any tech related asks."
    }
  ],
  "boot": [
    {
      "l": "build",
      "v": "sashabedard.biz · v4.1.2 · commit a19c4fe",
      "s": "OK",
      "d": 200,
      "bar": false
    },
    {
      "l": "runtime",
      "v": "node 20.12 · geist 1.3 · umap-wasm 0.4",
      "s": "OK",
      "d": 450,
      "bar": false
    },
    {
      "l": "models",
      "v": "stylegan2-ffhq · yolo-v8-n · ollama/Qwen3-Coder-480B",
      "s": "3/3",
      "d": 720,
      "bar": true
    },
    {
      "l": "vector_db",
      "v": "faiss index: 12,480 embeddings · 384-d",
      "s": "OK",
      "d": 1000,
      "bar": true
    },
    {
      "l": "projects",
      "v": "{{count}} indexed · 4 clusters · {{tools}} tools referenced",
      "s": "OK",
      "d": 1280,
      "bar": true
    },
    {
      "l": "cluster_cpu",
      "v": "inference warm · avg 12ms · mem 1.4GB / 4GB",
      "s": "OK",
      "d": 1580,
      "bar": true
    },
    {
      "l": "status",
      "v": "{{status}} · {{window}} · response < 48h",
      "s": "LIVE",
      "d": 1880,
      "bar": false
    }
  ],
  "site": {
    "available": true,
    "availableWindow": "Q2 2026",
    "response": "response < 48h",
    "lat": "45.50°N · 73.56°W",
    "vdb": "faiss · 12,480 vec",
    "version": "v4.1",
    "theme": "dark",
    "accent": "#8fb88a",
    "typo": "serif",
    "density": "compact",
    "heroLayout": "split"
  }
}