These are some of my coding projects, in no particular order. Some are about art, some are about modeling, some are just strange and fun.
In this invited blog post I describe a somewhat efficient algorithm to generate and draw all possible fully connected, non-isomorphic graphs of 6 nodes. A small part of this graph zoo is shown on the left, but the full collection is of course much larger! And it looks super-artsy!
For a careful, step-by-step description of the algorithm, and some nice visualizations, see my post at Matplotlib blog
Imagine that people on a social network unfollow those whose opinion they hate, but also slowly drift towards the average opinion of those they follow. Will a network like that eventually create "bubbles" and "echo chambers"? Will it increase polarization? Yes, apparently it will, and quite robustly! Here's a curious model for this process that I dreamed and coded.
I'm really surprised that this visualization isn't more common! It's a simple cross-eyed stereogram (or a relaxed-eyed one, if you zoom the picture in bit), that shows a graph not in 2D, but in 3D.
As standard NetworkX tools cannot draw graphs in 3D, I used an out-of-the-box Kamada-Kawai layout, but then implement a spring-based optimization in Z direction. Then, after convergence, I just rotated one of the graphs a bit.
Shally declain eachmentry reased chood houghtful thingley ure neverybody mights! This algorithm creates fake words that follow the statistics of real English words (more specifically, words from Jane Austin novels) down to 4-letter n-grams. Some of them are just conjoined or truncated words, but some are fun! Fourgh!!
A really fun algorithm to create a tree densely covering some space, but also, as it turns out, a great algorithm to create artsy abstract compositions, procedurally generated jewelry, village plans, and even portraits of famous people made out of "lightnings".
Some of these trees can be of course rotated into each other (as you can see, the first one and the last one are mirror copies of each other), so it is "all possible trees" not in terms of isomorphic graphs, but in terms of reaching to different subsets of 7 nodes. But they do look like an alien script, don't they?
This project is inspired by the dotsies art piece, and those videos on Youtube where people gradually change pronunciation as they go, starting in normal language, but finishing in some weird reconstructed form. I wanted to change letters instead, doing it one letter at a time, and giving the reader enough time to adjust, and hopefully smoothly transition from reading English written in "normal" letters, to English written in an entirely different alphabet. I think it kinda worked? :)
This was actually more of a research project, but the task was fun, as it included Bridson’s algorithm for Poisson-disc sampling, to create realistic swarms of animals. Which is probably one of my favorite algorithms out there.
Also, the analysis stage for these spatial distributions is super-fun, as it includes Delaunay triangulation across all point-animals, followed by a creation of a neighborhood graph, pairwise comparisons of animal orientations along the edges... And all this time, your analysis looks like a magic crystal! What could be better!
The idea of sonification is to represent data as sound, as opposed to visualization that represents it as a picture. Because humans are visual creatures, sonification of data rarely raises above the level of realtime-monitoring of activity. Still there are some useful examples, like when people listen to Solar Stroms and Sounds of Planets (Jupiter, Neptune).
The video on the left sonifies activity in an epileptic network (modeled as a reaction-diffusion system). At each step full activity in every row is summed, and "connected" to harmonic oscillators of different frequencies. I was told that the sound actually resembles an aura some people before a seizure :\