January 2017


  • Rebooting this .plan after a long absence. It's a new year!
  • Wrote a first draft of my proposal for a talk at ELS 2017.
  • Made a little prototype name generator based on some ideas from last week's Caves of Qud dev stream.


  • Polished up my ELS paper.



  • Finished and submitted the ELS paper.
  • Worked a bit more on a platformer game assignment for a class. I hate graphics/shader programming so much.
  • Added a few docs to cl-ggp. Still got a bit more to write.


  • Handed off maintainership of clojure-lanterna.
  • More platformer work. Finally got the fucking sprite pack working. I hate things with no documentation.


  • Got nerd-sniped and ended up implementing PCG in Common Lisp.

February 2017


  • Started working on a constrained game with my team for AGDD.


  • Added a bit of juice to the constrained game.
  • Finally sorted out the AI/animation bullshit for my minimal game. Assets without docs are the worst.


  • More juice to the constrained game. Been doing non-computer stuff lately.


  • Implemented a little easing API in my sandbox repo.
  • Made the pluralization rules in Chancery slightly less awful. I should just sit down and fix it right some day.


  • Chatted with my advisor a bit and solidified my plans for the home stretch of Scully.
  • Made a little Lisp wrapper for bearlibterminal. Learned more about SBCL's floating-point traps than I wanted to.


  • Worked more on our constrained game with my team. Got something almost game-like now!


  • More constrained game work. It's an actual game now. Fun.
  • Changed all the #:foo uninterned symbols in Temperance to regular :foo keywords. Memory is cheap.


  • Finished the docs and pushed the 1.0.0 release of cl-ggp. I still need to submit it to Quicklisp, but I need to submit Temperance first.
  • Dusted off my old Project Euler repo and did another problem.
  • Dumped initial commits of cl-pcg and cl-blt to the internet in case my laptop catches fire. Still lots of work left to do on those.


  • Added basic level generation and scrolling to my AGDD minimal game. Also sound.
  • Fleshed out cl-blt a tiny bit more. Ported a little terrain gen demo over to it. It seems promising.
  • Wrote a little harness for cl-pcg to test it with dieharder.


  • Did another Project Euler problem over breakfast, and a couple more after that. The early ones are simple to just brute-force.
  • More work on the constrained game.


  • More Project Euler. Math is fun.
  • Fixed up the universe-based matching in Scully. I'll need it soon for the percept matching.



  • More tiny Project Euler problems.
  • Finally got the percept filtering in Scully all figured out.
  • Cleaned up Temperance and start writing docstrings. One more "Finishing Friday" and it should be ready for an initial release. Not perfect, but good enough for now.


  • More Project Euler.
  • Poked a bit more at my minimal game. It's gonna be very minimal.



  • Chatted with my advisor and did more work on Scully. The home stretch is in sight!
  • Tipsy Project Euler.


  • More Project Euler.
  • Watched the first part of the Merry Fragmas 3.0 Unity session. Multiplayer FPS in Unity looks to be not too bad.
  • Cleaned up the internal API in Scully a bit.


  • More Project Euler.
  • Watched the second part of the Merry Fragmas 3.0 Unity session.


  • More Project Euler. Problem 51 was painfully underspecified, but I finally got the stupid thing.
  • Watched the last part of the Merry Fragmas 3.0 Unity session.

March 2017


  • Started poking at a prototype game my teammate made.
  • Added a janky priority queue to cl-losh.


  • Finished the stupid [Project Euler][] poker problem. This isn't math.


  • More Project Euler.
  • Started documenting Chancery.
  • Started working through Surreal Numbers. I'm going to try to code each chapter up after I read it, to make sure I understand everything. So far I'm done with chapter 2.



  • Worked on our game with my team.


  • Watched Math for Game Programmers: Building a Better Jump over breakfast. I really like the idea of deriving the gravity and initial velocity constants from jump height/distance targets. I'll have to try that the next time I make a platformer.
  • Implemented a bunch of simple (but necessary) API functions in Scully.



  • Did the final bit of plumbing to make Scully actually play games with the game server. It works!
  • Added LICENSE.markdown files to all my projects. Annoying, but if it staves off the people complaining for a while it's worth the extra wasted bytes.
  • Chatted with my advisor about the next step for fixing the combinatorial rule tree explosions in Scully.
  • Added a restart to cl-nrepl to let me specify a new port to use more easily, if the default one is already in use. Common Lisp's condition system is really powerful but also really obtuse, and I don't seem to use it often enough to really get it into my stupid brain.
  • Added a couple of docstrings to cl-pcg. Still not sure about the API layout... I think I need to try it in a real game to see how it feels.


  • Did a bunch of stuff on my team's game. I really need to dig into the Unity networking documentation...


  • Whipped up some docs for cl-pcg. I think I'll just call it released in the next day or two and see where it goes from there.


  • Watched a big chunk more of the Unity course. I've made a bunch in Unity already but it's good to follow along with a class and fill in all the gaps in my self-learned knowledge.


  • Added a test harness to cl-pcg. Need to write a couple of simple tests.
  • Worked on the game a bit more with my team at the end of class.


  • Watched "5 Bits of Good Game Design from 2015" GMTK video. I especially like the bits about downtime in games and about giving players a reason not to do something (like saving or killing every enemy).
  • Fixed a nasty bug in our game. Multiplayer is hard (at least in Unity).


  • More game bugfixes in the lab.


  • Pushed v1.0.0 of cl-pcg. Time to move on.
  • Added a simple Monte Carlo player to cl-ggp. It'll be used as an example during my ELS talk. Also added some additional GDL cleaning to cl-ggp's reasoner.
  • Looked around for a simple, cross-platform way to just play a WAV file from Common Lisp (or at least from C (which I can wrap with CFFI) but apparently nothing exists. Computers are awful.

October 2017


  • Gonna try updating this thing again now that I'm settled back into the US.
  • Tried my first Aeropress coffee. It was a bit sour, which I think is due to underextraction. Gonna try again with a finer grind (today's was a 13).
  • Read a bit more of The Whole Shebang. It's good, but the bit on the "evolution" of the universe seems like a bit of a stretch, given that there's not replication mechanism like DNA has.
  • Refactored the rate-limiting macro in Bria to be more general. Of course I immediately ran into edge cases because I'm using this to rate-limit reloading of the entire bot, which means than all the forms get re-evaluated. So using a gensym for the key in the macro was not gonna work. But at least I ran into those edge cases early.
  • Started reading through ergolib. Lots of stuff in it, some of it interesting, some of it a bit crazy. It's fun to see how other people implement some of the utilities as in my own utils library.


  • Work.
  • Read Fast generic dispatch for Common Lisp. A pretty simple idea at its core, but Common Lisp's support for highly-dynamic things like redefining classes at runtime complicates things.


  • Work.
  • Streamed some Common Lisp and ncurses gamedev. Made a spooky little Halloween clicker game.

November 2017


  • Work.





  • Read more of Lisp.
  • Started working on this month's Hackerbox. Got the headers soldered to the Arduino Nano and the pan/tilt thing assembled. Checked that the sketchy drivers worked to dump code to the Nano and they appear to be okay.
  • Finished reading the code of EasyWFC. I'll probably try to implement Wave Function Collapse on stream this week.


  • Work.
  • Did some preliminary work to get it out of the way for the WFC stream tomorrow, mostly remembering how to use Sketch.


  • Work.
  • Streamed. Did some work on WFC, though we didn't finish.
  • Did a bit more on Hacker Box 24. Finished putting the hardware together, and got the Processing sketch to work with the webcam (finally).


  • Work.


  • Work.


  • Read more Lisp.
  • Wrote a little Lisp program to calculate ideal padding for hanging two rows of different-sized photos so that they'll match up.


  • Realized that switching to Deploy to build my magitek lib fucked up the random state generation, and fixed it. This bites me constantly in Lisp and I hate it.