This week I mentioned pyTectonics briefly in a post on Reddit's r/worldbuilding subreddit. It seems the project got a few more downloads than expected, but hopefully the project may still be deserving of its own thread sometime in the future. Until then, I've started thinking about the ways to give a better face to the project. A new website is planned using Sourceforge's project web space as an obvious choice for hosting.
Focus will also switch back to project code itself. Earlier, I tried researching new ways to improving performance. It seems like the biggest room for improvement lies in handling rotation - a frequently used operation that relies on Vpython's low level C code. At the present point in time, vpython's rotation code is invoked separately for each point on the sphere. On searching through internals, though, I've come to realize Vpython does this by creating a new rotation matrix for each invocation. This by itself is acceptable behavior that keeps users from having to deal with matrices, but remember - pyTectonics rotates each point in a plate with the same speed and euler pole. In short, each rotation matrix is exactly the same. Previously I've dreaded addressing this since the only way Vpython allows to reduce the number of matrices created is to represent each plate with a monolithic "points" object, then either store individual point information separately or drop it entirely. Both of these are undesirable - the former splits an object apart, the latter sacrifices behavior, but in addition this fix would undoubtedly tighten the coupling between rendering library and model code, an issue I had previously designed the program to avoid.
The prospect has left me sidetracked for a few months on some other projects, but that's fine. It's not the first time the project's met the backburner, and I've begun to warm to the idea in any case, if only its slightly modified. Part of the problem was that packing all a plate's points into a vpython object would require lots of boring code to make sure points are properly mapped when they are added or removed from a plate. However, each plate also stores its points in a grid system unique to itself. That grid system can be represented by the vpython object and individual points may determine their own location through referencing that object.