PhD student in Computational Media at UC Santa Cruz
tl;dr I am a mathematical ecologist, ask me about cybernetics. I sketch science with code, and this is my portfolio.
Consider how a neuron transmits [demo] an electrical signal, and thereby biochemistry participates in circuitry - a control flow. Instead of gates built out of transistors, voltage is summed at the neural dendrites. (But see also morphogenesis below.)
I’ve investigated procedural generation of fictional maps like poetry, and iterated fractals under artificial selection, i.e. parameter tuning via a human-in-the-loop providing the utility function to an evolutionary algorithm. Not only are we humans cybernetic lifeforms, but we can finally speak in dynamics, as creative coders.
The circle problem of Apollonius asks which circles are tangent to all of three given circles. The nonlinear system certainly has eight complex solutions, which parameterize the solution circles - sometimes nonunique, or out at infinity. The rest, we can draw in real-time - whilst crossing these singularities, instead of shooting blindly at them. This uses a D3 interface to phcpy in Jupyter [repo], which I gave as a poster at SciPy 2017.
By dragging input circles across catastrophes, a beautiful geometric continuity is evinced. (The PHCPack JupyterHub can run the notebook with its phcpy dependency. It does require an account, whose front-end management was a product of my Summer work for Professor Verschelde.)
Consider biological morphogenesis, whose implications in signalling I have written up (with extended references) from my slides for a seminar course. Genetic control-flow via selective activation is the more subtle form of biochemical ‘circuitry’, as exquisite as growth and form itself. Can this high concept can be sketched and tested by any in-silico implementation?
Graphics shaders admitting a human-in-the-loop are my first bet [demo] for real-time interactive methods, but special boundary conditions (e.g. differential growth implicated in folding) complicate implementation. As to the ecological interpretation of mathematically similar spatial models, there is crossover with quantitative history and urban planning.
I began in mathematical biology by studying individual-based predator-prey dynamics as the population approaches infinity (n → oo), but remains much smaller than e.g. particles in the air. Self-limitation alone makes a population model nonlinear! Yet equilibria predictiably emerge from the individual-based dynamics (e.g. gene flow between populations, or autopoiesis of vesicles [demo]) under appropriate assumptions.
The mentioned continuum assumption from fluid physics can go awry - when your model predicts 10^-18 foxes in the population’s stable limit cycle (‘a population of infinitesimal size will never go extinct’), it’s absurd. These attofoxes are an artifact of assuming a population on scale with Avogadro’s number, whereas in fact, small systems of individuals are inherently prone to sampling error, mere accidents of discretization. Mathematical instances of approximation suffuse the real world. Otherwise, we’d have optimality and no need for (bio)diversity.
I believe that network effects tie individual-based models to traditional dynamical models. SageMath is well-adapted to this line of inquiry: consider the bare bones of interrelated collectives inspired by interacting distributions and Golubitsky’s dynamics of rhythm, or weighted motifs inspired by systemic thinking.
To adequately document a numerical study requires an intimate correspondence between equations, experimental method, and code. The notebook paradigm is the most satisfactory approach, spanning two axes of visual response:
Compare the rich-input analysis of Fitz-Hugh Nagumo above with a rich-output analysis [notebook] using xarray to study parameter variation by ‘painting the space’. Contrast also IPyWidgets with the domain-specific input method of Apollonius above, inspired by Processing sketches.
Static ⇄ Dynamic Flow:
Movement between cells of a notebook implies pipelines for data science.
(monolithic program → ordered worksheet ← ad-hoc REPL)
If I run each cell in order, a meaningful answer must come out. If I sensibly modify an intermediate cell, and run all successive cells in order, a meaningful answer still comes out. By treating the worksheet as a pipeline, we have well-defined invalidation criteria for cached data: while the user traverses the pipeline linearly, the update process is transparent.
Contrast modular but ad-hoc situations where a pile of scripts is navigable only by a single graduate student, and stable but monolithic situations where the slightest change upstream breaks the entire workflow. The human should be able to advise the machine when they know better which scripts to use, yet still be able to run the procedure when they don’t.
The combination of these principles is extremely powerful. Honestly, I can’t go back to writing codes without graphics, without visuospatial representation and tight feedback loops.
Jupyter notebooks have the specific advantage of a FOSS stack underneath, which is a harder infrastructure to hold hostage than the proprietary and unverifiable. The experiential side of our serious play is grounded by its roots in our communities, for no amount of information is satisfactory without context.
My improvisational ethos derives from jazz drumming and modern dance, and is likewise applicable to concise codes and iterative writings, toward agile research. I organize some of my artistic interests by drawing [album] in a literal notebook, which keeps me observant, at least of birds and dancers.
Welcome to the footer! For contact, please see my CV and social media links above.