I'm fascinated by how simple the rules are that govern these kinds of branching systems. Also, it seems like there are similarities among branching systems of all types. Neurons grow dendritic branches with the purpose of increasing the probability of making synaptic contacts with other neurons. Trees grow leaf-covered branches with the purpose of increasing the probability of acquiring photons.
Each source starts with a certain number of paths, and each path has its own velocity vector which determines the direction of growth. The paths have a bunch of parameters, like Gaussian noise variance on the growth vector, branching probability, thinning rate, etc. I wrote the code in Python. I used PyOpenGL to draw all the paths as translucent antialiased lines. At each step I just draw a small line segment at the end of each path, and I never clear the frame buffer. It runs pretty fast since I'm not redrawing everything constantly.