PageSourceSearch

https://abuzreq.netlify.app/projects/

html abuzreq.netlify.app collected 2026-10-03 10:24:16 UTC 49,079 bytes, 1 lines download raw bytes

1<!DOCTYPE html><html  lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Projects · Ahmed Abuzuraiq</title>
1<script type="importmap">{"imports":{"#entry":"/_nuxt/DG_FxZtQ.js"}}</script>
1<script>try{if(localStorage.getItem("theme")==="light")document.documentElement.dataset.theme="light"}catch(e){}</script>
1<style>.icon[data-v-c47d3fcb]{flex:none;width:1em;height:1em}.icon path[data-v-c47d3fcb]{fill:currentColor}</style><link rel="stylesheet" href="/_nuxt/entry.MPFxC1Ct.css" crossorigin><link rel="stylesheet" href="/_nuxt/Icon.Bmwnlx-t.css" crossorigin><link rel="preload" as="font" type="font/woff2" href="/fonts/Fraunces-normal-latin.woff2" crossorigin="anonymous"><link rel="preload" as="font" type="font/woff2" href="/fonts/PublicSans-normal-latin.woff2" crossorigin="anonymous"><link rel="preload" as="fetch" crossorigin="anonymous" href="/projects/_payload.json?_b=f6f1a8cc-d439-4b01-b10f-fa878b7a1399"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DG_FxZtQ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DDxOBzLw.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C5tmfImH.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BEHgSWAi.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/EFBdQgA3.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CUA1MqXE.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CSlJMRbn.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BzThaM3l.js">
1<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BDNMzG2s.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BljlkBmt.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/hoyNfkGq.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CLgfGQQ6.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Dwx6TY96.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BzRdCmvA.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/VaCPxCkc.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BC3JbAtP.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D_OI8Dk8.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/lK4QcH2n.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CGSu7rxW.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DbGgnCj4.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BG0TjRaR.js">
1<script type="module" src="/_nuxt/DG_FxZtQ.js" crossorigin></script>
1<meta name="color-scheme" content="dark"><meta name="theme-color" content="#2f6fd6"><meta name="description" content="Select research and hobby projects by Ahmed Abuzuraiq."><meta name="google-site-verification" content="9Cvb8PAvi5VHWLb4-AB4XRx94loE1gSejh_B00Aa6so"><link rel="icon" type="image/x-icon" href="/favicon.ico"><link rel="icon" sizes="32x32" type="image/png" href="/favicon-32x32.png"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="manifest" href="/site.webmanifest"><link rel="alternate" type="application/rss+xml" title="News" href="/feed.xml"><link rel="canonical" href="https://abuzreq.com/projects"><meta property="og:url" content="https://abuzreq.com/projects"><meta property="og:type" content="website"><meta property="og:site_name" content="Ahmed Abuzuraiq"><meta property="og:locale" content="en_US"><meta property="og:image" content="https://abuzreq.com/og.png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="Ahmed Abuzuraiq — HCI × Generative AI researcher, developer and creative technologist"><meta name="twitter:card" content="summary_large_image"><meta property="og:title" content="Projects · Ahmed Abuzuraiq"><meta property="og:description" content="Select research and hobby projects by Ahmed Abuzuraiq."></head><body><!--teleport start anchor--><svg class="bend-defs" aria-hidden="true" focusable="false"><filter id="bend-filter" color-interpolation-filters="sRGB"><feTurbulence type="fractalNoise" baseFrequency="0.02" numOctaves="3" seed="11" result="turbulence"></feTurbulence><feDisplacementMap in="SourceGraphic" in2="turbulence" scale="0" xChannelSelector="R" yChannelSelector="G"></feDisplacementMap></filter></svg><div class="bend"><button type="button" class="bend-toggle" aria-expanded="false" aria-controls="bend-panel"><svg class="bend-toggle-icon" viewBox="0 0 16 16" aria-hidden="true"><path d="M1 9c2-4 4-4 6 0s4 4 6 0 2-3 2-3"></path></svg> Bend this page</button><!----></div><!--teleport anchor--><!--teleport start anchor--><!----><!--teleport anchor--><div id="__nuxt"><!--[--><span></span><div class="page"><header class="site-header"><div class="wrap wide"><a href="/" class="brand" aria-label="Home"><img class="brand-logo" src="/media/logo.png" alt width="40" height="40"><span class="brand-name">Ahmed Abuzuraiq</span></a><nav aria-label="Main"><ul class="nav"><!--[--><li><a href="/" class="">About</a></li><li><a href="/publications" class="">Publications</a></li><li><a aria-current="page" href="/projects" class="router-link-active router-link-exact-active">Projects</a></li><li><a href="/games" class="">Games</a></li><li><a href="https://app.enhancv.com/share/3ad12d79/?utm_medium=growth&amp;utm_campaign=share-resume&amp;utm_source=dynamic" target="_blank" rel="noopener">CV</a></li><!--]--></ul></nav><button type="button" class="theme-toggle" aria-label="Switch to light mode" title="Light mode"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 7a5 5 0 1 1 0 10 5 5 0 0 1 0-10zm0 2a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM1 11h3v2H1v-2zm19 0h3v2h-3v-2zM4.2 5.6l1.4-1.4 2.1 2.1-1.4 1.4-2.1-2.1zm12.1 12.1 1.4-1.4 2.1 2.1-1.4 1.4-2.1-2.1zM4.2 18.4l2.1-2.1 1.4 1.4-2.1 2.1-1.4-1.4zM16.3 6.3l2.1-2.1 1.4 1.4-2.1 2.1-1.4-1.4z" data-v-c47d3fcb></path></svg></button></div></header><main class="wrap"><!--[--><div><h1 class="page-title">Projects</h1><p class="page-intro">Select research and hobby projects. Open a tile for the full story.</p><div><ul class="gallery-wide gallery"><!--[--><li><article class="tile"><span class="tile-media"><video class="thumb" poster="/media/work/monsterverse.webp" src="/media/work/monsterverse.mp4" autoplay muted loop playsinline preload="metadata" aria-label="MonsterVerse"></video></span><div class="tile-body"><button type="button" class="tile-open">MonsterVerse</button><!----><p class="tile-summary">A multimodal platform for searching, exploring, and generating variations of Dungeons &amp; Dragons monsters.</p><div class="tile-links"><!--[--><!--]--></div></div></article></li><li><article class="tile"><span class="tile-media"><img class="thumb" src="/media/work/agentic-bending.webp" alt="Agentic Bending with ComfyUI" loading="lazy" decoding="async"></span><div class="tile-body"><button type="button" class="tile-open">Agentic Bending with ComfyUI</button><!----><p class="tile-summary">An AI agent skill that takes care of the technical side of bending diffusion models, so artists can stay with the images.</p><div class="tile-links"><!--[--><a href="https://github.com/abuzreq/comfyui-model-bending-agent" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M10.6 13.4a1 1 0 0 1 0 1.4l-1 1a4 4 0 1 1-5.6-5.6l2-2a4 4 0 0 1 5.6 0 1 1 0 1 1-1.4 1.4 2 2 0 0 0-2.8 0l-2 2a2 2 0 1 0 2.8 2.8l1-1a1 1 0 0 1 1.4 0zm2.8-2.8a1 1 0 0 1 0-1.4l1-1a4 4 0 1 1 5.6 5.6l-2 2a4 4 0 0 1-5.6 0 1 1 0 1 1 1.4-1.4 2 2 0 0 0 2.8 0l2-2a2 2 0 1 0-2.8-2.8l-1 1a1 1 0 0 1-1.4 0z" data-v-c47d3fcb></path></svg>install into your AI tool of choice!</a>
1<!--]--></div></div></article></li><li><article class="tile"><span class="tile-media"><video class="thumb" poster="/media/work/taksim-web.png" src="/media/work/taksim-web.mp4" autoplay muted loop playsinline preload="metadata" aria-label="Taksim; Generate &amp; Conquer"></video></span><div class="tile-body"><button type="button" class="tile-open">Taksim; Generate &amp; Conquer</button><!----><p class="tile-summary">An old dream from my first research paper is finally reality; a browser-based game where you can draw custom maps, define region connectivity for strategic play, and run different game modes on them. Powered by Answer Set Programming for level generation.</p><div class="tile-links"><!--[--><a href="https://abuzreq.itch.io/taksim-generate-conquer-free" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm6.9 7h-3a15.6 15.6 0 0 0-1.4-3.9A8 8 0 0 1 18.9 9zM12 4.1c.7 1 1.3 2.3 1.7 3.9h-3.4c.4-1.6 1-2.9 1.7-3.9zM4.3 14a8 8 0 0 1 0-4h3.4a16.6 16.6 0 0 0 0 4H4.3zm.8 2h3a15.6 15.6 0 0 0 1.4 3.9A8 8 0 0 1 5.1 16zm3-7h-3a8 8 0 0 1 4.4-3.9A15.6 15.6 0 0 0 8.1 9zM12 19.9c-.7-1-1.3-2.3-1.7-3.9h3.4c-.4 1.6-1 2.9-1.7 3.9zm2.1-5.9H9.9a14.7 14.7 0 0 1 0-4h4.2a14.7 14.7 0 0 1 0 4zm.4 5.9a15.6 15.6 0 0 0 1.4-3.9h3a8 8 0 0 1-4.4 3.9zm1.8-5.9a16.6 16.6 0 0 0 0-4h3.4a8 8 0 0 1 0 4h-3.4z" data-v-c47d3fcb></path></svg>Play</a><!--]--></div></div></article></li><li><article class="tile"><span class="tile-media"><img class="thumb" src="/media/work/designsense_windows.jpg" alt="DesignSense Beta" loading="lazy" decoding="async"></span><div class="tile-body"><button type="button" class="tile-open">DesignSense Beta</button><!----><p class="tile-summary">A new enhanced version of DesignSense for exploring and narrowing large collections of options, considering their visual and quantiative data.</p><div class="tile-links"><!--[--><a href="https://designsense-beta.netlify.app/#/" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm6.9 7h-3a15.6 15.6 0 0 0-1.4-3.9A8 8 0 0 1 18.9 9zM12 4.1c.7 1 1.3 2.3 1.7 3.9h-3.4c.4-1.6 1-2.9 1.7-3.9zM4.3 14a8 8 0 0 1 0-4h3.4a16.6 16.6 0 0 0 0 4H4.3zm.8 2h3a15.6 15.6 0 0 0 1.4 3.9A8 8 0 0 1 5.1 16zm3-7h-3a8 8 0 0 1 4.4-3.9A15.6 15.6 0 0 0 8.1 9zM12 19.9c-.7-1-1.3-2.3-1.7-3.9h3.4c-.4 1.6-1 2.9-1.7 3.9zm2.1-5.9H9.9a14.7 14.7 0 0 1 0-4h4.2a14.7 14.7 0 0 1 0 4zm.4 5.9a15.6 15.6 0 0 0 1.4-3.9h3a8 8 0 0 1-4.4 3.9zm1.8-5.9a16.6 16.6 0 0 0 0-4h3.4a8 8 0 0 1 0 4h-3.4z" data-v-c47d3fcb></path></svg>Try here!</a><a href="/publications#abuzuraiq_designing_2025" class=""><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2.4L17.6 8H14V4.4zM8 12h8v1.6H8V12zm0 3.2h8v1.6H8v-1.6zM8 8.8h3.2v1.6H8V8.8z" data-v-c47d3fcb></path></svg>Paper (IJAC &#39;25)</a><!--]--></div></div></article></li><li><article class="tile"><span class="tile-media"><video class="thumb" poster="/media/work/kiln.webp" src="/media/work/kiln.mp4" autoplay muted loop playsinline preload="metadata" aria-label="Kiln"></video></span><div class="tile-body"><button type="button" class="tile-open">Kiln</button><!----><p class="tile-summary">A studio for training, bending, merging, and composing with small diffusion models trained on your own images.</p><div class="tile-links"><!--[--><a href="https://api.cerebrium.ai/v4/p-ad13f3aa/kiln/" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm6.9 7h-3a15.6 15.6 0 0 0-1.4-3.9A8 8 0 0 1 18.9 9zM12 4.1c.7 1 1.3 2.3 1.7 3.9h-3.4c.4-1.6 1-2.9 1.7-3.9zM4.3 14a8 8 0 0 1 0-4h3.4a16.6 16.6 0 0 0 0 4H4.3zm.8 2h3a15.6 15.6 0 0 0 1.4 3.9A8 8 0 0 1 5.1 16zm3-7h-3a8 8 0 0 1 4.4-3.9A15.6 15.6 0 0 0 8.1 9zM12 19.9c-.7-1-1.3-2.3-1.7-3.9h3.4c-.4 1.6-1 2.9-1.7 3.9zm2.1-5.9H9.9a14.7 14.7 0 0 1 0-4h4.2a14.7 14.7 0 0 1 0 4zm.4 5.9a15.6 15.6 0 0 0 1.4-3.9h3a8 8 0 0 1-4.4 3.9zm1.8-5.9a16.6 16.6 0 0 0 0-4h3.4a8 8 0 0 1 0 4h-3.4z" data-v-c47d3fcb></path></svg>Try here (CPU)</a><a href="https://github.com/abuzreq/kiln" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 .5a12 12 0 0 0-3.8 23.4c.6.1.8-.3.8-.6v-2c-3.3.7-4-1.6-4-1.6-.6-1.4-1.4-1.8-1.4-1.8-1.1-.7.1-.7.1-.7 1.2.1 1.8 1.2 1.8 1.2 1.1 1.8 2.8 1.3 3.5 1 .1-.8.4-1.3.8-1.6-2.7-.3-5.5-1.3-5.5-5.9 0-1.3.5-2.4 1.2-3.2-.1-.3-.5-1.5.1-3.2 0 0 1-.3 3.3 1.2a11.5 11.5 0 0 1 6 0c2.3-1.5 3.3-1.2 3.3-1.2.7 1.7.3 2.9.1 3.2.8.8 1.2 
11.9 1.2 3.2 0 4.6-2.8 5.6-5.5 5.9.4.4.8 1.1.8 2.2v3.3c0 .3.2.7.8.6A12 12 0 0 0 12 .5z" data-v-c47d3fcb></path></svg>Install from source code (To be available soon)</a><!--]--></div></div></article></li><li><article class="tile"><span class="tile-media"><video class="thumb" poster="/media/work/diffusion-model-bending.webp" src="/media/work/diffusion-model-bending.mp4" autoplay muted loop playsinline preload="metadata" aria-label="Diffusion Model Bending"></video></span><div class="tile-body"><button type="button" class="tile-open">Diffusion Model Bending</button><!----><p class="tile-summary">A ComfyUI extension (2,000+ downloads) that applies transformations (addition, noise, rotation, erosion, custom ops) to the inner workings of diffusion models, pushing them toward new and diverse aesthetics.</p><div class="tile-links"><!--[--><a href="https://github.com/abuzreq/ComfyUI-Model-Bending" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 .5a12 12 0 0 0-3.8 23.4c.6.1.8-.3.8-.6v-2c-3.3.7-4-1.6-4-1.6-.6-1.4-1.4-1.8-1.4-1.8-1.1-.7.1-.7.1-.7 1.2.1 1.8 1.2 1.8 1.2 1.1 1.8 2.8 1.3 3.5 1 .1-.8.4-1.3.8-1.6-2.7-.3-5.5-1.3-5.5-5.9 0-1.3.5-2.4 1.2-3.2-.1-.3-.5-1.5.1-3.2 0 0 1-.3 3.3 1.2a11.5 11.5 0 0 1 6 0c2.3-1.5 3.3-1.2 3.3-1.2.7 1.7.3 2.9.1 3.2.8.8 1.2 1.9 1.2 3.2 0 4.6-2.8 5.6-5.5 5.9.4.4.8 1.1.8 2.2v3.3c0 .3.2.7.8.6A12 12 0 0 0 12 .5z" data-v-c47d3fcb></path></svg>Code</a><a href="https://diffusion-bending-demo.netlify.app/" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm6.9 7h-3a15.6 15.6 0 0 0-1.4-3.9A8 8 0 0 1 18.9 9zM12 4.1c.7 1 1.3 2.3 1.7 3.9h-3.4c.4-1.6 1-2.9 1.7-3.9zM4.3 14a8 8 0 0 1 0-4h3.4a16.6 16.6 0 0 0 0 4H4.3zm.8 2h3a15.6 15.6 0 0 0 1.4 3.9A8 8 0 0 1 5.1 16zm3-7h-3a8 8 0 0 1 4.4-3.9A15.6 15.6 0 0 0 8.1 9zM12 19.9c-.7-1-1.3-2.3-1.7-3.9h3.4c-.4 1.6-1 2.9-1.7 3.9zm2.1-5.9H9.9a14.7 14.7 0 0 1 0-4h4.2a14.7 14.7 0 0 1 0 4zm.4 5.9a15.6 15.6 0 0 0 1.4-3.9h3a8 8 0 0 1-4.4 3.9zm1.8-5.9a16.6 16.6 0 0 0 0-4h3.4a8 8 0 0 1 0 4h-3.4z" data-v-c47d3fcb></path></svg>Try it</a><a href="/publications#abuzuraiq_unboxing_springer_2026" class=""><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2.4L17.6 8H14V4.4zM8 12h8v1.6H8V12zm0 3.2h8v1.6H8v-1.6zM8 8.8h3.2v1.6H8V8.8z" data-v-c47d3fcb></path></svg>Paper (Book chapter)</a><a href="/publications#abuzuraiq_xaixarts_2025" class=""><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2.4L17.6 8H14V4.4zM8 12h8v1.6H8V12zm0 3.2h8v1.6H8v-1.6zM8 8.8h3.2v1.6H8V8.8z" data-v-c47d3fcb></path></svg>Paper (XAIxArts &#39;25)</a><a href="https://www.metacreation.net/projects/model-bending" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M10.6 13.4a1 1 0 0 1 0 1.4l-1 1a4 4 0 1 1-5.6-5.6l2-2a4 4 0 0 1 5.6 0 1 1 0 1 1-1.4 1.4 2 2 0 0 0-2.8 0l-2 2a2 2 0 1 0 2.8 2.8l1-1a1 1 0 0 1 1.4 0zm2.8-2.8a1 1 0 0 1 0-1.4l1-1a4 4 0 1 1 5.6 5.6l-2 2a4 4 0 0 1-5.6 0 1 1 0 1 1 1.4-1.4 2 2 0 0 0 2.8 0l2-2a2 2 0 1 0-2.8-2.8l-1 1a1 1 0 0 1-1.4 0z" data-v-c47d3fcb></path></svg>Project</a><!--]--></div></div></article></li><li><article class="tile"><span class="tile-media"><img class="thumb" src="/media/work/neurosphere.webp" alt="NeuroSphere: AI Marbles" loading="lazy" decoding="async"></span><div class="tile-body"><button type="button" class="tile-open">NeuroSphere: AI Marbles</button><!----><p class="tile-summary">A design fiction featuring a promotional website for an AI augmentation product, imagining a future where AI models are traded as commodities. Includes an AI-generated podcast discussing the implications.</p><div class="tile-links"><!--[--><a href="https://neurosphereai.netlify.app/" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm6.9 7h-3a15.6 15.6 0 0 0-1.4-3.9A8 8 0 0 1 18.9 9zM12 4.1c.7 1 1.3 2.3 1.7 3.9h-3.4c.4-1.6 1-2.9 1.7-3.9zM4.3 14a8 8 0 0 1 0-4h3.4a16.6 16.6 0 0 0 0 4H4.3zm.8 2h3a15.6 15.6 0 0 0 1.4 3.9A8 8 0 0 1 5.1 16zm3-7h-3a8 8 0 0 1 4.4-3.9A15.6 15.6 0 0 0 8.1 9zM12 19.9c-.7-1-1.3-2.3-1.7-3.9h3.4c-.4 1.6-1 2.9-1.7 3.9zm2.1-5.9H9.9a14.7 14.7 0 0 1 0-4h4.2a14.7 14.7 0 0 1 0 4zm.4 5.9a15.6 15.6 0 0 0 1.4-3.9h3a8 8 0 0 1-4.4 3.9zm1.8-5.9a16.6 16.6 0 0 0 0-4h3.4a8 8 0 0 1 0 4h-3.4z" data-v-c47d3fcb></path></svg>Visit</a><!--]--></div></div></article></li><li><article class="tile"><span class="tile-media"><img class="thumb" src="/media/work/dpredict.webp" alt="DPredict" loading="lazy" decoding="async"></span><div class="tile-body"><button type="button" class="tile-open">DPredict</button><!----><p class="tile-summary">A performance-based design tool for creating sustainable building designs with low energy demand and high daylight utilization in the early design stages, built on a surrogate ML model that replaces heavy simulations.</p><div class="tile-links"><!--[-->
1<a href="/publications#mottaghi_dpredict_caadria_2024" class=""><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2.4L17.6 8H14V4.4zM8 12h8v1.6H8V12zm0 3.2h8v1.6H8v-1.6zM8 8.8h3.2v1.6H8V8.8z" data-v-c47d3fcb></path></svg>Paper (CAADRIA &#39;24)</a><a href="/publications#mottaghi_ecaade_2024" class=""><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2.4L17.6 8H14V4.4zM8 12h8v1.6H8V12zm0 3.2h8v1.6H8v-1.6zM8 8.8h3.2v1.6H8V8.8z" data-v-c47d3fcb></path></svg>Paper (eCAADe &#39;24)</a><a href="/publications#abuzuraiq_designer_friendly_2024" class=""><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2.4L17.6 8H14V4.4zM8 12h8v1.6H8V12zm0 3.2h8v1.6H8v-1.6zM8 8.8h3.2v1.6H8V8.8z" data-v-c47d3fcb></path></svg>Paper (ACADIA &#39;24)</a><!--]--></div></div></article></li><li><article class="tile"><span class="tile-media"><img class="thumb" src="/media/work/monster-shopper.webp" alt="Monster Shopper" loading="lazy" decoding="async"></span><div class="tile-body"><button type="button" class="tile-open">Monster Shopper</button><!----><p class="tile-summary">A visualization interface for visual and data-driven exploration of Dungeons &amp; Dragons monsters, balancing serendipitous browsing with attribute filtering for Dungeon Masters.</p><div class="tile-links"><!--[--><a href="https://dnd-monsters-atlas.netlify.app/" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm6.9 7h-3a15.6 15.6 0 0 0-1.4-3.9A8 8 0 0 1 18.9 9zM12 4.1c.7 1 1.3 2.3 1.7 3.9h-3.4c.4-1.6 1-2.9 1.7-3.9zM4.3 14a8 8 0 0 1 0-4h3.4a16.6 16.6 0 0 0 0 4H4.3zm.8 2h3a15.6 15.6 0 0 0 1.4 3.9A8 8 0 0 1 5.1 16zm3-7h-3a8 8 0 0 1 4.4-3.9A15.6 15.6 0 0 0 8.1 9zM12 19.9c-.7-1-1.3-2.3-1.7-3.9h3.4c-.4 1.6-1 2.9-1.7 3.9zm2.1-5.9H9.9a14.7 14.7 0 0 1 0-4h4.2a14.7 14.7 0 0 1 0 4zm.4 5.9a15.6 15.6 0 0 0 1.4-3.9h3a8 8 0 0 1-4.4 3.9zm1.8-5.9a16.6 16.6 0 0 0 0-4h3.4a8 8 0 0 1 0 4h-3.4z" data-v-c47d3fcb></path></svg>Try it</a><a href="https://www.cs.ubc.ca/~tmm/courses/547-22/projects.html" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm6.9 7h-3a15.6 15.6 0 0 0-1.4-3.9A8 8 0 0 1 18.9 9zM12 4.1c.7 1 1.3 2.3 1.7 3.9h-3.4c.4-1.6 1-2.9 1.7-3.9zM4.3 14a8 8 0 0 1 0-4h3.4a16.6 16.6 0 0 0 0 4H4.3zm.8 2h3a15.6 15.6 0 0 0 1.4 3.9A8 8 0 0 1 5.1 16zm3-7h-3a8 8 0 0 1 4.4-3.9A15.6 15.6 0 0 0 8.1 9zM12 19.9c-.7-1-1.3-2.3-1.7-3.9h3.4c-.4 1.6-1 2.9-1.7 3.9zm2.1-5.9H9.9a14.7 14.7 0 0 1 0-4h4.2a14.7 14.7 0 0 1 0 4zm.4 5.9a15.6 15.6 0 0 0 1.4-3.9h3a8 8 0 0 1-4.4 3.9zm1.8-5.9a16.6 16.6 0 0 0 0-4h3.4a8 8 0 0 1 0 4h-3.4z" data-v-c47d3fcb></path></svg>Course page</a><!--]--></div></div></article></li><li><article class="tile"><span class="tile-media"><video class="thumb" poster="/media/work/designsense.webp" src="/media/work/designsense.mp4" autoplay muted loop playsinline preload="metadata" aria-label="DesignSense"></video></span><div class="tile-body"><button type="button" class="tile-open">DesignSense</button><!----><p class="tile-summary">A visual analytics system for exploring generative design spaces, developed for my Master&#39;s thesis at SFU&#39;s Computational Design Lab to help designers navigate large numbers of design alternatives.</p><div class="tile-links"><!--[--><a href="https://designsense-beta.netlify.app/#/" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm6.9 7h-3a15.6 15.6 0 0 0-1.4-3.9A8 8 0 0 1 18.9 9zM12 4.1c.7 1 1.3 2.3 1.7 3.9h-3.4c.4-1.6 1-2.9 1.7-3.9zM4.3 14a8 8 0 0 1 0-4h3.4a16.6 16.6 0 0 0 0 4H4.3zm.8 2h3a15.6 15.6 0 0 0 1.4 3.9A8 8 0 0 1 5.1 16zm3-7h-3a8 8 0 0 1 4.4-3.9A15.6 15.6 0 0 0 8.1 9zM12 19.9c-.7-1-1.3-2.3-1.7-3.9h3.4c-.4 1.6-1 2.9-1.7 3.9zm2.1-5.9H9.9a14.7 14.7 0 0 1 0-4h4.2a14.7 14.7 0 0 1 0 4zm.4 5.9a15.6 15.6 0 0 0 1.4-3.9h3a8 8 0 0 1-4.4 3.9zm1.8-5.9a16.6 16.6 0 0 0 0-4h3.4a8 8 0 0 1 0 4h-3.4z" data-v-c47d3fcb></path></svg>New version to try!</a><a href="https://designsense.app/" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm6.9 7h-3a15.6 15.6 0 0 0-1.4-3.9A8 8 0 0 1 18.9 9zM12 4.1c.7 1 1.3 2.3 1.7 3.9h-3.4c.4-1.6 1-2.9 1.7-3.9zM4.3 14a8 8 0 0 1 0-4h3.4a16.6 16.6 0 0 0 0 4H4.3zm.8 2h3a15.6 15.6 0 0 0 1.4 3.9A8 8 0 0 1 5.1 16zm3-7h-3a8 8 0 0 1 4.4-3.9A15.6 15.6 0 0 0 8.1 9zM12 19.9c-.7-1-1.3-2.3-1.7-3.9h3.4c-.4 1.6-1 2.9-1.7 3.9zm2.1-5.9H9.9a14.7 14.7 0 0 1 0-4h4.2a14.7 14.7 0 0 1 0 4zm.4 5.9a15.6 15.6 0 0 0 1.4-3.9h3a8 8 0 0 1-4.4 3.9zm1.8-5.9a16.6 16.6 0 0 0 0-4h3.4a8 8 0 0 1 0 4h-3.4z" data-v-c47d3fcb></path></svg>
1Try here</a><a href="https://summit.sfu.ca/item/20935" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2.4L17.6 8H14V4.4zM8 12h8v1.6H8V12zm0 3.2h8v1.6H8v-1.6zM8 8.8h3.2v1.6H8V8.8z" data-v-c47d3fcb></path></svg>Thesis</a><a href="/publications#abuzuraiq_designing_2025" class=""><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2.4L17.6 8H14V4.4zM8 12h8v1.6H8V12zm0 3.2h8v1.6H8v-1.6zM8 8.8h3.2v1.6H8V8.8z" data-v-c47d3fcb></path></svg>Paper (IJAC &#39;25)</a><a href="/publications#similarity_2020" class=""><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2.4L17.6 8H14V4.4zM8 12h8v1.6H8V12zm0 3.2h8v1.6H8v-1.6zM8 8.8h3.2v1.6H8V8.8z" data-v-c47d3fcb></path></svg>Paper (CAADRIA &#39;20)</a><a href="/publications#shopping_2020" class=""><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2.4L17.6 8H14V4.4zM8 12h8v1.6H8V12zm0 3.2h8v1.6H8v-1.6zM8 8.8h3.2v1.6H8V8.8z" data-v-c47d3fcb></path></svg>Paper (FDG &#39;20)</a><!--]--></div></div></article></li><li><article class="tile"><span class="tile-media"><video class="thumb" poster="/media/work/flowui.webp" src="/media/work/flowui.mp4" autoplay muted loop playsinline preload="metadata" aria-label="FlowUI"></video></span><div class="tile-body"><button type="button" class="tile-open">FlowUI</button><!----><p class="tile-summary">A design-aid tool that gives architectural designers immediate feedback on the performance of their directly-modelled designs through interactive visualizations and analysis.</p><div class="tile-links"><!--[--><a href="/publications#flowui_2020" class=""><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2.4L17.6 8H14V4.4zM8 12h8v1.6H8V12zm0 3.2h8v1.6H8v-1.6zM8 8.8h3.2v1.6H8V8.8z" data-v-c47d3fcb></path></svg>Paper</a><!--]--></div></div></article></li><li><article class="tile"><span class="tile-media"><img class="thumb" src="/media/work/taksim.webp" alt="Taksim" loading="lazy" decoding="async"></span><div class="tile-body"><button type="button" class="tile-open">Taksim</button><!----><p class="tile-summary">A procedural generation system for game spaces that adhere to high- and low-level design constraints, such as which regions must be adjacent, by framing generation as constrained graph partitioning solved with Answer Set Programming.</p><div class="tile-links"><!--[--><a href="https://github.com/abuzreq/Taksim" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 .5a12 12 0 0 0-3.8 23.4c.6.1.8-.3.8-.6v-2c-3.3.7-4-1.6-4-1.6-.6-1.4-1.4-1.8-1.4-1.8-1.1-.7.1-.7.1-.7 1.2.1 1.8 1.2 1.8 1.2 1.1 1.8 2.8 1.3 3.5 1 .1-.8.4-1.3.8-1.6-2.7-.3-5.5-1.3-5.5-5.9 0-1.3.5-2.4 1.2-3.2-.1-.3-.5-1.5.1-3.2 0 0 1-.3 3.3 1.2a11.5 11.5 0 0 1 6 0c2.3-1.5 3.3-1.2 3.3-1.2.7 1.7.3 2.9.1 3.2.8.8 1.2 1.9 1.2 3.2 0 4.6-2.8 5.6-5.5 5.9.4.4.8 1.1.8 2.2v3.3c0 .3.2.7.8.6A12 12 0 0 0 12 .5z" data-v-c47d3fcb></path></svg>Code</a><a href="https://www.youtube.com/watch?v=Bu3m_7-3Tm4&amp;t=2331s" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M4 5a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V5zm6 3.5v7l6-3.5-6-3.5z" data-v-c47d3fcb></path></svg>Talk</a><a href="/publications#taksim_2019" class=""><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2.4L17.6 8H14V4.4zM8 12h8v1.6H8V12zm0 3.2h8v1.6H8v-1.6zM8 8.8h3.2v1.6H8V8.8z" data-v-c47d3fcb></path></svg>Paper (CoG &#39;19)</a><a href="/publications#isomorphism_2017" class=""><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2.4L17.6 8H14V4.4zM8 12h8v1.6H8V12zm0 3.2h8v1.6H8v-1.6zM8 8.8h3.2v1.6H8V8.8z" data-v-c47d3fcb></path></svg>Paper (FDG &#39;17)</a>
1<!--]--></div></div></article></li><li><article class="tile"><span class="tile-media"><video class="thumb" poster="/media/work/djinn.webp" src="/media/work/djinn.mp4" autoplay muted loop playsinline preload="metadata" aria-label="Djinn"></video></span><div class="tile-body"><button type="button" class="tile-open">Djinn</button><!----><p class="tile-summary">Semi-automates the exploration of a visual art generator&#39;s space by sampling it through Novelty Search, comparing pieces by visual features (Histogram of Oriented Gradients) to find as many distinct points as possible.</p><div class="tile-links"><!--[--><a href="https://github.com/abuzreq/Djinn" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 .5a12 12 0 0 0-3.8 23.4c.6.1.8-.3.8-.6v-2c-3.3.7-4-1.6-4-1.6-.6-1.4-1.4-1.8-1.4-1.8-1.1-.7.1-.7.1-.7 1.2.1 1.8 1.2 1.8 1.2 1.1 1.8 2.8 1.3 3.5 1 .1-.8.4-1.3.8-1.6-2.7-.3-5.5-1.3-5.5-5.9 0-1.3.5-2.4 1.2-3.2-.1-.3-.5-1.5.1-3.2 0 0 1-.3 3.3 1.2a11.5 11.5 0 0 1 6 0c2.3-1.5 3.3-1.2 3.3-1.2.7 1.7.3 2.9.1 3.2.8.8 1.2 1.9 1.2 3.2 0 4.6-2.8 5.6-5.5 5.9.4.4.8 1.1.8 2.2v3.3c0 .3.2.7.8.6A12 12 0 0 0 12 .5z" data-v-c47d3fcb></path></svg>Code</a><a href="https://editor.p5js.org/abuzreq/full/oDP8CFXYT" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm6.9 7h-3a15.6 15.6 0 0 0-1.4-3.9A8 8 0 0 1 18.9 9zM12 4.1c.7 1 1.3 2.3 1.7 3.9h-3.4c.4-1.6 1-2.9 1.7-3.9zM4.3 14a8 8 0 0 1 0-4h3.4a16.6 16.6 0 0 0 0 4H4.3zm.8 2h3a15.6 15.6 0 0 0 1.4 3.9A8 8 0 0 1 5.1 16zm3-7h-3a8 8 0 0 1 4.4-3.9A15.6 15.6 0 0 0 8.1 9zM12 19.9c-.7-1-1.3-2.3-1.7-3.9h3.4c-.4 1.6-1 2.9-1.7 3.9zm2.1-5.9H9.9a14.7 14.7 0 0 1 0-4h4.2a14.7 14.7 0 0 1 0 4zm.4 5.9a15.6 15.6 0 0 0 1.4-3.9h3a8 8 0 0 1-4.4 3.9zm1.8-5.9a16.6 16.6 0 0 0 0-4h3.4a8 8 0 0 1 0 4h-3.4z" data-v-c47d3fcb></path></svg>Try JuxtaPause</a><!--]--></div></div></article></li><!--]--></ul><!----><div hidden aria-hidden="true"><!--[--><article><h3>MonsterVerse</h3><p>A multimodal platform for searching, exploring, and generating variations of Dungeons &amp; Dragons monsters.</p><div><p><!--[-->MonsterVerse combines structured statistics, natural-language descriptions, and artwork, letting you search a monster catalog by text or image, explore creatures visually, and generate controlled variations of them.<!--]--></p><p><!--[-->It set out to explore:<!--]--></p><ul><!--[--><li><!--[-->how visualization can communicate intent to generative AI;<!--]--></li><li><!--[-->how structured stat changes can become coherent textual and visual transformations;<!--]--></li><li><!--[-->how to keep a monster&#39;s statistics, description, abilities, and artwork consistent with each other.<!--]--></li><!--]--></ul><p><!--[--><strong><!--[-->Technical Details<!--]--></strong> Python and FastAPI backend and a React frontent with D3.js and Plotly for visualization; LangChain for agents, tool calling and orchestration; Google Gemini for text and image generation; OpenCLIP embeddings and ChromaDB for multimodal RAG search; The retrieval uses a hybrid (vector + BM25) followed by a local reranker.<!--]--></p></div></article><article><h3>Agentic Bending with ComfyUI</h3><p>An AI agent skill that takes care of the technical side of bending diffusion models, so artists can stay with the images.</p><div><p><!--[-->Model bending (reaching inside a diffusion model and changing what its layers compute while it paints) opens up images that prompting alone cannot reach. Doing it means knowing the model&#39;s architecture, layer paths, safe amounts and timesteps. Agentic Model Bending hands that burden to an AI agent. Working with <a href="https://github.com/abuzreq/ComfyUI-Model-Bending" rel="nofollow"><!--[-->ComfyUI-Model-Bending<!--]--></a>, the agent (Claude, or other skill-aware agents) turns an artist&#39;s plain words (&quot;new compositions, but keep it painterly&quot;) into bends on SD1.5, SDXL, Flux or SD3 models. It renders a few candidates, checks that none has fallen apart, and talks about the results in visual terms rather than layer names. It does not replace hands-on experimentation, which stays at the heart of bending: that is where happy accidents happen. So the agent keeps the artist in the loop. It c
1an stop after every sweep for them to choose, or put interactive boards and sliders on their own ComfyUI canvas to vote, nudge and explore by hand, then read their choices back and carry on. To give everyone a head start, it can draw on a shared, public <a href="https://huggingface.co/datasets/abuzreq/model-bending-knowledge-base" rel="nofollow"><!--[-->bend knowledge base<!--]--></a>, but only if the artist wants it to. The base is seeded from our study <a href="https://arxiv.org/abs/2607.22428" rel="nofollow"><!--[-->Unboxing Diffusion Models for the Arts<!--]--></a> and from systematic sweeps. Each recipe shows the evidence behind it, and every caption is labelled with who wrote it, a person or the AI model. The artist&#39;s own sessions stay on their machine unless they choose to share them. Browse the base in the <a href="https://huggingface.co/spaces/abuzreq/model-bending-navigator" rel="nofollow"><!--[-->Model Bending Navigator<!--]--></a>, or get the agent at <a href="https://github.com/abuzreq/comfyui-model-bending-agent" rel="nofollow"><!--[-->github.com/abuzreq/comfyui-model-bending-agent<!--]--></a>.<!--]--></p></div></article><article><h3>Taksim; Generate &amp; Conquer</h3><p>An old dream from my first research paper is finally reality; a browser-based game where you can draw custom maps, define region connectivity for strategic play, and run different game modes on them. Powered by Answer Set Programming for level generation.</p><div><p><!--[-->Taksim: Generate &amp; Conquer is a browser game built on Taksim, my constraint-based approach to generating territory maps (CoG 2019). You sketch the world you want as a graph: which kingdoms border which, which lands form a continent, and where sea lanes cross the water. Taksim&#39;s solver then finds a hand-drawn map that has exactly those borders and no others. The rules are written in Answer Set Programming and solved with clingo, compiled to WebAssembly so everything runs in your browser. You can then fight over that world in three games. Conquest is a turn-based war of continents for up to six commanders. Dice Chain is a quick dice game where your income comes from your longest chain of connected lands. Border Rush is a real-time race in which troops march only to neighbouring lands. A built-in map analysis shows each world&#39;s chokepoints, loops and dead ends, and how well it suits each game, so the shape of the map becomes the strategy. You can play against computer opponents or pass one device between friends; there&#39;s nothing to install and no account.<!--]--></p></div></article><article><h3>DesignSense Beta</h3><p>A new enhanced version of DesignSense for exploring and narrowing large collections of options, considering their visual and quantiative data.</p><div><p><!--[-->Generative design can produce hundreds or thousands of design options, each with its parameters, performance results, pictures and 3D models. DesignSense is a browser-based visual analytics tool for working through them. You narrow the options down to the few worth taking forward, see the trade-offs between them, and show others why you chose them.<!--]--></p><h2 id="main-features"><a href="#main-features"><!--[-->Main features<!--]--></a></h2><ul><!--[--><li><!--[-->Linked views. A gallery of pictures and 3D models sits alongside parallel coordinates, a scatterplot and a scatterplot matrix. Narrow the options in one view and every other view follows.<!--]--></li><li><!--[-->Two modes. Lite lets you brush any chart to filter; each filter becomes a removable chip, with undo. Expert adds selection operations (add, subtract, intersect), clustering and a customisable layout.<!--]--></li><li><!--[-->Navigate the collection. Zoom in on the options you&#39;ve found, exclude them, see what your filters leave out, or step back.<!--]--></li><li><!--[-->Goals and best trade-offs. Say which way is better for each output. DesignSense then points out the options that no other option beats on every goal, and the outliers.<!--]--></li><li><!--[-->Judge options your way. Rate options with stars and write notes on them. Build custom and weighted dimensions to capture criteria of your own.<!--]--></li><li><!--[-->Shortlist, compare and save. Keep candidates aside while you keep looking, and compare them side by side. Save any result as a set, together with the filters that produced it.<!--]--></li><li><!--[-->Analysis. See each dimension&#39;
1s spread and distribution, identify outliers, and which inputs drive which outputs.<!--]--></li><li><!--[-->Ask or command. Type what you want in plain words, such as &quot;the cheapest options with high daylight&quot;, and the built-in assistant does it or answers. It runs in your browser.<!--]--></li><li><!--[-->Tell the story. Capture views as you work, then present them in a meeting, export them as a PDF report, or make a one-image summary for stakeholders.<!--]--></li><li><!--[-->Your data stays with you. Open a CSV from your computer or from a link, or start from one of the sample studies. The data is read in the browser and never uploaded, and your work is saved in your browser.<!--]--></li><!--]--></ul></div></article><article><h3>Kiln</h3><p>A studio for training, bending, merging, and composing with small diffusion models trained on your own images.</p><div><p><!--[-->Kiln is a desktop application for artists and researchers who want to work with diffusion models at a personal scale: train a compact model on a few hundred of your own images, then sample, paint, bend, and merge what it has learned. It is designed to make working with generative models feel material and craft-like.<!--]--></p><p><!--[-->The work is organized into two spaces: <strong><!--[-->Prepare<!--]--></strong>, where you build datasets and train models, and <strong><!--[-->Create<!--]--></strong>, where you explore and compose with them.<!--]--></p></div></article><article><h3>Diffusion Model Bending</h3><p>A ComfyUI extension (2,000+ downloads) that applies transformations (addition, noise, rotation, erosion, custom ops) to the inner workings of diffusion models, pushing them toward new and diverse aesthetics.</p><div><p><!--[-->Model bending lets you apply transformations to the inner workings of a diffusion model in order to push it towards new and diverse aesthetics. Think of it as granular control for introducing diversity and randomization beyond seeds. Transformations include addition, multiplication, noise, rotation, erosion and dilation, or your own custom ones.<!--]--></p></div></article><article><h3>NeuroSphere: AI Marbles</h3><p>A design fiction featuring a promotional website for an AI augmentation product, imagining a future where AI models are traded as commodities. Includes an AI-generated podcast discussing the implications.</p><div><p><!--[-->The site is built as promotional material for the product, taking the future it imagines at face value. Its podcast, made with Google&#39;s NotebookLM, has two speakers discussing the implications of the technology.<!--]--></p><p><!--[-->Created as part of the design fiction course &quot;Interactions with the Future&quot; at the University of Calgary with Dr. Wesley Willett.<!--]--></p></div></article><article><h3>DPredict</h3><p>A performance-based design tool for creating sustainable building designs with low energy demand and high daylight utilization in the early design stages, built on a surrogate ML model that replaces heavy simulations.</p><div><p><!--[-->A collaboration between SFU (Ahmed Abuzuraiq, Esmaeil Mottaghi, Halil Erhan) and the Design Process Lab at Perkins&amp;Will (Victor Okhoya, Spyridon Ampanavos, Marcelo Bernal, Cheney Chen and Yehia Madkour).<!--]--></p><p><!--[-->The tool leverages a surrogate ML model for daylighting prediction that reduces heavy simulations. The goal was to make advanced performance calculations accessible to designers in the early design stages, without much building-science experience.<!--]--></p><p><!--[--><strong><!--[-->Results:<!--]--></strong> the tool was applied to internal Perkins+Will design projects. In our study, designers found it fast and easy to use, at the right level of detail for early design, and less reliant on building-performance experts, and they were eager to adopt it.<!--]--></p><p><!--[--><strong><!--[-->Role:<!--]--></strong> proposal writing, literature review, requirements gathering, project management, technical feasibility testing, mockup design (Figma), prototyping and full-stack web development (Vue.js, 
1CefSharp, D3.js, Grasshopper, Rhino Compute), designing and conducting evaluation studies, analysing and presenting study data, writing papers and presenting at international conferences.<!--]--></p></div></article><article><h3>Monster Shopper</h3><p>A visualization interface for visual and data-driven exploration of Dungeons &amp; Dragons monsters, balancing serendipitous browsing with attribute filtering for Dungeon Masters.</p><div><p><!--[-->A graduate course project with Tamara Munzner at UBC, in collaboration with Ryan Smith and Helena de C. Alvarenga.<!--]--></p><p><!--[-->We interviewed Dungeon Masters and arrived at multiple visualization modules tackling different needs. Physical monster manuals are engaging to leaf through but lack filtering; online encounter builders filter well but do not foster serendipitous discovery. Monster Shopper tries to balance visual and data-driven exploration for novice users, adapting a system by the Science Visualization Group at AMNH.<!--]--></p><p><!--[--><strong><!--[-->Role:<!--]--></strong> research, design and development.<!--]--></p></div></article><article><h3>DesignSense</h3><p>A visual analytics system for exploring generative design spaces, developed for my Master&#39;s thesis at SFU&#39;s Computational Design Lab to help designers navigate large numbers of design alternatives.</p><div><p><!--[-->With the rise of generative techniques in architectural design, there is a growing need for tools that enable exploring a large number of design alternatives. Through interacting with domain experts and analysing the literature, DesignSense was developed as a response. Its design criteria emphasise encouraging exploration, reducing the cognitive overload of too many choices, and respecting the tacit and explicit dimensions of design judgment. Visual analytics and HCI inform the visualization and interface design.<!--]--></p><p><!--[--><strong><!--[-->Role:<!--]--></strong> research, visualization and UI design, and development from scratch.<!--]--></p><p><!--[--><strong><!--[-->Activities:<!--]--></strong> literature review, abstract task analysis, synthesis of requirements, iterative prototyping, collecting periodic feedback from industry partners, evaluation (focus group and expert review).<!--]--></p></div></article><article><h3>FlowUI</h3><p>A design-aid tool that gives architectural designers immediate feedback on the performance of their directly-modelled designs through interactive visualizations and analysis.</p><div><p><!--[-->In collaboration with Dr. Halil Erhan, Dr. Robert Woodbury and Maryam Zarei (SFU) and Alyssa Haas (Stantec Vancouver).<!--]--></p></div></article><article><h3>Taksim</h3><p>A procedural generation system for game spaces that adhere to high- and low-level design constraints, such as which regions must be adjacent, by framing generation as constrained graph partitioning solved with Answer Set Programming.</p><div><p><!--[-->Taksim can dictate which regions in a generated space should be adjacent or non-adjacent. This has many applications, like generating a dungeon with a predetermined sequence of missions or generating political maps (e.g. Risk). Dressing the problem up as constrained graph partitioning and solving it with Answer Set Programming yields a highly flexible system.<!--]--></p></div></article><article><h3>Djinn</h3><p>Semi-automates the exploration of a visual art generator&#39;s space by sampling it through Novelty Search, comparing pieces by visual features (Histogram of Oriented Gradients) to find as many distinct points as possible.</p><div><p><!--[--><strong><!--[-->The generator: JuxtaPause.<!--]--></strong> Inspired by a GIF of an aging woman, I wanted a way to juxtapose images of her at different ages. JuxtaPause stacks the GIF&#39;s frames as a 3D matrix and samples across it using a greyscale 2D Perlin noise image, so each pixel is taken from a different moment. Perlin noise was favoured over a random generator because it creates contiguous light and dark regions, giving just enough of each age. Moving the mouse, or a MIDI controller, changes the noise parameters.<!--]--></p><video class="prose-media" src="/media/work/juxtapause.mp4" poster="/media/work/juxtapause.webp" aria-label="JuxtaPause: a portrait blending one woman at different ages through a Perlin noise pattern" autoplay muted loop playsinline preload="metadata"></video><p><!--[--><strong><!--[-->The explorer: Djinn.<!--]--></strong> Exploring JuxtaPause&#39;s generative space by hand means moving the mouse around looking for something &quot;interesting&quot;. I wanted to automate, or semi-automate, that search. Optimization fails here because interestingness is hard to quantify, so Djinn uses Novelty Search instead: each newly generated piece is compared against the others by its visual features (Histogram of Oriented Gradients), with the aim of finding as many distinct points in the space as possible.<!--]--></p></div></article><!--]--></div><!--teleport start--><!--teleport end--></div></div><!--]--></main><footer class="site-footer"><div class="wrap"><div><div>Ahmed Abuzuraiq</div><div><a href="mailto:[email protected]">abuzreq at gmail dot com</a></div><div class="muted">Last updated October 2026</div></div><ul class="links-row"><!--[--><li><a href="https://scholar.google.com/citations?user=QIbBYvAAAAAJ&amp;hl=en" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 3 1 10l4 2.4V19l7 4 7-4v-6.6l2-1.2V17h1V10L12 3zm0 2.3L19.6 10 12 14.7 4.4 10 12 5.3zM6 13.6l6 3.6 6-3.6v4.8l-6 3.4-6-3.4v-4.8z" data-v-c47d3fcb></path></svg>Google Scholar</a></li><li><a href="https://github.com/abuzreq" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M12 .5a12 12 0 0 0-3.8 23.4c.6.1.8-.3.8-.6v-2c-3.3.7-4-1.6-4-1.6-.6-1.4-1.4-1.8-1.4-1.8-1.1-.7.1-.7.1-.7 1.2.1 1.8 1.2 1.8 1.2 1.1 1.8 2.8 1.3 3.5 1 .1-.8.4-1.3.8-1.6-2.7-.3-5.5-1.3-5.5-5.9 0-1.3.5-2.4 1.2-3.2-.1-.3-.5-1.5.1-3.2 0 0 1-.3 3.3 1.2a11.5 11.5 0 0 1 6 0c2.3-1.5 3.3-1.2 3.3-1.2.7 1.7.3 2.9.1 3.2.8.8 1.2 
11.9 1.2 3.2 0 4.6-2.8 5.6-5.5 5.9.4.4.8 1.1.8 2.2v3.3c0 .3.2.7.8.6A12 12 0 0 0 12 .5z" data-v-c47d3fcb></path></svg>GitHub</a></li><li><a href="https://www.linkedin.com/in/abuzreq/" target="_blank" rel="noopener"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M20.4 20.4h-3.5v-5.6c0-1.3 0-3-1.9-3s-2.1 1.4-2.1 2.9v5.7H9.4V9h3.4v1.6c.5-.9 1.6-1.9 3.4-1.9 3.6 0 4.3 2.4 4.3 5.5v6.2zM5.3 7.4a2.1 2.1 0 1 1 0-4.1 2.1 2.1 0 0 1 0 4.1zm1.8 13H3.6V9h3.5v11.4zM22.2 0H1.8C.8 0 0 .8 0 1.7v20.6c0 .9.8 1.7 1.8 1.7h20.4c1 0 1.8-.8 1.8-1.7V1.7C24 .8 23.2 0 22.2 0z" data-v-c47d3fcb></path></svg>LinkedIn</a></li><!--]--><li><a href="/feed.xml"><svg class="icon" viewbox="0 0 24 24" aria-hidden="true" focusable="false" data-v-c47d3fcb><path d="M4 4a16 16 0 0 1 16 16h-3A13 13 0 0 0 4 7V4zm0 6a10 10 0 0 1 10 10h-3a7 7 0 0 0-7-7v-3zm2 6a2 2 0 1 1 0 4 2 2 0 0 1 0-4z" data-v-c47d3fcb></path></svg>RSS</a></li></ul></div></footer></div><!--teleport start--><!--teleport end--><!--]--></div><div id="teleports"></div>
1<script>window.__NUXT__={};window.__NUXT__.config={public:{siteUrl:"https://abuzreq.com",buildDate:"2026-10-02T08:33:34.237Z",gtag:{enabled:true,initMode:"auto",id:"G-QLXFDKFSGG",initCommands:[],config:{},tags:[],loadingStrategy:"defer",url:"https://www.googletagmanager.com/gtag/js"},mdc:{components:{prose:true,map:{},customElements:[]},headings:{anchorLinks:{h1:false,h2:true,h3:true,h4:true,h5:false,h6:false}},highlight:{noApiRoute:true,highlighter:"shiki",theme:{default:"github-light",dark:"github-dark"},shikiEngine:"oniguruma",langs:["js","jsx","json","ts","tsx","vue","css","html","bash","md","mdc","yaml"]}},content:{wsUrl:""}},app:{baseURL:"/",buildId:"f6f1a8cc-d439-4b01-b10f-fa878b7a1399",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script>
1<script type="application/json" data-nuxt-data="nuxt-app" data-ssr="true" id="__NUXT_DATA__" data-src="/projects/_payload.json?_b=f6f1a8cc-d439-4b01-b10f-fa878b7a1399">[{"state":1,"once":3,"_errors":4,"serverRendered":6,"path":7,"prerenderedAt":8},["Reactive",2],{},["Set"],["ShallowReactive",5],{"work-projects":-1},true,"\u002Fprojects",1790930020971]</script>
1<script async src="https://scripts.simpleanalyticscdn.com/latest.js" ></script>
1<script async src="https://scripts.simpleanalyticscdn.com/auto-events.js" ></script>
1</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.