/ proof-of-concept / .mochi
Sign in
proof-of-concept / .mochi
.mochi / profile / README.md
210 lines · 16.3 KBCodeBlameHistory
d25ae50Polish profile README featured sectionsJeremy Magland 3This is a collection of random small projects and demos, most of which can be run entirely in the web browser (client side). Many of them are centered around the [numbl project](https://numbl.org).
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 5## Interactive numerical methods
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 7Methods from the numerical literature that you can watch run and adjust, computed client side by numbl (MATLAB syntax in the browser).
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 9- **[hitandrun-interactive](https://vault1.magland.org/proof-of-concept/hitandrun-interactive)** · [live](https://hitandrun-interactive--proof-of-concept.vault1-sites.magland.org/#figure/sampler) · the hit-and-run MCMC sampler
10- **[walnuts-interactive](https://vault1.magland.org/proof-of-concept/walnuts-interactive)** · [live](https://walnuts-interactive--proof-of-concept.vault1-sites.magland.org/#figure/sampler) · the WALNUTS sampler, running the paper's own companion MATLAB code
11- **[barycentric-rational](https://vault1.magland.org/proof-of-concept/barycentric-rational)** · [live](https://barycentric-rational--proof-of-concept.vault1-sites.magland.org/) · Floater-Hormann rational interpolation, pole-free on any nodes; the method is a MATLAB script you edit in the page
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 13## numbl tooling: Jupyter, embedding, IDEs
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 15Ways to write, run, and share MATLAB-syntax code in the browser, all client side (plus a Stan variant of the IDE).
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 17- **[jupyterlite-numbl-kernel](https://vault1.magland.org/proof-of-concept/jupyterlite-numbl-kernel)** · [live](https://jupyterlite-numbl-kernel--proof-of-concept.vault1-sites.magland.org/) · MATLAB syntax in Jupyter, no kernel server
18- **[numbl-embed-example](https://vault1.magland.org/proof-of-concept/numbl-embed-example)** · [live](https://numbl-embed-example--proof-of-concept.vault1-sites.magland.org/) · embed numbl in your own page
19- **[numbl-project-example](https://vault1.magland.org/proof-of-concept/numbl-project-example)** · [live](https://numbl-project-example--proof-of-concept.vault1-sites.magland.org/) · host a numbl project as a static site
20- **[numbl-web-ide](https://vault1.magland.org/proof-of-concept/numbl-web-ide)** · [live](https://numbl-web-ide--proof-of-concept.vault1-sites.magland.org/) · a VS Code–style IDE for MATLAB syntax
21- **[stan-web-ide](https://vault1.magland.org/proof-of-concept/stan-web-ide)** · [live](https://stan-web-ide--proof-of-concept.vault1-sites.magland.org/) · the same IDE for Stan
22- **[numbl-figure-viewer](https://vault1.magland.org/proof-of-concept/numbl-figure-viewer)** · [live](https://numbl-figure-viewer--proof-of-concept.vault1-sites.magland.org/) · open a figure exported from numbl, underlying data included
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 24## surfacefun & chunkie examples
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 26[Surfacefun](https://surfacefun.readthedocs.io/en/latest/) (functions and PDEs on surfaces) and [chunkie](https://chunkie.readthedocs.io/en/latest/) (boundary integral equations in 2D) are MATLAB packages; these examples run them in the browser via numbl.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 28- **[numbl-surfacefun-intro](https://vault1.magland.org/proof-of-concept/numbl-surfacefun-intro)** · [live](https://numbl-surfacefun-intro--proof-of-concept.vault1-sites.magland.org/)
29- **[surfacefun-interactive](https://vault1.magland.org/proof-of-concept/surfacefun-interactive)** · [live](https://surfacefun-interactive--proof-of-concept.vault1-sites.magland.org/)
30- **[mesh-pde-solver](https://vault1.magland.org/proof-of-concept/mesh-pde-solver)** · [live](https://mesh-pde-solver--proof-of-concept.vault1-sites.magland.org/)
31- **[numbl-chunkie](https://vault1.magland.org/proof-of-concept/numbl-chunkie)** · [live](https://numbl-chunkie--proof-of-concept.vault1-sites.magland.org/)
65662b6Add seqlab (pulseq sequences in the browser)Jeremy Magland 33## MRI pulse sequences
4034420Add mri-scanner (Bloch simulation in the browser)Jeremy Magland 35[Pulseq](https://pulseq.github.io/) is an open framework for defining MRI pulse sequences. Here you can write pulseq sequences in MATLAB syntax and run them in the browser via numbl to generate a `.seq` file, upload and interactively explore an existing one, or simulate one on a digital phantom to see the raw k-space it acquires.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 37- **[seqlab](https://vault1.magland.org/proof-of-concept/seqlab)** · [live](https://seqlab--proof-of-concept.vault1-sites.magland.org/)
38- **[mri-scanner](https://vault1.magland.org/proof-of-concept/mri-scanner)** · [live](https://mri-scanner--proof-of-concept.vault1-sites.magland.org/)
96fd5ceAdd shtns-webgpu and turing-sphere (spherical harmonics on the GPU)Jeremy Magland 40## Spherical harmonics on the GPU
f79608cAdd turing-surface and turing-surface-cache to the indexJeremy Magland 42Here are spherical harmonic transforms reimplemented from scratch as WebGPU compute shaders, modeled on [SHTNS](https://nschaeff.bitbucket.io/shtns/), together with a live reaction-diffusion solver built on them: Turing patterns forming on a sphere, with diffusion handled implicitly in spectral space where the Laplace-Beltrami operator is diagonal. turing-surface extends the solver from the round sphere to closed surfaces given by spherical-harmonic embeddings, and turing-surface-cache narrows it to a discrete menu of parameter choices whose solutions at a chosen end time are shared between all visitors through a cloud cache.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 44- **[shtns-webgpu](https://vault1.magland.org/proof-of-concept/shtns-webgpu)** · [live](https://shtns-webgpu--proof-of-concept.vault1-sites.magland.org/)
45- **[turing-sphere](https://vault1.magland.org/proof-of-concept/turing-sphere)** · [live](https://turing-sphere--proof-of-concept.vault1-sites.magland.org/)
46- **[turing-surface](https://vault1.magland.org/proof-of-concept/turing-surface)** · [live](https://turing-surface--proof-of-concept.vault1-sites.magland.org/)
47- **[turing-surface-cache](https://vault1.magland.org/proof-of-concept/turing-surface-cache)** · [live](https://turing-surface-cache--proof-of-concept.vault1-sites.magland.org/)
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 49## Browser compute benchmarks
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 51How fast the browser can crunch numbers.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 53- **[math-webgpu-sandbox](https://vault1.magland.org/proof-of-concept/math-webgpu-sandbox)** · [live](https://math-webgpu-sandbox--proof-of-concept.vault1-sites.magland.org/) · MATLAB-syntax scripts compiled to fused WebGPU kernels, timed with the script's own `tic`/`toc`; paste the same script into real MATLAB to compare
54- **[matmul-bench](https://vault1.magland.org/proof-of-concept/matmul-bench)** · [live](https://matmul-bench--proof-of-concept.vault1-sites.magland.org/) · GEMM in plain JavaScript, WebGPU, SIMD and threaded WASM, and a WASM BLAS, with a native reference
56## Lazy reading of remote HDF5 files
58Here's a demo of reading large remote HDF5 files, such as [NWB](https://www.nwb.org/) neurophysiology files, directly in the browser using HTTP range requests, with no full download and no backend. It shows the approach that [neurosift](https://neurosift.app/) uses to browse these files.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 60- **[remote-hdf5-lazy-read](https://vault1.magland.org/proof-of-concept/remote-hdf5-lazy-read)** · [live](https://remote-hdf5-lazy-read--proof-of-concept.vault1-sites.magland.org/)
62## Scientific data compression
8f1fba9Add timeseries-compressibility to the indexJeremy Magland 64Here are a few projects on compressing scientific data: a step-by-step visualizer for the [Asymmetric Numeral Systems (ANS)](https://ieeexplore.ieee.org/abstract/document/7170048) entropy-coding algorithm, an interactive study of how compressible quantized noisy time series are, a framework for benchmarking compression algorithms on scientific data arrays, and compression benchmarks for electrophysiology recordings.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 66- **[ans-visualizer](https://vault1.magland.org/proof-of-concept/ans-visualizer)** · [live](https://ans-visualizer--proof-of-concept.vault1-sites.magland.org/)
67- **[timeseries-compressibility](https://vault1.magland.org/proof-of-concept/timeseries-compressibility)** · [live](https://timeseries-compressibility--proof-of-concept.vault1-sites.magland.org/)
68- **[benchcompress](https://vault1.magland.org/proof-of-concept/benchcompress)** · [results](https://benchcompress--proof-of-concept.vault1-sites.magland.org/) · [paper (WIP)](https://benchcompress--proof-of-concept.vault1-sites.magland.org/paper)
69- **[ephys_compression_tests](https://vault1.magland.org/proof-of-concept/ephys_compression_tests)** · [results](https://ephys_compression_tests--proof-of-concept.vault1-sites.magland.org/)
f70d7cbAdd voicenote (speech to text in the browser)Jeremy Magland 71## Speech to text in the browser
73Here's a dictation notepad that transcribes as you speak and never sends your audio anywhere: Whisper and Moonshine run locally via [transformers.js](https://github.com/huggingface/transformers.js), on WebGPU where it's available. The transcript accumulates into a document you can edit and copy.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 75- **[voicenote](https://vault1.magland.org/proof-of-concept/voicenote)** · [live](https://voicenote--proof-of-concept.vault1-sites.magland.org/)
4459435Add mdshare to the profile indexJeremy Magland 79### Documents
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 81- **[mdshare](https://vault1.magland.org/proof-of-concept/mdshare)**
82 ([live](https://mdshare--proof-of-concept.vault1-sites.magland.org/)).
4459435Add mdshare to the profile indexJeremy Magland 83 A split-pane markdown editor (LaTeX math, highlighted code, mermaid
84 diagrams) where the document is compressed into the URL itself, so sharing
85 is just copying the link; no server, nothing uploaded.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 87### Peer-to-peer shared state
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 89- **[commonroom](https://vault1.magland.org/proof-of-concept/commonroom)**
90 ([live](https://commonroom--proof-of-concept.vault1-sites.magland.org/)).
1fe65cdAdd commonroom to the project indexJeremy Magland 91 Serverless group video calls: pick a room name, share the link, and everyone
92 in the room is connected over a full WebRTC mesh (up to 8 people), with
93 room-wide shared settings.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 94- **[commonroom-recorder](https://vault1.magland.org/proof-of-concept/commonroom-recorder)**
95 ([run with npx](https://commonroom-recorder--proof-of-concept.vault1-sites.magland.org/)).
cfe175fAdd commonroom-recorder to the project indexJeremy Magland 96 Command-line bot that joins a commonroom call as a visible muted participant
97 and records each participant's audio (plus the chat) to files for
98 transcription.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 99- **[commoncall](https://vault1.magland.org/proof-of-concept/commoncall)**
100 ([live](https://commoncall--proof-of-concept.vault1-sites.magland.org/)).
401b3f6Add commoncall to the project indexJeremy Magland 101 Serverless video calls: enter an ID, see who else is on the page, and call
102 them — call setup rides over nostr relays, media flows peer-to-peer via WebRTC.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 103- **[hitandrun-commonview](https://vault1.magland.org/proof-of-concept/hitandrun-commonview)**
104 ([live](https://hitandrun-commonview--proof-of-concept.vault1-sites.magland.org/)).
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 105 The hit-and-run figure with a single live view shared by all visitors over a
106 WebRTC mesh; one peer runs the sampler via numbl and broadcasts to the rest.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 107- **[commonview](https://vault1.magland.org/proof-of-concept/commonview)**
108 ([live](https://commonview--proof-of-concept.vault1-sites.magland.org/)).
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 109 A minimal peer-to-peer page where every visitor shares one state (a counter):
110 nostr discovery, a WebRTC mesh, and a central-peer authority. The basis for
111 hitandrun-commonview.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 113### Geometry, meshing & PDE solvers
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 115- **[fastandaccurate](https://vault1.magland.org/proof-of-concept/fastandaccurate)**
116 ([live](https://fastandaccurate--proof-of-concept.vault1-sites.magland.org/)).
f785e19Add fastandaccurateJeremy Magland 117 Speed and accuracy benchmarks for PDE solvers: problems posed in the
118 continuum with exact ground truth, compared by work-precision curves,
119 runnable in the browser or from the command line, with results submitted
120 by pull request.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 121- **[mesh-studio](https://vault1.magland.org/proof-of-concept/mesh-studio)**
122 ([live](https://mesh-studio--proof-of-concept.vault1-sites.magland.org/)).
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 123 Build CAD primitives or import STEP/IGES with
124 [OpenCASCADE.js](https://ocjs.org/), then inspect them in 3D — including each
125 face's true NURBS surface (polynomials on faces), not just its triangulation.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 126- **[mesh-converter](https://vault1.magland.org/proof-of-concept/mesh-converter)**
127 ([live](https://mesh-converter--proof-of-concept.vault1-sites.magland.org/)).
1329762Add mesh-converter to the project indexJeremy Magland 128 Convert meshes between 19 formats (PLY, OBJ, STL, VTK, Gmsh, XDMF, …) with
129 [meshio](https://github.com/nschloe/meshio) running in-browser on Pyodide;
130 inspect meshes in 3D and see what a lossy export would drop.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 131- **[qhull-wasm-demo](https://vault1.magland.org/proof-of-concept/qhull-wasm-demo)**
132 ([live](https://qhull-wasm-demo--proof-of-concept.vault1-sites.magland.org/)).
7978becReorganize profile README by application areaJeremy Magland 133 Demos and benchmarks for [qhull-wasm](https://github.com/magland/qhull-wasm),
134 which compiles [Qhull](http://www.qhull.org) to WebAssembly. Includes 2-D
135 Delaunay triangulation, 3-D convex hull, and a Delaunay benchmark with
136 matching scripts for MATLAB, Octave, and numbl.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 137- **[numbl-distmesh](https://vault1.magland.org/proof-of-concept/numbl-distmesh)**
138 ([live](https://numbl-distmesh--proof-of-concept.vault1-sites.magland.org/)).
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 139 Every example from Persson and Strang's
140 [DistMesh](https://github.com/popersson/DistMesh), meshing 2-D regions and
141 surfaces from signed distance functions.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 142- **[abc-step-1000](https://vault1.magland.org/proof-of-concept/abc-step-1000)**
143 ([live](https://abc-step-1000--proof-of-concept.vault1-sites.magland.org/)).
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 144 The first 1000 STEP files from the
145 [ABC dataset](https://deep-geometry.github.io/abc-dataset/) of CAD models
146 (Koch et al., CVPR 2019), served gzip-compressed with a JSON manifest for
147 direct download.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 149### Neurophysiology data & remote access
51745afAdd matmul-bench to profileJeremy Magland 150
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 151- **[dandiset_000986](https://vault1.magland.org/proof-of-concept/dandiset_000986)**
152 ([visualizations](https://dandiset_000986--proof-of-concept.vault1-sites.magland.org/)).
1307823Add organization profile README indexing concept-collection reposmagland 153 Reproducible figures and visualizations for
e987b68Refine org profile README wordingJeremy Magland 154 [DANDI Dandiset 000986](https://dandiarchive.org/dandiset/000986), a set of
155 mouse auditory cortex recordings.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 157### Physics & quantum systems
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 159- **[mri-spins](https://vault1.magland.org/proof-of-concept/mri-spins)**
160 ([live](https://mri-spins--proof-of-concept.vault1-sites.magland.org/)).
443d470Add mri-spinsJeremy Magland 161 Interactive MRI physics: a 3D sample of spins evolving under the Bloch
162 equations, with RF pulses, gradients, relaxation, a live signal trace, and a
163 spoiled gradient echo sequence with scanner-like gradient sounds.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 164- **[acoustic-scattering-2d](https://vault1.magland.org/proof-of-concept/acoustic-scattering-2d)**
165 ([live](https://acoustic-scattering-2d--proof-of-concept.vault1-sites.magland.org/)).
f6c14bdAdd acoustic-scattering-3d; shorten the acoustic-scattering entriesJeremy Magland 166 Sound scattering off a room, a disk, slits, or a lens, solved live on the
167 GPU; the solver and the medium are MATLAB you can edit in the page. Drop a
168 microphone anywhere and listen back.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 169- **[acoustic-scattering-3d](https://vault1.magland.org/proof-of-concept/acoustic-scattering-3d)**
170 ([live](https://acoustic-scattering-3d--proof-of-concept.vault1-sites.magland.org/)).
f6c14bdAdd acoustic-scattering-3d; shorten the acoustic-scattering entriesJeremy Magland 171 The same physics in three dimensions: spheres, a circular aperture, or a
172 random medium, volume-rendered with a clip plane to see inside, microphone
173 included.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 174- **[dulcimer](https://vault1.magland.org/proof-of-concept/dulcimer)**
175 ([live](https://dulcimer--proof-of-concept.vault1-sites.magland.org/)).
084f7bcAdd dulcimerJeremy Magland 176 A plucked string and the box it sounds over, as two coupled wave equations
177 in editable MATLAB compiled to WebGPU. Render a note and listen to it.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 178- **[numbl-quantum-optics](https://vault1.magland.org/proof-of-concept/numbl-quantum-optics)**
179 ([live](https://numbl-quantum-optics--proof-of-concept.vault1-sites.magland.org/)).
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 180 Runnable scripts accompanying the article "Quantum optics in MATLAB"
181 ([arXiv:2309.14354](https://arxiv.org/abs/2309.14354)), covering quantum
182 states, operators, and dynamics.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 183- **[numbl-open-quantum-systems](https://vault1.magland.org/proof-of-concept/numbl-open-quantum-systems)**
184 ([live](https://numbl-open-quantum-systems--proof-of-concept.vault1-sites.magland.org/)).
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 185 Code from "Coding closed and open quantum systems in MATLAB"
186 ([arXiv:1911.04906](https://arxiv.org/abs/1911.04906)), including Ising
187 dynamics, cavity-QED phase transitions, and Lindblad and non-Markovian
188 evolution.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 192- **[numbl-image-filter](https://vault1.magland.org/proof-of-concept/numbl-image-filter)**
193 ([live](https://numbl-image-filter--proof-of-concept.vault1-sites.magland.org/)).
7978becReorganize profile README by application areaJeremy Magland 194 Upload an image, write a MATLAB-syntax filter, and run it on the image in the
195 browser.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 197### Number theory & visual math
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 199- **[finite-field-visualizer](https://vault1.magland.org/proof-of-concept/finite-field-visualizer)**
200 ([live](https://finite-field-visualizer--proof-of-concept.vault1-sites.magland.org/)).
48b19b2Reorder profile sections: numbl platform first, visual math lastJeremy Magland 201 Color-coded multiplication tables over finite (prime) fields. Step through the
202 primes to watch the structure change.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 203- **[gcd-visualizer](https://vault1.magland.org/proof-of-concept/gcd-visualizer)**
204 ([live](https://gcd-visualizer--proof-of-concept.vault1-sites.magland.org/)).
48b19b2Reorder profile sections: numbl platform first, visual math lastJeremy Magland 205 A heatmap of the greatest common divisor of every pair (i, j), laid out as a
206 color-coded table.
6a962bbPoint the profile links at the cofferdam vaultJeremy Magland 207- **[random-points-in-disk](https://vault1.magland.org/proof-of-concept/random-points-in-disk)**
208 ([live](https://random-points-in-disk--proof-of-concept.vault1-sites.magland.org/)).
cc4a096Add random-points-in-diskJeremy Magland 209 How many random points does it take before a disk looks like a disk? Voxel-density
210 heatmaps of uniform random sampling, next to the 1/√μ noise prediction.
↑↓ move↵openescclose