GEOF & other projects
Since my childhood I’ve been eager to make an immersive story. For a long time I wrote stories myself, accompanied by awkward sketches and compendia of miscellany. There came a point where I’d decided the greatest impact I could have with these projects wouldn’t be my writing, but my software, and so I set out to create a simulation engine that would turn other writers’ stories into playable experiences.
I came to call this engine GEOF after the greek words for philosophical concepts: ‘ὤν’ being, ‘εἶδος’ seeing, ‘γιγνώσκω’ knowing, and ‘φαίνω’ happening/revealing. They represented the four operative concepts in the engine: 1) what things exist, 2) the perceptions sapient things have of other things, 3) what sapient things know/believe/feel, and 4) time.
The core goal is to simulate intelligent agents and how they communicate, both normatively (telling the truth) and pathologically (lying), in a realistic world with physical consequences that can affect the rest of the simulation.
Planets for simulated life
These simulated agents would need a home, which was of course on a planet, which would need to be represented in the system, so I first created a data model for the surface of a planet from a meteorological data model originally written in Fortran. This first yielded peels
, then geof.planet
when I refactored GEOF to use Elixir.
I’d seen somewhere an art piece which used LEDs arranged in a spherical pattern, which inspired me to bring GEOF’s planetary data model to physical life. I extended the algorithms to produce printable models with OpenSCAD, then created a runtime which would drive the sphere. Since these spheres emit instead of reflecting light, but still hang like a disco ball, my friends coined the term ‘technoball’ and it stuck.
I’m now working on a second technoball, “Veronica”, which should be completed this year. You can see a gallery of photos of the technoballs on this Facebook album or on my Instagram account.
GEOF & other projects
When I’m not working, I’m playing (though sometimes one feels like the other). Sometimes that play yields something worth mentioning, so the rest of this is dedicated to these… mentionables.
Pi Brewer
For a while I was interested in homebrewing, but I always wanted to automate as much of it as I could, especially the heating bit. Mash is incredibly sensitive to temperature, and I never had much faith in my ability to take enough care to get it just right, so I devised a system using solenoid valves and industrial sensors that would keep the mash at just the right temperature at just the right time.
The system was just a board that used components I’d found on Mouser and circuits I’d read about on my commute. I designed the PCB using Eagle and had it fabricated and assembled by SMD specialists.
…Unfortunately the circuit didn’t work quite as expected. Something somewhere was getting a lot of noise, so the temperature sensors all gave a very erratic signal. This came right as other priorities in my life rose above the project, so I had to abandon it. To be continued, lil’ thing!
SCXML Tutorials
In between my roles at Microsoft when I worked for myself and another tiny startup, I also created tutorials to help explain the value of SCXML and guide new users in its use. If Google search results are any indication, people have found the tutorials useful, since they’ve appeared on the first page of results for ‘SCXML’ for years now.