date: 2019-11-27
title: Silly project ideas
current-music: Deadmau5 - Hit Save

Silly project ideas - 2019-11-27 - Entry 27 - TOGoS's Project Log

This whole entry is very boring and you should not bother reading it.

TOGLogger

For some reason on my bike ride home from flyering at Willy Street Co-op the other night I got to thinking about a logging framework.

It'd be like

interface TOGLogger {
  /**
   * @param flags lower 8 bits indicate 'level', and the rest can mean other things
   * @param path an MQTTesque path indicating the property being logged
   * @param payload an object that ought to Stringify nicely
   */
  void log( int flags, String path, Object payload );
}

There'd be some static convenience functions for it that would basically look like the Log.i, Log.d, etc functions in Android. The 'tag' would be the path.

I'd probably want to include a log event class that encapsulates the flags, path, payload, and also a timestamp. In case anyone wanted to store log events for later or push them into a queue or something.

Modelling it to look like a stream of MQTT events means I could write log visualization tools that work with either.

Okay, that was super boring. On to the next topic.

Path tracer

Or a model for world data, anyway.

This came to mind in the shower at the gym because I was thinking about making a CNC router simulator. Which how do you present the result of carving up a piece of material? By path tracing it, of course!

The world's represented as a tree (duh). Each node in the tree can subdivide its space into mutually exclusive volumes, and provide a transform for the content of the volume, which is referenced by name from the parent node. There'd probably be different ways to subdivide. Like by a plane or a curve. Or to have an array of non-intersecting objects.

Nodes could also bind names to content trees, and those mappings would be inherited by child nodes. Those trees could bind to the position at which they're bound, ignoring the relative offset when referenced. This way a parent node can indicate a 'default' value that children could reference where they have empty space. It could also be used for allowing materials to be overridden.

I might never build another path tracer, but if I do this seems like a reasonable approach that allows very flexible 'hierarchical instancing'. To get decent speed I expect that the tracer might have to 'compile' the scene as it goes. But that could be useful anyway, since it would allow lazy-loading from the internet or procedurally generated areas.

Cool track

I heard 'Hit Save' (or some version of some part of it, anyway) because it was on this 'Unreleased Mix' and it's been running through my head all evening. It has this ethereal vibe to it that reminds me of all the times that life stopped feeling blah for a little while and let awesome things feel awesome.

Anyway, that made me think about black silhouetted trees with curly branches in fog, and how I could probably generate something like that in Context Free, but it'd be even neater to animate it, with the trees swaying around a bit, maybe growing and shrinking, panning past, fading out to different trees. Well for all that I should learn some WebGL maybe.

Weld nuts

So I read more of the gridbeam book (it's actually kind of thick and takes a while to get through) and got to the part where they talk about their nuts, and they like weld nuts, not joint connector nuts. Weld nuts tend to be narrower and cheaper and they'll let the bolt all the way through if that's what it needs to do. So I ordered some weld nuts. Big accomplishment of today, that is.

2019-11-29 update: The weld nuts that I ordered and was all excited about are only 9/32" long, which isn't actually long enough to meet up with my 70mm joint connector bolts through 2 pieces of gridbeam. Argh! Should have read the product description more closely and thought about how short 9/32" is. It's just over 1/4".

Zoro also sells 7/16" ones, but that's only 5/32" more and I don't know if that would be enough to make a difference.

So anyway, these fail at their main purpose. Much disappoint.