--- a/README.markdown Sat Jul 02 11:44:32 2016 +0000
+++ b/README.markdown Sat Jul 02 19:08:01 2016 +0000
@@ -328,3 +328,27 @@
I admit I did twitch a bit when I saw the infix `(('speaker 'health) > 0.5)`
notation in their Scheme-like dialog scripting language -- I guess even
Naughty Dog isn't perfect, hah.
+* Shaved a yak related to packages in [cl-nrepl][] that I've been meaning to get
+ to for a long time. Really I need to rewrite that whole project now that
+ I'm not a complete noob in Common Lisp.
+* Did episode 32 in [Coding Math][]. I decided to use Common Lisp's multiple
+ return values for everything this time instead of taking/returning vectors
+ everywhere, just to see how it felt.
+
+ Implementing the core functions felt really nice with multiple values, but
+ when it came to the drawing code things got a bit more awkward. Needing to
+ use `multiple-value-(call/bind)` to get things done is kind of a pain in CL
+ because of how verbose things can get. I could make some read macros to ease
+ the pain, but it's probably not worth it.
+
+ I'm trying to come up with a good rule of thumb for when to use multiple
+ values and when not to. Multiple value return obviously only gives you one
+ level of "hierarchy" to work with, so e.g. instead of `(values x1 y2 x2 y2)`
+ it's probably better to do `(values point1 point2)`. Also if the items are
+ the same "importance" it's probably also better to just return a structure of
+ some kind -- the fact that CL treats the value first differently makes it seem
+ like it's special when really `point1` isn't any more important than `point2`.
+
+ I think the general rule I'll follow (for now) is to use multiple value
+ returns very sparingly, and only when one of the values is different than the
+ rest and is obviously the "most important" one.