Recent posts
So this one really fits better for Genuary 2026.25: Organic Geometry and that one is a lifeform like this one, so… we’ll consider them swapped or something.
Anyways, spawn branching nodes and draw a bunch of squares. Not only an organic looking lifeform but creepy to boot! I do love it without borders and with fade.
Be careful with high child count without either a high segment length or death rate to compensate, it will get slow.
read more...
A favorite technique of mine. I’ve already done it on day 5, day 7, and day 13. But now we can go one a-maze-ing step further…
See what I did there? 😄
Basically: generate a maze. For each cell in the maze… generate a smaller maze! Recursively.
read more...
So basically we have a simulation where each of n different species has a weight of attraction/repulsion for each other species. This is, by itself, enough to generate some pretty organic behavior!
Edit: This one probably fits better for Genuary 2026.27: Lifeform and that one here.
read more...
This book is dedicated to anyone who has ever fallen in love with a culture that was devouring their own.
So basically: an empire of Space Aztecs with funny Number Thing names and a proclivity towards politics and poetry (and especially political poetry)–
The Empire, the world. One and the same. And if they were not yet so: make them so, for this is the right and correct will of the stars.
–and a new Ambassador who should have memories of her maybe murdered predecessor to help her out… and doesn’t.
Our memory is a more perfect world than the universe; it gives life back to those who no longer exist.
Things, of course, get messy.
read more...
It started off with a neat grow of blocks and just sort of grew from there–as these things seem wont to do.
This is another one that really benefits from the animation, but it’s neat enough to see each simulation done.
Try playing with the settings. This one looks like a game of Pick Up Sticks.
read more...
Genuary 2026.10: Polar coordinates did the transparency thing, but … let’s do it again!
This is one that really stands out when it’s animated.
read more...
Split a polygon into triangles and then recursively split those triangles over and over again!
read more...
He just keeps going. More chaos, more levels, more caring for this absolutely ridiculous setup and what is going to end up to happen to Carl and Princess Donut and all their friends/enemies/fans/decapitated sex doll heads.
Aaaaaah!
read more...
One line… that repeatedly splits, albeit without (mostly) crossing itself.
Fractal trees GO!
splitChance controls how quickly the line branchesminChildren / maxChildren controls branchingangleRange is how many radians the new branches can change byrandomizeAngles controls if child angles are random/evenly spacedspacing is roughly how spread out the tree ispauseOnResetFor / stopOnReset controls what happens when a tree is donecolorMode changes drawing colorsanchor changes where the tree starts
It does get a bit sluggish, especially if you have a high number of children.
read more...
I’m… not really sure where I was going with this one. 😄
Basically, 16x16 tiny sketches that slide around like a sliding block puzzle. Although with how chaotic some of the simulations are, it’s not always easy to see.
read more...
I feel like the most unexpected of paths is Langton’s Ant!.
Okay, it’s fairly expected. And I’ve even done it before. Been a while though.
Anyways, here we go!
In a nutshell, you have a grid with N possible values (the length of the rule string). For each pattern, when the ‘ant’ walks on that cell, the value in incremented by one and you will turn according to these rules:
R turn right (90° or 60° in hex)L turn left (same)S turn right 120° in hex mode (nothing in square)M turn left 120° in hex modeU turn 180° in hex mode- anything else (
N above), do nothing/go straight
This ends up with some really interesting behavior for such a short ruleset. Langton’s Ant (LR, the default) is definitely an interesting one. For 10,000 ticks, you get chaotic behavior… and then suddenly it stabilizes!
read more...
Wallpaper group. There are only 17 ways to cover a plane with a repeating pattern, choose your favourite on this page: Wallpaper group
This is a great article about Classifying Symmetries that says there are actually 35 tiling patterns!
List of planar symmetry groups is another Wikipedia page with a good summary of the wallpaper group.
I spent waaaaay too long on this one.
group is the 17 groups mentionedsubGroup is horizontal or vertical for some of the abovecellType is the shape of each cellcellStyle is what to fill them withdebugDrawOne shows what one tile looks likedebugDisplay prints what random values were selectedpauseBuffer is useful for pausing the generation (although if any of the others are random they will keep changing)
Not all of the groups and cell types are perfectly compatible. In fact, probably half or more aren’t. But they still produce something, and I think that’s pretty cool!
read more...
Order vs Disorder
So I have two kinds of agents: Order, which always moves in straight lines and Chaos which… doesn’t!
Settings:
updateRate is how fast it runsminAgentCount will spawn agents until you reach this numbermaxAgentCount will kill off agents until you’re under this numberdieOfOldAge will kill off old agentsmaxAge is the longest an agent can lastagentRatio of 0 is all order and 1 is all chaosspawnRate is how often an agent will spawn a new agent (of the same kind)resetPercent is how much of the screen can be full before resettingpauseOnReset will pause on a reset to allow downloading! (change any setting include this one to unpause)
read more...

Create an invisible object where only the shadows can be seen.
Noise that pushes a bunch of particles around on the screen. There is 1 (or more) ‘shadows’ on the screen that push the dust away.
If the shadow runs off the screen it will come back in a bit from the opposite edge.
Settings:
dustCount is how much dustdustSpeed is a multiplier for how fast the dust goes per framedustDieOff is how much dust disappears each frameonlyEdgeDust sets dust to only spawn on the edges, rather than anywhere (has some weird visual artifacts when the dust is a nearly horizontal / vertical)rainbowDust makes the dust far more colorfulwindScale is the scale of the noise, 1 will wiggle a lot more, 5 is closer to straight lines and slow changesfade will leave trails by fading the screen; turning this off is interesting since the shadow will be much more subtleshadowCount is how many shadows there areshadowForce is how strongly they repel dustshadowWindIndependent means the shadow doesn’t always move with the particlesshadowEdge will show where the shadow shape actually isshadowsMove will allow the shadows to move / stop them
read more...
14) Fits Perfectly
Basically, we’ll pack as many circles in as we can!
retriesPerFrame is how many circles it will try to place before giving up and drawing the frameminDiameter is the smallest a circle can be (this should be 1 for a ‘perfect fit’)maxDiameter is the largest one can bespacing is how much space to leave between circles (this should be 0 a ‘perfect fit’)borders will draw a black border on each circlefillInside will place circles inside of each other as well as outside, so long as there is still enough spacingblackPercent is how many of the circles will be black rather than bright colors
read more...
13) Self Portrait
That was surprisingly fun.
Basically, it will take recursively divide the picture over time. Each time, it will find the node with the largest error (real image color compared to the current random color) and split it in 4, assigning each to the nearest random color from our palette.
colors controls how many maximum (random) colors will be chosenedges will draw the boxes of the treeminimumBlock is the size at which it won’t split any moreresetAfter will generate new colors even this many framesevenSplit will split each box into exactly 4; if this is off, each axis will randomly be 25-75%weightErrorBySize will split small boxes earlier; with this off, larger boxes have more error because they are larger
If you don’t want to look at me any more, turning off selfPortraitMode will load an image from picsum.dev.
read more...
12) Boxes
It’s like draw a box. But somehow even more. And automatic.
If you let it run for a while, you get some crazy abstract art!

read more...

11) Quine
Making a genart quine? That’s… certainly a thing!
So basically I made a very simple stack based virtual machine. You can check the source code below for what commands it can actually run. It will then run until it outputs enough code to match the input length (or times out). If it happens to output a quine? Woot!
If not, it will randomly mutate and try again.
cellSize - Change how big the program is (default is 10, theoretically with semi quines size shouldn’t matter)ticksPerFrame - How fast the simulation will runasFastAsPossible - Ignore the above and run an entire simulation per frame (it could technically go even faster 😄)pauseAfter - Pause to see what happened after output is done or a breakstopAfter - When a single program has run, stop the main loop (mostly useful for debugging)randomizePercent - How much of the input to randomly change for the next iterationrunOutput - Run the output as the next program (otherwise, randomize the input)highlightActive - Highlight the parts of the program that actually ran (brighter colors)allowSemiQuine - Ignore non-active parts of the program when considering a quine (if you copied the output to the program in these parts, they’d be a quine, so I think it counts)allowReadingCode - Allow (new) commands that allow reading our own source codeallowWritingCode - Allow (new) commands that can modify the code you were originally runningdebugPrint - Print each command run/output to console.log for debuggingdebugSlow - Drops the framerate to 1 fps for debuggingdebugStepButton - Add a ‘step’ button that runs one step at a time (noLoop) for debugging (reload the page)
In addition, you can put in code in the box and ’load’ it to run. This will be helpful to verify quines! I have some interesting code below (including a hand written quine! That uses the self reading instructions).
If you manage to find a quine organically (or write one), I’d love to hear what it was!
read more...
What lies in the shadow of the statue?
Season 5 is where it really started to get obvious that the writers of the first few seasons did not have a plan for where all of this was going to go. It manages to hold together relatively well–and we do get a few answers, mixed in with all those questions–but man, there are a few moments which just don’t line up with what we already thought we knew.
I suppose that’s what you get any time a show introduces time travel
.
read more...
Recent posts by category
Click a category to see all posts in that category, or click the RSS icon to subscribe to that category's RSS feed.
The earliest memory I have of ‘programming’ is in the early/mid 90s when my father brought home a computer from work. We could play games on it … so of course I took the spreadsheet program he used (LOTUS 123, did I date myself with that?) and tried to modify it to print out a helpful message for him. It … halfway worked? At least I could undo it so he could get back to work…
After that, I picked up programming for real in QBASIC (I still have a few of those programs lying around), got my own (junky) Linux desktop from my cousin, tried to learn VBasic (without a Windows machine), and eventually made it to high school… In college, I studied computer science and mathematics, mostly programming in Java/.NET, although with a bit of everything in the mix. A few of my oldest programming posts on this blog are from that time.
After that, on to grad school! Originally, I was going to study computational linguistics, but that fell through. Then programming languages (the school’s specialty). And finally I ended up studying censorship and computer security… before taking a hard turn into the private sector to follow my PhD advisor.
Since then, I’ve worked in the computer security space at a couple of different companies. Some don’t exist any more, some you’ve probably heard of. I still program for fun too, and not just in security.
But really, I still have a habit of doing a little bit of everything. Whatever seems interesting at the time!
It started more than a decade ago now (2012!). I was catching up to 30 new releases in a year in theaters and reviewing them. Then at some point (2014), life happened and I didn’t make it to the theater as much anymore.
After that, starting in 2015, I realized I could do the same thing with books! And I started writing a review of every book I read. And I read a lot. Since then, I’ve reviewed over 1300 books–and I still have over 1000 on my to read list. So that isn’t likely to stop any time soon.
It’s mostly fantasy and to a lesser extent scifi, although I do get a few horror novels in there, along with a couple non-fiction or poetry anthologies a year. I’m always looking for more to add though. Hit me up!
Then, starting in 2021, I started again with the movie reviews, this time mostly ignoring what was in theaters, instead watching whatever seemed interesting, much like my book reviews. And this time, I added TV reviews as well.
And… here we are. Really, it’s as much a memory aid for me as anything. I love being able to look back at all the covers I read in a year, pick one at random, and use my own writing to remind me of a particular book/movie/show. And if anyone else is inspired to read something out of it? Well, all the better!
Current book bingo: 2025 Book Bingo
… other things I currently haven’t put into a category!
I love to take things apart and put them back together. It’s one of the reasons I work in computer security for a living. But more recently, the dropping prices of 3D printing and entirely not dropping prices of wood working have led to a few new hobbies. :D
I’ve always had a soft spot for photography. I borrowed my mother’s camera in high school and eventually bought my own. These days, I mostly use my phone (it’s amazing how good those have gotten), but I still pull out my years old DSLR from time to time.
Mostly, I have pictures organized by photosets, but I’ve started adding a few ‘meta sets’ like Mini Worlds, Bugs etc (macros), and Fungus Among Us.
Another hobby I’ve been getting into more recently is Home Automation! Previously these posts would have been in Other, but it’s nice to have them all in one place.
I am a writer–I just don’t always remember it.
I wrote my first novel in 2011. I’ve started 14 more since then, finishing about half of those. One of these days I’ll actually try to find someone to publish them (or just do it myself). Onward!
(If anyone would like to be a beta reader, feel free to drop me a line).
Once upon a time, I was on track to get a PhD in censorship/computer security.
I was ABD (all but dissertation) when my advisor decided to leave and go into the private sector. When that happens… you either find a new advisor or you go with them. I decided to go with them, move to Silicon Valley, and join a startup. It was perhaps the best thing that could have happened to me. While I sometimes regret not having the extra letters after my name, I love the practicality of working in the ‘real world’. Not to mention the job prospects are better. :)
So for the most part, these posts are archival, but there are still a few gems in there.