Time-stamp: <2018-01-07 03:11:15 (bm3719)>
#+STARTUP: content

* Project List (2017)
** Computer Science/Programming
*** DONE Cognicast (podcast)
    - State "DONE"       from "STARTED"    [2017-02-04 Sat 00:02]
    - State "STARTED"    from "TODO"       [2016-04-12 Tue 17:58]
Listen to the entire Cognicast up to episode 100.  I'm only listening to these
when stuck in a car, so this will take awhile.  Once done, will ignore the show
for awhile to let more episodes build up.

This show is very painful to listen to, thanks to all the non-technical talk,
music, politics, and SJW stuff.  However, I did occasionally glean useful
tidbits.  A fast-forward button is mandatory to retain sanity.  This took way
longer than expected since I needed to take breaks from the grating
personalities here.  I may skip the rest of this show in the future.  If not,
be more selective about choosing episodes to listen to.
*** DONE Front-End Developer Handbook 2017
    - State "DONE"       from "STARTED"    [2017-02-12 Sun 10:29]
    - State "STARTED"    from "TODO"       [2017-02-10 Fri 18:29]
Skim this to catch up on the modern front-end world, at least in outline.  This
is of limited utility to me, since anything involving a web front-end that I
would want to do on my own would be in ClojureScript, but it's worth a couple
evenings to at least not be completely ignorant of what a huge section of the
developer world is up to.  This mostly only covers the JavaScript ecology.  If
I spot anything super interesting, add a separate task for it.

Some ideas:
- Definitely learn HTML5.
- Maybe find a book on ES6 from a functional perspective and skim it so as not
  to be in complete ignorance.  This might prove useful for client-side FPLs
  that have a JavaScript interop feature.
- The web animations section is worth noting the existence of in case I need it
- React has thoroughly displaced AngularJS.  Vue.js will probably end up taking
  second place soon.

Keep this around as a reference.  Be sure to check back next year around
February to see if there's an updated version.  I'm trying to defer any
front-end work on my part as long as possible to give WebAssembly time to
ripen.  However, it's likely I'll be waiting a good chunk of my life, as by my
estimate, we're at best 3-5 years out to having Clojure/Haskell->WebASM.
*** DONE The Type Theory Podcast (podcast)
    - State "DONE"       from "STARTED"    [2017-03-06 Mon 08:14]
    - State "STARTED"    from "TODO"       [2017-02-23 Thu 07:14]
A very rarely updated podcast on type theory.  http://typetheorypodcast.com/

This is actually a very good podcast.  I learned massive amounts of information
with each episode.  I'll probably listen to these files again later,
particularly episodes 1 and 6.  Now that I think about it, this is probably the
only podcast so far worth listening to by its own right, and not just as a
 convenience compromise to salvage something useful out of driving time.  The
 one and only downside is that the hosts' mannerisms are very beta-male, but I'm
 used to that from being around Haskell programmers in real life.
*** CANCELED Paradigms of Artificial Intelligence Programming
    - State "CANCELED"   from "TODO"       [2017-03-15 Wed 21:11]
The classic Peter Norvig text on AI programming in Lisp.  If I stick with CL,
this is a must read, as it's not just a great AI text, but also uses those
concepts to introduce many advanced Lisp techniques.  Otherwise, I'll just
keep it as a reference.

I still like AI and might come back to this, but the overhead of it being
implemented using the finer details of Lisp downgrades its usefulness for me.
I'm also canceling a few things like this to make room for future work in
dependent types, while being realistic about my potential future output.  I do
lament that there aren't any really amazing CS texts like this one in Clojure.
It seems unlikely this will ever be the case though, since the majority of
cutting edge computer science is in the statically typed FPL world.
*** CANCELED Haskell: The Craft of Functional Programming
    - State "CANCELED"   from "TODO"       [2017-03-15 Wed 22:15]
Already did a couple chapters of this and it's only okay.  Leaving it third on
the Haskell mastery list, but I may skip it entirely, since it doesn't add
anything new.

This book is a little dated now and since it doesn't offer anything
particularly unique, I'll skip it.  I'll reevaluate if I somehow get through
all of the better books.
*** CANCELED The Little Prover
    - State "CANCELED"   from "TODO"       [2017-03-15 Wed 22:18]
A 2015 book that uses inductive proofs to prove facts about programs.

Glanced at it.  I think I hate this book's content style, which it share with
all the other The Little X books.  Apparently, I'm the only one who feels this
way though.
*** CANCELED An Introduction to Formal Languages and Automata
    - State "CANCELED"   from "TODO"       [2017-03-16 Thu 00:37]
A textbook from a course I took on this subject in gradschool, where only
selected parts were covered.  These topics do have ancillary influence on
various aspects of computer science, but I'm not convinced it's worth a
super-close study, given that I already know this stuff.  As a result, I'll
probably just give this a fast read.

Skipping this in favor of Introduction to the Theory of Computation.
*** CANCELED Applied Cryptography: Protocols, Algorithms, and Source Code in C
    - State "CANCELED"   from "TODO"       [2017-03-16 Thu 00:41]
The Bruce Schneier book, highly esteemed on the subject.

Will skip, since I don't have a need for cryptography in my more plausible
*** DONE 97 Things Every Programmer Should Know
    - State "DONE"       from "STARTED"    [2017-03-16 Thu 03:45]
    - State "STARTED"    from "TODO"       [2017-03-16 Thu 01:15]
An O'Reilly book on the SE trade.  Will plow through this quick in case there's
something here I can use.  Part of my light reading queue for Kindle.

Complete trash.  This is a missed opportunity to actually say at least
semi-profound stuff.  Instead we're stuck listening to a bunch of boring people
talk about their boring jobs.  A better book using this idea would have tracked
down some actual thinkers.  Bailing about 33% in.
*** CANCELED Compilers: Principles, Techniques, and Tools (2nd Ed.)
    - State "CANCELED"   from "TODO"       [2017-03-16 Thu 15:45]
The classic "Dragon Book".  This is the book to read if I want to know
compilers.  I have to decide first whether I'm really interested in this topic
though.  I'm considering contributing to some functional compilers, so this
would be the necessary groundwork for that.  If I don't want to do that, I may
just skim this and stick with the other language theory books covering
interpreter design.

I'm going to focus on pure PLT and skip compiler design for now.
*** CANCELED Compiler Construction with Flex and Bison
    - State "CANCELED"   from "TODO"       [2017-03-16 Thu 15:45]
Only read this if I want to do the kind of classic compiler design in the
dragon book.  If I don't want to do that, it's unlikely I'll read all of this
or program along with it (since I'd rather make interpreters in a functional
language), except perhaps casually for some additional comfort with the
principles behind the C and other compilers on Unix.

Canceling as part of a shift away from compilers.  I might come back to them
later, but I'll almost surely skip the compiler implementations in C either
*** CANCELED Foundations of Computer Science
    - State "CANCELED"   from "TODO"       [2017-03-17 Fri 01:20]
Maybe good for a refresher.

Canceling in part of my effort to reduce redundant self-study.  Also, I can
probably find a higher quality text for this if I wanted to invest the time
this would require.
*** CANCELED On Computable Numbers, with an Application to the Entscheidungsproblem (paper)
    - State "CANCELED"   from "TODO"       [2017-03-17 Fri 01:29]
The original Turing paper that formulates the Turing machine, recasts Gödel's
first incompleteness theorem in terms of computation, describes the concept of
universality, and equates Turing machine computability to the λ-calculus.  I
will probably just read The Annotated Turing first, then if I'm still
interested, I'll read this.  I doubt that will be the case though, since I'm
not a computing historian.

I glanced at this and it seems a low return on time, so canceling to make room
for higher value tasks.  Will just read The Annotated Turing.
*** DONE The Command Line Crash Course
    - State "DONE"       from "STARTED"    [2017-03-19 Sun 17:28]
    - State "STARTED"    from "TODO"       [2017-03-19 Sun 17:01]
A short e-book on the CLI, by Zed Shaw.  Plow through this quick and see if he
knows anything I don't.

Went through this whole book and already know everything here (minus the
PowerShell stuff, which I don't care about).  Would only be useful for a
complete n00b.
*** DONE Structure and Interpretation of Computer Programs
    - State "DONE"       from "STARTED"    [2017-03-20 Mon 00:01]
    - State "STARTED"    [2013-11-14 Thu 22:25]
Previously left off around exercise 25.

Instead of continuing this in Scheme, I'm going to restart this effort from
scratch using SICP Distilled.  I'll make a call on whether to come back and do
the full Scheme version after that, but it seems unlikely that there would be
any benefit in doing so if SICP Distilled lives up to its promises.
*** CANCELED Teach Yourself Scheme in Fixnum Days
    - State "CANCELED"   from "TODO"       [2017-03-20 Mon 08:58]
Replaced The Little Schemer (which after previewing a little, doesn't seem that
great) with this.  This is just for fun.  I don't think I actually need a
Scheme tutorial.

- begin is analogous to CL's progn.
- eqv? is a general purpose equality function, less discriminating than eq?.
- Fractions are supported in the form x/y.
- Ports are equivalent to CL's streams.  See current-output-port.
- Variable arity: define a function with dot-notation.  For example:
  (define (f . x) (car (cdr x)))
- lambda, when, and unless include an implicit begin.

This is basically just an explanation of a subset of R5RS.  It's okay, but not
really anything special.

Canceling since I don't currently have any need for Scheme.  The only exception
might be EOPL, which I'm not completely sure I'll do.  If so, I might restart
*** DONE SICP Distilled
    - State "DONE"       from "STARTED"    [2017-03-22 Wed 02:59]
    - State "STARTED"    from "TODO"       [2017-03-20 Mon 00:02]
Instead of finishing the official SICP in Scheme, I'm going to restart this
effort in Clojure by using this site: http://www.sicpdistilled.com/

The main downsides are that not all sections have been ported and, more
importantly, it looks the project's been dead for 2 years and has seemingly
turned into another Kickstarter scam.  That's a shame for backers, but it does
look like it already covers the core important points, so I'll still use it.
The GitHub account for the book is here: https://github.com/SICPDistilled/

This is definitely far from perfect:
- Misspellings that a spell checker should catch are present.
- Some code is syntactically incorrect.  Some hasn't been ported over and is
  still in Scheme.
- The author's claim that the core points are present is somewhat dubious,
  since only parts of chapter 1 are reasonably complete.
- The difference in writing quality from the original text and what the author
  has changed is quite jarring.  The original's prose is efficient, insightful,
  and deeply connected with other content.  The new stuff is at best highly

This is probably a dead end of an effort.  It doesn't look like the author is
up to the task, even if he did keep at it.  As it is, this is only marginally
useful for someone in a situation similar to mine, but ideally less familiar
with Clojure.  The errors here make it unsuitable for anyone still learning
these concepts or completely ignorant of the language, however.  So, the
plausible audience here is pretty small.

Anyway, I finished it, minus the projects, which I'll skip.  Code from doing
the exercises is in practice/clojure/sicp-distilled.  It's probably cheating a
little, but I'm calling my overall SICP effort done.  I may go back and just
read Chapter 4 of the original text some day, should I want some priming
material for getting started on writing interpreters.
*** DONE The Art of Prolog
    - State "DONE"       from "STARTED"    [2017-03-31 Fri 20:28]
    - State "STARTED"    from "TODO"       [2017-02-28 Tue 11:15]
This is the seminal Prolog text.  Reading this is part of my logic programming
meta-task.  I'll make a call on how deep to go into this book as I become
better acquainted with the subject, but my initial plan is chapters 1-7.  This
skips Prolog's imperative language facilities and other topics required to
write normal programs in it, but includes the majority of "pure Prolog" (that
part of the language which is exclusive to logic programming).

While I do like logic programming, Prolog as an environment leaves a few things
to be desired.  My preliminary observation about imperative Prolog are
definitely correct, and that's probably the biggest deal-breaker for me.
There's a story for SWI-Prolog where you can embed it into other languages to
solve logic problems, but that's extremely ugly and cumbersome.  This was
educational, but I'll stick to eDSLs like core.logic from now on.  Quit after
reading the first 2 chapters.  The majority of the core pure language is
covered pretty early on.
*** DONE The Joy of Clojure
    - State "DONE"       from "STARTED"    [2017-04-01 Sat 02:13]
    - State "STARTED"    from "TODO"       [2015-06-23 Tue 10:30]
More of the same as other Clojure books, but supposedly includes idiomatic
style and other potentially useful additions.  Since I didn't read Clojure
Programming in its entirety, I will do so here.

- Use *e to reference last exception.  Just call it for Clojure exceptions.  To
  see full Java exception stacks, use ~(.printStackTrace *e)~.
- Use *1 for last expression, and so on.
- Use the delay and force functions to manually defer execution.
- Another object-like closure idiom is to have a function return a map
  containing multiple keys with values being functions.  See § 7.2.4 for
- The trampoline function serves the same purpose as recur, optimizing tail
  calls, but for mutual recursion.  The downside is some syntactic overhead and
  the need to pass functions returning functions to trampoline.
- There's a nice generic CPS implementation here, but as the book mentions, one
  probably shouldn't use this most of the time in Clojure, due to no TCO.
- nnext is the same as (comp next next).
- Anaphoric macros are non-idiomatic in Clojure, with only a few isolated
  exceptions like the proxy function.  Use ~'symbol in anaphoric macros to keep
  symbols from getting namespace qualified.
- The with-open macro will auto-call the .close method on a closeable object.
  Use this for things like streams instead of the more error-prone
  try/catch/finally pattern.
- The derive function can build a hierarchy of parent-child relationships of
  fully qualified keywords.  Useful for multimethods.  Use the isa?, parents,
  ancestors, and a few other functions in conjunction.
- Unless doing runtime extension of protocols, implement protocol methods for
  records within the defrecord call.  This benefits efficiency and allows for
  direct reference of the record parameter names.
- Consider defstruct deprecated.
- It seems the only use for deftype is to implement various interfaces.
  Generally, it should be avoided since it allows for creation of classes with
  mutable fields.
- Refs: Use these for synchronous coordination between multiple objects.  See
  chess board example wherein multiple space refs have to be updated in
  discrete transactions.
- Agents: Serialize operations in a queue against an object, e.g., serializing
  I/O operations to a file.  They have a lot of downsides though and should be
  avoided in most cases.
- The ~#'symbol~ reader feature expands to ~(var symbol)~.
- Futures: Defer computation, farming work out to a thread.  Dereference them
  to evaluate.  Multiple dereferences just evaluate to the previous result,
  without rerunning the future.
- Promises: Placeholders for values whose construction is fulfilled by another
  thread using the deliver function.  One use for this is to parallelize tasks
  and kick them off at the same time.
- Use the pvalues function to parallelize several arbitrary expressions.
- Use the doto function on mutable objects to chain operations against them and
  return them, e.g., ~(doto (atom 0) (swap! inc))~.
- When writing macros, always throw an Exception at compile time if possible
  (don't include it in syntax-quoted forms).
- Tagged literals can be used to extend the reader, including some built-in
  ones.  E.g., ~#inst~ will create a java.util.Date object.  Another is
- Use type hinting to increase performance where reflection is happening.
  Check if it is by setting ~(set!  *warn-on-reflection* true)~.  There are
  also some built-in primitive array type hints, like objects, ints, floats,
- Observer pattern behavior can be had with add-watch and remove-watch
  functions, adding a watch function to a reference.

Find additional explanations of reify, refs, futures, promises.  Also look into
whether refs and agents are still relevant in modern Clojure design, given some
of the newer libraries that overlap their functionality.  I might want to
re-read the ClojureScript section when I get around to that.

This is a great book, with no filler or slop.  It's not quite perfect, mainly
with some examples having a lot of needless overhead.  This is more of a book
to get one productive with the language, but I'd still prefer a little
underlying theory to keep things interesting (chapter after chapter of
nuts-and-bolts info can get a little dry sometimes).  Alternatively, computer
science-like examples like what SICP has would be more generally educational
and less ephemeral than things like reading data from Twitter.  It's the best
Clojure book I've read so far though, and near perfect given the
background/character of the average Clojure programmer.
*** DONE Functional Geekery (podcast)
    - State "DONE"       from "STARTED"    [2017-04-01 Sat 18:17]
    - State "STARTED"    from "TODO"       [2017-03-07 Tue 07:56]
A still active podcast about all things functional.  Will be selective here,
and only grab the ones that I'm at least semi-interested in.  This podcast is
at episode 85 as of the time of download.

Extremely hard to listen to, mostly because:
- The host is rather dim-witted, and has a habit of embarrassing himself and
  saying cringe-worthy things in front of the smarter guests.
- In complete disrespect for the listener's time, episodes each include a huge
  block of ads at the beginning.
- A lot of these guests don't really have anything interesting to say, are just
  functional-lite programmers using Scala or F#, or are just shilling for
  things.  Tried to filter these episodes out, which is most of them.

I ended up further culling the listening queue, only listening to about 20
episodes total.  The dullard of a host is so painful to listen to, I had to
resort to turning the volume down to a murmur whenever he would talk.  Giving
up on this show.
*** DONE Clojure for Domain-specific Languages
    - State "DONE"       from "STARTED"    [2017-04-10 Mon 23:14]
    - State "STARTED"    from "TODO"       [2017-04-10 Mon 07:38]
I like DSLs, but I hate Packt Publishing.  Will give this a try anyway in my
casual reading queue on Kindle, and may do the same with the other Packt
Clojure books.

Unfortunately, this book is absolute garbage.  It's basically a very bad intro
book, with almost no content about the purported topic.  There is also plenty
of actually bad info in here and sloppy, amateurish code.  The writing is blog
quality at best.  I read about 20% and am bailing before this book actually
makes me a worse programmer.
*** DONE The Haskell Cast (podcast)
    - State "DONE"       from "STARTED"    [2017-05-23 Tue 22:39]
    - State "STARTED"    from "TODO"       [2017-04-14 Fri 13:25]
A Haskell-related podcast.  Appears to still be active, with episode 12 current
at present.  http://www.haskellcast.com/

 While not as good as The Type Theory Podcast, this is still worth listening to.
 Will check back in a few years and catch up.
*** DONE Modern Operating Systems (3rd Ed.)
    - State "DONE"       from "STARTED"    [2017-05-24 Wed 16:53]
    - State "STARTED"    from "TODO"       [2017-05-01 Mon 08:06]
The famous Tanenbaum OS book.  One of the books on the topic that I read some
of in college.  I had the notion afterwards to read the whole thing, though I
now question that goal's utility.  While the 4th edition is now out, I'm only
including this in my light reading queue, and the 3rd edition is all I have on
Kindle.  However, if I wanted to more seriously self-study this topic, I'd
probably default to Operating Systems: Internals and Design Principles (8th
Ed.) by Stallings.  I have an ancient 4th edition copy of this latter book.

Only read selected chapters, since there's a lot of page-count filler here.  A
good subset is probably: 2-6 and 13.  The goal here is to increase my detailed
familiarity with OS internals so I am more comfortable with modifying
Unix-variants, though that ability is unlikely to be extended much in this
endeavor.  Probably a more realistic expectation is just a refresher of basic
OS concepts.

Ended up reading chapters 2, 4, 5, 6, and 12, skimming good chunks of 2 and 4.
This book actually isn't that great and is rather below my already low
expectations.  Only maybe half of the topics here are relevant enough to be of
general usage to CS majors, and the content within those topics here is often
poorly chosen.  This is a particular shame since the world needs more people
focused on the lower level, but also because some of the concepts carry over to
general systems modeling.  No doubt many CS majors have their interest in
operating systems ruined because of classes using this book and others like it.
*** DONE In Search of an Understandable Consensus Algorithm (paper)
    - State "DONE"       from "STARTED"    [2017-06-28 Wed 21:28]
    - State "STARTED"    from "TODO"       [2017-06-28 Wed 17:39]
The paper being presented at the 2017-06-28 Papers We Love DC/NoVA event.
Reading in preparation of attending.  Here, "consensus" refers to the computer
science concept of achieving reliability in the presence of fault-capable
processes.  Most timely is application in distributed systems.

General information about consensus:

The paper:

This is actually only (very) mildly interesting.  Probably doesn't really need
 to be this long either.  In fact, the code could probably speak for itself,
 since it's only 2000 lines.  I'm also now a non-believer in the PWL meetup
 concept.  The attendees were all pretty lame and cringe-worthy too.
*** DONE Mastering Clojure Macros
    - State "DONE"       from "STARTED"    [2017-08-14 Mon 00:35]
    - State "STARTED"    from "TODO"       [2017-04-11 Tue 06:52]
Will include this as part of my plan to close the gap on Clojure topics I'm
lacking detailed knowledge on.  Clojure's lack of regular need for macros has
made me a bit squishy in this department.  In CL, macro writing skills benefit
greatly from a formal text on the subject, and perhaps that's the case here
too.  Purchased a hard copy.

- clojure.walk/macroexpand-all can walk a complex data structure.
- The #= reader macro is read-eval.  Calling read on a user input string with
  this can be a security issue.  Use clojure.edn/read for that.
- Syntax-quote namespace qualifies all symbols, unlike quote.
- Run ~(set! *warn-on-reflection* true)~, then any particular expression to see
  warning reports when reflection happens.  Always check if reflection is
  actually happening before using type hints.

 Also gave a presentation on macros in Clojure.  This book helped some in
 preparation for that.
*** DONE Why Types Matter (slides)
    - State "DONE"       from "STARTED"    [2017-10-09 Mon 03:34]
    - State "STARTED"    from "TODO"       [2017-08-26 Sat 10:29]
Slide series on introductory concepts in types.  Use as a refresher to get
started on type theory studies.

Okay for a slide deck, though I'm not sure it actually explains (at least in
the slide content) why types actually matter.  Of particular interest is the
tables relating concepts across domains (extending the C-H correspondence) and
some of the introductory content.
*** DONE Functional JavaScript
    - State "DONE"       from "STARTED"    [2017-10-24 Tue 18:38]
    - State "STARTED"    from "TODO"       [2017-10-09 Mon 09:42]
A book on FP in JavaScript, centered around Underscore.js.  Selected this for
some light reading on the Kobo, but also in prep for some upcoming web dev.

- ~apply~ and ~call~ are methods on the Function prototype.
- ~arguments~ is a argument list variable available within every function.
  Declaring a function with no arguments, but then using the ~arguments~
  variable is a way to define varargs functions.

These simple functional patterns sure are needlessly complex in JavaScript.
*** DONE Functional Programming in Haskell (online course)
    - State "DONE"       from "STARTED"    [2017-11-07 Tue 23:54]
    - State "STARTED"    from "TODO"       [2017-09-20 Wed 09:43]
 Signed up for an introductory course held online by the University of Glasgow
 and hosted on FutureLearn.  Will give it a try, but will bail if there's issues
 with the presentation or content.  Course starts on 2017-09-18.

Some comments:
- Video as a delivery mechanism for anything programming-related sucks.  These,
  in particular, have a lot of extra filler.
- I'm not sure a total noob would fair well here.  It's probably better as a
  refresher for someone like myself, but less comfortable with FP concepts.
 - Reminder: ~map f (map g xs)~ is the same as ~map (f . g) xs~.

There's only a very narrow range of person I see the course being useful for.
While it could serve as a good introduction to functional concepts, getting
through this with just the course material would be very tough.  For someone
like myself, it's mostly a waste of time and serves as only a very thin

Well, I was working on this, but not at the rate at which it was taught.
Apparently there's a time limit on access to the course material, unless you
pay money.  So, I only made it about half way.  I'm not to upset about that
though, as I can find more efficient usage of my Haskell practice time.
** Math
*** DONE Travels in a Mathematical World (podcast)
    - State "DONE"       from "STARTED"    [2017-02-21 Tue 20:33]
    - State "STARTED"    from "TODO"       [2017-02-08 Wed 10:11]
A series of audio files on various math topics.  Probably only good for some
high level context, but I do see a few subjects covered here that might be
interesting.  If it does that, I'll be happy enough since it's audio.  This
series is complete at 64 episodes.

I learned a couple things, but it's definitely not very information-dense.  Far
too much time is wasted talking about math outreach/education.
*** DONE Basic Category Theory
    - State "DONE"       from "STARTED"    [2017-03-16 Thu 00:43]
    - State "STARTED"    from "TODO"       [2016-10-11 Tue 23:06]
Seems like a completely facts-only math text, which I generally like, provided
I have the background to digest it.  I'll just get what I can from this one and
supplement with another text later.

Did some of this text, but many exercises are beyond my current capability.
Will revisit this text later if I need exercises after reading more remedial
** General Non-fiction
*** CANCELED The Complete FreeBSD
    - State "CANCELED"   from "TODO"       [2017-03-16 Thu 01:11]
Looks like this is too old to be a useful reference.  I'll just read a selected
subset of chapters on stuff that looks like it'd still be relevant and are
about things I'm not quite fully knowledgeable on.

Canceling due to age, in favor of The Design and Implementation of the FreeBSD
Operating System.
*** CANCELED ARRL's Tech Q&A (5th Ed.)
    - State "CANCELED"   from "TODO"       [2017-03-18 Sat 03:34]
A study guide for the ham radio technician license.  Not sure if I'll go
through with this, but I've been meaning to learn more about radio anyway.  Ham
seems like mostly a waste of time beyond learning the basics.  Putting this off
until I get a permanent location to live so I don't have to lug around stuff.

I may come back to this stuff one day, but I'm suspending all things ham for
now, mostly due to it being a technology dead end.  If the human body would
only support a longer life, I might have time for more hobbies.  As it is, I
have to be selective.
*** DONE A Critique of Democracy: A Guide for Neoreactionaries
    - State "DONE"       from "STARTED"    [2017-03-19 Sun 16:25]
    - State "STARTED"    from "TODO"       [2017-03-17 Fri 02:39]
The more promising of the two NRx books I have on Kindle.  Will give this a
try, but with a finger hovering over the eject button.

This is actually very well written.  This writing would probably be better
served detached from a potentially ephemeral social movement.  I suppose my
only criticism is that it includes a large quantity of block quotes, mostly
from Democracy: The God that Failed, and that there still does exist some
blog-like editorializing.

Regarding its neo/corporate-monarchist/aristocracy position, it is hard to
argue with the reasoning here and I've generally been on this side of the
comparison to democracy for some time.  I particularly find such fundamental
analysis of incentives (intended or otherwise) to be an improvement over
ideology.  My main criticism is that this choice here is not a dichotomy, and
I'd like to see the same intellectual rigor put against a wider spectrum of
societal types.  Some Moldbug and other blogs exist on the subject, but these
(in my limited exposure) tend to be lazily dismissive.

Even if eloquently worded, part of me nonetheless hates reading polemics in
this genre.  That's due to any discussion about such things necessarily being
hand-wavy.  My conjecture is that what's lacking is a baseline simulation to
run objective experimentation in.  My thoughts are that a successful sim will
require a calculus of agent/system interaction, but that it's not unfeasible to
me that such could be developed iteratively and empirically along with the sim.
One would think that neoreactionaries, or at least Dark Enlightenment
worshipers of the Machine God, would appreciate this--that is, if their
objectivity stands as advertised.
*** CANCELED Democracy: The God that Failed
    - State "CANCELED"   from "TODO"       [2017-03-19 Sun 16:25]
A comparison of democracy and monarchy, where the latter is depicted as closer
to privately-run government.

Having read large excerpts of this text in A Critique of Democracy: A Guide for
Neoreactionaries, I'll go ahead and skip this.  From what I read, this does
seem like a good book, and is probably the superior of the two to read.
However, I've rather had enough of the subject for awhile.
*** CANCELED The Road to Serfdom
    - State "CANCELED"   from "TODO"       [2017-03-19 Sun 16:29]
Hayek's treatise against state control over economies.  I think I'll make this
the only political book I'll read for a very long time, perhaps forever.  Even
when I agree with it, I find politics super boring.  I've generally settled on
the idea that societies only need one or at most two rules to function properly
(a definition of private property and non-initiation of force) and that there's
really not much more of worth that can be said about it.

Canceling along with the rest of my remaining political books.
*** CANCELED Merriam-Webster's Dictionary of English Usage
    - State "CANCELED"   from "TODO"       [2017-04-01 Sat 02:27]
Supposedly the foremost tome for anyone interested in proper English grammar.

I thought I had a copy of this.  I guess not.  Will find something else in the
same category.
*** DONE Mastering Emacs
    - State "DONE"       from "STARTED"    [2017-04-09 Sun 04:06]
    - State "STARTED"    from "TODO"       [2017-04-09 Sun 01:23]
A 2015 book on The One True Editor.  Will read this, but it looks like there's
a lot of remedial stuff in here for me, so I'll skim sections full of things I
already know.

- M-x emacs-uptime
- M-x lunar-phases
- C-x 8 C-h: List all C-x 8 characters.
- M-m: Move to first non-whitespace char on line.
- C-M-f, C-M-b: Move forward/back by sexp.
- C-M-n, C-M-p: Move forward/back by list.
- C-M-u, C-M-d: Move up/down list.
- C-M-k: Kill sexp after point.
- M-a, M-e: Move begin/end sentence.
- M-k: Kill sentence.
- C-x r b, C-x r l, C-x r b: Add, list, jump to bookmark.
- C-M-s, C-M-r: Forward/backward regexp search.
- M-s o: Occur mode (list occurrences of string in file).  In the Occur buffer,
  you can also hit e to enter edit mode.  C-c C-c will save and exit edit
- C-M-%: query-replace-regexp
- M-%: query-replace.  Note: Use ^ go back to previous matches.
- M-x count-words, M-x count-words-region: Also gives line/char count.
- M-x flush-lines, M-x keep-lines: Regexp-based line filtering.
- C-h l: See lossage, which is the last 300 keys typed.
- M-x sort-regexp-fields: Use a pattern to sort regular data, like CSV data on
  certain fields.
- TRAMP with sudo: Use something like C-x C-f /sudo:root@localhost:/etc/fstab
  to edit a local file as root.  Might have to switch away from lusty-explorer
  if I want to use this though, since it seems to interfere with the TRAMP

A great book for beginners, though I picked up a several things too.  On the
author's advice, I'll take the time to properly learn everything dired-related
at some point.  I might also start using the various shell modes more too,
especially for running persistent applications from the shell.
*** DONE tmux Taster
    - State "DONE"       from "STARTED"    [2017-04-09 Sun 15:08]
    - State "STARTED"    from "TODO"       [2017-04-09 Sun 04:26]
A 2014 book on tmux.  I'll give my screen->tmux switch another chance by
reading this.

- C-a ?: Access the key binding reference.
- C-a : list-commands: List all command prompt commands.
- C-a ~: Show message buffer.
- C-a w: Show window list.
- C-a [: Copy mode.  vi keys work here, including searching.
  Use :<line-number> to jump to line.  q or ESC exits.  I have Emacs mode-keys
  enabled, so this means Emacs movement keys work, C-SPC sets mark, M-w copies,
  etc.  Once back out of copy-mode, use C-a ] to paste.
- C-a o: Cycle through panes.
- C-a q: Show pane numbers and sizes.
- C-a z: Toggles full-screening current pane.
- C-a SPC: Cycle through pane layout algorithms.
- C-a : setw synchronize-panes: Toggles synchronized input for displayed panes.
- C-a l: Go to last window.

Sloppy, blog-like writing.  There's actually a few bits of bad advice in here
too, typical of Ubuntu/OSx users.

However, since I was still a bit ignorant of tmux, reading this did help some.
I further tweaked my .tmux.conf file to cover and surpass the functionality
gap.  Unlike most tmux users, I'm going no status bar, except on muze.  I
skipped tmux copy buffer integration with clipboard, since those solutions are
*** CANCELED Founders At Work: Stories of Startups' Early Days
    - State "CANCELED"   from "TODO"       [2017-04-09 Sun 16:49]
Instead of endlessly reading stories on individual companies, this compendium
will hopefully give me a broader view of startups and help me decide on how
I'll approach the concept myself.  Will bail on individual stories that seem
not worth the time though.

Read some of this and it's too full of personal prattle of little-to-no
consequence.  These kind of stories were once enlightening to me, but having
read 100s of them, are just a waste of time now.
*** DONE Ascending the Tower (podcast)
    - State "DONE"       from "STARTED"    [2017-04-13 Thu 15:31]
    - State "STARTED"    from "TODO"       [2017-03-16 Thu 22:44]
An NRx podcast.  Not really into NRx, but I do like theory fiction.  Will give
this a try and bail if it's just politics.  At least listen to "Solo Climb 1 -
Gnon".  http://www.socialmatter.net/category/ascending-the-tower/

This is higher on the public discourse intelligence spectrum than, say, cable
television and mainstream print media.  At its best, it can be a good sampling
of new and interesting ideas, but the majority of the content consists of
editorial reactions to political and cultural current events, idle chatter, and
pseudo-intellectualism.  Ended up heavily culling the queue to exclude
particularly unpromising ones, to some effect.  Having concluded this task, I'm
going back to ignoring politics, current events, and mainstream culture.
*** DONE Version Control With Git (2nd Ed.)
    - State "DONE"       from "STARTED"    [2017-04-16 Sun 02:22]
    - State "STARTED"    from "TODO"       [2017-04-14 Fri 13:28]
A 2012 book on git.  Supposedly more narrative than Pro Git, though also less
useful as a reference as a result.  Very long, much exceeding my interest/need,
so I'll exclude a few chapters outside of scope.  Read chapters 1, 3-12, 14-15,
and 20.

- Use the double dash convention to split files from arguments, e.g., =git diff
  -w master origin -- file.c=.
- I set the GIT_EDITOR env var to emacsclient.  Now, =git commit -a= or =git
  commit filename= calls will open in my Emacs session.
- =git show= can display commit details.
- Keep all config settings in my master ~/.gitconfig file, instead of using
  calls to =git config --global=.  For repository-specific settings, do use
  this command, however, but exclude the global flag.
- Use =git log --follow filename= to track the pre-move history of a file that
  has been moved.
- Relative commit names:
  - Use ^ to specify parent where a name has multiple parents (such as in a
    merge), e.g. HEAD^2 for the second parent of HEAD.
  - Use ~ for walking up the tree depth-wise, e.g. HEAD~2 is HEAD's parent's
  - Either with no numeric parameter is equivalent to specifying 1.
  - The above can be combined to arbitrary depth.
  - These can be used almost anywhere, like =git checkout -b new-branch
    master^= will create a new branch from one commit behind master and switch
    to it.
- The workflow for =git bisect= is:
  - =git bisect start=
  - =git bisect good label_or_hash=
  - =git bisect bad label_or_hash=
  - Repeatedly issue =git bisect good= or =git bisect bad= commands to let the
    command determine the next commit to check.
  - =git bisect reset=
- =git blame -L 35, somefile= can be used to find who/when modification info
  about a line.
- =git checkout -m branch_name= will switch to a new branch while carrying over
  uncommitted changes.  -m isn't necessary if the carry-over is clean.  Note
  that a conflict might still need manual resolving.
- "Detached HEAD" means being on an "anonymous branch", which is any state not
  on a branch tip.  =git checkout branch_name= sends one back to a branch.
- Use =git branch -d branch_name= to delete a branch.
- =git branch -a= lists all branches.
- During conflicts, run =git diff= to show differences between the working
  directory and the index.
- Merging:
  - Normal merges: Checkout branch to merge to, run =git merge source-branch=
    to merge.  Add additional source
    branches if desired.
  - Conflicts will be marked as such.  Like with other conflicts, use =git add
    filename= as they are resolved.  Then do a =git commit= when done.
- =git reset --hard ORIG_HEAD= will discard commits not pushed to origin.  Also
  discards merges.
- Use the .. syntax for specifying a range of commits, e.g. =git cherry-pick
  X..Y= will pull in commits in that range to the current branch.
- Use =git rebase source_branch target_branch= to move all commits from a
  branch into another.  Good for catching a branch up to the latest.
- =git revert some_commit= creates a new commit that reverts a specific commit.
- The stash is a stack.  Use =git stash save= and =git stash pop= to push/pop
  from it.
- =git reflog show= shows a record of all transactions on HEAD (without a
  ref parameter).  Use =git show= on the refs listed for details.

An okay book, without any glaring issues.  Doesn't follow/mention the proper
 conventions for Git commit messages.  Very dry, but that can't be helped
probably.  I should have read it long ago when I switched to git, saving
learning a lot of this stuff the hard way.  Will try to pay tool overhead like
this upfront more often in the future.
*** DONE Docker in Action
    - State "DONE"       from "STARTED"    [2017-04-18 Tue 02:04]
    - State "STARTED"    from "TODO"       [2017-04-17 Mon 09:32]
A 2016 book on practical application of Docker.  Just read the first 3
chapters, then maybe skim the rest.  Skip chapters 11 and 12.  Don't study the
contents too closely, since some reviewers say the commands and technical
details are wrong and/or outdated.  If I really want to actually do stuff, I'll
just use a more up-to-date online resource instead of a book.

I might start using Docker on a GNU/Linux VM for a few things, like running a
web browser for doing bills/finance.  I don't feel a particularly pressing
need, however.

Anyway, I only read the first few chapters.  This was pretty dry and tedious,
and basically just a long-form manual.  Since it's already outdated, there's
not much point in reading it all.  I kinda get the underlying concepts now, at
*** DONE The Distracted Mind: Ancient Brains in a High-Tech World
    - State "DONE"       from "STARTED"    [2017-04-20 Thu 04:40]
    - State "STARTED"    from "TODO"       [2017-04-18 Tue 03:15]
A 2016 book on the neuroscience/psychology of distraction and multi-tasking.
I've tried to address this issue, going to lengths the average American
considers extreme.  These methods (at least in aggregate) seem highly
effective, but sanity-check my approach by reading this book.  Perhaps I'll
also get additional context for further improving my life in this area.

- Research indicates that stimulus-reward systems exist for humans, primates,
  and other higher mammals in the activity of information foraging.
- The perception-action cycle, mechanistic in simpler organisms, is interrupted
  in the human brain by highly-evolved neural processes that determine goals.
  These are called executive functions.
- Executive functions are hosted by the prefrontal cortex and include the pause
  mechanism, wherein stimuli response can be suspended to manage/enact complex
  goals.  Without the prefrontal cortex, one is at the mercy of animalistic
- Research shows that ignoring stimuli is an active process.  It takes
  resources to filter out the irrelevant.
- Even something as simple as looking at a picture or a face, decreases
  effectiveness at mental tasks, when the stimuli is non-relevant to the task.
  Stimuli type seems to not matter too, as irrelevant audio stimuli will have
  the same disruptive effect on visual tasks.
- As human brains age, their ability to suppress distraction decreases.  This
  is related to lower working memory performance.
- Use of distracting technology, like smartphones, is linked to lower GPA,
  increased anxiety, and lower life satisfaction.
- There is a connection between wavelengths of natural light and the human
  sleep cycle.  It might suggest it being healthier to have sunlight as a
  factor in one's sleep.  Screen time prior to sleep is also related to poorer
  sleep quality due to the light emitted.
- The three big "game changers" by the book's estimation are the Internet,
  smartphones, and social media.  In my case, only the Internet is a threat,
  but I'd also have to add video games to the list.
- Exposure to short reward cycles increases susceptibility to boredom.  Random
  reward cycles leads to behaviors resistant to extinction.

I find most of the suggestions in the book's final chapters to be highly
suboptimal.  I'll stick with my approaches, with some minor modifications
informed by the information here.  Some life adjustments to try:
- Try letting natural light be a factor in my day more.
- If reading before sleeping, favor the Kindle's e-ink screen + lamp to a
  monitor.  If using the laptop, keep it >14" away from the face and dim the
- Don't even have my email client open on my workstation.  Make it take a
  conscious effort to check it, which will mean I'll only do so a few times a
  day, max.
- Internal thoughts are a big source of distractions.  I benefit from a brain
  going in multiple directions, making deep connections, and generally coming
  up with ideas.  On the other hand, I also need extreme focus.  Since I don't
  want to sacrifice the former type, maybe just try to filter for the helpful
  interruptions and quickly discard useless ones like a notion to check email.
  Another strategy I already use is to note task branches to come back to
  later.  This seems super effective.
- In line with the above, consider using org-capture.el.
- Be wary of activities with short reward cycles.  Many video games have these
  (i.e., constantly collecting coins) and should be avoided.  In fact, all
  artificial reward systems should probably be avoided so as not to condition
  the brain for operating in distorted realities.
- Generally: Ignoring active distractions has a cost, but is usually a net
  benefit if their presence can't be helped.  Even better is being away from
  them altogether though.  The human brain can't get substantively better at
  multi-tasking, so it's not worth trying.
- The exception to the above is video games with management of multiple
  simultaneous goals.  These appear to help quite a bit.  Keep in mind the
  previously mentioned issues about rewards when selected games, however.
  Also, only a very small number of hours of games interaction is needed to get
  this benefit.
- Exercise seems unquestionably helpful in this regard.  I already do this, but
  this is another good reason to continue.

This book is at its best when talking neuroscience, and weakest when in the
weeds of technology (as it's obviously written by non-technologists).  While
some of the technology-centric models are less than stellar, I still think they
mostly draw the right conclusions due to being correct enough where it counts.

As expected, the final conclusions drawn about what to do about these issues
are quite terrible.  Psychological models tend to have problems when schemes
are devised to apply them in practice.  I have a working model already, so I'll
just let the hard data here inform it in areas where conjecture ruled.
*** DONE The Rising Sun: The Decline and Fall of the Japanese Empire
    - State "DONE"       from "STARTED"    [2017-06-19 Mon 18:20]
    - State "STARTED"    from "TODO"       [2017-06-12 Mon 22:15]
Supposedly the best book on the topic, told from the Japanese perspective.

A very entertaining read and very well researched.  Delivers on its promise of
an inside look from the other side.  Not a complete narrative of the course of
the war in the Pacific theater, but I guess that's not the goal of the book.
*** CANCELED At Our Own Peril: DoD Risk Assessment in a Post-Primacy World
    - State "CANCELED"   from "TODO"       [2017-09-08 Fri 20:21]
A June 2017, 145-page paper from the Strategic Studies Institute on grand
defense strategy.

Looks like both the MOBI and EPUB versions of this document are messed up.  The
PDF version works, but I was planning on reading this on the e-reader while
commuting.  Not interested enough in it to read with my at-home time.
*** DONE The Cuckoo's Egg: Tracking a Spy Through the Maze of Computer Espionage
    - State "DONE"       from "STARTED"    [2017-09-14 Thu 06:25]
    - State "STARTED"    from "TODO"       [2017-09-12 Tue 21:41]
A recounting of tracking down an intruder on the LBNL network.  I read an
excerpt of this back in the 90's and found it interesting.  However, I was also
easier to impress back then.

A little weak on some of the technical details and some descriptions and
explanations are a bit off.  Also, I hate hippies, even ex-hippies, and the
mundane aspects of the author's life can be safely skimmed.

Apart from that, it's a good narrative, though I doubt all the details are
completely accurate, since some ring a bit embellished.  For example, some of
the government-speak doesn't make sense and is completely unheard of by me as a
defense contractor.  Like the Agency referring to The Fort as "the Northern
entity", whereas Ft. Meade is to the east of Mclean, VA.  Lots of oddities like
this abound.

Fun fact: Robert Morris, a former chief scientist at the NSA, collaborated on
this case.  He's also the father of the author of the Morris Worm.
*** DONE Superintelligence: Paths, Dangers, Strategies
    - State "DONE"       from "STARTED"    [2017-09-28 Thu 20:57]
    - State "STARTED"    from "TODO"       [2017-09-14 Thu 06:25]
The popular book on superintelligent AI by Nick Bostrom.  Though I disagree
with the conclusions many are drawing about this topic via following this line
of thinking, I'll give it a chance.  Will bail if it's too pop-science.

This is actually an excellent book.  Content-dense, it also does a great job of
rolling up a lot of information at outline depth.  I do have a few qualms about
its message, however, though they are generally minor.
*** DONE Healing the Angry Brain
    - State "DONE"       from "STARTED"    [2017-10-06 Fri 02:28]
    - State "STARTED"    from "TODO"       [2017-09-28 Thu 20:59]
A neuroscience-based approach to discussing being controlled by unhelpful
emotion.  Was going to skip this, but taking a peek into it, I found the
content quite good.

This starts great, but devolves into squishy self-help full of blog-like
personal experience ramblings.  Put up with it as long as I could, but had to
bail about 66% in.  It's always a shame to see how sloppy this field gets, once
you cross over from neuroscience into psychology.
** Fiction
*** DONE Red Storm Rising
    - State "DONE"       from "STARTED"    [2017-01-14 Sat 02:35]
    - State "STARTED"    from "TODO"       [2016-12-15 Thu 08:10]
Will give a Clancy novel a try.  This one is stand-alone, and seems the most
appealing of his bibliography.  I think I read part of this long ago, but never

As expected, Clancy has done his research on US and Russian equipment, tactics,
and military culture.  Clancy has also thought deeply about how certain kinds
of military encounters might play out.  The results are highly realistic.  All
stuff related to these points is a rare pleasure to read, and there really
aren't any other viable options if you want realistic, cold war, military

Alas, whenever he ventures out of those areas he excels at, the writing becomes
rather standard dime novel quality.  The reader is advised that he can safely
skim over love stories and pointless personal drama, since they really don't
affect the core story--just as they wouldn't in real life.  The only other
downside is the jarring switching of scope, where we go from the strategic to
squad level from one chapter to the next.  Clancy is best when he keeps it high

I might consider reading his book "SSN", since he seems at his best with cold
war naval scenarios.  That's also likely to avoid the level of abstraction
issues faced here.
*** DONE Station Eleven
    - State "DONE"       from "STARTED"    [2017-01-21 Sat 03:48]
    - State "STARTED"    from "TODO"       [2017-01-14 Sat 21:15]
A scifi book about a biological pandemic, an unexplored sub-genre for me.  Will
give it a try.

Well done in some ways, but also spends way too much time on personal drama and
feelings, all to no end.
*** DONE The Outward Urge
    - State "DONE"       from "STARTED"    [2017-01-25 Wed 11:01]
    - State "STARTED"    from "TODO"       [2017-01-21 Sat 04:31]
A collection of short stories comprising a complete narrative.  Supposedly hard
scifi.  Written by John Wyndam, who is more well known for The Day of the

Okay, but somewhat unremarkable.  Didn't age well in some respects.  Follows a
single familial line through the ages, to no real end.
*** DONE Starship Liberator
    - State "DONE"       from "STARTED"    [2017-02-04 Sat 13:16]
    - State "STARTED"    from "TODO"       [2017-01-26 Thu 00:41]
A military scifi novel about a conflict between humans and aliens, where the
aliens vastly outnumber the humans.  Might be crap.

Very low quality storytelling (with quality decreasing further as the story
progresses), but a mildly interesting universe.  A better story would've been
the same conflict, told from a naval perspective.  We see some hints of this,
so with a little extra thought on the matter, the author might've been capable
of it.  This is the first in a series, with the other books not yet out.
*** DONE Howl
    - State "DONE"       from "STARTED"    [2017-02-07 Tue 18:33]
    - State "STARTED"    from "TODO"       [2017-02-07 Tue 02:09]
The poem by Allen Ginsberg.  I read this in college, but I'll give it a quick
reread, now that I'm a grownup and unlikely to defer to institutional esteem
for an author.

The premise here is that industrial society, or the system, or whatever,
represented by Moloch, is responsible for grinding up the otherwise promising
lives of artists, drug addicts, pedophiles, etc.  At the same time, the poem
celebrates said lives as they are, in flowery, obscurantist verse that
obviously was extensively labored over.  In the end though, this is garbage,
conveying no real information.  I would even argue that the main point here is
incorrect, as evidenced by modern, post-industrial society.  Finally, while a
lot of this was hip and cutting edge at the time, full of contemporary pop
culture references, much hasn't aged well.

Ginsberg is also a degenerate himself and a child molester.  Here, his
depravity is on full display, and if anything, should only serve as a example
of poor life management and basal urges left to run amok.  Reject sloppy
thinking and poetry, kids, and sign up for that computer science class.
*** DONE Micro
    - State "DONE"       from "STARTED"    [2017-02-15 Wed 03:33]
    - State "STARTED"    from "TODO"       [2017-02-08 Wed 10:10]
One of the posthumous Michael Crichton novels.

I was rather hoping this was a story about microbiology.  Turns out to be more
of a semi-hard scifi version of "Honey, I Shrunk the Kids".  In some ways, the
scale and reality of insect life is portrayed well.  Apart from that, this is
standard action/thriller-style writing typical of Crichton.  Many very
predictable things transpire.  Worst is executing the trope where we start off
with a large group of people (particularly college kids, as is the case here),
and then kill them off one by one in non-repeating ways.
*** CANCELED Hellfire
    - State "CANCELED"   from "STARTED"    [2017-02-16 Thu 02:29]
    - State "STARTED"    from "TODO"       [2017-02-15 Wed 19:59]
A thriller novel involving the Islamic State, by British military fiction
author Chris Ryan.  Might be crap.  This is the third in a series involving the
main character, but he seems pretty stock so I doubt that matters much.

Read into this about 7% and am bailing.  Reads like a B-grade action movie.
*** DONE Seveneves
    - State "DONE"       from "STARTED"    [2017-03-14 Tue 05:01]
    - State "STARTED"    from "TODO"       [2017-02-16 Thu 23:09]
A new Stephenson novel, post-apocalyptic in style.

Some decent hard scifi.  Could be a contender for one of his better novels, but
is nearly ruined by too many flaws, including:
- This commits the unforgivable error of constant references to social media
  applications popular in 2016, guaranteeing it will age poorly.  These also
  don't make any sense here, as the story is set at least a good 30 years in
  the near future, and probably much more (judging from robot technology),
  making their appearance all the more awkward.
- Includes sex scenes and romance content irrelevant to the plot.
- Constantly cycles on a trope where a hasty, yet clever, improvisation saves
  the day.  In fact, that's pretty much how all resolution comes about.
- Often boring and tedious in places.  Repetition is also too common.
- The entire latter half of the book is significantly poorer in quality than
  the first.  Standalone, it wouldn't be worth reading.

Most of the major annoyances cease about 60% in, but that's replaced by the
tedious boredom.  I guess I don't regret reading this, since there are some
good parts, but the bad parts really make this one borderline.
*** DONE Sum: Forty Tales from the Afterlives
    - State "DONE"       from "STARTED"    [2017-03-17 Fri 00:39]
    - State "STARTED"    from "TODO"       [2017-03-16 Thu 15:47]
Conjecture about different kinds of afterlife scenarios.

This is a compendium of super short scenarios that read like someone
brainstorming for ideas for some other work that didn't go anywhere.  Quit
after getting about third in, having yet to find any compelling content.
*** DONE Eden
    - State "DONE"       from "STARTED"    [2017-04-14 Fri 02:10]
    - State "STARTED"    from "TODO"       [2017-04-03 Mon 02:37]
Another Lem novel, in his series of standalone novels pessimistic about first
contact.  Side note: Use the kindlegen utility for converting epub files to

Uninspired, and probably the weakest of the Lem novels I've read.  A lot of
nothing happens in this book, despite a setting with a lot of possibilities.
The theme is weakly implemented, since we have communication possible (and also
not very interesting) and the only distance being societal and linguistic.
*** DONE The Principia Discordia
    - State "DONE"       from "STARTED"    [2017-04-17 Mon 07:46]
    - State "STARTED"    from "TODO"       [2017-04-17 Mon 02:06]
Meant to read this long ago, but never got around to it.  Will decide if I want
to go around saying "Hail Eris" and "fnord", giggling to myself.  Have a mobi
copy on Kindle.

If I find this compelling, there's a whole series of Discordia-related texts
one could read: https://en.wikipedia.org/wiki/List_of_Discordian_works

Mildly amusing at times, but also often boring.  Not really that funny overall.
Humor is of the style used in Catch-22 (though not as well done), in that the
authors more enjoy word-play and quirkiness over actually clever content.  This
could also use a rewrite/update, as some content here hasn't aged well.
Discordianism is more interesting conceptually than fleshed out.  Will give
this stuff a pass in the future.
*** DONE A Deepness in the Sky
    - State "DONE"       from "STARTED"    [2017-05-13 Sat 21:24]
    - State "STARTED"    from "TODO"       [2017-04-24 Mon 01:07]
A Vinge novel and prequel to A Fire Upon the Deep.  Read on Kindle.

Very lacking in creativity on the ETI civilization.  The far future human
diaspora is good in some ways, mediocre in others.  This fictional universe has
a few compelling aspects to its vision, but they aren't really explored much
here.  Pacing is plodding and full of non-consequential content.  Ending is a
little predictable.
*** DONE The Invention of Morel
    - State "DONE"       from "STARTED"    [2017-06-22 Thu 01:28]
    - State "STARTED"    from "TODO"       [2017-06-20 Tue 01:33]
Supposedly a really good scifi novel from 1940.

I find this novel's acclaim unfounded.  The plot includes several holes.  For
example, there's no explanation for supposed others who have died from being on
the island.  Only nominally scifi.
*** DONE Brain Wave
    - State "DONE"       from "STARTED"    [2017-06-25 Sun 23:03]
    - State "STARTED"    from "TODO"       [2017-06-22 Thu 01:28]
A Poul Anderson novel about biological superintelligence.

Rather weak and with a lot of issues.  The premise is interesting, but is
somewhat squandered.  Most disappointing is that no one actually does or says
anything particularly intelligent in the novel.  The best we get is narration
of them supposedly doing those things.
*** DONE The Saturn Game
    - State "DONE"       from "STARTED"    [2017-06-28 Wed 17:07]
    - State "STARTED"    from "TODO"       [2017-06-26 Mon 01:30]
A Poul Anderson novel emphasizing the length of interplanetary travel.

Actually this is more focused on imagination taking over perception of reality.
This book's premise is interesting and plausible, but would be hard to do
right.  Anderson is capable of excellence, and that's almost evident here in
isolated places.  Unfortunately, the execution often lets me down, as is the
case here.  This one is the worst of his that I've read.
*** CANCELED The Killing Star
    - State "CANCELED"   from "TODO"       [2017-07-01 Sat 10:27]
A 1995 hard scifi novel about a large set of speculative ideas.

Not available as an e-book, and apparently out of print.  Therefore, it's a bit
too expensive for a 340 page novel of unknown quality.
*** DONE The Crying Lot of 49
    - State "DONE"       from "STARTED"    [2017-07-04 Tue 02:17]
    - State "STARTED"    from "TODO"       [2017-06-28 Wed 17:26]
Apparently a parody of postmodernism, though modern adherents seem to be
oblivious to that.  Maybe read Gravity's Rainbow after this if I like it.

Well written and sometimes a pleasure to read, but ultimately devoid of purpose
or reward for effort.  While the author is extremely talented, he sometimes
expends energy in directions that either are full of old pop culture references
that haven't aged well, pointless and just a waste of time to read, or akin to
a poem someone worked hard on that just doesn't quite work out.  Remove the
eloquent prose, and this story isn't anything special.  In fact, I'd say it's
broken in numerous ways.  I'll still give Gravity's Rainbow a try, since
supposedly that is better.
*** DONE There Will Be Time
    - State "DONE"       from "STARTED"    [2017-07-08 Sat 21:02]
    - State "STARTED"    from "TODO"       [2017-07-05 Wed 02:08]
Another potentially interesting novel from the Anderson bibliography.  It is,
however, based on time travel, which tends to result in lame reads.

Only okay.  I could see this premise being used to greater effect, but as is,
there's not enough here.  Minus additional points for having primeval SJW
social conditioning content.
*** DONE The Lost Fleet (reread)
    - State "DONE"       from "STARTED"    [2017-08-08 Tue 21:28]
    - State "STARTED"    from "TODO"       [2017-07-18 Tue 23:17]
Re-reading this 6 novel series to refresh my memory for Beyond the Frontier.
Skimming the silly parts.

I actually enjoyed rereading this.  Skipping the personal drama and romance
helps a lot, as it's completely detached from the central content.
*** DONE Beyond the Frontier series
    - State "DONE"       from "STARTED"    [2017-09-08 Fri 23:10]
    - State "STARTED"    from "TODO"       [2017-08-09 Wed 23:22]
A continuation of the military scifi series The Lost Fleet, which I appreciated
the depiction of space combat in.
- Dreadnaught: Some okay content.  Information revealed about the long awaited
  alien race falls very short of interesting though.  I haven't seen an example
  of well done aliens and military-scifi, so this is no surprise.
- Invincible: More pretty terrible alien race design.  However, everything else
  unique about this one is pretty decent.
- Guardian: Occasionally interesting, but less so than the previous novels.
  This is perhaps due to the smaller scale/scope of the conflict arch depicted.
- Steadfast: More of the same, mainly.
- Leviathan: More of the same, mainly.  Ending was adequate, but nothing

Worth reading, as it continues to capture the naval combat feel unique to these
books.  Definitely less focused than the previous series, and feels a bit
aimless as a result.
*** DONE The Listeners
    - State "DONE"       from "STARTED"    [2017-09-11 Mon 02:51]
    - State "STARTED"    from "TODO"       [2017-09-09 Sat 02:09]
Another message from space novel, and actually the only other major one I
haven't read yet.

Turns out I had read this before, back in 2012.  However, I do have a new
appreciation for some of its content.  Some parts within are extremely
well-written, able to be appreciated as simply as well-worded prose.  Other
parts, less so, and there's definitely too much content ancillary to the reason
we're supposedly reading a book about this topic.  Fundamentally though, I
don't think there's any truly great ideas here that haven't been thoroughly
explored or come up with elsewhere.  For its time, this would've been an
excellent compendium of modern thought on the matter.
*** DONE Cold as Ice series
    - State "DONE"       from "STARTED"    [2017-11-14 Tue 01:25]
    - State "STARTED"    from "TODO"       [2017-10-26 Thu 08:14]
A hard scifi series.  At least the first novel is primarily a mystery.
- Cold as Ice: Rather generic and meandering.  Occasionally competently-written
  but totally forgettable overall and lacking anything resembling an
  interesting plot.
- The Ganymede Club: About the same.  Also very forgettable.
- Dark as Day: Even more of the same.  This one's probably slightly better than
  the others, but not by much.

Decent world creation.  I particularly like the vision of a populated outer
system, which seems very believable.  All books are mystery stories that follow
the same format, with a big reveal scene at the end.  While the books mostly do
a pretty good job of converging a lot of different threads, the reveals aren't
particularly interesting and pretty predictable.  The body of these novels is a
lot of uninteresting happenings, most of it of little consequence.
*** DONE Remembrance of Earth's Past trilogy
    - State "DONE"       from "STARTED"    [2017-12-03 Sun 21:46]
    - State "STARTED"    from "TODO"       [2017-11-14 Tue 13:28]
A hard scifi series originally in Chinese, supposedly competently translated
into English.
- The Three-Body Problem: A great read, and nearly everything one might want
  from a hard scifi novel involving aliens.  Lots of original ideas.
- The Dark Forest: Another excellent read with more original ideas.  This one
  might even be better than the previous novel, though it does have a few
  oversights on reality due to the author being Chinese (incorrect info about
  firearms, mischaracterizing the US at times, etc.).
- Death's End: More disconnected than the previous two entries.  Some sections
  are top quality, others only so-so.

Possibly my top read of this year.  Will have to keep an eye on everything from
this author, Cixin Liu, from now on.
*** DONE Lungfish
    - State "DONE"       from "STARTED"    [2017-12-04 Mon 02:52]
    - State "STARTED"    from "TODO"       [2017-12-04 Mon 01:09]
A short story by David Brin about the worst case explanation to the Fermi
paradox, similar to The Forge of God and Remembrance of Earth's Past.

Turns out I'd already read this, long ago.  Has supposedly super-intelligent
ETIs saying and thinking dumb stuff, and kind of just ends without going
*** DONE Admiral series
    - State "DONE"       from "STARTED"    [2017-12-27 Wed 00:02]
    - State "STARTED"    from "STARTED"    [2017-12-27 Wed 00:02]
    - State "STARTED"    from "TODO"       [2017-12-19 Tue 00:21]
Also called the Evagardian series.  Another military scifi series with mystery
- The False Admiral: Also just called "Admiral".  Starts as a promising setting
  with a compelling mystery.  As the reveals come forth, the quality degrades
  significantly, culminating in cheap action sequences.  Like most mysteries,
  the fatal flaw here for me is that there's not enough information for the
  reader, regardless of how clever, to have any hope of hypothesizing on his
  own.  I only managed to half-guess the identity mystery, and the rest was
  completely random.
- Free Space: Absolutely terrible.
** Technology/software
*** CANCELED cabal-dev
    - State "CANCELED"   from "TODO"       [2017-01-09 Mon 08:52]
Allows per-project package databases that resolves most of the dependency hell
issues rampant in Cabal.  This will be added to normal cabal-install soon, so
if I don't get to this in awhile, no big deal.


Canceled due to switching to stack.
*** CANCELED Emacs Hoogle integration
    - State "CANCELED"   from "TODO"       [2017-01-09 Mon 08:53]
Use the command line Hoogle version.  Bind this to C-c C-d d.

Redoing all Haskell Emacs setup around Intero.
*** CANCELED hasktags
    - State "CANCELED"   from "TODO"       [2017-01-09 Mon 08:53]
Allows for navigation to Haskell function definition within Emacs.  Install via
cabal, then add this to init:

#+BEGIN_SRC emacs-lisp
(let ((my-cabal-path (expand-file-name "~/.cabal/bin")))
  (setenv "PATH" (concat my-cabal-path path-separator (getenv "PATH")))
  (add-to-list 'exec-path my-cabal-path))
(custom-set-variables '(haskell-tags-on-save t))

Canceled due to switching to stack.
*** CANCELED hindent
    - State "CANCELED"   from "TODO"       [2017-01-09 Mon 08:54]
Allows for auto-indentation of Haskell code.  Requires both hindent-mode for
Emacs and the hindent cabal package.  Not sure if this would replace the need
for a normal indent mode (hi2, in my case) for Haskell.

Redoing all Haskell Emacs setup around Intero.  We'll see how it handles
indenting before trying to customize.
*** DONE update Emacs to 25.1.1
    - State "DONE"       from "STARTED"    [2017-01-03 Tue 23:55]
    - State "STARTED"    from "TODO"       [2017-01-03 Tue 14:45]
My default setup is broken in new Emacs.  Might as well take the opportunity to
give everything a full audit while fixing this.

Stuff changed:
- Changed my load list addition from ~/.emacs.d to ~/.emacs.d/lisp, as per the
  modern standard.  This lets Emacs write to ~/.emacs.d and that code won't be
- Removed google-maps.el.
- Removed malyon.el.
- Removed psvn.el.
- Removed darcsum.el.
- Updated lusty-explorer to use GitHub version.
- Modified the package.el code to properly load stuff from ~/.emacs.d/elpa,
  which is no longer explicitly on the load-path.

Reminder: If starting over with a clean elpa directory, update the package list
before trying to install stuff.  It'd been awhile since doing this, and I'd
forgotten that part.
*** CANCELED further Emacs Haskell setup
    - State "CANCELED"   from "TODO"       [2017-01-03 Tue 23:56]
This guy has some good ideas: https://github.com/chrisdone/emacs-haskell-config

Note that I might switch to Intero+stack first, negating this task.

Canceling due to the death of Cabal.
*** DONE update netbook to FreeBSD 11.0
    - State "DONE"       from "STARTED"    [2017-01-04 Wed 00:02]
    - State "STARTED"    from "TODO"       [2016-12-31 Sat 10:42]
11.0 is now out.  Start with netbook.  Probably will do workstation next, but
splitting the task in case I don't get to it by the time 11.1 is out.  Be sure
to copy all config files off netbook.

Note to self: the wireless commands I often recall from my command history are:
- sudo ifconfig wlan0 up scan
- sudo vi /etc/wpa_supplicant.conf
- sudo service netif restart

Updated freebsd-setup.org with the latest knowledge.  Will next follow these
steps to make a VM with all services enabled for updating my main workstation.

Note that updated .emacs, .emacs.d, .xinitrc, and a few other config files only
exist on the netbook at the moment.
*** DONE stack
    - State "DONE"       from "STARTED"    [2017-01-05 Thu 22:04]
    - State "STARTED"    from "TODO"       [2017-01-01 Sun 18:21]
A ground-up rethink of Cabal (the tool).

Read the project wiki and also this explanation of the project:

Cabal seems to be a neglected mess now, so I can't really put this off.
Following the guide here: https://haskell-lang.org/get-started

- Be sure to note the FreeBSD-specific setup notes:
- Install with: curl -sSL https://get.haskellstack.org/ | sh
- Full setup detailed in freebsd-setup.org.

Workflow for project creation:
- stack new my-project
- cd my-project
- =stack build= to compile the project.
- Edit the various project settings in my-project.cabal.
- =stack exec my-project-exe= to execute the command.  This symbol is defined
  in my-project.cabal.
- =stack install my-project= to install an executable to ~/.local/bin.
- =stack ghci= within the project directory will also pull up a REPL against
  it, defaulting to the library section's exposed-modules, I think.
- =stack test= to run tests.

Note that stack, like with cabal, doesn't have a path for upgrading or
uninstalling things.  At some point, one might want to wipe the install and
start over, I guess.

This now works enough to do plain, non-integrated Haskell development.  Will
add Emacs integration next.
*** DONE create FreeBSD 11.0 test VM
    - State "DONE"       from "STARTED"    [2017-01-10 Tue 20:17]
    - State "STARTED"    from "TODO"       [2017-01-05 Thu 22:08]
After fixing all the broken stuff from upgrading on my netbook, follow the
updated instructions in freebsd-setup.org.  Add the various server-like
services that I skip on the netbook, and further update everything accordingly.
Keep this VM around as normal for testing source upgrades later.

Did most of this.  The VMware tools being not available for this version yet is
slowing me down and I'm wasting a lot of time with my Xorg tweaking, so I'll
just risk going for it.
*** DONE update Samba on FreeBSD
    - State "DONE"       from "STARTED"    [2017-01-13 Fri 01:38]
    - State "STARTED"    from "TODO"       [2017-01-13 Fri 00:12]
Samba 3.6, which I've used until now, has numerous security holes.  Update to

Samba is way more complicated than it needs to be for my needs.  Instead of
wasting weeks reading all the docs on it, I'm just following the guide here:

Got this working.  Will defer the printing stuff until I redo CUPS, as I might
not get to this until after I move due my printer being on another computer
*** DONE Intero
    - State "DONE"       from "STARTED"    [2017-01-14 Sat 23:32]
    - State "STARTED"    from "TODO"       [2017-01-14 Sat 22:43]
Supposedly the complete everything for integrated Emacs development in Haskell.
Requires stack, which I have recently switched to.

Be sure to redo the non-diminish mode line shortening.  My previous
haskell-mode and hi2 setups are now removed.

Has some dependencies, including company, haskell-mode, and flycheck.

- Create a new project with =stack new intero-demo=.
- Navigate to one of the files, e.g. intero-demo/app/Main.hs.
- intero-mode should auto-start if I've set it up correctly.  If not, run M-x
  intero-mode.  If this is the first time running it on a new stack setup, then
  this will take awhile for intero (the Haskell package) to install.
- Once intero-mode is active on the project, use C-c C-l to launch a REPL.

- M-. and M-,: Navigate to/from definitions.
- C-c C-i: Get info on symbol.
- C-c C-t: Check type of symbol.
- C-u C-c C-t: Insert type signature.
- C-c C-z: Switch to/from REPL.
- C-c C-l: Reload file.

This really works great.  With this and stack, it seems we finally have a
decent development environment for Haskell, or close enough to it.
*** CANCELED revisit Haskell flymake setup
    - State "CANCELED"   from "TODO"       [2017-01-15 Sun 00:17]
My Haskell flymake setup works okay, in certain situations.  There are some
problems though:
- Dangling filename_flymake.hs files are left littered around my directories.
- flymake doesn't seem to work at all on some systems.  I suppose I'd be okay
  with it only working on FreeBSD and GNU/Linux, but it'd be nice to have the
  option of using it anywhere.
- It doesn't work with Cabal-managed projects.

I may even consider disabling it altogether.  Haskell doesn't really need
on-the-fly syntax checking as much as other languages.


Canceled, since Intero includes flycheck.
*** CANCELED use Terminus fonts on vt in FreeBSD
    - State "CANCELED"   from "TODO"       [2017-01-15 Sun 00:30]
vt is great and all, but the text size is a bit small at native resolution.
Might as well make use of it to get some nice looking fonts in the size I want.

vidcontrol returns an ioctl error.  Not a big deal since I'm hardly ever on the
*** DONE redo Emacs/system Scheme setup
    - State "DONE"       from "STARTED"    [2017-01-15 Sun 01:32]
    - State "STARTED"    from "TODO"       [2017-01-15 Sun 00:02]
Racket seems to have won the Scheme language wars.

- [X] Switch from gauche to lang/racket-minimal.
- [X] Setup Emacs to use Geiser: http://www.nongnu.org/geiser
- [ ] Maybe port over all of my existing SICP code to Racket.

- Racket comes with a package manager/build tool, called raco.
- Since I only installed racket-minimal from ports, fill out the rest of the
  environment locally.  Run =raco pkg install drracket=.  Note that this writes
  tmp data to /var/tmp, so make sure there's enough room.
- See raco documentation here: https://docs.racket-lang.org/raco/
- racket-mode should be enabled for .rkt files.
- ~/.racket/6.7/bin added to $PATH.
- Enabled paredit in scheme-mode.
- Activate the REPL with M-x run-geiser and enter "racket" as the

I don't want to go too nuts with this now since I'm not using it currently.
The main goal here was to deprecate Gauche and naked scheme-mode.  I'll do the
SICP stuff later.
*** CANCELED emacs-eclim
    - State "CANCELED"   from "TODO"       [2017-01-15 Sun 01:45]
This is the Emacs interface to Eclipse functionality provided in a
client-server manner.  With the stagnation of the two full Emacs Java
environment attempts and the core language plans to enter a faster, .Net-esque
release cycle of new features, I am starting to see this as the only plausible
way full base Java functionality will ever be maintained in Emacs.  The big
downside here is that it requires an Eclipse install, which means I won't be
putting it on my dev workstation.  If I decide to use this, enable it just in
GNU/Linux (which I only use on VMs) and maybe default to java-mode on FreeBSD.


Canceling.  If I'm writing Java again, there's something that's gone horribly
wrong in my life.
*** CANCELED install GHC from source
    - State "CANCELED"   from "TODO"       [2017-01-15 Sun 01:46]
Using the ports version of GHC is handy, but it trails the latest in Hackage
too far.  Thus, using the latest versions from Cabal constantly have base
dependency issues (Agda almost never works).  Also install Darcs and all other
Haskell software from Cabal as well.  Update freebsd_setup.org with new source
install procedure.  I may want to try this on a VM first.

Canceled. Essentially, this is what stack does, handling all mess.
*** CANCELED uzbl
    - State "CANCELED"   from "TODO"       [2017-01-15 Sun 01:48]
Check out this web client as a possible Conkeror replacement.  The main
downside for me is probably its vim-based command keys and non-programmable
config file.  But, if it's significantly faster, it could be worth it.  I've
used this a little on GNU/Linux and I definitely like its modeline better,
though I'm still not completely sold on it.  Most importantly, I'd lose the
ability to have custom functions.  I'm not sure I could live without

Apparently, it's possible to rebind all the keys, so I should look to see if
someone's created an Emacs config for it.  I should also look for blocklists
for adblock.js, as recreating this myself would be a real pain.

Canceling for now, since it looks like Conkeror is going to continue working
for the foreseeable future.
*** DONE update workstation to FreeBSD 11.0
    - State "DONE"       from "STARTED"    [2017-01-15 Sun 03:14]
    - State "STARTED"    from "TODO"       [2017-01-11 Wed 02:03]
Will use netbook and my dev VM as my primary work environment while this is in
progress.  One thing I'll have to address here is Conkeror being so broken.

Some notes:
- Fixed Conkeror, updated to the latest source, and even got a modern version
  of Adblock working.  All known Conkeror bugs/annoyances seem to be fixed now,
  like GitHub pages clobbering my keybindings.
- Updated config to latest version of MySQL.  Note that the config file
  location has changed and that remote access requires a change from the
  default setting.
- Updated to latest Samba and made new config file.
- Deprecated PHP from Lighttpd.
- I never noticed this before, but apparently my workstation doesn't have a
  3.5mm audio output.  If I hook up my old monitor + sound bar some day.  Sound
  should work if I do that, I guess.
- Skipped printer setup this time since it's not in my room anymore.

Pretty much got everything working perfectly with no cheap hacks and no
annoyances I have to live with.
*** CANCELED hbro
    - State "CANCELED"   from "TODO"       [2017-01-15 Sun 10:38]
A uzbl-like web client written in Haskell.  Has some fatal bugs currently and
no Adblock, so check back in a few months.


Canceled.  Judging from the commit history, it doesn't look like this project
reached critical mass (or any mass for that matter).
*** DONE update Magit
    - State "DONE"       from "STARTED"    [2017-01-15 Sun 23:41]
    - State "STARTED"    from "TODO"       [2017-01-15 Sun 23:27]
I previously pinned the Magit commit to accommodate older Emacs versions.

- Modern Magit requires dependencies dash and with-editor.  dash is already
  installed for some of my ELPA packages.  with-editor, I installed manually
  via git.
- Modern Magit hates package git-modes, so I moved it to ~/src/var/elisp/unused
  in case I have to resurrect this setup for a work VM.

Seems to work great.  I like the new color schemes too.
*** DONE aggressive-indent
    - State "DONE"       from "STARTED"    [2017-01-20 Fri 00:53]
    - State "STARTED"    from ""           [2017-01-20 Fri 00:37]
Always keep my code indented while editing.

This mode will save a ton of grunt-work.  Enabled it globally for now.  Major
modes can be blacklisted from it, so I'll keep an eye out for ones I don't want
it on for.  For now, I can't think of anywhere I wouldn't want it.
*** DONE systemd
    - State "DONE"       from "STARTED"    [2017-01-25 Wed 22:51]
    - State "STARTED"    from "TODO"       [2017-01-25 Wed 12:35]
systemd has replaced init in most of the main Linux distros.  Read up on what
it's all about.  Future versions of the Linux variants I use will all have it.

The pejorative "Poetterware" has been used to describe this kind of software.
The criticisms of systemd are rather numerous, and I tend to agree with them.
It'd be a real shame if Linux keeps moving in this direction.

- /etc/systemd/system has symlinks to various scripts for startup.  These are
  stored in /usr/lib/systemd/system.  Use =systemctl= to enable stuff.
- systemctl can also start, stop, and restart services.
*** DONE Eastwood
    - State "DONE"       from "STARTED"    [2017-01-29 Sun 03:46]
    - State "STARTED"    from "TODO"       [2017-01-29 Sun 02:51]
A Clojure linter.  Among other things, this includes a checker for unused
namespaces, which was my main impetus for using it.

Just add this to profiles.clj and run =lein eastwood=.  I also enabled the
unused namespaces and unused locals checks, which are off by default.

Editor integration exists.  I'll use this for awhile and decide whether I want
to do that, like I did with kibit.  If so, check out squiggly-clojure.  I can't
use that currently, however, due to not all code being side-effect free.  This
might also be super slow on my machine.

In the meantime, M-x compile, followed by =lein eastwood= will give a properly
linked compilation buffer.
*** DONE replace pretty-symbols with prettify-symbols-mode
    - State "DONE"       from "STARTED"    [2017-01-29 Sun 13:44]
    - State "STARTED"    from "TODO"       [2017-01-29 Sun 13:10]
This will require pushing all of the symbols to replace into
prettify-symbols-alist.  See pretty-symbols.el for the ones I want to keep.
Now that this is built into Emacs, there's no need for the external mode.

Switched to using Unicode characters directly in my init file.  Only set it up
for haskell-mode and intero-repl-mode buffers.  Not sure I like all of the
characters in my font, since some are hard to eyeball.
*** DONE fix search engines not working in w3m
    - State "DONE"       from "STARTED"    [2017-01-29 Sun 17:18]
    - State "STARTED"    from "TODO"       [2017-01-29 Sun 15:05]
This broke at some point.  Either get it working or remove custom code for it.

Fixed.  Use S in a w3m buffer to activate w3m-search.  Use C-u S to prefix the
search engine (tab completion works here).  Also have it saving the last used
non-default search engine.  Switched the default engine to DuckDuckGo.  Calling
require on w3m-search also allowed me to get rid of the eval-after-load code.
*** CANCELED highlight-versions
    - State "CANCELED"   from "TODO"       [2017-01-29 Sun 22:38]
A cabal utility that you can pipe --dry-run output through to see colorized,
version numbered deltas.  Could be rather essential for properly maintaining a
local cabal package hierarchy (something I've never quite figured out how to do
properly yet).


Don't think I need this now, with the completely redone Haskell stack.
*** CANCELED amalgamated hosts file
    - State "CANCELED"   from "TODO"       [2017-01-29 Sun 22:59]
Since AdBlock is currently broken on Conkeror, I'll use this on FreeBSD.

AdBlock is now functional, so skipping this task.  This would've been an
inferior solution anyway.
*** CANCELED haskgame
    - State "CANCELED"   from "TODO"       [2017-01-29 Sun 23:41]
Check this out.  Looks like it's still in progress and will require SDL work to
get stuff done.  Might be abandoned.

No commits for 7 years means this is abandoned.
*** CANCELED djinn-th
    - State "CANCELED"   from "TODO"       [2017-01-29 Sun 23:45]
Generates Haskell code from a type declaration, using a decision procedure from
intuitionistic propositional calculus.

Looks like this project and the other djinn variants (djinn and djinn-lib) all
died.  Not sure if this is a dead end mathematically or just for human reasons
*** DONE org-present
    - State "DONE"       from "STARTED"    [2017-02-05 Sun 14:11]
    - State "STARTED"    from "TODO"       [2016-08-06 Sat 00:46]
A super minimalist presentation tool for org-mode.

- Use arrow keys to navigate in presentation mode and C-c C-q to quit.
- Will display inline images.
- Use C-c C-= and C-c C-- to increase/decrease size.
- Use C-c < and C-c > to jump to beginning/end.
*** DONE cats
    - State "DONE"       from "STARTED"    [2017-02-08 Wed 10:11]
    - State "STARTED"    from "TODO"       [2017-02-07 Tue 23:33]
A category theory library for Clojure.

There's definitely some downsides to using category concepts in a dynamically
typed language.  I'll probably talk about some of those in my presentation on
the subject.  However, these abstractions are still very powerful and good to
have around as architectural primitives/patterns.
*** DONE nginx
    - State "DONE"       from "STARTED"    [2017-02-12 Sun 00:57]
    - State "STARTED"    from "TODO"       [2017-02-11 Sat 11:45]
Maybe switch to this from lighttpd.  Looks like it does everything I need, plus
it has a Clojure module.  Will defer on CGI, since most of the stuff I might
want to do on it in the future has modern JS-based solutions, I think.  I'll
have to look into LaTeX-rendering solutions at some point.

- Dynamic modules are stored in /usr/local/libexec/nginx.
- Deprecated cgi-bin and archived it to ~/src/var.

Deployed to all FreeBSD machines.  lighttpd has been likewise removed.
Overall, I do find the configuration simpler and it seems to my unscientific
analysis to be more efficient.  Also updated the meta banners on the main site.

Note that since muze is still on FreeBSD 10.0, it's now running nginx 1.8.1.
This has noted vulnerability CVE-2016-4450.  I went ahead and deployed it
anyway, since this is just a DOS vulnerability and nobody cares enough about my
server to bother doing such a thing.  muze also doesn't have the Clojure module
installed due to various build issues.  I'll update the OS there before this
becomes needed--probably once 11.1 comes out.
    - State "CANCELED"   from "TODO"       [2017-02-12 Sun 00:57]
An alternative to Leiningen.  http://boot-clj.com/

Looks like this isn't winning the build tool war.  Canceling this task until
that changes.
*** DONE scan The Clojure Toolbox
    - State "DONE"       from "STARTED"    [2017-02-12 Sun 11:11]
    - State "STARTED"    from "TODO"       [2017-02-12 Sun 10:32]
Review all projects here that are in categories I care about.  Even if not
needing any of these now, knowing about them may come in handy later.

Stuff to maybe look into:
- DataScript: An immutable, in-memory database.  Useful in the browser.
- lein-namespace-depends: Create a graphviz dependency graph.
- reloaded.repl: Maybe check this out and redo my reloaded workflow boilerplate
  with it.
- astar: Pathfinding library.  Probably not generic enough, but worth looking
  at maybe.
*** CANCELED update python-mode to 6.2.2
    - State "CANCELED"   from "TODO"       [2017-02-12 Sun 11:30]
Currently on 5.2.0.  Currently just using a single file, but it looks like it's
a full package now.  https://launchpad.net/python-mode

Due to the decreased likelihood I'll be writing any Python code anytime soon,
I'll just leave this to bitrot.  If it stops working, I'll revert back to the
built-in python.el.

Note that if I ever get back into Python, there's currently 3 major
full-featured Python modes: anaconda-mode, elpy, and emacs-jedi.  All of these
require either external packages or their own dependencies, so it's not worth
the hassle of managing that given my lack of use of the language.
*** DONE highlight-symbol
    - State "DONE"       from "STARTED"    [2017-02-22 Wed 00:15]
    - State "STARTED"    from "TODO"       [2017-02-18 Sat 17:26]
Highlight symbol at point throughout buffer.  Should be useful in many modes.

Tried this for a bit, but decided not to use it.  For one, it's dumb about
highlighting literally anything under the point.  It really does highlight
symbols in the Emacs sense, not in the Lisp/Clojure/Scheme sense.  So, things
like function names are all dealt with the same way.
*** DONE cull technology e-book collection
    - State "DONE"       from "STARTED"    [2017-03-15 Wed 02:44]
    - State "STARTED"    from "TODO"       [2017-03-14 Tue 13:17]
Go through entire e-book collection and delete ones that are outdated or are
the junk churn kind (i.e. cookbooks, most Packt Publishing books, etc.).  Total
tech book collection (categories computer, computer_science, and programming)
are currently 7.57GB in size.

Cleaned up a ton of books.  Collection is now 4.94GB.  I also replaced broken
books, collapsed several subtrees, deduped a few copies, replaced some image
scan PDFs with proper text ones, and fixed some miscategorized books.  Most
importantly probably, I updated a lot of the ephemeral stuff that I still want
to keep reference material for.  Once I quit my current job, I'll go back in
here and delete a few other directories that I'm keeping around for now, just
in case.  While I was at it, I also cleaned up all the other e-book
*** CANCELED eww
    - State "CANCELED"   from "TODO"       [2017-03-15 Wed 02:46]
Possibly a w3m replacement.  This is built into Emacs now, and seems very nice,
though I have a lot of integration with w3m already and don't want to use
yet another text-based browser.

I'll stick with w3m for the time being.
*** DONE determine eternal programming skill portfolio
    - State "DONE"       from "STARTED"    [2017-03-21 Tue 21:42]
    - State "STARTED"    from "TODO"       [2017-03-21 Tue 21:31]
Come up with an optimal list of programming skills (languages and their
requisite tools) that I'll use for the rest of my life post-work.  These will
be focused on things that will hopefully remain constant throughout the rest of
my life, ignoring as many obvious fads and ephemeral technologies as possible.

I've actually spent a lot of time thinking about this lately.  Here's the

Primary languages:
- Haskell: Contender for my primary language.
- Clojure: Secondary algorithms language, primary get stuff done language.
  I'm pretty close to an expert at this language, and I've replaced a lot of
  others with it.  It can pretty much do everything Python, Java, and Common
  Lisp could ever do, but better.
- Agda: This is my preferred dependently typed, purely functional language.  If
  something displaces this later, I'll switch, but at the current time, it
  seems to my cursory analysis to be the superior language.

Optional throw-away languages to maybe use for a single, temporary purpose:
- Prolog: Forget this after The Art of Prolog.  Only learn "pure" Prolog.
- OCaml: Forget this after TAPL.
- Coq: Use for Software Foundations and maybe some of the other Coq books.
  It's possible I might want to keep this around after I use it some.
- Scheme: The only use I have for this going forward is EOPL, should I choose
  to read it.  I'm currently leaning against investing the time.

Support languages:
- HTML5: Needed for the occasional webpage.
- SQL: Will always need to query a relational database or two.  I already know
  this well enough, so don't put any extra effort here.
- LaTeX: For all typesetting.
- Emacs Lisp: For Emacs.
- Gnuplot script: For all visualizations.
- bash/zsh shell: Just maintain some very basic scripting skills.
- JavaScript: It'll be hard not to at least be competent with this for the
  foreseeable future.  I'm going to try my best to not relearn this and hope
  WebAssembly saves me here.
- C: Used only for maintaining my OS and other system software.  I'm hoping I
  pretty much don't need to touch C much the rest of my life, and will not
  actively study it.  If I ever need to write anything low level, I should
  probably use one of the safety-providing C generator libraries, such as those
  for Haskell.

This is a pretty good plan, I think, and I'm chiseling it in stone.  I'll
revisit it in a couple years to see which assumptions still hold.
*** DONE xbrightness
    - State "DONE"       from "STARTED"    [2017-03-26 Sun 22:02]
    - State "STARTED"    from "TODO"       [2017-03-26 Sun 10:01]
Install this port on my FreeBSD laptop and see if it can control the screen
brightness.  This works for some people in the FreeBSD forums.

This just washes out the color of the graphics displayed in Xorg.  It doesn't
control the actual backlight in the screen.  Uninstalled.
*** CANCELED pf/altq on FreeBSD
    - State "CANCELED"   from "TODO"       [2017-03-30 Thu 14:44]
Read this http://www.freebsd.org/doc/handbook/firewalls-pf.html and pf.conf(5).

Dequeuing this until I have a specific need, in order to make room for more
applicable tasks.
*** CANCELED scsh
    - State "CANCELED"   from "TODO"       [2017-03-30 Thu 15:22]
Consider writing all shell scripts in this.  Don't use it as a login shell
though, since nothing can compare with zsh right now.

I looked into this briefly and it's just sexp syntax for standard shell
commands.  While this is sorta nice, I'm not sure it's worth the bother to port
everything I ever want to do over to it, given that there's almost no ecosystem
around it.  Also it makes doing rather simple things like pipes and redirects
rather cumbersome.  The concept does look rather sound however, and it even
supports ~define-syntax~.  If it were in Clojure, I'd probably go for it.  I'll
still keep it on the maybe list.
*** CANCELED flycheck
    - State "CANCELED"   from "TODO"       [2017-03-31 Fri 22:49]
Supposedly better than flymake.  No TRAMP support might be a deal-breaker.
Intero uses this, so it's already on my system.

These days, I seem to only use modes that include flymake/flycheck support
automatically.  I'll stick with doing it that way for now unless I start using
some language without comprehensive tooling support in the future.
    - State "CANCELED"   from "TODO"       [2017-03-31 Fri 22:50]

Not planning on writing any (or at least much) C anytime soon.  Maybe I can
just never write it again.
*** DONE Onyx
    - State "DONE"       from "STARTED"    [2017-04-01 Sat 23:03]
    - State "STARTED"    from "TODO"       [2017-04-01 Sat 21:07]
Yet another distributed computing system, but written in Clojure.  Just give
this a peek to see what they're up to.  https://github.com/MichaelDrogalis/onyx

This looks pretty interesting.  It has its own extensive abstraction model,
like Storm.  If the architectural goals are met in the codebase, then this is a
superior library compared to both Storm and possibly Cascalog.  I'll keep it in
mind should a need for something like this come up.  Didn't investigate too
deeply though, since the chances of that are small.
*** DONE highlight.js
    - State "DONE"       from "STARTED"    [2017-04-02 Sun 02:03]
    - State "STARTED"    from "TODO"       [2017-04-02 Sun 00:35]
Replace all code blocks with this.  Find a good B&W theme or make one.

Made a theme called grayscale-dark.  Installed this to macroexpand-bm3719/inc.
Tried using the latest version off of npm, but it didn't work for some reason.
Instead, grabbed the min-ified version and just kept that.  I also noticed some
bugs in the parser for a few of the languages I checked out with it.  So, it's
a bit sloppy, but good enough for the web and for now, I guess.  I'll
definitely revisit this some day and think about replacing, or at least
upgrading, it.
*** DONE rework personal site
    - State "DONE"       from "STARTED"    [2017-04-02 Sun 04:06]
    - State "STARTED"    from "TODO"       [2017-04-01 Sat 22:11]
Update the underlying client-side technology stack:
- [X] Update HTML 4.01 to HTML5.
- [X] Create dark black & white highlight.js theme.
- [X] Convert code blocks to use highlight.js.
- [X] Convert math formulas to use MathJax.
- [X] Redo site navigation.
- [X] Increase width of main text area.  Maybe make this not fixed at all.

Decided not to manage JavaScript with a package.json file for now.  Might
switch this to use Webpack later though.
*** DONE npm
    - State "DONE"       from "STARTED"    [2017-04-02 Sun 04:06]
    - State "STARTED"    from "TODO"       [2017-04-01 Sat 23:41]
Get at least somewhat comfortable with the Node.js package manager.  There's
not much to it, so just read a tutorial or something.

Created a package.json file for my personal site.  The idea was to do an =npm
install= on deployment if dependencies changed.  I decided to back this out and
delete the package.json file though, since I'm only using 2 dependencies
*** DONE MathJax
    - State "DONE"       from "STARTED"    [2017-04-02 Sun 04:08]
    - State "STARTED"    from "TODO"       [2017-04-02 Sun 02:02]
Switch to client-side LaTeX rendering, instead of my current (unused) CGI-based
version.  https://www.mathjax.org/

Works great and is pretty easy to use.  Will stick with double dollar
sign-enclosed LaTeX as my standard.  Currently using the CDN version.  Might
grab a local copy later.
*** DONE netcat
    - State "DONE"       from "STARTED"    [2017-04-02 Sun 04:29]
    - State "STARTED"    from "TODO"       [2017-04-02 Sun 04:15]
Also =nc= on most Unices.  A useful tool to know, particularly when doing any
network programming.

Decided I didn't really need to know this too extensively.  Just read the
Wikipedia article on the subject.  There's definitely some nice tricks you can
do with nc.  Sysadmins should be familiar with this and/or incorporate it into
scripts.  For me, I'll lazy load the details if needed.
*** CANCELED sed
    - State "CANCELED"   from "TODO"       [2017-04-02 Sun 04:50]
sed keeps coming up and I always have to relearn it every time.  Dedicate some
time to actually learning it properly.

- Insert a line into the beginning of a file: =sed -i 1i"line text" filename=.

Skipping this.  I think I can get by with Emacs for simple stuff, and writing a
quick text processing program for more complex tasks.  sed is really only good
for stuff of minor complexity anyway, and it would take a few days to do this
task justice.
*** DONE fix remaining personal site issues
    - State "DONE"       from "STARTED"    [2017-04-02 Sun 16:43]
    - State "STARTED"    from "TODO"       [2017-04-02 Sun 04:51]
The large-scale site technology conversion and redesign is complete, but
there's still a bunch of dangling things that need tidying up.  Fix all of
these before working on any content.
- [X] Fix title image text to have correct server name on it.
- [X] Replace article headers with proper HTML 5.1 ones.
- [X] Convert old-style anchors and unary p tags to HTML 5.1.
- [X] Clean up unused CSS definitions.
- [X] Run all HTML and CSS through validator.
- [X] Validate all external links.

Also replaced all tables with styled div tags.
*** CANCELED low level programmer fundamentals
    - State "CANCELED"   from "STARTED"    [2017-04-02 Sun 23:40]
    - State "STARTED"    from "TODO"       [2017-04-02 Sun 23:32]
This guy makes a good point about knowing fundamentals, like floating point
vs. fixed-point arithmetic and bit shifting.  I think I know most of this, but
a review never hurts.  Read all the links he provides on this site:

Well, I read this, but it's just about branching.  I'll consider this canceled,
since I really didn't learn anything about low level stuff.  This is rather out
of my area of expertise, so I don't have any current plans to revisit it.
*** DONE NixOS
    - State "DONE"       from "STARTED"    [2017-04-08 Sat 00:12]
    - State "STARTED"    from "TODO"       [2017-04-07 Fri 21:16]
The only Linux distro I'm actually interested in.  I've been putting it off
since a lot of the Nix system has been in flux.  I've looked into the package
manager, and it's a good bit of complexity overhead.  Will need to set aside a
good bit of time to learn this properly.  Maybe give this a try on a laptop or

Since I now have a spare laptop, I decided to give this a try.

I'll come back to this in the future and give it a more thorough setup.  Some
things I'd like to do at that time:
- Eschew the NixOS default of KDE for xmonad.
- Some Haskell developers claim to have integrated Nix/NixOS into some workflow
  for development.  Look into this.
- Encrypt all volumes.  I did do this, but I'm not sure I like my setup.
- Install it on some beefier hardware, with a lot more disk space.
- Setup TRIM.
- Look into power scaling.
- Look into installing stuff local to the user.  I think how this works is that
  a subset of the installed software can be specified as available to a user.
- Check out the nix-shell and Nix language.
- Get chsh working (might be a bug).
- Consider switching to GuixSD, which is similar to NixOS, except GNU Shepard
  replaces systemd, Guile is the system language, and non-free stuff is

Got a usable system, setup for reading e-books, programming in Clojure, using
Emacs, and currently not much else.

I think I generally have the hang of how the system actually works, with the
gap to close just being implementation details.  While I do quite like Nix in
principle, there are a lot of rough edges and I found a few bugs.  I might
replace my catch-all Linux VM with this.  However, I think I'll wait for a
couple more versions to let the software quality tighten up some.  As is, it's
definitely not ready for prime-time and is very much for power users only.
*** DONE tmux (revisited)
    - State "DONE"       from "STARTED"    [2017-04-09 Sun 15:08]
    - State "STARTED"    from "TODO"       [2017-04-09 Sun 04:27]
Give my tmux setup another chance.  Will also read the book tmux
Taster in an attempt to be comprehensive about it.

Last time, everything tmux-related worked great and it seemed a generally
smoother experience.  The only downsides where a lack of ability to initialize
windows in the config file.  This wasn't a huge deal since I don't launch a ton
and there is a method for doing so via external script.  The deal-breaker was
the horrid color setup in my terminal emulators.  My now current setup of zsh
with TERM=screen-256colors and tmux with default-terminal of
screen-256colors-bce seems to work fine in both urxvt and PuTTY.

See task for tmux Taster book for additional tmux notes learned there.  As I
suspected, tmux is a better program for me than screen.  I'll now deprecate
screen altogether on all my machines.  I'll keep my .screenrc around, however,
since it still comes default on some distros and AMIs.
*** DONE org-bullets
    - State "DONE"       from "STARTED"    [2017-04-10 Mon 01:58]
    - State "STARTED"    from "TODO"       [2017-04-10 Mon 01:55]
Use Unicode bullets instead of asterisks.  Will give this a try for awhile.

Looks nice, but I'll have to try it for awhile to see if I want to stick with
it.  Not sure I like the way it looks in terminal mode.

Update: Used this for awhile, decided it reduced readability.  Uninstalling.
*** DONE wttrin.el
    - State "DONE"       from "STARTED"    [2017-04-10 Mon 02:30]
    - State "STARTED"    from "TODO"       [2017-04-10 Mon 02:23]
Gets an ASCII-based weather report from wttr.in.  Will give it a try for
awhile, since I'm trying to deprecate my Python scripts.

Looks nice, but has a dependency, xterm-color.el.  Will keep it around for now
and think about it.
*** DONE review awesome-emacs
    - State "DONE"       from "STARTED"    [2017-04-10 Mon 07:51]
    - State "STARTED"    from "TODO"       [2017-04-10 Mon 01:35]
This is a community-curated list of Emacs packages and libraries.  Go through
everything here to sync up.  Queue anything worth trying out.

Added a few items to the queue.  Some other notes:
 - Give the JavaScript and OCaml sections another look if I don't like my
   targeted setups.
- Maybe check out purescript-mode later, if I decide to spend any time with it.
- If I want to do a really professional-looking presentation, org-ioslide might
  be the way to go.
- gist.el: Check this out later if I start using these more.  There's two
  competing packages that do the same, but this one seems slightly nicer.
*** DONE Magithub
    - State "DONE"       from "STARTED"    [2017-04-10 Mon 08:11]
    - State "STARTED"    from "TODO"       [2017-04-10 Mon 07:51]
Definitely check this out.  Could be a huge boon for me, saving one of my main
use cases for a GUI web browser.  https://github.com/vermiculus/magithub

- Clone the hub utility: https://hub.github.com/
- Compile it with ~script/build -o ~/bin/hub~.
- Conditionally alias it to git, if the binary exists in ~/bin.
- Do some manual CLI setup on hub in the project by running =hub browse=.

So, the only thing this seems to add is the issues list to the magit-status
screen.  That's a plus, but not enough to warrant all of this overhead.  Maybe
if it gets full integration with other features, I'll reconsider it.  Rolled
back all of this setup.
*** DONE RebeccaBlackOS
    - State "DONE"       from "STARTED"    [2017-04-12 Wed 04:13]
    - State "STARTED"    from "TODO"       [2017-04-11 Tue 19:52]
Make a USB stick of this to check out Wayland and a few native DEs, like

A good tech demo, but useless for anything else.  It looks like Wayland
probably will be the way forward at some point.  It's apparently come a long
way and at least is in presentable shape.  Judging from the status here, I'll
check back in on it in a few years to see how it's doing.  I do look forward to
one day not need Xorg.
*** DONE core.logic
    - State "DONE"       from "STARTED"    [2017-04-12 Wed 21:54]
    - State "STARTED"    from "TODO"       [2017-03-31 Fri 22:10]
It's been a long time since I did any Prolog.  Getting comfortable with this
library could be a good alternative to relearning it, as knowing Prolog is less
useful than embedding logic programming in a language I actually use.

- [X] Read The Joy of Clojure (2nd Ed.), §1.63: An introduction to core.logic.
- [X] Read the core.logic wiki: https://github.com/clojure/core.logic/wiki
- [ ] Do the book The Reasoned Schemer using core.logic.  There are some notes
  about differences here:

Well, I at least should have no problem recalling enough about this to know
when and how I should use it.  To do real, useful work would require a bit more
of a time investment, but I'll defer that to an as-needed continuation.  I did
learn this enough to give a fundamentals talk on the subject, which went quite
*** DONE rainbow-mode
    - State "DONE"       from "STARTED"    [2017-04-13 Thu 00:47]
    - State "STARTED"    from "TODO"       [2017-04-13 Thu 00:41]
Maybe enable this for CSS, at least.  Get a direct copy of the file.

Installed just the .el file and byte-compiled it.  Works great and will
definitely keep this around.
*** DONE json-mode
    - State "DONE"       from "STARTED"    [2017-04-13 Thu 01:05]
    - State "STARTED"    from "TODO"       [2017-04-13 Thu 00:50]
js2-mode thinks JSON is malformatted.  Replace it for JSON files with this.

Also remove my JSON formatter function while I'm at it.

Added this one to the managed packages, since it pulls in a bunch of small
dependencies.  Despite needing two dependencies (one for each function), this
is a useful mode to keep around and earns its keep, I think.
*** DONE git (semi-)mastery
    - State "DONE"       from "STARTED"    [2017-04-16 Sun 02:27]
    - State "STARTED"    from "TODO"       [2017-04-14 Fri 13:28]
I'm pretty good with git now, at least knowing of most of its features in
outline.  However, this has all been learned by osmosis, and as important a
tool as it is, would probably benefit from directed study.  This process will
help delete all of my CVS/SVN/Darcs thinking and shift fully over to the Git

- [X] Read Version Control With Git (2nd Ed.).  This seems slightly more
  regarded than Pro Git, which is both free and more recent.  However, the
  latter seems to have more errors and sloppiness.
- [X] Review my ZSH aliases and make sure they're optimal.
- [X] Read this blog entry:

Cleaned up some git commands in .zshrc I won't ever use.  I largely ignored the
internal housekeeping git command reference, but I do feel this effort rounded
out my practical knowledge of the tool.  That's all I really need, and any
further effort would certainly be a waste.
*** DONE Mithril
    - State "DONE"       from "STARTED"    [2017-04-16 Sun 02:40]
    - State "STARTED"    from "TODO"       [2017-04-07 Fri 11:39]
A framework for creating single page apps.  Like AngularJS, but incredibly
small and lightweight.  Might consider this, but it's likely I'll not bother.

Read some of the docs for this and helped make a site with it.  I guess this is
okay for a simple site, but seems a little thin and flakey for prime-time use
on a large/detailed site.  I think I'd probably just recommend React based on
what I currently know.
*** DONE Docker
    - State "DONE"       from "STARTED"    [2017-04-18 Tue 02:04]
    - State "STARTED"    from "TODO"       [2017-04-17 Mon 23:41]
Do a shallow look into what Docker is all about, just for context.  Maybe scan
a book on the subject.  I'll re-evaluate after this and decide whether to go
deeper.  I might set it up on a VM or my laptop as well.  I'm leaning towards
minimal investment due to this being firmly in the DevOps realm.

Decided to semi-read the book Docker in Action.  See task on this for details.

Also looked into Docker on FreeBSD.  This is possible, but requires some
additional infrastructure/setup.  Alternatively, I might instead use FreeBSD
jails for stuff exposed to the outside world.  I don't have a need/desire for
this now, so I won't queue up a task for it, but it's worth keeping in mind.

I'm still rather against microservices, but I do like the general idea of
containers more now.
*** DONE tools.cli
    - State "DONE"       from "STARTED"    [2017-04-19 Wed 14:28]
    - State "STARTED"    from "TODO"       [2017-04-19 Wed 13:19]
Look into canonical ways of parsing CLI args.  Integrate into one of the work
projects as my reference.  https://github.com/clojure/tools.cli

Seems like this boilerplate could/should be simplified a bit.  I guess it gets
the job done though.  I refactored how the example program does it, a little.
*** DONE org-capture.el
    - State "DONE"       from "STARTED"    [2017-04-20 Thu 02:39]
    - State "STARTED"    from "TODO"       [2017-04-20 Thu 02:26]
In line with my attempts to reduce task-switch overhead, rethink integrating
this into my life.  The idea behind this tool is to quickly file away errant
ideas/thoughts for later categorization/tasking.  I set up remember.el and used
it for awhile, but then got out of the habit of doing so.  Since then,
remember.el was replaced with org-remember.el, which was then replaced with
org-capture.el in 8.0.

Note that the last capture will be auto-bookmarked to org-capture-last-stored.

Set my keybinding back to C-c r for this.  Generally, I don't like global
bindings with a C-c prefix, but I want to optimize for execution speed.

It's also possible to pull captures directly into an org file, but I think I'll
skip that feature for now.  Overall, this is a minor improvement to
remember.el.  The status indicators on note items will help keep things
*** DONE Grunt
    - State "DONE"       from "STARTED"    [2017-04-21 Fri 00:39]
    - State "STARTED"    from "TODO"       [2017-04-21 Fri 00:26]
A task-runner for JavaScript.  Just read the website for this:

Useful for some tasks, but it seems all of these have been superseded by
Webpack.  E.g., use Webpack for ESLint, code minification (Webpack will also
minify CSS), transpiling, unit testing, image optimization, and compiling Sass
and similar languages.

The syntax for a Gruntfile is a little ugly, but not too bad.  This seems to be
the case with all of these JavaScript tools.  I'm getting JS-fatigue just
thinking about all of this.  I'm going to try to ignore Grunt in the future,
unless I want a non-Webpack front end that still needs some of these task
running capabilities.  Apart from that, using it would just be adding needless
*** CANCELED SwankJs
    - State "CANCELED"   from "TODO"       [2017-04-21 Fri 00:39]
A full-blown SLIME backend for Node.js that can connect to a running web
browser process through the socket.io package.  Should be way better than
MozRepl, and not be browser-dependent.

This only working for Node.js makes it less useful for me though, since I have
no intentions of actually using it for a web server.

Canceling due to the above.  Will add this when/if I ever need to make a
Node.js project.
*** DONE Beacon
    - State "DONE"       from "STARTED"    [2017-05-03 Wed 20:16]
    - State "STARTED"    from "TODO"       [2017-05-03 Wed 20:09]
Shows location of cursor after a scroll operation, for fast finding of the
point.  Not sure I want this, but will give it a try.

Subtle enough not to be annoying.  Looks better in GUI mode, of course, but the
console mode is decent enough too.  Will try using this for a few weeks and see
if I want to keep it around.

Update 2017-09-11: Removed since it got a bit annoying.
*** DONE Olivetti
    - State "DONE"       from "STARTED"    [2017-05-03 Wed 20:32]
    - State "STARTED"    from "TODO"       [2017-05-03 Wed 20:18]
Check out this mode for a potential, toggle-able, "dark room" style writing
mode.  I might find this useful when working on lengthy prose.

Well, this does work as advertised.  I guess I don't have any other (good) way
of keeping the text I'm focusing on centered in view like this.  In that sense,
it's pretty nice.  However, all is not perfect either.  It seems to interact
poorly with a few of my other extensions, like git-gutter-fringe.  Fatally, it
jumps into and out of having a proper left margin.  Not sure which extension is
causing the redraw conflict, but it makes it rather unusable for me.  So,
uninstalling.  I might try out writeroom-mode next, since that operates on the
entire frame instead of just the buffer.
*** DONE writeroom-mode
    - State "DONE"       from "STARTED"    [2017-05-03 Wed 22:19]
    - State "STARTED"    from "TODO"       [2017-05-03 Wed 22:07]
A frame-based writing mode.  Looks like it might do what I want more than
Olivetti, but does require a dependency of visual-fill-column.

This looks better than Olivetti, but still has the same bug of not maintaining
the left margin.  I thought maybe elscreen was causing this, but disabling that
had no effect.  Uninstalling.

I might try looking into whether this is possible in XMonad.  I could also just
turn my monitor sideways.
*** DONE disable MongoDB remote access
    - State "DONE"       from "STARTED"    [2017-05-08 Mon 00:16]
    - State "STARTED"    from "TODO"       [2017-05-08 Mon 00:09]
Secure this port on my VPS.

I also might just remove it, if I can edit out that feature from lazybot.

The advice in that URL is incorrect.  Edit /usr/local/etc/mongodb.conf and add
a block for "net" with a setting of "bindIp:".
*** CANCELED Sayid
    - State "CANCELED"   from "TODO"       [2017-05-09 Tue 19:15]
A debugger for Clojure.  Give this some time to see if it gets/remains popular.
I generally never use a debugger, so it might be a waste of time to learn a
tool I'll not use.  Maybe just keep this on the radar in case a use case comes
up.  http://bpiel.github.io/sayid/

Will keep this in mind, but haven't seen a need for it yet.  I don't even use
the built-in CIDER debugger.  If I ever max out the capabilities there first,
I'll give this a look.
*** DONE remap caps lock to control
    - State "DONE"       from "STARTED"    [2017-05-12 Fri 10:04]
    - State "STARTED"    from "TODO"       [2017-05-12 Fri 09:44]
Most people swap these, but I'd rather also keep control in the corner for now.
The reason is that I intend to still stick with using it there mainly, until I
can not use any work keyboards.  Add this to my setup procedure.

Works great.  I've used control here before and it seems I still have some
neurons wired for it.
*** CANCELED Incanter
    - State "CANCELED"   from "TODO"       [2017-08-16 Wed 23:54]
Incanter seems to no longer be actively developed.  There's no replacement for
it though, so I might still use it for functionality I'd otherwise have to use
R for.

- [ ] Find a couple tutorials and run through them.
- [ ] Make a test project.

Project abandoned/dead.  Looks like the next best options are Clojupyter and
Gorilla REPL.  I'll schedule the latter.
*** DONE XKeymacs
    - State "DONE"       from "STARTED"    [2017-09-03 Sun 16:58]
    - State "STARTED"    from "TODO"       [2017-09-02 Sat 10:44]
Use this to enable Emacs keybindings everywhere in Windows.  This alleviates
annoyance having to switch over to their keybindings on the rare occasion I use

Seems to work okay so far.  I disabled some of the keys and am mainly only
using the movement and basic editing bindings.  Use C-q to enable/disable it.
*** DONE fzf
    - State "DONE"       from "STARTED"    [2017-12-06 Wed 18:43]
    - State "STARTED"    from "TODO"       [2017-12-06 Wed 17:44]
A popular fuzzy search utility, I think.  Has a go dependency, but I currently
already have that installed.

- I can enable to TMUX build switch if I have bash installed.
- Results are written to STDOUT.
- To use this with an editor, do something like ~emacsclient -n $(fzf)~.

Very fast indeed.  I have nicely organized trees, so finding stuff isn't often
a problem for me.  I'll keep it around for awhile though, since I can possibly
imagine it really coming in handy for those rare situations I do a heavyweight
find.  Added to my system build.
** Work-related
*** DONE presentation on category theory in Clojure
    - State "DONE"       from "STARTED"    [2017-02-08 Wed 22:10]
    - State "STARTED"    from "TODO"       [2017-02-05 Sun 14:11]
A talk covering foundations to the practical application in Clojure using the
cats library.

- [X] Finish the cats research task.
- [X] Create org-mode file.
- [X] Test org-present on a high-res screen.
- [X] Restore bookmark.html and delete junk folders.
*** CANCELED ssh tunnel through proxy
    - State "CANCELED"   from "TODO"       [2017-02-18 Sat 12:18]
Figure out how to setup an ssh tunnel through a local network proxy.

Don't need this anymore.
*** DONE presentation on logic programming in Clojure
    - State "DONE"       from "STARTED"    [2017-04-12 Wed 21:57]
    - State "STARTED"    from "TODO"       [2017-03-23 Thu 08:45]
A talk covering the foundational theory to its expression in core.logic.

- [X] Wait to see if anyone volunteers for a talk.  Post text for talk 3-4
  weeks if no one volunteers.
- [X] Read at least part of The Art of Prolog.
- [X] Create a sample problem in Prolog.
- [X] Create org-present presentation.
- [X] Learn core.logic.
- [X] Rewrite same program in core.logic or create a different one.  If the
  same, create some scaffolding around it for multiple examples.
- [X] Merge all this into a single Git repository.
- [X] Maybe look into Twelf.
- [X] Activate announcement 1 week out.
- [X] Give talk.

Talk was extremely successful.  Code and presentation in GitHub project named
*** DONE presentation on Clojure macros
    - State "DONE"       from "STARTED"    [2017-06-17 Sat 17:29]
    - State "STARTED"    from "TODO"       [2017-06-12 Mon 18:24]
A talk comprehensively covering the techniques and application of macros in

- [ ] Read Mastering Clojure Macros.
- [X] Re-read the chapter in Joy of Clojure on Macros.
- [X] Write announcement text.  Post this 1 month out.
- [X] Activate announcement 1 week out.
- [X] Give talk.

Still need to finish reading the book.
*** DONE presentation on lambda calculus
    - State "DONE"       from "TODO"       [2017-08-09 Wed 22:03]
A talk from the foundations of lambda calculus, programming in it, and
discussing its influence over Lisp-based languages.  Try this in LaTex Beamer.
Use the --fullscreen flag with xpdf to present it.

Intended to do a more thorough review of this subject, but didn't finish it.
Ended up just completing the necessary research in order to competently speak
about it.  Will circle back around later.
** Games
*** DONE Choria (revisited)
    - State "DONE"       from "STARTED"    [2017-01-03 Tue 03:45]
    - State "STARTED"    from "TODO"       [2016-12-29 Thu 00:32]
Played this a long time ago and there wasn't much there.  But, it's been like
4-6 years and it looks like the author is still working on it.

Wow, I actually got this to compile and run.  Required these dependencies to be
manually installed on Linux Mint 18.1: build-essential, cmake, libglm-dev,
zlib1g-dev, libglm-dev, libsdl2-dev, libfreetype6, libfreetype6-dev,
libsqlite3-0, libsqlite3-dev, libpthread-stubs0-dev, libalut-dev,
libvorbis-dev, lua5.3, lua5.3-dev.

Unfortunately, this game isn't that great.
- I could forgive some of its flaws were it not real-time, which it has to be
  to support multiplayer.  Real-time isn't a deal-breaker since I do like the
  regen mechanic, but I'd rather be able to set some kind of default action.
- Needs diagonal walking.
- There are also numerous bugs, like fullscreen mode not working and sounds
  randomly breaking.
- Sounds might as well not be there.  There's only a few simple sounds, with
  not enough value added to justify all those audio dependencies.
- The darkness filter makes it hard to see things, even reducing visibility
  during the day.

Quitting since I've kinda seen what the game has to offer after a few hours,
with only more grinding left to do.  If I ever check this out again, I'll set
up a bot to auto-grind out the levels for me.
*** DONE Trimps
    - State "DONE"       from "STARTED"    [2017-01-06 Fri 18:14]
    - State "STARTED"    from "TODO"       [2016-12-24 Sat 02:51]
Yet another idle game.  Supposedly involves less interaction.

The best incremental game I've played so far.  I especially like that it's open
source.  Of course, there are still some downsides:
- Has annoying max limits on resources.  These are a little more generous than
  some of these games, but stuff like this just serves to force players to
  check back in.  An AutoStorage feature exists, but takes weeks to acquire.
- Stances shouldn't be in a game like this.
- The mathematics behind certain features of the game make them useless past
  certain points of progression.
- The zone vs. map mechanic requires a human to make boring, repetitive
  decisions about when to advance zone and switch to map farming.  This becomes
  a huge timesink for re-advancing through early zones.
- Once past zone 60, progress gained per portal starts going down
  significantly.  One could easily play for days to just increment one or two

Switching to AutoTrimps to take out most of the remaining grunt-work.
*** DONE World of Warcraft: The Burning Crusade
    - State "DONE"       from "STARTED"    [2017-01-09 Mon 07:51]
    - State "STARTED"    from "TODO"       [2016-12-19 Mon 00:49]
Figured I'd at least try this for a little while once in my life.  Playing on
the hellground.net PS.  Character is an undead priest.

Pretty generic by modern MMO standards, but at least it doesn't do anything
particularly wrong, unlike almost all of the clones (and modern WoW).

I guess we're done playing this.  Will reopen later if not.  Got to level 15.
*** DONE Slouching Towards Bedlam
    - State "DONE"       from "STARTED"    [2017-01-18 Wed 03:29]
    - State "STARTED"    from "TODO"       [2016-08-05 Fri 01:52]
Supposedly an awesome IF game.

For some reason, this crashes Malyon whenever in content browsing mode (or
whatever it's called).  Had to install games/frotz.

Has a few grammar errors, but overall is a compelling IF game and close to as
good as these get.  Good balance of story, puzzle, and an extra twist on the
formula.  Made me research and learn a few things, so that's always good too.
*** DONE AutoTrimps
    - State "DONE"       from "STARTED"    [2017-02-04 Sat 23:01]
    - State "STARTED"    from "TODO"       [2017-01-06 Fri 18:16]
A bot that plays Trimps.  Rather necessary given how needlessly interactive the
game gets.  In fact, it got to the point whether it was bot or quit.  I was
going to work on my own bot, but due to how complex and arbitrary the game
rules are, I'll just use this.


Using the Chrome version in a VM:
- Install Tampermonkey extension.
- Open Tampermonkey dashboard, which can be done from the newly added toolbar
  icon.  Paste the .user.js URL listed on the site into the URL bar in the
  Utilities screen.
- Once installed, just going to the GitHub version of Trimps will autoload the

Chrome seems to not be as resource-intensive, even with AutoTrimps running.
Firefox on the same VM was pegging a core.

With the right portal and perk assignment settings, this can now mostly play
itself with only checking in every few days at most.  You can still manually do
deep runs and challenge games, which are really the only part of this game that
require any thought.

The progress curve on this game really starts to get pretty brutal, even with
botting.  An entire day of super-efficient botting can result in a couple
points of perk advancement.  With most perk benefits being additive, this gets
depressing.  I decided to just project forward manually by modifying the
game.global object in the console, but doing so in a way that mimics what would
happen if I had actually botted all those resources.  The story completes at
the Spire (accessible at zone 200).  After that, only the dimensional generator
mechanic and magma mechanics are attainable.  I'm quitting now after seeing
that part, but I'll keep my game export around just in case a lot more stuff
gets added to the game later.

One way this game could've been better is to make it entirely playable from the
keyboard.  While I still wouldn't play it, a skilled player could then really
integrate with the flow of the game, particularly when it runs at late game
speeds.  The current interface will always be too clunky due to scrolling and
clicking on things.
*** DONE xsokoban
    - State "DONE"       from "STARTED"    [2017-02-05 Sun 02:11]
    - State "STARTED"    from "TODO"       [2017-02-04 Sat 23:17]
I've never played a sokoban game before, so I'll give the genre a chance with
this.  Doing a pkg install on it since it won't be around long.

Did the first 14 levels.  Somewhat fun, but not really my type of puzzle game.
*** DONE xtet42
    - State "DONE"       from "STARTED"    [2017-02-05 Sun 02:21]
    - State "STARTED"    from "TODO"       [2017-02-05 Sun 02:15]
A tetris clone on X11.

Graphics area is too small.  Can't see what's going on.  Also needs a grid on
the playing area.
*** DONE Color the Truth
    - State "DONE"       from "STARTED"    [2017-02-05 Sun 20:16]
    - State "STARTED"    from "TODO"       [2017-02-05 Sun 14:58]
A mystery/detective IF game.  There's several IF games in this genre out
recently of notable acclaim.  I'll try this one first since it's a shorter one.
This is a gblorb file, which runs in a Glulx engine player.  I'll just play it
in an online player as a result.

Quite good, has some novel mechanics well executed, and is a pretty decent
story.  Only downsides are its length, lack of much of an interesting ending,
and a few grammar/history errors.
*** DONE Detectiveland
    - State "DONE"       from "STARTED"    [2017-02-06 Mon 01:24]
    - State "STARTED"    from "TODO"       [2017-02-05 Sun 22:27]
A detective IF game with multiple missions.  Supposedly very good.

Worth playing for sure, though I generally prefer a nice parser over clicking
on things.  This won first place in the 2016 IF competition, and deservedly so.
*** DONE Bussard
    - State "DONE"       from "STARTED"    [2017-02-10 Fri 23:33]
    - State "STARTED"    from "TODO"       [2017-02-10 Fri 22:58]
An "Emacs in space" game, similar to an idea I had, though much simpler.

Not really enough here to be worth putting any time/energy into.  Even if it
were expanded to a full game, I'd still have complaints:
- I'm not interested in writing any Lua.  It's weird that the author chose
  that, given his proclivity for better languages.
- Space travel moves too fast and is too arcade-like.
- Space travel is done via the arrow keys.
- The console is quite lacking in many ways.
- Space is in 2D.

It's kinda a shame, since I've been convinced for a long time that games based
around programming can be awesome.  I've yet to see one not dumbed down like
this, however.
*** CANCELED 3059
    - State "CANCELED"   from "TODO"       [2017-02-11 Sat 02:23]
Check out 3069 later if I like this.

Seems promising, but I'd rather it not be real time.  Also the view area is too
small.  I might reconsider trying this, but right now I'm inclined to pass.
*** DONE sudoku.el
    - State "DONE"       from "STARTED"    [2017-02-16 Thu 02:24]
    - State "STARTED"    from "TODO"       [2017-02-16 Thu 01:00]
I guess this is the only version in elisp.  Set sudoku-level to easy, medium,
hard, or evil before starting.

Setting sudoku-download to true in order to grab puzzles from online doesn't
seem to work.  Don't feel like debugging and fixing it, so I'll just play the
included ones for a bit.

Played a few games.  Probably would keep around, but with download not working,
it's not worth the extra file.  Deleted.
*** DONE Distant Worlds Universe
    - State "DONE"       from "STARTED"    [2017-02-20 Mon 18:14]
    - State "STARTED"    from "TODO"       [2015-01-10 Sat 19:16]
Space 4x fans seem to think this is the ultimate experience in the genre.
Another mostly-2D 4X game of massive scale, with pausable real time.
Supposedly there are problems with computer empire management, but if you
micromanage everything yourself, it wouldn't come up.  Universe includes all 3
expansions.  Grabbed a copy on Steam sale.

- Try editing the race files and set playable flag to Y for mechanoids.
- To get windowed mode, edit and uncomment the height/width variables in

After playing this game awhile, I'm a bit mixed on it.  On the one hand, it's
got a ton of features that integrate well and great depth.  However:
- The vastness of space isn't quite adequately captured here.  Requiring more
  zooming in for planets and even more for ships would solve this.
- There's some typos in the manual and UI.
- The UI is quite awful.  Windows are often too small to display their contents
  effectively.  Maybe all of the UI should've been collected on one side of the
  screen.  As is, the play area is an awkwardly-shaped cross.
- Needs more government types, with actual structural changes to the society in
  question.  Not all government types are limited to a state/private sector
- Most of the races are just extensions of species of terrestrial life, one of
  my major scifi annoyances.
- The way the user is alerted to things in this game is a mess.  There's the
  4-line console scroll on the top, an area that can display only 1
  disappearing message (that is immediately overwritten by the next one),
  a notification area for your adviser messages, and modal and time-pausing
  popup messages.  When the game is very active with a lot of stuff happening,
  this system breaks down pretty badly.
- Advisers will spam you with the same suggestion over and over.  There's no
  way to permanently dismiss a type of suggestion.
- Many sound effects are headache-inducing, yet I can only disable all or none
  of them.
- Micromanaging everything is pretty close to impossible.  There aren't really
  any good UI tools for managing ships and grouping them into fleets.  On the
  other end, things like research have to be managed yourself.
- Commanding units and bases is done through an awkward combination of right
  click menus, right clicks on targets, and a small set of buttons (with nested
  button sets).
- While the vast number of resources available is great, immersion is then
  broken when you run out of things like hydrogen, the most common element in
  the universe.

If it was just a few of these downsides, I could live with it, but there's just
too many annoyances here to keep this one installed.  It's a shame too, since I
really like the pre-warp start and other aspects of this game.
*** DONE xconq
    - State "DONE"       from "STARTED"    [2017-02-22 Wed 17:25]
    - State "STARTED"    from "TODO"       [2017-02-22 Wed 16:22]
The popular free wargaming strategy game for Unix-variants.  Looks like this
would install without any extra dependencies on FreeBSD.  Installing without
SDL.  Also try out the ncurses interface.

This game is marginal, and even then, only for an older Unix game.  The
mechanics are too simple for any real strategy.  You just build units and send
them charging into battle for the most part.  Some of the historic scenarios
are a little more interesting, but they also suffer from the lack of depth
regarding actual combat.  Overwhelm enemy units by teaming up on them and
you'll always win.  I'll keep this on my laptop in case I want to try out more
scenarios, but I'm otherwise quitting.
*** DONE Hunger Daemon
    - State "DONE"       from "STARTED"    [2017-02-23 Thu 02:08]
    - State "STARTED"    from "TODO"       [2017-02-22 Wed 21:50]
Winner of the 2014 IFComp.  Another glulx game.  I've installed package
gargoyle-free on Linux to play these from now on.  This isn't a perfect player
though, since I can't seem to increase the font size or adjust the background

Pretty amusing, and a quality parody within the Cthulhu mythos.  Occasionally
well researched.  Rather bland in some places and rather short.
*** DONE Andromeda Awakening - The Final Cut
    - State "DONE"       from "STARTED"    [2017-02-25 Sat 01:42]
    - State "STARTED"    from "TODO"       [2017-02-23 Thu 20:57]
Scifi IF game, lengthy and with a large world.  Considering since its sequel,
Andromeda Apocalypse, was 1st place IFComp winner of 2012.  This one won 17th
in 2011, and is supposedly helpful to play first, so I'm starting here.

This has notions of a compelling story, but the actual structure of this game
is way off.  Rooms are poorly described.  Items/exits are hidden in annoying
ways.  Finally, the lore itself doesn't quite have the depth I'd expect, so
I'll skip the sequel for now.  I might come back to it later if I'm desperate
for playable IF.
*** DONE Prolog adventure games
    - State "DONE"       from "STARTED"    [2017-03-01 Wed 19:45]
    - State "STARTED"    from "TODO"       [2017-03-01 Wed 19:23]
Check out some of these IF-like games, written in Prolog.  These were mentioned
by the people in ##prolog on Freenode.

- Amnesty Treasure: Sucks and has bugs.
- Beverly Hills Thief: Solving this game is rather impossible without reading
  the code.
- Out of Inferno: Terrible.

These suck, so I'm quitting.  Prolog is a crap language to write interactive
games like this in.  Also, this code doesn't really do anything interesting
from a logic programming perspective, so it's not worth reading the source.
*** DONE Sid Meier's Alpha Centauri
    - State "DONE"       from "STARTED"    [2017-03-06 Mon 08:58]
    - State "STARTED"    from "TODO"       [2017-03-05 Sun 19:55]
While I'm not a Civilization fan, my former employer bought me a free copy of
this, so I might try it awhile.  I also have the expansion pack, Alien
Crossfire, but I'll try just the classic game first.  Installed to my Win98 VM.
Will delete the VM and restore from backup once done to keep its size down.

Unfortunately, this is just a typical Civilization game, reskinned in a scifi
theme.  I know there's massive amounts of people that love this game model, but
it doesn't work for me.  In particular, my complaints for just this game are:
- Flow of the game really starts to break down once the unit count gets huge.
- There's no way to limit the number of opponents.
- Maps have too much water, which like a lot of strategy games, is annoying to
  have to plan the logistics for.
- The computer opponents cheat, like with all Sid Meier games.
- It's hard for me to really call this kind of game strategic, really.  There's
  really only one strategy: Build up balanced economy and forces, then
  overpower the enemy either alone or with temporary alliances.

Quitting this and skipping Alien Crossfire.
*** DONE Tyrian 2000
    - State "DONE"       from "STARTED"    [2017-03-11 Sat 14:30]
    - State "STARTED"    from "TODO"       [2017-03-11 Sat 00:49]
Had a free copy from GOG for awhile.  I've played the crap out of Tyrian and
OpenTyrian long ago, so I'll just give this a quick run.

The only top-down shooter game worth playing, that I've seen.  If more action
games had these features, like slug mode, I might occasionally be interested in
trying one out.  However, I don't think I'll play this again since it's gotten
quite repetitive for me and I'm trying to avoid mindless entertainment.
*** CANCELED Torment: Tides of Numenera
    - State "CANCELED"   from "TODO"       [2017-03-18 Sat 00:29]
An RPG inspired by Planescape: Torment.  Out now, and supposedly disappointing
to most fans/backers.  I might still pick this up, since being TBS is actually
a preference for me.  However, there are still a lot of complaints that are
troubling, like significant content cuts, being extremely short, mediocre in
story, and pulling the console port bait-and-switch.  So, I might just skip it
altogether.  At best, I'll give it a wide berth for many years until it's dirt

Decided to skip this, due to the above problems.  A major factor is that the
writing is central to the game experience, yet the quality of it isn't up to
the task.  Pillars of Eternity had this problem too, ruining the experience for
me.  I also can't help but notice that without the name, the game would have a
hard time standing on its own in the market.
*** CANCELED Orwell
    - State "CANCELED"   from "TODO"       [2017-04-02 Sun 04:46]
Get on sale when it's $5 or below.  Looks mildly entertaining, but with not
enough there to justify more than that.  Might skip, since there doesn't seem
to be much thinking going on here.  Looks like you just click on stuff.

After reading some reviews, this looks too shallow for my tastes.  Skipping.
*** DONE Fallout Shelter
    - State "DONE"       from "STARTED"    [2017-04-15 Sat 01:10]
    - State "STARTED"    from "TODO"       [2017-04-14 Fri 21:46]
The Fallout-themed incremental game.  This was originally a mobile game, and I
guess it's now ported to the PC.  I'm rather burnt out on this genre, nor do I
want to engage in any microtransactions, so I'll just give it a casual

This is an okay game, but there's plenty wrong with it too:
- There's way too much stuff to click on.
- Panning the camera around so much kinda sucks.
 - Being in 3d adds nothing except obscuring characters, requiring even more
- The controls for dragging people are rather sloppy.

Was mildly entertained for a few hours, then it got old.  Quitting.
*** DONE Cube Composer
    - State "DONE"       from "STARTED"    [2017-04-18 Tue 12:34]
    - State "STARTED"    from "TODO"       [2017-04-18 Tue 11:48]
A functional programming game, written in PureScript:

Great game and interesting codebase.  Maybe give the code a closer read if I
ever decide to learn PureScript.
*** CANCELED Mass Effect (revisited)
    - State "CANCELED"   from "TODO"       [2017-04-20 Thu 03:36]
Maybe play this again with the two DLC which are now free.  Copies now in the
storage drive.  Since I have the Steam version of ME, reinstall from Steam |
RMB on game in list | properties | local files tab | verify integrity of game
files.  Then install the two DLC exes.  Not entirely sure I want to bother
replaying all of this, just to play two DLCs.

Decided to skip, due to the time-sink factor and mindless gameplay.
*** DONE Fallout Tactics
    - State "DONE"       from "STARTED"    [2017-04-22 Sat 02:27]
    - State "STARTED"    from "TODO"       [2017-03-11 Sat 14:36]
Had a free copy from GOG for awhile, so will give this a try.

- Right click to shoot land mines.
- C-LMB to get into/out of vehicles.
- Select the whole group (F12) and hit r to reload all weapons.
- See core/keys.cfg for keybindings.

Could definitely use more tactics.  Rather mediocre as is, like most games in
the genre.  Only a few things, like vehicles and the setting, save it from
being completely not worth playing.  Working against that:
- Waist high scenery is an impassible barrier.
- Containers are everywhere in game, yet it's arbitrary which ones you can
  interact with.  The only way to find out what is clickable is to mouse hover
  over everything.
- Not enough weapon variety.  There's an okay number of total weapons, but
  progression within types is lacking.  This is particularly noticeable with
  long-range rifles, which the combat system favors.
- The sentry mode aspect of combat results in some annoying behavior where NPCs
  always get a return shot.  A better option would've been a stat-based
  interrupt/quickness/sequence system.
- Not letting NPCs activate alarms is a common mechanic, but apparently they're
  unable to hear gunfire happening in the next room.
- Full auto weapons and shotguns are too accurate at range.

This game reveals the shallowness of 2D Fallout's combat system, despite the
extensions made here to that used in the RPG games.  Adding more RPG elements
to this would've been a cheap way to make this game more interesting.

Despite all its downsides, I was going to stick through with finishing this,
but then I accidentally ruined my saved game on the St. Louis mission by quick
saving just as my main character was getting killed.  Since my last save is
many hours of gameplay before this, I'll just quit.  This is probably for the
best anyway, since this experience was both boring and frustrating at the same
*** CANCELED Empyrion: Galactic Survival
    - State "CANCELED"   from "TODO"       [2017-04-22 Sat 02:57]
Looks like one of the best survival crafting games out there.  Still in early
access, so check back maybe mid 2017 at the soonest.  I'm super skeptical of
this entire genre though, given how most of the examples include very
arcade-like gameplay.  I'd rather it be more of a sim-like experience and have
survival actually be quite difficult.

Given how this game's development is going, I'll definitely be skipping it.
But, I am still curious to see how it turns out.  Maybe check in on it in a
couple years.
*** DONE Atulos Online
    - State "DONE"       from "STARTED"    [2017-04-25 Tue 23:19]
    - State "STARTED"    from "TODO"       [2017-04-25 Tue 22:28]
A very dead 2D flash-based MMORPG.  Interesting for me only because it ruined a
marriage I know about.

Terrible.  Worse than expected, even.
*** DONE Ambardia Online
    - State "DONE"       from "STARTED"    [2017-04-26 Wed 02:22]
    - State "STARTED"    from "TODO"       [2017-04-25 Tue 23:32]
Another garbage 2d isometric MMORPG, similar to Atulos, though not in Flash.
This one apparently only has 3 regular players.

Significantly better than Atulos, but still a completely generic and extremely
simplified RS-clone.  Quit after a few hours.
*** DONE Alien Swarm: Reactive Drop
    - State "DONE"       from "STARTED"    [2017-04-28 Fri 20:13]
    - State "STARTED"    from "TODO"       [2017-04-28 Fri 19:42]
A top-down F2P coop game about shooting aliens, I guess.  Surely won't stick
with it, but will give it a look for a bit.

Too much of a spaz-fest.  Insta-quit after the tutorial.
*** DONE Fishing Planet
    - State "DONE"       from "STARTED"    [2017-04-28 Fri 22:32]
    - State "STARTED"    from "TODO"       [2017-04-28 Fri 22:02]
A F2P fishing sim, supposedly ruined by microtransactions.  Will just give it a
quick look, since I've never played a fishing sim, then uninstall.

I've gone fishing in real life enough times to know this sim is pretty off from
reality.  I actually think people would enjoy a real sim experience of this
more than this arcade version of the activity.  Some aspects of the game are
done well enough that it would be possible to do here, were that a design goal.
It seems all the fishing games out there are so simple, there's no reason the
same mechanics couldn't be added to another game, given that what's here is
hardly worth an entire game on its own.  In any case, this is a trash game with
a grueling treadmill, P2W mechanics, and a lame core gameplay experience.
*** DONE theHunter
    - State "DONE"       from "STARTED"    [2017-04-30 Sun 00:12]
    - State "STARTED"    from "TODO"       [2017-04-29 Sat 01:37]
A F2P hunting sim.  Looks good, but is ruined by microtransactions.
Supposedly, you can still go around shooting birds and rabbits, so I'll try
 that.  I've never played a hunting sim before.  With this one being F2P, now I
 can give it a try finally.  If I can't get enough of this, there's a new
version of this same game, called theHunter: Call of the Wild, where most of
the content is available for a single cost (minus a few paid DLCs).

This is actually an okay game in some ways.  It's got a nice variety of
weapons, the graphics are pretty decent, and animals usually don't stand around
waiting for you to murder them.  It's also nice to see a game with something
close to a realistic muzzleloader reloading sequence.  However, based on my
limited experience, there's still a lot missing:
- The vast majority of real life big game hunting doesn't involve actively
  stalking animals.  This seems to be the only effective method here.
- There are strange restrictions on what you can kill.  Maybe this is just
  because I'm on a froob account, but having a rabbit kill not count because I
  used buckshot is immersion-breaking.
- One should have to visually inspect the type, direction, and distance
  separating tracks to extract information about animal location.  The PDA
  feature of the game makes it too arcade-like.  This is a missed opportunity
  to force players to learn something about the real world.
- There's some realism issues with some of the weapon models.  For example, the
  Contender/Encore pistol is a bit off and the SAA-clone shouldn't have a
  swing-out cylinder.  All weapons are named incorrectly.
- Reloading still is too fluid and quick, especially for single shot weapons.
  In real life, once has to fumble around with shells and such.
- Aiming at great distances is too easy, particularly from standing.
- You should always lose your sight picture when firing through a scope, except
  with pellet guns and rimfires.
- Grass is thick and obscuring of vision up close.  In the distance, it's not
  present at all.  I suspect that it doesn't work as cover for the player.
- The game needs more ambient life, like birds.
- A multiplayer server will disappear when the hosting party logs off.  This
  kicks you out, regardless of what you were doing.
- Being made by Swedes, there's several things they get wrong about North
  American hunting culture.
- Of course, the biggest problem here is the item mall.  To get anything
  resembling a complete experience, you'd have to pay hundreds of dollars.
  Even with the new version, DLC milking is present (despite the developers
  supposedly promising it wouldn't be).

Even with these downsides, if these mechanics were in another open world or
survival game, they would be awesome.  As a stand-alone, it's not really worth
full price.  Maybe if the full game only costs $5 one day, I'll pick it up.
Added the normal game to my wish list for that reason.  Also, if a proper
hunting game ever comes out one day, I'd be interested in it.
*** DONE AdVenture Communist
    - State "DONE"       from "STARTED"    [2017-04-30 Sun 03:06]
    - State "STARTED"    from "TODO"       [2017-04-30 Sun 00:12]
The communism version of the F2P incremental game AdVenture Capitalist.

I like the incremental nature of the chain of things that produce things.
Apart from that, however, this isn't as good as its predecessor.  Played for a
few hours, which is enough to see where this is going.  I don't want to stick
with any of these incremental games that are written in Flash and/or have P2W
mechanics.  This one has both of those issues.

This concludes this Steam F2P scan.  It seems this segment of the games market
is still as scummy as ever.  Not sure if I'll bother looking through these
anymore, since the results have always been net negative.
*** DONE Codewars
    - State "DONE"       from "STARTED"    [2017-05-09 Tue 00:58]
    - State "STARTED"    from "TODO"       [2017-05-09 Tue 00:14]
Doing the Clojure version of this.  I think this has some RPG-like elements
tied into it, but it seems it's mostly about training programming skills.

Did one of the problems.  Seems like it might be okay, but I since the site
clobbers my hotkeys in Conkeror, I can't paste code into the code textbox.  I
have no intention of manually typing it all in or using an inferior web
client.  Will hold out for something better.
*** DONE Eador: Genesis
    - State "DONE"       from "STARTED"    [2017-05-12 Fri 00:32]
    - State "STARTED"    from "TODO"       [2017-05-11 Thu 22:36]
Got this 4x TBS game for free on GOG.

This is an okay game, but a little too simplistic for me.  Either combat or
empire management just needs more stuff.  I guess I like that it's 2d, but
being so uninspired and derivative, there's nothing particularly note-worthy
here.  Also, I guess I'm not really into the land-based versions of 4x TBS.
*** DONE ZType
    - State "DONE"       from "STARTED"    [2017-05-12 Fri 12:29]
    - State "STARTED"    from "TODO"       [2017-05-12 Fri 11:58]
An online typing game.  http://zty.pe/

Kinda fun for a few minutes.  Not sure this is anything more than a measuring
stick for how fast you can type, however.  It's definitely unusable as a typing
practice tool, and the handling of errors might actually introduce bad habits.
*** DONE The Last Stand: Union City
    - State "DONE"       from "STARTED"    [2017-05-29 Mon 00:43]
    - State "STARTED"    from "TODO"       [2017-05-28 Sun 17:59]
The third in a line of Flash-based games that started with The Last Stand.

There's a lot of bugs in this game that downgrade the experience.  Apart from
that, I guess I'd like this if I were into action games.  Managed to finish
this anyway though, since it's not too long.
*** DONE Astrox
    - State "DONE"       from "STARTED"    [2017-06-04 Sun 23:42]
    - State "STARTED"    from "TODO"       [2017-05-30 Tue 02:36]
An asteroid mining game, marketed as a single-player Eve Online experience.
Only available on Steam, unfortunately.  I'm avoiding buying stuff on Steam as
much as possible, but since this was on sale for $1.99, I made an exception.

Rather lacking in a lot of ways:
- Definitely a casual game that seems at least a little incomplete.  Probably
  needs double the existing work to just touch up what's here.
- Lacks any semblance of being a simulator, which is really the asteroid mining
  game I want.  Interaction is focused around UI buttons.
- I don't mind the simplistic 3D models, but there's a lot of slop.  For
  example, all beams emitted from the ship originate from the central point
  within the model.
- Station interface needs some serious redesign.  Most annoying is no central
  inventory management.  All of the things you might want to do with inventory
  are split between tons of screens.
- Has an annoying bug regarding long-range combat, where once you level up
  targeting range, it's possible for your ship to fire away at an enemy and
  never hit it.

Quickly ran out of things to do except pointlessly treadmill leveling up
skills, so quitting.  I guess I got $1.99 out of it, but I'd probably feel a
little better about it at $1.29 at most.  This game is probably optimal if used
as something to play windowed while doing other stuff.  However, once you
optimize for mining speed, it once again becomes too repetitive.  Not really
the asteroid mining game I've been waiting for, by any stretch.
*** DONE Homeworld: Deserts of Kharak
    - State "DONE"       from "STARTED"    [2017-07-04 Tue 15:12]
    - State "STARTED"    from "TODO"       [2017-06-24 Sat 10:44]
A ground-based RTS and prequel to the original Homeworld.  Has 4 DLC, but I
think they do nothing outside of MP, so they can be skipped.  Grabbed on sale
for $16.99 on GOG.

Some complaints:
- Has a lot of random bugs everywhere.  Obviously needed more QA testing.
- Cutscenes should all be skippable, but only out-of-engine ones are.
- Too spaz-like.  Needs less action and more thinking/planning.  Gameplay is
  micromanagement-centric and not strategic.
- DLC assets seem to already be in game, but require money to unlock.
- Since position matters much more here than in the space games, a way to
  precisely place units would be useful.
- In skirmish mode, fleet capacity is way too low.  Skirmish mode in general
  kinda sucks, actually.
- Mission scripting sometimes has enemies pop out of random locations on the
  map.  The only counter to this is to have played it already.  Some respawning
  enemies also materialize out of thin air.
- Would be nice to be able to zoom out farther in non-sensor mode.
- Various annoying things about some mission kill my desire to replay the game.
- Units can shoot through some obstacles.
- The mission "Tombs of the Ancients" has a serious bug in it where the next
  scripted event won't trigger.  The only way to proceed is preventing enemy
  salvagers from opening the wreck with the power source artifact in it.

There's some good things about the game, most notably capturing the HW style
accurately.  Some of the missions are quite interesting too.  Overall, this is
probably a $10 game at most in value.  I would've been very upset had I paid
full price for it, but I'm only just mildly disappointed currently.
*** CANCELED Homeworld Remastered
    - State "CANCELED"   from "TODO"       [2017-07-04 Tue 16:34]
One of my favorite games of all time.  May be worth another play through with
the modern rework of it.  Given how many times I've played it though, I'd only
be willing to shell out max $10 for it, so won't get to this soon.  Currently
$35, which is way too much, particularly since the old graphics still look
okay.  Last sale was for $14, so I may pick it up if it goes below that.

Skipping.  Will just stick with normal Homeworld 1.  In some ways, I like the
older graphics better.
*** DONE Homeworld (revisited)
    - State "DONE"       from "STARTED"    [2017-07-05 Wed 17:08]
    - State "STARTED"    from "TODO"       [2017-07-05 Wed 00:40]
Replay the original Homeworld.  Supposedly, one of my favorite games ever, but
I haven't touched it in over 10 years.

- Installed 1.05 patch.
- To allow for increased RAM usage, flag the binary with =/heap 1073741824=.
- Disable the intro movies with =/disableAVI=.
- I couldn't get widescreen to work without various issues, so doing without.

The control scheme for this game is a big downside.  Played through about 1/3
of the missions.  I might come back to this later, but I think I'll skip
struggling with this for the next several days.  This game isn't quite as
awesome as I remember, but it's still pretty good.  However, I've also already
played it several times and seem to remember everything about it.
*** DONE Homeworld: Cataclysm (revisited)
    - State "DONE"       from "STARTED"    [2017-07-11 Tue 02:42]
    - State "STARTED"    from "TODO"       [2017-07-05 Wed 17:10]
The second Homeworld game, in spin-off form, with some novel mechanics.

Had issues with Direct3D causing crashes, but got it working with the 1.01
patch and using these flags: "-triple -enable3DNow -heap 1073741824 -enableSSE
*** DONE IdleLands
    - State "DONE"       from "STARTED"    [2017-07-12 Wed 18:45]
    - State "STARTED"    from "TODO"       [2017-04-30 Sun 03:35]
A node-based idle game.  Possible to run locally, but since multiplayer
mechanics are a big part of the game, it's best to just play on the official
server.  http://idle.land

Probably the best idle game I've played so far, though still not yet perfect.
Seems like this would be a perfect game for a terminal client.  The web UI here
is okay and usable, but probably the biggest downside.  Being so heavyweight,
it wastes a lot of system resources and is a bit laggy in places.  Got to level
400, then lost the urge to continue.
    - State "DONE"       from "STARTED"    [2017-07-16 Sun 00:56]
    - State "STARTED"    from "TODO"       [2017-07-16 Sun 00:37]
Some kind of web-based 2D isometric RPG.  http://rpg.mo.ee/

Too simplistic.  Fundamentally a very thin UO clone.
*** DONE Star Trek Online
    - State "DONE"       from "STARTED"    [2017-08-06 Sun 15:05]
    - State "STARTED"    from "TODO"       [2017-07-22 Sat 02:32]
F2P, so giving it a try for a bit.

- Be sure to at least disable the fly-in version of the announcement
  notifications.  This is accessed via the drop-down arrow to the lower left of
  the minimap.
- Be sure to enable auto-attack for ground mission weapons.
- To switch to shuttle, use the mini-map drop-down arrow to enter shuttle
  interior.  Then talk to the crewman to select ship.  On the bottom left of
  the ship selection dialog is a radio button for activating small/large ship.

Some complaints:
- Has a fair number of bugs that will probably never be fixed.  Most of these
  are visual, but there's some mission-breaking ones too, mostly around broken
- Would be much better as a single player game, since the multiplayer aspect of
  it isn't worth the downsides.  PvE/PvP arenas could've still be added on top
  of that SP game.
- This game isn't too bad at it, but it does have P2W items.  Though
  theoretically possible to farm for some of the pay items, the time investment
  to do so is total life murder.
- The core experience is just the same thing, over and over.
- Has mini-games.
- Too combat-focused.  I'm not a fan of the IP, but constant combat seems very
  well outside of Star Trek's focus.
- Combat, especially in MP matches, is too fast-paced with little strategy.

Played through all of the story "episodes", some of which are actually somewhat
interesting.  I'm calling this done, though I might still log in for a while
occasionally to refresh crew roster assignments.  There doesn't seem to be much
point in doing so, however, so I'll likely not stick with it.
*** DONE Rome: Total War (revisited)
    - State "DONE"       from "STARTED"    [2017-08-24 Thu 01:54]
    - State "STARTED"    from "TODO"       [2017-08-11 Fri 04:39]
I've tried a couple other Total War games, as so far this is still my favorite.

- Be sure to flag binary with "-nm" flag to disable movies.
- Go to Data\world\maps\campaign\imperial_campaign\descr_strat.txt and move all
  factions to the playable section.
- Fix the squalor bug by overwriting the copy of export_descr_buildings.txt in
  Data\ with the version I have saved.  Without this, full world campaign mode
  is nearly unplayable.

Conquered the world as the Egyptians.  This game really starts getting to be a
slog once an empire gets rather large.  Heavy hotkey usage is a must.
*** CANCELED Rome: Total War: Europa Barorum
    - State "CANCELED"   from "TODO"       [2017-08-24 Thu 19:56]
A realism mod that corrects the majority of known historical errors.

Tried installing this, but it was non-functional for unknown reasons.
*** DONE Super POTUS Trump
    - State "DONE"       from "STARTED"    [2017-08-26 Sat 18:51]
    - State "STARTED"    from "TODO"       [2017-08-26 Sat 18:29]
A semi-parody game, I guess, F2P on Steam.

Not F2P, but a demo with just access to the first level.  The gameplay is also
rather lacking and uninteresting.
*** DONE Total War: Shogun 2 - Fall of the Samurai
    - State "DONE"       from "STARTED"    [2017-09-08 Fri 12:19]
    - State "STARTED"    from "TODO"       [2017-09-01 Fri 09:36]
The stand-alone expansion to Shogun 2.  For Total War games, it's best to wait
until all DLC is released and the series has moved on by a few titles.  It
seems like this might finally be the time here.  Bought on Steam with all the
DLC for $9.99.

- Add the "More Campaign Years" mod.  Since I have the game on Steam, this can
  be done through the Steam Workshop.
- To repair ships and buildings, select them, then click the repair button on
  the interface to the left.

A few complaints:
- There's a bug where limbered artillery is nearly invincible.  Only insane
  amounts of damage can kill them.
- Computer opponents magically know exactly when they're in range of artillery.
- There's some bugs with placement of artillery.  Be sure to let them complete
  their movements before doing anything.  Also be careful around certain
  scenery.  If they do get stuck, running some cavalry through them might help.
- Naval combat needs some work.
- Computer-controlled units need some variety in behavior.
- Trees shouldn't be invincible against artillery.
- Absolutely massive install size.
- Enemies can be in certain locations that can't be hit, causing ranged units
  to waste all their ammo trying.
- General loyalty causes random defections, but there's no way to raise it.

Good game and definitely worth $10.  So far, I think this is my favorite of the
Total War series, as it does a pretty good job with early firearms (though it
gets some of the history wrong).  Short of great though, due to bugs and
oversights that would've been easy to fix.

Finished campaign mode as Satsuma faction and played various custom battles.
Skipped the historical battles, since they have to be played in sequence and
the first one is annoying.  Uninstalling, but will play this at least once more
sometime.  Also, this will replace Rome: Total War if I ever need a fix of this
type of game.  Maybe install it to my storage drive while I have fast internet
*** DONE Guild Wars 2
    - State "DONE"       from "STARTED"    [2017-09-10 Sun 01:47]
    - State "STARTED"    from "TODO"       [2017-09-10 Sun 00:16]
Now F2P, and supposedly not too annoying with the cash shop stuff, so will give
it a try.

Tried making a Sylvari necromancer.  Unfortunately, every class seems to play
pretty close to the same, with the standard knuckle-roll.  Gameplay is
definitely of the action RPG variety.  Since I'm not in the market for that,
I'm quitting.
*** DONE A Dark Room
    - State "DONE"       from "STARTED"    [2017-09-21 Thu 02:07]
    - State "STARTED"    from "TODO"       [2017-09-20 Wed 22:09]
Advertised as some kind of text adventure game, though looks like an
incremental game.  Grabbed the portable Windows binary.

Played until it got to the rogue-like feature.  Quitting, since I don't want to
manually play incremental games.  Apart from this, it doesn't seem to be
anything special.
*** DONE Everquest II
    - State "DONE"       from "STARTED"    [2017-09-28 Thu 16:59]
    - State "STARTED"    from "TODO"       [2017-09-09 Sat 11:56]
I've been meaning to briefly check out the F2P version of this on Steam.

- Installing takes many, many hours.
- Graphics haven't aged well.  EQ1 is easier on the eyes than this.  Characters
  have that early 2000s clay-like appearance.
- Has the whole grey-con mobs giving reduced XP/drops problem.  There is two
  ways around this, mentoring and chronomagic, but both kinda suck.
- Unlike some F2P games, this one is constantly trying to get you to spend
  money.  Particularly egregious is the random pop-up spam and paywalled
- Froobs can't use the in-game market.
- Crafting is represented by a lame mini-game.

Made a ratonga defiler.  This game is very generic.  There's really nothing
compelling about EQ2 versus other modern theme park MMOs.  In fact, it's
inferior to most of them.

Gave up, mostly due to all the paywalls and how uninspired it is.
*** DONE Everquest 1 (revisited)
    - State "DONE"       from "STARTED"    [2017-10-24 Tue 18:24]
    - State "STARTED"    from "TODO"       [2017-09-30 Sat 14:35]
Now that I know how to play EQ1 p99 quite well, I'll give this another try.
Last time I just finished the n00b area, so I'll venture out into the world

- Always still up on one of the guards in the n00b area.  At least do the
  combat skills, since getting them later will be nearly impossible.  To do
  this at level 14, be sure to bind there and gate back before hitting 15.
- Install Brewall's maps: http://www.eqmaps.info/eq-map-files/
- Do this quest for a 20-slot bag.  Go to the neighborhoods area adjacent to
  the Guild Lobby.  Pick any location.  Sunrise Valley is the area prior to the
  lot: http://everquest.allakhazam.com/db/quest.html?quest=5522

- There's still no good way to quickly sell stuff to vendors.  This is
  particularly a problem now since there are more junk drops.
- The vast majority of the game is an abandoned wasteland.  There's no reason
  to go to these zones since the only worthwhile gear is attainable on the
  standard progression path.
- It's hard to tell what features are still worthwhile and which ones are a
  useless timesink with inflated away returns.
- The main online resource for the game hides some of the info behind a
- A system was added that ranks items by required and recommended level.
  Wearing an item below the required level negates its benefits.

Multi-boxed a dark elf magician and a half-elf druid.  Also did some botting
with the duo too.  I was getting close to the paywall and trying to decide
whether to subscribe or not, but then quit around level 60 due to DBG
arbitrarily changing the name of my druid.
*** DONE Sacred Gold (revisited)
    - State "DONE"       from "STARTED"    [2017-10-31 Tue 11:23]
    - State "STARTED"    from "TODO"       [2017-10-28 Sat 20:20]
Will give this another try with a different class.  Will skip the searching for
secret hiding spots this time.

- Run config.exe in the game directory to set windowed mode.

Tried most of the classes out briefly and stuck with the ranger.  Apart from my
original observations:
- Clicking on stuff and character control is sometimes sloppy, particularly in
- Combat is too fast paced, making switching between skills less viable.
- Despite the combat speed, buffs cast slow, requiring their casting prior to
- Mob fleeing, while realistic, is extremely annoying for melee characters.
- Information is lacking on this game, making build planning guesswork.  Since
  you can't respec, you could end up gimped if you make an incorrect assumption
  about how a build will play out.

Generic, boring, and repetitive.  Thinking about a build could theoretically be
interesting, but the amount of mindless clicking in this game is unbearable for
me.  Quitting around level 27 or so.  I guess I'm just not in the market for
action RPGs anymore.
*** CANCELED PlaneShift (revisited)
    - State "CANCELED"   from "STARTED"    [2017-11-08 Wed 21:32]
    - State "STARTED"    from "TODO"       [2017-11-08 Wed 18:11]
Now that I'm pretty knowledgeable about EQ1, try this out to see if it's a
decent clone.

I can start the game, but it crashes whenever I try to enter the game with my
character.  Sometimes it crashes at the character creation screen to.  Tried a
few graphics settings for awhile, but I don't think that's the cause.  Giving
up.  Maybe I'll try again later some day.
*** DONE Starcraft II
    - State "DONE"       from "STARTED"    [2017-11-10 Fri 01:35]
    - State "STARTED"    from "TODO"       [2017-11-08 Wed 22:55]
The single player campaign of the base game is F2P now, so might as well give
it a try.  Requires installing Blizzard's game manager client, so clean up all
the crapware when done.  Playing on max slow.

Unfortunately, it looks like F2P here means you can only play 4 missions.
Uninstalling game and Battle.net client.

Like all recent Blizzard games, this is highly polished and pretty impressive
at being so finely tuned to appeal to the maximum number of players.  The
consequence of that, however, is that someone like myself finds it at best
blandly entertaining.  Definitely won't be buying the full game.
*** DONE Meritous
    - State "DONE"       from "STARTED"    [2017-12-26 Tue 00:08]
    - State "STARTED"    from "TODO"       [2017-12-25 Mon 18:15]
A GPLed dungeon crawl game.  Source available and supposedly runs on Linux, but
will just use the Windows binary.  http://www.asceai.net/meritous/

This game is difficult to control with the keyboard, so I mapped the gamepad to
the keyboard controls using JoyToKey.

Beat the game, but in "wuss mode".  Since that was pretty tough as is and the
gameplay here is very simple, I'll call it good enough.
*** DONE Creeper World
    - State "DONE"       from "STARTED"    [2017-12-26 Tue 19:30]
    - State "STARTED"    from "TODO"       [2017-12-26 Tue 01:40]
An online, flash-based, tower-defense game.  The difference here is that the
enemy is primarily composed of a two-dimensional, spreading entity that must be
pushed back.

Well, I played the intro simulator missions.  Decided not to stick with it for
reasons that include:
- The drone tower is manually operated.
- Tower range is too short.
- Needs more variety of towers.
- Needs deeper mechanics.
*** DONE Immortal Defense (revisited)
    - State "DONE"       from "STARTED"    [2017-12-27 Wed 19:36]
    - State "STARTED"    from "TODO"       [2017-12-22 Fri 10:57]
Will give this another try.  I did like the super-strategic nature of point
placement, but had some qualms that I think I can ignore this time around, to
some extent.  A slightly updated version is available on Steam as well, but
I'll just use my old offline copy.

- Use S to sell points.
- Note that yellow paths slow enemies, blue speeds them up.
- Releasing a charge attack inside of an enemy will make all projectiles hit
- The charge attack levels up for each campaign.
- To enable cheats, hit C-u.  Then use C-<numpad 2> to increase funds, and
  C-<numpad 3> to add more towers.

Played all of this, but due to the last level being insanely long, such that
trying different strategies would take many hours, I cheated a bit to get past
it to see the ending (which was a bunch of nothing).  I also skipped the final
bonus maps, since they seem a bit annoying.

Great game and very original ideas and design.  Lots of variation on strategy
and most maps are of high quality design.  Mechanics also vary throughout the
game, which is another nice touch.  My main complaint is I wish there was just
a little more precision in how a tower will play out on a given map.  You have
to rely on the cursor to clean up the nondeterminism.
** Computer science/programming goals
*** CANCELED compiler design
    - State "CANCELED"   from "TODO"       [2017-03-16 Thu 15:45]
A compiler can be defined as: an application that transforms a stream of
symbols into a stream of different symbols.  This more generic definition, as
opposed the more narrow common definition, makes it more obvious why this is on
the list.  Compiler design is important for a lot of things not normally called
compilers.  I'm also interested in actual source compilers too though, and am
considering contributing to one or more.

Skipping this, for now.  Canceled all related books.
*** CANCELED algorithmic information theory
    - State "CANCELED"   from "TODO"       [2017-03-18 Sat 00:21]
In particular, things like Kolmogorov complexity.  There's also a more general
math sub-field of information theory, but I think the CS variant (which
combines that with computability theory) is sufficient.

Canceling since this doesn't fit into my focus on PLT, CT, and types.  This is
a prime candidate for revisiting after some of my major goals are complete.
*** DONE logic programming
    - State "DONE"       from "STARTED"    [2017-04-17 Mon 00:56]
    - State "STARTED"    from "TODO"       [2017-02-28 Tue 11:50]
One of the 3 main programming paradigms.  For this effort, I'll not do a deep
dive on it, but rather just learning the fundamentals of logic programming that
can then be applied in more useful languages and EDSLs.

- Understand the scope of logic programming and know its core concepts.
- Be able to practically apply these ideas in core.logic, presuming it is worth
  working in.
- Get some context for the logic programming influences on theorem proving.
- Determine whether to pursue the topic further, perhaps queuing up one of the
  modern logic programming languages, like Curry, Twelf, or Mercury.

The plan:
- [X] Fine-tune prolog-mode a bit on Emacs.
- [X] Read Wikipedia articles on Prolog and logic programming.
- [X] Read a quick SWI-Prolog tutorial online.
- [X] Read chapters 1-7 of The Art of Prolog.  Take notes along the way.
- [X] Read documentation on core.logic.
- [X] Write a demonstration application in core.logic.
- [X] Give presentation on logic programming and core.logic.

Pretty much worked out as planned.  The only downside is core.logic's
documentation is rather lacking.  The concepts are now in the brain, though I'm
not sure if I'll ever actually use them.
** Math goals
*** CANCELED differential/integral calculus
    - State "CANCELED"   from "TODO"       [2017-03-16 Thu 08:16]
Find a book on this subject and refresh knowledge on the subjects here.  Still
have my old Calc I and II textbooks, so I can use those as a last resort.

After thinking about whether to actually go ahead and do this, I've decided to
skip it since it's not been even remotely useful in my life so far.  Any value
from having taken 3 calc courses in college has already been factored into my
*** DONE ZFC set theory
    - State "DONE"       from "STARTED"    [2017-03-23 Thu 01:55]
    - State "STARTED"    from "TODO"       [2017-03-22 Wed 22:16]
Restricted set theory + the axiom of choice (which I see no reason to
preclude).  Non-Cantorian set theory is far less applicable to my interests, so
ignore those for now.  Maybe check out NBG set theory afterward, since this is
relevant to category theory and is just an extension of ZFC.

Downgraded this to just be a refresher, since I recently did a fair amount of
set theory stuff in GMU's grad-level discrete math course, and a few other

The plan:
- [X] Read set theory Wikipedia article and related articles, including naive
  set theory, Russell's paradox, ZFC, the axiom of choice, and all the expanded
  section articles in "Areas of study".
- [X] Read up on NBG set theory.

- Symmetric difference: Exclusive difference.  Elements that are in one but not
  both.  A Δ B = (A ∪ B) \ (A ∩ B).
- Reminder: the power set of A is the set of all possible subsets of A.
- Topos theory is a category theoretic alternative to set theory.
- NBG set theory is one of a flavor of set theories that include both sets and
  "proper classes".
- In homotopy type theory, sets can be defined as certain kinds of types.
  Maybe look into this when/if I get around to HoTT.

There's a lot of various set theory "flavors" that can be lazy-loaded as they
become relevant in life.  NBG is just one of them.  I do feel slightly more
motivation to take some time to read a text on topos theory now, but I'll put
that off until later.
** General life goals
*** CANCELED find USB switch
    - State "CANCELED"   from "TODO"       [2017-03-30 Thu 01:12]
Replace my crappy KVM switch with a USB switch.  My KVM switch has many
- It's a VGA and PS/2 switch.  making me need PS/2->USB adapters.
- I only use the K part, meaning there's a bunch of useless wires dangling
- It sometimes gets into weird modes (indicated by a flashing status light) and
  doesn't work, requiring a reboot of the machine it's non-functional on.

There may be a downside to this in that it disconnects the devices on the
non-active computer.  Test this by pulling and re-plugging keyboards and mice
into my FreeBSD machine to ensure function.

I was going to buy the IOGEAR GUS404, but then tested hot-swapping a USB
keyboard on FreeBSD.  Looks like that doesn't work, though hot-swapping mice
does.  I'll check back in a few years to see if it works then.  Until that
time, I'll stick with my current setup.  If I can more permanently locate my
desk, I might rig up a system with zip-ties or something to mitigate the cable
situation.  If I can get this working one day, I might switch to a Unicomp
EnduraPro with the integrated pointing stick.  Then I could toss my mice
altogether and just keep one around in the desk for game playing.
*** DONE replace laptop
    - State "DONE"       from "STARTED"    [2017-04-07 Fri 20:38]
    - State "STARTED"    from "TODO"       [2017-03-26 Sun 22:43]
Maybe get a C-grade refurbished Lenovo x220, which are now available for $127.
These have a better keyboard than the later models (no island keys), a
full-size DisplayPort out (unlike the later mini-DP), and the HD and RAM can be
upgraded.  Given how cheap this is, it's low risk for trying out.  My main
impetus for it is the inability to hook up to external displays on my netbook,
its crappy keyboard, and the broken screen backlight on it.  Looks like
everything is supported on FreeBSD with this model.  The only downside is that
this model is from 2011, which is pretty old.  However, it is better hardware
than what I have now.

Well, they sent me an x230 instead of an x220.  They also included the wrong
battery.  I'll keep it and try to make it work though, since this one seems
pretty nice.  Otherwise the laptop is in great condition.  The only noticeable
wear is a few very minor scuffs on the lid.  Given how that's going to happen
anyway with use, that doesn't bother me at all.

- Supports SATA III SSDs of 7mm height.
- Extra 6-cell OEM batteries are available on Amazon.  Only get the +44
  variant, which includes an extra chip required for charging.
- Remove the keyboard to gain access to the fan.  Remove two screws in the back
  with the keyboard icon next to them, then slide the keyboard up and remove
- Memory is 16GB (2x8GB) max of 1600MHz DDR3 in 2 204-pin SO-DIMMs.  Will just
  upgrade to 2x4GB.
- See the FreeBSD Wiki page: https://wiki.freebsd.org/Laptops/Thinkpad_X230
- Consider buying a replacement fan and keeping it aside for later.
- Set regdomain on the wireless adapter to FCC4.  Others can't get scan
  results, for some reason.

Got everything working perfectly, as far as I can tell.  Even the Fn keys work.
This is a better solution for mobile computing than buying cheap netbooks.  I
get a better and more serviceable computer, all for less cost.  I'll be buying
refurb Thinkpad ultrabooks from now on, preferably on the low end of the
possible price range, like this one.

As for my old netbook, I'll try putting NixOS on it, I guess.  I'll use this
when I don't want to trash up my nice ThinkPad.  Otherwise, I'll leave it
stored in the closet as a backup.
*** DONE review/correct all personal website content
    - State "DONE"       from "STARTED"    [2017-05-05 Fri 10:05]
    - State "STARTED"    from "TODO"       [2017-05-06 Sat 18:24]
Go through everything I've written on the personal website and tidy it all up
for correctness.  Anything too hopeless and/or outdated should be deleted.

Reviewed and cleaned up all content, excluding the game design documents.  Also
went ahead and further cleaned up the site design and unified the content pages
style with the main page.  This is a pretty good looking site now, I think.
** Macro-goals
*** DONE year-end review for 2017
    - State "DONE"       from "TODO"       [2018-01-06 Sat 01:04]
Context: 2016 was a largely wasteful year with the only exception being that I
dedicated most of my energy to attempting to manage a team of developers.
Results were mostly positive, but it took its toll in every other area of my
life.  On the other hand, I can't completely blame work for this.  Stagnation
in other areas was still my fault, and I've already started turning it all
around.  Maintain that pace this entire year (and presumably permanently).
Accordingly, I'm leaning much harder on this list from now on, and putting more
effort into keeping it maximally useful.

Goals for 2017:
- Make a pass on everything listed here and cancel stuff no longer in line with
  current goals.  I can always add them later, but for now, there's a lot of
  noise here.
- Get physical health back to near 100%.  This will be easier without work, but
  still totally doable now and there's no reason to accept anything
  non-optimal.  Get weight to under 190.  Be able to at least jog a mile in
  under 8 minutes (currently I can't do that at all).  I'll be happy if I can
  get close to this, but I'm trying to set myself up for success.  See
  refactored task for details.
- Retirement plan:
  - Come up with plan this summer with details on where I want to live and what
    the economics of the plan looks like.  Reform sections dedicated to this in
    ideas.org, which are currently preliminary thoughts, into a real plan.
  - Remain completely detached from acquaintances and invest zero energy into
    inter-personal relationships.  Since I'm definitely leaving, this would be
    wasted effort.
- General notion of self-study goals to complete:
  - Clojure mastery.  I at least need to close the skills gaps on my primary
  - Logic programming.
  - Front-end skills.
  - All skills related to the current job.
  - Clean out a lot of my tasks that are one-off and don't fit as nicely into
    larger efforts.  Some of these I'll do, others I'll just cancel.
  - At least get started on my long-term curriculum.  Even with all the above,
    I should be able to make some decent progress on this.
- Distraction management:
  - Actively ignore all popular media about everything.  This is good to do in
    general, but especially important these days due to the general public
    discourse being so low brow, nonsensical, and negative.
  - Unsubscribe from all forums.  Replace only with subscriptions to study
    topics, like FPLs and types.  This prevents time-wasting feeds full of
    general interest information from wasting hours at a time.
  - Only venture onto the general web when seeking information or asking
    questions where I cannot get the answers elsewhere.
  - Related to this: I've noticed the pursuit of completeness is occasionally
    an obstacle to overall progress.  Make a point not to get bogged down on
    tough spots in self-study.  Either plow through or skip it, then make a
    note to look into it later if it's even all that important.  Intentionally
    do less important tasks half-assed (like tools and library research).
  - Maximize use of FreeBSD machines.  Only use Windows box for dedicated
    tasks like VMs and games.
  - Have only a max of 1 active game at a time.
  - Have only a max of 1 active fiction book at a time.
  - Read a book on this subject.
- Sell more items in line with goals in tasks.org.  I still feel a bit weighed
  down by physical goods.
- Do a series of presentations on various computer science topics at the
  Cap-Clug meetup.  This will be an attempt at "conference-driven development"
  to knock out a bunch of the topics that I've been vacillating on in regards
  to self-study.  The downside here is that with 2-month increments, I can't
  really deep-dive on any of them too much, but the end result should be more
  desirable than not doing this.  I'll try to sync this with my schedule of
  things I was going to do anyway, as much as possible.

- List cleanup and increased usage: Done.  Pretty happy with how this list
  looks now.
- Physical health: Total failure.  Ended up pretty close to exactly where I was
  at the beginning of the year.  This is a top priority for next year.
- Retirement plan: Done.  In the middle of executing plan now.  Also rewrote
  and updated all of ideas.org.
- Study goals: There's always more I can do, of course, but I consider Clojure,
  logic programming, and one-off tasks successful.  Got started on long-term
  curriculum, as planned.  Never got around to the front-end skills.
- Distraction management: Success most of the year.  Occasional lapses from
  this plan saw productivity dives, proving its effectiveness when I stick to
  it.  I owe the comparative hyper-productivity this year to mostly adhering to
  this plan.
- Stuff decrease: Sold a few things, but intentionally suspended the effort
  since I'll be ending apartment life and am not sure what I'll need.
- Presentations: Did many of these.  This was lots of work, but worth it.
  Might do a couple in 2018.
- Conclusions: Apart from the health goals, this was my most productive year
  ever.  A fair trade for a being a year older, which is all one can ask for
  out of life, I suppose.  I still see room for improvement, however, so next
  year I'll attempt to build upon this.

* Project List (2016)
** Books: Math
*** CANCELED Matrices and Transformations
    - State "CANCELED"   from "STARTED"    [2015-10-08 Thu 09:57]
    - State "STARTED"    [2010-07-20 Tue 02:26]
A short book on matrices.  I'd like to do the exercises here in Maxima if
possible.  I may restart this, since it's been awhile since I read the first
few chapters.

Canceling this for now due to my focus more on abstract algebra, categories,
and types.  I'll still do some basic study in the applied math world, but will
try to lazy load specific topics like this.
*** CANCELED Introduction to Linear Algebra (4th. ed.)
    - State "CANCELED"   from "TODO"       [2015-10-08 Thu 09:59]
By Gilbert Strang.  Highly recommended by the Mahout mailing list users.  Also
check out https://cwiki.apache.org/confluence/display/MAHOUT/Reference+Reading
for related recommendations.

Canceling, along with other specific applied/analytic mathematics.
*** CANCELED Linear Algebra: 2nd Edition
    - State "CANCELED"   from "TODO"       [2015-10-08 Thu 10:01]
The most promising of my general linear algebra texts.

Canceling, along with other specific applied/analytic mathematics.
** Books: General Non-fiction
*** DONE Letter to a CES Director
    - State "DONE"       from "STARTED"    [2016-06-14 Tue 20:54]
    - State "STARTED"    from "TODO"       [2016-06-14 Tue 18:47]
A lengthy essay collecting many of the problems with Mormonism.

Not bad, but all review for me.  The only thing here I didn't know about was
that Smith ordained blacks and not until Young was the ban instituted.
*** DONE Men on Strike
    - State "DONE"       from "STARTED"    [2016-07-19 Tue 15:05]
    - State "STARTED"    from "TODO"       [2016-07-19 Tue 08:40]
Recommended by MRA-esque coworker as a particularly good tome on the movement.
Not too interested in the topic personally, but will give at least this one
book a read.

Kinda crappy actually.  While I agree with many of the points here, the
presentation is blog quality, and not worthy of a book on the subject.
*** DONE b0g
    - State "DONE"       from "STARTED"    [2016-07-31 Sun 23:16]
    - State "STARTED"    from "TODO"       [2016-06-13 Mon 09:15]
I read all of this ezine in college, but this was before I was particularly
good at programming (not that this matters in this case, since the code here is
all simplistic stuff).  b0g was possibly my favorite, but I'll see what I think
about it now.


Not as entertaining as I remember, but there's still a few good articles in
here.  This zine apparently had a real problem with text formatting and would
often have line-wrapping issues, making some articles frustrating reads.
*** DONE ThE HaX0R bRoThErS NeWzLetTeR
    - State "DONE"       from "STARTED"    [2016-08-01 Mon 02:56]
    - State "STARTED"    from "TODO"       [2016-07-31 Sun 23:18]
This was my favorite ezine from the late 90s.

Still as amusing as it was back then.  I was going to read some additional
zines, but the rest seem like a waste of time.
*** DONE Intro to Reloading
    - State "DONE"       from "STARTED"    [2016-10-01 Sat 20:04]
    - State "STARTED"    from "TODO"       [2016-09-27 Tue 01:12]
A short e-book by Lyman.

Knew everything here already.
*** DONE Lyman 48th Edition Reloading Handbook
    - State "DONE"       from "STARTED"    [2016-10-10 Mon 12:24]
    - State "STARTED"    from "TODO"       [2016-10-01 Sat 20:09]
The 2004 version of this handbook.  The 49th edition is out now, but I have
this on in ebook form, so I'll read that instead.  I don't intend to buy a
newer version of this, since it lacks the cartridges I'm interested in.  In
fact, it just covers the more common stuff.  On the other hand, it's supposedly
worth reading apart from the loading data.  I'm doing it to just make sure
there's no knowledge gaps before I start actually doing this.

There's some good info in here, but a few things I don't completely appreciate,
like the shilling in some of the compendium of articles.  Also, it'd be nice to
see more history on individual cartridges.
** Technology and software
*** DONE Amazon EC2
    - State "DONE"       from "STARTED"    [2016-01-11 Mon 10:03]
    - State "STARTED"    from "TODO"       [2015-11-09 Mon 13:23]
Amazon now has a "free tier" for micro-instances that could solve pretty much
all of my server needs for free.  Set one of these up with FreeBSD and consider
migrating over to it once my RootBSD plan runs out.  Or, just get one and use
it as a backup server.

Need to look into this for work anyway, so combining this task with that.
Unfortunately, it doesn't look like this makes complete sense for my personal
needs.  The issues are:
- Only 750 hours of up to 12 t2.micro instances are available per month.  This
  would allow 1 of these to run all the time.  This is fine, except that you'd
  quickly extend into extra ECUs if you wanted to do anything.
- FreeBSD isn't an official on-demand AMI.
- All of these services within AWS and EC2 are rather poorly organized.  It's
  hard to tell what you're actually getting, even after reading up on it for
  awhile.  I definitely don't want to be an expert on a vast system of
  proprietary services, especially ones that are guaranteed to change quickly.
- The rest of this might be acceptable, but there's an ultimate deal-breaker in
  that the free services only lasts for 12 months.

All that said, if I have nothing better to do in the future, I may use these
services for off-site, temporary storage when upgrading and also for backups.
This is, however, a great option for future software development resources,
though I should probably at least compare it to Google's offerings before
spending anything.
*** DONE lazybot
    - State "DONE"       from "STARTED"    [2016-03-15 Tue 01:18]
    - State "STARTED"    from "TODO"       [2016-03-13 Sun 10:25]
An IRC bot, written in Clojure.  Useful for exposing a REPL to a channel, which
I'll need for my work IRC channel.  https://github.com/Raynes/lazybot

- Copy over the example.policy file in the root project directory to
  ~/.java.policy in order to get Clojure evaluation working.
- Copy over ~/.lazybot to ~ and edit the config.clj file.
- Ended up forking the project and making a private version (since it has some
  private keys in it) to BitBucket.  Wrote one plugin so far.
- Start with
  java -jar ~/src/lazybot-aicig/target/lazybot.jar --logpath ~/a2tbot.log
*** DONE Ethereum
    - State "DONE"       from "STARTED"    [2016-03-29 Tue 15:36]
    - State "STARTED"    from "TODO"       [2016-03-07 Mon 08:00]
Come up with a plan to self-educate on this topic.  In outline, this appeals to
me in ways Bitcoin doesn't and is similar to my vision for the way forward in
this realm.  Decide if this is something I want to look into more and possibly
build stuff on top of.

- [X] Read the white paper: https://github.com/ethereum/wiki/wiki/White-Paper
- [ ] Read the official docs on the current release:
- [X] Install go-ethereum on work machine and at home.
- [X] Create account.
- [X] Mine some ether.
- [ ] Read the console guide and maybe the other docs on the client:

Did some of the reading.  Ethereum, while still somewhat exciting and certainly
better than Bitcoin, has downsides to it that I'm now aware of.  The biggest,
of course, is that it really is a "world computer" in that it is only a single
computer.  That computer is extremely limited in capability, and probably
needlessly so.  Furthermore, being a node within it seems no longer possible
via CPU mining.  I may come back to this at some point though, and give it
further research and possibly implement an idea I had for it (an Ethereum-based
casino service).
*** DONE tmux
    - State "DONE"       from "STARTED"    [2016-04-07 Thu 22:20]
    - State "STARTED"    from "TODO"       [2016-04-04 Mon 07:59]
Resisted using this due to GNU screen's ubiquitous nature.  However, since
screen is an effectively dead codebase with bugs that will never be fixed and
is suffering massive bitrot, checking out its likely successor is probably
worth the effort.  tmux also received the de Raadt thumbs up for code quality.
Will also be using this for work, giving the switch extra impetus.  I may even
uninstall screen completely.

- Has an extra, otherwise-unused dependency on libevent.
- Has some .conf examples in the distribution.
- Don't install with tty/keys patch.
- The tmux server can still be running, even if there are no sessions.  Run
  =tmux kill-server= to ensure it isn't up.  This could prevent new
  configuration changes from being recognized.

- [X] Install tmux.
- [ ] Read all available docs, the .conf examples, and search for blog posts
  for customization ideas.
- [X] Browse the codebase a little to see what's so great about it.
- [X] Maybe look at screen's source to see what's so bad about it.
- [X] Configure tmux to have similar keybindings to my current screen setup.
  I've got everything working nicely together as it is now.  Ensure that nested
  tmux sessions work.
- [ ] Check out emamux, which supposedly allows Emacs to interact with tmux.

Skipping emamux, since it doesn't seem to do anything particularly useful.

The commentators on tmux vs. screen code quality weren't kidding.  screen's
source is a complete disaster.  Meanwhile, tmux is a great example of how to
write a modern day C project.

Unfortunately, tmux doesn't provide configuration file commands for
initializing windows.  Will have to add a shell script for this at some point.
Will spend more time researching all the finer points of tmux later.  For one,
I need to remove the tmux status bar.
*** DONE do another round of Emacs yak-shaving
    - State "DONE"       from "STARTED"    [2016-05-07 Sat 08:25]
    - State "STARTED"    from "TODO"       [2016-04-13 Wed 00:37]
It's been over 6 months since I did this, so time to get everything up to date
again.  If nothing else, I definitely need the new version of CIDER.

- Updated all ELPA packages, most notably bringing CIDER to 0.11.0.  Got rid of
  my custom cider-eldoc.el file since apparently that feature works now.
- Updated volatile-highlights.el.
- Updated SLIME.
- Removed helm.  I installed this for use with Python, but I don't think my
  current setup needs it anymore.
- Updated ruby-mode.
- Updated web-mode.
- Updated js2-mode.
- Updated gnuplot-mode.
- Updated markdown-mode.
- Updated elscreen.
- Updated git-gutter.
- Updated powerline.

Broke out some larger tasks.
*** DONE reorganize all bookmarks
    - State "DONE"       from "STARTED"    [2016-08-03 Wed 13:06]
    - State "STARTED"    from "TODO"       [2016-08-01 Mon 09:34]
Condense these down further.  These days, I kind of consider my bookmarks less
a collection of links in the classic sense and more of an organization of
things I'm thinking about and trying keep structured.  While org-mode is great
for that, I still get value from a topic-centered web-centric list.
    - State "CANCELED"   from "TODO"       [2016-08-03 Wed 13:18]
An interactive shell, reminiscent of Genera.  Needs work before full editor
integration and such is done (apparently Emacs is already done).  Check back in
a few years to see if this got funded and has been ported everywhere.

Canceling due to not being open source.
*** CANCELED AutoKey
    - State "CANCELED"   from "TODO"       [2016-12-31 Sat 09:33]
Installed this for Linux to create a auto-farm script for Choria.

This program probably works, but isn't the kind of thing I want to get good
at.  I'll revisit it if I'm ever desperate.
** Books: Fiction
*** DONE The Sirens of Titan
    - State "DONE"       from "STARTED"    [2016-04-08 Fri 10:39]
    - State "STARTED"    from "TODO"       [2016-04-05 Tue 00:47]
A Vonnegut novel about omniscience and such.

Cleverly written, but often predictable.  Worth a read, though only for
entertainment purposes, since no novel or new ideas are explored here to any
useful extent.
*** DONE Armor
    - State "DONE"       from "STARTED"    [2016-05-04 Wed 22:32]
    - State "STARTED"    from "TODO"       [2016-05-01 Sun 02:13]
A military scifi book by John Steakley, focused on the impact of conflict to
the human mind.

Not that great.  Starts off bad, gets only okay by the middle.  Ending was
super predictable.  Otherwise completely generic.
*** DONE Southern Reach trilogy
    - State "DONE"       from "STARTED"    [2016-05-23 Mon 00:30]
    - State "STARTED"    from "TODO"       [2016-05-05 Thu 08:40]
A scifi series about expeditions to a mysterious, abandoned area.
- Annihilation: A compelling mystery, though nothing is really resolved here.
  Well written, mostly.
- Authority: Also really good.  In fact, I think I like this book better in
  some ways, though it lacks the particular uniqueness of the first.
- Acceptance: Not that great.  Mostly a reveal-dump with unsatisfying results.

The first two books here are worth reading, but the series is ruined by the
final one.
*** DONE Nexus trilogy
    - State "DONE"       from "STARTED"    [2016-08-26 Fri 03:22]
    - State "STARTED"    from "TODO"       [2016-08-08 Mon 05:39]
A sci-fi novel series exploring creation of a networked hive mind.  Worried it
might be full of lame action due to being billed as a thriller.

- Nexus: This author familiar with the basics of software development.  The
  same can't be said for other domains, like firearms.  Would've preferred
  skipping the techno-thriller elements, as behind this is a solid sci-fi
  novel.  Appropriately pessimistic about government in general, but too
  optimistic about its effectiveness.
- Crux: Too many party and highly-emotional convergence scenes.  Has annoying
  chapters from a child's perspective.  Even more mindless action than the
  former book.  Very little in the area of new ideas or new perspectives on
  previously introduced ones.  Continues the story seamlessly, but fails
  everywhere else.
- Apex: Some of the author's political leanings start to show here.  This one's
  pretty bad and not even a good thriller.

Apart from the reams of boring crap, my biggest complaint about this execution
is that many computer experiences are described via emotions and metaphor.  We
learn nothing about the OS central to the story except that it has drop-down
*** DONE Return From the Stars
    - State "DONE"       from "STARTED"    [2016-10-10 Mon 22:52]
    - State "STARTED"    from "TODO"       [2016-08-27 Sat 01:40]
A Stanislaw Lem novel about future shock.

Achieves its goal and has the standard pessimism typical Lem novel, but is
definitely the weakest of his that I've read.  Was quite the chore to finish.
A better book would have used this as its first half or third, resolved the
ending in the opposite way, and filled the rest with another adventure.
*** DONE The Report From Iron Mountain
    - State "DONE"       from "STARTED"    [2016-10-11 Tue 13:14]
    - State "STARTED"    from "TODO"       [2016-10-10 Mon 23:04]
Available online here:

There's open debate about whether this is a hoax or not, but after reading it,
I can unequivocally state that it definitely is.  There are many things amiss
or taken from a popular culture understanding of an academic view on a matter,
but the most telling first sign for me was the reference to an expert system
which uses genetic algorithms to predict general outcomes in the real world
given almost any input.  The participant in the study affirms that they had
this working, to great effect no less, and uses terminology to talk of it that
could easily be straight out of early AI-boom hype.  Were it even not for that,
I've read more than enough documents to come out of committee to know what one
of those looks like, versus one written by an individual, particularly one with
only a surface understanding of the matter.

That's not to say it doesn't have its merits and or isn't well written at
times.  I'd say it's still worth a quick read, but not a close study, mainly
due to its simple lack of extensive substance.  I'll note that there's some
things here that I agree with the analysis on, but mostly the opposite is true.
The only very general point I find salient enough to stand out is the notion
that war, instead of being an extension of policy, is an entity that might
exist to serve itself, or be served by the societies participating in it.  The
comparison of the effort of defense to pyramid-building is quite appropriate.
*** DONE Saturn Rukh
    - State "DONE"       from "STARTED"    [2016-11-17 Thu 00:52]
    - State "STARTED"    from "TODO"       [2016-11-06 Sun 01:42]
Another novel from the so far excellent Robert L. Forward.  The premise here,
being stranded atop a massive flying alien in Saturn's atmosphere, seems a
little silly on the surface, however.

Has some nicely realistic orbital mechanics, but pretty much everything else
about this book is either lacking or outright bad.
*** DONE The Black Cloud
    - State "DONE"       from "STARTED"    [2016-11-30 Wed 22:24]
    - State "STARTED"    from "TODO"       [2016-11-18 Fri 21:35]
A supposedly hard scifi novel by Fred Hoyle about a cloud of gas that enters
the solar system, blocking solar radiation.

Pretty good, despite a few minor flaws.  The author makes a solid try at
writing a super-intellect's dialog, but doesn't quite make it convincing.  As
usual, it doesn't have much interesting to say.
*** DONE Old Man's War series (continued)
    - State "DONE"       from "STARTED"    [2016-12-15 Thu 01:02]
    - State "STARTED"    from "TODO"       [2016-12-10 Sat 21:39]
Two more books in this series have come out since I finished it.  I think these
are collections of novellas, and supposedly they aren't as good.
- The Human Division: Includes the short story "After the Coup".  Quite
  entertaining for a good portion of it.  The only downside is that nothing
  regarding the story arc is really resolved.
- The End of All Things: A necessary read to resolve the many open threads from
  the previous book.  Not as good, however, but still worth reading.
- Questions for a Soldier: Just a quick short story.  Kinda meh.
** Work-related topics
*** DONE upgrade VM to Linux Mint 18.1
    - State "DONE"       from "STARTED"    [2016-12-29 Thu 00:26]
    - State "STARTED"    from "TODO"       [2016-12-28 Wed 12:10]
Time to update all packages to latest and rearrange a few things.

Migrated everything over.  Shared folders, which weren't working last time for
some reason, now are.
** Games to play
*** DONE MicroVolts Surge
    - State "DONE"       from "STARTED"    [2016-01-10 Sun 19:43]
    - State "STARTED"    from "TODO"       [2015-12-26 Sat 03:27]
A F2P third-person shooter.  Will just give a try for a day or two.

P2W garbage.
*** DONE Mount & Blade: Warband
    - State "DONE"       from "STARTED"    [2016-01-17 Sun 14:43]
    - State "STARTED"    from "TODO"       [2016-01-10 Sun 19:47]
Got for free, so will give it a try.  Will only do single player.

Decent game.  Got pretty far along in it before it started getting a little
repetitive.  Will call this quits and try out the Viking Conquest mod instead.
*** DONE Rogue System
    - State "DONE"       from "STARTED"    [2016-01-24 Sun 12:09]
    - State "STARTED"    from "TODO"       [2015-10-22 Thu 08:04]
Of all the space sims currently active in this semi-Renaissance, this is the
one I'm most interested in.  Combines Newtonian physics, super-realism,
DCS-inspired checklists, and functional instrument panels.

Grabbed an early access copy for $30.  Though this game is actually still in
development (and probably will be for a long time), I'm pretty close to fine
with it just the way it is.  The new stuff I'd mainly appreciate are completing
the control features and maybe adding other ships to fly (provided their
control schemes are completely different).  It turns out I really like this
checklist-style gameplay and I might give the DCS games a try sometime too.

Memorized a ton of stuff and learned a lot about orbital mechanics, but since
not much is changing, I'll check back in no earlier than 6 months or so.
*** CANCELED Verdun
    - State "CANCELED"   from "TODO"       [2016-01-27 Wed 08:23]
A WWI FPS.  Supposedly super realistic.

Looked into this and while it's better than most FPSes, it's still just a
reskinned standard experience.  Also includes the annoying modern FPS feature
of leveling up.  A better game would at least have all of the WWI weapons (not
even all the French and German ones are here) and let characters be one of the
many nationalities, like Austro-Hungarian.
*** CANCELED Limit Theory (in development)
    - State "CANCELED"   from "TODO"       [2016-01-27 Wed 08:35]
A semi-promising looking Elite-clone that allegedly will include
empire-building features.  Has some nice concepts so far, but may be lacking in
depth and a coherent, original vision.  Apparently the developer has mental
health issues, so this may not even ever get done.

I'm not convinced anything is actually happening with this game as it's not 2
years late and at best still a prototype.  Maybe I'll look back into it in a
couple years to find out what happened, just out of curiosity.
*** DONE Mount & Blade: Viking Conquest
    - State "DONE"       from "STARTED"    [2016-02-02 Tue 08:35]
    - State "STARTED"    from "TODO"       [2016-01-17 Sun 14:44]
A DLC mod for Warband.  Will give the campaign a try for awhile.

While lacking a couple things from Warband, overall this is a better game.  It
does get extremely repetitive though.  I wanted to finish this, but I also
don't want to do the same boring things over and over for months.  I'll keep my
saved game, but I'm quitting for now.
*** DONE Divinity: Original Sin: Enhanced Edition
    - State "DONE"       from "STARTED"    [2016-03-10 Thu 01:53]
    - State "STARTED"    from "TODO"       [2016-03-01 Tue 15:50]
Grabbed on GOG and purchased as a present.

Mostly quite good, with only some minor complaints:
- Many of the puzzles require non-thinking solutions, like using perception to
  find a hidden button or just timing sneaking.  Only a few really need clever
  thinking about game mechanics.
- Graphical style is WoW-esque.  Characters have giant hands and feet.
- Occasional typos exist in dialog text.
- The item database needs cleaning up of duplicate items that differ only in
  their ID, causing them not to stack.  Also too many items share the same
  inventory icon.
- The game world is rather small.
*** DONE Time Clickers
    - State "DONE"       from "STARTED"    [2016-03-15 Tue 01:20]
    - State "STARTED"    from "TODO"       [2015-11-05 Thu 23:37]
Yet another incremental game.  I was going to give up on these, but this one
doesn't have a cash shop, so maybe the math behind it isn't out to get the

Wrote a script to pretty much auto-play it, minus spending cubes.

Got sick of even just botting this.  Quitting.
*** DONE DaiZy 2018 1.5
    - State "DONE"       from "STARTED"    [2016-03-29 Tue 23:14]
    - State "STARTED"    from "TODO"       [2016-03-27 Sun 23:43]
Follow the instructions on the DaiZy forum for the 2018 release.

- Install ARMA 2, ARMA 2: OA, and ARMA 2: OA Beta.
- Copy ARMA 2's Addons folder to ARAM 2: OA's root directory.
- Install the DayZ version corresponding with the mod.  In this case, it's
- Install CBA_CO, COWarMod, and JSRS 1.5.
- Install the mod, copying the DayZ files over to the mod's addons directory.
  Don't overwrite mod versions of files.
- Copy over the dayz_vehicles.pbo file to the mod's addons directory.  Without
  this, restoring saves won't work.
- Use the walking zombies only file, if desired.
- Use the launch options menu from within Steam and add
  "-mod=@2018;@JSRS1.5;@CBA_CO;@COWarMod -nosplash".  Create a shortcut from
  there if desired.

This is way better than the last single player version I played.  However, it
still gets really boring, really fast.  Uninstalling to reclaim space again.
*** CANCELED Baldur's Gate: Siege of Dragonspear
    - State "CANCELED"   from "TODO"       [2016-04-04 Mon 23:19]
Made by the Enchanced Edition team.  Will check back later for a bundle to
include the Enhanced Edition and this.  Probably will be released sometime in

This dev has ruined BG with horrible bugs and SJW crap.  Luckily, I read the
reviews before buying blind.  Skipping.
*** CANCELED Into the Stars
    - State "CANCELED"   from "TODO"       [2016-04-04 Mon 23:28]
A space sim from the captain's chair.  Look into this first.

A good concept, but looks like a poor execution.  Has lots of sloppy design, a
minigame, and rather mindless combat.  Skipping.
*** CANCELED Satellite Reign (purchase)
    - State "CANCELED"   from "TODO"       [2016-04-04 Mon 23:50]
A class based tactics game, made by the former Syndicate Wars team.  The
"real-time with pause" feature may be forthcoming.

Thankfully I didn't pre-pay for this.  I'm not convinced the stealth mechanics
should have been so heavily emphasized and the single city approach loses
something vs. Syndicate.  There are also apparently lots of bugs.  Worst of
all, the experience seems somewhat simple/shallow, so I'm leaning towards
giving this a pass.  Leaving listed for now to check back in 2016.

Looks like nothing's changing for the better.  Skipping.
*** DONE Dragon Age: Origins
    - State "DONE"       from "STARTED"    [2016-04-23 Sat 03:16]
    - State "STARTED"    from "TODO"       [2016-04-09 Sat 11:21]
Tried playing this long ago but gimped my NPC relationships and didn't finish.
Will use a guide this time for NPC dialog.

Not a terrible RPG, but also has way too many problems to list.  Deserving
special mention is the especially egregious DLC-milking present in the basic
version of the game.  Just that is enough of a reason for me to be skipping
this series forever.
*** DONE Diablo 1: Hellfire
    - State "DONE"       from "STARTED"    [2016-07-14 Thu 23:46]
    - State "STARTED"    from "TODO"       [2016-01-29 Fri 23:16]
Doing a quick coop run with a bard.

A very simple game with some major flaws, including:
- Most gameplay is completely mindless clicking on stuff.
- Massive amounts of manual clicking on everything is required.  Couldn't get
  an auto-clicker to work on Win7.
- Like D2, inventory space is a serious problem.  It's worse here though, since
  there's no external storage.
- Combat itself is too fast and almost exclusively non-strategic.

The nostalgia for this game is undeserved.  I intend to ignore the action-RPG
genre from now on.

I'm quitting.  This game is finger-murder.
*** DONE Pillars of Eternity
    - State "DONE"       from "STARTED"    [2016-07-16 Sat 01:03]
    - State "STARTED"    from "TODO"       [2016-04-24 Sun 20:03]
Grabbed a copy on sale on GOG, plus both White March expansions.

- While mostly polished, there's some slop around the edges with things like
  popup text boxes, modal dialogs, and other display issues that should've been
  easily spotted and fixed.
- Obsidian caved into some SJW Twitter campaign regarding some text in the
  game.  This is despite the game already having a nu-male ambiance.
- Default combat speed is too fast.  There is an option to auto-slow combat,
  which helps some.
- Some of the writing is lazy, such as including modern profanities.
- Voice acting doesn't work too well with interspersed narrative text.  Most of
  the voices are rather generic and immersion-breaking too.  Would prefer an
  option to just turn them off.
- Despite a few original ideas, most of this game system is just a reskinned
  DnD.  For example, anyone familiar with the DnD spells will instantly
  recognize a majority of them here, just with different names.
- Arrows and other ammo are abstracted away.
- Would prefer the ability to stack up some buffs prior to combat.  Many spells
  cannot be used at all outside of combat mode.  I'd prefer there not be a
  discrete mode for combat at all, and the engine just handle time passing
- The disengage mechanic has some downsides, like being effectively unable to
  run away from enemies and not being able to bypass front line enemies to get
  to those behind without taking massive damage.  It also makes ganging up on
  one enemy at a time tough in certain cases.
- I'd prefer a more realistic implementation of this era of firearms
  technology.  They could be considerably more powerful, yet far more
  impractical to reload in combat and impossible to reload while being engaged
  in melee combat.

Overall, still a good game despite the problems, though not worth a non-sale
asking price.  I'd be more disappointed if I had been following/backing it from
the beginning.  Evidence seems to suggest that instead of having an amazing
game that needed to be brought to life, the developers first decided to make a
BG clone, then tried to figure out what should be in the game.
*** DONE Anarchy Online (revisited)
    - State "DONE"       from "STARTED"    [2016-07-16 Sat 17:02]
    - State "STARTED"    from "TODO"       [2016-06-22 Wed 23:51]
Since sister and I are going to play this together, it's worth resurrecting my
attempt to play this game.  Trying to solo the often group-centric content was
a dead end last time.  Also, I'm only going to be a froob, as the SL content is
too linear and generic-fantasy.  Will loot my pay account's MP gear and give it
to my froob MP (there's an anniversary event where you can log into your old
pay accounts for a few days).

Some things have changed since I last played, to include the final two servers
merging into one, the new client is usable now (but predictably, it sucks), and
much of the online information about the game has disappeared.

- Try doing a =/tell neutnet !register= to sign up for a trade channel.  Also
  try the same against user Dnet.  Might not work anymore.
*** CANCELED Tempest 2000
    - State "CANCELED"   from "STARTED"    [2016-07-16 Sat 17:10]
    - State "STARTED"    from "TODO"       [2016-07-16 Sat 17:07]
I believe I have a CD-ROM of this somewhere.  Maybe try giving this an install
and seeing if I'm better at it than on the crappy Jaguar controller.  Hopefully
the resolution is better too.  If I can't get a controller working with it
though, just skip it.  Maybe check on eBay if people are buying disc copies.

Not fully supported on the media-side within DOSBox.  I consider the media
experience here pretty critical to an authentic experience to the game, so I'll
just stick with the Jaguar ROM for this.  I'll hang onto the CD for the audio
tracks (in CD form) and in case DOSBox gets 100% support in the future
*** DONE EVE Online (free trial)
    - State "DONE"       from "STARTED"    [2016-09-17 Sat 12:30]
    - State "STARTED"    from "TODO"       [2016-09-04 Sun 17:03]
EVE Online is going F2P late 2016.  I have a character from 2004, but will make
a new free trial one for 14 days to decide whether I want to play the game F2P

Trial ended.  I can see why some are concerned that the F2P system might ruin
the game to some extent.  If I do decide to play the game again later, I'll
give it some time to see how it goes before putting any time into it.
*** DONE Cataclysm: Dark Days Ahead 0.C
    - State "DONE"       from "STARTED"    [2016-09-23 Fri 20:37]
    - State "STARTED"    from "TODO"       [2016-08-28 Sun 15:53]
The latest stable version of this game.  Will give it another try to see if
it's less buggy and to check out the new features.

- Use - to repeat last craft.

Made a perfect base setup in an LMOE bunker with insane stockpiles of
everything.  The only thing I haven't really done yet in the game is vehicle
construction, but I've not been a huge fan of the way those handle.
*** DONE Arcanum mods
    - State "DONE"       from "STARTED"    [2016-10-21 Fri 21:06]
    - State "STARTED"    from "TODO"       [2016-10-19 Wed 00:02]
Several official and unofficial mods are available here:

Installed HQ maps mod, normal level cap remover, and high res mod (set to
1024x768).  Skipping unofficial patch and its corresponding level cap remover.

- Vormantown: A module that comes with the game.  Looks like this was just a
  demonstration module for modders.  However, it's actually a little better
  than most of them, though still not worth playing.
- Lost Dungeon of Souls: This module was an officially released one for
  pre-orders or something.  Seemed like an okay dungeon crawl at first, but is
  too thin.  Also the ending is missing.
- Buried Secrets: Uneventful and pointless.
- Virgil the Pervert: A fan-made mod.  Mildly amusing, for the whole 3 minutes
  it takes to play this.
- Deathmatch: Not really much to do here.  More of a challenge game for min-max
- Dusty Dunes: Apparently this one is super buggy.  There's a patch out that I
  applied. Like all of these so far, this is also pointless and ends quickly.
- Hellgate: A dungeon crawl with no shops or followers.  Nothing special about
  this whatsoever.  At least it has a proper ending, however.
- Time: Got stuck with no obvious recourse.  Apparently it's possible to go
  back in time in this module, but I cannot make the portal work.  According to
  the forums, you just go backwards and do everything over again, so I'll just
  skip putting a lot of effort into figuring it out.
- Woodmir Race: Crashes and can't be completed.

- Use r key to initiate combat mode.
- Use e key to end turn.

I forgot how much I disliked certain aspects of this game.  Things like:
- Firearms are pathetically weak.
- Combat is too simplified.
- Not being able to control party members sucks.

These all suck.  My advice: don't bother.
*** DONE Arcanum (revisited)
    - State "DONE"       from "STARTED"    [2016-11-02 Wed 20:13]
    - State "STARTED"    from "TODO"       [2016-10-21 Fri 21:07]
Played this over a decade ago.  Will try a gnome mage build.

- Right click on party member portraits for a quick control menu.

This game isn't as good as I remember thinking.  Apart from the previously
mentioned issues in the Arcanum mods entry:
- There are numerous misspellings and grammatical errors in the text.  Much is
  haphazard and sloppy.  A shame, since occasionally, some of it is
- You can gimp your followers by not picking them up in time for them to reach
  max level.  In fact, this will almost surely happen unless you time things
- There's no good way to auto-initiate turn-based combat without mashing the R
  key at just the right moment.
- You can't tell what spell was cast on you or whether the effect is active.
- The arbitrary maximum for waypoints serves as a needless source of annoyance.

This is maybe worth playing once.  As this is my second time through the whole
way, I won't be playing it again.
*** DONE Stardew Valley
    - State "DONE"       from "STARTED"    [2016-11-24 Thu 11:30]
    - State "STARTED"    from "TODO"       [2016-11-13 Sun 09:55]
Bought for sister for x-mas.  Will give it a quick look myself, however.

- Installed SMAPI, an API for mods.  Not all mods require this.
- Tried using the multiplayer mod, but it didn't work.
- Installed the Easier Fishing mod, which is just replacing a single file.
- Installed the TimeSpeed Mod, which lengthens days to be less unrealistic.
  Using defaults, which doubles time speed.
- Installed Slower Fence Decay mod.

A good game in this genre, but not quite my thing.  The fishing and time mod
are especially necessary mechanics changes.  Ignoring the downsides of the game
type, some complaints particular to this are:
- Too much cutesy stuff.  Would prefer a higher resolution and more realistic
  approach to the same thing.
- Having all plants specific to a season die when the next season starts is a
  strange and annoying mechanic.
- Controls could be optimized for speed.  Currently a lot of stuff is quite
  cumbersome, particularly doing things manually like watering plants.
*** DONE Second Life
    - State "DONE"       from "STARTED"    [2016-11-24 Thu 14:01]
    - State "STARTED"    from "TODO"       [2016-11-24 Thu 11:30]
Since this is F2P, give this infamous game a quick eyeballing.

Boring and filled with boring, pathetic people.
*** DONE Dungeon Crawl Stone Soup
    - State "DONE"       from "STARTED"    [2016-12-21 Wed 19:34]
    - State "STARTED"    from "TODO"       [2016-12-19 Mon 23:58]
Installed tile version on Windows and tty version on Linux and FreeBSD
(games/stonesoup).  I may also try Brogue instead of this (with various NotEye
tiling options).

Playing 0.19 tiles version as a Felid summoner.

This is a pretty good roguelike, and worth keeping around.  I'll keep it on my
laptop and possibly workstation for playing occasionally.  The number of
interesting race/class combinations is one of this game's main selling points
(though it's a shame they removed the sludge elf).

The biggest downside is that it's rather generic gameplay that doesn't include
the super-complex mechanics that make some roguelikes interesting.  Also the
viewing area on the tty version is super tiny.  Only the tiles version on a
large monitor is worth playing.
*** DONE Kittens Game
    - State "DONE"       from "STARTED"    [2016-12-24 Sat 02:48]
    - State "STARTED"    from "TODO"       [2016-12-23 Fri 23:46]
Yet another idle game.  http://bloodrizer.ru/games/kittens

Has annoying maximum resource limits and too much checking back in to click on
things.  Quitting.
*** CANCELED Realm Grinder
    - State "CANCELED"   from "STARTED"    [2016-12-24 Sat 03:38]
    - State "STARTED"    from "TODO"       [2016-12-24 Sat 03:25]
Supposedly one of the more popular new idle games.

Item mall = quit.
** Macro-goals
*** DONE year-end review for 2016
    - State "DONE"       from "STARTED"    [2017-01-09 Mon 08:01]
    - State "STARTED"    from "TODO"       [2017-01-09 Mon 07:57]
For some reason, I neglected to follow my plan to project goals for the year,
then review them.  So, I'll just analyze what happened and get back on track
for next year.

In exchange for -1 year of life, I got:
- +20% more buffer once I re-retire.  Now I'm in the range were I can afford a
  decent place to live (or one that I'd have originally considered optimal),
  which I intend to get after leaving the DC area finally.
- A full year of being a manager of humans, with all the bad that comes with
  it given a healthy sampling.
- Not much else.

If I want to be honest with myself, I fell off the train a lot on personal
improvement this year.  While I can blame a mentally exhausting work life for
this, it's really on me.  I'll list out the things I need to do to pivot back
on track in the 2017 review task.

* Project List (2015)
** Books: Computer Science/Programming
*** DONE Transcending Turing Computability (paper)
    - State "DONE"       from "STARTED"    [2015-06-12 Fri 21:07]
    - State "STARTED"    from "TODO"       [2014-12-29 Mon 13:48]
A review of the 2001 understanding on possibility of hypercomputation.

This is mostly a lead up to and brief discussion on natural computation, rather
than a discussion on hypercomputation.  While natural computation is
semi-interesting, I'm not convinced it's not just computation with built-in
approximation algorithms, instead of an entirely alternative form of
*** DONE Clojure Programming
    - State "DONE"       from "STARTED"    [2015-06-23 Tue 10:29]
    - State "STARTED"    from "TODO"       [2014-04-30 Wed 14:04]
Chose this as my official Clojure text.  Since it had to be recent, it was
either this or the 2nd edition of Programming Clojure.  Having glanced through
that, this one is obviously less for n00bs.  No Clojure book I've seen has
exercises though, so I'll have to practice on my own.

- To group by multiple fields: (group-by (juxt :col1 :col2) m)
- Transient analogues to some of the persistent collections exist, though these
  are only rarely useful.  E.g., call (transient []) for a transient vector.
  This works for vectors and unsorted maps and sets.  Transient functions like
  conj! exist to operate on these.  persistent! can convert back to persistent
  collections (useful for ensuring transience never escapes a function).

Mostly okay, but at times somewhat tedious to read.  Does a good job at being
a reference text, which I'll be keeping it around for.  Switching about a 3rd
in to The Joy of Clojure, which now seems to be the best Clojure text.
** Books: General Non-fiction
*** DONE By His Own Hand, Upon Papyrus
    - State "DONE"       from "STARTED"    [2015-05-18 Mon 06:40]
    - State "STARTED"    from "TODO"       [2015-05-17 Sun 19:21]
The seminal work, as of the early 1990s, on the Book of Abraham.  Available
free online here: http://mit.irr.org/by-his-own-hand-upon-papyrus-part-1

Some good info about the topic, but only some minor details I hadn't heard
elsewhere.  Has a bunch of mainline xtian kookery towards the end.
** Books: Fiction
*** DONE Book of Abraham
    - State "DONE"       from "STARTED"    [2015-05-09 Sat 20:20]
    - State "STARTED"    from "TODO"       [2015-05-09 Sat 19:50]
Supposedly the most entertaining of the highly sleep-inducing Mormon canon.

God sure does say a lot of stupid stuff.
*** DONE Dianetics: The Modern Science of Mental Health
    - State "DONE"       from "STARTED"    [2015-05-20 Wed 02:20]
    - State "STARTED"    from "TODO"       [2015-04-14 Tue 10:38]
Attempted to read this about 17 years ago, but lacked the scientific background
at the time to distinguish the science from pseudoscience.  This is a large
book, only useful to read for minor reasons apart from entertainment, so I may
skim or skip parts of it.

Read enough of this to see where this is going.  While reasonably well written,
this book is of little to no value to actually read.  It does contain plenty of
factual information, but this is interspersed with pseudo-science nonsense and
naked assertions.
*** DONE Fiasco
    - State "DONE"       from "STARTED"    [2015-06-08 Mon 18:59]
    - State "STARTED"    from "TODO"       [2015-05-20 Wed 02:24]
Another Stanislaw Lem novel.  Looks like it might be a good concept.

Great for most of it, but then kinda just ends.
*** DONE Deception Point
    - State "DONE"       from "STARTED"    [2015-06-20 Sat 18:48]
    - State "STARTED"    from "TODO"       [2015-06-14 Sun 09:40]
A techno-thriller about discovery of a meteorite proving extraterrestrial life.
Might be kinda lame.

Has a couple of good parts to it, but a lot of mediocre filler.  Characters are
generic and cartoon-like.  Plot is predictable when not random.  Only an
average to below-average read overall.
*** DONE Life Artificial
    - State "DONE"       from "STARTED"    [2015-07-11 Sat 21:19]
    - State "STARTED"    from "TODO"       [2015-06-23 Tue 10:35]
A novel series, available for free online.  http://lifeartificial.com/

A well-executed hard-scifi novel about AGI.  Unique in that it explores a
plausibly realistic implementation, particularly where AGI capability is
constrained by computing power and suboptimal subsystem implementations.
Only have some minor complaints, such as:
- Would prefer less focus on interpersonal relationships.
- Some of the invented future slang is cheesy.
- Would prefer more alien thought processes for AGIs.  A good effort is made
  here, but it could have been better.  Almost all of their traits are direct
  computing ports of human ones.
*** DONE Eater
    - State "DONE"       from "STARTED"    [2015-07-18 Sat 20:33]
    - State "STARTED"    from "TODO"       [2015-07-11 Sat 21:29]
A Gregory Benford novel about an ETI discovery and GRBs.

An okay concept and a few interesting scientific topics visited.  The actual
writing here is somewhat lacking, however, mostly regarding the plot.  The plot
skips around and is vague about many of the critical events that happen.
Sometimes, this is fine as what's not covered can be inferred, but often I'm
left unsure about that.  Another major flaw is its predictability.  Then,
there's the ETI central to the story, which starts off interesting but fails to
deliver anything truly alien.
*** DONE Galactic Center saga
    - State "DONE"       from "STARTED"    [2015-08-17 Mon 08:36]
    - State "STARTED"    from "TODO"       [2015-07-20 Mon 02:15]
A Gregory Benford novel series about a war between biological and artificial
- In the Ocean of Night: Kind of a mess, and not that good either.  Will give
  the next in the series a try, but will bail if it's more of the same.
- Across the Sea of Suns: Quite the mess, again.
- Great Sky River: Read the first couple chapters of this but it jumps to some
  lame super-distant future of nomads.  Seemed terrible, so I just read the
  plot summaries for the rest of the series.
- Tides of Light: Skipping.
- Furious Gulf: Skipping.
- Sailing Bright Eternity: Skipping.
- A Hunger for the Infinite: Skipping.
*** DONE The Sunborn
    - State "DONE"       from "STARTED"    [2015-09-02 Wed 21:07]
    - State "STARTED"    from "TODO"       [2015-08-17 Mon 08:39]
A Gregory Benford novel about life discovery on Pluto.  May be boring.
*** DONE Forever War series
    - State "DONE"       from "STARTED"    [2015-10-08 Thu 09:34]
    - State "STARTED"    from "TODO"       [2015-09-23 Wed 19:56]
Supposedly one of the best of military sci-fi.
- The Forever War: Pretty good.  Does a good job at unique world building, for
  the most part.
- Forever Free: This seems like it'll be a good mystery at certain points, but
  is ultimately resolved cheaply via deus ex machina.  A sad end to the
  character arc.
- Forever Peace: Quite forgettable.  Nothing here is done incompetently;
  there's just nothing compelling.  Also this doesn't seem to fit into this
  series at all and should have been a standalone novel.
*** CANCELED A Confederacy of Dunces
    - State "CANCELED"   from "TODO"       [2015-10-08 Thu 09:42]
Half-sister recommended.

While somewhat creative, also is a pointless read and only mildly amusing.
Gaping at the absurdity of popular culture and common folly is something easily
accessible (and gets old quick), and this novel isn't particularly adept at it.
Quitting about 25% in.
*** DONE Existence
    - State "DONE"       from "STARTED"    [2015-10-24 Sat 21:36]
    - State "STARTED"    from "TODO"       [2015-10-05 Mon 08:26]
A David Brin novel about the Fermi paradox.  Have a copy on Kindle.

Composed of some excellent prose, which is unfortunately wrapped in some more
run-of-the-mill segments.  Kept me interested, but then just sort of ended.
Still was a good book, but with a little more polish (and less dolphins)
it could've been great.
** Technology and software
*** CANCELED source upgrade to FreeBSD 10.1-REL
    - State "CANCELED"   from "TODO"       [2015-05-04 Mon 13:36]
Includes the vt console driver.  Probably will do a source upgrade.  Read this
for changes: https://www.freebsd.org/releases/10.1R/relnotes.html

It's been a long time since I've done a source upgrade, so I'll need to
relearn the procedure from scratch.  Read the Handbook chapter on this.

- [ ] Read the FreeBSD Handbook chapter on upgrading:
- [ ] Backup all user data.
- [ ] Try doing a source upgrade on my 10.0-REL VM.
- [ ] Get vt(4) working.
- [ ] Source upgrade cellblock.
- [ ] Rebuild custom kernel.
- [ ] Source upgrade muze.  I think it just uses a GENERIC kernel.

This failed on the VM due to screwups in the ports tree migration path.  Will
default back to doing a new install of 10.1.
*** DONE powerline
    - State "DONE"       from "STARTED"    [2015-06-04 Thu 04:27]
    - State "STARTED"    from "TODO"       [2015-03-24 Tue 10:16]
A modeline modification for Emacs that may increase visual parse speed.

Using this fork, which fixes some display issues:

Seems to be an overall small improvement just on the X11 side.  powerline looks
like crap in a terminal, so I disabled it there.  Will have to think about
whether it's a net benefit, given that I then have no unified standard.
Alternatively, once I get vt console working, the UTF-8 separator character
might render properly.  Will defer final decision about this until then.
    - State "CANCELED"   from "TODO"       [2015-07-09 Thu 11:02]
Consider using the G1GC garbage collector, which is supposedly more modern.
Read up on it first.

export JVM_OPTS="-XX:+UseG1GC"
export LEIN_JVM_OPTS="-XX:+UseG1GC"

Read up on this some, but am unable to confirm that I want to use this.  More
research could possibly help, but I'm not sure getting into GC internals will
really pay off.
*** DONE learn proper git commenting
    - State "DONE"       from "STARTED"    [2015-07-11 Sat 17:34]
    - State "STARTED"    from "TODO"       [2015-07-11 Sat 17:00]
Time to stop making a semi-mess in git commit logs.

Changed git-commit-mode-hook to set the commit buffer's fill-column to 72.
Will stop using descriptive subject lines in sentence form.  Will keep an eye
out while reading Pro Git for a way to clean up all my old commit messages.
*** DONE git-gutter
    - State "DONE"       from "STARTED"    [2015-07-11 Sat 17:48]
    - State "STARTED"    from "TODO"       [2015-07-11 Sat 17:35]
This Emacs addon that shows git changes in the editor.

Enabled global-git-gutter-mode.  Seems pretty useful.
*** DONE μBlock
    - State "DONE"       from "STARTED"    [2015-07-11 Sat 12:59]
    - State "STARTED"    from "TODO"       [2015-07-11 Sat 17:59]
Supposedly a more memory/CPU efficient alternative to AdBlock and ABP.

Won't work with Conkeror currently.  Will check back in a couple years.  I did
install this on my FF install on my GNU/Linux VM, however, and it is pretty
*** DONE update all Emacs packages
    - State "DONE"       from "STARTED"    [2015-07-13 Mon 10:38]
    - State "STARTED"    from "TODO"       [2015-07-12 Sun 11:26]
Get everything yakshaved such that it works optimally for 24.3.1.  Will do
another pass post-24.4 upgrade.

Did the following:
- Deleted cl-lib.el.  cl-lib is now in default Emacs.
- Switched to active darcsum repo.  Looks like no one is really working on
  this anymore.
- Archived elib-1.0.  This was used for JDEE, which I don't use anymore.
- Switched to current elscreen GitHub project.
- Updated ESS.  Leaving it still unloaded.
- Deleted flymake-jslint.el.  Moved jslint.js to ~/bin.
- Deleted groovy-mode.  Archived init to unused-init.el.  Hopefully will never
  need this again.
- Updated haml-mode and fixed Git repo URL.  Leaving it still unloaded.
- Updated htmlize.el from 1.43 to 1.47.
- Updated js2-mode.
- Updated markdown-mode.  Added textproc/markdown to the package install list
  for output generation.
- Update multi-term.el from 0.8.9 to 1.3.
- Updated paredit.
- Updated powerline.
- Updated sml-mode from 4.0 to 5.0 from tarball distribution.  Leaving it still
- Updated SLIME.  What's on master seems to work fine.
- Deleted temp tramp file, which hadn't been refreshed since FreeBSD 8.0.
- Deleted vc-darcs.
- Updated volatile-highlights.el.
- Updated web-mode.
- Deleted all of my update scripts.
- Ran byte-compile-file against all updated stuff.

The main thing I need to remember to do is update magit and git-modes once I
upgrade to 24.4.
*** DONE diminish.el
    - State "DONE"       from "STARTED"    [2015-07-16 Thu 12:31]
    - State "STARTED"    from "TODO"       [2015-07-16 Thu 12:02]
My mode-lines, especially in Clojure, and getting a bit long, so much so that I
sometimes can't see the line:column info (which I have one the right).  Use
this to shorten them for minor-modes.

Also added some e-lisp for major-mode shortening.  Using Unicode characters for
some of these.  Will add more when I find ones that are over 6 characters in
*** DONE Q-Dir
    - State "DONE"       from "STARTED"    [2015-07-19 Sun 01:38]
    - State "STARTED"    from "TODO"       [2015-07-19 Sun 01:24]
Check this out as an Explorer-replacement for Windows.  This could replace the
payware xplorer² that I currently use to not be annoyed when occasionally using
Windows, which I only have the 32-bit "Lite" version of.

Pretty close to perfect once heavily customized, but needs a font size option.
Will stick with my current setup in order to save my eyeballs.
*** DONE seesaw
    - State "DONE"       from "STARTED"    [2015-07-25 Sat 17:17]
    - State "STARTED"    from "TODO"       [2015-07-25 Sat 15:24]
Will eventually need a GUI library for Clojure.  This seems like a standard
option for that.  https://github.com/daveray/seesaw

- [X] Read the seesaw tutorial: https://gist.github.com/daveray/1441520
- [X] Make a sample project in it.

Pretty simple.  A little care must be taken, since certain invalid function
calls can lock up a REPL if interactively building and application.  Should be
able to use the canvas function or seesaw.graphics namespace to do the
graphics part of the Commercial Angler rewrite.
*** CANCELED vinyasa
    - State "CANCELED"   from "STARTED"    [2015-07-27 Mon 13:40]
    - State "STARTED"    from "TODO"       [2015-07-27 Mon 13:32]
A library that adds Clojure development workflow optimizations.

Can't get this to work, despite trying various things.  Might look into this
again later.
*** DONE spyscope
    - State "DONE"       from "STARTED"    [2015-07-27 Mon 13:50]
    - State "STARTED"    from "TODO"       [2015-07-27 Mon 13:45]
A trace-like debugging tool for Clojure subexpressions.  Normally, I modify
functions I'm testing to determine the results of nested expressions.  This
should make it easier by throwing in a macro call to inspect its evaluation
return at runtime.  https://github.com/dgrnbrg/spyscope

Has some nice features, but I'll mainly use the #spy/d macro, possibility
occasionally with the ^{:fs <n>} parameter (which gets some n stack frames).

I might also add debug-repl later for more power along these lines.
*** DONE redo solved 4clojure problems
    - State "DONE"       from "STARTED"    [2015-07-31 Fri 22:53]
    - State "STARTED"    from "TODO"       [2015-07-31 Fri 22:13]
Now that I'm quite good at Clojure, I suspect I can come up with better
solutions to some of these.

Looks like I got the hang of it later on, and only my earlier solutions needed
some help.
*** DONE redo Emacs Haskell setup
    - State "DONE"       from "STARTED"    [2015-08-11 Tue 01:36]
    - State "STARTED"    from "TODO"       [2014-09-03 Wed 10:20]
Lots of new capability is available now.  Some of it is outlined here:

This will break most of my existing setup, but it's probably time to rewrite it
all anyway.  I'll just get the basic setup done here.  More complex Emacs
integration will be deferred to individual tasks.

- [X] Update haskell-mode via git.  On a fresh install, this requires running
  =make EMACS=/usr/local/bin/emacs= from the haskell-mode directory.
- [X] Add hi2, for indentation.  https://github.com/nilcons/hi2
- [X] Look into ghc-mod.  Skipping for now.
- [X] Read this manual: https://github.com/haskell/haskell-mode/wiki

- Do this to wipe a user-specific Cabal cache:
  rm -rf `find ~/.ghc -maxdepth 1 -type d`
  rm -rf ~/.cabal/lib
  rm -rf ~/.cabal/packages
  rm -rf ~/.cabal/share
- Use =cabal init= in a project directory to create a cabal project.  See
  ~/src/haskell/htest for a sample project where I got this working.
- C-c C-l is bound to haskell-process-load-or-reload, which starts a cabal
- ghc-mod would definitely be useful later if doing some serious Haskell
  programming, as it uses a background process to provide flymake-style
  highlights, code completion, and query information about files.  I'll use
  this instead of my old flymake setup (probably in conjunction with HLint).
- This document is definitely worth a re-read later once I have more spare
  time for the language.
- w3m/Haddock integration doesn't seem to be functional yet.  Check back on
  this later.
- Use C-c C-. to sort/align imports.
- Added hotkey M-. for haskell-mode-jump-to-def.
- See this page on how to use the debugger:
- Will redo Haskell flymake setup later.
*** DONE clean up Windows 7
    - State "DONE"       from "STARTED"    [2015-08-26 Wed 17:03]
    - State "STARTED"    from "TODO"       [2015-08-26 Wed 17:00]
Win7 includes a bunch of shitty KB updates.  I've always been too lazy to
manually sort through these, but luckily for me, someone else already did it.
Go through this list and remove everything listed.

*** DONE Project Euler problems
    - State "DONE"       from "STARTED"    [2015-10-08 Thu 14:44]
    - State "STARTED"    from "TODO"       [2014-07-08 Tue 15:34]
Do all (or as many as I can) of these:

Probably will do these in Clojure first.  Might try them later in Haskell as

Did some in Clojure, but suspending this in order to focus on other stuff.
Will probably come back to this later and do more.
*** DONE vt
    - State "DONE"       from "STARTED"    [2015-10-13 Tue 23:08]
    - State "STARTED"    from "TODO"       [2015-10-13 Tue 21:39]
vt is now supported with FreeBSD >=10.1.  If all features work as intended,
this could make console mode a more viable option, though I'd probably still
prefer X11 for most normal use.

Add =kern.vty=vt= to loader.conf.  Check the vt manpage for options.  Use
terminus font with this.  Also see: https://wiki.freebsd.org/Newcons

Works great.  See freebsd-setup.org for the full setup details, integrated into
the kernel build task.  This also fixed the issue with having the console work
after exiting X.
*** CANCELED geli
    - State "CANCELED"   from "TODO"       [2015-10-15 Thu 13:11]
Consider using geli to encrypt /home.

Not worth the inconvenience.  I'll keep this in mind though, if I start doing
super private stuff on my laptop to the extent that GPG isn't adequate.
*** DONE upgrade to FreeBSD 10.2-REL
    - State "DONE"       from "STARTED"    [2015-10-17 Sat 00:50]
    - State "STARTED"    from "TODO"       [2015-10-12 Mon 05:54]
Since the source upgrade path is broken, I'll just upgrade the workstation and
laptop for now, and skip the server until 11.x.

- [X] Buy a new 30GB mSATA SSD.
- [X] Create new 10.2 VM.
- [X] Backup all user data.
- [X] Install new SSD.
- [X] Install 10.2 on cellblock.
- [X] Rebuild custom kernel.
- [X] Get vt console driver working.
- [X] Upgrade to 10.2 on laptop.

Everything worked out great.  10.2 doesn't change much, but the few annoyances
fixed are a pretty big deal to me.
    - State "CANCELED"   from "TODO"       [2015-10-27 Tue 11:49]
Setup a BBDB database for an address book.  Normally, its main benefit is that
it integrates with VM, Gnus, and Wanderlust, which is why I've skipped it.  See
if I can share the same address book between mutt and mail-mode, which is the
only situation where BBDB would be useful for me (as I already have aliases
loaded into mutt).  Otherwise, don't bother learning it.

If I do end up using it, I might want to store other stuff in BBDB too, though
it seems to me that org-mode is better for almost anything I would put here.

No pressing need to do this.  Canceling.
    - State "CANCELED"   from "TODO"       [2015-10-27 Tue 11:50]
Sometimes used in combination with Haml, which I might want to look into at the
same time.  Though this is super-simple, it may not be worth the effort to
learn this, as it'll add an extra parse step between writing and publishing.
It may make more sense just to update my CSS knowledge to CSS 3.


Not worth the overhead to learn, especially since I don't need it.  Canceling.
*** CANCELED core.typed
    - State "CANCELED"   from "TODO"       [2015-11-03 Tue 07:40]
The Typed Clojure project.  Read up on this and determine whether it's worth
using or keeping an eye on.  There's also a typed-clojure-mode for Emacs.

Canceling this for now, for various reasons.  Some are listed here:
** Games to play
*** DONE X3:Terran Conflict + Albion Prelude
    - State "DONE"       from "STARTED"    [2015-01-07 Wed 10:02]
    - State "STARTED"    [2013-06-14 Fri 20:13]
AP is basically an expansion pack for TC, so I'll play both at the same time.
AP also cleans up a lot of little annoyances.  The TC plots are missing, but I
suspect they aren't much fun anyway.  There's a mod to put them back in if I
want to later.

Install cockpit mod, transparent sidebar, bonus pack, MK3 Improvement Reloaded
(to fix the UT blacklist bug), Universal Best Buy/Sell, and non-Steam .exe.
Setting FOV to 100 for a 16:10 monitor.

Complex calculator: http://www.altanetworks.com/x3/x3apocc.html

Doing a semi-pacifist run.  Self-imposed rules are:
- Anonymous Argon start (requires changing GameStarts in registry to "fffff").
- No derelict ship capping unless I find it legitimately.
- No looking at any online guides except for maps (so I can print them out and
  keep track of sector scanning).  An exception is made for learning about new
  game features.
- No save scumming.  Will try to play the game like the Suicidal Squid game,
  though I'm not crazy enough to actually do that, mainly due to CTDs.  Death
  is pretty inevitable in the X Universe though, so I'll just try keeping it to
  a minimum.
- No SETA.
- No exploits or scripts that make the game easier.
- Won't do the AP plot until the rewards are inconsequential.
- No missions.  This is to counter the annoying mission icons over stuff.
  Trying to remove those with a mod didn't work for AP.  Money will be made
  almost exclusively by trading and running factories/traders.

I may restart as the Terran Commander and try to build a trading empire in
Terran space if I ever play this again.

I still like X3 some, but the whole X:R debacle has somewhat ruined the appeal
I had for this IP.
*** CANCELED Defense Grid 2
    - State "CANCELED"   from "TODO"       [2015-01-07 Wed 11:15]
Will need to do more research before jumping in on this one.  I was pretty
excited about this, but now I'm bracing myself for disappointment.

A few downsides noticed so far:
- The interest-earning mechanic (my favorite aspect of DG1) has been removed.
  My knee-jerk reaction here is that this could be a deal-breaker.
- Income from kills is removed.
- Resources are allocating by fixed amounts.  This apparently results in much
  less creative freedom.
- An in-game store was added.
- Towers are reported to be highly imbalanced at launch.  Like with DG1,
  they'll probably be tweaked at least a little along the way.

There doesn't seem to be any impetus to fix the problems here, so I'm going to
put this one in the pass category.  I might take a peek at it again a year or
so from now if I remember to.  Otherwise, the wait will remain for a proper
tower defense game.  If I do decide to get it cheap later, check out
*** CANCELED Ancient Space
    - State "CANCELED"   from "TODO"       [2015-01-10 Sat 18:22]
Supposedly, a Homeworld-inspired, story-centric RTS.  Need to look into it
more.  May be too stock-RTS (AoE-like) for my tastes.  A quick video watching
will settle that.

Too much of a standard, generic RTS experience.  A shame, since it has a few
nice parts.  Skipping.
*** DONE Corruption of Champions
    - State "DONE"       from "STARTED"    [2015-04-28 Tue 09:45]
    - State "STARTED"    from "TODO"       [2015-03-25 Wed 06:00]
Some Flash-based furry/yiff RPG.

Turns into a bit of a grind, so quitting.  I'm also quitting before the sick
content has any permanent training effect on my neural net.
*** CANCELED DAoC: Genesis
    - State "CANCELED"   from "TODO"       [2015-04-28 Tue 16:43]
A PS for DAoC.  Looks reasonably feature-complete.

Account setup seems to not work for me.  I may check back later, but I'm giving
up for now.  I also don't really feel like starting on another MMO at the
moment.  May check back later, but probably won't.
*** DONE BrowserQuest
    - State "DONE"       from "STARTED"    [2015-05-14 Thu 22:38]
    - State "STARTED"    from "TODO"       [2015-05-14 Thu 22:03]
An HTML5/JavaScript game with an open source codebase, made by Mozilla.

Yawn.  Not really even interesting as a tech demo.
*** DONE Project 1999
    - State "DONE"       from "STARTED"    [2015-05-18 Mon 12:36]
    - State "STARTED"    from "TODO"       [2015-01-03 Sat 02:31]
A purist recreation of "classic" EverQuest.  Will give it a farm for a bit.

Using DuxaUI, available here: http://p99.yourfirefly.com/

Definitely better than modern F2P EQ1 in most ways, though there are a few
nice features there that I kinda wish were here.  Still has all of the
problems of this model of MMORPG.  The client also has a lot of bugs.

I have decided that I like one thing about (mainly older) MMORPGs though: the
mastering of a complex piece of software and researching how to use it
optimally.  Once that learning curve levels off, however, only the actual
gameplay remains.  That part, of course, is quite boring and a complete waste
of time.

- Use S-t as a cheap trick to check surroundings without switching camera mode.
- To list all friends online: /who all friend
- Set "LOG=TRUE" in eqclient.ini.
- Set a key to open all bags, in options.  I use b for open and S-b for close.
- Rebind C-d to crouch.
- Use arrow keys to scroll between spellbook pages quickly.
- Edit SoundAssets.txt and remove the lines containing "143^thunder1.wav" and
  "144^thunder2.wav".  This disables the annoyingly loud storm sounds.

EQ1 is a good game in some ways (most notably in group mechanics and for the
brutal death penalties), but it also has pretty tragic flaws that make it
slightly inferior to UO:
- Characters and mobs clip through each other.  In some situations characters
  won't though, which is strange that it's selectively applied.
- The camera can be pretty annoying.  The modern standard camera system for a
  game like this, instead of a bunch of (mostly useless) discrete modes,
  would've been better.
- Most font choices are useless and many distort text at various sizes.  I
  could never get this just right for my setup.
- Large bodied races like ogres and trolls often block the view too much.
- The math behind mob damage is primarily influenced by level.  Almost no
  gear difference will affect melee combat as much as level.
- The spell resist system heavily restricts ability for spell-casting classes
  to the point of being completely ineffective against even cons by mid-level.
  On top of this, spell progression hasn't scaled with expansion packs the way
  gear has, with the exception of expanded utility functions.  Worst of all,
  there's only 8 spell slots, meaning classes like enchanters are constantly
  forgetting/memming spells, which is a lot of busywork clicking.
- While the playerbase is a good bit better than a typical MMO, the game is
  still full of a lot of petty losers.  A larger wall of complexity would help
  keep more of these people out.
- The current p1999 Blue server is way too crowded.  The Red server is a
  sausagefest of gank-happy spazzes.  That might be okay except the way PVP is
  handled in EQ1 is less than ideal.  I'm not sure I even want PVP in an RNG
  game anyway, but certainly not in one so level-centric.
- At least in pre-Velious, there's a massive funnel for leveling spots by the
- The people running the server are a bit too stupid and not detached enough
  from drama for my tastes.
- Tradeskilling is mostly not a viable way to play, nor is it an essential part
  of the economy (perhaps with the exception of jewelry).  Ideally, it should
  be possible to never kill stuff and only craft.
- Not enough inventory or bank slots.  Has the now standard bag system.  Only
  maximum of 10 slot bags are available on p1999.  The main downside here is
  that it's basically not possible to hoard all mats and sell useful stacks of
  them, so most get vendored.
- End game content is completely group-centric.  Raiding involves the most
  repetitive experience in the game.  While no instances is a big plus, more
  content (or the same content more spread out between random filler) is needed
  for the top-heavy playerbase.

Got a 52 enchanter and 50 wizard and have pretty much done everything I wanted
to.  Will try to sell account before uninstalling.  While there are a lot of
good aspects to the game now missing from modern MMOs, there's not enough of
them to really get all misty-eyed over as many a classic live server player do.
*** CANCELED Hadean Lands
    - State "CANCELED"   from "TODO"       [2015-05-25 Mon 17:11]
Supposedly an excellent new IF game.

Turns out this is payware.  Not going to be paying for an IF game.
*** CANCELED Homeworld 2: Complex 9.1
    - State "CANCELED"   from "TODO"       [2015-05-25 Mon 17:17]
Mentioned somewhere online as the best Homeworld 2 mod and best incarnation of
the series.  Don't know anything about it yet, so will have to look into it.

Some of the features here seem interesting, but they don't affect the
campaign, so I guess I'll skip it.
*** CANCELED ToME (oozemancer run)
    - State "CANCELED"   from "TODO"       [2015-05-28 Thu 15:39]
Not entirely sure if I want to do this, but if so, try running a Thalore
oozemancer build and make a serious attempt at trying to beat the game.  Might
try installing on FreeBSD, since there's only 5 or so dependencies I don't

I think I'll skip this due to the mindless timesinks some aspects of the game
include.  I'd already have played multiple characters by now if not for this.
I may still try this or another build some other time still, but only once a
lot of stuff has changed about the game many years from now.  A shame, since
the build-planning part of this game is really excellent.
*** DONE Idle Hero
    - State "DONE"       from "STARTED"    [2015-06-02 Tue 18:13]
    - State "STARTED"    from "TODO"       [2015-06-02 Tue 17:43]
A simple roguelike crossed with an idle game.  Might be worth a quick look.

A good idea for a game, but a poor implementation of it.  Very poorly
programmed as well.
*** DONE dunnet
    - State "DONE"       from "STARTED"    [2015-06-20 Sat 06:32]
    - State "STARTED"    from "TODO"       [2015-06-20 Sat 03:25]
Try to beat this without cheating or reading any guides.

- To get through the maze from the weight room: d, nw, up, se, d, nw, nw
- To go the other way, from the reception area: se, se, d, nw, ne

A pretty good puzzle IF game, except for the annoying maze.
*** CANCELED The Gostak
    - State "CANCELED"   from "TODO"       [2015-06-22 Mon 01:41]
A linguistic-concept IF game.  If I like this sort of thing, the game "For a
Change" is another along these lines.

Played this for awhile.  Fun and totally doable after a lot of work and
notes-taking.  Unfortunately, I also don't want a huge linguistic map of
completely useless information, so I'm going to quit playing it for now.  I
might revisit it later in the unlikely event that I run out of useful things
to be learning.
*** DONE Clicker Heroes
    - State "DONE"       from "STARTED"    [2015-07-05 Sun 11:59]
    - State "STARTED"    from "TODO"       [2015-05-17 Sun 16:50]
Same concept as AdVenture Capitalist.  Will play both of them at the same time.

- Use this optimizer: http://www.rivsoft.net/clicker/ancientssoul

Not as bad to play using an idle build, but still too much interaction
needed.  Progress is effectively impossible when offline.  Quitting.
*** DONE Starbound
    - State "DONE"       from "STARTED"    [2015-07-21 Tue 02:08]
    - State "STARTED"    from "TODO"       [2015-07-20 Mon 02:13]
Got free access via Steam's Family feature.  Will give it a try, though I'm
pretty sure I won't stick with it.

A semi-okay game, but impossible for me to stick with for various reasons:
- Being a 2D side-scroller is a critical flaw for me, even with a
  semi-interactive background layer.  If not going 3D, I could see a
  2D isometric version of a mining game working, if done right.
- Gameplay is extremely boring and repetitive.
- All races play the same.  They only have cosmetic differences (with a few
  very minor exceptions).
- It should be possible to relocate your teleport down location.  Running to
  the other side of a huge planet over and over sucks.
- When digging extremely deep, manually going back to the surface also sucks.
- Numerous bugs, some critical.  Overall though, the game is stable relative to
  similar games.
- The prepackaged content, like boss areas, is standard platformer gameplay.

Got to the point of unlocking FTL and fueling my ship, but found myself lacking
any motivation to continue, mainly due to the issues listed.
*** CANCELED FreeSpace 2
    - State "CANCELED"   from "TODO"       [2015-07-20 Mon 16:36]
I suspect this is a better space combat sim than Freelancer, so try this first.
Get a copy for super cheap at GOG.  If I don't get to this before SC comes out,
I'll skip it.

The source code was released for this game, so maybe give that a look, since it
may save me some time reinventing a lot of solutions.  I will want to use this
for the modern enhancements it provides anyway.

Follow these mod instructions for the best textures and such:
Or maybe these:

Since I won't be getting to this within a year or so, I'll skip this in favor
of SC.  I'll revisit if SC turns out to suck.
*** DONE AdVenture Capitalist
    - State "DONE"       from "STARTED"    [2015-07-21 Tue 23:39]
    - State "STARTED"    from "TODO"       [2015-05-16 Sat 19:59]
A Unity Web game, of the "incremental game" genre.  Using the Steam version,
since it doesn't require loading within a webpage.

This is better than Clicker Heroes, despite the reduced polish, mainly due to
it being closer to a true idle game.  I still have some complaints though:
- Existence of a P2W cash shop.
- I'd prefer a system where either angels weren't a finite currency or they
  were attained on a linear scale vs. lifetime earnings.  The way they
  currently are, it's possible to seriously gimp your game.  Also, sacrifices
  that seem to make sense for a particular run may not when you factor out the
  lifetime profit reduction of their permanent loss.
- Still too much clicking for buying stuff, along with a heavy incentive to
  time your purchases right (e.g., buying an important upgrade as soon as
  available instead of being AFK for hours can make a huge difference in
  progression).  Since the interaction is so repetitive and trivial, the game
  might as well just have an upgrade to auto-buy the next optimal thing,
  leaving you only to decide when to reset.
- Would prefer a nested menu system instead of modal windows to do stuff.
- Has numerous display bugs.
- There's no reason this can't be a completely offline game.
- The math behind moon progression is completely broken.  The only purpose for
  this mode currently is to reset your graphical glitches on Earth without
- A serious bug caused me to lose all moon progress.

After researching the math behind Earth progression, I decided to give up on
this game and just use the system clock cheat.  This confirmed my suspicions
that the entire game is a cheap facade for its cash shop.
*** CANCELED Universal Combat
    - State "CANCELED"   from "TODO"       [2015-08-02 Sun 12:05]
Now available for free and, unlike BMG, doesn't crash.  Read all of the PDFs in
the game's doc/ folder before playing.  A horrible, buggy mess, but also a
massive wall of complexity that might be fun to climb.  Now also available on
Steam, so I'll use that version.

While this does indeed have a lot of the features of a capital-class spaceship
simulator, The actual way of integrating them into a game here isn't for me.
For example, instead of flying your ship in first person, I'd rather interact
with the game through various command interfaces on the bridge.  I'm going to
pretend these games were never made from now on.
*** DONE World of Warships
    - State "DONE"       from "STARTED"    [2015-08-02 Sun 23:35]
    - State "STARTED"    from "TODO"       [2015-08-02 Sun 00:09]
This will be worth checking out if they do as good of a job as done on World of
Tanks, but just to see all the ship models in action.  There are supposedly
also plans to merge this, World of Tanks, and World of Warplanes into one
shared battlespace, which will either be completely awesome or completely suck.
Will stick to my normal routine of not paying for anything and quitting before
hitting the soft paywall.

The best of the Wargaming.net games so far.  Still too action-focused for my
tastes, but okay for some quick ship combat fun occasionally.  Ended up
uninstalling it after a couple weeks though, since its not different enough
from World of Tanks to merit as much time as I spent in that, despite being a
significantly better game.
*** DONE Dwarf Fortress
    - State "DONE"       from "STARTED"    [2015-08-03 Mon 10:55]
    - State "STARTED"    from "TODO"       [2015-07-06 Mon 07:35]
Installed DF 0.40.24 via Starter Pack r14.

Using at least DFHack is a must (it comes with the Starter Pack).  See the
documentation here: https://github.com/DFHack/dfhack

One of the best games out there.  There are still some downsides though:
- The entire game is single threaded.  This often results in a pegged core with
  sluggish performance.  Play style and embark location have to take
  performance into consideration.
- The codebase is closed.  The developer understandably doesn't want a ton of
  forking, but should at least open source the front end and possibly other
  non-core components of the game for help with bugs and performance.  Closing
  the source has also resulted in a lot of 3rd party utilities that are limited
  in the extent to which they can integrate into the game.  Many of these are
  considered essential for usability reasons.
- While DFHack helps remove a lot of tedium, there's still a large amount of
  very repetitive actions that require needless micromanagement.
  Unfortunately, nothing short of a complete command/status interface overhaul
  would fix that.
- Bugs have caused me a considerable amount of lost work, including full
  fortress loss.  It shouldn't be necessary to keep a massive repository of
  bugs memorized to play properly.

- Run =fastdwarf 1 0= in the console to enable speedydwarf.  Run =fastdwarf 0
  0= to turn this off once I get the initial, repetitive gruntwork out of the
- Make unpaved roads to remove vegetation, such as shrubs and saplings.
- Make an up ramp next to U/D stairs to dig up.
- Use the =digvx= command to dig out an entire vein, across z-levels.  Requires
  cursor to be on a vein.  Update: doesn't seem to work currently.
- =digexp diag5= is a good command for exploratory mining on a particular
  z-level.  Defaults to only uncovering hidden tiles.
- Armories should include lots of armor/weapon racks, chests, and cabinets.
  Put at least one chest/cabinet/armor rack per squad member.
- Always create an armory from a weapon rack.
- Use =enable autolabor= to turn on auto-management of assigned labors.  This
  is pretty smart and can be left to do its own thing.  =autolabor list= and
  =autolabor status= can get some info on the current autolabor state.  Setting
  =autolabor MINE 3= is a good way to keep at least 3 active miners.
- C-S-p opens the DFHack prompt in game.

This game is really unique in several ways, but the areas of emergent gameplay
and world generation are where it really outclasses the competition.  DF will
definitely be on my list of best games, and I'll probably play it occasionally
from now on.  But, I'll probably wait until the next version to venture into
it again, in the hopes that some of the issues are sorted out.
*** DONE Project Gorgon
    - State "DONE"       from "STARTED"    [2015-09-13 Sun 21:17]
    - State "STARTED"    from "TODO"       [2015-09-12 Sat 01:26]
An alpha-stage MMORPG popular among classic EQ1 players currently.

Seems okay concept-wise, but nothing original.  Technically, the game is a bit
of a mess, and it seems unlikely to ever get the polish it needs.  Since the
goal here is to capture some of the classic MMORPG feel, selectively merged
with a few modern concepts, then I guess it succeeds at that.  I definitely
don't have months to sink into an MMORPG currently, so I'm quitting.  I'll
consider looking back into it later if it's still around in a few years.
*** CANCELED Prospector
    - State "CANCELED"   from "TODO"       [2015-10-08 Thu 14:49]
A freeware space rogue-like.  http://www.prospector.at/

Played this a little, but found it mostly a bit uninspiring.  Maybe there's a
good game here and I didn't stick with it long enough to find out.
*** CANCELED Evochron Mercenary
    - State "CANCELED"   from "TODO"       [2015-10-10 Sat 18:13]
An Elite-clone (of the X3 variety) with fully explorable planet surfaces,
seamless space/planet transitions, and simulated physics.  Sequel to Evochron
Legends.  Notable for being written by a single programmer.  Only get it
if/when on sale, if at all.  No rush here, since the programmer does release
newer versions every few years and by the time I get around to it, another
version may be out.

After reading some reviews, I'm going to skip this one.  I'll check back on
the Evochron series later though -- maybe after a couple iterations.
*** CANCELED Ceres
    - State "CANCELED"   from "TODO"       [2015-10-18 Sun 00:50]
A tactical space combat game of the Homeworld variety.

Looks to be a bit of a mess with lots of bugs.
*** CANCELED Elite: Dangerous
    - State "CANCELED"   from "TODO"       [2015-10-22 Thu 09:12]
The updated version of Elite.  ED has gone online-only, making it far less
appealing.  A lot of stuff is still missing well past launch, so I'll
reconsider it in maybe mid-to-late 2016, though almost certainly will give it a
pass due to no offline play.

I think Rogue System has me covered on the space sim front.  ED is highly
inferior in realism and physics by comparison.
*** CANCELED Star Citizen
    - State "CANCELED"   from "TODO"       [2015-11-03 Tue 07:24]
The most hyped space sim, and possibly the most hyped PC game ever.

Bought the $40 Aurora MR+ ship package.  After watching things semi-progress
over 2 years, I'm ended up regretting my purchase and requested a refund.  A
non-comprehensive list of issues I have with the project:
- A near-exclusive focus on combat so far.  I have no faith in anything on the
  economy/mining/trading side.
- Arcade-like gameplay.  Everything interaction-capable in world is single use,
  with a giant "use" label.
- The monetization strategy has become increasingly more whale-bait focused
  over time.  Post-launch monetization is P2W in all but name.
- Instancing is everywhere.  I'd gladly take reduced ship or face poly count in
  exchange for less instancing.
- The TOS was changed arbitrarily to extend the deadline for refunds.
- The company is mostly full of annoying personalities, like Sandra Roberts and
  Blob Lesnick.
- The community is full of true believer fanbois.

I'm glad to be divested from this project.  My new rule is to only buy software
I actually want right now in the state it's currently in (this includes
everything from pre-alpha to post-launch).  Give no credence to that which does
not yet exist.
*** DONE S.T.A.L.K.E.R.: Shadow of Chernobyl
    - State "DONE"       from "STARTED"    [2015-12-26 Sat 03:26]
    - State "STARTED"    from "TODO"       [2015-12-20 Sun 13:17]
Got a copy for free from sister's Steam account.  Will give it a try.

- Turn off the head bob by editing the user.ltx file created in the game
  directory under the user's documents folder.  Change cam_inert setting to
- Also using Autumn Aurora 2.1, a graphics/music/sounds upgrade mod.  This
  builds on top of ZRP as well, so all those fixes are present.  However, I
  only see direct config file editing as a way to control ZRP options.  Once
  installed change the following:
  - scripts/task_manager.script: quest_time_factor = 0
  - scripts/_z.script: notify_on_stash_empty = true
  - scripts/death_manager.script: store_weapon = true
  - scripts/se_respawn.script: Edit the respawn rates.
  - config/creatures: Set corpse decay in monsters.ltx and stalkers.ltx

The stock game experience is basically unplayable due to: way too frequent
respawns, a vomit-inducing head bob, fishbowl FOV settings, not
balanced/post-processed audio, etc.  Modding this game makes it more
enjoyable, but there's still problems:
- NPC visibility mechanics don't take into account foliage and other cover.
  They can also spot a player too easily in general.  Basically, stealth is
  broken.  This seriously breaks a lot of the gameplay.
- The carrying capacity of the player is too low.
- Stashes are empty until you find their corresponding PDA entry.
- Annoying scripted events, like escort missions.
- Magical teleporting in the ending.
- NPCs have infinite ammo, yet when looted only have a few rounds.  Item drop
  rates and prices need rebalanced in general.

Overall, an only okay experience once heavily modded, but still a waste of
time.  Should've done something more productive.
** Programming projects
*** DONE tumblr-identity-manager
    - State "DONE"       from "STARTED"    [2015-06-23 Tue 14:43]
    - State "STARTED"    from "TODO"       [2015-05-18 Mon 12:40]
A Compojure application to manage one's Tumblr identity.  This is an example
project for a presentation I plan to give on integration of Clojure back-ends
with JavaScript front-ends.  I may also use the data structures made here in a
future project.

This project turned out pretty good.
*** CANCELED petri-clj
    - State "CANCELED"   from "TODO"       [2015-10-09 Fri 23:52]
A petri net library for Clojure.

Decided not to do this one.
** Math goals
*** DONE discrete mathematics
    - State "DONE"       from "STARTED"    [2015-10-08 Thu 09:52]
    - State "STARTED"    [2009-08-19 Wed 09:37]
Know most of this, but doing the ~20 hr Arsdigita course to refresh memory.
Left off about halfway through.  Probably will just switch to the book though.

Helped half-sister with her discrete math coursework, during which it was
evident that I know this stuff pretty good already (at least, at the level
acquired from such a course).  I probably still need some practice getting
better at proofs though, but I'll do that separately.
*** CANCELED linear algebra
    - State "CANCELED"   from "TODO"       [2015-11-03 Tue 07:41]
This may end up being useful for 3D programming at some point, but I'll re-add
the task then.  In the meantime, I'm more focused on mathematics more directly
related to PLT.  In one plausible future, however, I see myself circling back
to (possibly permanently) reside in the world of applied mathematics.
** General life goals
*** DONE use Gnuplot to lose weight
    - State "DONE"       from "STARTED"    [2015-04-28 Tue 09:48]
    - State "STARTED"    [2010-06-22 Thu 07:55]
My high school graduation weight was 170 lbs.  Get back to this weight or at
least 175.

The plan is to use Gnuplot to graph weight loss trendlines.  In addition to
this, I reassembled my desk as a standing desk.

- Add the date and weight to ~/weight.dat.
- Run gnuplot.
- If doing from a text terminal, run =set term dumb= first.
- The first column is a date, so first let gnuplot know with =set xdata time=,
  then set the datemask with =set timefmt "%YY%mm%dd"=.
- If I want the end goal in sight, run something like =set yrange [170:215]=.
- Run =plot "~/weight.dat" using 1:2 with lines=.
- Instead of the above, just run =gnuplot weight.gp= (or, from within gnuplot,
  =load weight.gp=), since that's a Gnuplot script with all the above commands
- Spend the majority of computer time at home on the standing desk.

The plan to never go back involves the following:
- Using the standing desk for all but playing games and very thought-intensive
- Cooking as much of my own food as possible, primarily eating only fresh
- Walk to work when I live near enough and when the weather's good.
- Keeping the mass of food ingested at current levels.
- Weighing self once a week to check status.  If ever near 180, start using
  Gnuplot again until back down to 175 at least.
- Thinking about the financial effects of purchasing prefabricated food and
  dining at restaurants (where most of my high calorie food came from) can act
  as a further disincentive.
- No work snacks, even if they're free.  If I want to save some money on food,
  I should grab them and save them for meal time.
- I'll eat 2 meals a day and keep it under an estimated 800 calories each.

Update: This works as a tracking mechanism, but isn't formalized enough for
consistent results.  The new plan to replace this is to use the Gnuplot
tracking here, but combine it with the new Soylent product.
*** DONE stop drinking diet soda
    - State "DONE"       from "STARTED"    [2015-06-27 Sat 13:21]
    - State "STARTED"    from "TODO"       [2015-05-28 Thu 10:05]
I've been consuming large quantities of this for many years now, with some
gaps.  While there are some benefits, consumption is definitely a net negative.
Disadvantages include:
- Increased phosphoric acid intake is linked to liver and bone density issues.
- Cost (roughly $250/yr).
- Time/energy spent buying it regularly.
- Damage to teeth, due to causing imbalance in mouth pH.
- Caffeine dependency.
- No physiological benefit over water for staying alive.
- Inconclusive results suggest that aspartame may be linked to appetite
- A possible increase in risk for metabolic syndrome.
- Citric acid may interfere with ketosis--a state I do want to be in while
  sleeping and don't need a glucose supply to the brain.

With a month of non-soda use, considering this done.  Quitting was surprisingly
*** DONE quit e-cigarettes
    - State "DONE"       from "STARTED"    [2015-11-19 Thu 13:35]
    - State "STARTED"    from "TODO"       [2015-10-20 Tue 06:05]
This worked to quit smoking, but now I need to quit this too.  Doing so will
save $480/yr.  Will consider this successful if I can go a month without it.

This was tougher than I thought it'd be.  Gained 4 lbs in the process too.
However, after 2 weeks, most of the side effects were gone.
*** DONE Soylent
    - State "DONE"       from "STARTED"    [2015-11-19 Thu 13:40]
    - State "STARTED"    from "TODO"       [2015-04-28 Tue 16:24]
This is a product idea I've been interested in for a long time.  Reasons for
attempting to switch from normal food to this:
- Save time preparing food.
- Reduce enjoyment associated with eating, thus ensuring food intake to be
  optimally aligned with nutritional needs.
- Ensure no gaps exist in vitamin/mineral intake.
- Possibly deprecate the need for some food preparation and storage items.

The plan (will consider some of these sub-tasks done once perma-switched to):
- [X] Get a one month order of Soylent.
- [X] Get a plastic, sealable bottle that roughly fits one meal (2 scoops
  stuff, 4 scoops water).  One about 750mL should work.
- [X] Eat one meal per day of Soylent (prefer lunch) until I run out of
  perishable food at home.
- [X] If I like this enough, I may switch to full-time Soylent consumption.
  Exceptions will be made for eating out at restaurants and times when I can
  offset food preparation costs by aggregating meal preparation for multiple
  humans.  Will try to keep to at least 2 normal meals per week to maintain
  diversity of intestinal microbe species.
- [X] Come up with a permanent plan for integration of the product.  Likely
  this will be at least one meal per day (probably lunch).

The general routine is to always eat Soylent at least one meal a day, usually
lunch.  Supplements per every other day: 1000mg flax seed oil, 250mg choline,
1/2 multivitamin.  Will occasionally do all-Soylent days as well.

Deferring DIY Soylent task due convenience factor.  May revisit it later when I
am not working though.  Splitting weight loss plan off from normal Soylent use

A truly life-changing product.  Overall health has improved dramatically in
many areas.  Averaging 14 bags per month during current weight loss period,
which is $1296/year at the new, slightly discounted price.  This results in
about 1.6 lbs/week lost so far.  I definitely intend to stick with Soylent for
the foreseeable future and will bump up my consumption by another half a
serving once my ideal weight is reached.  Since I'm feeling so good, I may take
other actions now to further improve health once I've established a stable
*** CANCELED stop consuming caffeine
    - State "CANCELED"   from "TODO"       [2015-12-03 Thu 07:08]
My only remaining input vector for this is unsweetened iced tea.  This
generally has 26mg of caffeine per 8 fl oz serving.  There's good reasons to
never consume this, including:
- Psychological effects, particularly an increase in mild anxiety.
- Diuresis.
- Physical dependence.
- Stimulant cycle with subsequent crash, resulting in net energy reduction.
- Some minor cost (currently spending about $6/yr on bulk cartons of tea bags).

I still have 150 tea bags left as of 2015-05-28, so I'll schedule this for when
those run out.

Will only use caffeine as a rare tool in an emergency, like driving a long
distance and having problems staying awake.  In such situations, the low risks
associated with caffeine are outweighed by the immediate risks involving
non-alertness.  Being off the tolerance treadmill will assist in this.
However, I can likely take other measures to reduce or eliminate these
situations, and may be able to never consume the substance again.

Update: Upon further research, I'll switch to green tea (at 2x cost) due to the
desirability of ingesting this: https://en.wikipedia.org/wiki/Theanine.  Will
also consider trying matcha green tea, since it has much higher levels of the
substance.  I will otherwise not consume caffeine though, as planned.
** Macro-goals
*** DONE year-end review for 2015
    - State "DONE"       from "TODO"       [2016-01-11 Mon 10:07]
There doesn't seem to be a huge master plan for this year, it's more of a
progression year where I clean up a lot of issues that were ignored for
pragmatic reasons.  In totality though, these should add up to a pretty big lifestyle

I'm also refactoring year-end reviews to include: Description of general plan
for the year (written ahead of time), goals (written ahead of time), results (a
point-by-point analysis of each goal at the end of year), and an optional
analysis that might include unplanned stuff.

- Pivot my functional programming to Haskell, making some progress on
  completing my overall FP goals in life (to achieve mastery in both
  dynamically and statically typed FP).
- Round out some Clojure knowledge.
- Since I'm working all year, I should easily increase net worth by a
  significant margin.
- Play fewer games and read less fiction.
- Significantly upgrade physical health.

- I did a pretty good catch-up of where I was on the Haskell side, but due to
  there now being zero opportunities to ever use this at work, I'll just keep
  this in maintenance mode until I've fully plateaued on the Clojure side.
  It's still my plan to do this on my own though.
- More Clojure knowledge was acquired, but accumulation of it is definitely
  leveling off.
- Net worth increased as planned, but I'd still like to improve this more next
  year if possible.
- Apart from wasting way too much time playing Project 1999, I did spend a lot
  less time playing games.  Spent $0 buying games.  I also read a lot less
  fiction, and I think I'm running out of hard scifi anyway.
- Starting in April, I lost all the weight gained since getting back from
  Afghanistan.  Going to keep going until I reach high school weight.  Then,
  I'll consider adding an actual exercise routine.
- Since I'm a team lead at work now, I've put into practice years of thinking
  about how to manage humans.  So far, it seems to be working.  This is a
  rather encompassing burden in life though, so it's likely I won't be doing
  this in the future.

Overall, a reasonably successful year.  Some things to consider for next year
(move these out of here later):
- Devise non-disruptive plan to get out of clearance work (that is, one where
  my options aren't externally constrained).
- At some point in the year, I should have time to finish rounding out the
  basics in Haskell.  This means getting to the point where I'm comfortable
  with monads, at least.
- Read less news aggregation sites and forums.  I waste way too much time doing
  this (sometimes several hours in a day) and it is one of my big remaining
  timesinks.  Exceptions can include sites around topics being studied for
  listed tasks and normal searching for immediately needed information.

* Project List (2014)
** Books: Computer Science/Programming
*** DONE Revised^5 Report on the Algorithmic Language SchemeA
    - State "DONE"       [2014-01-07 Tue 04:59]
    - State "STARTED"    [2014-01-05 Sun 01:51]
Also known as R5RS, this document officially defines the R5 Scheme standard.
Read this before continuing with SICP in order to reset myself firmly back in
the language (as keeping the syntax for multiple Lisp variants sorted is hard
work).  I'll skip chapter 7 though, since there's little benefit to reading
pages of EBNF.

- case statements can match against multiple datums per clause.
- let evaluates values before variables are bound.  let* evaluates and binds
  sequentially.  letrec can be used to define mutually recursive properties
  (e.g., defining 2 functions that call each other).
- begin in Scheme is the same as progn in CL and do in Clojure.
- do is an iteration construct:
  #+BEGIN_SRC scheme
  (let ((x '(1 2 3)))
    (do ((x x (cdr x))
         (sum 0 (+ sum (car x))))
        ((null? x) sum)))
- let can also be used with different syntax, called a named let, for more
  general iteration.
- delay and force functions are used for creating and evaluating promises.
- quasiquote or ` is used for quoting out expressions that may contain
  comma-preceded expressions that are evaluated.  The results are inserted into
  the containing structure.
- let-syntax and letrec-syntax define macros.  syntax-rules defines macro
- ... in a formals list is equivalent to &rest in CL, with the exception that
  the variable the list is bound to precedes ....  I think this only works in
  syntax-rules blocks.  (Check this later, since the spec is unclear here).
- In order of discriminating level, from most to least, equivalence predicates
  are: eq?, eqv?, equal?.  See section 6.1 for full details.
- Use inexact->exact to get integers out of floats.  For example:
  (inexact->exact (round 1.8))
- The value nil doesn't exist in Scheme.  Also (car '()) errors, unlike in CL.
- Use set-car! and set-cdr! to mutate lists.  Many other mutation functions
  take this form.
- list-ref is the same as CL's nth, with the parameters reversed.
- substring, string->list, and list->string are convenient for string
  processing.  See 6.3.5 for the full function list.
- The best simple illustration of call-with-current-continuation I've found is:
  #+BEGIN_SRC scheme
  (define (f return)
    (return 2)
  ((lambda (x) (+ x 2)) (call-with-current-continuation f)) ; Returns 4.

Worth reading if you're writing any Scheme and already have some knowledge of
Scheme or another Lisp variant.  It's written for language implementers, so it
won't tell you everything you need as a language user.  Also serves as a useful
reference to keep around (along with one for slib).
*** CANCELED Fortifying Macros (paper)
    - State "CANCELED"   from "TODO"       [2014-05-30 Fri 00:59]
This paper claims to address some of the problems with actual macro use in the
real world, namely clarity and robustness.

Canceling since it's Scheme-specific.  May reconsider if I ever wade deep
enough in the language.
*** CANCELED Beginning Game Development with Python and Pygame
    - State "CANCELED"   from "TODO"       [2014-05-30 Fri 01:10]
At the moment, I don't really have time to write games.  However, I'm thinking
that Python/Pygame may be a good thing to know to quickly prototype
experimental game concepts.

- In a for..in loop that I don't want to actually reference the instance
  variable for, just use _, e.g. ~for _ in range(1..10):~.

Skipping due to deprecating my Python usage (which also has the nice side
effect of not having to maintain a duct taped Emacs setup for it) in favor of
Clojure.  Along those lines, I'm replacing Pygame with clj-play for simple game
*** DONE The Descent into C
    - State "DONE"       from "STARTED"    [2014-06-17 Tue 13:29]
    - State "STARTED"    from "TODO"       [2014-06-17 Tue 09:59]
A C primer for higher-level programmers.  Recommended before reading K&R.

Already knew all of this, but this article is still a good refresher.
*** DONE Clojure for the Brave and True
    - State "DONE"       from "STARTED"    [2014-06-18 Wed 19:54]
    - State "STARTED"    from "TODO"       [2014-05-05 Mon 14:44]
This looks like a good intro to Clojure.  Should be both a good refresher for
me and fortify some parts of the language I'm still weak on.

- Multiple arity.  E.g., (def f ([x] (+ x 1)) ([x y] (+ x y)))
- Destructuring also works within parameter lists.
- Anonymous functions can take rest parameters.  E.g., #(identity %&)
- The into function is handy for converting sequence types, like converting
  lists into maps.
- Use ns-interns to get a map of symbols available in a namespace.  ns-map will
  give a full list of all available symbols.
- Destructuring works against map keys in parameter lists.  E.g., (defn f
  [{:keys [a b]}] (println a b))
- Unquote splicing with the read macro ~@ is an unquote that merges an
  expression list into the position where it's used.
- auto-gensym syntax can be used to condense gensym-ing.  E.g., ~(defmacro g []
  `(let [name# "sdf"] name#))~
- gensyms should be used for sending code blocks to macros so they only get
  evaluated once.
- When deref-ing futures with @, the results are cached and it's not
  reevaluated upon further derefs.  Check if one has been realized with the
  realized? function. You can also specify a time-limit on future execution
  when explicitly calling deref.
- alter-var-root can mutate a var, though this isn't recommended for normal
  use.  E.g., ~(def x 4) (alter-var-root #'x #(+ 1 %))~
- Use pmap for auto-threaded a map call.

This is a much better intro than I had imagined.  It's probably the current
best intro to the language.  Due to its length though, it's definitely
insufficient by itself.
*** DONE Programming Groovy 2: Dynamic Productivity for the Java Developer
    - State "DONE"       from "STARTED"    [2014-08-29 Fri 15:25]
    - State "STARTED"    from "TODO"       [2014-05-13 Tue 10:26]
The most recent Groovy e-book I could find that wasn't framework-specific.
Read chapters 1-6.

- groovyc ignores @Override.
- Ranges implemented as 1..10.
- << appends to Collection types.
- Importing namespaces supports aliasing with the as keyword and static imports
  with static.
- Use the @Delegate directive for composing classes instead of inheritance.
- Whenever possible, use the @Immutable directive on classes.  This also
  auto-creates constructors where the parameters are in the same order as the
- @Lazy can be used on class members to delay evaluation of them.
- @Singleton auto-implements the singleton pattern with getInstance() provided.
- Groovy's == -> Java's .equals(), Groovy's .is() -> Java's ==.
- Psuedo-tail recursion is possible using the trampoline() method.

Not too bad of a book, but nothing special.  Groovy, of course, isn't anything
special either.  I didn't finish the chapters I intended to read, but this is
pretty boring.  I'll lazy-load the rest.  Hopefully, I'll be able to safely
forget this entirely soon.
*** CANCELED Common Lisp: The Language, 2nd Ed.
    - State "CANCELED"   from "TODO"       [2014-10-01 Wed 14:32]
Read a little of this, and it's definitely a desk reference, not a book to sit
down and read.  However, I'll at least skim it, reading the documentation I
want to know more about, then save the rest for looking stuff up.

Canceling due to replacing CL with Clojure.
** Books: General Non-fiction
*** DONE The Particle at the End of the Universe
    - State "DONE"       from "STARTED"    [2014-03-29 Sat 12:03]
    - State "STARTED"    from "TODO"       [2014-03-10 Mon 03:01]
The Sean Carroll book on the Higgs boson.  Though a popular science book and
something I'd normally skip, this is significant enough to be worth getting
some better familiarity with.

Has a fair amount of superfluous personal narratives and simplified analogies
like most popular science writing, but also has some good hard info too.  It's
about as good as one can expect in the kind of physics books that avoid
inclusion of any math.
*** DONE Symbolics, Inc.: A Failure of Heterogeneous Engineering (paper)
    - State "DONE"       from "STARTED"    [2014-06-01 Sun 11:24]
    - State "STARTED"    from "TODO"       [2014-05-30 Fri 09:25]
Since I occasionally still encounter Genera, this may be historically
enlightening.  Seems to be an academic research paper, probably from the
perspective of some field of business.

Has some sloppy wording and misspellings.  Not that educational, but I did
learn a few things I didn't know.
*** DONE Fatal Vision
    - State "DONE"       from "STARTED"    [2014-09-12 Fri 09:54]
    - State "STARTED"    from "TODO"       [2014-09-03 Wed 10:44]
The definitive work on the Jeffrey MacDonald case.  Will give it a try, but
quit if it gets boring, since I already know most of the details about it.  At
the very least, I'll skim the legal procedural content.

Okay as documentation about the event in question, but a tiresome read in any
other context.  For me, a waste of time.  Read up to the final trial before
*** DONE Security+ Study Guide 6th Ed.
    - State "DONE"       from "STARTED"    [2014-12-12 Fri 13:18]
    - State "STARTED"    from "TODO"       [2014-11-25 Tue 15:21]
Volunteered to do this for work.  Might learn a few things, but will
definitely learn a bunch of useless crap.

A miserable read.  Full of factual errors, errors by omission, and errors of
focus.  Contains obviously silly, unique concepts never referenced anywhere
else.  My first certificate book, and definitely my last.
** Books: Fiction
*** DONE The Invincible
    - State "DONE"       [2014-01-12 Sun 23:25]
    - State "STARTED"    [2014-01-03 Fri 02:20]
Another Lem novel, this time about nanotechnology and swarm intelligence.

Not bad, but short of being particularly good.  It does have a realistic take
on alien life, but loses points for being a bit cheesy in other areas.  An
overarching 60s-era "Amazing Stories" feel pervades every aspect of the novel.
*** DONE The Purple Cloud
    - State "DONE"       [2014-01-17 Fri 07:32]
    - State "STARTED"    [2014-01-13 Mon 04:19]
A supposedly great very early scifi novel of the "last man" variety, written
in 1901.

This has some high quality writing in select parts, but the overall chronicle
is rather meandering and were this a modern work, would be rather unimpressive.
It did keep me interested in what would happen next, yet upon finding out, I
was always disappointed.
*** DONE The Metamorphosis of the Prime Intellect
    - State "DONE"       [2014-01-18 Sat 21:29]
    - State "STARTED"    [2014-01-18 Sat 06:33]
An online novel about AI technological singularity.  Skipped this earlier due
to the sleeze, but I'll try to skim past it.

Good at a few select times, but hopelessly flawed everywhere else.
*** DONE Ventus
    - State "DONE"       from "STARTED"    [2014-02-17 Mon 03:03]
    - State "STARTED"    [2014-01-19 Sun 02:25]
A novel about AI and terraforming.  May include some fantasy elements, which if
excessive will result in an abort.  Needs to be pretty good for a full read, as
it's quite long.  http://www.kschroeder.com/archive/Ventus/

No particular part of this work in itself is all that great.  That leaves the
overall narrative, and here as well I'd have to say it's a bit lacking.
There's supposed to be an air of mystery and wonder around it all, but this
attempt seems to have failed.  Despite all of this, it's not a bad read, just
not one that kept me particularly interested and contained far too many generic
core elements.
*** DONE Light
    - State "DONE"       from "STARTED"    [2014-02-22 Sat 05:46]
    - State "STARTED"    from "TODO"       [2014-02-17 Mon 03:13]
A QM novel that might be okay, but also looks like it might suck.  Has space
opera elements, which usually means the latter.

All around garbage.  Quitting.
*** DONE Ted Chiang short stories
    - State "STARTED"    from "TODO"       [2014-03-29 Sat 15:00]
Reading the rest of the free Ted Chiang short stories.

- Story of Your Life: Pretty good.
- Exhalation: Great.
- The Lifecycle of Software Objects: Great, but should be a novel that doesn't
  end so soon.
- What's Expected of Us: Good idea for a story, but too short to explore it
- The Truth of Fact, The Truth of Feeling: Yet another good idea, this time
  about memory prostheses.

Lots of great topics.  I still need to pick up some of Chiang's books.
*** CANCELED Ware Tetrology
    - State "CANCELED"   from "TODO"       [2014-04-01 Tue 03:00]
A series of 4 novels by Rudy Rucker, and the only ones that look promising.
Looks like it includes some okay concepts, but at least one boring one
(recreational drug use).  Will abort if loaded with too much transrealism.

- Software: Read a couple dozen pages before accepting that this is hopelessly
  terrible.  No redeeming qualities were noticed.
- Wetware:
- Freeware:
- Realware:
*** DONE When Sysadmins Ruled the Earth
    - State "DONE"       from "STARTED"    [2014-05-19 Mon 03:15]
    - State "STARTED"    from "TODO"       [2014-05-19 Mon 02:28]
A short story, available online.

Mildly entertaining, but probably not worth the read.
*** DONE Orthogonal series
    - State "DONE"       from "STARTED"    [2014-05-24 Sat 06:36]
    - State "STARTED"    from "TODO"       [2014-04-16 Wed 08:47]
A new Greg Egan trilogy.  Takes place in a spacetime following the Riemannian
metric instead of Minkowski spacetime.

An introduction to the physics of the Orthogonal universe is here:

- The Clockwork Rocket: Pretty good.  While I appreciate all the hard work
  that obviously went into this, something still feels missing.  Maybe it's
  just the setting lacks some of the depth necessary to really get into it.
- The Eternal Flame: Weaker characters, but better hard sci-fi.  Otherwise,
  more of the same.
- The Arrows of Time: About the same as the previous book.

Overall, a good series with some worthy hard scifi in it.
*** DONE Tunnel in the Sky
    - State "DONE"       from "STARTED"    [2014-05-24 Sat 07:43]
    - State "STARTED"    from "TODO"       [2014-05-24 Sat 06:36]
A recommended Heinlein novel.

While mostly just a contrived setting for exploration of the concepts around
government, this isn't too bad.  Contains many elements that haven't aged well
and way too much cheesy dialog.
*** DONE Neverness
    - State "DONE"       from "STARTED"    [2014-07-12 Sat 11:35]
    - State "STARTED"    from "TODO"       [2014-07-02 Wed 19:37]
Recommended as a well-written hard scifi (math heavy) novel.  There's a trilogy
of sequel novels to this book as well.  I'm not too excited about it since it
includes some lame, overdone concepts.  For example, it has a quasi-religious
order evolving to control esoteric math/science.

Great writing and an example of effective, original world-building.  Manages
to avoid "too far in the future" syndrome.  However, I could've done without
the descriptive sex scenes and with less of the primitive culture stuff.  Will
give the sequel trilogy a try.
*** DONE A Requiem for Homo Sapiens
    - State "DONE"       from "STARTED"    [2014-08-11 Mon 23:20]
    - State "STARTED"    from "TODO"       [2014-07-12 Sat 11:35]
A 3 book trilogy sequel to Neverness.
- The Broken God: Same great writing, but the new main character is a bit too
  Messianic.  Along those lines, the majority of the content is about
  religion, which gets old quick.
- The Wild: Returns to much of the interesting hard scifi parts of Neverness,
  though still retains some of the character issues of the previous book.  My
  main complaint here is the book follows a repetitive, cyclic structure: The
  protagonist goes somewhere, we're shown how strange the place is, and then he
  passes some arbitrary tests.
- War in Heaven: Similar to the first in the trilogy.  Dozens of parallel
  plots all wrap up a bit too briefly and conveniently in somewhat-unrelated
  ways as well.

A good series.  Is at its best when doing math/scifi and at its weakest when
too deep in the religious stuff.  The philosophical musings, which make up the
majority of these books goes from enlightening to near-indecipherable
gibberish, but thankfully most is the former.  The main selling points here are
the top-quality writing, world-creation, epic scope, and immersion.
*** DONE Riptide
    - State "DONE"       from "STARTED"    [2014-08-20 Wed 03:57]
    - State "STARTED"    from "TODO"       [2014-08-12 Tue 08:04]
A fictional story closely modeled upon the real life Oak Island Money Pit.  Not
my normal fare, but I'll give it a try.

Only semi-okay.  At times one can read prose hinting at greater ability, but
the majority of this is pedestrian.  Though hard to tell for sure from one
book, the author might possibly benefit from being less prolific and
concentrating effort on fewer books.
*** DONE Under the Dome
    - State "DONE"       from "STARTED"    [2014-09-20 Sat 10:31]
    - State "STARTED"    from "TODO"       [2014-09-15 Mon 11:47]
Probably a cheesy pulp novel, but an interesting enough of a concept to be
worth a try.

Read a few chapters and couldn't help but notice that this is complete
twaddle.  Giving up.
*** DONE 1945
    - State "DONE"       from "STARTED"    [2014-10-05 Sun 03:32]
    - State "STARTED"    from "TODO"       [2014-09-21 Sun 00:20]
An alternative-history novel wherein the WWII Japanese surrender doesn't
happen.  Not my normal fare, but I'll give it a try.

Does an okay job sometimes, but this is a serious missed opportunity to detail
the strategy of a campaign on both sides as well as get creative with the story
on that level.  Instead, we spend a lot of time suffering the details of
individual participants from all levels.
*** DONE One Second After
    - State "DONE"       from "STARTED"    [2014-10-16 Thu 23:11]
    - State "STARTED"    from "TODO"       [2014-10-05 Sun 03:33]
A post-apocalyptic novel following an EMP attack.  Includes some non-fiction
regarding the subject matter.  Supposedly good, but in my experience such
novels often turn into soap operas.

Only average.  Filled with too much personal details that don't matter and not
enough actually interesting stuff.
*** DONE Engines of Light series
    - State "DONE"       from "STARTED"    [2014-12-10 Wed 02:51]
    - State "STARTED"    from "TODO"       [2014-10-19 Sun 21:59]
A contemporary scifi series by Ken MacLeod, author of The Cassini Division
(which was pretty good).  Since his previous works were sometimes worth reading
for the selected good parts, maybe these are okay.
- Cosmonaut Keep: Mainly just okay.  Never really breaks into good.  This book
  is sometimes considered a hard read, demanding much of the reader, but it
  didn't seem that way personally.  There's a fair amount of boring filler in
  it too.  Uses the annoying interleaving of chapters method, in this case
  between two time periods.  Too much cringe-worthy politics, as is typical for
  this author.
- Dark Light: Lots of annoying politics and filler.
- Engine City: A half-assed conclusion to the series, though in line with the
  quality of the rest of it.
** Technology and software
*** DONE Inkscape
    - State "DONE"       [2014-01-04 Sat 01:54]
    - State "STARTED"    [2014-01-03 Fri 23:40]
Do a crash course learning of Inkscape.  I just need to know enough to make an
official SVG version of a logo that I've already designed.

Inkscape isn't too bad of a program, but it has several non-intuitive aspects
and lacks important features.  While it's possible to get used to and work
around its quirks, for serious vector graphics work, it's no replacement for
*** DONE flymake-cursor.el
    - State "DONE"       [2014-01-04 Sat 18:49]
    - State "STARTED"    [2014-01-04 Sat 18:13]
Solves a pretty serious flymake annoyance that I've occasionally hacked
workarounds for.

This works fine, leaving the only remaining flymake annoyance of no displayed
message in console mode when flymake fails to initialize.  In GUI mode, this
displays a GUI dialog (something that shouldn't even be possible in Emacs, in
my opinion).  Deprecated function bcm-flymake-display-err-minibuf and its key
binding to unused_init.el.
*** DONE deprecate moz.el
    - State "DONE"       [2014-01-04 Sat 20:15]
    - State "STARTED"    [2014-01-04 Sat 20:09]
Haven't used this in many, many years, and already commented it out on the
Conkeror side.

Archived moz.el and ~/.mozrepl.js and moved config to unused_init.el.  I still
recognize moz.el as particularly useful if writing complex JavaScript though,
so if I ever start doing that again, I'll re-enable it.
*** DONE fix egg Makefile
    - State "DONE"       [2014-01-04 Sat 20:24]
    - State "STARTED"    [2014-01-04 Sat 20:20]
This no longer byte-compiles on FreeBSD for some reason, and my .elc is out of

Solved.  I forgot that FreeBSD's make was FreeBSD-specific.  Using gmake on it
works fine.  Byte-compiled everything else new while I was at it.
*** DONE markdown-mode
    - State "DONE"       [2014-01-07 Tue 09:26]
    - State "STARTED"    [2014-01-07 Tue 09:13]
Mostly due to GitHub, this is the new standard for README files.

Grabbing the git master version, since it's probably not complex enough to
require using stable.

This errors on font-lock-refresh-defaults, which isn't present in 23.x, however
since it is in 24, I'll just put up with that until then.  This mode does have
a lot of features for something as simple as markdown, but I mainly just wanted
it for the syntax-highlighting.  I'll lazy-load additional features as needed.

Also removed batch-mode, keywiz, and lambdacalc packages.
*** DONE rebuild workstation
    - State "DONE"       from "STARTED"    [2014-01-31 Fri 13:59]
    - State "STARTED"    from "TODO"       [2014-01-24 Fri 20:43]
While attempting to upgrade it, the workstation's hardware died.  Will build a
new FreeBSD workstation.  Fortunately, I had just backed everything up.

Ordered some parts off Newegg.  Will build the system around the new Intel NUC
DCCP847DYE platform.  This isn't a perfect setup, since it does have a fan.
However, if I can't underclock the CPU enough to keep it off at idle, I'll swap
the case out with a replacement made by Silverstone.  There's also a much nicer
and completely fanless solution for sale at Logic Supply, but it's considerably
more expensive.  I'm also wary about full hardware support in FreeBSD, but
according to a blog post, everything works, though the author is lax on details
and doesn't mention anything about Xorg.  If it all works out, be sure to
enable TRIM support (added in 9.x) for all filesystems and use a 2GB swapfile
called /usr/swap/swap instead of a partition (since it won't use TRIM).  See:

- Receive new parts in two orders.
- Assemble parts.
- Flash BIOS.
- Read everything in the manual and tweak BIOS settings.
- Do a quick base install of FreeBSD to ensure everything works.  Generate
  some load to test fan settings.

- The NUC uses F2 for the BIOS menu, F10 for the boot menu.
- Booting FreeBSD from the USB drive works, but fails to mount it later.  When
  it drops into the mountroot> prompt, just run =ufs:/dev/ad0=.  The install
  should proceed normally after that.
- The Celeron 847 uses an Intel HD 2000 GPU.

Great hardware.  Now only if the xf86-video-intel driver worked properly.
*** DONE Marmalade and package.el
    - State "DONE"       from "STARTED"    [2014-03-15 Sat 12:43]
    - State "STARTED"    from "TODO"       [2014-03-15 Sat 11:34]
Previously wanted to stay with all manual installs, but I'll try this for
keeping up to date with CIDER.  It seems most other Clojure programmers use
it.  Marmalade is just a server from which packages can be hosted.  Actual
installation is handled through package.el (previously ELPA).

- Added package initialization code to ~/.emacs.
- To update package listings, run M-x package-refresh-contents.
- Added package install code for clojure-mode, clojure-test-mode, and cider.
- Had to remap align-regexp from C-x C-a to C-x M-a to avoid a conflict.
- Had to append package server with MELPA server to avoid a dependency
- Use M-x package-list-packages to display a complete list of everything
  current (fetching lists from servers).  Created a task to scan all of these.

Seems to work okay.  I'd still rather just manually manage these packages, so I
might redo this later.  This definitely saves some yak shaving, but the obvious
trade off is that when something goes wrong, the fix will be less obvious.
    - State "DONE"       from "STARTED"    [2014-03-15 Sat 12:45]
    - State "STARTED"    from "TODO"       [2014-03-15 Sat 11:54]
Additional Clojure features for Emacs, built on top of nREPL and replacing it.

Installed with package.el.  See Marmalade entry for details.  Upgraded lein
while I was at it.

Keybindings are on the CIDER GitHub page.  A possible workflow:
- =lein new= a project.  Add a ~:repl-options {:init-ns user}~ entry in
  projects.clj.  Add a :dev profile with something like
  :resource-paths set to "dev" and :dependencies to
  org.clojure/tools.namespace and "0.2.5-SNAPSHOT".
- Create a dev/ directory with a user.clj.  This should reference
  clojure.tools.namespace.repl and the project's core.clj.
- Run =lein repl :headless= and connect with =cider=.  For non-project based
  development, use C-c M-j to launch the REPL.
- Use C-c C-e to evaluate changed functions.
- Use (refresh) from the namespace tools to reload all project changes.
- Use M-. to navigate to function definitions.  M-, returns to the pre-jump
- Use C-c C-s to jump to the source of a function, including in loaded libs.
- Use C-c C-z to jump to the REPL.
- Use C-c C-d to get function docs.
- Use C-c C-k to load the current buffer after making a lot of changes.
- See CIDER GitHub page for more commands.
*** DONE switch to GitHub version of SLIME
    - State "DONE"       from "STARTED"    [2014-03-15 Sat 13:00]
    - State "STARTED"    from "TODO"       [2014-03-15 Sat 12:57]
SLIME's official home is now on GitHub, which means one less thing I have to
use CVS for (in fact, I think this is the last thing).

Deprecated u_slime and u_slime-stable scripts to ~/var/elisp, just in case.
Currently this doesn't work, so I'll wait until post-upgrade and try again.  I
may have some outdated config though, so if the problem persists, I'll revert
to a barebones one first.

I still had problems with this post-upgrade, but after waiting awhile and
trying new pulls of it, it now works fine.  I'll definitely want to back up my
current version before pulling again.  Stability has always been a serious
problem with SLIME.

I also need to revisit some of my custom SLIME config, but I'm not currently
using it, so it's not a priority.  For example, the documentation lookups are
no longer properly color-coded.
*** DONE rewrite Emacs color-theme code
    - State "DONE"       from "STARTED"    [2014-03-15 Sat 14:22]
    - State "STARTED"    from "TODO"       [2014-03-15 Sat 14:07]
color-theme has been replaced in Emacs >24 with built-in deftheme
functionality.  Remove my external color-theme install and replace it with
something like:

#+BEGIN_SRC emacs-lisp
;; Where to find Emacs24 themes for M-x load-theme.
(when (>= emacs-major-version 24)
  (add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
  (load-theme 'wombat-custom t nil))

Waiting until I upgrade FreeBSD, which is my last remaining 23.x install.

Struggled with this for awhile and couldn't figure out why my custom themes
wouldn't load.  Eventually, I figured out that the custom themes required a
naming convention ending in =-theme.el=.  Modified the new wombat-theme.el to
my preferred specs and put it in ~/.emacs.d/themes.
*** DONE Conkeror from source
    - State "DONE"       from "STARTED"    [2014-03-15 Sat 15:13]
    - State "STARTED"    from "TODO"       [2014-03-15 Sat 15:10]
The Conkeror developers suggest running it from source in a user directory as
it only has a small C core and is otherwise interpreted.  This is how I run it
on Windows, but I've previously only used it from ports on FreeBSD.

Once I do that, enable the NoScript and maybe Adblock+ plugins in

- In ~/src/javascript, run =git clone git://repo.or.cz/conkeror.git=.
- Build conkeror-spawn-helper by running =make= in its root directory.
- Added a ~/bin/conkeror script.

I already did the above.  Unfortunately, I have a version of libxul (xulrunner)
that's too old for the latest Conkeror.  Will revisit this once I update
FreeBSD (since a newer version is now in ports).  At that time, run =git pull=
on the repo to grab the latest again and rebuild conkeror-spawn-helper.  While
I'm at it, read through everything on the Conkeror site and maximally customize

Updated this on Windows.  A lot of function names have changed and my old RC
file won't work here.  Merge in the stuff on the Windows machine once I update
Conkeror on FreeBSD.  I'll probably wait a little longer though to see if a
bug involving download prompts is fixed.

Updating the source again and running from FreeBSD 10 with libxul 24.2.0 works
fine from what I can tell so far.
*** DONE fix emacs-w3m (again)
    - State "DONE"       from "STARTED"    [2014-03-20 Thu 13:27]
    - State "STARTED"    from "TODO"       [2014-03-20 Thu 12:25]
Once again w3m is broken in Emacs, this time on FreeBSD 10 under Emacs 24.3.1
and emacs-w3m 1.4.471.  I saw somewhere that upgrading to the current CVS
version of emacs-w3m solves the w3m-process-sentinel error I'm getting, so I'll
try that.  I checked the ports diff files and they're minimal enough to
convince me it should work fine.

This worked.  It required installing devel/cvs so I could grab the current
development branch.  I'll leave that installed, but not add it to the setup
document in hopes that I won't need to update it.  Now that this works, I'm
just going to leave it alone and hope it doesn't break again any time soon.
*** DONE deprecate agda-mode
    - State "DONE"       from "STARTED"    [2014-03-21 Fri 00:58]
    - State "STARTED"    from "TODO"       [2014-03-21 Fri 00:57]
Not currently using this.  I would keep it active, but Agda is somewhat of a
pain to keep from breaking, so I'm going to ignore it until I actually start
using it.

Moved init code to unused_init.el.
*** DONE gnuplot-mode
    - State "DONE"       from "STARTED"    [2014-03-21 Fri 01:02]
    - State "STARTED"    from "TODO"       [2014-03-21 Fri 00:55]
An improved version of this mode is now available.

Doesn't work with <24 due to prog-mode not being defined yet.

Added this in Emacs 24.3.1 and it works great.
*** CANCELED w3m from el-get
    - State "CANCELED"   from "TODO"       [2014-03-21 Fri 01:03]
Supposedly this works better than the often-broken packages.  I'll only bother
with this if w3m is still messed up on Emacs in FreeBSD 10.0.

Using emacs-w3m from source negated the need for this.
*** DONE Bitbucket
    - State "DONE"       from "STARTED"    [2014-03-21 Fri 01:19]
    - State "STARTED"    from "TODO"       [2014-03-21 Fri 01:05]
Create a private git repo here.  This will be more convenient than hosting it
locally.  I'll move my mvr project and personal site hosting here.  Do the
tutorial in case there's any important differences.

Seems to work fine.  Added public keys for macroexpand and cellblock.
*** DONE VCS personal site
    - State "DONE"       from "STARTED"    [2014-03-21 Fri 01:52]
    - State "STARTED"    from "TODO"       [2014-03-21 Fri 01:18]
Clean up all of the junk lying around here, then make a project for this site
on Bitbucket.  Hopefully there's enough room available for hosting the

Ended up excluding the snd/ directory to save space and increase cloning
speed.  I will leave the content online, just not hosted.  If I happen to lose
the directory, it can easily be replaced from my mp3 collection.  To do that,
I followed the GitHub best practices and registered a .gitignore file with it
like this:

git config --global core.excludesfile ~/.gitignore_global

This seems like it'll work great.  I feel better knowing it's VCS-ed too.
Also moved the origin of the mvr project over here.
*** DONE volatile-highlights.el
    - State "DONE"       from "STARTED"    [2014-03-21 Fri 02:05]
    - State "STARTED"    from "TODO"       [2014-03-21 Fri 01:52]
Highlighting references to the symbol under the point is something currently
missing from my Emacs toolkit.  This package solves that.  Enable this in most
language modes.

So, this doesn't do what I thought it did.  It just highlights the affected
text during a yank, undo, or similar operations.  Still useful though, so
instead of just enabling it in certain language modes, I left it on everywhere.
*** DONE clean up Emacs Python setup
    - State "DONE"       from "TODO"       [2014-03-21 Fri 02:47]
Thanks to iPython's dependencies, need a new integrated interpreter here.

Will just go with the standard M-x run-python shell for now.  Removed
ipython.el and helm-ipython.  I considered keeping this enabled on GNU/Linux,
but I don't think it's worth the init bloat.  Also cleaned up some other stuff
while at it.
*** CANCELED Newcons
    - State "CANCELED"   from "STARTED"    [2014-03-21 Fri 03:08]
    - State "STARTED"    from "TODO"       [2014-03-21 Fri 02:50]
A new console driver for FreeBSD that supposedly fixes the issues with new
Intel GPU drivers being unable to return control to the console upon exiting X.
Build a kernel with nothing changed but this, and find out if it works.

This isn't yet in 10.0-REL.  Will have to wait until its available (probably
not until 10.1 at the earliest).  I guess I'll stick with VESA until then.
*** CANCELED iPython (revisited)
    - State "CANCELED"   from "TODO"       [2014-03-21 Fri 03:37]
As iPython is my second most used work REPL, it makes sense to know everything
there is about it.  Check out the %quickref listing and read the manual.

Also look into customizing ~/.ipython/ipy_user_conf.py,
e.g. ipy_greedycompleter.

Update: I may need an iPython replacement now, since they have included Qt
dependencies without the option to disable them.
*** CANCELED Emacs iPython notebook
    - State "CANCELED"   from "TODO"       [2014-03-21 Fri 03:37]
This looks potentially awesome and could replace my hacked together Python
integration with more functionality.


Canceled due to new iPython Qt dependency.
*** DONE read all Conkeror docs
    - State "DONE"       from "STARTED"    [2014-03-21 Fri 07:08]
    - State "STARTED"    from "TODO"       [2014-03-21 Fri 05:02]
There's lots of new info on conkeror.org.  Read all of this and incorporate any
new ideas/features into my config file.  I'll also read the past month or two
of mailing list threads.  Wait until FreeBSD installation is redone first.

- C-h b lists commands in a given context.
- C-u r reloads, bypassing cache.
- Use ]] and [[ to do a heuristic search and follow on next and previous pages.
- C-c C-c submits forms.  Useful on sites that have weird Web 2.0 forms
  without normal submit actions.
- There exists an Emacs minor-mode called conkeror-minor-mode that can send
  code to Conkeror.  I'm skipping it for now, since I don't hang out with my
  RC file too often.
- Removed my duplicate-buffer function, since it turns out you can do the same
  thing with C-u f 0.
- Within a download buffer:
  - d: Cancel.
  - p: Pause.
  - r: Retry.
  - x: Run or queue a shell command on the download.
- To edit textfield contents in Emacs, select the field and use C-i.  It'll
  gray out and open it and any existing content in a new Emacs buffer.  When
  done, use C-x # to send the content back.
- There's a new black tabs theme called "skorpan's black theme".  The
  Blackened theme still seems to work for me currently though, so I'll stick
  with that for now.
- Page modes exist for certain pages, like YouTube.  Not currently using any.
- I may want to block focus change via JavaScript.  There's two solutions to it
  on the Focus page.  I'll keep it in mind to see how much of an issue it is.
- Added key-kill, which solves a really annoying problem.  Will add tests as I
  find sites that do this.

Definitely was worth doing.
*** DONE upgrade FreeBSD to 10.0-REL
    - State "DONE"       from "STARTED"    [2014-03-27 Thu 21:17]
    - State "STARTED"    from "TODO"       [2014-01-25 Sat 23:26]
10.0 is scheduled for a 2014-01 release.  The goal is to standardize everything
on 10.0 and spare some burden of maintaining separate versions everywhere.

- Redo VM.  This worked fine, with a few minor issues related to the gcc->clang
  switch and the VMware tools not being available yet.  Used open-vm-tools,
  which surprisingly worked perfectly.  Detailed all other discovered changes
  to fbsd_setup.org.  Noticed a few new minor bugs, but nothing critical (so
- Redo workstation: This worked great with one major exception: the poor Xorg
  Intel driver support.  Newcons is supposed to fix the issues here, but I'll
  have to wait for at least the next major revision for it to be available.
  GENERIC kernel size = 20200376, CELLBLOCK size = 9930567.
- Redo VM again.  This is due to rsyncing everything off the old workstation to
  it, plus I installed the i386 version.  I may wait until VMware releases 10.0
  compatible tools.
- Wipe VPS and have 10.0 installed.  Be sure to mention expanding to the new
  mem/disk limit and ask for an amd64 install.  I think I just need to backup
  my ~/.irssi folder and the sisface user as everything else either exists
  elsewhere or is under VCS.  Not bothering with the other user data.

Come up with a new source upgrade workflow later.  Decided to skip the VM
update for now, since I don't really use it and can probably test any potential
new ports to use with what I have for the most part.  I do still want to do
this eventually though.
*** CANCELED write login script for dyn.com
    - State "CANCELED"   from "TODO"       [2014-04-08 Tue 20:40]
dyn.com is being homosexual and requiring free users to login manually every 30
days now.  Write a script using curl to do this and crontab it.

Something like this might work:
curl -X POST --data "username=YOURNAME&password=YOURPASSWORD" \

This might not work since there's a captcha image on the login page now.

Update: On 2014-04-08, dyn.com announced they would cancel their free dynamic
hostname service in 30 days.  Will find a suitable replacement instead of
bothering with this as I definitely don't want another bill to keep track of.
*** CANCELED M101JS: MongoDB for Node.js Developers
    - State "CANCELED"   from "STARTED"    [2014-04-13 Sun 23:02]
    - State "STARTED"    from "TODO"       [2014-04-01 Tue 18:43]
An online course.  Will give it a try.  Start here:

- By default, MongoDB stores data in /data/db.  Specifying the --dbpath will
  change this.
- .pretty() can be attached to various JSON-returning functions like .find().
- npm installs everything locally on a per-project basis in a node_modules/
  directory.  It know how to read from a packages.json file that should define
  all dependencies for that project.  Just type =npm install= to run that.
- =forever= is a useful alternative to daemon.node.

Got too far behind due to other work stuff, so canceling.  This seemed to be a
good class though.  I might try to follow the next one since I'll have more
free time by then.  Replaced this with a more general MongoDB learning task.
*** CANCELED Stackless Python
    - State "CANCELED"   from "TODO"       [2014-05-01 Thu 10:00]
A version of Python, enhanced for thread-based programming.

No longer using Python professionally, so I'll cancel this for now.
*** DONE upgrade WAP encryption
    - State "DONE"       from "STARTED"    [2014-05-01 Thu 10:00]
    - State "STARTED"    from "TODO"       [2014-05-01 Thu 9:59]
Upgraded to WPA2 Personal.
*** DONE Magit (revisited)
    - State "DONE"       from "STARTED"    [2014-05-06 Tue 01:13]
    - State "STARTED"    from "TODO"       [2014-04-16 Wed 10:50]
Seems like this is what most people are using for Emacs git integration, so
I'll give this another try before committing all git-related interactions to
memory in Egg.  This corresponds to the 'git mastery' task too.  Doing a
manual install.


Setup notes:
- git clone https://github.com/magit/git-modes.git
- git clone https://github.com/magit/magit.git
- In its directory, run: EFLAGS="-L ~/.emacs.d/git-modes" make lisp docs
- Add the following to the .emacs:
;; Magit
;; https://github.com/magit/magit
(require 'magit)

Usage notes:
- Manual is here: http://magit.github.io/master/magit.html
- magit-status: Same as git status.
- Everything else can be done from the git status buffer.  If in doubt,
  hitting ? will list available commands in a particular context.

Magit is a sizable improvement over Egg, particularly with its command
management, so I'm switching.  The only downside seems to be that pushing and
pulling doesn't recognize proxy settings.  I'll just do that from the CLI when
behind a proxy.

Had to install devel/magit from ports on FreeBSD due to encountering the same
compilation errors as before.  This seems to be an older version with poorer
documentation, but it still works fine.  In the future, I may try copying my
compiled directory from somewhere else.
*** DONE groovy-mode
    - State "DONE"       from "STARTED"    [2014-05-12 Mon 21:08]
    - State "STARTED"    from "TODO"       [2014-04-13 Sun 23:03]
Looks like there's only one option for this.

- Setup instructions are in inf-groovy.el.
- Throws an error upon first startup.
- Errors on unmatched delimiters.
- The integrated REPL seems hopelessly broken.

This mode is a mess.  Switched to the dumber version cited below.

This is the best I can do for now (on OSX, add a bunch of setenvs):
#+BEGIN_SRC emacs-lisp
;; groovy-mode
;; https://raw.githubusercontent.com/nealford/emacs/master/groovy-mode.el
(autoload 'groovy-mode "groovy-mode" "Major mode for editing Groovy code." t)
(add-to-list 'auto-mode-alist '("\.groovy$" . groovy-mode))
(add-to-list 'auto-mode-alist '("\.gradle$" . groovy-mode))
(add-to-list 'interpreter-mode-alist '("groovy" . groovy-mode))
(autoload 'groovy-mode "groovy-mode" "Groovy mode." t)
(defconst groovy-block-mid-re "Need something here or it blows up.")
;; Add auto-indenting on newline.
(add-hook 'groovy-mode-hook
          (lambda ()
            (local-set-key "\C-m" 'reindent-then-newline-and-indent)))

Also, edit function groovy-electric-brace to call last-command-event instead
of last-command-char.  last-command-char has been removed as of 24.3.
*** DONE write Emacs function to auto-reset CIDER
    - State "DONE"       from "STARTED"    [2014-05-15 Thu 22:38]
    - State "STARTED"    from "TODO"       [2014-05-15 Thu 13:35]
Write this helper function to send a clojure.tools.namespace.repl/refresh call
to the CIDER buffer and map it to a mode key chord.

This seems to work fine:
#+BEGIN_SRC emacs-lisp
(defun cider-reset ()
  "Sends (refresh) to the remote CIDER REPL buffer.  Only works
in M-x cider buffers connected to localhost."
  (set-buffer "*cider-repl*")
  (goto-char (point-max))
  (insert "(refresh)")
(define-key cider-mode-map "\C-c\C-o" 'cider-reset)
*** CANCELED Pygame
    - State "CANCELED"   from "TODO"       [2014-05-20 Tue 09:58]
Maybe write a couple small games, then a medium-sized one.  Don't waste any
more time than that on it though.  First, check out Pyglet to see if it's
better than Pygame in some way.  I also have a book on Pygame I might read.

Deprecating the use of Python for personal projects.
*** CANCELED Pyglet
    - State "CANCELED"   from "TODO"       [2014-05-20 Tue 09:58]
Cross-platform windowing and multimedia in Python.

Deprecating the use of Python for personal projects.
*** CANCELED Rabbyt
    - State "CANCELED"   from "TODO"       [2014-05-20 Tue 09:58]
A sprite library for Python.  Maybe use this with Pyglet.
Deprecating the use of Python for personal projects.
*** DONE scan managed Emacs packages
    - State "DONE"       from "STARTED"    [2014-05-21 Wed 09:09]
Run M-x package-list-packages and look through all of the available managed

Stuff to look at:
- https://github.com/lateau/charmap
- https://github.com/clojure-emacs/clojure-cheatsheet
- http://jaderholm.com/color-themes/color-theme-wombat+.el
- http://www.emacswiki.org/emacs/Elnode
- https://github.com/emacsmirror/heroku
- https://github.com/tarsius/hl-todo/blob/master/hl-todo.el
- https://github.com/tobiassvn/inf-mongo
- https://github.com/thomblake/js3-mode
- https://github.com/nicferrier/emacs-mongo-elnode-db
- https://github.com/hvesalai/scala-mode2
- https://github.com/kljohann/turnip.el
*** DONE kibit
    - State "DONE"       from "STARTED"    [2014-05-21 Wed 23:46]
    - State "STARTED"    from "TODO"       [2014-05-20 Tue 15:04]
kibit is a static code analyzer for Clojure.  kibit integrates into lein and
can be run inside of Emacs.  There's also a mode package for it, but it seems
unnecessary.  https://github.com/jonase/kibit

Created a ~/.lein/profiles.clj file with this:
#+BEGIN_SRC clojure
{:user {:plugins [[lein-kibit "0.0.8"]]}}

Added some semi-custom code to ~/.emacs.

Has some false positives, but overall is a great addition to the Clojure
development tool belt.
*** CANCELED Clojure koans
    - State "CANCELED"   from "STARTED"    [2014-05-21 Wed 14:57]
    - State "STARTED"    from "TODO"       [2014-05-21 Wed 12:56]
Do all of these.  It's generally recommended to do these before the 4clojure
problems, so they're probably much easier.

Did these for awhile, but they're too easy, so I'm skipping it.  The way =lein
koan run= auto-detects changes is pretty awesome though.
*** DONE cleanup l1j-en
    - State "DONE"       from "STARTED"    [2014-05-26 Mon 00:58]
    - State "STARTED"    from "TODO"       [2014-05-25 Sun 22:51]
I'm using r725 at home currently and it does have a few new bugs.  At least
diff this against my last check-in and review new code.  If I'm feeling
particularly brave, I can cleanup the newer revisions as well.

Looks like the newer revision isn't so bad, despite the number of checkins.
Fixed a few minor bugs and the dreaded LoS bug.  Still needs some minor work,
but I'll do that whenever I have a few spare hours.
*** DONE find dyn.com replacement
    - State "DONE"       from "STARTED"    [2014-06-01 Sun 12:47]
    - State "STARTED"    from "TODO"       [2014-05-05 Mon 15:48]
Find one compatible with ddclient.  Here's some options:

afraid.org seems the most promising, so try that first.  Rewrite ddclient
setup to use whatever I go with.

Apparently, updating with ddclient updates all hosts registered with a user to
the specified IP address.  As a result, I'm just sticking with macroexpand.com
and muze.rootbsd.net mapped to the VPS and rcake.crabdance.com mapped to
home.  If I ever need to do multiple hosts, I'll just create another account.
Disabled ddclient on the VPS for now.
    - State "CANCELED"   from "STARTED"    [2014-06-01 Sun 13:50]
    - State "STARTED"    from "TODO"       [2014-06-01 Sun 13:14]
Follow these instruction to get a Symbolics VLM on Linux:

There's also more useful info here:

- First ensure dependencies are available with (nfs-common = Debian's
  nfs-utils): sudo apt-get install nfs-common nfs-kernel-server xinetd
- Edit /etc/xinetd.d/time and enable the TCP version.
- Run =sudo /etc/init.d/xinetd restart=.
- Add the lispm user with =sudo adduser lispm=.  Then set his uid and gid to

My torrent to obtain the Open Genera 2.0 Alpha source had been sitting for
awhile with 0 seeds, so I'm suspending this until I can get a copy, lest I
waste my time deciphering often-incorrect setup tasks.

UPDATE: Grabbed it.  Will restart this at some point.
*** DONE scan all Leiningen plugins
    - State "DONE"       from "STARTED"    [2014-06-01 Sun 14:03]
    - State "STARTED"    from "TODO"       [2014-05-28 Wed 11:03]
Only currently using kibit.  It's worth looking through the rest to see if
anything improves life.

Stuff to look into:
- lein-ancient: For scanning for outdated dependencies.
- lein-oneoff: For creating single-file programs.
- lein-dist: Creates a standalone tarball of source and dependencies.
  lein-tar is an alternative.

Probably won't use, but good to remember the existence of:
- lein-ubersource: For grabbing all the sources of dependencies.
- lein-daemon: Runs app as daemon.
- lein-heroku-deploy: Simplification of Heroku deployment.
- lein-ring: Automates ring-related tasks.

There's less useful stuff here than I'd hoped.  But, I'll check back again
later in a few years.
*** DONE upgrade elscreen
    - State "DONE"       from "STARTED"    [2014-06-01 Sun 14:49]
    - State "STARTED"    from "TODO"       [2014-06-01 Sun 13:49]
Switching to the package.el enabled version of this, which doesn't have the
apel dependency.  However, this won't work on <24.


Also deprecated elscreen-w3m.
*** DONE FreeBSD wireless networking
    - State "DONE"       from "STARTED"    [2014-06-07 Sat 13:18]
    - State "STARTED"    from "TODO"       [2014-06-07 Sat 10:37]
Come up with a workflow for detecting, enabling, and troubleshooting wireless
networking from FreeBSD laptops.

- Full details: https://www.freebsd.org/doc/handbook/network-wireless.html
- Add entries for networks to /etc/wpa_supplicant.conf.  Use the priority
  setting if necessary to ensure the proper WLAN is used.
- On my current laptop, I have this in /etc/rc.conf for configuring the network
  on startup:
  ifconfig_wlan0="WPA DHCP"
- Run =service netif restart= to either initiate the connection or restart it
  if it died.
- To scan for networks, use =sudo ifconfig wlan0 up scan=.  The =up= can be
  omitted if the device is already in that state.
*** CANCELED QuickLisp
    - State "CANCELED"   from "TODO"       [2014-06-09 Mon 17:14]
A library manager for CL.  Seems to be what everyone's using these days.

Canceling for now, due to mostly deprecating CL.  I'll keep this one in mind
though, since it'll be the first item on the list if I come back to it (even a
*** DONE 4Clojure practice problems
    - State "DONE"       from "STARTED"    [2014-06-17 Tue 09:39]
    - State "STARTED"    from "TODO"       [2014-03-31 Mon 11:34]
Do some of these for practice.  Not bothering to make an account.  Will
probably stop somewhere in medium difficulty, since some of the later ones
require a ton of work.

Solutions checked into GitHub under practice/clojure/4clojure.clj.

Solved a lot of these.  Closing this task since my main goal was accomplished,
but I'll probably continue doing these occasionally.  The only real downside to
these problems is they're limited to single expressions and can't include
function or macro definitions.
*** DONE rainbow-delimiters
    - State "DONE"       from "STARTED"    [2014-06-20 Fri 22:14]
    - State "STARTED"    from "TODO"       [2014-06-20 Fri 22:00]
Give this a try to see if it makes visual paren-matching faster.

Doesn't help too much on my wombat-custom-theme, but seems still worth keeping
around for the unmatched paren highlights (which are quite noticeable).
*** DONE cider-nrepl
    - State "DONE"       from "STARTED"    [2014-07-08 Tue 14:51]
    - State "STARTED"    from "TODO"       [2014-07-08 Tue 14:39]
Middleware that can at least be used for embedding REPLs in one's application.
Might have other uses worth knowing about (supposedly it does).

Apart from the REPL-embedding, I can't see any good use for this library that
CIDER doesn't already provide.  Maybe look back into this if I can't get this
functionality in ClojureScript.
*** DONE FreeBSD process accounting
    - State "DONE"       from "STARTED"    [2014-07-08 Tue 15:25]
    - State "STARTED"    from "TODO"       [2014-07-08 Tue 15:22]

Definitely a must-have for multi-user systems, but since I'm not administrating
any, there's no need to enable this.  Revisit this if that ever is the case
though, since the lastcomm command offers tons of useful features.
*** DONE add function to format JSON
    - State "DONE"       from "STARTED"    [2014-07-15 Tue 01:11]
    - State "STARTED"    from "TODO"       [2014-07-15 Tue 01:08]
Add this to ~/.emacs.

#+BEGIN_SRC emacs-lisp
(defun bcm-json-format ()
  "Format a region of JSON."
   (shell-command-on-region (mark) (point) "python -m json.tool" (buffer-name)
*** DONE literate programming in org-mode
    - State "DONE"       from "STARTED"    [2014-07-15 Tue 01:36]
    - State "STARTED"    from "TODO"       [2014-07-15 Tue 01:21]
Learned at the Clojure meetup that it's possible to use C-c C-c to eval SRC
blocks in org-mode and direct output to the buffer based on some insertion
rule.  This could be useful for files containing solutions to exercises from
books and for documentation (GitHub natively supports org-mode file rendering).

Made a test file in practice/misc/github-test.org.  The results are such that
literate programming isn't really feasible (enough) for me to bother setting
up the necessary org-babel-execute hooks.  However, I may switch to using
org-mode instead of Markdown for GitHub-hosted projects.  I'll just have to
keep in mind the notes made therein.
*** DONE mintty
    - State "DONE"       from "STARTED"    [2014-07-15 Tue 02:40]
    - State "STARTED"    from "TODO"       [2014-07-15 Tue 02:24]
Supposedly an actually decent terminal emulator for Windows.

Looks like I had already installed this when installing Cygwin.  Be sure to
always select this package in the future.

Changing the terminal settings can be done through the options menu accessible
by right-clicking on the window.  Consolas 12pt with a size of 102x60 seems to
work good for my monitor.

Works great and is actually a reasonably decent terminal.  There's really no
reason not to use this for all Windows-based terminal work from now on.
*** DONE ac-nrepl
    - State "DONE"       from "STARTED"    [2014-07-27 Sun 21:49]
    - State "STARTED"    from "TODO"       [2014-07-24 Thu 15:15]
company-mode is the method for in-buffer auto-completion suggested on the CIDER
GitHub page, but this seems simpler and provides the desired functionality.  If
I decide I want this feature in other languages later, I'll switch to

Works great.  Here's my config additions:
#+BEGIN_SRC emacs-lisp
;; ac-nrepl: In-buffer completion for Clojure projects.
;; https://github.com/clojure-emacs/ac-nrepl
(require 'ac-nrepl)
(defun clojure-auto-complete ()
  (let ((ac-sources
(defun bcm-clojure-hook ()
  (auto-complete-mode 1)
  (define-key clojure-mode-map
      (kbd "<backtab>") 'clojure-auto-complete))
(add-hook 'clojure-mode-hook 'bcm-clojure-hook)
*** DONE update EMMS to 4.0
    - State "DONE"       from "STARTED"    [2014-07-28 Mon 20:50]
    - State "STARTED"    from "TODO"       [2014-07-28 Mon 20:45]
Nothing too interesting for me was added.  However, this would also be a good
time to revisit all config settings.
*** DONE web-mode
    - State "DONE"       from "STARTED"    [2014-07-28 Mon 20:54]
    - State "STARTED"    from "TODO"       [2014-07-28 Mon 09:20]
A possible alternative to nxhtml-mode, which I could deprecate after setting
this up (along with MuMaMo).

Works great.  Deprecating the comparatively-clunky nXhtml.  Here's my setup:
#+BEGIN_SRC emacs-lisp
;; web-mode: An autonomous major-mode for editing web templates (HTML documents
;; embedding parts (CSS/JavaScript) and blocks (client/server side).
(require 'web-mode)
(add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.[gj]sp\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))
(setq web-mode-markup-indent-offset 2)
(setq web-mode-css-indent-offset 2)
(setq web-mode-code-indent-offset 2)

Lots more customization options are available if I find myself annoyed with
something.  Also, be sure to byte-compile the web-mode.el with M-x
*** DONE js2-mode
    - State "DONE"       from "STARTED"    [2014-07-28 Mon 21:09]
    - State "STARTED"    from "TODO"       [2014-07-28 Mon 15:54]
espresso is now js-mode, and is considered pretty bare-bones compared to

Here's the config:
#+BEGIN_SRC emacs-lisp
;; js2-mode
;; https://github.com/mooz/js2-mode
(require 'js2-mode)
(add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode))
(add-to-list 'auto-mode-alist '("\\.json\\'" . js2-mode))

This includes on-the-fly syntax checking, but I still need to setup
jslint/jshint.  I'll do that separately though.  Deleting espresso.
*** DONE flymake-jshint
    - State "DONE"       from "STARTED"    [2014-07-28 Mon 21:27]
    - State "STARTED"    from "TODO"       [2014-07-28 Mon 16:15]
Switch to this from flymake-jslint, since this uses Node.js.

- Install node.  Installing www/node and www/npm from ports.  Uninstalling
- Run =npm install jshint=.
- Add ~/node_modules/.bin to $PATH.
- Create a ~/.jshintrc file from rules here: http://www.jshint.com/docs/
- Grab flymake-jshint.el from:
- Delete old flymake-jslint.el, flymake-jslint.elc, and jslint.js.
- M-x byte-compile-file flymake-jshint.el.
- Include the following code in ~/.emacs:
#+BEGIN_SRC emacs-lisp
;; flymake-jshint
;; https://github.com/daleharvey/jshint-mode/blob/master/flymake-jshint.el
(require 'flymake-jshint)
(add-hook 'js2-mode-hook (lambda () (flymake-jshint)))

Nope. This is better than jslint, I guess, since it uses a node.js backend.
However, I already found bugs in it from a quick test.  I'll be leaving it off
by default and just jshinting stuff from the CLI or turning it on briefly with
M-x flymake-mode.  I'm okay with mainly just using js2-mode for now, since it
seems to handle the essentials.
    - State "CANCELED"   from "TODO"       [2014-07-29 Tue 09:54]
A freeware sampler.

Going to give Overtone a serious effort first.  If that doesn't work out, I'll
go back to trying to find a collection of suitable non-programmable audio
*** CANCELED Blackthorn 3D
    - State "CANCELED"   from "TODO"       [2014-07-29 Tue 09:56]
A 3D game engine, entirely in CL, using cl-opengl with lispbuilder-sdl.  This
is worth checking out since if it's really complete, then I may actually use it
directly.  If not, maybe I can look at the code to see how SDL stuff was done.


Deprecating all CL work in favor of Clojure.  This engine does look pretty
good though.
*** CANCELED graphviz-dot-mode
    - State "CANCELED"   from "TODO"       [2014-07-29 Tue 09:58]

Not using Graphviz enough to bother with this, at least for now.
*** DONE i915kms
    - State "DONE"       from "STARTED"    [2014-08-02 Sat 06:27]
    - State "STARTED"    from "TODO"       [2014-08-02 Sat 06:03]
Give this kernel module a try prior to loading the intel driver when running

This works and makes using X super fast.  It also greatly reduces X's CPU
usage.  The downside of not being able to return to the console is still
present, however.  I haven't tried this yet, but perhaps kldunload-ing the
driver might get it back.

Changed xorg.conf to use the intel driver.  To start X, run:
sudo kldload i915kms && startx
*** CANCELED fix FreeBSD screen blanking
    - State "CANCELED"   from "STARTED"    [2014-08-23 Sat 23:49]
    - State "STARTED"    from "TODO"       [2014-08-22 Fri 17:05]
In the current Xorg setup, when the xset timeout blanks the screen, it
disables the monitor connection such that the monitor stays on and displays
the no connection message.  It should put the monitor in sleep mode.

Enabled DPMS blanking, to no affect.
*** DONE Gnus (revisited)
    - State "DONE"       from "STARTED"    [2014-08-30 Sat 11:19]
    - State "STARTED"    from "TODO"       [2014-08-27 Wed 21:15]
Nothing is inherently wrong with Mutt, but it would be ideal if all
email-related interaction is fully embedded within Emacs.  I originally gave
Gnus a try back when starting with Emacs many years ago, but didn't have the
spare cycles to master it at the time, and Mutt was a good way to get up and
running quickly.  Set it up for Gmail and give it a try for awhile.  It seems
to me that for my light email usage, Gnus should be fine provided I can stand
its awkward key commands.

So, this works, but has some problems that I'm not really interested in putting
the time into to work around.  For example, I'd prefer just having the client
display all messages by default, as mutt does.  The command syntax isn't so
bad, but it'd be nicer were it more Emacs-like.  I'll stick with mutt, but I
may use Gnus again some day in the far future if I want to unify email and RSS
feeds in one place.  If the critical architecture change of providing
multi-threading support in Emacs comes about, it'll address another main
blocking point for Gnus.  This is the fact that Gnus blocks all usage while
performing network actions.  The same issue is a big blocker for RSS reader
*** DONE cider-nrepl (revisited)
    - State "DONE"       from "STARTED"    [2014-09-02 Tue 15:35]
    - State "STARTED"    from "TODO"       [2014-09-02 Tue 15:04]
The new version of CIDER (0.8.0-snapshot) requires a matching version of
cider-nrepl.  This is worth tracking, since it provides a bunch of REPL
functions used in the new CIDER.

Added [cider/cider-nrepl "0.8.0-SNAPSHOT"] to the plugins vector in
*** DONE ac-cider
    - State "DONE"       from "STARTED"    [2014-09-02 Tue 20:54]
    - State "STARTED"    from "TODO"       [2014-09-02 Tue 15:39]
ac-nrepl is deprecated.  This is the current AC package.

Keeping this installed from ELPA so it always matches CIDER.  Seems to work
fine, but could use some polish.
*** CANCELED ritz
    - State "CANCELED"   from "TODO"       [2014-09-02 Tue 21:07]
Adds debugging facilities to nREPL projects.

Update: ritz is no longer active.  See this blog post for details:
*** DONE CIDER 0.8.0alpha
    - State "DONE"       from "STARTED"    [2014-09-02 Tue 21:27]
    - State "STARTED"    from "TODO"       [2014-09-02 Tue 11:21]
Upgraded from 0.5.0 to 0.8.0alpha and deprecated clojure-mode-test (now called
clojure-test and bundled with CIDER).

- Documentation functions have changed.  Use C-c C-d C-d for normal cider-doc,
  C-c C-d C-g for cider-grimoire, and C-c C-d C-j for cider-javadoc.
- C-c C-d a will allow for cider-apropos searching.  C-c C-d A calls
- cider-inspect has now been added, which is analogous to slime-inspector.  Use
  C-c M-i when the point is on an expression/value.  Use Tab to cycle object
  selection, Return to navigate into sub-objects, and l to go back to parent.
*** DONE paredit (revisited)
    - State "DONE"       from "STARTED"    [2014-09-10 Wed 19:27]
    - State "STARTED"    from "TODO"       [2014-09-09 Tue 11:44]
Give paredit another chance.  ac-cider seems to be written with the expectation
the user has it enabled.  Keep the cheat sheet handy

- C-) and C-( forward/backward slurps.
- C-} and C-{ forward/backward barfs.
- Using M-; at EOL for inline comments will auto-block-align them.
- C-M-f and C-M-b are useful for navigating fowards/backwards through sexps at
  the current level.
- M-s splices sexps outward (useful for deleting extraneous parens).
- Normal paren deletion is still possible, but only from the point just after
  the open paren (or other paired characters) and when empty.  Use C-k to
  delete sexp contents first.

I've overcome my initial dislike of paredit.  It'll take awhile to get used to,
but it seems to start paying dividends quickly.
*** DONE learn Groovy
    - State "DONE"       from "STARTED"    [2014-10-07 Tue 15:23]
    - State "STARTED"    from "TODO"       [2014-05-13 Tue 15:55]
Superior to Java by far, but inferior to Clojure by an equal degree.  Wouldn't
bother with this language, except that the back end of a work project is
currently written in it, so it's worth learning for that reason.  Attain a
medium level of competency here.

- Read Groovy Wikipedia entry.
- Read Programming Groovy 2.
- Write a test project.

- The features gained by the dynamic typing here aren't worth the often
  rarely-used features gained.  Defaulting to static but implicit typing, with
  facilities to disable it, would retain the best of both worlds.
- There are many, many gotchas that can result in hard to find bugs.
- Metaclassing has weird behavior in certain contexts, like with complex class
- It doesn't address many of Java's shortcomings and, like other JVM languages,
  gets all of the JVM's baggage.  Ruby is a far nicer implementation of these
- Some of the syntactic sugar is poorly conceived, like being able to call
  closure-accepting functions with fname(1) { ... }.  Visually, this is
  indistinguishable from a function definition, except for a single keyword.

I think I know enough of this to get by.  I'm still weak on function
vocabulary, metaclassing, and other "advanced" features, but the likelihood of
needing them is low and they're generally inferior to analogous features in
real FPLs.

Update: A plan is in place to completely deprecate the language at work and
replace it with Clojure, so I'm calling this task complete.  Once the
conversion is complete, I'll remove groovy-mode from Emacs as well and reclaim
any wasted brain space.
*** CANCELED learn Gradle
    - State "CANCELED"   from "TODO"       [2014-10-07 Tue 15:24]
Gradle is definitely better than Maven, but lacks a lot of the nice features of
it (or Leiningen).  However, it's used as the main build script for one of the
work projects, so it's worth knowing about.  Reading the user guide should be
enough: http://www.gradle.org/docs/current/userguide/userguide_single.html

I might be able to get away without learning this if I put it off long enough
to fully switch everything over the Leiningen.  Hence, I'll delay this as long
as possible.

Update: A plan is in place for replacing the only place Gradle is used at work
with Leiningen.  So, I'll never have to use this.
*** DONE Ring
    - State "DONE"       from "STARTED"    [2014-10-10 Fri 09:14]
    - State "STARTED"    from "TODO"       [2014-10-09 Thu 09:30]
From the docs: "Ring is a low-level interface and library for building web
applications".  Compojure uses Ring, so it's probably smart to start here and
build outwards if I expect to have any deep-level understanding of what's
going on behind the scenes.  I'll save the deep-dive effort for Compojure.

- [X] Read the docs: https://github.com/ring-clojure/ring/wiki
- [X] Make a test site.  Added test project with notes to

It's not inconceivable that I'd want to use Ring by itself.  If REST is used
though, definitely go with Compojure.
*** DONE Compojure
    - State "DONE"       from "STARTED"    [2014-10-14 Tue 09:43]
    - State "STARTED"    from "TODO"       [2014-10-10 Fri 09:14]
A routing library for Ring.  The two combined make for the most commonly used
Clojure web stack.

- [X] Read the docs: https://github.com/weavejester/compojure/wiki
- [X] Make a test site.  Added test project with notes to

Compojure is pretty straight-forward and there's not as much to it as there is
to Ring.
*** DONE lib-noir
    - State "DONE"       from "STARTED"    [2014-10-14 Tue 10:17]
    - State "STARTED"    from "TODO"       [2014-10-14 Tue 09:44]
This might be superior to using Compojure directly.

Looks like it might be useful for at least session-management.  Has some other
maybe-interesting features, but I can't tell from just the API docs.
*** DONE create Ring/Compojure architecture template
    - State "DONE"       from "STARTED"    [2014-10-25 Sat 04:04]
    - State "STARTED"    from "TODO"       [2014-10-14 Tue 14:19]
Given what I know about Ring, Compojure, and the other web-related packages,
create a scalable architecture for a secure, single-page, REST-heavy site.

Created a project on GitHub called site-template.  Since proprietary code was
starting to be added, ceased public development.  Now consider this a work
*** DONE further ZSH tweaking
    - State "DONE"       from "STARTED"    [2014-10-27 Mon 16:23]
    - State "STARTED"    from "TODO"       [2014-10-27 Mon 16:09]
These are the last things I know about to further optimize ZSH for my usage
patterns, short of properly learning ZSH script (which I'd really like to not
do, as it's a completely uninteresting language).
- Read everything here: http://grml.org/zsh/zsh-lovers.html
- Go through the source of every theme and plugin in oh-my-zsh to see if there
  anything else that improves the quality of my life.

A waste of time.  Only added a =NUL= alias -g.  I'm now not going to bother
getting any more fluent at ZSH.  I may revisit the code I yanked from
oh-my-zsh several years from now though.
*** DONE Bower
    - State "DONE"       from "STARTED"    [2014-10-27 Mon 16:34]
    - State "STARTED"    from "TODO"       [2014-10-27 Mon 16:26]
A package manager for web-based front-ends.  Just read the website on this:

- Installed via npm.
- Can install registered packages, via URLs, or a GitHub project (e.g. =bower
  install bm3719/some-js-project=).
- Bower package repo: http://bower.io/search

That's about all I need to know.  This is the best way to manage a
JavaScript-heavy front-end.  I'll use it should such a situation arise.
*** CANCELED Nightmod
    - State "CANCELED"   from "TODO"       [2014-11-21 Fri 19:57]
A project used in conjunction with play-clj sometimes.  https://nightmod.net/

Cool project, but it built around a non-Emacs editor.
** Work-related topics
*** DONE design new logo
    - State "DONE"       [2014-01-04 Sat 03:19]
    - State "STARTED"    [2014-01-03 Fri 22:42]
The current logo lacks the appeal and iconography of the best corporate logos
out there.  I'm convinced I can come up with something at least almost as
compelling as the best marketing droids out there.

Logo requirements are:
- Flat: It should be 2D, without even any simulated 3D.
- Simple: Successful logos have few colors and are easy to recognize.
- Lisp-inspired: It could perhaps incorporate something like a lambda or an
- SVG: The official version will be an SVG file that can then be exported to
  other formats.

Came up with a new logo that satisfies all these criteria.
*** DONE update favicon
    - State "DONE"       [2014-01-04 Sat 03:38]
    - State "STARTED"    [2014-01-04 Sat 03:16]
The HTML 4.01 and XHTML 1.0 standard now includes support for PNG favicons.
Defining favicons per-page is the preferred method.  Update all pages and
templates to include this.

Added a 32x32 PNG of the official ME logo.  Also replaced the existing root
level favicon.ico file for user pages that don't include the appropriate
favicon tag.
*** DONE scan FSP job market
    - State "DONE"       from "STARTED"    [2014-03-22 Sat 15:15]
    - State "STARTED"    from "TODO"       [2014-02-06 Wed 11:00]
For a long list of reasons, I'm going to do a scan of this sector to see if I
can get a decent job for awhile, probably at least a year or two.  This time,
I'm attempting to be more picky, and ensure that I don't end up in some
life-sucking enterprise salt mine.

I've created a dedicated org-mode document for this search, job_search.org.
Some general observations:
- I2S, a Langley initiative, is a vast meat market of contracting companies.  I
  can't imagine that good teams come out of this process.  Despite it being a
  massive timesink, I'm going ahead with a couple firms to at least give it a
  try for a round or two.  I'm probably setting myself up to be miserable
  though.  I guess in the worst-case scenario, I can always just put up with
  it for awhile to not suffer a net loss from the exercise and quit.
- Like with searching on the regular open job market, you get a lot of
  time-wasting recruiters.  This isn't nearly as bad, much pruning is still
- Upon posting to clearancejobs.com, a flood of contacts will come in through
  the first 3 weeks or so, then they'll slowly trail off.  Be sure to mark
  profile as inactive when done.

Found what seems to be an excellent non-i2S job.  Closed clearancejobs.com
profile so I can stop getting spammed.  Will create a self-education task of
everything I need to brush up on.
*** DONE Linux Mint 17 MATE VM
    - State "DONE"       from "STARTED"    [2014-10-25 Sat 03:33]
    - State "STARTED"    from "TODO"       [2014-09-13 Sat 11:37]
Was going to create a Debian 7.6 VM, but its Emacs version is too old for my
needs.  Decided to try Linux Mint instead, since it has a MATE-based distro.
This will replace my Debian 7.1 VM.

- [X] Install Linux Mint 17 MATE.
- [X] Setup Emacs for at least Clojure development.
- [X] Create a backup of the baseline VM.
- [X] Look around old Debian VM filesystem to make sure nothing important is
- [ ] Look into Xmonad integration with MATE.

Seems okay and doesn't have any major annoyances.  Probably my biggest problem
with MATE is the uninspired launcher menu design, but I won't be using it that
much anyway.

- Decrease swappiness: Edit /etc/sysctl.conf and add =vm.swappiness=10= at the
- Remove mono-runtime-common: This will also remove some useless desktop apps.
- Turn off Java in LibreOffice: Writer -> Tools -> Options -> Advanced,
  uncheck Java.
- Disable some startup applications: Go to Preferences -> Startup Applications
  and disable unused stuff.
- Install dconf-editor: This provides a GUI for editing the window manager,
  among other things.
- Xmonad: Install xmonad and dmenu.
  - Open dconf-editor and change
    /org/mate/desktop/session/required-components/windowmanager from =marco= to
  - Ensure /usr/share/applications/xmonad.desktop exists.
  - Ensure /usr/share/xsessions/xmonad.desktop exists.

Update: Can't seem to get Xmonad integration working properly.  It loads, but
has some weird rendering issues and hides the menubar.  May revisit this again
*** DONE Security+ certification
    - State "DONE"       from "STARTED"    [2014-12-29 Mon 13:32]
    - State "STARTED"    from "TODO"       [2014-12-01 Mon 11:09]
Reluctantly volunteered for this useless cert, which apparently the government
loves now.  Load all this info into brain from the book.

- [X] Find a recent electronic copy of the Security+ book and read it.  Take
- [X] Try watching one or more of the video lecture series on the topic.
  Tried this for awhile, but was too boring to watch.
- [X] Do a week-long full review of notes.
- [X] Take every practice test I can find.
- [X] Take and pass test.

Be able to get a perfect or close to it on this practice test:
Also do all of these:

Notes are in practice/misc/security.org.

A terrible experience in all ways.  Complaints:
- A good chunk of questions on the test have no relation to stuff in the
  book.  I hypothesize that it's not possible to get over a low-800s score
  without an external knowledge source.
- The cert is only good for 3 years.  Getting on just gets you on an expensive
  and time-consuming treadmill, making it possibly of net-negative value.
- The material covers some outdated technologies.  The pace of updates is far
  slower than that which industry moves.
- There exists material, at least in the book, which are factually incorrect.
- The testing software sucks.
- The book sucks.
- The cert system has been gamed by various 3rd party services that hand out
  answers to the questions, for a price.
** Games to play
*** DONE UO Forever
    - State "DONE"       from "STARTED"    [2014-01-26 Sun 16:17]
    - State "STARTED"    [2014-01-18 Sat 06:06]
One of the most popular UO PSes.  Will mostly just AFK-play this.

If I stick with it, I may switch to In Por Ylem, which reopens on 2014-01-31.
This PS also runs UO Zombies, which looks like some minor fun too.

Macroed up some GM levels, but then didn't feel like actually playing.
*** DONE Jagged Alliance 2: Urban Chaos 1.13
    - State "DONE"       from "STARTED"    [2014-01-31 Fri 17:06]
    - State "STARTED"    from "TODO"       [2014-01-27 Mon 23:53]
The most promising-looking total mod for JA2.  Might skip this though, since
I'm pretty JA2-ed out.  This uses a newer version of 1.13 and AFS.

- Use cleaning kits with C-..

Though the production values are spotty, this seemed good enough to be worth
playing, and the new 1.13+AFS is excellent.  Unfortunately, there are critical,
game-breaking bugs in the last "official" version of the mod, and my game got
stuck, unable to take sector B2 and I'm quitting as a result.
*** DONE Idle Farmer
    - State "DONE"       from "STARTED"    [2014-02-06 Thu 13:29]
    - State "STARTED"    from "TODO"       [2014-01-29 Wed 18:27]
A Flash game that can be "played" almost entirely AFK, which is one of my
favorite design concepts.  http://www.freewebarcade.com/game/idle-farmer/

Not that good. Apart from being in Flash, this game has some issues:
- Needs balancing work, particularly with skill upgrade scaling.
- Game lasts about as long as it should, but there just isn't much content
  along the way.
- The difference between manual and wife egg collecting is too large.
*** DONE DotA 2
    - State "DONE"       from "STARTED"    [2014-03-09 Sun 03:48]
    - State "STARTED"    from "TODO"       [2014-02-10 Mon 01:26]
Former war friend wanted me to play this with him.  I'll give it a try.

Seems like it might be okay, but not for me.  Will keep it around for awhile,
but probably uninstall soon.
*** DONE Candy Box
    - State "DONE"       from "STARTED"    [2014-05-05 Mon 15:33]
    - State "STARTED"    from "TODO"       [2014-04-28 Mon 13:01]
Spoken highly of by coworkers:

Interesting concept for a game.  Still got bored though.  Might continue it,
but probably not since I'm at the point where I have to manually craft stuff.
Save game name: fsadk
*** DONE Jagged Alliance 2: Deidranna Lives! 1.13
    - State "DONE"       from "STARTED"    [2014-05-29 Thu 23:50]
    - State "STARTED"    from "TODO"       [2014-02-01 Sat 22:14]
The last of the decent-looking mods for JA2.  I suspect this is more likely to
work properly due to it just being a semi-mod of normal JA2 1.13.

- Place and flag a mine in front of the alarm button in sectors with mines,
  else the enemy or the militia is likely to push it and destroy the mine.
- Copy the contents of Data-AFS\TableData\Inventory (extract AFS separately if
  necessary) into Data-DL113\TableData\Inventory.  Without this, enemies use
  way fewer items.
- There's a particularly nasty bug in 1.13 6232 that causes sector inventory
  items to disappear.  C5 has this problem.  It's usually obvious when there's
  3-9x scopes and bipods in sector but inaccessible.  Supposedly, it's fixed
  in 6242.
- Crashes tend to happen when managing large quantities of stuff.  Save often
  and in many backup slots.
- Don't use C-LMB to move stuff into vehicle inventory.  Stuff disappears when
  it overflows a stack.

Not really much better than vanilla JA2 1.13, but it is nice to have some
slightly modified maps.  I'm not really crazy about the forced sneaking on the
mine sectors though.  Overall, Arulco Revisited is better, but it'd be hard to
go back to not using AFS.

Got bored collecting stuff, so I'm calling JA2 done -- at least for now, as I
may want to revisit it again many years from now once more 1.13+AFS progress
has been made.
*** CANCELED Oolite
    - State "CANCELED"   from "TODO"       [2014-07-06 Sun 00:58]
A modern, open source version of Elite, that seems to do a pretty good job of
recreating the core Elite experience.  However, it's very no-frills and plays
pretty rough.  The Linux version doesn't run properly on my netbook's GPU, so
it's installed on Windows.  There's a ton of addons for this game, but I'll
start with just the default game at first, mainly because it's unlikely I'll
stick with it (X3:AP has everything here and way more, after all).

- Decent models: http://wiki.alioth.net/index.php/Griff_Industries
- Background images: http://wiki.alioth.net/index.php/BGS

Skipping, due to giving it a quick try with disappointing results.
*** DONE Cataclysm: Dark Days Ahead
    - State "DONE"       from "STARTED"    [2014-07-27 Sun 20:46]
    - State "STARTED"    from "TODO"       [2014-07-17 Thu 09:31]
This roguelike has a lot of elements I've wanted to put in a game, at least as
far as character detail is concerned.  http://en.cataclysmdda.com/

Try this tileset, which hopefully works with 0.A:
If not, this one should be the most complete:

Try compiling on FreeBSD, using the Ubuntu instructions here:

Great game.  Has a lot of great world generation and config options to craft
the desired game experience.  I'll be adding this one to my regular games
list.  Be sure to check back on it in a few years, since new stuff is being
added all the time.

One major gripe though is the bugs.  After spending a solid week building up a
great character, a game crash managed to delete him completely.  I'll be
taking a break from the game for awhile as a result and try back later.
*** DONE Defiance
    - State "DONE"       from "STARTED"    [2014-08-15 Fri 09:25]
    - State "STARTED"    from "TODO"       [2014-08-09 Sat 09:55]
Yet another junk shooter MMO.  This will be my crap game for the year.  Will
froob it up for a few hours then quit, as usual.

About as theme park MMO as possible and generally a complete mess.  However,
it is quite appropriate for the show it's tied into (and not in a good way).
*** CANCELED Battletech: The Frontier Lands
    - State "CANCELED"   from "TODO"       [2014-08-24 Sun 16:35]
A free, real-time MUX based on the Battletech board game.


The Java client doesn't run properly, at least on GNU/Linux in xmonad.
There's another client, but it's in Qt, so I guess I'll skip this.
** Computer science/programming goals
*** CANCELED Python game programming
    - State "CANCELED"   from "TODO"       [2014-05-20 Tue 10:00]
I figure Python is a good half-way point between practicality and the languages
I really prefer.  Since I already know Python very well, it's just a matter of
learning the things needed to make games.
- Figure out self-contained deployment of Python apps and settle on libraries
  for package management.
- Finish reading Beginning game development with Python and Pygame.
- Read the Pyglet and Rabbyt docs.
- Make an actual game with either Pygame or Pyglet+Rabbyt.
- Investigate 3D programming with Python.

By now I should have game development here down to a science.  Maybe make my
own game framework to make this easier in the future.

Will replace this with Clojure.  Though less suitable for games, I think the
dividends paid from using it instead will be greater in the long run.
** General life goals
*** DONE Invisalign braces
    - State "DONE"       from "STARTED"    [2014-01-26 Sun 15:49]
    - State "STARTED"    [2013-02-11 Mon 12:47]
I'd probably be okay with the current positions of my teeth, but having them
all perfectly aligned would be great.  Using this to clean out my HSA.  I'll
also stick around work a little longer than I otherwise would to offset the
cost here.

This is a good product/service (so far).  It has some serious downsides though:
- Very expensive.
- Inconvenient in restaurants.  Carrying around a case sucks.
- Adds several minutes of extra hygiene work every day.
- Having molds made, teeth resized, and buttons installed sucks a lot.
- Quite uncomfortable at first.  Mine have annoying edges.  The annoyance here
  goes away after a week or so though and wearing it is no problem after that.
- Takes a long time, in my case about a year.
- Even when done, requires wearing an object to bed occasionally to ensure the
  new placement holds.

I think this is worth the cost, provided you've got many decades of life left.
The process also results in a lower propensity for cavities, depending on
starting position.  This especially sucked for me financially though, since it
turns out my dental insurance didn't cover the $1.5k I thought it would.

Finished the active phase of this.  Remaining is a regiment of:
- 3 months active wear.
- 3 months part-time wear + nightly.
- 6 months nightly.
- Forever part-time nightly.

I'm happy with the results, but given the downsides, it's probably only a
minor net benefit, mostly conditional one's marginal utility of the price.
*** DONE ultimate computing setup
    - State "DONE"       from "STARTED"    [2014-04-16 Wed 08:50]
    - State "STARTED"    [2013-01-25 Fri 01:33]
At some point in the not to distant future, I'd like to update my personal
computing resources.  Some of this I can do any time, but for the gaming/VM
rig, I want to wait until I'll have all my free time to maximally use it.  So,
until I retire from employment or am close to it, my current hardware there is

Development workstation:
- Back up everything to a FreeBSD VM.
- Get a new, similar SSD for this machine. 30GB is still fine.
- Install FreeBSD 10.0.  Do this on a VM first.
- Update my install checklist.
- Move all old data over.

Gaming/VM rig:
- Get a super fast SSD.
- New motherboard, 16GB RAM, CPU, heat sink, PWS, and fans.
- Get a 2nd-tier video card.  Try to keep it under $300.
- Setup VMs for FreeBSD, Debian, and MINIX in VMware Player
  - FreeBSD: This is a copy of my dev setup and package update testbed.  Make
    backups of clean install and last deployed.  The only difference here will
    be the hardware.
  - Debian: This will be my dependency-fest VM for things I don't want crapping
    up my dev box.  Make backups of a base package setup.  There's no need to
    setup all my dev software here.
  - MINIX: This is just for using while reading Modern Operating Systems.  Try
    to get the source code on the same VM.  Make a backup of it in that state.
- This should run Windows 7 Home Premium x64 as I no longer need a server OS.
- For software, just setup Emacs (+Aspell, Aspell-en), l1j-en dev software
  (Eclipse, TourtiseSVN, Navicat), a few stock utilities (7zip, VLC, WinMerge,
  Foobar2000, FLAC, Putty/WinSCP), Conkeror, and whatever games I'm currently
  playing.  Lazy-load everything else.

Mobile setup:
- Choose a mid-range netbook.
- If I cannot put FreeBSD on it, install Debian.  Record whatever I do to get
  everything working on it, since I'll probably want to redo it occasionally.
- Find one with an Atheros wifi chipset and Intel integrated graphics.
- Ideally, this would have an accessible HD bay so I can put an SSD in (since
  no netbooks seem to come with them these days).

- Backup everything on muze to cellblock, including databases.
- Just have RootBSD do an upgrade, so I can use the HD/RAM upgrades.
- Move everything back over and update ports.  Make sure this as closely
  matches what's on cellblock as possible (but with no X apps).

This will give me the minimal amount of computing coverage I think I'm
comfortable with.  Normally, only the netbook and dev workstation will be on
all the time, keeping power usage to a minimum.  Making heavier use of VMs will
prevent me from messing anything up too.

Some decisions, mostly as a result of other events (like me decided to leave
work a little sooner than planned):
- Decided to start this mid 2013 instead of around 9 months later.
- Decided to skip the mobile setup for now.  I may still do this later if it
  turns out I'm suffering with my messed up netbook, since that will be my only
  mobile computing platform.  Alternatively, I may go for a compact 12".  Not
  sure yet.
- Had to redo the workstation hardware.

The end result here is close, but not quite the ultimate setup I had in mind.
I'll at least need to replace some workstation hardware with fanless stuff to
qualify for that label.
*** DONE replace netbook
    - State "DONE"       from "STARTED"    [2014-06-07 Sat 15:41]
    - State "STARTED"    from "TODO"       [2014-06-05 Thu 21:09]
Ordering an Acer Aspire V5-131-2887.  Will first try putting one of my spare
30GB SATA2 SSDs in it.  I want to consider getting an Intel Centrino WLAN card
instead of the built-in Atheros.  Will first try getting it working with
FreeBSD, then Debian most likely.

Some guy posted these hardware specs:
CPU: Intel(R) Celeron(R) CPU 847 @ 1.10GHz, with 2048 KB L2 cache
Graphics: Intel “Sandy Bridge” 800MHz clock, 2 MB L3 cache
NIC: Broadcom NetLink BCM57785 Gigabit
WLAN: Qualcomm Atheros AR9462
SDXC: Broadcom BCM7765/57785 SDXC/MMC
Sound: Intel 7/C210 series HDA
Touchpad: ETPS/2 Elantech (Synaptics compatible)

- Replaced the HDD with a spare 30GB SSD.
- The touchpad sucks and as usual, my hand keeps bumping into it.  However,
  Fn-F7 can be used as a toggle to disable/enable it.
- Fn-F6 toggles the screen backlight.

This worked about as good as can be expected, with FreeBSD running great.
Remaining things to look into:
- Check if SD cards work.
- Get the vendor screen dimming working.
- Build a custom kernel.
- Go through old netbook and check for any unique user data.
*** DONE quit smoking
    - State "DONE"       from "STARTED"    [2014-06-17 Tue 13:30]
    - State "STARTED"    [2012-10-16 Tue 23:11]
My final significant vice.  I'm waiting until I hit my target weight first, but
once that's done, the time to do this has arrived.  Doing this has many obvious
benefits, not the least of which is the $6 I'll save not buying every pack of
cigarettes.  This will save around $1200/yr.  That's money I definitely can't
afford to waste the rest of my life (not to mention the whole getting lung
cancer part).

One reason I've been hesitant to do this is nicotine has some very positive
mental effects for me.  Without it, I'm much more sleepy and tired.  This
shouldn't be an issue post-employment.

Decided to get a Halo G6 e-cigarette with the Torque56 fluid on "high" nicotine
dosage.  This seems to be doing the trick so far, though I estimate my total
nicotine intake is about half and it's therefore like half-quitting as far as
discomfort goes.  But, I won't consider this task complete until I can live
without even that, since it still costs money (though much less).  Plus, I'm
not sure the e-fluid goop is all that healthy of a thing to be inhaling.

Closing this since I probably will stick with e-cigarettes for awhile.  I'll
make a new one for quitting that later.
** Macro-goals
*** DONE year-end review for 2014
    - State "DONE"       from "STARTED"    [2015-01-07 Wed 10:32]
    - State "STARTED"    from "TODO"       [2015-01-07 Wed 9:12]
Switched plans to getting paid to master Clojure.  In the future, I may employ
the same plan with Haskell.  This is probably the only condition after this
that I'd accept a job though.  This is highly unlikely, however, given the
volume of those.

Note: Changing the format of these to be summary/comments, goals set at the
beginning of the year, and end-year observations.  Goals for next year will be
listed in next year's review task.

- Make large pile of cash learning Clojure.
- Use cash to increase passive income.
- "Finish" server emulator project.
- Start at least one game project in play-clj.

Observations for 2014:
- Some vacillation due to external circumstances, but I suppose I pathed
  optimally given that.
- Server emulator mostly polished, or at least it's good enough that I can just
  touch up things here and there occasionally and have it be less of a
- Didn't get around to any new game creation.
- Wasted a lot of time scanning job market, ramping up for new job, and
  working.  The trade-off was the massive amount of paid Clojure bootstrapping.
  Overall, worth the cost so far.
- Increased financial independence buffer amount.
- Could've gotten more permanent benefit stuff done.  I think this was due to
  less daily todo list checking.  Will address this next year.
- Will need a more comprehensive goal list for next year, to make sure I'm
  making proper macro-level progress.

* Project List (2013)
** Books: Computer Science/Programming
*** DONE Let Over Lambda
    - State "DONE"       [2013-01-01 Tue 22:06]
    - State "STARTED"    [2012-07-18 Wed 08:15]
An advanced topics Lisp book, mostly about macros and closures.  I was going to
put this off until the end of my Lisp self-education, but it was the best
portable hard copy book I had lying around, so I was reading it on the Metro
since I had a commute for awhile.

Gets into a lot more advanced detail than is useful for me at the moment, like
low level optimizations.  If I come back to writing CL regularly, I'll reread
this.  This did give me a few new macro usage ideas and I'll probably use the
custom hygienic macro definition macro.
*** DONE Idiomatic Expressions in C (paper)
    - State "DONE"       [2013-01-11 Fri 02:06]
    - State "STARTED"    [2013-01-11 Fri 01:24]
Knowing common C idioms is useful for reading others' code and improving my

Useful info.  Turns out I didn't know most of these.  Will need to keep these
in mind, particularly the malloc/sizeof assignment and struct initialization
*** DONE Pregel: A System for Large-Scale Graph Processing (paper)
    - State "DONE"       [2013-01-12 Sat 11:26]
    - State "STARTED"    [2013-01-12 Sat 01:19]
I may have some ideas about graph algorithms applied to distributed computing,
which is a large part of my job.  Pregel established the base concepts used in
Apache Hama and the now defunct GoldenOrb (replaced by Giraph).

This isn't that complicated.  Figure 2 pretty much illustrates how an algorithm
would execute.  Also to keep in mind are aggregators and topology mutation.
*** DONE How to Think Like a Computer Scientist: Learning With Python
    - State "DONE"       [2013-01-12 Sat 12:55]
    - State "STARTED"    [2013-01-12 Sat 10:50]
Was hoping this could be a refresher of some basics and a good chance to make
sure I've internalized everything.  However, I read some of this and it's
pretty lame.  The CS here is minimal and it's mainly a Python tutorial.


Plowed through this pretty quick and ignored the GASP library stuff.  Not
bothering to do the exercises since they're all pretty trivial.  I'm also not
crazy about the random mashing of CS and SE concepts.

I did learn a couple things:
- ~[0] * 4~ initializes a list of zeros of length 4.
- ~[1, 2] * 2~ evaluates to [1, 2, 1, 2].
*** DONE Fast unfolding of communities in large networks (paper)
    - State "DONE"       [2013-01-24 Thu 10:58]
    - State "STARTED"    [2013-01-24 Thu 10:03]
Work-related reading as a prerequisite to implementing the Louvain algorithm on
Giraph.  Hopefully will provide some context on community detection in general
too.  http://arxiv.org/abs/0803.0476

Not too complicated on its surface.  Doing this in Giraph might be a challenge
though, since it's not immediately obvious to me how this algorithm would
decompose/map into Giraph tasks (or whatever they're called).  I'm also not
sure what's meant here by the "modularity" of nodes in communities.
*** DONE Yet Another Haskell Tutorial
    - State "DONE"       [2013-04-05 Fri 10:02]
    - State "STARTED"    [2012-01-04 Wed 12:26]
Already did the exercises for a lot of this, but it was years ago, so starting
over.  This is really a good tutorial (with a few minor exceptions).

Since a lot of content is still missing from this (looks like it's not done
yet), I'll have to supplement this with some other Haskell text afterwards, but
that was my plan anyway.  There's some things I'm not sure about though, like
the CPS style is wrong, I think.  Code in practice/haskell/yaht.

I'm skipping the final chapter, but I may come back and do it later.
*** DONE Dremel: Interactive Analysis of Web-Scale Datasets (paper)
    - State "DONE"       [2013-04-08 Mon 10:47]
    - State "STARTED"    [2013-04-05 Fri 14:47]
Probably the next step (or maybe fad) post-MR.

- Dremel uses a columnar data model.  Records are either atomic values or
  records that contain some number of required or optional fields.  Some fields
  can be repeated, meaning they can many entries.
- A dotted notation is used for references records/fields.
- Repetition levels are necessary to disambiguate columns.  They are indexed by
  "at what repeated field in the field's path the value has repeated."  NULLs
  are inserted when a repeated field doesn't include another field that
  contains the same required field.  The definition levels inform how many
  potentially undefined fields in that path are actually defined.  A bit
  confusing, but can be worked out with some effort, though in practice it
  requires extra info.
- The efficiency is gained in the fact that record assembly only occurs upon
  needed fields.  These are reconstructed using FSMs.

Columnar data models seem to have a serious downside in visually inspecting
what you actually have in your data.  Algorithms like those provided in the
appendices are needed to do anything in such a system.  This complexity can be
outweighed in performance, particularly in sparse datasets with lots of fields.
*** CANCELED Programming in Scala
    - State "CANCELED"   [2013-05-02 Thu 14:06]
Chose this as my primary Scala text, mostly because it's written by the
language designers.

Was going to read this for work, but since I resigned, I'll be skipping Scala.
From what I've learned about it so far, it's an okay language, but lacks the
elegance of Clojure.  Of course, I'd still rather write in Scala than Java.
*** CANCELED Cascalog for the Impatient
    - State "CANCELED"   [2013-05-02 Thu 14:08]
Not done yet.  Check back in a couple weeks.

Resigning my job means I no longer need this.
*** CANCELED Computer Science from the Bottom Up
    - State "CANCELED"   [2013-07-27 Sat 18:17]
    - State "STARTED"    [2013-07-15 Mon 12:03]
An online textbook.  Doesn't look that great, but should be a quick read.

Read a few chapters before realizing this is crap.
*** DONE What Every Computer Scientist Should Know About Floating-Point Arithmetic (paper)
    - State "DONE"       [2013-11-22 Fri 23:55]
    - State "STARTED"    [2013-11-21 Thu 23:29]
From a summary: "Explains overflow, underflow, what denormalized numbers are,
what NaNs are, what inf is, and all the things these imply.  After reading this
paper, you'll know why a == a + 1.0 can be true, why a==a can be false, why
running your code on two different machines can give you two different answers,
why summing numbers in a different order can give you an order of magnitude
difference and all the wacky stuff that happens in the world of mapping an
uncountably infinite set of numbers onto a countably finite set."

- The IEEE floating-point standards provides algorithms for basic math
  operations with answers that implementations are required to match.  If
  designing systems, it'd be a good idea to check against them.
- 0.1 base 10 cannot be exactly stored in base 2 (1.10011001... * 2^-4).
- Various methods for rewriting algorithms exist to accommodate rounding
  errors.  An example is given here.
- The IEEE floating-point standards are IEEE 754 for binary and IEEE 854 for
  base 2 and 10.
- Base 2 implementations benefit from tighter error analyses, as base is a
  factor in relative error.
- NaN is represented by floating-point numbers with exponent max(e) + 1 and
  nonzero significands, zero by exponent min(e) - 1 and zero significand.

Practically, the issues here are indeed things a programmer or computer
scientist should always be keeping in mind, as floating-point computation can
introduce small "relative errors" that cascade to "catastrophic" value errors.
For language design, obviously try to meet the IEEE standards (probably not a
problem if there's a standard host language).
** Books: Math
*** CANCELED The R Book
    - State "CANCELED"   [2013-05-02 Thu 14:10]
Read enough of this to at least get competent in the R language.  Will skip
this if I don't get to it by retirement.

This was a work-related reading task.  I don't intend to actually use R on my
own, as there's really very little about it that appeals to me.
*** CANCELED Introductory Statistics with R
    - State "CANCELED"   [2013-05-02 Thu 14:10]
Was going to read separate books on statistics and R, but this combines the two
*** CANCELED Detection of Abrupt Changes: Theory and Application
    - State "CANCELED"   [2013-05-02 Thu 14:10]
It's possible I might want to revisit this concept later for one of my startup
ideas.  Until then, canceling.
*** CANCELED Hierarchical Edge Bundles (paper)
    - State "CANCELED"   [2013-05-02 Thu 14:11]
** Books: General Non-fiction
*** DONE A Brief History of Tape (paper)
    - State "DONE"       [2013-01-13 Sun 02:51]
    - State "STARTED"    [2013-01-13 Sun 02:40]
A white paper by Exabyte on tape storage.

Mostly just an advertisement and therefore useless.
    - State "DONE"       [2013-01-28 Mon 02:20]
    - State "STARTED"    [2013-01-28 Mon 01:47]
Full title: BMP4: Best Management Practices for Protection against Somalia
Based Piracy.  Might get some ideas from this for games or maybe at least be
mildly entertained.

Not really much here.  However, pirate operations similar to this would be
better in space games than the way they currently are, though I think the idea
is a bit overused.
*** DONE Lyman Reloading Handbook (44th Ed.)
    - State "DONE"       [2013-02-18 Mon 16:07]
    - State "STARTED"    [2013-02-18 Mon 13:00]
I'm considering getting into handloading as a hobby once I move out of DC.  The
main reason is to be able to use some esoteric cartridges, as there are few
good off the shelf rifle-like cartridges optimized for short barrels.  It also
looks like it might be fun.  However, I'm a bit put off by how much stuff I'd
have to own to do this.  So, I haven't decided yet, but reading the informative
(non-chart data) chapters of this should give me an insight into the effort
involved and is just good info to know.  If I do decide to get into this, get
an updated version of this book.

An okay read, but actually didn't learn much since I'm somewhat familiar with
the basics.  This copy is very old, so it doesn't even include most of the
newer cartridges I'd be interested in.
*** DONE North Korea's Military Threat
    - State "DONE"       [2013-03-11 Mon 02:06]
    - State "STARTED"    [2013-03-08 Fri 23:20]
A lengthy report by the US Army's Strategic Studies Institute.  Written around
the time I was tracking this stuff at work, but since it's mostly about
conventional forces, not much is likely to have changed since then.

About as informative as possible on this topic and somewhat educational.
*** DONE Technological Slavery: The Road to Revolution
    - State "DONE"       [2013-03-14 Thu 00:56]
    - State "STARTED"    [2013-03-06 Wed 18:11]
A collection of writings by Ted Kaczynksi, including an update to Industrial
Society and its Future.

There's only a few other interesting post-manifesto points in here.  Kaczynksi
also seems to repeat himself often and engage in a lot of rather uninteresting
rambling.  A lot of this reads like an internal dialog within the
anarcho-primitivism movement, which of course isn't something I care about.
Overall, I'm unimpressed and more convinced than ever that my counter-arguments
to anarcho-primitivism are correct.
*** DONE How to Live on Twenty-Four Hours a Day
    - State "DONE"       [2013-03-21 Thu 23:06]
    - State "STARTED"    [2013-03-18 Mon 10:23]
An essay from 1910 on how to best use your time.


Also read some of the cited works, like Hazlitt's "On Poetry in General".

There's some good content here and I seem to have independently discovered most
of these ideas.  Some notes:
- I've lately started to feel more in agreement with something pointed out here
  about fiction: "[...] the reason is that bad novels ought not to be read, and
  that good novels never demand any appreciable mental application on the part
  of the reader."
- I'm not sure I agree with his later assertion about there being a mental
  benefit to reading classic literature that is difficult to parse or is
  written in verse.  If I'm going to really struggle reading, I'd rather it be
  to learn something useful.  However, I've queued his main suggestion of
  reading Aurora Leigh in an attempt to find out for sure.  I suspect this
  would be more true for one developing reading skills.
- I like his idea about training your brain to focus better by forcing it to
  stay on topic for set periods of time.  My approach here has been to remove
  distractions, but this could be a useful method when that's not possible.
- Includes a reminder that quantity of books read is unimportant.  He suggests
  45 min of reflection for every 90 min of reading, which I think is a bit
  too much on average.
*** CANCELED The Road to Reality
    - State "CANCELED"   [2013-04-05 Fri 14:23]
    - State "STARTED"    [2013-03-27 Wed 12:38]
A Roger Penrose book that presents the fundamental laws of the universe, with
much mathematical information intact.  I'm mainly interested in this for the
first section, which is intended to get the reader at least acquainted enough
with the relevant math to understand the physics, but I'll read the rest of it
too (minus the stuff on twistor theory, which I already read about in The
Emporer's New Mind and am at least tentatively dismissing).

This book doesn't meet its stated goal of being for intelligent
non-professionals.  Even being a layman of somewhat above average mathematical
skill, I found much of this impenetrable.  While this has helped identify some
shortcomings, a better approach could have managed the state of the reader's
learning as well.  I would've gladly exchanged scope for a more carefully built
foundation.  I'm stopping a few chapters in and will revisit this later once
I've done more remedial work on my own, as plowing ahead with it in confusion
isn't an optimal use of energy.
*** DONE FreeBSD 9.1 Handbook
    - State "DONE"       [2013-04-05 Fri 14:26]
    - State "STARTED"    [2013-01-28 Mon 11:02]
I've read older versions of this, but want to read the current version since
I'm upgrading to 9.1 and want to use the current best sysadmin practices.

- chflags can do things like set a flag on a file such that it cannot be
  deleted.  This might have its uses, but I'm a bit wary of having to manage
  extra metadata on files.
- Consider different settings for various filesystems.  For example, I might
  want /home to be nosuid.  noexec could also be useful (like for /tmp or
  /var).  Full options are in mount(8).

Most of this is the same, but a lot of sysadmin stuff has been improved.
Created separate tasks for the replacement utilities and documented stuff in my
9.1 setup document.  Read most of this, but skipped much of the stuff I don't
use, since the main point of this task is now achieved.
*** DONE Winchester, VA City Code
    - State "DONE"       [2013-07-31 Wed 03:30]
    - State "STARTED"    [2013-07-29 Mon 13:31]
Read the city code document available on the city government site.  Will skip
some of the parts that don't apply to me, since it's pretty long.

Property tax in the surrounding Frederick county is 0.51%, versus the
Winchester rate of 0.95%.

This is less offensive of a city code than other places I've lived, but it's
still beyond my tolerance level.  I definitely won't be buying any property
within city limits, at least to actually live in, mainly due to the standard
assortment of required responsibilities (lawn care, snow removal, taxes).
However, there are some very minor benefits offered by the city for registered
technology businesses that may be worth exploring if the occasion arises.
*** DONE Arrest-Proof Yourself
    - State "DONE"       [2013-08-25 Sun 15:13]
    - State "STARTED"    [2013-08-24 Sat 13:39]
A popular guide on how to avoid police-related legal problems.  Doesn't look
like great literature, but could have useful information.

Has some off-topic politicking, but also some pragmatic info too.  Worth
reading, I'd say.
*** DONE Arthur Schopenhauer: Essays and Aphorisms
    - State "DONE"       [2013-09-03 Tue 14:00]
    - State "STARTED"    [2013-08-18 Sun 16:29]
Doesn't look promising, but I promised I'd give it a chance.

There's a few okay essays in here, but I've read better ones on every topic
covered.  Those closer to erudite philosophy are often nonsensical
*** CANCELED Essays of Michel de Montaigne
    - State "CANCELED"   [2013-11-20 Wed 21:50]
Essays about the nature of man.  Supposedly one of the more significant
humanist works.  Considered reading this for awhile, hesitating mainly due to
Montaigne's Catholicism.  I'm only tentatively forgiving it due to him being
from the 16th century.

Read enough to know that reading even a subset of these would be a waste of
time.  Instead, I read a summary of highlights, confirming my findings that
these are just a collection of opinion pieces with not particularly interesting
** Books: Fiction
*** DONE Zen and the Art of Motorcycle Maintenance
    - State "DONE"       [2013-01-01 Tue 23:00]
    - State "STARTED"    [2013-01-01 Tue 11:30]
I'd long been aware of this popular philosophy book, but decided to pass on it
until recommended enthusiastically by a coworker.

Quitting this about a third in.  There's some serious problems here:
- The existence of infinite hypotheses doesn't imply the scientific method is
  flawed.  It just means we need external criteria for prioritizing them.  This
  already happens.
- This book is part autobiography, and a very boring one at that.  Maybe this
  is okay to help a general audience relate, but I'd rather just read the main
  point, which I later did on Wikipedia.
- Like a typical philosophic tract, this is full of unreasoned assertions.
- Lots of Eastern mysticism nonsense.
- The underlying model of "metaphysics of Quality" is stupid.  Reading it
  without its verbal fluff on Wikipedia illustrates this clearly.

This isn't all bad, but the okay parts are mostly just self-help and
observations on human behavior.
*** DONE The Wreck of the Rivers of Stars
    - State "DONE"       [2013-02-28 Thu 21:41]
    - State "STARTED"    [2013-02-01 Fri 11:49]
Another Michael Flynn hard scifi novel.

This is more of a character study -- something I've never seen a good example
of.  The scifi elements here are okay, but are too sparse to maintain my
interest.  Quit about 12% in and just read the ending, which wasn't that great
*** DONE In the Country of the Blind
    - State "DONE"       [2013-03-21 Thu 00:42]
    - State "STARTED"    [2013-02-28 Thu 21:45]
Another Michael Flynn novel.

There's some decent writing here, but it's interspersed between two types of
really crappy writing.  One is predictable, trope-fest action scenes.  The
other is just mindless filler about mundane things that have no relation to the
story (likely backfilled in to pad the length).  Also, despite being well
researched in some areas, really dumb errors are made in others (e.g.,
revolvers don't have safeties).  I'd have preferred a little more believable
fictitious math too, as what's here isn't convincing.
*** DONE The Boat of a Million Years
    - State "DONE"       [2013-03-24 Sun 17:00]
    - State "STARTED"    [2013-03-21 Thu 23:08]
The only other Poul Anderson book which looks interesting.

I'd divide this book into two parts.  One is the past, which is very well
researched and believable.  After an awkward segue into the future, it turns
into a just standard hard scifi read.  This was still okay, but nothing
special and could have benefited from more work.
*** DONE Yellow Blue Tibia
    - State "DONE"       [2013-03-26 Tue 01:38]
    - State "STARTED"    [2013-03-25 Mon 01:45]
A unique concept for an invasion novel.

Great setup in the first half, but somewhat loses it after that.  A worthy
read, but short of great.
*** DONE Wil McCarthy short stories
    - State "DONE"       [2013-04-01 Mon 10:43]
    - State "STARTED"    [2013-03-31 Sun 23:25]
A hard scifi novelist recommended by /r/printSF.  I had already tried reading
Bloom long ago though, and didn't like it.
- Boundary Condition: Okay.
- How the Bald Apes Saved Mass Crossing: Entertaining.
- Garbage Day: Not bad, but it seems the Queendom of Sol setting this takes
  place in may only be interesting for character development and such.  I'll
  probably pass on it as a result.
- Heisenberg Elementary: Meh.
- The Technetium Rush: Crap.

I'll probably try one or two of his longer novels.  He's capable of good
writing but occasionally chooses topics poorly, it seems.
*** DONE Wake
    - State "DONE"       [2013-04-05 Fri 02:18]
    - State "STARTED"    [2013-04-04 Thu 13:35]
A Robert Sawyer novel about an internet sentience.  Has some potentially dumb
story features.

Apparently the author is confused about what the difference is between the web
and the internet. Not a bad concept but ineptly executed.  Will skip the rest
of this trilogy and all other works by this author (who apparently can't keep
his novels from turning into leftist political screeds).
*** DONE Blood Music
    - State "DONE"       [2013-04-09 Tue 14:15]
    - State "STARTED"    [2013-04-08 Mon 23:05]
Another nanotechnology scifi novel by the hit-or-miss Greg Bear.  Hopefully
another good exploration of the potential for technology to change just about
everything (though in this case, it's supposedly apocalyptic).  Bear's few
excellent works have been good enough for me to at least try anything that
sounds promising of his.

An excellent novel in almost every way.  A thoroughly original concept (or at
least unique to me) and well-researched enough to be educational too.  I'd say
its only minor weakness is including the concept of observation creating
reality at the macro scale.
*** DONE Ken Liu short stories
    - State "DONE"       [2013-04-11 Thu 15:41]
    - State "STARTED"    [2013-04-09 Tue 14:52]
A former programmer that occasionally includes programming topics in his
works.  http://kenliu.name/stories/

Read all the free ones.  Most were either just okay or crap, but these were
quite good:
- The mMod
- The Perfect Match
- The Paper Menagerie

Looking forward to what else is forthcoming here, so I'll check back again in a
few years and catch up on anything new.
*** DONE The Waste Land
    - State "DONE"       [2013-04-17 Wed 15:00]
    - State "STARTED"    [2013-04-15 Mon 14:33]
The T.S. Eliot poem often assigned for analysis by English majors.  Cited by
Wikipedia as being called "one of the most important poems of the 20th

Very Ezra Pound-like.  Needlessly and intentionally obscurantist, which
explains its popularity for keeping students busy.  There is some okay imagery
in a few parts here, I guess, but if the goal is to transfer information of
some kind to the reader, it fails miserably.  Also noticed this is where the
title for the novel "Consider Phlebas" came from.  Didn't get anything out of
reading this.
*** DONE Darwin series
    - State "DONE"       [2013-04-27 Sat 20:53]
    - State "STARTED"    [2013-04-13 Sat 23:22]
A biology hard scifi novel series by Greg Bear.
- Darwin's Radio: Contains some well researched and even somewhat educational
  science.  Apart from that, this is mostly not that great.  None of the
  characters are interesting enough for a character-centric story like this.
  Making matters worse, dull minutia of their everyday lives is described in
  great detail (probably just as page count fodder).  Actual plot progression
  is incredibly slow partly as a result, but also because just not that much
  interesting stuff happens.
- Darwin's Children: Has all the problems of the former text, but worse.  Has
  some annoying political commentary.  I regret reading this series.
*** DONE Aurora Leigh
    - State "DONE"       [2013-05-01 Wed 14:37]
    - State "STARTED"    [2013-04-30 Tue 05:32]
Recommended in How to Live on Twenty-Four Hours a Day as an example of a work
which, when read, develops ones mental faculties -- unlike normal good fiction:

"There is an infinitely finer English novel, written by a woman, than anything
by George Eliot or the Brontes, or even Jane Austen, which perhaps you have not
read. Its title is "Aurora Leigh," and its author E.B. Browning. It happens to
be written in verse, and to contain a considerable amount of genuinely fine
poetry. Decide to read that book through, even if you die for it. Forget that
it is fine poetry. Read it simply for the story and the social ideas. And when
you have done, ask yourself honestly whether you still dislike poetry."

I've been meaning to give an epic novel/poem like this a new try, so this is as
good as any.  If I like this writing style, I may try Paradise Lost, which the
author of the essay suggests next.  If I find this a waste of time, I can
safely get rid of several printed books in the same genre.


Excellent writing which would be far more digestible in prose form.  Had to
quit early due to the actual content being conveyed being an uninteresting
emotional narrative of the "journey of life" variety.  This is great at what
it's trying to do, but I've already experienced such chronicles too many times
for one so fundamentally unremarkable to appeal to me.  On the contrary to the
cited essay, this is a perfect example of why to avoid female-authored classic
literature, particularly that from England.

As for the original goal of reading this, I guess you could use intentionally
abstruse text to hone your information extraction skill, but why not apply that
effort reading something both challenging to understand and useful (or
entertaining)?  The only secondary benefit in this example is expanding one's
vocabulary or perhaps appreciation of well-crafted text.  So, I certainly don't
think there's anything inherently beneficial about poetry, particularly given
it's many downsides as a form of communication.  I also still think the
pinnacle of writing to be the judicious application of finely honed authoring
skills -- that is, its application in a manner that substantively adds to the
content.  Here, the talent is wasted, bloating an otherwise insubstantial
narrative with a profusion of sentimental blather.
*** DONE Wool (1-6)
    - State "DONE"       [2013-06-22 Sat 01:42]
    - State "STARTED"    [2013-06-15 Sat 03:04]
A modern scifi novel by Hugh Howey.

Great setting and reasonably good stories for the most part.  Up to Book 9 will
be available eventually, so I'll check back later when the last is released.
*** DONE The Last Theorem
    - State "DONE"       [2013-07-13 Sat 01:37]
    - State "STARTED"    [2013-07-11 Thu 03:58]
The supposedly not so great final Arthur C. Clarke novel.

Borderline bailing quality, but finished it anyway.  Main problems: Lots of
pointless filler, forgettable characters, and not that creative scifi.
*** DONE Heart of the Comet
    - State "DONE"       [2013-07-28 Sun 00:43]
    - State "STARTED"    [2013-07-13 Sat 02:16]
A hard-scifi novel about an expedition to a comet.

Overall a good read.  A fair amount of well-researched science, a plausible
back story, decent (but not great) writing, and a mostly believable plot.
Probably the weakest link was the main characters, who were a bit dull to read
so much character development about.  I would have also been happy to pass on
the love triangle and other romance.
*** CANCELED The Unbearable Lightness of Being
    - State "CANCELED"   [2013-07-28 Sun 19:07]
    - State "STARTED"    [2013-07-28 Sun 16:53]
Don't have high hopes for this, but I'll give it a try before tossing my
hardcopy of it.

Mostly a book full of random nothing.  Quitting after a few chapters.
*** DONE Wolfbane
    - State "DONE"       [2013-08-02 Fri 10:39]
    - State "STARTED"    [2013-07-31 Wed 16:47]
A rogue planet-related semi-hard scifi novel.

Okay for a novel from the 1950s.  Modernizing this and removing the space
adventure elements would make it more readable.
*** DONE Alongside Night
    - State "DONE"       [2013-08-05 Mon 00:56]
    - State "STARTED"    [2013-08-02 Fri 14:59]
An introduction to agorism in novel form, which preceded the full manifesto on

Okay in some respects, but a bit too much of an adventure story for me.  Plus,
though I generally appreciate agorism, I'm certainly not foolish enough to find
plausible a massive underground of like-minded agorists.
*** DONE Art & Lies
    - State "DONE"       [2013-08-18 Sun 06:26]
    - State "STARTED"    [2013-08-18 Sun 01:24]
A book that was popular amongst gender theory types and feminists when I was in

Wieners and lady-bits everywhere.  There is some good writing in here, and if
the author was only not obsessed with gender, art, and fag0rts, she'd probably
be capable of productive output.
*** DONE Mass Effect series
    - State "DONE"       [2013-10-10 Thu 01:38]
    - State "STARTED"    [2013-08-16 Fri 01:51]
Only planning on the first 3, as the last one supposedly is terrible.  I like
the Mass Effect mythos, and decided to try this series for that reason.  I
don't have high expectations though.
- Revelation: A straight action novel.  Short and shallow.
- Ascension: Slightly better than the first.
- Retribution: About the same as the second.

Typical dime novel scifi.
*** CANCELED Lord of Light
    - State "CANCELED"   [2013-10-10 Thu 07:10]
Supposedly the best of Zelazny, who some consider the best of fantasy authors.
I've also been a long time ZAngband player, though that probably shouldn't have
anything to do with whether or not to read this.  This is tasked mainly to see
if fantasy fiction can appeal to me.  If I'm bored here, I can probably safely
forget it.

Previewed a little and this is crap.  Like with Hesse's Siddhartha, Hinduism
ruins any novel it becomes a major factor in.
*** DONE Commonwealth Saga
    - State "DONE"       [2013-10-30 Wed 02:04]
    - State "STARTED"    [2013-10-11 Fri 14:59]
This series has potential since it's a space exploration saga that doesn't
primarily use space ships.  I've suspected that interstellar travel (if
possible) may not necessarily require ships (though I also have other notions
that travel at all may not be something prioritized by such a civilization or
even that "civilization" should be assumed).  This series is followed by the
"Void Trilogy", which I'll consider after finishing.

- Misspent Youth: Not officially part of this saga, but provides some of the
  back-story on its universe.  Skipping due to it being a completely
  character-centric novel.  Just read the Wikipedia entry plot summary.
- Pandora's Star: Very long, but filled with good content.  There's some less
  interesting stuff in here too (mostly about personal relationships), but the
  good outweighs the bad.  This does also include a fair amount of ship-based
  space travel, but it's handled fairly well.
- Judas Unchained: Less well written than the first part.  Too many fast-paced
  action sequences and too much predictable trope-usage.
*** CANCELED Void Trilogy
    - State "CANCELED"   [2013-11-04 Mon 14:39]
A followup series to the Commonwealth Saga (which was mostly decent), though
this appears not as good.

- The Dreaming Void:
- The Temporal Void:
- The Evolutionary Void:

Read enough of the first novel to know this is a classic example of "too far in
the future" syndrome.  Gave up and read the plot summary and found I'm
apparently not missing anything interesting.
    - State "DONE"       [2013-11-05 Tue 14:32]
    - State "STARTED"    [2013-11-04 Mon 15:13]
Read about a third long ago.  While nothing interesting happened by the point
where I left off, the potential was there for that.  Plus, I've been meaning to
finish at least one Philip K. Dick novel.  This is the first of a trilogy, the
following books of which I may read if I like where this goes.

Starts off great, kind of turns to semi-crap by the end.
*** DONE Candide
    - State "DONE"       [2013-11-07 Thu 16:36]
    - State "STARTED"    [2013-09-06 Fri 03:19]
Voltaire's magnum opus.  This is short, so it's a low cost dose of classic
literature.  It being a refutation of Leibnizian optimism mildly appeals to me
too (though that's obviously not defensible these days anyway).

This disappointment just repeats the same thing over and over in various random
incarnations.  Things start going good for Candide, then they turn to crap.
*** DONE Wool (7-9)
    - State "DONE"       [2013-11-08 Fri 01:08]
    - State "STARTED"    [2013-11-05 Tue 17:45]
The final 3 books of this series.

Not perfect, but one of the few truly creative scifi series of recent history.
Will have to keep an eye out for more stuff from this author.
*** CANCELED Compleat Enchanter
    - State "CANCELED"   [2013-11-08 Fri 07:44]
May cancel this as I cannot recall why I wanted to read it.

This looks like crap.
*** DONE Swann's Way
    - State "DONE"       [2013-11-09 Sat 13:31]
    - State "STARTED"    [2013-11-08 Fri 09:16]
The first volume of "À la recherche du temps perdu" by Marcel Proust.  Might
continue with the series if this seems worthwhile.  This is referenced
constantly by the supposedly cultured.  I'll give this a fair attempt and find
if the emperor is wearing anything.

Aimless ramblings.  I really need to stop queuing up garbage like this.
*** DONE Rudy Rucker short stories
    - State "DONE"       [2013-11-11 Mon 05:20]
    - State "STARTED"    [2013-11-08 Fri 09:37]
A hard scifi novelist recommended by /r/printSF.  I'll try some of his novels
if these seem promising.

- The Third Bomb: Bleh.
- Tangiers Routines: Huh?
- The Man Who Ate Himself: Pretty good.
- Guadalupe and Hieronymus Bosch: Pretty good.
- Chu and the Nants: Okay, I guess.
- Colliding Branes: Not bad.
- Inside Out: Bleh.
- The Men in the Back Room at the Country Club: Okay, I guess.
- Pockets: Kinda sucks.
- The Perfect Wave: Seemed like crap so stopped reading.
- Hormiga Canyon: Seemed like crap so stopped reading.

While occasionally talented, this author's failings appear to be introducing
fantasy elements (transrealism), comedy that only sometimes works, and an
obsession with gays and drugs.
    - State "CANCELED"   [2013-11-11 Mon 05:38]
A Phillip K. Dick novel.  I may read this if VALIS turns out to be good.  This
seemed the most promising of his bibliography.

Read a little and wasn't impressed.  Skipping.
*** CANCELED Uplift series
    - State "CANCELED"   [2013-11-14 Thu 03:26]
    - State "STARTED"    [2013-11-13 Wed 03:43]
A hard scifi series by David Brin.  Worth a try, though I'm a bit wary of the
galactic feudalism concept (which seems a bit uncreative).  He has quite a lot
of other works, but much of it looks like crap.  Brin did co-author Heart of
the Comet, so maybe it'll be okay.

- Aficionado (short story): Dolphins...
- Sundiver: Quitting, since I'm not into SeaQuest fan fiction.
- Startide Rising:
- The Uplift War:
- Temptation (short story):
- Brightness Reef:
- Infinity's Shore:
- Heaven's Reach:

I just can't take dolphins seriously.
*** CANCELED Dhalgren
    - State "CANCELED"   [2013-11-14 Thu 03:57]
    - State "STARTED"    [2013-11-14 Thu 03:37]
Supposedly a quite dense and difficult hard scifi novel.

Not hard scifi (or even scifi at all) and only difficult due to intentional
obscurantism.  I'll also cancel Ulysses as a result of disliking this writing
style, as it's a waste of time.  If I want a stream of stupid, I'll go read
some random person's Twitter feed.
*** CANCELED Ulysses
    - State "CANCELED"   [2013-11-14 Thu 03:58]
The most highly regarded James Joyce novel, this one supposedly perfecting his
"stream of consciousness" style of writing... or whatever.  I'll know if it's
stupid pretty quickly, so it's a low cost attempt.

I'm now a non-believer in this style of writing mainly because:
- Deciphering it is considerable extra effort with no payoff over clear
- Its actual content is mundane garbage.
*** CANCELED The Three Stigmata of Palmer Eldritch
    - State "CANCELED"   [2013-11-14 Thu 12:56]
Another /r/printSF recommendation.  I'm a little wary of its religious theme,
as Dick apparently was a bit of a kook and I'm less interested in anything he's
authored now.

No more Dick for me.
*** DONE Anathem
    - State "DONE"       [2013-12-25 Wed 00:55]
    - State "STARTED"    [2013-11-20 Wed 22:22]
Having read a few Stephenson books now, I'm not sure his writing style is for
me.  I think I'll make this one my last real attempt at his stuff.  This is
supposedly the best of his works, so if I can't stomach it, then I'll be
writing him off for good.

A thoroughly excellent book and well researched.  A lot of thought went into
structuring this novel and it shows.  I may give Cryptonomicon a try as a
*** DONE Daemon series
    - State "DONE"       [2013-12-29 Sun 01:37]
    - State "STARTED"    [2013-12-25 Wed 02:01]
A promising looking two part hard scifi series about distributed AI.  Highly
recommended by a former coworker.

- Daemon: Great concept, only okay execution.  Problems include too much
  action, unrealistically competent government employees (balanced somewhat by
  their failure, but only when at odds with a much more competent force),
  uninteresting characters, and a few (minor) technical errors.  Still a decent
  read overall.
- Freedom: More of the same, such that it might as well have been all the same
*** DONE Dead Space: Martyr
    - State "DONE"       [2013-12-31 Tue 22:22]
    - State "STARTED"    [2013-12-29 Sun 03:22]
A prequel novel to the Dead Space game series.  Not into the games, but the
lore still seems interesting enough to try this.

Not terrible, but also not good.  There's currently one other non-graphic novel
in this mythos, called Catalyst, but I'll skip it.  While this IP has some
creative aspects, most parts of it aren't very original.
** Technology and software
*** DONE Emacs scripts update
    - State "DONE"       [2013-01-13 Sun 01:45]
    - State "STARTED"    [2013-01-13 Sun 00:24]
Time to go through all scripts and check for updates.
- pabbrev.el: 2.0 -> 3.0.
- clojure-mode: git pull.
- haskell-mode: Switched to the GitHub version.
- helm: git pull.
- ruby-mode: svn up.
- Rhino: Manually updated to 1.7R4 on Windows.
- ESS: Manually updated to 12.09-2.
- egg: git pull.
- redo+.el: Manually updated (no real change).
- htmlize.el: Manually updated.

- Disabled autoloading custom nXhtml install.  nXhtml is included in Emacs now,
  but it looks like MuMaMo isn't.  However, I'm okay with that for the time
  being since startup is way faster without it, but if I ever need to do any
  web development, I should probably go back to the way it was.

Re-byte-compiled everything at top-level ~/.emacs.d.  Putting off updating
SLIME until the nrepl.el task is done.
*** DONE rebuild gaming/VM rig
    - State "DONE"       [2013-01-26 Sat 16:20]
    - State "STARTED"    [2013-01-23 Wed 01:31]
This is just a general upgrade of MB, CPU, RAM, vidcard, disk, and OS.
Switching OS to Win7 Home Premium (the downside is a 16GB RAM max, but has way
less overhead overall).  This is part of my ultimate computing setup task and
provided nothing breaks, I'll be keeping this setup for at least 6 years and
hopefully longer if I keep it off when not using it.  I'll keep the fanless
vidcard in case the new one (which has a fan) dies.

This came together nicely and the performance improvements were worth it.  The
only minor downsides were that none of the 2.5"->3.5" adapters I had fit the
case's HDD slots and apparently MBs don't come with IDE adapters anymore so I
had to also buy a SATA DVD drive for $17.
*** DONE pkgng
    - State "DONE"       [2013-01-28 Mon 21:14]
    - State "STARTED"    [2013-01-28 Mon 20:35]
This is an alternative to the pkg_tools on FreeBSD.  Like those, it only deals
with binary packages and overall package management.  Using this has a few
benefits as I see it:
- Consolidates all the pkg_tools commands under one command.
- Includes built in security auditing, negating the need for portaudit.
- It's probably what will become standard as 10.x defaults to this (I think).

Usage notes:
- Bootstrap the pkg system by running =/usr/sbin/pkg= as root.
- Convert the pkg_tools database to pkgng by running =pkg2ng=.
- Delete /var/db/pkg.bak, if it exists.
- Edit /etc/make.conf and add (with a tab before yes): WITH_PKGNG=    yes

Like pkg_tools, I won't install anything through this.
*** DONE portsnap
    - State "DONE"       [2013-01-28 Mon 21:55]
    - State "STARTED"    [2013-01-28 Mon 21:15]
This replaces cvsup, which is now deprecated.  Redo all cvsup scripts.
portsnap is included in the base install.

Usage notes:
- For initial setup, run =portsnap fetch= then =portsnap extract=.
- To update ports, run =portsnap update=.

Now I can safely forget about cvsup.
*** DONE freebsd-update
    - State "DONE"       [2013-01-28 Mon 22:15]
    - State "STARTED"    [2013-01-28 Mon 21:57]
This replaces the need to manually apply patches when updating the system.  I
still want to build a custom kernel, so I'll just use it to update the source
tree and userland.

During my normal install procedure, I would manually rebuild userland and the
kernel twice to get the latest patches in before installing any ports.  This
procedure can now change to leaving the default settings in
/etc/freebsd-update.conf which includes the line =Components src world kernel=
and running the update.  After that, I'll remove the kernel part.
*** DONE portmaster
    - State "DONE"       [2013-01-28 Mon 22:44]
    - State "STARTED"    [2013-01-28 Mon 22:18]
portmanager is non-functional with pkgng.  Apparently no one was maintaining
it.  portmaster seems like it might be an acceptable alternative.

Usage notes:
- Install ports-mgmt/portmaster.  Flag for PKGNGPATCH and ZSH.
- Check for newer ports: portmaster -L
- Upgrade everything: portmaster -a
- Upgrade everything with prompts: portmaster -ai
- Install a port, upgrading dependencies: portmaster shells/bash
- To check what dependencies will be installed, run: portmaster --show-work

=portmaster -L= also categorizes all ports into various groups.  Looking at
the leaf and root ports serves the same purpose as =portmanager -sl= did.

This is probably a better port management utility than portmanager, as it's way
faster and the command flags are more intuitive.
*** DONE replace Scheme implementation
    - State "DONE"       [2013-01-31 Thu 22:11]
    - State "STARTED"    [2013-01-31 Thu 13:55]
Gauche is broken in ports now.  The interpreter is actively maintained, so it's
probably the maintainer's fault.  However, since I do need a working Scheme
interpreter, I'll find something else to use in the meantime and maybe stick
with this alternative.

Switched to scm.  Installing lang/scm and lang/slib seems to work fine.  Emacs
integration works.  Unless I encounter some issues with it while writing code,
I may just stick with this from now on.

Update: Gauche is working again as of 9.2.
*** CANCELED Eev mode
    - State "CANCELED"   [2013-03-22 Fri 21:55]
Maybe I can use this to replace various shell scripts I wrote for automating
tasks.  Perhaps I can never need to write a script in Bourne shell ever again.

Not sure I'm sold on this idea, but it's potential benefits make it worth
thinking about for a bit.

Looked into this some.  The main features, and the reasons I don't need eev for
those purposes, are:
- Recording shell sessions: I use shell scripts for this.
- Referring to other documents: I can use Emacs bookmarks for this.
- Demos: Don't do demos.

This is simpler than I thought.  I can see it being useful in some situations,
but it's not worth the cost for me.
*** DONE Litecoin
    - State "DONE"       [2013-04-01 Mon 11:30]
    - State "STARTED"    [2013-03-29 Fri 15:48]
A possible Bitcoin replacement.  I might just mine a bunch of these and hang
onto them for awhile.  I don't see these as very likely to be used, since the
algorithm doesn't address Bitcoin's faults, but a small holding can't hurt.

Tried mining overnight, but didn't get anything.  Since I'm not willing to blow
all that power for something unlikely to be worth anything, I'm not bothering
with this.
    - State "CANCELED"   [2013-08-14 Wed 16:57]
A freeware synthesizer.

Tried this and it's pretty awful.  Might come back to it and give it more time
if I can't find anything better though.
*** DONE nrepl.el
    - State "DONE"       [2013-08-15 Thu 03:59]
    - State "STARTED"    [2013-08-15 Thu 01:58]
A possible replacement for SLIME and swank-clojure.  This can also act as a
front end for multiple Lisps (the swank-clojure maintainer confirmed my
suspicions that it was simply not possible to have both functional with SLIME).
This is still not quite at feature parity with SLIME, so I may restore my SBCL
SLIME setup for now and just use nrepl for Clojure.  Look into lein-nrepl while
I'm at it and convert all projects over to this.  Probably will require
Marmalade to pull in dependencies, unless I want to do that manually.


This is actually slower than SLIME on my n270; to the point of being unusable.
However, I tested it in Windows and it works.  I'll probably have to do any
Clojure development on a VM there.
*** DONE fix meta key in Conkeror
    - State "DONE"       [2013-11-01 Fri 21:54]
    - State "STARTED"    [2013-11-01 Fri 21:49]
I've got a fully updated Conkeror setup in a Debian 7 VM.

Turns out the meta key isn't recognized by xulrunner 17.  Applied this fix:

#+BEGIN_SRC javascript
// Fix the missing modifier key in later versions of xulrunner.
modifiers.M = new modifier(
    function (event) { return event.metaKey; },
    function (event) { event.metaKey = true; });

Will add this to my FreeBSD setup when it's time to upgrade.
*** CANCELED Incanter
    - State "CANCELED"   [2013-11-01 Fri 21:55]
A Clojure-based R-clone.  http://incanter.org

Probably not better, but worth a quick look.

No longer need to use R.
*** DONE deprecate ESS
    - State "DONE"       [2013-11-01 Fri 22:01]
    - State "STARTED"    [2013-11-01 Fri 21:57]
No longer use R, so I might as well deprecate my ESS config in ~/.emacs.

It could be my imagination, but this seems to speed up startup a little.
*** CANCELED Drizzle
    - State "CANCELED"   [2013-11-01 Fri 22:02]
Just read about this.  Supposedly a rewritten MySQL with various lessons
learned implemented and optimized for web backends.

Don't care about this anymore.  PostgreSQL has won the lightweight database war
(for now).
*** DONE Memcached
    - State "DONE"       [2013-11-14 Thu 03:33]
    - State "STARTED"    [2013-11-14 Thu 03:27]
Just read about this a little.

Pretty simple and seems useful for the types of environments it was designed
*** CANCELED bpython
    - State "CANCELED"   [2013-11-14 Thu 13:01]
Too beta for me right now, but check back on this in 6-12 months from now
(now is 2012-05-22).

The completion here is nice, but I'm not sure the interpreter is the right
place for this functionality.  Furthermore, it's unlikely this would integrate
nicely into Emacs.


I guess I don't need an interpreter with these features.  I do want all of
these in my editor though.
*** DONE deprecate JDEE
    - State "DONE"       [2013-11-14 Thu 13:17]
    - State "STARTED"    [2013-11-14 Thu 13:07]
I'm giving up on trying to turn Emacs into a Java IDE.  Maybe one day someone
will come up with a more elegant solution to this.  Replacing this with the
built-in java-mode.

Backed up JDEE config to unused_init.el.  Deleted ~/.ant/lib/ecj-3.6.jar.
Added java-mode block.  emacs-eclim is probably the most promising option for
getting modern Java development features cleanly integrated and I'll still give
that a try.
*** DONE re-enable SLIME
    - State "DONE"       [2013-11-14 Thu 15:46]
    - State "STARTED"    [2013-11-14 Thu 15:04]
Now that nrepl.el is being used for Clojure, SLIME can be used for SBCL.

Current SLIME from CVS works fine at this time with the SBCL version in 9.2.
However, this didn't work with my old 8.0 setup, which I guess is okay for now,
since I'm redoing the workstation once 10.0 comes out.  Only had to change a
few lines of config.
*** DONE upgrade FreeBSD to 9.2
    - State "DONE"       [2013-11-14 Thu 16:30]
    - State "STARTED"    [2013-11-11 Mon 17:18]
Emacs 24.x and FreeBSD 9.2 are now released, meaning it's time to do an
upgrade.  I was going to do a source upgrade, but I got a spare SSD of similar
specs so I can revert back in the event of something serious being broken.
10.0 is coming out in a month or two though, so I may wait for that.

- Read the new install procedure in the handbook.
- Setup 9.2 on a VM and run through the process, updating my install document.
- Backup all stuff off cellblock.  rsync everything to muze if there's enough
  space.  Also scp the entire FS to my backup drive (just in case).
- Replace the SSD and do the install.
- Spend a lot of time on the new kernel build.  Check the Hardware
  Compatibility List for 9.2 (sometimes there's useful hints in here).

Changes since 8.0 are the most drastic I've seen in a long time.  The new
system administration utilities are all improvements with far less cognitive
overhead and allow me to delete a ton of scripts.  The main downside is that a
lot more disk is used (though this is mainly a result of more bloat in ports).
Overall, I'd trade the gig or two in space for the improvements, but the
trade-off should be unnecessary.

Only did the VM, since 10.0 is coming out very soon.
*** CANCELED NetSurf
    - State "CANCELED"   [2013-11-20 Wed 04:00]
A graphical CLI browser.

Doesn't support tabs, block ads, or allow keyboard only control.  It also has a
toolbar.  However, if I was on some really minimal hardware, this would be an
option (though I'd probably just stick with a text-only browser in that case).
*** CANCELED Classic Shell
    - State "CANCELED"   [2013-11-20 Wed 04:09]
Replace the n00bified win7 start menu with this on my gaming machine.

Not sure I'll bother though, since I don't really use Windows for anything
besides games.

Investigated this.  There's two things that this cleans up: the Start menu and
Windows Explorer.  I don't really use the Start menu much, and I've already
found a replacement file manager in Explorer^2 (which I mainly also launch
applications from).  So, there's really no use in installing this.

However, if I ever end up stuck with a Windows 8 box, this will be a must,
provided it works as advertised.
*** CANCELED Pythonect
    - State "CANCELED"   [2013-11-20 Wed 04:13]
A dataflow EDSL inside of Python.  Looks only marginally interesting, but it
could be fun to obfuscate code in it at work.


My original goal here is no longer valid.  However, this could be useful for
its integrated asynchronous operators, should the need ever arise.
*** CANCELED patch xf86-video-intel
    - State "CANCELED"   [2013-11-20 Wed 04:14]
This is suitably awesome that it might be worth the trouble to manually patch:

If I don't get around to it anytime soon, just check later on FreshPorts to see
if it was added.  As of this writing, a lot of code is still being committed,
so maybe I'll just want to grab the latest instead of patch.

Don't need this, since I'm just going to upgrade to 10.0 once it comes out.
*** CANCELED Marmalade
    - State "CANCELED"   [2013-11-20 Wed 21:31]
Check out this Emacs package repo and see if it's worth including for the
supported packages.  Will wait for Emacs 24 to make use of this so I don't have
to bother manually installing package.el.


Been using 24.x for awhile now and can get by fine without it.
*** CANCELED Rosegarden
    - State "CANCELED"   [2013-11-21 Thu 22:59]
A MIDI sequencer for Unix-variants.  It runs on FreeBSD, but the dependency
list is huge, so I'll keep it on a Linux VM.

I guess I don't need a MIDI sequencer.  If this changes, will reopen.
*** DONE autocutsel
    - State "DONE"       [2013-11-22 Fri 01:01]
    - State "STARTED"    [2013-11-22 Fri 00:44]
This doesn't come in handy too often, but this will merge cuts in GTK+ apps
with the X clipboard.

I forgot that I already had this ready to go in ~/.xinitrc.  Installed and
uncommented the initialization for it.  Updated setup document.
*** DONE VCS macroexpand.com main site
    - State "DONE"       [2013-11-28 Thu 00:26]
    - State "STARTED"    [2013-11-27 Wed 23:07]
Just doing the main site for now.  If this works out, I'll consider doing my
personal site too.  VCS-ing a site has multiple benefits:
- No need to backup or sync website content manually or by script.
- Ability to check out the site and edit it as normal user.
- Reduced need to edit anything as root.

However, I do have to keep in mind that everything behind the scenes will now
be world-viewable.  Make sure there's no personal info or passwords anywhere.

- Excluding cgi-bin for now.
- To switch a repo to ssh, edit .git/config and change the "origin" URL to
  something like ssh://git@github.com/user/project.git.  When creating a new
  repo, you can also run =git remote add origin
- Run my standard GitHub config steps as root before cloning.
- I also ran chmod o-rx on the .git/ directory.

I should have done this long ago.  I'll also do the same for my personal site,
but before doing so, I'll need to clean it up some.  Adding task for that.
*** DONE convert timestamps to ISO 8601
    - State "DONE"       [2013-12-24 Tue 11:11]
    - State "STARTED"    [2013-12-24 Tue 10:30]
My preferred timestamp is close enough that I might consider using a standard.
To do this, I'll need to go through all existing docs and regex them and change
at least three functions in ~/.emacs.

- The bcm-date function is fine, since it's already in the correct format (as
  it doesn't include time).
- Added a bcm-datetime function, returning UTC.
- Unfortunately, org-mode requires its current default format for date
  scanning.  It's changeable, but you lose various date features, so it's not
  worth the trade-off.  So, I'm leaving file header timestamps and org-mode
  ones alone.  See: http://orgmode.org/manual/Custom-time-format.html

As a result of the above, nothing has really changed, except that bcm-datetime
could be useful in macros populating datasets.
** Work-related topics
*** CANCELED learn R
    - State "CANCELED"   [2013-01-25 Fri 10:33]
    - State "STARTED"    [2010-06-16 Wed 23:21]
Trying to use R for the developing statistical learning models used at work.  R
may also be handy later for backend integration with various parts of
applications.  R is a flawed language though, so I'm targeting only a practical
level of usefulness.  I'm quite alright with sucking at R, and if I don't get
through all of this by retirement, that's fine with me.

Setup notes:
- Available on FreeBSD in math/R.  Change build options to include LETTER_PAPER
- Unfortunately, this pulls in a full stack of packages for an updated gcc
  version. :\
- Build lang/gcc45 dependency without Java frontend.
- Setup ESS (already added to .emacs and ~/.emacs.d/ess).
- In some Linuxes, the R package is often called r-base.

- Learn some basic R. (DONE)
- Setup ESS. (DONE)
- Read the online R manual: http://cran.r-project.org/doc/manuals/R-intro.html
- Choose a book to read on R.  Someone at work suggested the O'Reilly book, "R
  In a Nutshell", but I don't have a copy, so unless I buy one, reading
  "Introductory Statistics with R".
- Check out bnlearn and other Bayesian network R packages.
- Make an R script to collect all my add-on packages.
- Maybe read the rest of the R docs at: http://cran.r-project.org/manuals.html
- Check out igraph.
- Consider ggplot2 for graphs.

Installing this on my work VMs so as not to muck up my home machine.

Update: I'm going to try to get away without learning this.  From what I know
of R so far, it's a pretty ugly language, statistics bore me, packages too
often don't work and require much manual labor, and I'm pretty sure it doesn't
have a future with me post-work due to the bloated dependencies.
*** CANCELED Apache Giraph
    - State "CANCELED"   [2013-02-27 Wed 21:00]
    - State "STARTED"    [2013-01-25 Fri 10:30]
Distributed graph processing.  Looked at some code for this, and it's ugly.  I
suspect that it's a bloated, sub-optimal solution to solving graph problems,
but I'm not aware of any alternatives at the moment (apart from other libraries
very similar to this).  I've already read the Pregel paper for some context, so
just read whatever docs are available on the Giraph site.  Maybe make a sample

This works, but is extremely awkward and time-consuming.  It also is very rough
around the edges.

Gave up on this.  Modern Java development frustrates me too much.
*** DONE bulk synchronous parallel
    - State "DONE"       [2013-02-27 Wed 21:00]
    - State "STARTED"    [2013-01-25 Fri 10:30]
This is a concept around which things like Pregel, Apache Hama, and Apache
Giraph are centered.  This is apparently the pre-eminent distributed graph
processing algorithm.  I've been skeptical of it some due to the overhead
involved, but apparently it does scale well in the real world if you structure
your problems correctly.

I guess I pretty much get how this works now.
*** DONE betweenness centrality
    - State "DONE"       [2013-03-26 Tue 10:28]
    - State "STARTED"    [2013-03-26 Tue 10:09]
A graph theory concept used in the various graph analytics.

Centrality is the relative importance of a vertex within a graph.  There are
several other types of centrality besides betweeness.  Degree centrality is the
"default".  Betweeness centrality is the measure of the number of shortest
paths from all vertices to all others that pass between that vertex.
*** DONE statistical learning models
    - State "DONE"       [2013-05-02 Thu 13:58]
    - State "STARTED"    [2010-11-12 Fri 15:30]
Survey these and read at least a few books on the subject.

- Read chapter 20 of Artificial Intelligence: A Modern Approach.
- Read up on Bayesian networks.
- Read the PDF of slides titled Clustering with Gaussian Mixtures. Finished

Resigning the job means I don't need this.
*** DONE learn Clojure
    - State "DONE"       [2013-05-02 Thu 14:04]
    - State "STARTED"    [2012-05-17 Thu 15:42]
Apparently being already Lisp-literate makes this pretty easy.

The plan:
- Read A Brief Beginner's Guide To Clojure (online).
- Read Clojure - Functional Programming for the JVM (online).
- Do UPenn Clojure exercises (online).
- Read Clojure Programming.  This unfortunately lacks exercises (like all
  Clojure books I considered).
- Due to no exercises, do all of: https://www.4clojure.com/problems
- Write some kind of actual mini-project in the language.
- Read everything on the Clojure main site.
- Look at the Clojure Contrib projects:
- Keep this cheatsheet handy: http://clojure.org/cheatsheet
- Reference this site for examples/docs: http://clojuredocs.org/

- ring is probably the most popular webapps library:
- For a Clojure-specific pastebin, use: https://refheap.com/paste
- Some things seem more complex in Clojure vs. Lisp.  For example, this in CL:
  (let ((count 0)) (defun counter () (incf count)))
  is equivalent to this in Clojure:
  (let [count (ref 0)] (defn counter [] (dosync (alter count inc))))

Resigning the job means I don't necessarily need Clojure anymore.  However, I
may still complete this task on my own terms.  I like most things about
Clojure, but there are exceptions:
- Clojure stacktraces are the same mess that Java's are.
- Much stuff in Clojure is just a wrapper around Java code.  In most Lisps, you
  can just navigate into the underlying Lisp code all the way to primitives.
- Java interop is ugly and un-Lispy.
- It's often painfully slow.
- Some of the Clojure ecology of libraries resemble Java ones in that they have
  way too many dependencies.
*** DONE learn Scala
    - State "DONE"       [2013-05-02 Thu 14:04]
    - State "STARTED"    [2012-11-10 Sat 13:07]
This will probably be a little harder than learning Clojure, but I'm countering
that by not going as deep on it (due to lack of interest and it not being as
nice of a language).  Though this is work-driven, there is some residual
benefit here, as ML-variant literacy is on my list of things to have.

The plan:
- Redo Scala Emacs setup.
- Read Programming Scala (2nd ed.).
- Read the sbt manual.
- Read the ENSIME manual.
- Write some projects in Scala.  I'd like to at least do one test project using
  Scalding, preferably one of the ones I've already done in Cascalog to compare
  performance and ease of use.
- Decide how much, if at all, I want to stick with the language/ecology.

Resigned job.
    - State "CANCELED"   [2013-05-02 Thu 14:05]
I'll use other languages for these purposes going forward.
    - State "CANCELED"   [2013-05-02 Thu 14:05]
Read up on this some.  Maybe SciPy too.

Might still look into this more on my own.
*** CANCELED latent class analysis
    - State "CANCELED"   [2013-05-02 Thu 14:05]
And principle components analysis (or, some more general topic including
*** CANCELED RapidMiner (revisited)
    - State "CANCELED"   [2013-05-02 Thu 14:05]
*** CANCELED Scalding
    - State "CANCELED"   [2013-05-02 Thu 14:05]
A Cascalog-like library in Scala.
*** CANCELED Cascading
    - State "CANCELED"   [2013-05-02 Thu 14:05]
Might be able to skip this if Cascalog works out.  I may still want to just
read about it a little even in that case though.  If Cascalog isn't usable,
I'll have to research this properly.
*** CANCELED Mahout (revisited)
    - State "CANCELED"   [2013-05-02 Thu 14:05]
Canceled this too soon.  However, I might as well start over since I only did a
brief intro to it before.

The plan:
- Redo an updated setup for this.
- Read up on each algorithm implemented.
- Read the book Mahout in Action.
    - State "CANCELED"   [2013-05-02 Thu 14:05]
*** CANCELED Kronecker graphs
    - State "CANCELED"   [2013-05-02 Thu 14:05]
Considered for use in a model at work.  http://arxiv.org/abs/0812.4905

Kronecker graphs are the result of a specific operation on matrices (or matrix
representations of graphs).  They're useful for several things, but one
potential relevant use may be for synthetic data generation.
*** DONE CS183: Startup Stanford, Spring 2012
    - State "DONE"       [2013-06-27 Thu 18:53]
    - State "STARTED"    [2013-06-07 Fri 02:34]
Some guy's class notes from Peter Thiel's startup course.

There's actually a lot of good info in here.  This has caused me to rethink
some aspects of my potential involvement in startups and grounded some
expectations in reality.
** Games to play
*** DONE Xenocide
    - State "DONE"       [2013-01-01 Tue 01:31]
    - State "STARTED"    [2012-12-31 Mon 20:48]
Install Windows version with full sounds (46MB).  http://xeno.chaosforge.org/

This looks promising, but isn't finished and seems abandoned.  It's definitely
not complex enough for actually playing much yet.
*** DONE MAME romset
    - State "DONE"       [2013-01-04 Fri 23:15]
    - State "STARTED"    [2013-01-03 Thu 21:38]
Audit the entire collection of MAME ROMs.  This is mostly just to clear up some
disk space, for which this collection is the worst offender.  First, I'll
delete all non-working, sports, card game, foreign language, porn,
cassette-based, light gun, and obviously crappy ROMs.  Then, I'll manually go
through the remaining and start each one up and delete anything I don't want to
look at later.  The goal is to get it under 1GB at most.

Most arcade games are button-mashing spaz-fests, so I was able to get rid of
the vast majority of them, leaving 92 ROMs of total size 900MB.

I may do the same later with other romsets, all of which I've already created
first pass subsets of.  If I could get my complete ROM collection down to a few
GB, that would go a long way towards my data size goals.
*** DONE console romsets
    - State "DONE"       [2013-01-05 Sat 00:58]
    - State "STARTED"    [2013-01-04 Fri 23:17]
Audit the entire ROMs collection.  I already did a preliminary first pass and
deleted the majority of the romsets altogether.

Got the entire collection down to 2.34GB and I feel a lot better not curating a
ROM museum.
*** DONE Avadon: The Black Fortress
    - State "DONE"       [2013-01-07 Mon 03:25]
    - State "STARTED"    [2012-11-24 Sat 22:29]
Supposedly the most refined Spiderweb Software game to date.  Was on sale for a
few dollars on Steam so it seemed like a good opportunity to finally experience
one and see if their fanbase's loyalty is justified.

This game is just okay.  It has some good points and acceptable graphics, but a
lot of downsides:
- Classes and character development are too simplified.
- Skill trees are very small and restrictive.
- Not enough item choices.  In fact, you really don't have any gear choices to
  make since the best one is always obvious and each class really only has
  predefined play-styles.
- Practically non-existent RP value outside of the occasional minor dialog
- Boring, uninspired story and game world that borrows so heavily from various
  tropes that it's completely generic.
- Combat is repetitive and too simple.  Most encounters are just trash mobs
  that charge at you until dying.
- Environment is too non-interactive.

The annotated maps are rather useful when playing so as not to lose track of
quest givers: http://avadonannotatedmaps.zxq.net/index.html

I guess it's not a bad deal for $3, but there are more interesting games that
are completely free.  Playing this just feels like a waste of entertainment
time.  Ended up quitting this after getting to the second main area.  I may one
day come back and finish it but will definitely skip future installments.
*** DONE Castle of the Winds
    - State "DONE"       [2013-01-09 Wed 17:53]
    - State "STARTED"    [2013-01-08 Tue 20:58]
I like games that are built within the native OS toolkit.  Will need to run
this in an XP VM.

Full version available here: http://lkbm.ecritters.biz/cotw/download.html

Completely unbalanced and poorly designed.  Only has some of the absolute
basics of a roguelike and most of those aren't done well.
    - State "DONE"       [2013-01-14 Mon 19:40]
    - State "STARTED"    [2013-01-14 Mon 13:39]
The stolen and reworked codebase for what was to be Lineage 3.  Will just fr00b
it up for a few evenings, then call it done.  I definitely don't actually want
to grind in a modern MMO, but if you pretend the extent of the game is just the
early levels, they're okay provided you possess the discipline to quit when the
time comes.

Played an antlerface mystic for awhile, but only managed to stomach it for a
few hours.  This game has a lot of problems, but the main issue (for me) is the
manual aiming and dodging, which requires way more cognitive overhead than it
should.  Compared to more passively-played MMOs, you do a lot more work for
very little extra game experience.  Apart from that, it's mostly just yet
another boring modern WoW/EQ-clone with standard Asian MMORPG tropes.
*** DONE Space Rangers 2
    - State "DONE"       [2013-01-18 Fri 21:13]
    - State "STARTED"    [2013-01-13 Sun 20:50]
Played this a little back in 2005, but will start over and make a proper
attempt at beating it.  Space Rangers: Reboot only costs a few dollars and
includes the expansion pack, but I'll just play the normal game for now.

After installing, edit cfg.txt and change the RobotResolution to 1920,1200.
This only affects the RTS mini-games and also causes crashing if changing
options in game.

This is an okay game, but has some problems:
- The graphics aren't terrible but the color palette makes my eyeballs bleed.
  The user interface would probably look less appalling if it were higher
  resolution and didn't have randomly arranged buttons.
- Installs Starforce.  I installed the game normally, overwrote the binary with
  a no-CD one, then ran the Starforce removal utility.  However, it says the
  driver isn't installed.  So, it's either hiding somewhere, Starforce doesn't
  support 2k8r2, or the utility doesn't support removal on 2k8r2.
- The arcade-like wormhole mini-game isn't any fun (for me).  If I wanted to
  play an action game, I'd not be playing a mostly TBS game.  I usually just
  save scum them, letting the autopilot do the work.
- Has mostly uninspired writing and game lore.  Poor translation is everywhere.
- I'd prefer space flight was a bit more realistic.  Planets are too close
  together, asteroids zoom around like in an arcade game, and planets orbit
  their suns in a few weeks.  Obviously this isn't a sim, but some relation to
  reality would've made it more fun for me.
- NPCs can target and begin firing mid-turn, but the player can't.
- You have to keep up with an item/ship treadmill.  This actually isn't too
  hard, but I'd prefer at least a slightly more static universe given how much
  of a pain it is to collect/mod proper gear.
- The economy is completely imbalanced.  Trading becomes pointless once you get
  some okay gear.
- Repair costs are insane.  You can carefully mod certain n00b gear you pick up
  early to help this, but you have to get lucky on micromodules.
- There's no grand strategy against the antagonists.  You just take back and
  defend systems and others randomly fall.  Eventually, the balance shifts in
  your favor.  It takes forever, which would be fine, except that the space
  combat here gets very repetitive.  A more interesting setup would be having
  tough enemy core systems surrounded by less defended ones, and these empires
  expand/contract based upon player and NPC ranger/military actions.
- I'd rather have a better core game experience (trading and space
  flight/combat) than all these mini-games which are just crappier versions of
  genres done better elsewhere.

After getting familiar with the game's quirks, I played for several nights and
got to the #2 ranking, but then lost the desire to keep going.  The most
frustrating part of this game is that it could be quite awesome if it just
didn't have a few fundamental flaws.  I'm sure I can win with my current run,
but there's less depressing gaming experiences to be had.  I'll back up my
saves, but it's highly unlikely I'll ever revisit this.
*** DONE Endless Space
    - State "DONE"       [2013-01-20 Sun 16:52]
    - State "STARTED"    [2013-01-20 Sun 00:18]
Yet another 4x game that looks really polished and seems devoid of at least
some of the problems that many more half-assed attempts have.  Was on sale for
$15 on Steam.

- Has some graphical glitches and BSODs my computer occasionally.
- No space stations or a lot of the other features that are common in 4x
  games.  Definitely needs more stuff to do.
- The balance seems a bit off on system improvements vs. income in early game.
  The expansion disapproval is a bit rough as well then becomes a non-issue
  later on.
- Battles are just a non-interactive card game, but one with completely random
  results.  There's no reason to load these up once you've seen a few.
- Tech trees need more thought.  They're supposed to be divided by play style,
  but in reality they're somewhat mixed up.  Even worse, there's no way to tell
  (at least in game) what the tech unlocks do.
- Has the same useless diplomacy most 4x games have.
- The computer opponents cheat.
- At harder difficulties, you can easily get gimped from the start and have no
  real chance of winning.
- The UI is really nice except there are almost no keyboard shortcuts.
- Battles are too small and non-epic.  Fleets have a maximum command point
  size, which ensures battles will never have dozens of ships.

This is just an average 4x game, though it does have some really nice graphics
and universe creation options.  This is fine for a few days of fun, but won't
be replacing Stars! as my main 4x game.  I'll keep it installed for a few
months for an occasional game though.
*** DONE Defense Grid: Community Levels
    - State "DONE"       [2013-01-27 Sun 00:49]
    - State "STARTED"    [2013-01-26 Sat 21:40]
These are free, so no reason not to try them.

Okay levels, but a bit too easy.
*** DONE Scarlet Blade (alpha)
    - State "DONE"       [2013-01-27 Sun 19:00]
    - State "STARTED"    [2013-01-25 Fri 01:33]
Pure prolefeed, but so preposterous, I can't not at least play it for a couple
of hours.  I think it's going to be a F2P MMORPG.  Its gimmick is that it's
total, unadulterated fanservice.  Apart from that, it's completely generic.

Amusing for a couple hours, then just turns into a standard grind.  Like most
Asian MMORPGs, this lacks a lot of polish and has a sloppy feel to it.  After
this, I think I'm filled up on crappy games for this year.
*** DONE Defense Grid: Containment
    - State "DONE"       [2013-02-03 Sun 18:15]
    - State "STARTED"    [2013-02-02 Sat 22:26]
Yet another expansion.

These are mostly well-designed maps, obviously designed with challenge games in
mind.  The new storyline is okay, but nothing special.
*** DONE AI War: Fleet Command
    - State "DONE"       [2013-02-19 Tue 00:33]
    - State "STARTED"    [2013-02-06 Wed 22:31]
A huge space strategy game that includes a lot of unique features.  Grabbed the
AI War: Alien Bundle on Steam, which includes the game and the first 3
expansions.  AI War: Ancient Shadows is still $4.99 (which is more than I paid
for the bundle), so I'll wait until I see how much I like the game first.

Some minor complaints:
- This being 2D kills the immersion some, since it's in space.  Being in 3D
  wouldn't work here, but gameplay could have been on planet surfaces.
- Animation gets choppy at higher time deceleration.
- At high resolution, it's hard to distinguish icons.
- Claims to have a lot of tower defense features, but doesn't really.
- The ship caps are workable, but I'd prefer if the bottleneck was more on the
  resource side than artificial unit count limits.

This is closer to a stock RTS experience than the game descriptions would lead
you to believe.  However, it's the best RTS I've played, and the only one I'd
consider playing long term.  It's a real timesink though, so I'll probably play
more when I have more free time.
*** CANCELED Naval War: Arctic Circle
    - State "CANCELED"   [2013-03-05 Tue 10:52]
Was going to wait until this was $5 or so on Steam, but there seems to be a
developer/publisher scandal here with the typical results of unfixed,
game-killing bugs.  Will pass on it and look for a copy of Fleet Command
*** CANCELED Space Empires V
    - State "CANCELED"   [2013-03-22 Fri 10:46]
A possible candidate for a decent super-complex 4x game.

This game has some serious technical/performance issues.  To get playable FPS
on it, do this:
- Patch to 1.79.
- Edit data/HUDSettings.txt and define the windowed resolution to 1366x1024.
- Edit data/Settings.txt and set "Support Multithreading" to "TRUE".
- Set Video Mode to "1280x900x16".  Try windowed mode too and see if it gives
  30FPS (it probably won't).
- Set 3D Device to "Direct3D HAL".
- Set Video Memory Usage to "Safe".
- Turn off ClearType text in Windows.  There's a utility for this that can be
  found by typing in "clear" into the Windows search box.

I finished the tutorial and played this a little.  However, I'm going to cancel
this due to the many technical issues with getting this to run properly.  I can
get this to be barely playable, but everyone online says that even if you
manage this, the game will slow to a crawl once you have a lot of active units.
Given this, I can't justify wasting a week to learn everything to play this.  A
real shame, since this looks fairly close to what I'd want in a modern 4x game.

I think I pretty much know what I want my ultimate 4x experience to have.  It
- Solar systems with multiple planets.  Planet types should be realistically
  distributed according to distance from the star (e.g., no ice planets in
  close orbit).
- Space stations, preferably with the ability to place them anywhere in a
  system, not just in orbit of planets.
- Space and ground combat, with orbiting forces supporting ground forces.
- Moons with the ability to colonize them.
- Some simulation of the vastness of space.  Traveling vast distances should be
  an appropriately lengthy endeavor.  Planets shouldn't be so close together.
- Some appropriate system for upgrading obsolete components.
- Research that can't realistically be maxed out in any one game, even if it
  goes on for 1000s of turns.
- Weird races.  Since they don't have to be rendered, there's no excuse for
  making them all sentient versions of Earth animals.
- Nearly everything in the game should be able to be turned over to the AI.
- Non-interactive combat is fine, but battles should be potentially massive in
- Faction personalities shouldn't be so 2 dimensional.  Diplomacy in all 4x
  games I've played so far sucks and I'd almost rather it not be there.
*** DONE Starcross
    - State "DONE"       [2013-03-28 Thu 09:34]
    - State "STARTED"    [2013-03-27 Wed 15:27]
A BDO IF game from 1982.  Supposedly good and rather difficult.

Has a very primitive parser and not a lot of ancillary text.  Most mentioned
objects aren't recognized.  The puzzles here aren't that good either.  Didn't
bother finishing it.
*** CANCELED UnAngband
    - State "CANCELED"   [2013-03-28 Thu 10:09]
Seems like a promising kitchen sink Angband-variant.

A bit tired of Angband, so skipping this one.
*** DONE Shrapnel
    - State "DONE"       [2013-03-29 Fri 14:08]
    - State "STARTED"    [2013-03-29 Fri 13:48]
Another concept IF game.

Concept fail.
*** DONE Sid Meier's Civilization IV
    - State "DONE"       [2013-03-30 Sat 10:50]
    - State "STARTED"    [2013-03-28 Thu 22:04]
Got a free copy with both expansion packs from work, so might as well try it.

This is probably better than Civilization II, but has almost all the same
problems it does.  Almost every aspect of the game has design decisions that
annoy me.  It can still be entertaining if you were in the market for some
casual gameplay, I guess, but it's not for me.  I have a vision of what an
awesome engine for this type of game would look like, but I don't think
something like that exists.  I'll still give Alpha Centauri a try, but after
that I'm sticking with space 4x games.
*** DONE Blue Chairs
    - State "DONE"       [2013-04-03 Wed 10:33]
    - State "STARTED"    [2013-03-29 Fri 14:23]
A surrealist IF game.

This is just okay and doesn't really quite work.  Has several noun oversights,
an annoying maze, and some hunt the verb.
*** CANCELED Magic Candle
    - State "CANCELED"   [2013-05-06 Mon 01:09]
Has some unique RPG concepts.  Check out Magic Candle II and III if I like this

- Grab a copy of Magic Candle (it's free now) and extract it somewhere.
- Make a .conf file for DOSBox that mounts the folder and launches the game.
- Create a launcher for it.  Left this in the game directory.

Watched a bit of an LP of this and I don't think I want to play it.
*** CANCELED Drox Operative
    - State "CANCELED"   [2013-05-09 Thu 01:06]
Looks like a better Space Rangers 2.  Watch an LP on it first.

Looks semi-promising, but I've concluded that I'm not into this close-in 2D
style of space game with arcade-like combat.

While I think space games are one place that 3D makes sense, I do have a vision
for what I think would be an awesome 2D space sim though (mostly sensor-based).
*** DONE Icewind Dale
    - State "DONE"       [2013-05-14 Tue 01:37]
    - State "STARTED"    [2013-05-06 Mon 10:48]
Restarting my 4 character run from 2010.  Considered powergaming a 4 character
party of multi-classed half-elves and getting them to HoF mode, but that
requires multiple full game runs to get them leveled and geared.

Had semi-fun, but probably won't play this ever again as I have the whole game
memorized now.  I would gladly pay money for a new campaign using the same
engine, but this style of game is gone forever.
*** DONE Icewind Dale II
    - State "DONE"       [2013-05-21 Tue 03:27]
    - State "STARTED"    [2013-05-14 Tue 21:27]
Trying this with a full semi-RP party.  Hopefully this isn't too much
micromanagement.  If this is too easy, replace the fighter with something
gimped, like a dual-wielding deep gnome ranger.

These steps get a completely working version on Win7:
- Install the 2.01 patch and put the bonus merchants pack in the Override
- Be sure to set "3D Acceleration=1" in icewind.ini.
- There's a bug in the Fell Wood area that requires reverting to 800x600
  resolution while there.
- To fix the DirectDraw issues, install the Microsoft Application Compatibility
  Toolkit.  Run this and select "New Database" then click the "Fix" button.
  Point this at the IWD2.exe file.  Skip Compatibility Modes screen.  On
  Compatibility Fixes screen, check ForceDirectDrawEmulation.  Save this as
  something, then right click the DB and select Install.

Created this party:
- Erica Barone: Aasimar, Cleric (Sheild of Lathander), Lawful Good
  - STR: 14 DEX: 10 CON: 12 INT: 8 WIS: 18 CHA: 18
  - Weapons: blunt weapons + shield, sling
  - Notes: Will tank less later game (switching positions with Mayo when
    adventuring) and spend more time combat casting.
- Fairbairn Sykes: Human, Paladin of Helm(2)/Fighter, Lawful Good
  - STR: 18 DEX: 13 CON: 18 INT: 6 WIS: 10 CHA: 5
  - Weapons: long sword (Holy Avenger) + shield
  - Notes: Front-line tank.  Provides Aura of Courage.
- Mayo Dialtone: Drow, Monk, Lawful Evil
  - Stats: STR: 16 DEX: 20 CON: 16 INT: 5 WIS: 18 CHA: 5
  - Weapons: Fists
  - Notes: Melee damage dealer and high AC/medium HP tank.
- Angelica Garcia: Moon Elf, Rogue, True Neutral
  - STR: 12 DEX: 20 CON: 16 INT: 16 WIS: 8 CHA: 4
  - Weapons: long bow, short sword
  - Notes: Ranged support, backstabs/hamstrings in tough fights.
- Rabsjavert Lalapine: Human, Wizard, True Neutral
  - STR: 12 DEX: 16 CON: 14 INT: 18 WIS: 10 CHA: 6
  - Weapons: quarterstaff
  - Notes: Casting only, no melee.
- Spam Gadgee: Lightfoot Halfling, Bard, Chaotic Good
  - STR: 8 DEX: 20 CON: 10 INT: 14 WIS: 6 CHA: 18
  - Weapons: short/long sword + shield, light crossbow
  - Notes: Mainly uses bard song, but also secondary buffer, backup combat
    spellcaster (with Armoured Arcana), and ranged support.

A good game, but I do have a couple complaints:
- A shame this is 3.0E instead of 2.0 or 2.5.  I'd even prefer 3.5 over this.
- I prefer the IWD1 UI over this one.
- Monk unarmed attacks need a better animation.
- Needs more skills ported over.  I should never have a character where I just
  don't care about skill points.
- Too many ambushes involving enemies appearing out of nowhere.
- Like IWD1, this game pegs a core while running.
*** DONE X3:Reunion
    - State "DONE"       [2013-06-14 Fri 04:44]
    - State "STARTED"    [2013-05-22 Wed 00:45]
The best of the Elite-clones.

- Install 2.5 patch, X3 bonus package, and the official cockpit mod.  Then add
  the Cockpit Callback 1.4 mod directory additions.  Rename the numbered files
  to the highest present in the main install directory + 1.
- Super useful complex calculator here: http://www.altanetworks.com/x3occ.html
- To fix the weird audio feedback issue, convert all mp3 files in soundtrack/
  from mp3 to wma.  In TC+AP, this will require playing in offline mode.

Made a massive empire.  Then I decided to do the main plot, which trashed many
of my assets in Paranid space.  Instead of rebuilding all of that, I'll just
move on to the next one.  However, I'll keep my saves around in case I get
nostalgic for X3:R.
*** DONE Everquest 1
    - State "DONE"       [2013-06-17 Mon 23:33]
    - State "STARTED"    [2013-06-16 Sun 00:52]
Now that this is F2P, I'll finally get to experience this (very briefly) for

While this is better than most modern MMOs, if I wanted to play an old,
mainstream 3D MMO, I'd probably go with AO.  This was still not a fun
*** CANCELED Battlecruiser Millenium Gold
    - State "CANCELED"   [2013-06-23 Sun 15:43]
Available for free, so worth a look.  I've always been fond of the concept
behind this game series (until they turned into action games, that is), but was
put off by the lacking design.  Now I'm considerably more forgiving about that
kind of stuff and much more into original concepts and complexity.  However,
I'm still not sure it's worth learning everything to play this, since it's very
prone to crashing.

Tried this and experienced constant crashes.  Will switch to Universal Combat
and try that instead.
*** DONE Morrowind (restart)
    - State "DONE"       [2013-07-09 Tue 04:00]
    - State "STARTED"    [2013-06-25 Tue 00:13]
I never actually finished Morrowind, or even played much into the main quest.
I've been meaning to get back into the game at some point.  Only using the
Tribunal expansion (since werewolves don't really belong in this game, or
really any game).  Skipping some of the mods I used last time.

Setup notes:
- Install Tribunal patch.
- Use the instructions and launcher linked here for widescreen support and to
  increase draw distance: http://www.wsgf.org/dr/elder-scrolls-iii-morrowind
- Use the =ra= command to reset NPCs when they start blocking doorways.

Playing a custom class that's almost exclusively magic-focused.  Unfortunately,
the game really isn't setup for hardcore perma-death play.

Collected a massive house full of stuff and finally beat the main quest and
expansion.  I'll save my saved game, but it's unlikely I'll ever come back to
it since the only things left to do are a few very minor quests with rewards
that are inconsequential to my uber character.

Morrowind is on my list of best RPGs of all time, but I'll have to admit I
didn't quite enjoy the experience as much as before.  That's mainly due to:
- The leveling system is a bit broken.
- A magic-based build is severely gimped due to limited means of regenerating
  MP.  Even with a Breton and Mage starsign, the maximum MP you can have is
  still quite low.  There are some ways around this, but by that time, you'll
  start encountering high resist/reflect enemies.
- Builds in general don't have as much variety as the large number of skills
  would suggest.  Everyone needs some kind of physical attack and the same
  basic support magic.
- The game is riddled with bugs.
- Replayability is very low.  Most of what I did here was almost exactly the
  same as my last run.  In retrospect, I probably should have just restored my
  old save.
*** DONE Endgame: Singularity
    - State "DONE"       [2013-07-09 Tue 04:02]
    - State "STARTED"    [2013-07-01 Mon 18:30]
A freeware game about the AI apotheosis, written with PyGame.  The source may
be worth looking at too.  http://www.emhsoft.com/singularity/

Okay concept for a story, but crappy concept for gameplay.
*** CANCELED Iter Vehemens ad Necem
    - State "CANCELED"   [2013-07-11 Thu 01:21]
This looks like it might be a little rough, but supposedly has a bunch of
original concepts, so maybe it's worth a quick look.

Not a bad idea, but not complex enough for a roguelike.
*** CANCELED Global Conflict Blue 1.25.001
    - State "CANCELED"   [2013-07-15 Mon 03:02]
A beta is available.

Tried this but it's not ready yet.  Looks promising though, so will have to
check back later.
*** CANCELED Ad Astra
    - State "CANCELED"   [2013-07-24 Wed 20:59]
A space exploration game with procedurally generated content.  Though it has
trading and mining, it's primarily combat focused, so it's unlikely I'll play
this much.  http://www.a-astra.com/index.htm

Tried this out a bit, but it's missing some of the core features I'd want in an
Elite-clone.  A shame too, since the massive universe is really great.  It just
needs to be populated with more interesting things to do besides blasting
*** CANCELED Scalatron
    - State "CANCELED"   [2013-07-24 Wed 21:01]
A game where you program bots in Scala.  While I like the concept, I'll
probably skip this due to it being in Scala and the bots not really capable of
doing much interesting besides shooting and moving.

Skipping mainly due to not wanting to learn Scala.  If only it was in Clojure.
*** DONE Jane's Fleet Command
    - State "DONE"       [2013-08-02 Fri 11:27]
    - State "STARTED"    [2013-07-15 Mon 16:59]
Available in a $5 bundle with two other games on Steam.  Consider using the NWP
(Naval Warfare Project) mod for it.  Runs on Win7 64-bit, but has some
graphical glitches.

- To get higher graphics settings working with usable framerates, disable the
  radar display with C-v.
- The game has a bad habit of crashing occasionally, so save often.

Naval wargame fans always cite this as the ultimate operational sim.  I agree
that it probably is, since there really aren't many competitors (only Naval
Warfare: Arctic Circle, Global Conflict Blue, and the Harpoon games come to
mind).  While there are a lot of really nice touches here, the actual game
experience leaves a bit to be desired for me.  I'm not sure what's missing, but
I don't feel like a grand strategist playing this.  Maybe it's just at the
wrong level of abstraction for that kind of thing though.  One could possibly
enjoy this purely from a sim perspective, but for me it lacks the complexity
necessary for that and the interaction is too far removed from reality.  I'm
now thinking the optimal strategic naval sim would be platform-specific, but
with your platform participating in fleet actions, carrying out orders, or
engaging solo in limited actions.  Dangerous Waters is close to this, but is
missing the first part.
*** DONE FO:NV Honest Hearts
    - State "DONE"       [2013-08-13 Tue 03:33]
    - State "STARTED"    [2012-08-12 Sun 20:49]
The second of the FO:NV DLCs.  The price was halved for these on Steam, so
I'll pick this one up.

In most ways, this is better than Dead Money, but I think I'd still rather be
playing ARMA 2.  I'm not sure if I'm just bored of Bethesda Fallout or if ARMA
has ruined my ability to enjoy more n00b-like FPS experiences.  With this
realization, I'll now be skipping the rest of the FO:NV expansions, which is
partly a shame, since supposedly the best DLC is Old World Blues.

As for the actual content, like the first expansion, it's not as polished as
stock FO:NV stuff.  The plot itself is pretty boring and has limited choices.
The new area is okay, but uninspired.  Overall, mostly a semi-yawn.
*** DONE Supreme Commander 1
    - State "DONE"       [2013-09-03 Tue 14:00]
    - State "STARTED"    [2012-03-24 Sat 20:28]
SC1 supposedly has various unique features that other RTSes don't provide.  I'm
not particularly crazy about RTSes in general, but since I got this for free, I
might as well try it out.  Also have the Forged Alliance expansion.

Beat the UEF campaign, but I'm skipping the expansion and other campaigns.
This is better than most other AAA RTS games for sure, but it's still not quite
for me.
*** DONE Neverwinter Nights 2 + MotB
    - State "DONE"       [2013-10-12 Sat 04:19]
    - State "STARTED"    [2013-09-10 Tue 14:21]
I've beaten the original game, but I'll redo it and then try the expansion.
Will probably do a challenge game of some kind.

Note: In 64-bit Windows, NWN2 has serious graphical issues.  These can be fixed
by using this: http://nwvault.ign.com/View.php?view=nwn2other.Detail&id=231
Install the files to the game directory and only launch the game from

NWN2 is probably the best of the 3.5 games, despite it's many frustrating bugs.
The OC is only okay, content-wise, but MotB is significantly better (minus the
ending).  I'd like to play Storm of Zehir (since it allows you to create your
entire party from scratch), but it doesn't appear to be available by itself
*** DONE Neverwinter Nights Diamond
    - State "DONE"       [2013-10-24 Thu 21:49]
    - State "STARTED"    [2012-04-08 Sun 09:47]
Played through the original long ago, but since the full game + expansions can
be had for cheap on GOG.com, I'll play all of them again.

I may also check out the Player Resource Consortium mod (so I can play as an
oozemaster): http://www.nwnprc.com/

- NWN: The single player main campaign mission is as boring as I semi-remember.
  Power-gamed a solo human monk (instead of my typical mage or bard).  This run
  was solo in the sense that it was without henchmen or other pets/summons.
  Monks are definitely less interesting to play, especially alone.  I can see
  them being pretty awesome by this ruleset in a party, but I'll go back to
  being a mage with a party in the expansions.
- NWN:SoU: Too focused on annoying puzzles to be any good.
- NWN:HotU: Not perfect, but the best of the expansions.
- NWN:SG: Kinda crap.  Was never finished.
- NWN:WW: Seems like it might be okay, but I can't tell since it was never
- NWN:KM: Not bad.
*** CANCELED SpaceChem
    - State "CANCELED"   [2013-10-28 Mon 20:39]
A design-based puzzle game.  Looks like it's probably one that involves some

On closer examination, this doesn't look complex enough to be worth it.  I'll
just stick to real programming.
*** CANCELED Siege of Avalon
    - State "CANCELED"   [2013-11-01 Fri 13:48]
Try chapter 1 of this (free download).  If I like playing this, order the full
6 chapters.  Check here first though, since it might now be freeware:

Though it looks like fun, I might skip this game due to it being rather buggy
and unfinished.  Some guy was still working on unofficial patches until 2011
though: http://blackflystudios.com/SiegeDev.html

Tried this but it wouldn't run for reasons unknown.
*** CANCELED Wing Commander
    - State "CANCELED"   [2013-11-01 Fri 13:51]
Maybe try the SNES port of this first.  Tried it on a keyboard, but it's not
playable that way.

Watched an LP of some of this.  Not sure why I thought playing this would be a
good idea.  It looks like a crap game.
*** DONE Spice Trade
    - State "DONE"       [2013-11-01 Fri 15:34]
    - State "STARTED"    [2013-11-01 Fri 15:14]
A freeware trading game that runs on Linux.  http://www.spicetrade.org/

This game is kind of a mess and definitely isn't interesting to play.
*** DONE Make It Good
    - State "DONE"       [2013-11-01 Fri 18:44]
    - State "STARTED"    [2013-11-01 Fri 16:16]
Supposedly one of the better mystery IF games ever.

Not as good as normally claimed and has too many hidden actions that no normal
person would ever find.  It's also a time-sensitive IF game, which is extra
*** DONE DaiZy
    - State "DONE"       [2013-11-02 Sat 05:32]
    - State "STARTED"    [2013-11-02 Sat 01:14]
Had DayZ SP working long ago, but wanted to try it out again with the new
stuff.  Supposedly this is possible and just requires a bit of file management.


Works great, but requires symlinking (mklink /j) the Addons folder from the non
OA ARMA 2 folder.  The SupportCall addon used in the conjunction with this
fixes some of the missing features (namely, editing the game time).  Despite
missing several important features from MP DayZ, this reasonably accurately
recreates the experience and is less annoying than playing online.  It still
gets old pretty quick though.
*** CANCELED Starpoint Gemini
    - State "CANCELED"   [2013-11-02 Sat 18:18]
Supposedly a good space sandbox game.  Do a little more research before getting
it though.

Looked into this some and I'll pass on inviting all those bugs into my life.
*** DONE Cossacks II: Battle for Europe
    - State "DONE"       [2013-11-04 Mon 11:12]
    - State "STARTED"    [2013-11-02 Sat 20:44]
An RTS, notable for the number of units on screen.  Probably is a cross between
the Total War series and standard AoE-clones.

Eh, not as good as I thought it'd be.  Far closer to the other AoE-clones than
I'd hoped.  Might come back to this, but probably not.  I wish I had my $5
*** CANCELED Command: Modern Air/Naval Operations
    - State "CANCELED"   [2013-11-04 Mon 12:10]
Looks decent and well researched, but I'm not sure I like this style of command
sim anymore.  Also is way too expensive.

Watched some LPs on this and will skip it for now.  Doesn't offer enough over
Fleet Command to be worth $80.
*** CANCELED StarDrive
    - State "CANCELED"   [2013-11-07 Thu 12:54]
Looks like a contender for a good modern 4x game.  Currently out, but has some
bugs and costs $30.  Will wait awhile for bug fixes and a price drop.

Looks like the developer abandoned this game with promised core features still
unimplemented and critical bugs unfixed.  Since he doesn't care, I don't
*** CANCELED Thousand Parsec (single player)
    - State "CANCELED"   [2013-11-07 Thu 13:07]
Originally a project to create Stars! clone, this looks promising in that it
may capture some of the original's excellence.  This is still in active
development, so I'm not in any hurry to get started on it.

Setup a TP server, one or more AI clients, and the normal client on some
GNU/Linux box or VM.  See: http://www.thousandparsec.net/tp/downloads.php

Looked into this some and spotted some deal-breakers, notably timed turns and
the lengthy turn completion.  This isn't terrible, and I'll consider this later
if I need some 4x action on Linux, but there are better games in this genre
*** CANCELED Steel Panthers World War 2
    - State "CANCELED"   [2013-11-07 Thu 21:16]
A freeware tank sim.  Seems unremarkable except for the free part.

Better options are available for very little.
*** CANCELED Sword of the Stars 1
    - State "CANCELED"   [2013-11-08 Fri 08:00]
+ 3 expansions.  Supposedly the sequel totally sucks.

Previewed a little.  This looks well made, but is more of a casual 4x game, so
I'll pass on it for now.  I need a lot more complexity than this to be
entertained.  I'm also not a big fan of this UI.
*** DONE Douchebag Beach Club
    - State "DONE"       [2013-11-09 Sat 01:49]
    - State "STARTED"    [2013-11-08 Fri 17:59]
A Flash game, but looks pretty good.

Also played the other Douchebag games.  These are okay, but have a few bugs and
are dragged out for no good reason.
*** DONE PlaneShift
    - State "DONE"       [2013-11-09 Sat 13:42]
    - State "STARTED"    [2013-11-08 Fri 14:49]
Looks pretty terrible, but is free and runs on Linux.

There's a lot of problems with this game that nullify its chances of ever being
good, most importantly its lack of a coherent vision and awkward skill/magic
system.  It is, however, marginally playable and if you were a Linux-only MMO
junkie, this would perhaps be good enough for a minor fix.
*** CANCELED Freelancer
    - State "CANCELED"   [2013-11-16 Sat 23:53]
Maybe worth a play.  Looks a bit too casual-piloting focused for me though, but
the gameplay looks pretty good for that genre.  Check about running it in Win7

Looked into it and I'm not in the market for arcade-style space combat, though
it seems to do that well.
*** CANCELED X Rebirth
    - State "CANCELED"   [2013-11-17 Sun 00:31]
Now available, but is currently a complete bug-fest.  Also, from what I've seen
so far, I'm considerably less excited about this compared to any previous
X-series game, as it looks pretty dumbed down.  Overall, it's a mess.

Apart from bugs and price, at least some of these problems will have to be
resolved before I get it:
- The highway system is a lame mini-game.  As silly as SETA was, I'd rather
  have that as I could ignore it.
- Computer-controlled life in the game is a thin facade.
- The UI is extremely console-like and has awkward radial menus.
- First person exploration is nice and all, but if you're not going to do it
  right, don't bother.  It doesn't really add anything to the core experience.
- 1 ship only.  This doesn't bother me as much as other X fans, but it's a step
  backwards for this series.
- The map sucks.
- Only 1 active weapon at a time, no turrets, and only 5 total weapons removes
  an important strategy element.
- There's only a fraction of the depth of the X3 games.
- Using DX9 would be okay if it wasn't AAA priced.
- Interior textures are crap.
- Repetitive, unskippable animations and dialog.
- Many useful hotkeys I relied upon (like targeting) have been removed.
- It's not going to be possible to build up then manage a huge trading empire.

It's highly unlikely the core design decisions behind some of these
deal-breakers will be resolved, but I'd probably accept some compromise for
around $10.  I'll probably have to pass on this completely and just hope the
next effort (or one of the other Elite-clones in progress) addresses these

After reading the developer posts on the game post-release, it seems the
current design is what they intend to continue with.  So, barring some
repentance on their part, it looks like I'll be writing off Egosoft.
*** DONE ADOM 1.2.0 PR18 + NotEye
    - State "DONE"       [2013-11-17 Sun 04:12]
    - State "STARTED"    [2013-11-17 Sun 01:17]
Latest ADOM with graphics.  Worth checking out to see how this looks, though I
can't imagine it improves anything.

I prefer the text version of this.  The graphics add nothing and actually
detract from the game in these ways:
- They're rather cartoonish, so the game loses some of the imaginative appeal
  to me.  I always visualized myself in a desperate struggle to survive.
- The perspective makes it harder to see things, including exactly which tile
  you're on.
- There's a few bugs when clicking on things, and the mouse panning makes the
  scrolling jerky if the pointer isn't centered.
- You can only see part of the map instead of all of it.

Otherwise the latest version supposedly has some improvements over the very old
version I was playing, so I'll upgrade to this for my installed text version.
*** DONE Napoleon: Total War
    - State "DONE"       [2013-11-18 Mon 22:30]
    - State "STARTED"    [2013-11-17 Sun 19:00]
Had this on Steam for years, but never got around to playing it much.  It's a
massive >23GB install, so I'll try to finish with it quickly then clear off
that space.

Pretty good, but the thing I want is the open campaign that Rome: Total War
had, where you can start as any country and take over the game world.  The
flexibility to do what you want in the scripted campaigns is ruined by the time
limits.  A shame, because all things being equal, I'd rather play in this time
period.  This was the same result as last time, and I'm not sure why I bothered
*** DONE Planetfall
    - State "DONE"       [2013-11-19 Tue 01:41]
    - State "STARTED"    [2013-11-18 Mon 22:58]
A classic Infocom IF game.

Some good points, but has a lot of the same annoying puzzles (the kind with
colored buttons/levers/slots that don't integrate into the world) that plague
many Infocom games.  Would require a lot of trial and error (probably many days
of it) to actually beat normally, and I'm not going to bother.

I've concluded I only really like modern story-IF, and even then, only when
it's extremely well written.  Won't bother with any more of old puzzle IF.
*** CANCELED A Mind Forever Voyaging
    - State "CANCELED"   [2013-11-19 Tue 01:43]
An Infocom IF game.  One of the first heavy story-driving IF games and
supposedly quite good.  The manual is needed to play this for the table of
decoder codes (the built-in copy protection).

Possibly one of the more ambitious IF games ever made.  The left/right
political dichotomy (and the author's thinly veiled leanings) could be done
without though.

Skipping, due to being an old puzzle IF.  If I ever do want to play one though,
I'll try this one.
*** CANCELED Gary Grigsby's Pacific War
    - State "CANCELED"   [2013-11-19 Tue 02:34]
Available for free here:

Ran this in a VM and it doesn't work properly due to mouse issues.  Probably
would work okay in DOSBox, but I don't want to install that just for this.
*** CANCELED Pathologic
    - State "CANCELED"   [2013-11-19 Tue 03:37]
If I like this, also try The Void.  Watch a few minutes of an LP of it first.

Watched an LP of some of this and I think I'll pass.  It looks okay, but it
doesn't have anything going for it that really compels me to spend $10.
*** CANCELED Spacebase DF-9
    - State "CANCELED"   [2013-11-19 Tue 03:57]
Looks like an okay sim-style game.  This looks pretty simple and needs to be
much, much cheaper (like around $5 sounds fair).

After more investigation, it doesn't look like this would keep my interest very
long.  There just isn't that much content here to be worth bothering with the
game, even if the price was significantly less.
*** DONE Helherron
    - State "DONE"       [2013-11-20 Wed 02:50]
    - State "STARTED"    [2013-11-19 Tue 16:05]
This looks like a suitably complex RPG and is a good example of what's possible
with Allegro.

- Site with info: http://www.popehat.com/helherron/
- To sell stuff, enter trade and using the "," and "." keys to access character
  inventories.  Then highlight an item and use the "s" key.
- Search bodies, barrels, and other objects with "s".

Almost a good game.  If these things were fixed, it'd be playable:
- Searching for secret doors wouldn't be so bad if you didn't have to target a
  wall tile.  The Nethack method would've made this not suck.
- I like a challenge, but the difficulty of some encounters is completely
  impossible.  I min/maxed a full party, but ended up getting blocked at every
  point.  Farming up the necessary XP to level would take days.
- Some character builds don't have an appropriate sprite.
- Noob mobs like rats shouldn't inflict disease (totally gimping you) at 100%.
  This is very annoying when you don't have the cure disease spell yet.
- The title screen art makes me think this was written by a 12 year old.

This one goes in the "maybe play again if dreadfully bored" pile, but I
probably won't bother, since it's not compatible with modern OSes.  A shame,
because this kind of strategic, turn-based RPG is pretty unique and is a style
not available in any modern game (that I'm aware of).
*** CANCELED ADOM II (in development)
    - State "CANCELED"   [2013-11-20 Wed 03:05]
The ADOM author is apparently working on this now.  I'll ignore it until a 1.x
is out, since who knows when/if this will be finished.  Looks like there will
also be a payware version of it, which I'll surely pass on (no roguelike should
be payware as long as the best ones are still free).

Latest news on this is that the free version will be playable only via Java
WebStart.  I'll pass on this then.
*** CANCELED LambdaRogue
    - State "CANCELED"   [2013-11-20 Wed 03:08]
Windows version is most full-featured.  Looked promising, but I can't play all
the rogue-likes I want to, so I may skip this one.

Turns out this is an Angband-clone.  I'm no longer a fan of non-persistent
dungeon levels in a roguelike.
*** CANCELED Space Exploration: Serpens Sector (in development)
    - State "CANCELED"   [2013-11-20 Wed 05:05]
A space game for GNU/Linux styled after Strange Adventures.  Currently in
development, but preview builds are available.  Might wait a couple years and
see if it's further along before going through the trouble of trying it.  See:

Giving up on this.  Probably vaporware, and even if not, has some design I'm
not fond of.
*** CANCELED Hegemonia: Gold Edition
    - State "CANCELED"   [2013-11-20 Wed 21:04]
Looks like it might be an interesting modern Stars!-style 4X game.  The Gold
Edition includes the original Legions of Iron and The Solon Heritage expansion.
Available for cheap on GOG, but I'm waiting for a sale.  Research this a little
more before buying.

Watched an LP.  Skipping this due problems noticed, including:
- Scale of star systems is all wrong.  The game has time compression, so
  there's no reason planets have to be right next to each other.
- Space is too bright.  Apparently the Earth is in the middle of a colorful
- Too fast-paced.
- More like Sins of Solar Empire than Stars!.
- The campaign is okay, but nothing great.

Probably would still play it if it was free, but this gaming experience isn't
worth $10 to me.
*** DONE Cyber Dungeon Quest
    - State "DONE"       [2013-11-23 Sat 23:15]
    - State "STARTED"    [2013-11-23 Sat 23:00]
Canceled this years ago due to it not working.  It's now distributed as a JAR,
so will give it a try.

Pretty terrible.
*** DONE Jagged Alliance 2 1.13
    - State "DONE"       [2013-12-22 Sun 00:57]
    - State "STARTED"    [2013-11-28 Thu 02:22]
The best turn-based squad tactics game I know about.  Grabbed for $5 on a Steam

- The 1.13 mod changes this from an okay game into an awesome one:
- The Arulco Revisited mod makes the game world considerably more interesting
  (requires 1.13).  This requires launching from the INI Editor (there's an
  inconvenient workaround for this, but this works fine for me).
- The game has many, many bugs, some of which can completely ruin a saved game
  or lock up a computer.  Backup in many save slots and don't run other
- Ja2_sp.ini is convenient for remembering preferred starting options.
  should be set to true to prevent cutscene hangups.  Now, holding NumLock will
  skip them if they get stuck.
- Turn off "merc lights" to fix the jerky scrolling at night.
- For the infinite loading clock bug, sometimes Alt-Tabbing out then holding
  Alt or using M-Enter clears it up.
- To craft items, pick one component up in tactical view, RMB on the other,
  then C-LMB the default slots.
- Use Tab to cycle targeting rooftops.
- To use under-slung GLs, click the burst icon twice.
- Use S-n to do a full team smart goggle swap based on conditions.
- M-LMB in the sector inventory can be used to auto-sell stuff to locals, but
  I've set the sell cost to 10% of item value to balance out the full item
  drops (which really helps immersion).
- Use of the End key in combat shows line of sight information.
- Use Insert in tactical mode for a mini-map.
- A good battle workflow is the hit S-b at the beginning of a battle to drop
  backpacks (these reduce AP).  Once over, use C-S-f to return them, unload
  dropped weapons, and sort sector inventory.  Then use C-S-m to merge items.
- Once piles of ammo are in my hoard location, use C-S-a to convert it all to
  crates.  Crates are also useful for transporting lots of ammo in a vehicle.

While 1.13 and AR make this one of the greatest games of all times, I still
have a few complaints:
- Bugs everywhere.  I looked at the C source for JA2:UB, and while not
  terrible, it's a bit of a mess and the amount of bugs isn't surprising.
- Most of the additional music provided by AR is pretty bad.
- A lot of the really excellent 1.13 features are very obscure and/or
  inconvenient to use.  This is probably just a result of JA2 not being
  designed with them in mind.  A context menu on objects would make things way
- Windowed mode works okay, but lacks the edge scrolling and leaving the
  tactical map manually.
- Though extremely well researched, there's still a few factual inaccuracies
  regarding weapons/items.  Also, there's some non-realistic quantification of
  various real world things (e.g. 10mm is more powerful than .40 S&W).
- Breaching rooms needs work.  Something like having a better ability to toss
  grenades through doors/windows would fix this.

I may play this again some day, perhaps once 1.13 has more features.  In that
event, I'll change the following:
- Tweak the settings some to allow for slower progression, as the increased
  enemy kills maxed this out a bit too early (see the "Game progress weights"
- Make my item stash at Estoni.  Then spares can be regularly carted to San
  Mona and Hamous can be stationed there to sell them every day.  I can also
  store unrepaired stuff in the junkyard, and only the repaired stuff and ammo
  in the airport, to spare myself a lot of manual sorting.
- I'll do a completely different collection of high WIS chars (except Flo,
  which I'll keep), only have max 2 IMP chars, and probably just run two main
  squads with perhaps one backup squad of free campaign characters.
*** CANCELED Jagged Alliance 2: Unfinished Business
    - State "CANCELED"   [2013-12-22 Sun 15:12]
This has significantly less sandbox features and a more linear plot with the
emphasis on combat strategy.  I'm less interested in this, but may still play
it since it came free with vanilla JA2.

Tried this a bit, but it's just not the same as JA2 1.13.
*** CANCELED Baldur's Gate: Enhanced Edition
    - State "CANCELED"   [2013-12-24 Tue 17:38]
Available on Steam, but I'll wait for the price to drop below $15, since I
already paid for it before.  BGII + ToB is also out now as well, and maybe
they'll bundle them together some time.

After more investigation, this is just BGTutu with a few extra characters (that
don't really integrate as well) added.  I will probably give the BG series one
last run, but there's no point in paying more money for it.
*** CANCELED Shadowrun Returns
    - State "CANCELED"   [2013-12-28 Sat 11:38]
Judging from what I've read online, my best guess is this is a light RPG with
turn based squad tactics and pretty shallow at both of these overall.  Given
that assessment, I'll wait awhile until the price drops, if I get it at all.
More content is also being released and sold separately, so maybe waiting for a
bundle is the better course of action, so as not to get DLC-milked.  There's
also a highly rated campaign called "Dead Man's Switch" to download.

Despite wanting a new Shadowrun RPG, I don't think this is it.  This has a few
redeeming qualities, but overall actually manages to have less depth than the
16-bit console games:
- Guns have infinite ammo.
- Matrix combat is exactly the same as normal combat, just with IC instead of
- Tablet-centric UI.
- No proper save system.
- Extremely linear plot.

Another Kickstarter cash-grab milks nostalgic fanbois.
** Math goals
*** DONE statistics
    - State "DONE"       [2013-05-02 Thu 14:11]
    - State "STARTED"    [2010-11-03 Wed 16:00]
Need to refresh my statistics knowledge at least to the roughly intermediate
level it was in college.  In addition to this, I'll need the ability to do
statistics related mathematics in R.

- Dealing With Statistics: What you need to know.  Finished this.
- Introductory Statistics with R
- Pick some heavier math book on statistics from e-book collection.
- Detection of Abrupt Changes: Theory and Application

This won't make me a statistics expert, but I'll at least not be a total cl00b.

I've learned a lot of about statistics in the last 3 years.  While I still
think it'd be cool to understand it in more depth, I don't think the payoff is
there post-resigning from work.
** General life goals
*** CANCELED Do Nothing Day
    - State "CANCELED"   [2013-01-02 Wed 12:35]
For a whole day, do absolutely nothing.  That includes no reading, walking
anywhere, writing anything, using a computer, doing chores, talking to anyone,
or anything else that could even be remotely considered an activity.
Obviously, I'll need to do a couple things to stay alive, so these activities
are exempt (if done in necessity):
- Eating.
- Going to the restroom.
- Showering in the morning.
- Having a glass of water nearby, refilling it, and drinking from it.
- Brushing teeth and other hygiene.
- Walking between rooms (only provided I need to do so for one of the above
- Turning on/off lights.

By this standard, almost no one has had a day where they did nothing.  Why not
find out what it's like?  This might also help if ever in prison.

I suspect I'll find this uncomfortable.  But, as primitive humans were content
to often do this all day, perhaps modern life has overstimulated me.  There's
only one way to find out for sure.

After some thought, decided to cancel this idea.  I'm sure I'll have the chance
to do this plenty when I get old.
*** DONE financial independence
    - State "DONE"       [2013-05-17 Fri 12:59]
    - State "STARTED"    [2008-01-01 Tue 13:20]
Though starting this was actually a series of realizations and actions over
several years, I'm marking this started in January 2008, which is the month I
achieved $0 net worth.  I have a detailed org-mode plan for this elsewhere, but
it deserves an entry here too.  This is, after all, top priority for me, as
accomplishing the many things I really want to do in life are predicated on
making this happen.  Once I achieve FI and quit working, I'll cancel all
unfinished work-related tasks here and replace them with post-work items (of
which I already have a pending list for).

By my original plan, I am leaving work slightly early, but I consider what I've
achieved to be FI.  To hopefully close this gap and increase security even
more, however, I will be occasionally attempting to make money via non-job
*** DONE resign job
    - State "DONE"       [2013-05-17 Fri 12:59]
    - State "STARTED"    [2013-04-30 Tue 14:32]
This is tied to the financial independence task, but I also want to strategize
the specifics of my exit.

The plan:
- Tweak LaTeX resignation letter and turn it in.
- Leave on good terms with coworkers.  No point in taking any dumps on the
  desks of any sorry plebs.  The ones who've earned such treatment will get
  exactly what they deserve in the form of a life of employment, after all.
- Pass on all good-bye parties and such.  I've always done these when resigning
  in the past, but I think I'd rather just walk.  I'll also skip on sending out
  a clever goodbye email.  This one will just read "Bye".
- Don't bother expending any energy on the exit interview.  Just find out
  - W-2 mailing.
  - Clearances.
  - 401k.
- Take off 2 months to do the following:
  - Play video games all day.  I'll get sick of this pretty quick, probably in
    a few weeks at most.
  - Catch up on personal tasks.
  - Find a new apartment and move.
  - Sell unneeded crap.
  - Switch mental mode into complete independence.
  - Work on physical health.
  - Read a few books.

I'll quickly tire of being idle.  At that point it's time to get to the rest of
the tasks listed here, plus get started on my startup ideas.
    - State "DONE"       [2013-09-17 Tue 00:11]
    - State "STARTED"    [2013-08-29 Thu 14:58]
I feel naked walking around outside unarmed most of the time.

Unfortunately, this is only good for 5 years and requires notification if
moving to a new county (adding yet another moving task).  Plus there are
annoying fees and navigating the necessary paperwork is a real timesink.  But,
the end result is worth the effort and now I'll always have my LCP or Detective
Special on me.
** Macro-goals
*** DONE year-end review for 2013
    - State "DONE"       [2013-12-31 Tue 22:46]
    - State "STARTED"    [2013-12-31 Tue 22:39]
Observations for 2013:
- Quit work late April.
- Downscaled life to approximate planned transition period.
- Minimized many possessions.
- Deworkified brain.  This included mostly non-productive tasks.  However, I
  did managed to knock out the vast majority of tasks in the fiction and games
  section.  Apart from the much needed break, there was much to be gained from
  doing this, but I probably overdid it some.

Goals for 2014:
- Try to earn at least $30k.  If it doesn't look like I'll be able to do that
  on my own by beginning Q3, I'll get a short term contract job, as I had left
  work earlier than planned originally anyway.
- Now that I'm settled into non-work life, starting at the beginning of the
  year, I'll "work" at least a full 8 hours a day on learning my planned
  programming skills or writing code.  This work is defined as stuff on this
  list, not including non-fiction, fiction, and games sections.  As with having
  a job, I'll give myself 2 days off a week (probably Sunday and Monday) to
  just play games or recover.  I've learned that operating without any
  structure whatsoever probably isn't going to work for me.
- Come up with a post-transition period plan and begin implementing it.

* Project List (2012)
** Books: Computer Science/Programming
*** DONE The Mythical Man-Month: Essays on Software Engineering
    - State "DONE"       [2012-02-04 Sat 16:11]
    - State "STARTED"    [2012-02-01 Wed 15:59]
Had been meaning to read this since about 1998.  I had already heard the
important points here from secondary sources, but this is still a good read,
minus all the religious references and uselessly outdated technical specifics.

I'm not sure I agree with all of the author's recommendations for project
management, however.  I would modify his =surgical team= approach only
slightly, but I think a case can be made on how that conflicts fundamentally
with some of the other standard waterfall model suggestions.  Even just
considering the good stuff though, I think salvation has to come from languages
(and in practice, excluding idiots from a team and paying talented people
enough to truly be interested), not finding some magical project management
structure or workflow.  I've had enough exposure to the later alternative
methodologies to know they are attacking the problem the wrong way.
*** CANCELED Mahout in Action
    - State "CANCELED"   [2012-02-14 Tue 15:18]
    - State "STARTED"    [2011-05-23 Mon 11:39]
Got an early access version of this book.

Read some of this, but it was pretty boring.  Since I deployed to Afghanistan,
I'm canceling this and hope I won't ever need it when I get back, as it seems
highly unlikely now.  Will reopen if that turns out not to be true.
*** CANCELED RapidMiner 5.0 manual
    - State "CANCELED"   [2012-02-14 Tue 15:19]
    - State "STARTED"    [2011-05-09 Mon 08:58]
- Attributes can have roles, e.g. ID, target attribute, regular.
- Attribute types: nominal (enumerated), numeric, integer, real, text
  (unstructured free text), binominal (only two valid nominal values,
  e.g. yes/no), polynominal (more than two valid nominal values), data_time
  (date and time), date, time.

Read several chapters, but there's little to learn here of permanent value, as
this is just a boring end-user application.  Since I deployed to Afghanistan,
I'm canceling this and hope I won't ever need it when I get back, as it seems
highly unlikely now.  Will reopen if that turns out not to be true.
*** DONE The Cloud at Your Service
    - State "DONE"       [2012-02-14 Tue 15:20]
    - State "STARTED"    [2011-04-26 Tue 05:16]
A higher-level introduction to cloud computing and a survey of the current
state of the technology.  Only have this on Kindle.

Pretty boring, but if you didn't know anything about cloud computing and were a
bean-counter, it'd be a okay introduction.  Despite being rather high-level,
this has strangely-selected, super-simple code snippets (probably just to pad
out the book).  It's also very repetitive.

Only read a little over half of this, but I'm calling it done.  This is really
crappy book and obvious short term tech book fodder.  It might as well have
been called "Learn Teh Clouds in 24 Hours".
*** CANCELED Mars: A MapReduce Framework on Graphics Processors (paper)
    - State "CANCELED"   [2012-02-15 Wed 03:54]
Recommended by coworker.

Skipping this, since this isn't something I'll likely ever use now.  It was
going to be one of my research side projects while deployed, but it turns out I
don't have as much free time as I hoped, thus I have to be more selective about
how I spend it.
*** DONE A Critique of Common Lisp
    - State "DONE"       [2012-03-12 Mon 15:48]
    - State "STARTED"    [2012-03-12 Mon 14:43]
This is a post-CL committee critique.  I generally agree with all the
complaints voiced here.  The large number of undefined language aspects is
particularly annoying.
*** DONE A Brief Beginner's Guide to Clojure
    - State "DONE"       [2012-05-22 Tue 10:27]
    - State "STARTED"    [2012-05-18 Fri 09:22]
Starting with this one since it's quite recent and includes the latest
Leiningen setup.


- Instead of variables, Clojure uses reference types.  The four types of these
  are: Vars, Refs, Agents, and Atoms.
- Namespaces: A function my-func in file src/my-proj/core.clj has a fully
  qualified name of =my-proj.core/my-func=.  =my-proj.core= is the namespace.
  Local functions and ones in namespace clojure.core can be called with their
  short name.
- Clojure uses vectors instead of arrays.
- When looking for libraries, first check the standard library at
  http://clojure.github.com/clojure/index.html then contrib at
  http://richhickey.github.com/clojure-contrib/ then finally at Clojars.
- To use stuff from the standard library, just add a ~(:require
  [clojure.string])~ in the ns macro.  No project.clj edit is necessary.
- For contrib, add something like ~:dependencies [... [org.clojure/data.json
  "0.1.2"]]~ to project.clj and ~(:require [clojure.data.json :as cdj])~ to the
  ns macro.
- Maven Central hosts all contrib and Java libraries.  Find the Maven path for
  these at: http://search.maven.org/
- lein-marginalia can generate docs from a library, which is handy for actually
  using it without having to delve into the code for most situations.  To
  enable this everywhere by default, add it to ~/.lein/profiles.clj.  Then run
  =lein marg= and check the uberdoc.html file in docs/. See this for the latest
  version: https://github.com/fogus/lein-marginalia

An okay intro.  Not very comprehensive or anything, but good enough to get
your bearings in the Clojure ecology.
*** DONE Bigtable: A Distributed Storage System for Structured Data (paper)
    - State "DONE"       [2012-05-23 Wed 22:47]
    - State "STARTED"    [2012-05-23 Wed 22:12]
Recommended by my work's resident cloud guru as an overview of the fundamentals
behind Hadoop (which is primarily an open source copy of the design in this

I read some of this, but I disagree with the usefulness of reading this paper
for someone using Hadoop.  There's too many internal Google specifics here.
These are things that Hadoop core developers should care about, but I certainly
don't need to know them.
*** DONE Effective Java
    - State "DONE"       [2012-05-23 Wed 23:38]
    - State "STARTED"    [2010-07-16 Fri 16:15]
This book is full of useful info and no fluff.  Gave this a close read, but
didn't take notes or try to write programs along with it, so I might read it
again some day to make sure the tips here stick.  Definitely keep a copy of
this handy whenever writing Java, which is something I try to do as little of
as possible.

Update 2012-05-23: I made it through about 3/4 of this 2 years ago.  I haven't
written a line of Java since then, but kept this task open under the assumption
that I'd have to at some point.  Given my successful avoidance so far and no
prospects of having to write it in remaining time I have planned to have a job,
I think I can safely forget about this book.  If the worst does somehow happen,
I'll just reread it from the beginning, since I've forgotten a lot of it now.
*** DONE CS2008 Curriculum Update (paper)
    - State "DONE"       [2012-08-25 Sat 21:51]
    - State "STARTED"    [2012-08-23 Thu 08:42]
The ACM's recommended ideal computer science curriculum.  Or in the ACM's
words, "CS2008 should seek to identify the fundamental skills and knowledge
that all computing students must possess".


This white paper definitely has a designed by committee feel to it.  The good
parts mostly just confirmed I don't really have any major fundamental gaps in
CS knowledge (by their measure), at least for the stuff I care about.  However,
a lot of the stuff included here are things I would argue don't necessarily
belong (or at least aren't essential) in a CS course.  True CS knowledge isn't
as ephemeral as things like security, current social issues, and human-computer
interaction.  That stuff definitely belongs in an SE program, but it isn't
*** DONE Clojure - Functional Programming for the JVM
    - State "DONE"       [2012-08-27 Mon 12:16]
    - State "STARTED"    [2012-05-22 Tue 11:07]
Looks like this is probably a good overview of language features.  The goal
here is to complete an intro of all the main concepts so that when I read the
book Clojure Programming, it's just detail filling.  Such a comprehensive intro
is included in my Clojure learning plan due to my chosen full text's lack of


- println auto-inserts spaces between parameters.  To avoid this, use the str
  function first.
- Use all-ns to get a list of loaded namespaces.

This is a good quick reference for getting stuff done.  Will keep it bookmarked
for that reason.
*** CANCELED Core Java, Volume 2: Advanced Features, 8th Edition
    - State "CANCELED"   [2012-08-27 Mon 12:19]
Don't want to write any Java anymore, so don't need this.
*** CANCELED Functional Programming for Java Developers
    - State "CANCELED"   [2012-08-27 Mon 21:00]
This book seems to be about applying functional techniques to OOP languages
like Java.

I'm canceling this since I don't write Java, any mashing of FP into OOP is
always a mess, and there are already plenty of real FP languages on the JVM.
*** DONE GNU Emacs Lisp Reference Manual 3.0
    - State "DONE"       [2012-08-27 Mon 23:38]
    - State "STARTED"    [2011-05-31 Tue 10:25]
At =C-h i d m Elisp=.  Reading this since I'm often stuck in ielm at work when
on a non-SLIME box.  This can definitely be frustrating once one realizes how
many CL niceties are lost.  I don't want to become an elisp guru, but a bit
more competence would make life a lot better.  This book is more of a reference
manual though, whereas the other built-in elisp book is more a proper
introduction.  I'd read that instead first, but it's broken on the RHEL distro
work uses.

- Replace all ~(if (...) (progn ...))~ (if statements without else clauses)
  with ~(when (...) (...) (...))~.
- For readability reasons, use () when representing nothing or an empty list
  but nil when representing false.
- This is the place to go to look up documentation on various aspects of
  elisp.  The programming workflow includes:
  - Using eldoc-mode to get the lambda list for known functions.
  - C-h d <function-name> to get the function documentation.
  - C-h i d m elisp s <search-term> to get the full docs on that elisp subject,
    where search-term is a function name, or other unique string.
- Floating point arithmetic is non-exact, so use something like this for
  floating point comparison:
  (defvar fuzz-factor 1.0e-6)
  (defun approx-equal (x y)
    (or (and (= x 0) (= y 0))
        (< (/ (abs (- x y))
              (max (abs x) (abs y)))
- A repeat..until loop can be written like:
  (while (progn
           (forward-line 1)
           (not (looking-at "^$"))))
- Use symbol-function to get a function definition.

Since I'm no longer stuck working in a SCIF all day, I'll end this task now.  I
read most of this, and learned a lot, but Emacs Lisp isn't something I really
want to focus on getting awesome at.
*** DONE Google Correlate Whitepaper (paper)
    - State "DONE"       [2012-09-10 Mon 10:59]
    - State "STARTED"    [2012-09-10 Mon 10:41]
An example of scalable dimensional analytics, using approximation to trade off
precision for speed.

- Given input data, can describe relevant queries.
- Uses an ANN (approximate nearest neighbor) algorithm.  This algorithm isn't
  too difficult and I could probably implement it myself.

I could see this method being very useful for stock market data.  Attempting to
find correlations between indicators/values would otherwise be an expensive
process and could never happen in near real time.  If I ever start doing some
market analytics, I'll put some time into applying ANN to it.
*** DONE Out of the Tar Pit (paper)
    - State "DONE"       [2012-09-17 Mon 01:26]
    - State "STARTED"    [2012-09-15 Sat 23:06]
A paper on software complexity, declaring two types of complexity (state and


Excellent paper and a great reference for anti-TDD arguments (among other
things).  I would possibly reclassify the control complexity group as time
though, thus making the distinction between stateless control and stateful
time-dependence.  In this sense, time-base operations are just another form of
state.  I'm not quite sold on subscribing to an functional-relation programming
paradigm, however.  I think it's been proved by now that pure functional
programming's added accidental complexity is worth the trade-off.
*** DONE Ten Common Hadoopable Problems: Real World Hadoop Use Cases (paper)
    - State "DONE"       [2012-09-18 Tue 14:03]
    - State "STARTED"    [2012-09-18 Tue 13:44]
I have a pretty intuitive feel these days for the kinds of problems that don't
work or don't work well on MapReduce, but this may help formalize it some.

I thought this was going to be a real white paper, but it's actually hype-heavy
Cloudera spam.  There's some things wrong with it (e.g. data transformations do
not necessarily mean data loss).  Even this title is a lie since these aren't
really "common" problems, they're specific examples.  Most are pretty simple
too or aren't even big data problems.

Despite the stupid here, if companies were actually using Hadoop (and local
clouds in general) in these ways, then that would still be an improvement.
Maybe the private sector isn't as clueless as my environment, but I've only
ever seen clouds misapplied and projects fail because of it.
*** DONE ANSI Common Lisp
    - State "DONE"       [2012-09-18 Tue 14:15]
    - State "STARTED"    [2011-05-02 Mon 10:48]
I've read various parts of this in the past, but I'd like to start over and do
the whole thing.

- eql compares if parameters reference the same object.  equal compares if they
  evaluate to the same value.
- Dotted lists: Normal lists are "proper lists", meaning the list x is proper
  where it's nil or the cdr x is also a proper list.  A dotted list is where
  the cdr is just a value.
- Graham's suggested comment system is the same as mine, except I don't use ;;;
  for function comments, but rather rarely for demarcating sections within

Finished reading.  Despite PCL's popularity, I still think this book is the
better CL intro in most ways.  I've done some of the problems so far.  I also
lost a few chapters worth of my solutions that were in my warzone notebooks
that are now gone, so redoing them would be needed.

Update 2012-09-18: I'm calling this done for now since I've been using Clojure
at work.  I know all the fundamentals of Lisp variants.  The only thing I'm
really missing is a lot of practice, ecological knowledge, and some of the
advanced topics.  I'm currently trying to decide whether to switch to Clojure
as my primary Lisp.  If so, I probably won't bother finishing these problems.
*** DONE Practical Common Lisp
    - State "DONE"       [2012-09-18 Tue 14:18]
    - State "STARTED"    [2009-08-29 Sat 18:10]
In the Lisp world, this book seems to have displaced "ANSI Common Lisp" as the
de facto introductory text.  It's pretty good at that, provided the Lisp
amateur follows it up with a book that contains actual exercises or devises his
own.  Macros, in particular, receive a well done survey herein.

(Mostly) SLIME tips picked up while coding here:
- In the REPL, use "," then cd to change *default-pathname-defaults*
- C-M-q re-indents region.  C-c M-q re-indents sexp at point.
- Setting *print-pretty* controls formatting of macro expansions.  SBCL
  defaults this to T.
- M-. navigates to function definition.
- Use (break) forms to insert breakpoints that SLDB will pick up.
- C-c C-w c: slime-who-calls.  List functions that call the given function
  (default: function under point).
- C-]: slime-close-all-parens-in-sexp.

Tried to program ahead of the examples some and took more detailed notes in
~/src/lisp/pcl.  While otherwise good, the lack of exercises makes it more like
watching someone else code than learning it by doing.  I intend to come back
and reread this later to make sure all the advice within sticks.

Update 2012-09-18: As mentioned in the ACL update, I'm currently undecided
whether I want to perma-switch to Clojure or not.  Both CL and Clojure have
their pros/cons, so it's a tough choice.  If I switch back to CL, I left off
here at the CLOS chapters.
*** DONE On the Cruelty of Really Teaching Computer Science
    - State "DONE"       [2012-11-28 Wed 19:28]
    - State "STARTED"    [2012-11-28 Wed 17:49]
Text from a speech by E.W. Dijkstra proposing introducing programming through
an uninterpreted formal system.

An okay read.  Unfortunately, not only has this advice been ignored, we've
actually gone in the opposite direction since 1988.
*** DONE Hadoop Real World Solutions Cookbook
    - State "DONE"       [2012-12-10 Mon 10:03]
    - State "STARTED"    [2012-10-15 Mon 10:08]
Doing a technical review of this book.  Also need to write a blurb about self
for inclusion in it somewhere.

This is a recipes book, and like pretty much all of them, it's really bad.
These are short shelf-life impulse buys for junior developers, complete n00bs,
and guys who just got a job in something they don't know anything about.  In
retrospect, I'm a bit ashamed to be involved in making one and will not
participate in them in the future.
** Books: Math
*** CANCELED Elementary Number Theory
    - State "CANCELED"   [2012-09-17 Mon 11:58]
    - State "STARTED"    [2011-06-13 Mon 06:22]
This is an old (1920s) hard copy book I had laying around.  Reading it on the
DC Metro, since I need a book to read and I didn't plan to do the exercises in
here anyway (they're okay, just suboptimal time investments).  So, I'll get
what I can out of it with as close read as one can manage while seated within a
sweaty armpit of humanity.

Gave up on this as it just jumps from one random theorem to another without
much overall structure.  This isn't a useless book, but I'm sure I can find a
better one on this subject.  However, I've found that number theory doesn't
really interest me as much as it used to, so I'll probably at most do a quick
modern overview of it and call it done.
** Books: General Non-fiction
*** DONE The Science of Getting Rich
    - State "DONE"       [2012-01-31 Tue 14:52]
    - State "STARTED"    [2012-01-31 Tue 02:50]
Self-help nonsense and religious k00kskr33d.  No useful info here.
*** DONE Almost Perfect
    - State "DONE"       [2012-02-09 Thu 15:29]
    - State "STARTED"    [2012-02-05 Sun 14:58]
The story of the rise and fall of WordPerfect.  Online at:

While not expertly written and not from the optimal perspective, this is still
a really good read.  A good case study of corporate growth in the software
industry and the almost inevitable fall of empires within it.
*** DONE Future of Science
    - State "DONE"       [2012-03-03 Sat 20:29]
    - State "STARTED"    [2012-03-03 Sat 21:10]
By Ben Bova.  More of an essay.  A little over-optimistic and outdated, but
fusion reactors definitely rule.
*** DONE Ghost Wars
    - State "DONE"       [2012-03-10 Sat 05:45]
    - State "STARTED"    [2011-08-25 Thu 22:41]
A recent military history of Afghanistan up to 2001.

If I don't finish this by the time I leave Afghanistan, cancel it.  I'm pretty
sure I won't ever care about the craphole again after this.

Update: Never finished this in time, which is okay by me.
*** DONE The Constitution of the United States of America
    - State "DONE"       [2012-03-09 Fri 15:36]
    - State "STARTED"    [2012-03-09 Fri 14:37]
Written in plain English, which always made me wonder why Constitutional
scholars were needed to interpret it.  While a little too expansive in scope,
it seems like this would make for an okay country to live in (at least, by
comparison), were someone ever to try doing so.
*** DONE The Prince
    - State "DONE"       [2012-08-08 Wed 05:22]
    - State "STARTED"    [2012-01-20 Fri 15:11]
Recommended by an NGA rep I met in Afghanistan.  He claims this is applicable
as a guidebook for interaction with groups and individuals in his work and side

While most of these examples are no longer timely, there's some interesting
observations here.  The parallels between conquering 16th century France and
modern Afghanistan are hard to miss.  Though the reasoning is a bit sloppy,
it's certainly better than most modern texts in what's now considered political

Read most of this, and I think I get the gist of it enough.  I'm resisting
being a completist on this book, due to its high ratio of useless info.
*** DONE Phrack
    - State "DONE"       [2012-08-08 Wed 05:48]
    - State "STARTED"    [2012-03-09 Fri 12:19]
Read the whole collection, but skip anything obsolete or boring.

After reading a lot of useless garbage, decided to start reading backwards from
the latest issue instead and just quitting when stuff gets hopelessly
outdated.  Gave up after finding only more garbage.  My analysis is that there
really isn't much to learn here, unless you were really into security (which
I'm not).  Even then, a lot of the actual info here is just lifted from other
sources, and I'm not convinced most of the writers of this aren't semi-n00bs
themselves.  Like, if you aren't smart enough to convert all your linebreaks to
either the Unix or Windows version, then I probably don't have much to learn
from you.
*** DONE The History of the Decline and Fall of the Roman Empire
    - State "DONE"       [2012-08-08 Wed 05:59]
    - State "STARTED"    [2012-06-10 Sun 19:59]
Listening to the Librivox audiobook of this while in the car.  Like all
audiobooks of any worth, I'll listen to this at least twice (my reasoning for
this is that since I only listen to audiobooks while multitasking, the second
listening fills in any attention gaps).

The main value I got from this was experiencing the really awesome writing.
I've also learned that I'm not very interested in the particulars of the
history of ancient Rome.  I'm giving up about 75% in though, since I can't bear
to listen to some of the really annoying Librivox readers anymore.  I'll just
go back to thinking in silence while driving.
*** DONE Getting to Yes: Negotiating Agreement Without Giving In
    - State "DONE"       [2012-08-28 Tue 00:16]
    - State "STARTED"    [2012-02-21 Tue 12:08]
This is short enough to be worth the risk of a couple nights of reading.

What I can maybe take away from this book is illustrated by this example of
negotiating for rent.  I wouldn't haggle directly on price in the standard way.
Instead, I'd say something like, "Your employer wants to get this room
occupied.  I would maybe like to occupy it, as it seems acceptable to me.
Let's work together on making this deal happen in a way that's acceptable to
all parties."  This does two things: It separates the employee from his
employer and it makes it so you're both working together to make this happen.

This book has successfully convinced me that confrontational negotiating is
almost always unnecessary.  The only exception to this is when the other party
insists on thinking that such a method is the only way and employs it.  In most
of those situations, it's probably better to just walk away if explicitly
stating a cooperating alternative approach doesn't work.
*** DONE Die Broke: A Radical Four-Part Financial Plan
    - State "DONE"       [2012-08-28 Tue 00:16]
    - State "STARTED"    [2012-03-15 Thu 09:46]
Seemed like it might have an idea or two I could use, but I mainly started this
to pass the time on a 13 hour flight.

It's okay, but a lot of the info here is pretty basic and others I actively
disagree with.  I didn't finish this, but read enough that I consider it done.
*** CANCELED Language, Truth, and Logic
    - State "CANCELED"   [2012-09-17 Mon 00:47]
This is the original philosophical work introducing the concept of
"verifiability".  While of historical interest, it has since been superseded by
Popperian falsifiability.

Read a little, but this is pretty much crap.
*** DONE The Colt 1911 Pistol
    - State "DONE"       [2012-09-26 Wed 17:00]
    - State "STARTED"    [2012-09-26 Wed 12:58]
I had recently picked up a Colt Government Model.  I'm already reasonably
familiar with standard 1911 operation, parts, and history, so this is just for
entertainment.  This is an Osprey book, so I don't expect to learn much.  They
tend to be rather shallow and picture-heavy.

This is about average for an Osprey book.  It may be a little sloppier than
normal, since I spotted at least one (very minor) technical error and it
contains personal references to the author.
*** DONE The True Believer: Thoughts on the Nature of Mass Movements
    - State "DONE"       [2012-09-26 Wed 17:50]
    - State "STARTED"    [2012-09-17 Mon 01:36]
A pre-memetics attempt at explaining mass movements, written by Eric Hoffer.
This is also on Allen Scarbrough's list of 25 books to "know just about
everything", which I may read more (but not all) entries from.

Despite lacking the benefit of decades of memetics thought, it's hard to find
much wrong with the content here, and this is full of great observations.

I've been thinking about how one would go about attacking a memeplex (either in
an individual or in society), and this book's emigration suggestion for
tackling it at a societal level is a good point I hadn't considered.  Perhaps
in a world absent of travel restrictions, memeplexes would have a much harder
time taking root (though I might argue if a global parasitic memeplex arose, it
could be quite dangerous).
*** DONE Predictably Irrational: The Hidden Forces that Shape Our Decisions
    - State "DONE"       [2012-10-14 Sun 12:19]
    - State "STARTED"    [2012-10-01 Mon 10:30]
A analysis on irrational behavior that is fairly universal.  The problem of not
just not questioning certain decisions, but not even thinking they are
something that is to be questioned, is something I come across regularly when I
discover yet another false or suboptimal implicit axiom I've been operating
under.  Maybe this book will help some in finding any remaining ones, making it
easier to spot them, or at least provide useful models for thinking about them.

- Relativity: Watch out for decoy comparison goods/services.  These exist only
  to frame the internal comparison being made by the buyer.
- Price anchors: Always be wary of these.  It's probably safer to just default
  to some near ridiculous value for any goods or services and use that as my
  anchor, thus negating any externally introduced ones.  Even question whether
  something should be paid for at all.  Perhaps the anchor should be zero or
  maybe I should get paid for it (driving is a good example of something people
  pay a lot of money for, but wouldn't accept a job doing).
- Remunerate people with small gifts instead of money.  Money remunerations
  open up market analysis of pay.  Offering nothing makes the transaction based
  on social norms.  Giving a gift in exchange could be a way to get services
  that ordinarily would only be done by paying.  Gift value also matters
  little, provided it's not mentioned.
- This claims the most effective counter-procrastination is to impose
  artificial deadlines (preferably with actual penalties).  I agree with this
  and use this method sometimes for really hard stuff, but I still think it's
- Closing doors is often more a net benefit than keeping too many open.
  Probably good advice for me with my many technical interests.

- The fact that actors (even a majority of them) in a market are misinformed or
  unable to properly value goods does not mean that a free market is
  impossible, it just means that it will be suboptimal proportional to the
  stupidity of the individuals composing it.  Furthermore, a free market
  doesn't mean that you can count on the market as a signaling mechanism for
  optimizing your own utility.  A market is free simply when it's not distorted
  by regulation, laws, and taxes.  You'd hope an economist would know this.
- Too many personal narratives.  The worst of this are personal stories and
  opinions I really couldn't care less about.  Less awful but still annoying is
  the over-focus of experiments the author's been involved in.  I want to hear
  about the best illustrations of these ideas, not just ones that glorify one
  guy's career.
- Too much useless side info.  Stay on topic and stop wasting my time.
- Overall, I don't really appreciate the sloppy, casual writing here.

Overall this book is pretty good in some places, but not that useful (at least
for me) in others.  The latter situations are partly because many of these
things are already concepts I'm viscerally aware of and have been thinking
about for years.
** Books: Fiction
*** DONE Rogue Moon
    - State "DONE"       [2012-01-07 Sat 15:38]
    - State "STARTED"    [2011-12-23 Fri 16:22]
Worth reading, but the ending just kind of drifts off.  More of a character
study, with the hard scifi just being background.
*** DONE Eifelheim
    - State "DONE"       [2012-01-19 Thu 11:05]
    - State "STARTED"    [2012-01-02 Mon 04:03]
Well researched and well written, but also long-winded and boring.
*** DONE The Day the Aliens Came
    - State "DONE"       [2012-03-04 Sun 12:01]
    - State "STARTED"    [2012-03-03 Sat 21:15]
Not great, but the unpredictable writing style here is interesting.  Might give
another work by Robert Sheckley a chance sometime.  This was just a short
story, but he has some novels too.
*** DONE Neil Gaiman short stories
    - State "DONE"       [2012-03-04 Sun 19:06]
    - State "STARTED"    [2012-03-04 Sun 12:22]
Gave a few of these a try since I'm considering reading American Gods.
- Feeders and Eaters: Okay, but doesn't really go anywhere interesting.
- I, Cthulhu: Mildly entertaining, I guess.  Could've been done much better,
  but does have a few good examples of Lovecraftian writing.
- Snow, Glass, Apples: Kinda crappy.
- Eaten: Whatever the intent was here, it didn't work.
*** DONE Brian Aldiss short stories
    - State "DONE"       [2012-03-09 Fri 19:54]
    - State "STARTED"    [2012-03-06 Tue 13:09]
- Apogee Again: Meh.
- A Whiter Mars: A couple of random rants delivered in conversation form.
  Doesn't work well at all.  This author should just get a blog for stuff like
- Beef: More shameless preaching.
- Dark Society: Not that great.
- Galaxy Zee: Mmph.
- Headless: Bleh.
- III: Okay.
- Marvels of Utopia: Same formula as A Whiter Mars.  Still doesn't work.
- Sunlight: Crap.
*** DONE Who Needs Insurance
    - State "DONE"       [2012-03-09 Fri 17:41]
    - State "STARTED"    [2012-03-09 Fri 15:39]
Not terrible, but also not good.
*** DONE Understand
    - State "DONE"       [2012-05-16 Wed 00:07]
    - State "STARTED"    [2012-05-15 Tue 23:03]
A novelette by Ted Chiang.

This is an awesome story and possibly one of the best pieces of fiction I've
ever read.  Does a great job of getting around the "can't write a character
smarter than yourself" syndrome and is a creative speculation on the nature of

I'm impressed.  I'll keep an eye on this author to see if he produces anything
else.  I may also pick up a hardcopy of his book "Stories of Your Life and
*** DONE Scottish Folk and Fairy Tales
    - State "DONE"       [2012-05-20 Sun 03:35]
    - State "STARTED"    [2011-10-01 Sat 14:48]
These stories are pretty stupid, but this book came in handy while stuck with
dead laptop batteries, plus it was small enough to carry along as backup.
*** DONE The Stars My Destination
    - State "DONE"       [2012-05-25 Fri 09:00]
    - State "STARTED"    [2012-04-22 Sun 00:14]
Found this on a list of supposedly great hard scifi novels.  It's not terrible,
but bad enough for me to quit at chapter 8.

This has a problem that kills a lot of books for me.  The problem is with
unintelligent characters, especially main characters.  A book that focuses on
the details of someone dumb just isn't interesting unless it makes up for it
significantly in some other way.  The main problem with that is that stupidity
is universally accessible (I can just go outside or read Usenet if I want to
experience that).  The books I really like all have in common some insight into
intelligent thought.  Of course, this means that the author himself will have
to be someone intelligent too (reference my theory that it's impossible to
convincingly write a character smarter than you).  This means that most books
are effectively trash, but that's just accepting reality.  Starting now, I'll
be insta-quitting any fiction that has a dumb main character.

While I'm changing my reading tasking rules, I'm also adding the requirement
that I have a rationale for adding any task.  If I don't have an expectation
for what I intend to get out of it, then I'm probably wandering aimlessly.
This goal may not be met of course, but analyzing what went wrong in either my
expectations or its execution will allow optimization of future tasking.
Retroactively applying this to all un-started tasks.
*** DONE Destination: Void series
    - State "DONE"       [2012-05-25 Fri 09:01]
    - State "STARTED"    [2011-10-22 Sat 13:10]
A four part series by Frank Herbert.
- Destination: Void: Great book.  Not perfect, has some technical anachronisms,
  and I'm not sure the ending works, but reading this was definitely a
  pleasure.  Among the best fiction I read in 2011.
- The Jesus Incident: A sad, unworthy sequel.  This storyline probably should
  have just ended.  Quitting half-way in.
- The Lazarus Effect: Canceled.
- The Ascension Factor: Canceled.
*** DONE Destiny's Children series
    - State "DONE"       [2012-06-28 Thu 09:41]
    - State "STARTED"    [2012-06-24 Sun 00:29]
At least Coalescent looks like it might be interesting.  I like BDO (artifact)
hard scifi, and since it's so rare, I'll give this a look.  My other attempts
at Baxter works have all been disappointments though, so the hand will be on
the eject button.
- Coalescent: Has the overused trope of interleaved plots from different time
  periods in alternating chapters.  Some of this is okay, but it's mostly
  dreadfully dull.  A shame, since the subject matter (eusociality) is actually
  interesting and deserves better than this.
- Exultant: Read 18% of this but it's garbage, so I'm quitting this series.
- Transcendent: Skipping.
- Resplendent: Skipping.

The generic titles of these books reflect the generic nothing that happens in
them.  Occasionally, Baxter books deal with interesting subjects, but apart
from main idea selection, his writings pretty much suck.
*** DONE Incandescence
    - State "DONE"       [2012-07-16 Mon 01:57]
    - State "STARTED"    [2012-07-01 Sun 22:37]
The most potentially interesting of unread Greg Egan novels.

A bit dull and uneventful.  Quite the letdown.  Half of the novel involves a
society too far in the future, and the other half involves one too primitive to
be interesting.  This probably could have worked had it been a mystery novel
regarding the enigmatic galactic core civilization.
*** DONE The End of Eternity
    - State "DONE"       [2012-08-01 Wed 09:06]
    - State "STARTED"    [2012-07-18 Wed 00:54]
Another Asimov book, which probably means it'll be worth reading.  Normally, I
would give a book on time travel and social engineering a pass otherwise.  This
seemed the most promising of his works unread by me.

Read 25% of this, but it seemed to be going nowhere and was in a thoroughly
non-compelling universe.  Maybe it gets awesome later, but there's no
indication of that, so I'm giving up.
*** DONE Manna
    - State "DONE"       [2012-08-24 Fri 23:27]
    - State "STARTED"    [2012-08-24 Fri 21:56]
Speculation on the effects of increased automation.

Not a bad idea for a story, but is horribly written.  Despite the complete lack
of writing skills, the first half of this is readable, but then it gets
completely stupid and never goes back.
*** CANCELED Zendegi
    - State "CANCELED"   [2012-08-27 Mon 23:30]
This appears to be the least interesting of the remaining unread Greg Egan
books, largely because I don't care about Iranian politics.  I'll give it a try

Canceling due to my new rule about not reading politics fiction.
*** CANCELED Teranesia
    - State "CANCELED"   [2012-08-27 Mon 23:31]
The second most potentially interesting of unread Greg Egan novels.  I'm a bit
tepid on the South-East Asian politics much of the book focuses on though.

Canceling due to my new rule about not reading politics fiction.
*** CANCELED The Sky Road
    - State "CANCELED"   [2012-08-27 Mon 23:34]
    - State "STARTED"    [2012-08-08 Wed 06:16]
I'd actually started this some unknown time last year.  It's been rather
uninteresting so far though.  Will give this a focused final effort.  I may
cancel future efforts on MacLeod books though, due to his annoying politics (if
I cared about politics, I'd read books about that, not hard scifi).

Quitting due to the politics.  This seems like it may have been okay, but I
can't seem to muster the motivation to wade through the leftist crap.

New reading rule: Insta-quit anything written by someone with an obvious left
or right-wing political bias and who can't keep their boring party-line
politics out of a story.
*** CANCELED The January Dancer
    - State "CANCELED"   [2012-08-28 Tue 00:58]
Found this on a "best of" list and it stuck out since it was potentially
another BDO scifi novel, though I'm prioritizing this lower due to it taking
place too far in the future.

Couldn't find a copy and it's not worth buying given the likelihood of suckage.
*** DONE Hull Zero Three
    - State "DONE"       [2012-09-11 Tue 23:40]
    - State "STARTED"    [2012-09-09 Sun 00:54]
Another generation ship novel.

This is okay, but not really my thing.  It's less of a scifi novel, and more of
an epic journey type story.  The resolution of the mysteries in it aren't all
that amazing either.  Not really worth the time, at least for me.
*** DONE The Inverted World
    - State "DONE"       [2012-09-15 Sat 21:22]
    - State "STARTED"    [2012-09-11 Tue 23:59]
Looks like this could be an interesting concept for a hard scifi novel.

Competently executed, but not very interesting overall.  Has the same problems
most post-apocalyptic novels have where any hard scifi is drowned out by
*** DONE The World at the End of Time
    - State "DONE"       [2012-09-17 Mon 00:46]
    - State "STARTED"    [2012-09-16 Sun 11:56]
Similar concept to Tau Zero.  The author, Frederick Pohl, might have some other
good works too, if I like this one.  In particular, Gateway looks good.

The ETI in the book is pretty annoying.  Otherwise, this is pretty good and
filled with decent hard scifi.  It's short of being really good though.
*** DONE Robopocalypse
    - State "DONE"       [2012-09-30 Sun 14:38]
    - State "STARTED"    [2012-09-26 Wed 20:46]
A hard scifi AI apocalypse novel.

Pretty much a direct rip-off of World War Z, and not really that great of one.
It's readable, but not worth the time.
*** DONE Forgotten Realms: Icewind Dale series
    - State "DONE"       [2012-11-09 Fri 13:52]
    - State "STARTED"    [2012-10-16 Tue 01:35]
I like the IWD lore in the games (mostly), so maybe give these a try.
Supposedly these are good for books in the ADnD genre, but I'm not sure I can
trust fanboi opinions.
- The Crystal Shard: Has some okay qualities but is mostly silly and juvenile
  with a predictable plot and stereotypical, 1-dimensional characters.  Decided
  to finish this, but not read the other two.  The other books in this series
  don't actually take place in IWD either.
- Streams of Silver: Skipping.
- The Halfling's Gem: Skipping.

I think I'm maybe outgrowing this mythos.  There's much good stuff in it, but
it's tainted by a lot of crap too (e.g. original content is mucked up by an
affliction of Fantasy Kitchen Sink).  The editions are also moving in the wrong
direction, towards a generic FF-style level grind.  I guess I got into it
because of the BG and IWD series, but since no games like those have been made
since then, I probably have as much reason to follow it as before them.  There
are more creative fictional universes.  However, I don't seem to enjoy
immersion in any like I once did (like 10 years ago), mostly due to being able
to find so many glaring faults.  In any case, I'll probably ignore ADnD from
now on except for a final IWD and BG series playthrough at some point.
*** DONE The Listeners
    - State "DONE"       [2012-11-27 Tue 02:50]
    - State "STARTED"    [2012-11-25 Sun 01:02]
Another hard scifi ETI signal novel.

Has some decent writing at points, but a lot of bland filler.  More importantly
though, this is really more about the upright character of scientists and less
about anything scifi.
*** CANCELED The Virginian
    - State "CANCELED"   [2012-12-01 Sat 14:18]
    - State "STARTED"    [2012-11-29 Thu 09:35]
I've been meaning to at least try one western novel.  This is supposedly a
classic example of it.

This is unreadable, dull pablum, so I'm quitting early.
** Technology and software
*** CANCELED Android SDK
    - State "CANCELED"   [2012-02-15 Wed 04:38]
    - State "STARTED"    [2010-09-03 Fri 10:45]
Got a Samsung Intercept with Android 2.1.  While I have no intention of doing
any real development for the platform at the moment, I'll at least check it out
to see if it's something I might want to do for some spare cash later.  Only
setting this up on Windows at the moment.

Remaining subtasks:
- Root phone.  Supposedly this is a tutorial:
- Delete lame apps from apps list.

- Grab latest SDK from http://developer.android.com/sdk.  Unpack and run
  installer.  Force download through HTTP if necessary.
- bsdroid is an Android SDK port for FreeBSD, but it's not yet complete.  Might
  install this just to do development on FreeBSD, since most everything is
  working for that, but installs will have to be done from Linux or Windows.

Update: Canceling this due to not having a smart phone anymore.  For now, I'm
going to use my work Blackberry, and when I have to give that back, I'll use a
pre-paid dumb phone.  The only way I'll reverse this decision is if one of
these things happens:
- I get into mobile development (which I'm really not interested in).
- Pre-paid smart phones become available for competing prices to the dumb ones.
- I find myself with more than enough money to fund the ownership of one.  This
  can easily cost $50k in today dollars over the course of the rest of my life,
  and I'm not currently willing to work that much more just for a phone with
  crappy apps I never use.
*** DONE haskell-mode update
    - State "DONE"       [2012-04-01 Sun 20:48]
    - State "STARTED"    [2012-04-01 Sun 20:01]
Lots of nice new features were added.  Read this:

This breaks my existing haskell-flymake.  As a result, I'm going to stick with
the old version for now.  However, I added a script called u_haskell-mode to
update to the new GitHub-hosted version later if I want though.
*** DONE urxvtcd
    - State "DONE"       [2012-05-02 Wed 16:14]
    - State "STARTED"    [2012-05-02 Wed 16:12]
Use this instead of urxvt.  Add the -ls flag to it.  Make changes in
~/xmonad/xmonad.hs.  Remove -sl flag.  Add =URxvt*saveLines 10000= to
*** DONE unittest Python module
    - State "DONE"       [2012-05-03 Thu 13:36]
    - State "STARTED"    [2012-04-18 Wed 09:01]

Example in practice/python/home_range.py.
*** DONE oh-my-zsh
    - State "DONE"       [2012-05-03 Thu 15:10]
    - State "STARTED"    [2012-05-03 Thu 13:53]
ZSH is my second most used user application after Emacs, so it makes sense to
dedicate massive amounts of time into tweaking it to perfection.

Cloned the project to ~/src/shell/oh-my-zsh.

Update 2012-05-03: Instead of using oh-my-zsh directly, I've decided to just
pull out of it the things I wanted.  The reasons for this are:
- New shells start about as fast as before this way.  With the full collection,
  there's a noticeable startup lag on my underpowered FreeBSD machine.  Apart
  from saving time, I'm also not source-ing a ton of scripts and burning clock
  cycles for nothing.
- The collection has many, many things I don't want.  There's a provided
  directory to override things with your custom settings, but instead of
  setting things to things you don't want, then putting them back, it makes
  more sense not to do what you don't want in the first place.
- I don't want to fork my own version of this repo.  The only way the
  collection was acceptable to me was to go in and modifying things in various
- I don't want to have new installs depend on anything outside of .zshrc.  Now
  I get the functionality wanted but without the cost of all those external

So, .zshrc has been updated with git and SVN status support and a much better
prompt theme.  These were really the only things I wanted.  Created a follow-up
task for the next step in ZSH tweaking.
*** DONE PuTTY Unicode
    - State "DONE"       [2012-05-03 Thu 22:33]
    - State "STARTED"    [2012-05-03 Thu 22:30]
Just making a note here of this so I don't forget.  Go to Change
Settings|Translation and set it to UTF-8.

This lets me switch back to using the » character in my prompt.
*** DONE Leiningen (setup)
    - State "DONE"       [2012-05-04 Fri 14:18]
    - State "STARTED"    [2012-05-04 Fri 13:19]
Despite Leiningen's popularity, the script itself is pretty sloppy, at least
right now.  I don't have time for a full learning of it yet, but I want to lazy
load that anyway, in case I end up not using it much.  From first glance
though, it seems to get the job done pretty good and has a nice CLI syntax.

- wget https://raw.github.com/technomancy/leiningen/stable/bin/lein
- Put this in ~/bin and chmod u+x it.
- On FreeBSD, change the bash hashbang path.
- Run =lein=, which does some setup on the first run.
- Systems without =shasum= will report a download error due to a failed
  checksum validation when grabbing the Clojure jar.  Just verify that
  ~/.m2/repository/org/clojure/clojure/1.2.1/clojure-1.2.1.jar and
  ~/.lein/self-installs/leiningen-1.7.1-standalone.jar are there.
- Make a test project somewhere to make sure everything works by running =lein
  new test-prog=.

If I start using this, follow this up by reading Leiningen's README.md and
TUTORIAL.md here: https://github.com/technomancy/leiningen

This setup gives me 1.7.1, but it seems 2.x is much nicer, so I'll just use
that instead.  The above is therefore deprecated.

2.x Steps:
- cd ~/bin; wget --no-check-certificate
- chmod u+x lein
- Edit lein and change hashbang path.
- lein self-install
- Run =lein new test-proj= somewhere.
- Change project.clj to use the Clojure version of 1.4.0 and set ~:main~ to
- cd to that directory and run =lein repl= to make sure everything works.  Run
  ~(-main)~ or ~(doc -main)~.

With 2.x and Clojure 1.4.0, compilation and REPL startup is so slow that often
it times out on my crappy hardware.
*** DONE clojure-mode
    - State "DONE"       [2012-05-04 Fri 14:27]
    - State "STARTED"    [2009-11-29 Sun 16:02]
Major mode to understand Clojure.  Needs swank-clojure to integrate with
subprocesses.  Managed to get this working without installing ELPA and without
messing up my SBCL settings; SLIME can be activated with either Clojure or
SBCL now.

- Add clojure directory to $PATH.
- On Windows, create a clojure.bat file in the clojure directory, containing
  =java -cp C:\path\to\clojure.jar clojure.main=.  Run this to ensure a working
  REPL comes up.
- Add clojure-mode, clojure-contrib, and swank-clojure to ~/.emacs.d.
- Had to use an older version of swank-clojure.  Latest wouldn't work for me.
- Can send a startup parameter to SLIME with M-- M-x slime clojure.

Has many of the same commands for normal SLIME, and some extras, like:
- M-TAB: Auto-complete symbol at point.  Super useful.
- C-x C-e: Eval the form under the point.
- C-c C-k: Compile the current buffer.
- M-.: Jump to the definition of a var.
- C-c S-i: Inspect a value.
- C-c C-m: Macro-expand the call under the point.
- C-c C-d C-d: Look up documentation for a var.
- C-c C-z: Switch from a Clojure buffer to the REPL buffer.
- C-c M-p: Switch the REPL namespace to match the current buffer.

Update 2012-05-04: Since everything here has changed so much since I started
this, I'm going to redo it all from scratch.  Technically, this does complete
the effort with clojure-mode.  It's just swank-clojure that's messed up.
*** DONE EasyPG
    - State "DONE"       [2012-05-15 Tue 09:37]
    - State "STARTED"    [2012-05-15 Tue 08:54]
Switching to this instead of command line GPG, as it provides automatic
encryption of .gpg files.  This is now included in Emacs 23.

GnuPG 2.x has annoyed me for the last time with having to work around its
stupid UIs.  After trying to defadvice the EasyPG start function a few ways,
I'm giving up and downgrading to GnuPG 1.x, which is still available in
security/gnupg1.  Installing this without NLS support.

- To encrypt a file, use M-x epa-encrypt-file and enter a passphrase.  GnuPG
  1.x allows this to prompt properly for one in the minibuffer.
- To decrypt, just open the .gpg file and enter the passphrase.
- If I ever need access to the encrypted data outside of Emacs, =gpg -o outfile
  somefile.gpg= still works.

With so much less typing to encrypt all personal data, there's no excuse to not
encrypt everything I wouldn't want to be public knowledge.
    - State "CANCELED"   [2012-05-18 Fri 16:11]
    - State "STARTED"    [2010-07-02 Fri 02:31]
SBT is Scala Build Tool.  Apparently this is a replacement for Maven or Ivy.
Probably will stick with Maven for now though, since that's what work uses.

Apparently ENSIME provides an SBT shell with C-c C-a.  Other stuff at:

Setup notes:
- Grab latest sbt-launch jar from: http://code.google.com/p/simple-build-tool/
- Put sbt-launch jar in ~/lib/archive.
- Ensure sbt.el is in ~/.emacs.d and load it in .emacs.
- Create an =sbt= script in ~/bin that contains stuff referenced here:
- chmod u+x ~/bin/sbt
- Make sure a projectdir/project/build.properties file exists (otherwise sbt.el
  will fail).
- Open a file in a Scala project and run M-x sbt-shell.  This will prompt to
  create a project.  Enter info.

Usage notes:
- Run =help= for a full list of commands.

Canceling this task since I've decided to go with Clojure as my JVM language.

Redid this from the start.  Much of the above isn't true anymore.
*** CANCELED sbaz
    - State "CANCELED"   [2012-05-18 Fri 16:11]
Just take a look around the repo with =sbaz available= to see if there's any
libs or programs I want (or just want to look at the source for).  I doubt
there are though.

Canceling with other Scala tasks.
*** DONE Counterclockwise/Leiningen plugin beta
    - State "DONE"       [2012-05-18 Fri 16:11]
    - State "STARTED"    [2012-05-18 Fri 09:35]
Probably won't use this, but I'll put it in my work laptop's host OS anyway.

- Grab latest Eclipse IDE for Java EE Developers.
- Go to Help|Eclipse Marketplace and search for "clojure".  This returns
  Counterclockwise, which provides Clojure support for Eclipse.
- Go to Help|Install New Software and add an update site for "Leiningen plugin
  beta site" at: http://ccw.cgrand.net/updatesite-lein-betas
- Create a project from the CLI with =lein new=.  Move this to the workspace
  for Eclipse and use File|New|New Project.  Select General|Project.  Type the
  project's name in and it'll load in the existing project previously created.
- Right click on the project name, go to Configure, and select "Convert to
  Leiningen Project".  The project.clj dependencies should now show up in a
  "Leiningen dependencies" folder.
- Right click on project and toggle the Enable/disable clojure language
  support.  It's set to the correct setting if Run As|Clojure Application shows
- Right click on project and select Run As|Clojure Application.  This brings up
  the Counterclockwise REPL.
- Use C-i to interrupt execution in the REPL.
*** DONE Leiningen (usage)
    - State "DONE"       [2012-05-22 Tue 10:24]
    - State "STARTED"    [2012-05-17 Thu 09:20]
Settled on using 2.x, even though it's not a stable release yet.

Using a few random websites and this document:

- Use ~(require 'test-proj.core :reload)~ to reload a changed file.
- =lein run= executes a project from the CLI with the ~-main~ function location
  specified in projects.clj.
- Libraries don't need ~-main~ functions.
- =lein jar= packages up a project and =lein uberjar= creates a standalone jar.
  Note that this requires ~:gen-class~ specified to create the .class file
  ahead of compiling the jar.  With the uberjar, this can then be run as =java
  -jar proj-name-standalone.jar=.
- =lein search <pkg-name>= searches the Clojars and Maven Central repos.  This
  is useful for copying this info directly to the :dependencies vector in
- =lein install= installs the current project to the .m2 repo.
- Reference this sample project.clj file for viewing all available options:
- =lein deps :tree= prints the project dependency tree.

I think I know enough Leiningen to be productive.  There's more, but I need to
get stuff done and stop yak shaving.

I'm also switching to not installing Clojure from ports and will just use
Leiningen to pull it and anything else into my .m2 repo.
*** DONE ParEdit
    - State "DONE"       [2012-05-24 Thu 00:18]
    - State "STARTED"    [2012-05-23 Wed 23:59]
Try this out for awhile.  I tried this before very briefly, but decided to stop
because some commands didn't fit my model for doing the most obvious thing.
Every Lisp-dialect Emacs programmer I see seems to use it, so I may be missing
out on some convenience that only comes through extended use.


Installed the beta, renaming it to paredit.el.  Not sure I like overriding C-k
to stop at a delimiter.  Also, the C-arrow key commands are great when they
work, but do weird things when they don't make sense.  I'll have to use this
for awhile to see if these things gets annoying.  Currently, some of it seems
counter-intuitive.  Even if that feeling remains though, maybe it's worth it
for the mismatch detection (however, in that case, I should just extract that
code myself).

Update: Removed this as it gets in the way more than it saves me from
mismatched parens.  However, I'm leaving it in ~/.emacs.d, for the rare case
where I have a pair mismatched that I can't find.
*** DONE remove ECB
    - State "DONE"       [2012-05-25 Fri 22:09]
    - State "STARTED"    [2012-05-25 Fri 21:35]
I haven't activated ECB in years, so I might as well remove it and spare myself
the dependency management and startup time cost.

Removed ECB and CEDET blocks in ~/.emacs.  Removed now-unnecessary stuff from
custom-set-variables sexp.  Archived both of these to unused_init.el.
Uninstalled ECB port on FreeBSD.  Things like JDEE and nXhtml still require
EIEIO, which requires CEDET, so I can't remove that port until I upgrade to at
least 23.2 (it's included then).

Emacs starts up noticeably faster now.  Then it was just nXhtml that was slow
(but I actually use that occasionally).  Decided to look up how to byte-compile
nXhtml, which cut its start time down to nearly nothing.  To do so: Activate
menu-bar-mode, go to nXhtml|nXhtml Help and Setup|Byte Compile nXhtml.  Now
just CEDET and EIEIO are slow, but on modern hardware it's quite fast overall.
*** CANCELED jdibug
    - State "CANCELED"   [2012-05-25 Fri 22:24]
Look into using this to debug Java projects in Emacs.


Canceled due to my hope to not have to write any Java at work ever again.
*** DONE escreen
    - State "DONE"       [2012-05-25 Fri 22:42]
    - State "STARTED"    [2012-05-25 Fri 22:34]
Consider replacing elscreen with this.  Supposedly better integrated.  Worth a
try, since elscreen has a few issues (namely: the window lists getting cut off
by vertical windows, window lists duplicated on C-x 2, and dependency upon


Grabbed and rebound the prefix key with:
(setq escreen-prefix-char "\C-z")
(global-set-key escreen-prefix-char 'escreen-prefix)

Well, this works.  The main difference though is that escreen doesn't have a
nice way to tell what's where.  The different screens are just numbered, and I
think that at least for me, the elscreen tabs do prevent me from scrolling
around more than necessary.  I can see myself using escreen and living without
that, but since the main elscreen feature is actually useful for me, why should
I?  It's a close one, but I'll stick with elscreen for now.  I may change my
mind later though.  I do like the idea of getting that extra line of text back.
*** CANCELED malabar-mode (revisited)
    - State "CANCELED"   [2012-05-25 Fri 22:54]
This failed last time, but with as much JDEE-related suffering as I've been
enduring, and seeing as how there's no end to it in sight, I'd say it's worth
another try.  Don't bother putting a lot of effort into it though, since I
intend to write much less to no Java in the future.  I would like to keep some
at least minimal Java functionality in Emacs, since even if I'm not a Java
developer ever again, it's likely I'll still have to look at Java code on

Update 2012-05-25: I was going to get started on this, only to discover
malabar-mode is now unmaintained.  Since it's been 7 months now with no one
stepping forward to keep it going, I'm making a task to look into emacs-eclim
*** DONE helm, helm-ipython
    - State "DONE"       [2012-05-26 Sat 00:29]
    - State "STARTED"    [2012-05-26 Sat 00:14]
Previously called anything.el.  I'm only using this for Python code
completion, though I may want to check out helm-slime later).


Installed helm and helm-ipython and they both seem to work fine.  The use
workflow is:
- Open Python source file.
- Use C-c ! to load an iPython shell.
- Use C-c M to load the source file imports into the iPython environment.
- Type something to complete (e.g. =sys.=) and hit M-TAB.
- Canceling out of or completing something will hide the REPL.  Just use C-c !
  to get it back.  May look into fixing this later.
*** DONE rework Emacs Python setup
    - State "DONE"       [2012-05-26 Sat 00:54]
    - State "STARTED"    [2012-05-25 Fri 23:13]
My Python setup is pretty decent, but it could be better.  In particular, I'm
missing a decent completion mode (consider anything-ipython for this).

Note that anything.el may have been renamed to emacs-helm.

I'm basically starting from the base major mode and revisiting all decisions
made, then comparing the end results.  It's hard to tell what's current out
there, and this is mostly Emacswiki's fault, but also the tools are a bit of a
ghetto as well.

- Attempted to upgrade python-mode from 5.2.0 to 6.0.8.  This seems to now
  include a lot of extra stuff.  The mode's page is pretty terrible and hard to
  find information on.  I think the README file was written by someone
  illiterate too.  In any case, it broke compatibility with iPython, so I'm
  sticking with the old version.
- Edited ~/.ipython/ipy_user_conf.py and uncommented the import for
  ipy_greedycompleter.  This enables completion in the iPython shell.
- Created a separate task for emacs-helm, so I can document its setup.  This
  was successfully added and seems pretty nice.
- Apparently pyflakes wasn't installed.  Downloaded this from
  http://pypi.python.org/pypi/pyflakes and ran =setup.py install --user= (after
  modifying the hashbang since they were too dumb to use env).  Added
  ~/.local/bin to $PATH in ~/.zshrc.  Activating flymake-mode for all Python
  files by default.
- Noticed that python-describe-symbol is only in python.el, not python-mode.
  It's a shame to lose this, but I never seemed to use it obviously, or I'd
  have noticed it by now.  I'd rather trade that for the iPython integration.

I think that does it.  I now have flymake, source completion, and interpreter

If I ever really want to take it to the next level, I could add pylookup for
documentation browsing/searching and integrated debugging support.  This guy's
blog post shows this:
*** DONE remove sqlplus.el
    - State "DONE"       [2012-05-26 Sat 01:01]
    - State "STARTED"    [2012-05-26 Sat 00:54]
Haven't used Oracle for years, and I'm definitely hoping I never will again.

Removed from ~/.emacs.d and archived setup to unused_init.el.  Not sure how
that sat there unnoticed so long.
*** DONE UPenn Clojure exercises
    - State "DONE"       [2012-06-18 Mon 10:46]
    - State "STARTED"    [2012-06-15 Fri 12:15]
Some practice problems that would be too easy in Lisp, but will help get used
to using Clojure syntax.

These were entertaining problems to solve and doing them was rather useful
too.  They're more of the pure algorithm problems though, so I still have some
work to do to get productive in the language as a whole.
*** CANCELED Rinari
    - State "CANCELED"   [2012-07-02 Mon 11:34]
Consider switching to this for Ruby in Emacs.  Or I may just remove Ruby
integration all together, as there seem to be no applications in Ruby that I

I've decided to ignore Ruby, so I'm skipping this.
*** DONE close MySQL port on macroexpand.com
    - State "DONE"       [2012-07-02 Mon 11:39]
    - State "STARTED"    [2012-07-02 Mon 11:36]
I had some plans for this, but better to close it until I actually am ready to
do them.  Was also going to put the l1j-en db on here, but I can do that and
just run the server on the same machine, though I haven't decided where I want
it yet (reduced latency on cellblock vs. reduced local CPU/HD usage on muze).

- Check open ports with =sudo nmap -sS -F
- Setup pf and create exclusive rule for port 3306.
- Once closed, ensure that =telnet macroexpand.com 3306= doesn't work from
- While I'm at it, check ~SHOW GRANTS;~ and use the REVOKE command to clean up.

Once I have pf (or some other firewall) setup, I can then easily block some of
the SSH brute force spamming and HTTP exploit attempts.  Added a pf/altq task
for this.

Update 2012-07-02: I'm just disabling MySQL on macroexpand.com.  However, if I
ever do get around to using it for something, I can just add
=bind-address=127.0.0.= to /etc/my.cnf.
*** DONE Markdown
    - State "DONE"       [2012-07-20 Fri 09:20]
    - State "STARTED"    [2012-08-10 Fri 01:47]
Convert README files to README.md files.


Without really trying, I've kinda learned enough Markdown.  There's some
Markdown files I've created in two Clojure projects so far.  It's simple enough
that I can lazy load any other syntax needed.
*** CANCELED update NES emu
    - State "CANCELED"   [2012-08-10 Fri 01:57]
Using NESten currently.  Supposedly Nestopia and Nintendulator are now better.
The former requires 800MHz, the latter 1.6GHz.

Update: Not sure why I bother scheduling this.  Any time spent playing NES
games is certainly a waste.
*** DONE swank-clojure
    - State "DONE"       [2012-08-22 Wed 13:27]
    - State "STARTED"    [2012-05-04 Fri 14:27]
Since I'll be using Clojure for work, I need to get this running as smoothly as
my SBCL SLIME setup.

Some info is here (but it seems some of it is outdated):
Deferring to this instead:

- Deleted old clojure-mode, clojure-contrib, and swank-clojure setups.
- Use an existing project or create a test one and open the projects.clj file
  and add ~[lein-swank "1.4.4]~ to the :plugins section.
- Run =lein repl= on the project to pull in the lein swank dependency.
- Open project.clj and run M-x clojure-jack-in.  A SLIME REPL should eventually
  come up and eval-ing the source buffer should allow one to call a function
  like (test-proj.core/test-fn).
- To switch to the project's namespace, compile it first with C-c C-k, then use
  C-c M-p.
- Alternatively, if you add a lein-swank dev-dependency, you can run =lein
  swank= from the CLI and then M-x slime-connect to that REPL.
- For long running or complex applications, it might be a good idea embed a
  swank server in the application.

- Clojure REPLs take like a minute to start.  SLIME with SBCL started up in a
  few seconds.
- Once again, I have no way of using both SBCL and Clojure.  This is an
  unacceptable outcome and I'll have to resolve it some way or another.
- SBCL SLIME setup is commented out for the moment.

swank-clojure is now deprecated.  Look into nrepl.el instead.  Created new task
for this.
*** CANCELED psvn
    - State "CANCELED"   [2012-08-25 Sat 21:54]
I've sorta used this a little and have it installed, but haven't really managed
to figure out how to replace all my SVN needs with it and am still using the
command line for some things.  First check if there's a superior SVN mode.

Canceling since, until recently, the only place I used SVN still was at work
and I'm now fully switched to git there.  I'll still keep my existing SVN
integration as is, however.
*** CANCELED WebKit engine
    - State "CANCELED"   [2012-08-27 Mon 23:12]
This is just a reminder to check out Minno (and maybe some of the other WebKit
engine clients) around 2013 or later.  Adblock's been ported to WebKit, making
this a viable xulrunner/Gecko replacement.  In the case of Minno, another
benefit might be the fact that it's written in Scheme and should be easy to
modify (it looks like it'll be compiled gambit-c Scheme, which is a good thing,
IMO), but a downside is that it uses Qt, so I'm not entirely sold on it.

Project died.
*** DONE MINIX 2.0.4 VM
    - State "DONE"       [2012-08-28 Tue 00:31]
    - State "STARTED"    [2012-02-02 Thu 16:13]
Install this and check if it has the sources.  If so, keep it around for
reading with Modern Operating Systems.  Initially attempted this in VirtualBox
but it failed for some unknown reason.  Since I switched to VMware Player, redo
it in that.

Got this working in VMware using the image provided here:

Tested and this works.  This includes a root user with no password.  This
removes the only blocking task for reading the above book.
*** CANCELED gem
    - State "CANCELED"   [2012-09-23 Sun 17:31]
Create a workflow for installing gem crap.  The only things I can think of
wanting at the moment are rake and Haml, though I'm not sure if I even want

Update: Decided against using either rake or Haml, and as a result, there's no
need to use gem.  Additionally, I've been keeping anything Ruby-related off my
main workstation due to its bloat and low payoff.
    - State "CANCELED"   [2012-09-23 Sun 17:32]
Consider using this.  If so, check out html2haml.  Hamlet is sorta like this as
well, but for Haskell.

I'm not sold on this idea, since this abstraction doesn't add anything, nor
does it provide anything the base language does not.  SCSS is probably a better
option.  Haml seems like an abstraction for the sake of abstraction.

Update: Replacing this with Sass/SCSS.

Update: On second thought, I may consider reopening this, since it seems to be
popular in combination with Sass now.
*** DONE NoScript in Conkeror
    - State "DONE"       [2012-09-23 Sun 20:11]
    - State "STARTED"    [2012-09-23 Sun 19:45]
Add this.  http://conkeror.org/NoScript

Installed 2.5.5:
- wget --no-check-certificate
- Install via M-x extensions and restart.
- Open plugin preferences and add macroexpand.com,, localhost, and
  github.com to the whitelist.

The above steps give you a working NoScript setup.  However, you're supposed to
be able to add ~require("noscript");~ to ~/.conkerorrc, and then have access to
the M-x ns-toggle-temp function.  This is currently broken, requiring going
back into the preferences every time you want to turn it off (or adding the
site permanently to the whitelist).  While inconvenient, I prefer this over
having arbitrary JavaScript being executed.

I talked to the developers on the Conkeror channel on Freenode and they claim
this works in the new version.  I'm adding a task to manually update Conkeror
and run it from a user directory instead of ports.
*** DONE w3m bookmarks
    - State "DONE"       [2012-09-24 Mon 02:38]
    - State "STARTED"    [2012-09-24 Mon 00:31]
Consolidate all Lynx and Firefox bookmarks to w3m.  The blocking issue of w3m
not saving the location of the last followed link when backtracking seems to be
resolved in the most recent 23.x release, so the next update will resolve that.

I'll be heavily trimming my bookmarks.  With search engines so good these days,
there's no point in maintaining such a huge list for reference.  The purpose of
my bookmarks will from now be to note stuff that I want to spend more time on.

Phew, that was a lot of work.  I'm leaving lynx_bookmarks.html around for now
for unfiltered, junk bookmarks.  I may start using the temp section in w3m for
that later though.  I'll also give this one more pass to delete more stuff I'll
never look at.
*** DONE write repo update script
    - State "DONE"       [2012-09-27 Thu 10:56]
    - State "STARTED"    [2012-09-27 Thu 10:32]
Clean up all repos I track in ~/src.  Write a script that auto-updates all of

Stuff done:
- Wrote ~/bin/update_repos.
- Excluded stuff from ~/.emacs.d, since a lot of the time, I want the old
  version.  Will continue tracking these manually for now, though I may later
  add ones that I always want to track.
- Excluded l1j projects.  Need to address these later.
- Cleaned up a bunch of stale code laying around ~/src that I don't care about
  anymore.  Most of this was quick exploratory code and prototypes.
*** DONE write auto-clean LaTeX build files script
    - State "DONE"       [2012-09-27 Thu 11:12]
    - State "STARTED"    [2012-09-27 Thu 11:06]
Write a script that goes into the two directories that I write LaTeX in, and
recursively cleans out all the various intermediate files created building

Wrote ~/bin/latex_clean.  This will save quite a bit of typing.
*** CANCELED sample interview questions
    - State "CANCELED"   [2012-09-27 Thu 11:34]
    - State "STARTED"    [2010-05-13 Thu 13:26]
Do most of these.  Located in ~/src/repo/misc/sample_interview-answered.txt.

I did a few of the programming problems here.  However, after reading over all
the questions, I'm sure this is a waste of time so it's getting canceled.  The
only possibility for reopening this is if I'm doing a more extensive than
planned C refresher and want some good puzzles.
*** DONE packet radio
    - State "DONE"       [2012-09-27 Thu 12:42]
    - State "STARTED"    [2012-09-27 Thu 12:16]
Research feasibility of actually using this.  For now, just read the Wikipedia
page on it and find a guide somewhere and read that.  I'll need to learn more
about ham radio in general before I can understand all the lingo, but I'm
mainly just interested in whether this is something I'd be interested in first.
If not, I'm a lot less interested in ham radio in general and can de-prioritize
a whole set of potential upcoming tasks accordingly.

Packet radio is pretty interesting.  However, there are some problems for what
I'd want to use it for:
- Most of the time, it's used to set up distributed local networks.
- I won't be able to get above 9600baud without special equipment.  Apparently
  normal speeds are often slower.
- This concept was far more popular back in the 80s.  Hardly anyone uses it
  now, so there usually won't be a network around.
- What I wanted to use it for (to access gateways to the real internet) isn't
  possible.  These gateways don't exist (or at least aren't common).

Probably will still try ham radio out sometime, just for fun.  However, I'm
lowering its priority based on info found here and I'd be fine with skipping it
altogether since it doesn't really add anything of value.
*** DONE redo Scala Emacs integration
    - State "DONE"       [2012-11-07 Wed 10:39]
    - State "STARTED"    [2012-11-06 Tue 10:37]
It looks like I will have to write some Scala after all, thanks to my
scatterbrained work environment.  I'm going to do it (more) properly this time
though, starting from scratch:
- Install sbt.  Ensure it can pull in specified versions of base Scala.
- Activate scala-mode from the latest Scala distribution, if it's still there.
- Install ENSIME.
- Get the ENSIME REPL up.

sbt (manual install):
- Grab latest sbt from
- Put somewhere and update my ~/bin/sbt script to point to the new
- Create a test project with a directory containing a source file and a
  project.sbt file.  Run it with =sbt run=.

scala-mode: This seems to not be distributed anywhere, but I found a copy in
some SVN repo.
- git clone https://github.com/scala/scala-dist.git
- Grab the scala-dist/tool-support/src/emacs and move it to

- Grab a recent distribution from:
- Extract and move to ~/.emacs.d/ensime.  For BSD, change the hashbang in
- Activate the sbt ensime plugin (which allows the =ensime generate= command to
  create a .ensime file in an existing project from the sbt shell) by following
  the instructions on: https://github.com/aemoncannon/ensime-sbt-cmd Use
  "latest.milestone" for the version.
- Create the .ensime file in the above test project, open the .scala file in
  Emacs and execute M-x ensime.

Scala (manual install): This is for running REPLs.
- Grab the 2.9.2 tarball.  Edit the hashbang in all scripts in bin/.
- Check updates to $PATH, $CLASSPATH, and $SCALA_HOME in ~/.zshrc.
- Some systems might require a symlink to the interpreter binary in ~/bin in
  order to get it on Emacs' exec-path.
- Test the REPL by doing the ENSIME test above, followed by C-c C-v z.

Still need to actually properly learn Scala, ENSIME, and sbt.  From what I can
tell, this setup is good though.
*** DONE fix mutt
    - State "DONE"       [2012-12-01 Sat 15:29]
    - State "STARTED"    [2012-12-01 Sat 15:10]
Nothing changed on my end, but I can no longer send email via Gmail services
through mutt.  Reading it works though.

Fixed.  This was caused by not changing my password in my .msmtprc file.
*** DONE alternative ModeLine settings
    - State "DONE"       [2012-12-08 Sat 12:37]
    - State "STARTED"    [2012-12-08 Sat 12:29]
Try running cvt --reduced 1920 1200 60 and putting that in xorg.conf.

This seems like a slight improvement.
*** DONE w3m search engine redo
    - State "DONE"       [2012-12-08 Sat 13:32]
    - State "STARTED"    [2012-12-08 Sat 12:48]
Figured out a way to get custom w3m-search-engine-alist additions in place.  My
problem was putting them in the mode-hook instead of an eval-after-load call.

Rolled back my original Blekko changes and added them in the new manner, but
there's some issues.  The main one is that Blekko no longer accepts these
perfectly well-formed searches anymore, so I'm stuck with gg: until that
changes.  Also, only the default search URIs are active at load, until you at
least do one successful search.  As a result, I just added searches for Hoogle
and FreeBSD ports.
*** DONE set-face-attribute
    - State "DONE"       [2012-12-10 Mon 10:50]
    - State "STARTED"    [2012-12-10 Mon 10:45]
Consider using this for font setting in Emacs, e.g. ~(set-face-attribute
'default nil :font "Anonymous Pro 16")~.

Added this, consolidated it with the Windows font setting, and commented out
the font line in ~/.Xdefaults.
*** DONE convert Virtual PC images to VMware
    - State "DONE"       [2012-12-13 Thu 13:22]
    - State "STARTED"    [2012-12-13 Thu 12:20]
I have 2 Windows XP VMs used for running older 32-bit Windows software (mainly
games).  Converting these to VMware will consolidate all VMs under one
emulation platform and reduce the number of virtual network adapters and
system services.

Conversion requires VMware vCenter Converter Standalone.  This works and I have
an XP VMware VM now, but unfortunately, I need VMware Workstation in order to
get the graphics display settings I want (stretching to fill the screen without
resolution change).  Also, gameplay is a bit choppy in Lineage 1, so it looks
like I'm stuck with Virtual PC until I get a faster computer and emulator
upgrade.  I'll use this VM for other things though, since I wasted a key
validation on it.
** Work-related topics
*** CANCELED RapidMiner
    - State "CANCELED"   [2012-02-15 Wed 05:18]
    - State "STARTED"    [2011-05-09 Mon 11:36]
Installed RapidMiner 5.1.006.  Added Weka and R extensions.

- Install on GNU/Linux.  Added a script to ~/bin to start it with =java -jar
- Read Wikipedia article on it.
- Read RapidMiner Manual.

Going to try to get away without learning this.  Seems like a boring end-user
application.  My new project does use this though, so I may have to reopen it
later.  Right now, it's low priority enough to be off the list.
*** CANCELED Tableau
    - State "CANCELED"   [2012-04-04 Wed 11:56]
    - State "STARTED"    [2011-05-24 Tue 06:20]
Tableau is an application that allows advanced visualization of datasets from
various sources (databases, cubes, spreadsheets, etc.).

Being an end-user application, I want to know as little of this as possible.
Just skimming the manual and using it for a day should be enough to gain
minimal familiarity.  A lot of functionality is very well hidden here though,
so it'll take awhile to find it all.  Calling this done since I know enough to
be work-productive in it, which is all I really needed.

Note: 7.0 (the next version) will include the ability to append new information
to existing Tableau datasets -- a useful feature for work application of it.

Suspending effort.
*** CANCELED Apache Mahout
    - State "CANCELED"   [2012-04-04 Wed 11:56]
    - State "STARTED"    [2011-05-20 Fri 11:31]
Mahout is a library of algorithms for classification, clustering, regression,
reduction, and other machine learning tasks, built on top of Hadoop.

- Read various documentation on: http://mahout.apache.org/
- Read all the algorithm descriptions here:

- Four main use cases: Recommendation mining, clustering, classification, and
  frequent itemset mining.
- Grabbed the binary distribution for 0.4.  =mahout= with no arguments lists
  valid program names.  =mahout <program_name>= lists program name arguments.

Did some work on this, but suspending further effort as it's no longer needed.
*** CANCELED Gephi
    - State "CANCELED"   [2012-04-04 Wed 11:57]
*** CANCELED NSA Cloudbase
    - State "CANCELED"   [2012-04-04 Wed 11:57]
Replacing this with Accumulo.  Ghost Machine stacks will still have Cloudbase
in them for now though, so I may still encounter it occasionally.
*** CANCELED Apache Pig
    - State "CANCELED"   [2012-04-04 Wed 11:58]
    - State "CANCELED"   [2012-04-04 Wed 11:58]
Unit test framework for MapReduce and JUnit.
    - State "CANCELED"   [2012-04-04 Wed 11:58]
Hopefully will be doing less geospatial stuff in the future.
*** CANCELED Apache Derby
    - State "CANCELED"   [2012-04-04 Wed 11:59]
A relational database in use with Hive as its metastore.  Not using Hive
anymore, so don't need it.
    - State "CANCELED"   [2012-04-04 Wed 12:01]
Was going to give this a quick glance, but I definitely don't need a relational
geospatial database now.
*** CANCELED Apache Hama
    - State "CANCELED"   [2012-04-04 Wed 12:02]
*** CANCELED GoldenOrb
    - State "CANCELED"   [2012-04-04 Wed 12:02]
The company working on this folded.  Apparently Apache Giraph is filling this
void now.
*** CANCELED Storm
    - State "CANCELED"   [2012-04-30 Mon 10:17]
The plan:
- Find and read coworker's Storm slides.
- Watch this: http://www.infoq.com/presentations/Storm
- Read all links here: https://github.com/nathanmarz/storm/wiki

Check out ancillary Storm functionality:
- Storm Multilang:
- Storm Multilang Wiki:
- Use of ShellBolt:
- Topology using ShellBolt:

Switched projects again, so I don't need this for now.  Might end up using it
later if any real-time ingestion is necessary.  I really hope not though.
*** DONE home range
    - State "DONE"       [2012-04-30 Mon 10:17]
    - State "STARTED"    [2012-04-18 Wed 09:17]
Came up with a simple solution to this that makes sense in a non-biology
studies context.  Committed to practice/python/home_range.py (though I didn't
upload the geohash dependency, since I didn't write that).
*** CANCELED Apache Accumulo
    - State "CANCELED"   [2012-05-15 Tue 10:11]
The plan:
- Read Google's original Bigtable paper.
- Read the intro to HBase: The Definitive Guide and maybe browse some of the
  other chapters.
- Look around on the Accumulo site and find some docs.
- Install Accumulo on a clean system with dependencies.
- Try using it a bit and write a program to extract the data.

Switched projects again, so I don't need this for now.  From what I learned by
osmosis, I'm quite glad about not having to work with this.
*** CANCELED Apache Thrift
    - State "CANCELED"   [2012-05-15 Tue 10:12]
*** CANCELED Apache Kafka
    - State "CANCELED"   [2012-05-15 Tue 10:12]

Ugh, messaging frameworks.  I'm quite glad I dodged this one.
*** CANCELED design patterns
    - State "CANCELED"   [2012-05-15 Tue 10:13]
Know most of these, but there's room for further mastery.  Ideally, I'd not
have to deal with patterns, but knowing them makes work life easier.  Having
sold my Gang of Four book, I'm reducing the scope of this task.

Do the following:
- Read through all patterns on the list on Wikipedia.
- Design patterns are actually workarounds for limitations imposed by OOP.
  Review this list of functional/dynamic idioms that patterns were created to
  emulate: http://norvig.com/design-patterns/ppframe.htm
- Maybe write a few more examples in Java in ~/repo/java/design_patterns.
  Already did singleton, strategy, and visitor earlier.

With the light at the end of the tunnel visible, I'm going to predict I'll be
able to make it through my career without having to master these.  Being
primarily a functional programmer now, I haven't encountered one of these in
years anyway.
*** CANCELED Scala
    - State "CANCELED"   [2012-05-18 Fri 15:49]
    - State "STARTED"    [2010-06-04 Fri 15:26]
Trying to use Scala at the current job, so going to try to learn it without
buying any hardcopy books.

Emacs setup:
- This just involves including some Scala setup in init.  The scala-mode is
  provided by the official Scala distribution.  Note that this isn't included
  in (at least the current) Arch Linux package.  See arch_setup.org for
- Also added sbt, but I'm not sure this actually does anything yet.

Scala IDE for Eclipse setup:
- Add update site: http://download.scala-ide.org/update-current
- Install Scala Eclipse Plugin.

Remaining subtasks:
- Look into getting flymake working with Scala.
- Find an e-book on the subject and read it.
- Write a couple practice apps.

Canceling this as I like Clojure more and don't have the bandwidth for both of
*** CANCELED Scalaz
    - State "CANCELED"   [2012-05-18 Fri 15:51]
Video intro at: http://vimeo.com/10482466

Canceling this along with Scala in general.
*** CANCELED Functional Java
    - State "CANCELED"   [2012-05-18 Fri 16:15]
Glanced at the examples and I'm not that impressed.  Plus, I'm hoping to avoid
Java programming for the rest of my career anyway.
*** DONE unit test writing
    - State "DONE"       [2012-05-26 Sat 01:05]
    - State "STARTED"    [2011-03-21 Mon 03:04]
Know this, but need to practice using JUnit some and integrating it with Maven
projects.  Maybe check out QuickCheck (and possibly HUnit) on the Haskell side,
nose for Python, and either CLUnit or lisp-unit for Lisp.  Since
non-Java/Python/Scala unit tests aren't work-related, defer those to a separate

Python: Using nose.  May use doctest as well later.

I've written enough tests by now that I'm pretty sure I know what I'm doing.
I'm not crazy about testing anything anymore anyway and I'm certainly against
the TDD methodology.
*** CANCELED Java debugging
    - State "CANCELED"   [2012-05-26 Sat 01:06]
    - State "STARTED"    [2011-03-21 Mon 02:30]
Need to research Java debugging tools some.

The JDK now includes jstat and jmap utilities which are only really useful to
see how the memory allocation is doing for a process.  Using jmap -heap can be
a clue as to whether you need to increase the VM's memory maximum.

Also check out Java profiling.

I started this quite a while ago, but forgot to flag it started here.

Eclipse debugging:
- I generally use this for most debug tasks, which requires setting up a
  project debug profile.  After that, it's a standard IDE debugging experience,
  minus the weirdness of the Display view.
- TODO: Add note here on how to debug webapps in Tomcat.

Don't need this anymore.
*** DONE google-refine
    - State "DONE"       [2012-07-19 Thu 08:35]
    - State "STARTED"    [2012-07-19 Thu 10:35]
Might be able to skip this.


Set this up on a Linux VM.  Probably won't use it though.  There really isn't
much to it.
*** DONE Rhipe
    - State "DONE"       [2012-07-19 Thu 10:38]
    - State "STARTED"    [2012-07-19 Thu 10:36]
A method for distributing MapReduce jobs directly from within R.

After much pain, I finally got this setup on Linux along with RHadoop (which
kinda does the same thing).  While I'm sure they work for the creators, they're
both too flakey to use for real production code.
*** DONE cascalog-koans
    - State "DONE"       [2012-08-27 Mon 21:14]
    - State "STARTED"    [2012-08-27 Mon 21:07]
Clone this and take a look at them.  Might learn something useful.


This has a cool sh snippet that I might use:
for f in lib/*.jar lib/dev/*.jar resources/; do
java -cp "$CLASSPATH" clojure.main -i script/run.clj

This doesn't actually work or do anything.  Looks abandoned.
*** DONE redo resume
    - State "DONE"       [2012-08-27 Mon 20:31]
    - State "STARTED"    [2012-08-27 Mon 19:20]
Maybe tweak the LaTeX template a little, but I think it's pretty good now.  I
probably won't ever need it anyway, but I'd still like it to be up to date.

Might wanna think more about the professional objective.  Sounds a bit hammy
*** DONE Cascalog
    - State "DONE"       [2012-08-28 Tue 00:19]
    - State "STARTED"    [2012-06-22 Fri 11:19]
Cascalog promises to be a higher abstraction level means of managing all things
Hadoop-related.  This includes workflow management that would normally require
something like Cascading (which Cascalog also builds upon).

If this lives up to its promises, it could be pretty awesome.  It's hard to
tell without actually trying to use it first though.   The potential is worth
looking into, as the alternative will be a mess of a cloud stack with analytic
workflow components in at least half a dozen languages.


The plan:
- Watch the LinkedIn Cascalog presentation video for a quick overview.
- Get at least competent with Clojure.
- Run through the included examples.
- Set up some tests using HDFS.
- Determine whether this can be scaled up to suit project needs.
- If so, write a minimal demonstration and/or one that includes something with
  an outer join and post-join filter (these are horribly inefficient in Hive).

Cascalog's REPL is too slow on my home workstation (it's so bad, the servers
time out before they can connect), so I need to do this on VMs on my worktop or
beefbox.  Setup is now complete.

Update: The timeouts are fixable by setting :repl-options {:timeout 60000}.  I
now have working Cascalog analytics as well, and these are pretty nice.  The
environment setup is a total pain, but part of that was getting used to
Clojure, though it was mostly the result of inadequate documentation.

Based on my success criteria for this task, I consider it done.  There's still
a lot of more advanced features I'm not particularly familiar with here, but
hopefully that will come in time.  If I'm having problems later, I'll create a
plan for more comprehensive learning (and that might not be a bad idea in
general, if this ends up being a integral part of the dev stack like I hope).
*** CANCELED install Debian on old worktop
    - State "CANCELED"   [2012-09-17 Mon 16:58]
    - State "STARTED"    [2012-07-13 Fri 11:08]
Since I have two work laptops, I'll put Debian stable on metal on the other
one.  It has a Dell Wireless 1510 Wireless-N WLAN Mini-Card (this may be a
BCM4322) and an NVidia Quadro FX 770M video adapter.

Maybe look at this: http://wiki.debian.org/bcm43xx

Made some progress on this, but getting all the hardware to work was a pain so
I'm just returning it.  The fans and screen on this laptop are all screwed up
from Afghanistan anyway.
*** CANCELED Gradle
    - State "CANCELED"   [2012-09-23 Sun 14:12]
Might have to learn Groovy for this. :\

Skipping.  There's only one Gradle fanboi on the team and he's a chronic n00b.
Plus, it only makes sense for Java projects.
*** CANCELED Apache Camel
    - State "CANCELED"   [2012-09-24 Mon 02:51]
Looks like a boring Java library.  Hoping to bypass this.

Don't need this, thankfully.
** Games to play
*** DONE Widelands
    - State "DONE"       [2012-02-15 Wed 09:21]
    - State "STARTED"    [2011-10-13 Thu 23:21]
Pretty good, though a bit generic.  Not controlling individual units in a game
like this is definitely a better system than the AoE model.

Played this for a few nights, but got bored.  There's just nothing compelling
enough about this game to make me keep playing it, especially with so many
obviously better ones out there.
*** CANCELED Revenge of the Titans
    - State "CANCELED"   [2012-03-21 Wed 09:08]
An indie tower defense game.  Available on Steam.  Not entirely sure I want to
play this one though, with creeps attacking towers and so much more mad

Decided not to get this after watching some gameplay videos.
*** DONE Dungeon Siege
    - State "DONE"       [2012-03-22 Thu 06:08]
    - State "STARTED"    [2011-12-11 Sun 10:16]
Got a CD of this and the Legends of Aranna expansion.

To get this to work in Windows 7 x64, first run the DSVideoConfig.exe utility
and set the video card to whatever card is present.  Don't use hardware TnL.

Now I remember why I quit this almost right away last time.  This game is too
simple and generally isn't fun.  Then since this won't even run on Win2k3r2
x64, I think I'll give up on it.
*** CANCELED Syndicate
    - State "CANCELED"   [2012-03-25 Sun 06:37]
A reboot of the Syndicate series.  Coming out in 2012.  This is just a reminder
to see what it turns out to be, but I'm not too crazy about it being remade
into an FPS, so the expectations are low and it's likely I'll pass on it.

Don't wanna play this.  Syndicate should be RTT.
*** DONE Mass Effect 1
    - State "DONE"       [2012-04-28 Sat 21:31]
    - State "STARTED"    [2012-03-22 Thu 12:28]
Surprisingly good.  A well-developed mythos and a solid hard scifi effort.
However, I do have a few complaints:
- The world is too non-interactive.
- Some minor consolitis, mostly in the UI and game world.
- The Frogger-style mini-game isn't any fun to play 1000s of times.  Having to
  play it to examine artifacts and such doesn't even make sense.
- Has fanservice.
- A more realistic way for weapon damage to work would be only being able to
  take a few shots at most once shields were down.  As it is now, shields can
  go down and characters can take dozens of relativistic speed slugs.
*** DONE FO:NV: Dead Money
    - State "DONE"       [2012-06-02 Sat 18:31]
    - State "STARTED"    [2012-06-01 Fri 18:20]
Since I finished all of the in-game content, and generally enjoyed most of it,
I thought I'd try the first of the FO:NV expansion packs.

This was about average for Fallout content and not quite worth $10.

- Being cut off from the rest of the game world kinda sucks, but I guess it's
  necessary for the story as it is.  I'd rather FO:NV's main overland area be
  expanded instead, since it's too small.
- Hardcore mode's HP depletion over time was just annoying instead of
  challenging.  I'd rather the cloud stuff be removed altogether and just have
  the difficulty raised in some less arbitrary way.
- The plot misses the mark a little on immersion.  It's close, but not quite
  good enough to really get into.
- The new enemies have no variety at all.  In fact, there's really only one
  enemy you fight the whole time, over and over.
- Content is completely linear.

Also added the Louder Guns mod (the pleasantly quiet gunshots always annoyed
me).  Unfortunately, it doesn't work with new DLC guns that have different
sound effects: http://newvegas.nexusmods.com/mods/35098

FO:NV is the last Bethesda or Bioware game I'll ever buy right off the presses.
The DLC milking is definitely out of control when they can cost more than the
original game (often a lot more).  If I had just waited 2 years, I could have
bought it all combined for a fair price.  I'd be okay with it if DLC content
was superior to original game, but it tends to be significantly inferior.
*** DONE Sacred Gold
    - State "DONE"       [2012-06-04 Mon 09:38]
    - State "STARTED"    [2012-02-16 Thu 00:52]
Includes the original and the expansion pack.  Pretty mindless, but I had work
order a copy for me to play occasionally while in Afghanistan, since I figured
it would run on my work laptop.

After playing this quite a bit, it got painfully boring.  I played the original
back in 2004 and quit after a few days.  Now I remember why.

- My main complaint is the drop system that randomizes loot in the Diablo
  model.  This works in Diablo and Rogue-likes, but not here, probably due to
  the lack of attention given to making it interesting.  Since farming up items
  is the main activity in this game, it has to get this right.
- Due to the drop system, there's no real motivation to explore far off the
  main quest path or solve side quests.  If you need more lever pulls to
  upgrade gear, you might as well just kill the most accessible named trash
- Side quest areas are all generic and boring.
- Serious performance issues are present, making the game nearly unplayable on
  my laptop.  It almost runs fine on my desktop, but I have to keep it in
  windowed mode since alt-tab doesn't work.
- Shops are useless except to unload loot, though there's really no reason even
  to collect stuff to sell since you don't need money for anything.
- Has the annoying leveled XP system that most modern MMORPGs have where XP is
  scaled based upon the difference between the player character and the mob.
- Boring, too non-interactive of a world.  Staring at dead backgrounds looking
  for secret hiding places isn't fun either.

I'd have a hard time listing what this game does well.  I guess the pixel art
is decent enough.  This is just a really poorly executed knock-off of D2.
There's no good reason to play this instead of the real thing.
*** DONE Defense Grid: You Monster
    - State "DONE"       [2012-06-04 Mon 22:22]
    - State "STARTED"    [2012-03-21 Wed 09:17]
More of the same, with a few extra features.

Worth the $5.  This includes some really unique maps that force you to solve
problems in completely new ways.
*** DONE Mass Effect 2
    - State "DONE"       [2012-06-16 Sat 01:44]
    - State "STARTED"    [2012-05-02 Wed 11:28]
Better graphics and more polish.  Has another good (though inferior) storyline,
but so many of the RPG elements have been removed or simplified that it's hard
for me to even consider it an RPG, except in the most superficial way.

- Not as open of a game world as ME1.
- Even more fanservice.
- Even more consolitis.
- n00bification of several game elements like inventory management,
  weapons/armor, and character skills.
- Combat encounters are too structured in a way that results in less overall
  variety.  You can always tell one is coming up when you see a certain
  environment layout and each one plays out very much the same.
- Mission areas are nearly completely linear.
- Mini-games are better, but still not fun.  Would rather such things just be
  based on leveled skills and have the game itself be more interesting.
- Crouching was removed.  Character movement in general feels sluggish (FO:NV
  is so much nicer).
- No map in most places, though I guess you don't need one with such linearity.
- Includes QTE (and even considers it a feature).
- Your character meets up with just about everyone he ever left alive in ME1
  despite the size and population of the universe.

While I had plenty of complaints about ME1, I still liked the game.  I'm pretty
sure I actively dislike ME2 though.  I really want to like it for its good
points, but the actual game playing experience is overall an unpleasant one.

Won't be playing ME3, since it's more of the same.  Skimmed through an LP of it
just to get the story instead.  The story has some well known problems and some
really deep flaws/inconsistencies, but is still pretty good in my opinion.
However, unlike most complaints, my biggest gripe with the ending was that the
revelation isn't one that forces the player to rethink something big and is a
missed opportunity.  Lastly, I'd comment that this kind of result is inevitable
when you write a huge story as you go.  At least some upfront outlining is
essential to make sure everything fits.  This is why most JRPGs and televised
series are just a random walk through whatever.
*** DONE America's Army 3
    - State "DONE"       [2012-07-02 Mon 01:10]
    - State "STARTED"    [2012-07-01 Mon 23:43]
The latest AA game.  I had a lot of fun playing AA:O years ago, and wanted to
check out the new version.

This new version is pretty much a failure and most of the bad press it got was
well deserved.  The game mechanics are all clunky and it's missing all of the
cool stuff from the old game (like handguns and jump-tossing grenades).
Basically, I have no desire to play this game.  Apparently AA 2.5 still exists,
so I'm switching to that and forgetting about 3.
*** DONE America's Army 2.5
    - State "DONE"       [2012-07-03 Tue 06:02]
    - State "STARTED"    [2012-07-02 Mon 02:27]
The old version of the AA game.  3 was kind of a let down, so I'll give the old
client a try again.

- Download AA 2.5 Assist program from http://aao25.com/ and stick it somewhere.
- Run the installer.
- Setup an account on http://battletracker.com/
- Set the AA 2 name in the Tracker Settings in My Profile.

This is pretty much the state of the game the last time I played it.  I wish
more people were playing it though, so I could just hang out on Bridge Crossing
defense for hours.  This isn't the fault of the game or anything, but the
average skill level is very advanced, so there's no hordes of n00bs to kill.
Played this for awhile, but I think my tastes in milsims has changed such that
only something at least as realistic as ARMA works for me.
*** DONE DayZ
    - State "DONE"       [2012-07-08 Sun 03:58]
    - State "STARTED"    [2012-07-03 Tue 06:02]
An ARMA 2 semi-persistent world zombie mod.

- Install ARMA 2: Combined Operations.  I bought it on Steam.
- Get Six Updater: http://www.six-updater.net/p/download.html
- Install Six Updater and run Six Launcher.  Find DayZ themed program in the
  server browser and click the Update button.
- Start up both ARMA 2 and ARMA 2: OA from Steam to get all updates.
- Start up ARMA 2: OA and create a new profile (make sure it's selected) and
  change settings.
- Turn off all anti-aliasing.  On my Radeon, this causes all the graphics to be
  messed up.
- Set video memory to default.
- To prevent random temporary freezing, close Six Updater after launching.

DayZ SP:
- Note that will break the SP mod.  I've backed up a copy of 1.7.3 for
  this reason and a working SP .pbo.  Launch with the beta enabled and enable
  @DayZ in the expansions menu and restart.  Cheat scripts seem to be
  non-functional and restoring saves only partially works, so each game has to
  be a single play through.

A great concept, but a horribly buggy and has some flaws.  This game was fun
for awhile, but the perpetual death match aspect of the game is really all
there is to it, and that gets old eventually.  It's quite easy to get awesome
gear and just go live in the woods, but that's even more boring.  I'll come
back to the game later if updates fix some of the problems with it.

Single player is pretty much no challenge and lacks the main allure of the game
(the unpredictable nature of other players), but is okay for some item
collecting and trying out stuff.  Another option are private hives like
DreamHive (see http://www.dayzhive.com) for connection info.
*** DONE ARMA 2 missions
    - State "DONE"       [2012-07-11 Wed 10:19]
    - State "STARTED"    [2012-07-09 Mon 10:28]
Various promising looking mods.
- Chernarus Apocalypse: A COOP mod for ARMA 2.  This is supposed to be for 6-10
  players, but I wanted to try it solo.  However, it's pretty close to
  impossible, but it can be a little fun to see how far you can get.
- Dawn of the Apocalypse: The single player prologue to the above.  Not bad,
  but too short and the spawn is too dense
- Ghosts of Chernarus: Not a big fan of racing against the clock in this game.
  I want my missions to take hours, if possible.

None of these were really all that playable.  I'll maybe try more mods later,
but I'll finish the included content first.  I've mainly just been making my
own missions so I can play the way want to, however this does take away any
surprise factor as by the time it's complete, I've already tested it several
times along the way.

Update: After heavily editing Chernarus Apocalypse, it can be pretty playable
solo.  However, it's still not that much fun.
*** DONE Bunny Invasion
    - State "DONE"       [2012-07-12 Thu 02:18]
    - State "STARTED"    [2012-07-11 Wed 21:49]
A Flash game, but this works okay for barricade games (sometimes).

Bunny Invasion: Easter Special: Pretty good and reasonably well balanced.
Bunny Invasion 2: Not as good as the first.

Not quite as good as Last Stand, but still worth playing through once.  Line of
sight is always implemented wrong in the games, for some reason.  Guns are
completely unrealistic and have no relation to their real world counterparts.
*** DONE World of Tanks
    - State "DONE"       [2012-07-16 Mon 19:53]
    - State "STARTED"    [2012-07-15 Sun 14:42]
A F2P tank "sim" MMO.  Has tons of actual and prototype tanks (mostly)
realistically modeled for the first time in any game.

Okay for what it is, but not worth spending money on for a lot of good reasons:
- Too arcade-like for my tastes.
- The main problem is with the microtransaction model that I'd rather not
  participate in.  I'd rather have just bought the game for a few dollars and
  skipped all of the treadmilling and other artificial paywalls.
- Would be more fun if the distances were much greater and accuracy improved.
  Then it wouldn't need the weird mechanic of enemy tanks being invisible until
- Getting placed in a random battle where you're completely outranked isn't any
  fun since you have no chance of penetrating the hulls of most of the enemy.
  I've been in matches where I'm literally the only tier 1 tank.
- Has massive amounts of grinding and weird leveling mechanics, like crew
  losing tons of XP when switching vehicles.

I cannot fathom why anyone would spend actual money on this (or waste the
massive amount of time required for grinding), but apparently a lot of people
do just that.

Update: I kept this around to play very occasionally, sticking to a
Leichtraktor through 2 crew experience levels.  From what I can tell, there's
no real point in trying to get a better tank.  The game doesn't actually get
any better than this -- just more expensive.
*** CANCELED Cyber Dungeon Quest
    - State "CANCELED"   [2012-07-17 Tue 21:36]
A game in Clojure.


Doesn't seem to want to load in Conkeror (even on Windows).  Since it's
probably not that great anyway, I'll skip this.
*** DONE War Inc. Battlezone
    - State "DONE"       [2012-07-21 Sat 19:50]
    - State "STARTED"    [2012-07-21 Sat 19:11]
A F2P shooter.  Available on Steam.

Standard FPS schlock.  Not really my style and full of annoying paywalls, so
quitting after an hour.
*** DONE DayZ (Lingor Island)
    - State "DONE"       [2012-08-03 Fri 11:11]
    - State "STARTED"    [2012-08-02 Thu 09:07]
Though I'm thoroughly bored of normal DayZ, there's a new variant of it up with
a completely different map.  This is probably enough to make things interesting
again for awhile.

Setup (this will probably be out of date very soon):
- Grab this file: http://dayzlingor.tk/files/dayz_lingor/@dayz_lingor_v0251.7z
- Extract the @dayz_lingor folder to the OA root folder.
- Download the Lingor Island map from here:
- Put the @lingor folder from that in the OA root folder.
- Grab the map patch from here:
- Put that file in @lingor/addons.
- Manually (re)install the most recent beta in order to get a copy of the link
  to launch OA with the Beta patch enabled.
- Got into Expansions and enable all Lingor Island content.  Restart.
- Filter by "lingor" and at least a few servers should come up.  Join one of
- To play normal DayZ again, go back into Expansions and re-disable all the
  same content.

The main good thing about this mod variant is that all buildings can be
entered.  However, there are some serious downsides to it too:
- The map is much smaller.  Survivor contact is way up as a result.
- Several additional bugs and more of an overall unpolished feel.
- There's currently only a few servers, so getting on is often impossible.
- If you want to loot an area no one is in, you have to wait several minutes
  for the spawns to initialize.
- The jungle environment is probably great for other mods, but feels a little
  wrong for DayZ.  Chernarus is a far more convincing setting.
- Military-grade equipment is far too common.  I'd actually prefer DayZ weapons
  were 90% civilian, with military stuff being insanely rare and highly
  contested for.  More civilian weapons would be needed first though.

Played this for awhile, but got tired of it.  Will possibly check back later if
a lot more progress occurs on this mod variant.
*** DONE Millennium Remake
    - State "DONE"       [2012-08-04 Sat 20:57]
    - State "STARTED"    [2012-07-30 Mon 01:06]
This is a remake of the 1989 game Millennium 2.2.  I was thinking about playing
the original, but this version appears to be feature-complete and obviously
looks and sounds way better.  This also includes some nice features that remove
some serious tedium present in the original.


This remake still has a couple problems:
- The computer opponent cheats in order to artificially keep your average ship
  count per colony below 30.
- Some sloppy programming in a couple places.
- Remote colony management is a bit clunky.
- Transporting stuff around kinda sucks.
- Battles can't be skipped.  Normally I'd want to watch them, but they're
  pretty boring here.

This is an okay game, but needs more balancing and strategy to be truly
*** DONE Immortal Defense
    - State "DONE"       [2012-08-07 Tue 11:51]
    - State "STARTED"    [2009-10-21 Wed 20:41]
Conceptually excellent tower defense game that includes active participation on
the player's part.  Adds some story elements not typically seen in this genre.

- Map sizes too small and/or game a bit too fast.  Not enough time for
  strategic pondering.
- Would prefer just to place towers rather than engage enemy manually.
- Needs to support higher resolutions.
- Whatever sound lib is being used here errors when initialized.
- The final infinite wave level at the end of each chapter goes way too fast.
  Even with infinite resources, it's impossible to get more than a couple
  minutes into these.

Played quite a bit of this.  I always intended to finish it, but I guess I lost
momentum, since I haven't touched it in years.  I'll close it to clean up
what's probably an abandoned effort.  I think the imprecise nature of the
towers makes me not actually drawn to it, despite its many good points.
*** DONE Photopia
    - State "DONE"       [2012-08-08 Wed 04:37]
    - State "STARTED"    [2012-08-07 Tue 14:08]
Supposedly a good story-based IF.


Worth playing (or rather, reading).  One of the better story IF games and uses
the medium pretty well for that purpose.
*** DONE The Weapon
    - State "DONE"       [2012-08-09 Thu 23:25]
    - State "STARTED"    [2012-08-09 Thu 21:04]
Looks like an interesting one room scifi IF game.  The virtual feelies in this
convinced me to give it a try.


Pretty good, with clever puzzles.  It's short of great though, mostly due to
its length, lack of really excellent writing, and less than completely
satisfying ending.
*** CANCELED Red Orchestra 2
    - State "CANCELED"   [2012-08-10 Fri 22:42]
An FPS, but seems like it might be good enough.

Probably a fine game, but I've got my ultra-realism fix with ARMA 2, which
looks way more realistic.
*** DONE Violet
    - State "DONE"       [2012-08-11 Sat 03:40]
    - State "STARTED"    [2012-08-11 Sat 01:22]
A supposedly unique IF game.


Though not my normal subject matter, this is well written enough and original
enough of a concept to be quite good in my opinion.
*** DONE 9:05
    - State "DONE"       [2012-08-12 Sun 02:52]
Supposedly a super-unique and replayable (although short) IF game.


Has one really good concept, but that's all it has.
*** DONE Death Off the Cuff
    - State "DONE"       [2012-08-12 Sun 14:35]
    - State "STARTED"    [2012-08-12 Sun 13:05]
An interesting concept.  You're a detective that's gathered everyone for the
big reveal, except you don't know who the culprit actually is.


A well done original concept.
*** DONE Shade
    - State "DONE"       [2012-08-13 Mon 11:46]
    - State "STARTED"    [2012-08-12 Sun 20:49]
Another supposedly creative one-room IF.


Not really that great.  Too linear, nonsensical, and the mystery revelation is
pretty obvious within the first few moves.
*** DONE Ascii Sector
    - State "DONE"       [2012-08-14 Tue 14:47]
    - State "STARTED"    [2010-11-03 Wed 21:47]
A text-based Privateer-clone.  Using the binary Linux port, which to my
surprise, actually worked.  http://www.asciisector.net/

- It's impossible to tell NPCs apart in port, since they're all just dots.  A
  smarter system would've been to use special chars for all objects and letters
  for the NPCs with a letter being their first name, maybe with colors used as
  job type or something.
- Released binary-only for no good reason, with no FreeBSD port.  Why anyone
  feels the need to closed-source a text game is beyond me.
- "ASCII" is an acronym and as such, it should be in all capital letters.

Didn't really play this too much.  It's an okay game, I guess, but missing
something that would make it particularly compelling.  Will keep it on
netbooks for emergency boredom alleviation.
    - State "DONE"       [2012-08-18 Sat 20:48]
    - State "STARTED"    [2012-07-04 Wed 10:06]
Since I picked this up to play DayZ, I might as well play this some.  I sorta
liked Operation Flashpoint, but got frustrated with flying helicopters, put it
aside with the intention of playing it more later, and then never got around to
it again.

- Rebind flight controls like this: http://www.youtube.com/watch?v=mfciVb_rYHw
  I apparently am unable to not suck at flying helicopters in this game, but
  this control scheme at least makes it possible to not crash (usually with
  multiple reloads).

This is definitely what I've been looking for in a milsim.  I'm actually quite
glad I got this, and can ignore all other FPSes for the foreseeable future as
none can compare to ARMA's realism.

Giving up on the Harvest Red campaign on the final mission.  Two tries of many
hours into it both resulted in bugged states.  It's totally possible to avoid
these issues, but not worth all the retrying for me.  I'm also skipping EW,
since I don't like flying helicopters.  Finished all stock SP missions, minus
Freedom Fighters (which is too imbalanced to be fun, IMO).  This concludes the
base ARMA 2 game for me.  Though a sometimes buggy game, this was definitely
worth playing.
*** DONE ARMA 2: Operation Arrowhead
    - State "DONE"       [2012-08-19 Sun 23:08]
    - State "STARTED"    [2012-08-18 Sat 01:52]
The first expansion to ARMA 2.  The missions here are supposedly superior in
quality to the base game campaign.

This was a better campaign than the original.  I might pick up the Private
Military Company expansion too, since that looks the most promising by far.
I'll wait awhile though, since it's currently $10.  Then if I'm really dying
for more content, I could also pick up the British Armed Forces expansion.
*** DONE ARMA 2 mods
    - State "DONE"       [2012-08-21 Tue 01:02]
    - State "STARTED"    [2012-08-20 Mon 14:53]
Though like any moddable game, most mods for this one are crap, but I've been
following ARMA 2 long enough now to notice some that are universally highly
regarded and thus probably worth trying.

- ACE: Mega-realism update and tons of extra stuff.  Run the included
  "aceclippi" application while changing settings.  Be sure to at least remap
  the interaction menu buttons.  Follow these instructions (which includes some
  of the following, plus others):
- ACRE: Improved radio.  This is required if I play online (and I'd need a mic
  too).  Probably will skip this though, since I'm not really into MP.
- JSRS: Improved sound.
- ASR AI: Maybe use this to reduce the AI's insane ability to source
  incoming fire.  Installed this from Six Updater as well.

Modding existing missions: There's some missions I think could be good if
modified some.  I don't want to go as far as learning how to create actual mods
though.  See this site for pbo editing tools:
*** DONE Anchorhead
    - State "DONE"       [2012-08-27 Mon 02:04]
    - State "STARTED"    [2012-08-09 Thu 23:40]
    - State "STARTED"    [2012-08-09 Thu 08:49]
Another Lovecraftian IF game.


One of the best IF games I've ever played, though not perfect.  Also as some
bugs, but these seem not to be game-breaking.
    - State "CANCELED"   [2012-08-29 Wed 00:43]
If/when I finish all the expansion packs, try the game with these mods if I
ever want to do another full play-through.  There's a lot of potentially good
mods out there, but given how buggy the game is, it's probably best to keep
them to an absolute minimum.

A World of Pain: http://newvegas.nexusmods.com/mods/38719
NVInteriors: http://newvegas.nexusmods.com/mods/43534
DFB - Random Encounters: http://newvegas.nexusmods.com/mods/42793
Droppable Quest Items: http://newvegas.nexusmods.com/mods/35639

I may also want to find one that vastly ups the damage of firearms and reduces
ammo availability accordingly.  Having played the game a lot, I'm pretty sure
this would work and make guns more realistic.

Skipping this.  If I want a realistic combat sim, I'll stick with ARMA games.
I'll finish the last expansion pack I bought and call it quits here.
*** DONE more ARMA 2 missions
    - State "DONE"       [2012-09-10 Mon 11:03]
    - State "STARTED"    [2012-08-22 Wed 16:21]
Some promising looking missions/campaigns.

- Escape Chernarus: Turn off any AI mods before playing this.  Trying this just
  by myself.  This is a really good mission to play solo.  Finally beat it
  after many tries, though it wouldn't have taken as many had I forgot to lock
  my server and some n00b showed up and killed me.  Always lock the server.
- The Forgotten Few (campaign): A Chernarus multi-part SP mission.
- Martyrdom 2: Requires Fallujah map.  Install this from Six Updater.  Seems
  nice, but doesn't work properly with ASR AI or something, at least for me.
- Team Shadow (campaign): A sniper campaign.  Looks good, but didn't get around
  to trying it.
- Dynamic Zombie Sandbox: Best ARMA 2 zombie so far.  There's little reason to
  play the others with this available.  I do, however, wish it had DayZ's blood
  system and item collection.  It also needs more stuff to do.

I've almost been defaulting to editing missions now, since there's always some
aspect of them I find unpleasant enough to be worth the effort.

I'm getting a bit bored with ARMA 2, so I'll shelve it until I buy the PMC
*** DONE Nexus: The Jupiter Incident
    - State "DONE"       [2012-09-10 Mon 11:16]
    - State "STARTED"    [2012-05-15 Tue 08:46]
Gave up last time during this one mission I was having problems with (Titan),
but that was 8 years ago.  The style of space combat here is really unique and
quite well thought out, so I'd like to give it another shot.

Pretty easily beat the Titan mission after a couple tries.  It turns out I was
just getting unlucky before with computer-controlled ship positioning and siege
laser hits.

A few complaints:
- The control scheme could have used a bit more thought.  I'm still not always
  sure what orders override what.
- Some of the lore is a bit shallow/silly (though most of it is pretty good).
- Random stuff happens outside of your control that can ruin a mission.  I
  guess this isn't too bad though, since it's realistic.
- With such a nice universe, it's kind of a shame to experience it through a
  completely linear plot.  Once the missions are done, there's very little
  reason to keep playing this.
- It's a bit difficult to experiment with different builds, since they require
  installing components over multiple missions.
- A lot of realism is included (e.g., stopping requires thrust in the opposite
  direction), but then there's oversights (e.g., continued travel in a single
  direction at a constant speed requires constant thrust).
- Items that show up as available to mount on one ship sometimes aren't on
  another ship of a different class.
- Owned ship shields are bugged in the second to last mission -- they drop when
  you issue a move command.  It's still possible to win without taking losses,
  but struggling against bugs in the final significant battle sucks.
- The second to last mission is pretty bugged (shields randomly dropping and
  getting sucked into the wormhole).  After a dozen reloads trying to work
  around them, I gave up and just watched the ending on a LP.  As the last
  mission isn't really a challenge, I didn't miss anything.

Nexus 2 is currently in development now and is slated for a Q4 2012 release.
I'll probably pick that up when/if it comes out, if it looks competently made.
*** CANCELED Alternativa
    - State "CANCELED"   [2012-11-10 Sat 14:26]
Wait until this is around $10 at most.

Watched some of an LP of this and decided I no longer want to play it.
*** DONE ARMA 2: Namalsk
    - State "DONE"       [2012-11-10 Sat 15:52]
    - State "STARTED"    [2012-11-03 Sat 23:06]
This is also a popular DayZ map, but I'm just trying out the single player

This has thoroughly terrible writing and grammar.  The cut scenes are also
crap.  However, this would be forgivable if not for the frustrating gameplay
issues, mostly involving the custom enemies.  If this was just a milsim mod and
they hadn't bothered with monsters, it would probably be very excellent.  As it
is now though, it's not really worth playing.
*** DONE The Temple of Elemental Evil
    - State "DONE"       [2012-11-23 Fri 21:37]
    - State "STARTED"    [2012-11-10 Sat 18:56]
I recall this being mostly panned by hardcore RPG addicts at the time it was
released due to being rushed to shelves, which is why I never bought it.  The
problems are now mostly addressed by the Circle of Eight 7.5.0 NC modpack,
which adds new stuff, fixes some bugs, and activates areas that weren't
accessible in the retail version.

- Has lots of bugs, from minor graphical glitches to full crashes and save
- Uses a much smaller subset of the rules system that NWN has.
- Starts off with a massive network of boring fetch quests.  This is avoidable
  by doing the modpack's Welkwood Bog instead, if you avoid a bug of it sending
  you to the wrong place.
- The radial menu system sucks, as does most of the rest of the UI.
- Would've been much more fun as a 2nd edition rules game.
- The game's difficultly (or inability to change it) forces you to powergame
  your party and stats, at least early on.  Having the option to play on
  slightly reduced difficulty and with a more challenging party build could
  have convinced me to replay it (if also not for all the bugs).
- The roll history is vague to the point that you can't tell what's going on.

- Activate new content by talking to the Hommlet smith.
- Add Craft Wonderous Item and Craft Magic Arms and Armor for both a wizard and
  cleric.  The loss of 4 feats is more than made up for with the awesome gear.
- Select all stat buff spells on level up since the scrolls don't exist.
- Always up base damage to +3 before adding bonus damage.  Then add burst
  damage before adding normal rolls of the same element.  Elemental
  enchantments max out at 4 types (3 for characters with sneak attack).
- It's lame, but it's best to follow a walkthrough if doing the Hommlet fetch
  quests.  If done in the wrong order you can get forced into getting married.
- Filling NPC party members up with level 0 scrolls is a good way to prevent
  them taking loot, though they'll still take money.  But with the level cap at
  20, it's better to just stick to 5 PC characters.

Despite the problems, this is still a good game and is almost as entertaining
as IWD2, at least with the modpack.  I left some of the new content unfinished,
but between this and NWN, I think I've had enough of the 3.5 ruleset for now.
*** DONE Project Zomboid 0.1.4c Demo
    - State "DONE"       [2012-11-23 Fri 20:30]
    - State "STARTED"    [2012-11-24 Sat 10:36]
Has a fully custom 2D isometric engine.

Has some promise, but needs a lot more stuff to do and more items.  This a long
way from being complete enough of a game for me to buy.  While the interface
leaves a little to be desired, the engine is really nice.
*** DONE Zork I
    - State "DONE"       [2012-12-05 Wed 10:23]
    - State "STARTED"    [2012-03-04 Sun 11:38]
The most famous IF game ever.  Might as well give this a try finally.

- Some of the puzzles in this game are a bit counter-intuitive.  A good IF
  puzzle should require creative and/or lateral thinking.  I guess this is
  somewhat forgivable given that it was among the first.
- Too much trial and error.  There should be clues in the text that make your
  random actions make sense.
- Includes mazes.
- The room layout doesn't lend itself well to map-making.
- Normal play can result in un-winnable states with nothing to indicate such.

Gave up trying to blind-play this once I encountered the first of two mazes, as
randomly guessing directions in those is no fun.  Just finished it with a
walkthrough to read the rest of the game text.  Will be skipping the other Zork
games since they look like they have more of the same flaws.
*** DONE L2J
    - State "DONE"       [2012-12-16 Sun 16:22]
    - State "STARTED"    [2012-12-13 Thu 22:38]
Setup an L2J server and see how far it's come since then.  I definitely won't
actually bother playing it more than just a little though.  The last time I
looked, it was playable, but just barely.

Server guide: http://l2jserver.com/wiki/Setup_Server
Client guide: http://www.westknights.com/forums/viewtopic.php?f=34&t=2208

- Upgraded Java to 1.7.  Updated JAVA_HOME and PATH.
- Upgraded Eclipse to Juno while I was at it.  Note that the JDK upgrade
  requires editing the specified JRE under "External Tools" in the drop-down
  next to the "Run" button.  This wipes out my Counterclockwise/Leiningen
  setup, but I wasn't using it anyway.
- Grabbed an unstable snapshot of L2J server and datapack, since I probably
  won't bother changing any code.
- Put database locally on Windows so as not to gunk up cellblock.
- Merged in the game client system directory changes.
- Updated hosts file to redirect to localhost.
- Respawn is way too fast.  Running this fixes that: update spawnlist set
  respawn_delay = (respawn_delay * 3);

Got the server up after some work.  There's definitely still a lot of features
missing in the emulator, but the core game seems to be there.

Complaints about Lineage 2:
- Item tiers by level + enchanting doesn't really work.  Item tiers are pretty
  dumb in the first place, IMO.
- Has leveled XP and even drops.  I've always felt this turned an otherwise
  open world into one where you progress through small parts of it that were
  worth visiting.  It also has implications for farming needed drops.
- Enchanting is a huge timesink for no good reason.
- Has all kinds of random, weird systems that make no sense and are explained
  nowhere.  Basically, it's full of the wrong kind of complexity.  I'm sure
  it'd be fine for people that've played this for years, but much of the
  mechanics of these are impenetrable for the newbie.
- Targeting and movement and are sloppy and imprecise.
- Too group-centric.  In L1, almost everything was solo-able with the right
  character, though grouping still had it's benefits.  Here, if you want to
  solo, you're simply locked out of the majority of interesting content,
  especially late game.
- There's really no original ideas in this game.  It's all been done before,
  and with less mindless grinding.

There's a lot of little things wrong with L2, but these are the big ones.
Despite the problems, it's okay for a minor MMO fix, but there are far better
options out there.
*** DONE Angband
    - State "DONE"       [2012-12-26 Wed 10:44]
    - State "STARTED"    [2012-12-24 Mon 15:27]
Played a lot of Angband back in the 1990s.  Giving it another look to see if I
want to keep playing it (or, more likely, its variants).  Installed on FreeBSD,
but tiles and multiple windows don't work there.  It's still playable, but the
other windows do make life easier, so I'm mainly using the Windows version.

This is still fun, but my main problem with it is that I'd prefer levels not be
regenerated when revisiting floors (I forgot how annoying that was).  There are
also definitely better variants now that make the experience more interesting.
I've reviewed the entire list and am thinking about checking out (in order of
currently perceived likelihood of being good) Unangband, Z+Angband, and
Hengband (seems dead now).  However, none of these seem as good as ToME.
    - State "DONE"       [2012-12-27 Thu 10:44]
    - State "STARTED"    [2012-12-17 Mon 01:25]
One of the more actively developed Angband-variants.  This has been recently
updated to a more original setting and renamed to Tales of Maj'Eyal, so I'm
playing that on Windows.  http://tome.te4.org/

This is one of the better games I've ever played.  There's some minor things
about it that could be improved, however:
- I grabbed the code for this and it looks clean enough, but the many
  unforeseen interactions beg for some more formal way of modeling game state.
  If done right, this would fix the many Lua errors, most of which seem to
  involve operations on null values.
- Some of the gimmick dungeons, like the Sandworm Lair, get old after playing
  them a zillion times.
- Stun/freeze and confusion immunity is a bit too important.  Almost every
  build has to prioritize finding items for this.  In most games, death is
  guaranteed by Darkfell due to not getting lucky on immunity drops.  The only
  recourse is then to farm up items for days in the Ruined Dungeon.
- Summoners and minion necromancers could be awesome, but are too annoying to
  play due to pathfinding and space issues.
- While enemies scale in level with you, you still mostly fight the same ones
  over and over.  Towards the end of the game, you'll be encountering level 50
  rats, wolves, and bears.  I'd rather see new monster types at higher levels.
- The level cap is hit too quickly.  I hit the cap on my winning run with still
  many plot dungeons to go.  Had I farmed the farportal, I could have easily
  hit it before ever leaving for the Far East.
- I'd prefer the game be easier but only have rougelike mode.  The game seems
  to be designed around the assumption that you will use multiple lives.

This is so far removed from Angband, it's barely a variant at all apart from
some superficial similarities.  I finally managed to beat it with a Cornac
Solipsist on easy mode.  I'll come back some time in the future and try winning
with a different class.  Development is still active, so there will be a lot
different in a couple years.
*** DONE GNU Typist
    - State "DONE"       [2012-12-28 Fri 22:20]
    - State "STARTED"    [2012-12-27 Thu 09:56]
A curses-based typing tutor.  This might improve my speed/accuracy some.

This did help some with numbers and special characters.  I noticed that I'm
faster with the Das Keyboard, but more accurate with the IBM Model M, probably
due to the difference in key pressure needed.  This was mildly entertaining for
a few hours, but I'm uninstalling it now that I finished all the lessons that I
seem worthwhile.
*** DONE ZAngband (revisited)
    - State "DONE"       [2012-12-29 Sat 17:14]
    - State "STARTED"    [2012-12-28 Fri 01:37]
Several other Angband variants are better than this, but this is ported to
FreeBSD, so I'll play it some.

The port of this is much better than when I last played and, unlike normal
Angband, runs (mostly) properly on FreeBSD.

Zangband is pretty unforgiving.  While I can consistently get a character to
around mid-level, getting the required setup to go deeper tends to be much
tougher.  In the meantime, I'll usually die farming the mobs that could
potentially drop the stuff I need (typically from one of the effects I'm trying
to get resistance to).  Add the low encumbrance, particularly of non-STR chars,
plus mobs that steal massive amounts of GP and this gets especially tiresome.
If it weren't for these things, it'd be a decent Angband variant.  I'll keep
this around as my main game on the system until I get back into Nethack, but
probably won't play it much anymore.
** Math goals
*** DONE quantitative research
    - State "DONE"       [2012-09-10 Mon 11:22]
    - State "STARTED"    [2012-09-10 Mon 11:18]
Technically work-related, but I also want to know about this for my own
benefit.  Might just get a mental outline of the subject and stop there.

Read the Wikipedia page and know enough to know I don't want to read any more.
QR is just statistics+sociology -- two fields I find pretty boring.  I need to
know statistics, but I'd rather keep learning that independently of the
sloppiness of the sociology pseudoscience.
** General life goals
*** DONE survive Afghanistan
    - State "DONE"       [2012-03-20 Tue 17:23]
    - State "STARTED"    [2011-08-21 Sun 05:52]
The plan here was to stay in Afghanistan until 2012-11-26.  I was fully aware
that it would be unlikely that this would work out as nicely for any number of
possible things that could go wrong.  As suspected, something did, and I'll
have been in country for around 204 days.  This is still plenty of time though,
as my original goal was to spend at least 6 months there.

I got what I wanted out of it, which was a large pile of money.  While the pile
could have been bigger, as planned in ideas.org, I've been raising the bar on
what I'm willing to suffer in exchange for money now, and conditions there had
gotten really, really bad.  Though I'm now technically financially independent,
I do still want to finish my targeted buffer before retiring completely, but I
intend to do that in a manner where I incur the least possible suffering for it
(time is not as much of a factor now, since I could realistically walk away
whenever I wanted to).

Events evolved after my leaving such that it became clear that I wouldn't have
been able to milk my position there for much more than I already did.  So,
there's no regrets about anything that happened as I pretty much achieved a
near optimal outcome.
*** DONE write emergency resignation letter
    - State "DONE"       [2012-06-13 Wed 09:50]
    - State "STARTED"    [2012-06-06 Wed 02:46]
It's always a good idea to have one of these handy.  That way if your employer
insists you do something you'd rather not, you just pull this out and the
problem is solved.  In my case, I probably don't want another job and could
just say "I quit", but there's no sense in limiting options needlessly.
Besides, I'm pretty much beyond caring what impressions I leave on passing
scenery, like former coworkers.

Wrote a letter in LaTeX (which makes letter markup pretty painless) and waited
a few days and reviewed the wording.  It's pretty much perfect now without
being too long.  It's also written in a manner that lends itself to generic,
completely voluntary resignation.  Will print this out, sign it, and carry it
around until it's needed.
*** DONE nootropics
    - State "DONE"       [2012-11-25 Sun 20:51]
    - State "STARTED"    [2012-09-17 Mon 11:47]
I'm skeptical about these, but I'll give the cheap ones a try first and see if
I notice results.  I doubt I'm immune to the placebo effect, but since I do
track productivity very closely, I suspect I'm less likely to be fooled by it.
The fact that the better nootropics definitely have an effect isn't disputed.
The part I'm mainly skeptical of is whether or not they result in an increase
of the productive kinds of mental activity.  For example, caffeine gives one a
stimulus boost, but unless I'm about to fall asleep, it doesn't really help me
write better code or retain more information, and too much of it just results
in useless scatterbrain non-thinking.  There is also some definite snake oil in
the herbal/supplement side of nootropics, so I'm only sticking with stuff
confirmed by studies.  A good self-study is here (though it's not
even single-blind): http://www.gwern.net/Nootropics

One impetus for this is that I currently like nicotine's (very mild) nootropics
effects and would like to replace that with something that doesn't murder me.
Apart from the physical addiction, I know from experience that absent nicotine,
I'm much lazier.  If this works, it'll save money too.

First I want to establish effectiveness by targeting 2 nutrients essential for
mental health and then adding the most basic racetam.
- Supplemental intake of Choline Bitartrate of 500mg/day (2 doses).  I'm
  starting with GNC Choline 250.  If I stick with this, find a cheaper source.
- Supplemental intake of Omega-3 of 850mg/day.  Since I don't want to eat fish
  oil, I'm going for flaxseed oil (which I got a ton of for cheap at the
  grocery store).  Flaxseed (not the oil) is super cheap and doesn't go bad.
  If I stick with this, I'll order some bulk on Amazon.
- After 3 weeks of the above, add piracetam of 800mg/day (1 dose) and up the
  Choline by 250-500mg.  Do this for 2 weeks and if working well, go to 2
  piracetam doses per day and up to double the Choline.  After 3-4 weeks, take
  the weekends off of piracetam and just take 250-500mg Choline.

After 1 month on piracetam, review stuff accomplished on it (both at work and
home).  If improvement is noticeable, order bulk powder of piracetam and
continue use for another 6 months.  Reevaluate at that time and consider trying
other racetams or otherwise redoing my stack.

Update: These don't seem to do anything for me.  They do have an effect, but it
doesn't seem beneficial -- more just making me feel a bit spaz-like.  At least,
they definitely don't increase focus for me.
** Macro-goals
*** DONE year-end review for 2012
    - State "DONE"       [2012-12-29 Sat 17:01]
Observations for 2012:
- This year's work life was divided into Afghanistan, a transition period on a
  temporary project, and going back to DARPA for the rest of it.
- Due to being in Afghanistan, I lost a lot of time for doing stuff that's
  actually interesting.  However, since I made a ton of cash, it'll result in
  earlier retirement and more stuff getting done overall in life.
- I've been incrementally increasing the minimal tolerance level for
  work-related suckage.  This has actually had excellent results.  By clearly
  stating that I'm not interested in bending over when an employers requests a
  "favor", I ended up getting an extra +12% raise along with other
  accommodations.  My analysis here is that this is still risky for wage slaves
  (you have to be ready to call a bluff, after all), but its risk/reward ratio
  is a net gain and I wish I'd been doing this all along, even when I didn't
  have the hand to back it up.
- Overall, this was yet another year of painful working, commuting, and putting
  up with annoying employees and work bureaucracy.  However, it was definitely
  worth it.  I can now quit working whenever I want, but my target date at
  the current wealth gathering rate is early to mid 2014 (I'd quit earlier, but
  getting some income in the next year makes sense for tax reasons).

Major goals for next year:
- The end is in sight.  Start thinking about what I want to do post-work.
  Prioritize all tasks here that have post-work value and minimize those that
  are work-specific.  If I'm still working by the end of year, this will change
  to practically ignoring all work-specific skills.  Organize my current ideas
  into a written plan.
- Be ready to resign at any time.  Despite engineering my work experience as
  best I can from an employee position, there's only so much that can be done.
  I'm at the point now where I can safely walk away at any time, and I
  definitely should if the suck ever reaches critical mass.  While I don't have
  everything planned out yet, I've thought more than enough about post-work
  life to know I'll be okay.  Taxes and other types of milking are increasing
  starting next year anyway, so working is going to be much less worthwhile.
- Decide on which Lisp variant to commit to.
- Start on completing personal research tasks that involve languages I don't
  want to use for the rest of my life.  This includes the ML-variants, Scheme,
  and logic-based language work.

* Project List (2011)
** Books: Computer Science/Programming
*** DONE Harnessing Hibernate
    - State "DONE"       [2011-03-11 Fri 10:24]
    - State "STARTED"    [2011-02-15 Tue 13:36]
Supposedly a rather crappy book, so just reading the introduction parts
(chapters 1-3).  See the Hibernate entry under Work-Related Topics for how this
fits in to fully learning this topic.  I only have this e-book as a .chm file,
making reading it especially inconvenient, but a coworker had a hard copy, so
I'm borrowing that.  If I just skim this, I'll use the Hibernate Recipes book
for a more comprehensive read.

Update: Read some of this, but my gawd it's boring.  I think I have enough of a
hang of Hibernate now that I can stop reading up on it in my spare time, but
this was mostly due to actually using it.  One approach I didn't use was to
design my POJOs first and then have Hibernate generate my DDL from that.  I
think I prefer it the other way though.
*** CANCELED Hibernate Recipes: A Problem-Solution Approach (1st Ed.)
    - State "CANCELED"   [2011-03-11 Fri 14:12]
Not using Hibernate anymore, so torturing myself with this book shouldn't be
*** DONE Learn Python the Hard Way
    - State "DONE"       [2011-03-28 Mon 23:22]
    - State "STARTED"    [2011-03-14 Mon 23:51]
For me, this could have been called "Learn Python the Boring Way".  It'd be a
marginally okay book for an absolute beginner though.  Managed to slog through
the whole thing.  Code is in ~/src/repo/python/lpthw.

- Use =pydoc <identifier>= to get documentation on any built-in functions,
  modules, packages, or dotted reference.  These are pretty good, but really
  need the exception info at the top.
- Creating a file full of functions with doc strings then running ~import~ in
  the interpreter against the file name (minus extension) allows you to run
  ~help(file)~ to get a full function list with documentation.  Note that in
  iPython in Emacs, this requires the key commands to scroll (f, b).
- Use ~type()~ to check types.
- Always at least declare classes with ~class ClassName(object)~, to inherit
  from the object type.
- Created the project skeleton and copied it to ~/src/python/skeleton.  Added a
  README.txt file that lists the steps necessary to use it.
- To use nose, tests have to be in <project_dir>/tests/BLAH_tests.py.  Each
  module should have one test file (if needed).
- __init__.py files are needed in each directory that contains stuff in a
  package.  See ex50 for a proper example.
- To use setup.py on a per user basis, run something like =python setup.py
  install --user=.

I made the mistake of assuming "hard" meant something similar to "theoretically
rigorous", and was disappointed to find it meant "repetitious" and/or
"tedious".  This is my own fault though, since Python isn't that kind of
language, nor is the author that kind of person, and I knew both of these
things beforehand.  The writing here also is pretty sloppy and needs some
serious proof-reading.  The exercises are often rather stupid (e.g. reading
stuff out loud), so I skipped the ones that I felt were of no value (about 1/3
of them).  I'd also disagree with this method of even teaching programming,
since it focuses on language specifics and wrote memorization instead of
building up a framework of computer science fundamentals.  Maybe if the target
audience was learning that stuff elsewhere, this book would be an okay intro to
Python syntax.  The later chapters on how to structure a Python project are
pretty useful though.
*** DONE Python: The Essential Reference
    - State "DONE"       [2011-04-01 Fri 09:55]
    - State "STARTED"    [2011-03-14 Mon 13:46]
This book is really more of a desk reference, and I've been using it for that
for a few years now.  I'm just giving Part I (chapters 1-11) a quick read to
complete my base Python knowledge.

- A , symbol at the end of a print skips the CR/LF, but it also inserts a space
  between print output.
- ~yeild~ can be used to create "generator functions".  An example given is a
  program that mimics the =tail= Unix utility.  Another thing it can be used
  for is coroutines, which can save on creating threads.
- Use dir() to inspect objects, including (with no argument) the toplevel.
- __name__() functions implement language operations (e.g. __add__() on lists,
  implement +).  These are usually documented in the type's pydoc.
- __new__(): constructor, __init__(): initializer, __del__(): destructor.
  Normally, __new__() and __del__() aren't declared in user-defined classes.
- Use the @staticmethod decorator just before a method to make it static.
- __name variables are private class members.
- If I'm writing code with Unicode string literals, use a comment at the first
  or second line of the file with ~-*- coding: UTF-8 -*-~.
- Use isinstance() to check types, as it is aware of inheritance.
- Use copy.deepcopy() to clone objects.
- Use range() for a sequence of numbers, xrange() is a lazy-evaluated version
  of the same.
- Use ~with~ statements to execute a series of statements within a runtime
  context controlled by an object that serves as a context manager.  This
  includes files, locks, and connections.  For example:
  with threading.lock():
      <several statements here>
- Closures work like they do elsewhere.  The environment in which it was
  defined, not executed, determines the value of variables.  It's always
  possible to check a function's environment with func_name.__globals__.
- It's possible to make your own @decorators, which is just shorthand for a
  function that wraps the decorated function.
- Lambda syntax is ~lambda args : expression~, e.g. ~f = lambda x,y : x + y~.
- To have properties with accessors/mutators in classes, use the @property
  decorator on a function by the name of the property, and add a
  <prop_name>.setter or <prop_name>.deleter.  There's another method that
  involves the property() function.
- It's possible to dynamically import modules.  This makes it possible to have
  two modules with the same name for a function or class, and have the
  implementation applied based on some conditional.
- Whenever any part of a package (a directory of modules) is imported, the
  __init__.py file is executed.  It's important that this contain at least a
  declaration like ~__all__ = ["module1", "module2"]~ to handle * imports.

This is decent book for learning Python, and I probably should have just read
this one (or even just the official Python docs) and found some exercises
*** CANCELED Spring Recipes: A Problem-Solution Approach (2nd Ed.)
    - State "CANCELED"   [2011-04-05 Tue 09:05]
The most recent Spring book.

Since my work's changed such that I no longer need this, canceling.  I
certainly won't be reading up on this unless I have to, after all.
*** DONE GNU Emacs Manual
    - State "DONE"       [2011-04-11 Mon 18:55]
    - State "STARTED"    [2011-04-06 Wed 14:50]
Until now, I had only used this for a reference (as I'd already read a few
other Emacs books).  Reading this from start to end (skipping the parts I
already know completely or for modes I don't use) and making notes of anything
I spot that will be useful in everyday life.  Since I plan to use Emacs until
death, time spent learning more useful commands is never time wasted.

Online at http://www.gnu.org/software/emacs/manual/html_mono/emacs.html which
is the same as the Emacs info page (C-h i m Emacs).

- To send a numeric argument to a command prefix with M-<digit>.  To send a
  multi-digit argument to a command, continue the numeric prefix while holding
  Meta.  To send a negative numeric command, use M-- (e.g. M-- 9 C-n scrolls up
  9 lines).  C-u can start and end a numeric prefix too.
- Prefix normal commands with C-u to multiply them by 4.  Subsequent C-u
  prefixes multiply further (e.g. C-u C-u C-n scrolls down 16 lines).
- Use C-u M-q to fill-paragraph and justify.
- C-x z calls repeat, which repeats the last command.  Prefixing this with a
  numeric argument can be rather handy.  You can also run repeat and hit z as
  many times as necessary to continue repeating.
- C-s and C-r work in the minibuffer for M-x history.
- Browse the E-Lisp libraries with C-h p.
- C-x C-x swaps point and mark and selects.  Especially handy after C-<SPC>
  C-<SPC> or C-y.
- Useful mark commands: M-@ (mark-word), M-h (mark-paragraph).
- Use M-m to jump to the first non-whitespace character in indented code
  (easier than C-a TAB).
- Use the mark ring to get back to previous spots of interest in a file.  Set a
  mark point without activating it with C-<SPC> C-<SPC>.  Then use C-u C-<SPC>
  to jump to previous marks.  I've setq-ed set-mark-command-repeat-pop to t in
  ~/.emacs in order to allow for mark ring traversal without popping them off
  the stack.
- Use M-^ to join lines.
- C-S-backspace kills whole line.  This is easier than C-a C-k C-k, but doesn't
  work in terminal sessions inside urxvt (due to control-shift being captured).
  Next time I recompile urxvt, flag configure with --disable-iso14755.
- View the contents of the kill-ring with C-h v kill-ring.
- Text accumulation functions can be handy if copying a bunch of regions to a
  buffer, mostly with M-x append-to-buffer (along with several others).
- Rectangle region commands: C-x r k (kill-rectangle), C-x r y
  (yank-rectangle), C-x r c (clear-rectangle), M-x string-insert-rectangle.
- Registers: These are single-letter named places to store content.  They can
  be useful for collecting or repeatedly yanking in a macro (and other uses).
  Useful commands include C-x r s r (copy-to-register), C-x r i r
  (insert-register), and M-x append-to-register, where the last r is the
  register name.
- M-x visual-line-mode enables word-wrap (instead of the normal line-wrap).
- After searching, C-u C-<SPC> moves back to the pre-search point.
- M-e (forward-sentence), M-a (backward-sentence), M-} (forward-paragraph), M-{
  (backward-paragraph), M-k (kill-sentence), C-x <DEL>
- M-r (move-to-window-line) with no args will move to the center of the window.
- C-h C-h b will show the active keymap.
- In isearch, use C-q to enter control characters (e.g. C-q C-j to add ^J to
  the search string for line breaks).  Use C-w and C-y to pull in additional
  words or lines.
- Transposing: M-t (transpose-words), C-x C-t (transpose-lines).
- Spelling: M-$ (ispell-word).
- Use M-x auto-revert-tail-mode to tail -f a file by putting the cursor at the
  end and enabling this mode.  This updates every 5 seconds.
- M-x diff-backup will diff a file with its previous backups.  Very handy.
- Use emerge for merging files.  Commands are similar to ediff (a, b, n, q,
  etc.).  May want to set this up as git's merge tool later (added a task).  I
  think I still prefer ediff for more simple operations though.
- To edit over FTP, use C-x C-f /ftp:user@host:/path/to/file.  The same syntax
  works for other protocols.
- /: can also be used for quoted file names, e.g. /:/home/me/$5%~.txt.
- Window resizing commands: C-x { (enlarge-window-horizontally), C-x }
  (shrink-window-horizontally), C-x ^ (enlarge-window), C-x +
  (balance-windows), M-x shrink-window (maybe rebind C-x - to this).
- After using mouse-3 to select a region, a second mouse-3 in the same place
  will kill the region.
- M-^ (delete indentation) will merge the current line to the previous and
  delete the indentation (basically the opposite of C-j).
- M-o M-s (center-line).
- When filling paragraphs, use C-x . to set the fill prefix (usually, the
  number of spaces that should precede each line), then running M-q.  The fill
  prefix is set to whatever is between the line beginning and the point though,
  so it can be used for any kind of fill (e.g. program comments).  Be sure to
  clear it (C-a C-x .) if I don't want to keep it active in that buffer.
- Use M-x longlines-mode to create files with long lines that aren't saved with
  newlines (only displaying soft newlines).
- C-h S (info-lookup-symbol) will scan the info files for the symbol searched
  for.  This is useful for languages with info pages installed, like elisp.
- To refresh the woman manpage scan (used for completion), send woman a numeric
- Use eldoc-mode when programming elisp to auto-display function argument
  lists in the echo area.
- Use M-n and M-p in compilation buffers to navigate to errors without
  selecting the source buffer.  C-x ` and M-g p do the same but do select it.

Review these notes occasionally until I've internalized all of these new
commands in my standard Emacs command lexicon.  I may even read this manual
again in a few years to pick up stuff I didn't find interesting this time (like
some of the advanced query commands, GUD, GTK customization, etc.).
*** DONE Hadoop: The Definitive Guide
    - State "DONE"       [2011-04-21 Thu 08:47]
    - State "STARTED"    [2011-04-03 Sun 00:31]
I may read Hadoop in Action after this and possibly Pro Hadoop after that
(though the latter is supposedly not that great).  Apparently, I have an older
version of this book, missing the chapter on Hive, so I might pick up a hard
copy (as I'm going to be using this regularly), but I'll give the other books a
look first to see if they cover the missing stuff.

- The org.apache.hadoop.io package contains the Hadoop types (optimizing for
  network serialization).  Use these types with generics in the
  org.apache.hadoop.mapred package.  Within my map() and reduce() functions,
  convert these to Java base types to manipulate them and back to the Hadoop
  types on the way out.
- Mapper/Reducer classes: Mapper<KeyIn, ValueIn, KeyOut, ValueOut>,
  Reducer<KeyIn, ValueIn, KeyOut, ValueOut>.  Mapper.Context and
  Reducer.Context are passed into map() and reduce().  These contain various
  context fields/methods and write output.
- Required components of a MapReduce program:
  - A MyMapper class with a map() method.
  - A MyReducer class with a reduce() method.
  - A third class that runs the job.
- Combiner functions: Filters map() output locally on the data node.  Can be
  used to optimize amount of data xferred.  Not applicable to certain kinds of
- Using Hadoop Streaming makes testing much easier, since you can just run it
  outside of Hadoop to test.
- See pg. 55 for an example of testing the full workflow using Unix pipes.
- See pg. 56 for a streaming command line example.
- Maybe check out Dumbo (http://klbostee.github.com/dumbo/) for writing
  MapReduce programs in Python.
- Run =hadoop fsck -blocks= to check cloud health.
- Namenodes can be backed up two ways, by writing persistent state to two
  filesystems (one local, one NFS mounted) and by configuring a secondary
  namenode as a failover (which lags a little, probably causing some data
- The 2nd column from the output of =hadoop fs -ls= is the replication count
  (corresponds to dfs.replication in core-site.xml).
- Import org.apache.hadoop.dfs.MiniDFSCluster to create an in-process HDFS
  cluster (for testing purposes).
- A distance metric (node, rack, datacenter) is used to determine latency of
  requests instead of bandwith measurements.
- For HDFS reads, the HDFS client gets the first few block locations from the
  namenode, then reads blocks directly from the data nodes.  The DFSInputStream
  (returned from FSDataInputStream) finds the next block internally.  See
  pg. 63 for full details.
- For HDFS writes, the HDFS client creates the new file entry on the namenode
  (blocks not yet assigned), then the DFSOutputStream (returned from
  FSDataOutputStream) splits the data into packets andwrites then to the
  internal data queue, which is consumed by the DataStreamer (which asks the
  namenode to allocate blocks).  DataStreamer streams the packet to the
  datanode, and if replication is enabled, that node will pass it along after
  writing to the next node.  After this completes successfully, an ack is sent
  back to the DataStreamer, whence it is removed from its internal ack queue.
- To ensure data is actually written to HDFS, either an explicit sync() must be
  called, or close() (which performs an implicit sync()).
- For parallel copying of files in HDFS, used distcp (a MapReduce job).  An
  example use case is parallel copying between two clusters.
- Use the balancer to rebalance a cluster.
- Use HAR (Hadoop Archive) files to collect many smaller files (as small files
  eat up namenode space).  Collect files with =hadoop archive -archiveName
  files.har /my/files /user/hadoop=.  This will create a files.har in
  /user/hadoop.  Look at the contents of the HAR with =hadoop fs -lsr
  har:///user/hadoop/files.har= or =hadoop fs -lsr
  har://hdfs-localhost:8020/user/hadoop/files.har=.  Use -rmr (recursive rm) to
  delete HAR files, since they're stored considered directories by Hadoop.  HAR
  files cannot be updated.
- Disable checksums (probably should never do this, due to the numerous failure
  points) by passing false to FileSystem.setVerifyChecksum();
- Use the various Hadoop types derived from the Writable interface to write
  various data, providing it with the serialization Hadoop expects.  See
  starting at pg. 110 for complete info.
- When serializing, always use the Hadoop serialization
  (e.g. org.apache.hadoop.io.serializer.WritableSerialization).
- File-based data structures: SequenceFile and MapFile are two specialized data
  structures.  A SequenceFile can be handy for, say, a log file that includes
  binary data, but it's main benefit is as a way to collect many small files.
  A MapFile is the same, but sorted to permit lookups.  For SequenceFiles or
  MapFiles with binary data, use SequenceFileInputFormat (such as its variant,
- MapReduce writing workflow: Write map and reduce functions with unit tests.
  Write the driver program to manage the job, including the ability to run it
  from the IDE with test data (thus making it debuggable).  If the controller
  fails, expand the unit tests to cover the cause.  Then try it on the cluster.
  When non-obvious errors occur here, debug them using something like
  IsolationRunner.  It's possible to attach a debugger to Hadoop as well (look
  into this).  Finally, attempt to make the tasks run faster, perhaps by using
  task profiling (some of which Hadoop provides).
- A Configuration can be read from an XML resource file.  See pg. 116 for the
  structure.  The defaults for the system are defined in core-default.xml
  (contained internally), the defaults for the site are in core-site.xml.
  These conf files can be used for switching between clusters when running
  projects.  A good practice is to make a hadoop-local.xml (local FS and
  jobtracker), hadoop-localhost (namenode and jobtracker running on localhost),
  and hadoop-cluster.xml (actual addresses).  Use these from the CLI with
  hadoop's -conf flag.  Use -D on the CLI to change these properties
  individually (include a space, unlike -D for the JVM).  The conf file can
  even include the map and reduce classes.
- IDE setup: Unpack the distribution, then add the distro's lib directory to
  the classpath.  For Eclipse, there's a Hadoop plugin for MapReduce/HDFS
  integration at: http://wiki.apache.org/hadoop/EclipsePlugIn
- This book suggests Mockito for unit tests, but it doesn't seem necessary.
- Running jobs: A command like =hadoop jar job.jar pkg.MainClass -conf
  conf/hadoop-localhost.xml input/all.csv output.txt=.  In this example, if
  job.jar had the main class defined in the manifest, it wouldn't need the
  pkg.MainClass parameter.
- The jobtracker page (http://localhost:50030/jobtracker.jsp) includes a full
  history of up to 100 jobs (configurable by the
  mapred.jobtracker.completeuser.job.maximum property).
- Chukwa is a Hadoop log analyzer.
- Use Reporter.setStatus() to set the task status in the jobtracker page.
- See the various logs in $HADOOP_HOME/logs for various types of logging.
  logs/userlogs have the logs for specific attempts.
- Remote debugging: Set the configuration property keep.failed.task.files to
  true.  This has the tasktracker keep enough info to be able to rerun on the
  same input data.  Run the job again and note which node the task fails on and
  the ID (attempt_*) using the web UI.  Then use IsolationRunner with those
  retained files as input (saved to mapred.local.dir, under
  taskTracker/jobcache/job-ID/task-attempt-ID).  Then allow the remote debugger
  to connect using: export
  Suspend makes it wait until the debugged is connected.  Now re-launch the
  task with =hadoop org.apache.hadoop.mapred.IsolationRunner ../job.xml=.  To
  keep task data for non-failing tasks, edit keep.task.files.pattern to a regex
  that will match the IDs of the tasks I want to keep.
- See table 5-3 for a tuning checklist.
- A convenience method to start jobs is JobClient.runJob(conf).  This calls
- The TaskRunner (an instance of which is created by the tasktracker) starts a
  new JVM to run each map or reduce task, allowing for no interference with its
  own.  It's possible to reuse JVMs between tasks though.
- Jobs and tasks each have a status, which can be checked to determine the
  state (running, successfully completed, failed), progress, counters, status
  message, etc.  For example, JobClient.runJob() returns a RunningJob instance,
  which has various status methods, like mapProgress() and reduceProgress().
- For site configuration, look at the various -default.xml files in the src.
  These have the full configuration options.
- Hadoop has a choice between the FIFO scheduler (the default) and the Fair
  Scheduler, which is more suited for a multi-user environment.
- If map functions are outputting a lot of data, it may make sense to enable
  compression on it to lower the amount of data to transfer to the reducer.
  Set mapred.compress.map.output to true to do this.
- Enable skipping mode (via the SkipBadRecords class), if it's not possible to
  skip them (due to some 3rd-party library).  Ideally, these should be filtered
  in the map function.
- In a Python script, grab environmental variables with
  ~os.environ["mapred_job_id"]~.  Note that the "." characters are converted to
- Function types:
  map: (K1, V1) -> list(K2, V2)
  combine: (K2, list(V2)) -> list(K2, V2)
  reduce: (K2, list(V2)) -> list(K3, V3)
  partition: (K2, V2) -> integer
- The default for map and reduce is to do nothing.  This can be useful if it's
  just necessary to do one of either.
- The default seperator between keys and values is a tab.  This can be changed
  for both the mapper and reducer, on both input and output.
- To disable file splitting (potentially necessary on some map functions, like
  ones that sort the contents) subclass FileInputFormat and override
  isSplitable() to return false.  See other similar customizations on pg. 185.
- TextInputFormat is the default InputFormat.  It takes text file input and
  considers each line the value, with the key being an integer representing the
  offset.  KeyValueTextInputFormat is slightly more useful, as it assumes the
  key is at the beginning of the line, separated from the value text by a
  delimiter (tab being the default).
- If long tasks are timing out (they're normally expected to report progress
  every 10min or they'll be killed), just write status messages on it.
- List Hadoop jobs from the CLI with =hadoop job -list=.  To kill a job, run
  =hadoop job -kill jobId=.
- Use DistributedCache to disseminate jars/files to each node at job submission
- MapReduce provides a bunch of built-in features, such as counters (for input
  records, output records, records skipped, and many other things), sorting
  (via the sort stage, which can be programmed to, including in streaming with
  Python), joins (though Hive is easier for this), the DistributedCache (with
  the -files flag on the job call.  See example for accessing datafiles
  starting on pg. 239), and various MapReduce library classes.
- Apache ZooKeeper: A "distributed coordination service".  See notes under
  Apache ZooKeeper task.
- If Hadoop gets stuck in safe mode forever, try =hadoop dfsadmin -safemode

Skipping Hadoop setup/administration, Pig, HBase, and Cloudera, for now.
*** DONE Weka Manual 3.7.3
    - State "DONE"       [2011-05-09 Mon 08:49]
    - State "STARTED"    [2011-05-06 Fri 07:14]
- Weka assumes input data is a flat file or relation, each data point being
  represented by a fixed number of attributes.  Weka can also use as input the
  results from a database query.
- Datasets, the fundamental machine learning data structure -- typically a
  2-dimensional array, can contain these attributes in Weka: nominal
  (predefined values), numeric (real, integer, numeric), string (enclosed in
  double quotes), date, and relational.
- ARFF syntax: Created a test.arff file, added to GitHub.
- See examples (on GNU/Linux) in /usr/share/doc/weka/examples.
- To validate and run some basic stats on an ARFF file, run =java
  weka.core.Instances soybean.arff=.
- To import a CSV file into an ARFF file automagically, run =java
  weka.core.converters.CSVLoader data.csv > data.arff=.
- Send -h to any Weka class to get its command line parameters.
- A classifier is a mapping from all-but-one dataset attribute to the class
  attribute, specifics varying between classifiers.
- Folds: These provide an alternative training method vs. independent
  training/test sets.  The data is split into n folds and one is randomly
  chosen for testing, while the other n - 1 folds are used for training.
  Results are then averaged over all folds.
- Use the weka.filters package to add/remove attributes, in supervised and
  unsupervised form.  weka.filters.supervised is for supervised filtering,
  which can take advantage of class information (default behavior with =-c
  last=).  Example: java weka.filters.unsupervised.instance.Resample -i
  data/soybean.arff -o soybean-5%.arff -Z 5
- For classifiers, if =-T test_file= is left out, a cross-validation will occur
  on the input data.  This file needs to redefine the attributes.
- Confusion matrix (contingency table): Correctly classified instances are the
  sum of the diagonals.
- For classifiers, -i is useful, since it shows the TP (true positive), FP Rate
  (false positive rate), etc.
- For big jobs, use -Xmx1024m to ensure the task has enough memory.
- If I have a bunch of classifier output in .out files, having run stuff like
  =java weka.classifiers.trees.J48 -t soybean.arff -x 5 -i -k > test.out=, I
  can run something like:

  cat test.out | grep -A 3 "Stratified" | grep "^Correctly"

  Doing this on all my .out files will give me a list from which I can tell
  which classifier is the best.
- GUI tools:
  - Explorer: Standard Weka tool.
  - Experimenter: Tool for testing between different learning schemes.
  - KnowledgeFlow: Same as Explorer, but with drag-and-drop.
  - SimpleCLI: CLI for systems like Windows.
  - ArffViewer: Tool for viewing ARFF files in table view.
- To save an image while looking at it from the Visualize tab, use
  S-M-<mouse-1>.  If in Gnome, disable the movement key in
- Right click on entries in the Result List for various options, like
  visualizing the results.
- In scatter plots, jitter introduces random displacement on points, possibly
  allowing for concentrations to be more obvious (like if many points are at
  the same spot).
- Declare date attributes with:

  @ATTRIBUTE timestamp DATE "yyyy-MM-dd HH:mm:ss"

  In the data, this attribute will then look something like "2001-04-03

Skipped chapters on Experimenter, KnowledgeFlow, Bayesian network classifiers,
and the Appendix.  May read these later (particularly the Bayesian network
classifiers chapter).
*** CANCELED IEEE Std 1003.1-2008
    - State "CANCELED"   [2011-05-25 Wed 12:33]
The POSIX standard.  Might be worth a read.

Read some, but it's not useful information in my life, nor even remotely
*** DONE Stuxnet Under the Microscope
    - State "DONE"       [2011-05-29 Sun 02:43]
    - State "STARTED"    [2011-05-29 Sun 01:15]
Already glanced at the decompiled Stuxnet code which definitely supports the
supposition that it was written by a professional team of developers using a
iterative development process with extensive debugging/testing.  I've seen
plenty of other amateur exploit code, and this looks more like something I'd
see at work.  This professional analysis might have made some interesting
additional observations.

TMP file note: I don't buy the suggestion (made by Cryptome) that "myrtus"
means "My RTUs", as programmers don't structure their directories the way it's
used in that path.  This implies that it's either a username, project code name
(my guess), or a red herring.  If not the latter, then it's probably of Israeli
origin.  It's almost definitely a product of some Western nation-state, since
the literals used therein are the type seen by English-speakers.  However,
references to "futbol" imply non-US origin, though everyone in the US knows
about the rest of the world's soccer fixation.

Pretty interesting program, but this paper doesn't really do that great of a
job describing it.  Generally, I'm not interested in reading post-mortems like
these, particularly not on Windows, but made an exception here, due to this
being the most advanced targeted attack to date and having implications related
to my field of work.

Update: The NYT supposedly confirmed that Stuxnet was a join US/Israeli
operation, with development in the US and config/deployment by Israel.
*** DONE Epigrams on Programming (paper)
    - State "DONE"       [2011-06-17 Fri 06:45]
    - State "STARTED"    [2011-06-17 Fri 05:23]
Some learned wisdom here, though I semi-disagree with the Lisp criticisms.

My favorites:
19. A language that doesn't affect the way you think about programming, is not
    worth knowing.
34. The string is a stark data structure and everywhere it is passed there is
    much duplication of process. It is a perfect vehicle for hiding
39. Re graphics: A picture is worth 10K words - but only those to describe the
    picture. Hardly any sets of 10K words can be adequately described with
40. Some programming languages manage to absorb change, but withstand progress.
54. Beware of the Turing tar-pit in which everything is possible but nothing of
    interest is easy.
93. When someone says "I want a programming language in which I need only say
    what I wish done," give him a lollipop.
94. Interfaces keep things tidy, but don't accelerate growth: Functions do.
95. Don't have good ideas if you aren't willing to be responsible for them.
*** DONE Tutorial on Good Lisp Programming Style (paper)
    - State "DONE"       [2011-10-26 Wed 13:31]
    - State "STARTED"    [2011-10-28 Fri 11:48]
Large series of postscript slides by Peter Norvig.  Grabbed a PDF copy for
reading elsewhere.
** Books: Math
*** DONE Common Mistakes in Using Statistics (course)
    - State "DONE"       [2011-06-01 Wed 06:10]
    - State "STARTED"    [2011-06-01 Wed 04:59]
A coworker attended this class and recommends the material.  Slides in a file
called common_mistakes_in_statistics-2011.pdf.

- The file drawer problem: The problem that studies who are unable to show
  findings that reject the null hypothesis languish unnoticed, while the ones
  that do not attract attention.
- An "event" is the thing the probability of is being measured.
- P(A), the probability of event A, is defined as m/n, where A is satisfied by
  exactly m of n outcomes.
- P(E | C) is the probability of event E, given condition C.
- A random (stochastic) process is a process where the outcome is
  probabilistic rather than deterministic.
- A random variable is a variable that depends on a random process,
  e.g. tossing a die is a random process and the number on the top is the value
  of the random variable.
- Bias is systemic if it favors an outcome over another, e.g. telephone surveys
  that miss various types of people, like those who don't want to participate
  (this is a type of sample called a voluntary response sample).
- Extrapolation is a common error where conclusions are drawn from beyond the
  range of data.
- Standard deviation provides no asymmetry information on skewed distributions.
  Many standard statistical techniques are invalid for these.

More info at: http://www.ma.utexas.edu/users/mks/statmistakes/TOC.html
*** DONE Bayesian Statistics for Social Sciences (course)
    - State "DONE"       [2011-06-02 Thu 09:52]
    - State "STARTED"    [2011-06-01 Wed 06:45]
Another statistics course taken by coworker. Slides in a file called

- Non-Bayesian statistical methods include method of moments and maximum
- Basic setup:
  - Two events of interest: A and B.
  - E.g., A is a hypothesis about some phenomenon and B is observed data.
  - We may know P(B|A), which is the probability of the data given different
    parameter values.
  - We want to know P(A|B), which is the probability of the hypothesis being
    true given the data.
- Bayes' Theorem: P(A|B) = (P(B|A)P(A))/P(B).
- IID = independently and identically distributed.  E.g., roulette wheel spins
  are IID.

These slides are a bit hard to follow and annoying to read (since it's a
PowerPoint export).  Maybe they'd make more sense with the accompanying
lecture.  Giving up on these about 1/3rd in and will find a different source
for this information.
** Books: General Non-fiction
*** DONE The Lie Behind the Lie Detector
    - State "DONE"       [2011-02-01 Tue 00:55]
    - State "STARTED"    [2011-01-31 Mon 22:20]
Super useful.  Luckily for me, I had most of this figured out on my own, but
now that I know the rest of this, it'll be a breeze from now on.
*** DONE Assassination Politics
    - State "DONE"       [2011-02-22 Tue 02:02]
    - State "STARTED"    [2011-02-22 Tue 01:01]

I think what's still missing here is the digital currency.  If an existing or a
new one gains real traction, then that will be the final piece.  Either way,
it's probably inevitable (though unlikely in my lifetime).  If implemented, the
global economy would really resemble a healthy macro-organism (at least to the
extent possible given average human intellect), which purges itself of viruses.
*** DONE Summa Logicae
    - State "DONE"       [2011-02-22 Tue 02:47]
    - State "STARTED"    [2011-02-22 Tue 02:29]
Give this partial translation/commentary of Book I a read:

Like a lot of early philosophical work, this suffers from the lack of language
available to effectively communicate the points.  Some tend to be banal and/or
needlessly expanded upon, but that could also be failings of the author.  In
any case, this particular presentation of it sucks and reads like someone's
book report, though it's by Charles Pierce (himself a renown philosopher and
mathematician).  I've seen enough to know when I'm wasting my time.
*** DONE Automatic Wealth: The Six Steps to Financial Independence
    - State "DONE"       [2011-04-05 Tue 02:56]
    - State "STARTED"    [2011-04-04 Mon 15:10]
This book bears all the signs of being mall-bookstore fodder, but I'll give it
a few hours.  If this guy knows something I don't, then it'll be worth the

- Yet again, the "magic of compound interest" meme rears it's stupid head.
- "You need a lot of money to retire."  A 65 year old woman in here can't
  retire because she "only" has $600k.
- The author thinks the stock market "historically averages a 10% return".
- Too much crap about marketing, sales, and other such boring crap.
- Includes some really dumb advice, like about direct marketing and flipping
- Very repetitive.  For such a short book, this is pretty lame.

There is some good advice in here, like not including cars and houses in net
worth, but the overall plan is a stupid and inefficient one and the end
scenario in mind here is a glut of consumerism.
*** DONE The Millionaire Next Door
    - State "DONE"       [2011-04-09 Sat 02:28]
    - State "STARTED"    [2011-04-07 Thu 13:03]
The classic personal finance text about getting rich via mild frugality and a
lifetime of work.  This isn't my plan, but advice from this book has
occasionally made its way in front of my eyeballs and what I've seen I
generally approve of, so I might pick up a few ideas from a full read.

Pretty good, but didn't learn anything.  There's way too many anecdotes, but
for a financial book, it does contain a lot of facts and, more importantly,
original research.  However, a lot of these facts are considerably outdated.
The central message, that self-made millionaires' lifestyle is the opposite of
popular conception, is something I've already long since known.
*** DONE Transgressing the Boundaries
    - State "DONE"       [2011-04-11 Mon 14:18]
    - State "STARTED"    [2011-04-11 Mon 13:37]
The Sokal Hoax paper with the full title Transgressing the Boundaries: Towards
a Transformative Hermeneutics of Quantum Gravity.  Already read this three
times since 1998, but it never fails to be entertaining.
*** DONE The Abolition of Work
    - State "DONE"       [2011-04-15 Fri 22:51]
    - State "STARTED"    [2011-04-15 Fri 10:04]
I read this once before, but it was around 1995 and I was much more stupid


While I agree with the dislike of having a job and it (at least, with some
people) being a rational goal to eliminate it, this essay is obviously written
by a person with rather muddled thoughts (quoting Foucault is always a dead
give-away), writing to impress more than to inform (or maybe he's just not
smart enough to write any other way).  In any case, I didn't see much of a
factual basis for the argument here and I'm still waiting for innumerable
issues to be addressed by proponents of this philosophy, as I've thought about
it and can't resolve the majority of them.

I'd also quibble with the definitions here.  I'd define work, in the
non-physics sense, as something like "expending energy to produce a desired
output", which I don't have any particular problem with.  If you desire the
output and are willing to expend the energy to get it, then this transfer is
something you want.  What's ultimately counter-productive is employment (for
too many reasons to bother listing here), but even then I'd only say that
applies to some of the people miserable at their jobs, as most are too stupid
to direct their own resources (time, labor, capital) in a way that would result
in any net benefit for them.  In their case, the misery of employment < the
misery of failure to self-direct their life, and they are making the optimal
choice.  Were I to write a treatise on the subject, it would focus entirely
upon identifying the real cost/benefits of the transaction, at least where its
optional (non-optional employment is a different topic).

Finally (though there's many other problems here), I'd argue that for most
humans, they already have too much play time, and that, especially in current
Western consumerist culture, the play time they do engage is destructive, both
to themselves and externally.

Basically, the issue is too multi-faceted to be waved away with a social
commentary.  The closest thing I would declare to being a "root cause" is that
humans are currently, individually and in aggregate, simply too stupid to build
a world much better than what we have.
*** DONE Syndicate Wars Official Guide
    - State "DONE"       [2011-04-17 Sun 12:54]
    - State "STARTED"    [2011-04-17 Sun 03:41]
Available here:

Didn't learn anything.
*** DONE FM 3-07
    - State "DONE"       [2011-05-15 Sun 00:01]
    - State "STARTED"    [2011-04-19 Tue 08:12]
Reading for some work-related context.  Skipping the legal and counter-drug
content herein.

Not very interesting.  Too generalized, poorly focused, and administrative for
me to learn much from.  Quit about 1/3 in.
*** DONE Fixing Intel (paper)
    - State "DONE"       [2011-05-15 Sun 00:01]
    - State "STARTED"    [2011-05-15 Sun 00:55]
Full title of Fixing Intel: A Blueprint for Making Intelligence Relevant in

Not a bad read, considering my lack of interest in the topic.  I'm inclined to
agree with the paper's recommendations, but I can't say for sure, as I don't
really know the problem space enough to decide with any authority.
*** DONE The Logic of Violence in Civil War
    - State "DONE"       [2011-05-15 Sun 16:25]
    - State "STARTED"    [2011-05-15 Sun 15:10]
Written by someone who obviously isn't familiar with the wonders of operating a
spell checker.  However, this is a good summary of the cost/benefit analysis
performed by parties involved in civil war.
*** DONE Institute for the Study of War papers
    - State "DONE"       [2011-05-24 Tue 05:00]
    - State "STARTED"    [2011-05-16 Mon 04:56]
Lots of good papers on this site.  Just reading some of the recent ones.

Papers read:
- Defining Success in Afghanistan: Highly informative and a great overview of
  the situation in early 2011.
- Reversing the Northeastern Insurgency: Useful info on the situation in
  Kunduz, Baghlan, and Takhar.
- Haqqani Network in Kurram: Useful info on a major Sunni terrorist target in
- Counterinsurgency in Helmand: At the time of this writing, Helmand was way
  better than a year ago, but still has some serious issues.  Progress has
  continued since then, but it won't be till late summer until we know if it's
  a trend shift.
- Operation Moshtarak - Taking and Holding Marjah: A bit outdated, but this
  battle was the decisive action of the operation on an enemy stronghold.

Reading these definitely helped a lot.  They tend to be a bit positively
focused, but that could be because things are a little better now than a year
ago.  I'll check back here in 6 months to see if any new stuff is posted.
*** DONE The Takhar Attack (paper)
    - State "DONE"       [2011-05-25 Wed 08:58]
    - State "STARTED"    [2011-05-24 Tue 07:44]
Not particularly interested in the specific incident, but it's a good case
study.  Recommended by coworker.  From: http://aan-afghanistan.com/

This is a bit more pessimistic of an analysis than some articles I read on this
incident.  But from my position without any source data, seems the more likely
and is a pretty big, and all too typical, screw-up.  Skipped legal stuff.
*** DONE Tableau 6.0 manual
    - State "DONE"       [2011-05-25 Wed 09:00]
    - State "STARTED"    [2011-05-24 Tue 06:23]
Tableau is just a boring visualization software package, so just need to skim

Predictably boring, but it is a manual.  I'll keep this handy for whenever
using it though to lazy-load the ability to do stuff with it.
*** DONE Agalmics: The Marginalization of Scarcity
    - State "DONE"       [2011-07-21 Thu 14:11]
    - State "STARTED"    [2011-07-21 Thu 13:59]
Article by the now deceased founder of Freenode, Bob Levin, on free and open
source software.

Hopelessly naïve.  Ignores inherent properties of physical resources.  For
example, a population of beings trapped on a single planet have a fixed amount
of land resource.  As the population increases, land becomes increasingly
scarce.  This essay is about copyrights though, but the basis for the argument
is flawed.  Overall, a worthless essay.
*** DONE Why Socialism is "Impossible" (paper)
    - State "DONE"       [2011-08-10 Wed 21:48]
    - State "STARTED"    [2011-08-10 Wed 17:28]
Okay for a summary of the Von Mises assertion along these lines.  Didn't learn
anything new though.
*** DONE Ghost in the Wires
    - State "DONE"       [2011-11-10 Thu 13:54]
    - State "STARTED"    [2011-11-08 Tue 23:41]
Kevin Mitnick's most recent autobiography.  An okay read.  He definitely did
some interesting stuff, but more technical details would've made it a better
use of a day.  I really only know his life story now, and almost nothing new
about anything else.
*** DONE In the Beginning...Was the Command Line
    - State "DONE"       [2011-11-11 Fri 13:53]
    - State "STARTED"    [2011-11-11 Fri 12:44]
Well written at times, boring at others.  Apart from occasionally being
entertained by a witty phrase or two, not much was learned here.  Essays like
these are common on HN, after all, so I've heard it all before.  Much of this
is similar to my perspective on CLIs and technology culture, but I think
Stephenson's techno-epistemology has a few holes in it that mine doesn't.

Regarding the technical content, it's shallow, outdated, and even contains
minor errors (e.g. C++ is not a dialect of C, not all GNU/Linux distros have
similar directory structures, Emacs isn't spelled with a lower case first
letter, etc.).  I might've enjoyed this as a young n00blet, had I not been
already well past that point by the time this was published.
** Books: Fiction
*** DONE Lucifer's Hammer
    - State "DONE"       [2011-01-21 Fri 17:12]
    - State "STARTED"    [2011-01-01 Sat 16:13]
A decent post-apocalypse novel, but only by comparison to others in its genre.
*** DONE Blindsight
    - State "DONE"       [2011-01-24 Mon 21:57]
    - State "STARTED"    [2011-01-23 Sun 22:56]
Online at: http://www.rifters.com/real/Blindsight.htm

A truly excellent book, among the top of hard scifi novels I've ever read.  An
excellent exploration of sentience, a realistic portrayal of human thought,
good writing, realistic characters, realistic progression of future technology
(minus one point), and one of the better and more interesting ETIs out there.
Not totally perfect, but more than what anyone could expect from a novel.
*** DONE The Big Bow Mystery
    - State "DONE"       [2011-01-29 Sat 19:54]
    - State "STARTED"    [2011-01-27 Thu 20:12]
Supposedly the first well-done "locked room mystery".

It's okay, but nothing special.  IMO, a mystery should be solvable by the
reader if he's smart enough.  The final exposition should either confirm or
deny your theory then.  This isn't one of those though.
*** DONE Rogue Farm
    - State "DONE"       [2011-01-29 Sat 20:36]
    - State "STARTED"    [2011-01-29 Sat 20:03]

Nothing interesting, due to being too short for anything to happen with the
ideas here.
*** DONE A Colder War
    - State "DONE"       [2011-01-30 Sun 18:00]
    - State "STARTED"    [2011-01-30 Sun 01:39]
A Cthulhu mythos/cold war crossover.  OK, but not all that great.
*** DONE The Murders in the Rue Morgue
    - State "DONE"       [2011-02-06 Sun 02:50]
    - State "STARTED"    [2011-02-06 Sun 01:44]

Not that great.
*** DONE Thirteen (Black Man)
    - State "DONE"       [2011-02-06 Sun 08:34]
    - State "STARTED"    [2010-11-09 Tue 22:28]
Dragged out, with an uninteresting underlying plot.  It's basically just a
standard catch the bad guy drama that might just as well not be scifi.
Finishing this turned into a real chore.  Finally giving up about 80% in.
*** DONE Singularity Sky
    - State "DONE"       [2011-02-07 Mon 21:09]
    - State "STARTED"    [2011-01-31 Mon 07:33]
Has some okay parts and is less ridiculous than Accelerando (same author), but
still suffers from some of the same problems.
*** DONE The Last Answer
    - State "DONE"       [2011-02-15 Tue 01:17]
    - State "STARTED"    [2011-02-15 Tue 01:03]
Okay, for a short story.
*** DONE Nemesis
    - State "DONE"       [2011-02-18 Fri 00:14]
    - State "STARTED"    [2011-02-15 Tue 01:24]
Asimov novel.  Competently written, but short of really good, due to a lot of
the content being a bit too generic and done before.
*** DONE Tlön, Uqbar, Orbis Tertius
    - State "DONE"       [2011-02-20 Sun 01:14]
    - State "STARTED"    [2011-02-19 Sat 15:06]
Disappointing given its supposed significance.
*** DONE The Hound of the Baskervilles
    - State "DONE"       [2011-02-27 Sun 12:34]
    - State "STARTED"    [2011-02-24 Thu 23:03]

Good enough for a quick read.
*** DONE Thus Spake Zarathustra
    - State "DONE"       [2011-03-02 Wed 22:17]
    - State "STARTED"    [2011-02-22 Tue 03:17]

Nonstop baseless declarations and needless obscurantism.  Giving up about 25%
in, having seen nothing of any substance yet.
*** DONE The Caves of Steel
    - State "DONE"       [2011-03-05 Sat 22:05]
    - State "STARTED"    [2011-03-02 Wed 22:20]
Pretty good for a detective novel, just average for a scifi novel.
*** DONE Foundation
    - State "DONE"       [2011-03-07 Mon 19:12]
    - State "STARTED"    [2011-03-05 Sat 23:13]
Lots of anachronisms, but the first half is okay despite that.  Loses some of
its momentum later though.  Ends up being just okay overall.
*** DONE The Naked Sun
    - State "DONE"       [2011-03-08 Tue 10:19]
    - State "STARTED"    [2011-03-07 Mon 19:14]
Better than The Caves of Steel.
*** DONE The Robots of Dawn
    - State "DONE"       [2011-03-13 Sun 22:51]
    - State "STARTED"    [2011-03-08 Tue 23:07]
About on par with the previous, but loses a few points for all the low brow
*** DONE Robots and Empire
    - State "DONE"       [2011-03-22 Tue 21:47]
    - State "STARTED"    [2011-03-13 Sun 23:07]
Not that great.  Fulfills it's mission of tying together the Robot and the
Foundation series, but I personally don't give a crap if they exist in the same
universe or not.
*** DONE Semper Mars
    - State "DONE"       [2011-03-27 Sun 04:11]
    - State "STARTED"    [2011-03-22 Tue 22:00]
First in the Heritage Trilogy.  Might read the others if this is any good.
There's then 2 other trilogies after this in the same universe.

Garbage.  Finished this one, but not reading the others.  Books that glorify
military culture tend to be pretty stupid, and this is no exception.
*** DONE The Gods Themselves
    - State "DONE"       [2011-03-31 Thu 22:14]
    - State "STARTED"    [2011-03-27 Sun 19:24]
A stand-alone Asmiov novel.  Pretty good sci-fi in the 1st and 3rd parts, but
the 2nd kinda sucked, forcing me to skip it and read a summary of it on
Wikipedia instead (to the effect of me feeling like I didn't miss anything).
*** DONE Araby
    - State "DONE"       [2011-04-01 Fri 15:12]
    - State "STARTED"    [2011-04-01 Fri 14:44]
A James Joyce short story.  Reading this to sample the author's writing prior
to committing to reading Ulysses.


This is actually surprisingly good, though the theme isn't all that
*** DONE The Fall of the House of Usher
    - State "DONE"       [2011-04-02 Sat 02:19]
    - State "STARTED"    [2011-04-02 Sat 01:29]
An Edgar Allen Poe short story.  I read this back in 11th grade, but I was much
more stupid then, plus being assigned reading ruins it.

Not that great.
*** DONE The Cask of Amontillado
    - State "DONE"       [2011-04-02 Sat 11:23]
    - State "STARTED"    [2011-04-02 Sat 02:20]
Another Edgar Allen Poe short story, involving revenge and immurement.

Not that great either.
*** DONE Tau Zero
    - State "DONE"       [2011-05-02 Mon 00:51]
    - State "STARTED"    [2011-04-27 Wed 12:32]
Supposedly a classic hard scifi novel.

Pretty good, but too much character development for my tastes.  Much of the
purpose of the novel hinges on how human psychology reacts to the kind of
situations here, and that, at least for me, isn't all that interesting.  Apart
from that, however, it's a good read.
*** DONE Assemblers of Infinity
    - State "DONE"       [2011-05-07 Sat 17:57]
    - State "STARTED"    [2011-05-04 Wed 17:12]
Takes place too soon in the future (11 years from 1993).  Bland, uninteresting
characters.  Plot meanders and never really does anything interesting.
Overall, an amateur effort.
*** DONE Solaris
    - State "DONE"       [2011-05-08 Sun 00:26]
    - State "STARTED"    [2011-05-07 Sat 18:12]
A classic hard scifi novel.  Was put off from reading this for awhile due to
the crappy 2002 film based on it, but the book is actually extremely good and
well written.
*** DONE The Cold Equations
    - State "DONE"       [2011-05-08 Sun 09:11]
    - State "STARTED"    [2011-05-08 Sun 08:33]
Hard scifi short story from 1954.  One of the stories that helped part of the
genre escape from its adventurism roots.  An okay read, but nothing great.
*** DONE His Master's Voice
    - State "DONE"       [2011-05-14 Sat 19:26]
    - State "STARTED"    [2011-05-08 Sun 00:57]
While I'd probably more enjoyed these ideas here presented in non-fiction form,
this is, in a lot of ways, real science fiction should be, as apart from the
plot, it's almost not even fiction at all.  The writing here is often top
quality, and I often found myself quite amazed by the expertly-crafted prose
(far beyond my writing ability).
*** DONE The Invincible
    - State "DONE"       [2011-05-19 Thu 07:27]
    - State "STARTED"    [2011-05-16 Mon 06:02]
Another Stanislaw Lem novel.  This one isn't that great though.
*** DONE The Algebraist
    - State "DONE"       [2011-05-21 Sat 21:50]
    - State "STARTED"    [2011-05-21 Sat 20:48]
Giving Iain M. Banks another try.  This book's the beginning of a new series,
so maybe it's less hammy than his proliferous Culture series.  Going in with an
appropriate setting for the give-up threshold.

Bleh.  Read enough to know this book isn't for me.
*** DONE Starfarers
    - State "DONE"       [2011-05-29 Sun 09:30]
    - State "STARTED"    [2011-05-21 Sat 21:58]
Another Poul Anderson (author of Tau Zero) novel.

Too much boring interpersonal relations content (often at the expense of the
scifi content).  Then the scifi content itself is pretty generic and
uninteresting on top of that.  There's also a lot of pointless filler with
side-stories that have absolutely nothing to do with the plot, which itself
meanders aimlessly.  A lot of this is probably due to the way it was originally
published as a collection of short stories over many years, but I've seen that
done well too, so it's no excuse.  A shame, since the scenario here could have
been used for great things.
*** DONE Out of the Dark
    - State "DONE"       [2011-08-04 Thu 21:13]
    - State "STARTED"    [2011-08-01 Mon 02:17]
A new alien invasion novel from 2010.  Gets progressively more stupid
proportional to the page number.

Also, the next time I'm reading a book and I encounter aliens that are just
cheap carry-overs of Earth animals, I'm insta-quitting.
*** DONE The Academy series
    - State "DONE"       [2011-08-13 Sat 23:56]
    - State "STARTED"    [2011-07-10 Sun 15:40]
Attempting to read all of these.
- The Engines of God: First book of The Academy series. Not bad, but has a lot
  of long-winded filler.
- Deepsix: Pretty uncreative.  The alien fauna/flora are all unimaginative
  variants of Earth creature.  Uses a serious physical impossibility of welding
  carbon nanotubes.  The plot line isn't just one long rescue/survival mission
  and not very scifi.
- Chindi: A boring, predictable rescue-adventure with cartoon-like characters.
- Omega: This series is getting more stupid and lazy.
- Odyssey: Skipping this one.
- Cauldron: Same problems as the rest of the series.  The final resolution of
  the main issue across the series is thoroughly disappointing.

This author exhibits a large lack of imagination and seems content with
producing reams of text describing mundane and inconsequential activities.
Definitely not reading any more of these.
*** DONE The Cassini Division
    - State "DONE"       [2011-08-16 Tue 10:06]
    - State "STARTED"    [2011-06-19 Sun 22:25]
Parts of this are very well written, others not so much.  The well written
parts are sometimes very good though.  The main immersion-killer is all of the
socialist utopianism.
*** DONE Childhood's End
    - State "DONE"       [2011-08-23 Tue 09:45]
An earlier Arthur C. Clarke novel.  Read this on the plane to Dubai.
Definitely the weakest novel by this author I've read so far.
*** DONE Library of the World's Best Mystery and Detective Stories
    - State "DONE"       [2011-10-01 Sat 14:48]
    - State "STARTED"    [2011-08-25 Thu 22:42]
Just grabbed a copy of this off Gutenberg for reading on an airplane trip.
The selections here are almost all pretty bad.
*** DONE Snow Crash
    - State "DONE"       [2011-11-30 Wed 16:18]
    - State "STARTED"    [2011-11-26 Sat 23:52]
Apart from all the lame pop culture (ninjas, skateboards, etc.), this book's
main problem is the thoroughly implausible premise.
*** DONE Iron Sunrise
    - State "DONE"       [2011-12-11 Sun 10:16]
    - State "STARTED"    [2011-12-01 Thu 14:34]
Better than the previous book in this series (Singularity Sky), but still not
that great.
** Technology and software
*** DONE bitcoin
    - State "DONE"       [2011-02-10 Thu 08:49]
    - State "STARTED"    [2011-02-09 Wed 15:30]
Installing this on Ubuntu so they can be generated on work power.

- sudo apt-add-repository ppa:stretch/bitcoin
- sudo apt-get update
- sudo apt-get install bitcoin
- Run =bitcoin= and limit coin generation to one processor (since I need to get
  work done too).
- Make note of bitcoin address.

Unfortunately, there's only that lame GTK client.  I like the concept of
bitcoin though, so hopefully it'll catch on.  Generating coins takes up too
much CPU to get work done, but if I get a spare machine at work and it's not
doing anything, I'll reinstall the client there.

Update: I've read up on some criticism of bitcoin, and while I don't agree with
all of it, some of it does make sense.  My main concern with it is that it
doesn't directly represent a physical commodity, rather an artificially created
one (which, arguably, isn't a commodity at all).  There's also the problem of
value stored in bitcoin to simply disappear if you were sloppy with backups.
I'm not sure it even can be called money, since it's not a direct store of
value, unlike, say, certificates representing metals, which can be
issued/disappear as the supply of the physical metal increases/decreases.
*** DONE Python project management packages
    - State "DONE"       [2011-03-21 Mon 02:20]
    - State "STARTED"    [2011-03-21 Mon 00:58]
To properly package up Python software, I'll need these packages.

python-pip: A Package installer.
- Installed on FreeBSD from devel/py-pip.

python-distribute: A replacement for Setuptools.
- Installed via =pip install distribute=.

python-nose: A unit test framework for Python.
- Installed on FreeBSD from devel/py-nose.  Next time I'll install via pip

python-virtualenv: Creates isolated Python environments.
- Installed via =pip install virtualenv=.

Added these to fbsd_setup.org.  Might want to briefly read up more on these
later (particularly nose).  nose is pretty nice, and I'm definitely going to be
using it.  However, in work environments, I might not be able to install
packages, in which case, perhaps doctest unit tests might be best
*** DONE Debian 6 VM
    - State "DONE"       [2011-03-21 Mon 08:46]
    - State "STARTED"    [2011-03-17 Thu 08:54]
Considering using this for cloud analytics, as much of that is still a pain on
*BSD, and I'm not even sure if all of it is possible.  In either case, I know
some of the development tools I need don't work.  This will take a bit of
mindless config work to customize it though.

Setup notes:
- Run the ncurses expert install.  Be sure to install the SSH server.
- The rest is pretty standard (basically a subset of my FreeBSD install).  It
  does require an install of some extra stuff though, like finger, postgres,
- Find specific versions of packages using =aptitude search <pkg_name>= or
  =apt-cache search '^<pkg_name>=.
- To restart the network, run =sudo ifup -a=.  If network-manager is being
  used, use =sudo /etc/init.d/network-manager restart=.
- Install autocutsel to merge cutbuffer and X selection.  Add to .xinitrc.

Setup complete.  Debian is a lot more n00b than it was the last time I used it
>10 years ago, but it's still better than n00buntu.  Now I just need to get
Hadoop and other cloud stuff installed, but those are in separate tasks.  So
far, it seems all this should work.

Update: Had to redo it since my typical 8GB disk is too small to run a cloud
on.  Need at least 40GB for the datasets I use.
*** DONE remote host all code repos
    - State "DONE"       [2011-03-31 Thu 11:50]
    - State "STARTED"    [2011-03-31 Thu 10:10]
Migrate everything to GitHub.  As superior as Darcs is, it looks like it's
lost (I'm declaring GHC's migration to git to be the day this happened).

Maybe I'll still use Darcs for local development or things I don't publish.

I'm not going to bother trying to migrate all my change history from Darcs.
I'll just dump everything in GitHub as is, and go from there.

- Setup git on home Windows box (all my other machines already have it).  Add
  the git/bin directory to %PATH%.  Alternatively just use the Cygwin version.
- If I want a VCS GUI, setup TortoiseGit.  I'm not a fan though, since it
  doesn't integrate with xplorer2.
- Enter SSH keys into GitHub for all machines and VMs.
- Read the GitHub docs to make sure I'm not doing anything stupid.
- Export my Darcs repo, and start committing to GitHub.  I'll want to
  reorganize everything into projects for grad_school, practice, and then ones
  for everything else.
- Check out the markup syntax for README files.
- Update website repo links.

GitHub config setup:
git config --global user.name "Bruce C. Miller"
git config --global user.email "bm3719@gmail.com"
git config --global github.user bm3719
git config --global github.token <insert_token_here>
git config --global color.ui auto
git config --global core.whitespace trailing-space,space-before-tab
git config --global diff.renames copies
git config --global diff.mnemonicprefix true
git config --global merge.stat true
git config --global core.excludesfile ~/.gitignore_global

Workflow example for creating grad_school project:
mkdir grad_school
cd grad_school
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin git@github.com:bm3719/grad_school.git
git push -u origin master

After that's done, I can just do the add, commit -am "comment here", and push.
Decided to just use plain text README files for now.
*** DONE switch to Blekko
    - State "DONE"       [2011-04-12 Tue 22:51]
    - State "STARTED"    [2011-04-12 Tue 21:45]
Google results have way too much garbage in them these days.  I'll start
searching first at Blekko from now on, which in my experience so far, has much
more useful results.

Conkeror setup notes:
- Added "blekko" and "b" webjump to .conkerorrc.
- Adblock the following URL patterns to get rid of the junk/ads:
- Go to prefs and hide stuff I don't want (these are apparently not all stored
  server-side, so it's necessary to do it on every machine).

emacs-w3m setup notes:
- It's not possible to modify the defcustoms of w3m-uri-replace-alist and
  w3m-search-engine-alist in a w3m-mode-hook function, as these aren't declared
  prior to the hook being run.
- Run =cd /usr/local/share/emacs/23.1/site-lisp/w3m; sudo chmod u+w w3m.el
- Add ~("\\`bb:" w3m-search-uri-replace "blekko")~ to w3m-uri-replace-alist in
- Add ~("blekko" "http://blekko.com/ws/%s")~ to w3m-search-engine-alist in
- Run =sudo rm w3m.elc w3m-search.elc=.
- Run =sudo emacs -Q -batch -f batch-byte-compile w3m.el w3m-search.el=.
- Restart w3m or Emacs

I'll still use Gmail and some of the other Google services, but they've dropped
the ball on search, IMO (too much spam and too many content farms).  One thing
Blekko does suck at is having their homepage usable in text mode (hence the
need for the custom w3m setup).
*** DONE ScottradeELITE
    - State "DONE"       [2011-04-14 Thu 09:32]
    - State "STARTED"    [2011-04-13 Wed 22:48]
I might use this on days off for day trading and occasionally in the
evening/morning for extended hours trading.

Made a layout.  The UI sucks pretty bad though and it's obviously using some
older toolkit.  I'll switch to Interactive Brokers (my preferred by far) or
Tradestation after I retire.  In the meantime, I might activate the Level II
window, since I do more than 7 trades per month, but only after I'm sure I'll
be trading a lot regularly (I suspect I'll get hit with a fee as soon as I have
a month with a low number of trades).

- Use +SYM in a chart window to add a symbol to an existing chart.
- Use (SYM) in a chart window to add a symbol in its own plot to an existing
- Hold down left click to get the bar information window up on a chart without
  having it up all the time (which gets annoying).
- Must disable extended hours in order to chart back more than 10 weeks.
*** CANCELED bsh
    - State "CANCELED"   [2011-04-30 Sat 21:51]
This may or may not be useful when using JDEE Emacs.

JDEE is too broken for full time use, so don't need this.
*** DONE Pylint
    - State "DONE"       [2011-05-10 Tue 04:50]
    - State "STARTED"    [2011-05-10 Tue 05:55]
Using Pylint from the CLI now.  Figure out a workflow for resolving Pylint
warnings and getting imports to work properly.  Create a custom Pylint
configuration file.

Pylint tutorial: http://www.logilab.org/card/pylint_tutorial

- Typically, I'll want to run with --reports=n --include-ids=y.  The former
  usually generates a lot of scroll I don't need and the latter gives me the
  IDs of the warning, so I can look it up.
- If a warning isn't obvious, run =pylint --help-msg=<ID>=.

I was going to create a custom config file, but I'm okay with the defaults
(except, perhaps the min length for variables).
*** CANCELED Hadoop Eclipse plugin
    - State "CANCELED"   [2011-05-14 Sat 04:05]
Supposedly provides some integration for MapReduce/HDFS.

Not using Eclipse at work anymore, so skipping this for now.
*** CANCELED Maven 3.0
    - State "CANCELED"   [2011-05-14 Sat 04:06]
Wait until the new m2eclipse (m3eclipse?) is out to support this.

Not using Maven at work currently, so skipping this.  Probably look into it
again at some point in the future though.
    - State "DONE"       [2011-05-20 Fri 05:38]
    - State "STARTED"    [2011-05-20 Fri 05:29]
See if I want to define this.  I only know about the 512B block sizes used in
df and du, but I'm sure there's other effects.  As a FreeBSD-user, I'm not a
POSIX fundamentalist, but I appreciate at least partial compliance.  However,
this environmental parameter might flag behavior I don't want.

du/df: No effect for me, since I always use -k or -m explicitly.
tar: Seems to me to make more sense to stick with GNU tar standards.
patch/getopt: Was unable to locate any reference to this in the C source,
though supposedly it affects it.

As I can't really find any significant references to it in the FreeBSD GNU
source besides the stuff I don't care about, I'll skip this.

Made a task for reading the full POSIX standard.  Might be worth an attempt.
*** DONE at scheduler
    - State "DONE"       [2011-06-01 Wed 07:33]
    - State "STARTED"    [2011-06-02 Thu 05:30]
Starting to use =at= for one-off tasks, particularly for the huge dataset jobs
at work.

- Schedule jobs with something like =at midnight= or =at 3AM=.  Other date
  formats can also be used.
- This pulls up a prompt, which commands can be entered.  Be sure to use full
  paths or include =cd= commands.
- Conclude a job with C-d.
- Use =atq -V= to view pending jobs.
*** CANCELED pseudo-distributed Hadoop/Hive
    - State "CANCELED"   [2011-06-02 Thu 10:30]
Set this up on my Debian VM and switch over to it from my pre-built one.
Use this tutorial for Hadoop:


Details are also in Hadoop: The Definitive Guide, Appendix A (though it may be
outdated, since I've got an older version of the book).

Use this for Hive:


Update: Canceled, since I don't need a setup of this right now, though it's
possible later.  I might still do it anyway if I really have nothing to do some
day and feel like it.  In the meantime, I have a ton of more important things
to do.
*** DONE PeerBlock
    - State "DONE"       [2011-07-20 Wed 20:03]
    - State "STARTED"    [2011-07-20 Wed 19:59]
Installed this on Windows.  Not much to it really and it seems to work okay.
*** CANCELED w3m.el
    - State "CANCELED"   [2011-08-08 Mon 14:29]
When setting up Emacs on my work Linux VM, I noticed that w3m.el doesn't have
any of the bugs that emacs-w3m does.  However, it is missing the
w3m-uri-replace-alist, which I also use.  I think no bugs is probably better
than the extra conveniences though.

Update: After using just w3m.el for awhile, I definitely miss the conveniences
of emacs-w3m too much.  Since this is my primary web client, I think I'll stick
with it for now, unless more stuff breaks in future Emacs versions.
** Work-related topics
*** DONE Hibernate
    - State "DONE"       [2011-03-11 Fri 10:37]
    - State "STARTED"    [2010-11-12 Fri 14:48]
ORM frameworks used to be simple enough to figure out without any dedicated
studying, but as much as I'd like to attempt to get through life without it,
Hibernate is just too all-pervasive in the Java ecology to remain ignorant of
and too feature-bloated to leave to learning by osmosis (at least by my
standards).  I am, however, making a directed effort here to only learn the
basics and will revisit the subject again later if I notice too much weakness
in practice.

- Read Wikipedia page on ORM:
- Read Wikipedia page on Hibernate:
- Read the official Getting Started Guide:
- Check out the Hibernate tutorial projects linked in the above guide under
  the Preface.
- Read the book Harnessing Hibernate.
- Read the book Hibernate Recipes: A Problem-Solution Approach.
- Read some of the PDF version of Hibernate Core Reference Manual and keep it
  around for a reference.  This is the same documentation installed into
  Eclipse and available in the distribution tarball.
- Write at least one decent sample application against a MySQL database.  Maybe
  use this example, modifying it slightly:
- Find some documentation on Hibernate Eclipse integration or read a few
  tutorials on it online.
- Maybe watch some of these videos: http://docs.jboss.org/tools/movies/

Setup Notes:
- Install JBoss Tools Hibernate plugin on Eclipse.  See task "Eclipse
  customization" for some details on this.
- For a manual Hibernate install (which normally shouldn't be necessary, since
  I'll pull it in via Maven), grab a zip or tarball from:
- Don't even bother trying to use the distribution version of Hibernate -- too
  many dependencies to manually manage.

Notes (Getting Started Guide and sample projects):
- See ~/src/java/hibernate_tutorial for my version of this code.  This includes
  modifications to the original master POM to get it to build.
- The tutorial projects don't work out of the box due to JBoss moving their
  repos all over the place.  Add at least this repo to the POM:
- The tutorial also requires specifying the JDK version in a plugin block for

Notes (Quick start Maven + Hibernate + MySQL Example):
- Ran:

  mvn archetype:generate -DgroupId=com.macroexpand.hbtest -DartifactId=hbtest
  -DpackageName=com.macroexpand.hbtest -Dversion=1.0-SNAPSHOT
  -DinteractiveMode=false -DarchetypeGroupId=org.apache.maven.archetypes
  -DarchetypeArtifactId=maven-archetype-quickstart' in ~/src/java.

- Created a src/main/resources directory and added hbtest.sql, with code from:
  http://www.mkyong.com/mysql/preparing-mysql-data-for-tutorial/  This will
  also include the Hibernate XML files.
- Ran =source ~/src/java/hbtest/src/main/resources/hbtest.sql= in MySQL.
- Ran =mvn eclipse:eclipse= in ~/src/java/hbtest to generate an Eclipse

General notes:
- If creating a DAO object that you want to persist, and it has a sequence for
  a primary key, the generator tag within the id tag (with a default of
  "assigned") can be set to "increment" to not require the primary key to be
  defined in code.  If you want to actually call the sequence.nextval, then
  "sequence" works.  There's also "uuid" and several others.

To generate DAO classes:
- Enter Hibernate perspective.
- Create a new configuration with the desired database.  For Oracle 10g, add
  the Oracle 10g thin client and select the ojdbc14.jar deep within Oracle's
  install directory.  Set the hibernate.dialect in the main configuration to
  match the database type.  Test it by expanding all the databases in the
  Hibernate Configurations view.
- Go to Run|Hibernate Code Generation.  Create a new configuration here.  Set
  the console configuration to the previously created one.  Set the output
  directory to <project_dir>/src/main/java.  Have a hibernate.reveng.xml file
  ready with the tables desired to persist.  Select "Reverse engineer from JDBC
  Connection", set the package to where the new classes should go, and point to
  the reveng.xml file.  In Exporters, select "Domain code" and "DAO code".
- Save and run.  Move around the files as desired, insert the annotations
  necessary, and rewrite the session management code.

I still don't feel super confident using Hibernate.  Part of the early
frustration was mostly due to not realizing that the code generator output
almost always needs to be rewritten.  Hibernate sucks less than Spring, but
it's still a painful framework to work in.  I can see it being easy once you
internalize all the magic keywords, but I'm still not convinced that it
actually saves time overall.  I didn't complete all the tasks here, but I don't
think it was necessary mainly because I'm now not going to be using it much
(and hopefully not at all), but also because any further features I need to use
will just be the same painful process of digging through docs and message board
posts.  I may pick up some of these tasks later if I ever have to work in it
    - State "CANCELED"   [2011-03-21 Mon 02:28]
Not doing JavaScript development anymore, so don't need this.
*** DONE Python
    - State "DONE"       [2011-04-01 Fri 09:58]
    - State "STARTED"    [2011-03-14 Mon 13:43]
Already sorta know Python, and have been using it lightly for awhile now.  But
since it's now a work language for me, I need to refresh what I already know,
and fill in the basics that I don't.

- Read/do "Learn Python the Hard Way".
- Read some of "Python: The Essential Reference".
- Maybe do the practice problems from:
- Use http://docs.python.org/library/index.html (and the other documentation
  there) regularly while writing code.

By the end here I should be pretty comfortable with full scale Python project
programming.  Python isn't a hard language or anything, so I'm not going to
really do any super-dedicated studying.

I'm not a big fan of Python's OOP model.  There's a lot of crufty design here.
The syntax is also a bit awkward.  It's nothing terrible, and easy to get used
to, but for being one of the supposedly great new dynamic languages, it's

Decided to skip the 3rd book since the returns on that would be minor.  It
looks like some good practice though, so I may do it anyway later.
*** DONE PostgreSQL
    - State "DONE"       [2011-04-02 Sat 12:00]
    - State "STARTED"    [2011-03-30 Wed 13:09]
Install this, create a sample database, and maybe write a script or two.  I'll
give the manual (available on the project site) a skim.  I've used PostgreSQL
before plenty and using it is no more difficult than MySQL, so this is mainly
just to make sure I can set it up and admin the database.

Reading parts of the PostgreSQL 8.4 manual, online at:

Setup notes:
- Installed PostgreSQL 8.4 on Debian.  I may also want postgresql-doc-8.4 and
  pgadmin3.  If I install pgAdmin, I'll definitely want postgresql-contrib-8.4.
- =sudo -u postgres psql= to log into the database.  This won't require a
  password at fresh install.
- Set a password for the postgres role with:
- To enable some pgAdmin functions, run =sudo -u postgres psql -d postgres <
- To enable remote access, edit /etc/postgresql/8.4/main/postgresql.conf with
  listen_addresses = '*', then edit /etc/postgresql/8.4/main/pg_hba.conf,
  adding the line =host all all md5= (this is for the 192.168.1
  subnet -- change to whatever makes sense).
- Address ident authentication issues by editing
  /etc/postgresql/8.4/main/pg_ident.conf.  This maps system users to DB users.
  Or, more easily, just edit pg_hba.conf, comment out ident lines, and add
  =local all postgres trust= and maybe =host all all trust=.
- Restart PostgreSQL with =/etc/init.d/postgresql restart=.
- Now I should be able to connect with pgAdmin and/or create databases and
  login with psql as my normal user.
- For example, create a database with =createdb -U postgres bmdb=, then log
  into it with =psql bmdb postgres=.
- If I want to be able to run PostgreSQL commands and log into psql without
  specifying a user, I can just add a PostgreSQL user of the same name as my OS
  user.  Alternatively, I could set $PGUSER to whichever login I want.

- The built-in point type is a coordinate pair, which could be useful for
- Insta-load data from text files using COPY, e.g. =COPY weather FROM
- Use INHERITS clauses in CREATE TABLE statements to create a table that has
  all of the parent's columns, plus some additional ones.

pgAdmin sucks pretty bad, but it gets the job done most of the time.  I'll
probably try to stick to the command line as usual.

Of the PostgreSQL manual, read the sections I and II.  A painfully boring read,
but this manual will be good to keep around for reference.
*** CANCELED Spring Framework
    - State "CANCELED"   [2011-04-05 Tue 09:02]
    - State "STARTED"    [2011-01-23 Sun 22:53]
Ugh, Spring...  Hopefully I can position myself in my remaining work years to
minimize or exclude this from my day.

- The Wikipedia page on Spring: http://en.wikipedia.org/wiki/Spring_framework
- This introduction:
- The majority of Spring Framework 2.5 Reference Manual:
- The book Spring Recipes: A Problem-Solution Approach (2nd Ed.).
- The What's New chapter of the Spring Framework 3.0 Reference Manual:
- Consider reading Spring Enterprise Recipes if I feel still a bit lacking
  after the above.

PDFs of the Reference Manuals are also available at:

I seem to have managed to sufficiently alter my work such that Spring is no
longer necessary, at least for now.  I did do some of the sub-tasks here, but
it's unlikely I'll retain anything in a few months, so I'm calling this
canceled.  It's entirely possible that Spring could force its ugly presence
upon me again in the future, at which point I'll reopen this.
    - State "CANCELED"   [2011-04-19 Tue 16:26]
Not using.  Might read up on it anyway later, as it might be a solution for
some of the low through-put/low latency applications -- unlike Hive which is
for the reverse.
*** DONE Apache Hive
    - State "DONE"       [2011-04-29 Fri 05:35]
    - State "STARTED"    [2011-04-21 Thu 07:53]
Hive is a "data warehouse infrastructure built on top of Hadoop".  Data is
stored in HDFS (with all the benefits that entails) and ad-hoc querying is
provided using HiveQL (an SQL-like language).  Queries are translated into
MapReduce jobs.  These can be slow (depending on the cloud and data), thus it's
not suitable for real-time querying, nor does Hive provide the majority of
RDBMS features (even basic ones, like foreign keys).  However, it is a useful
method for storing and interfacing with data on Hadoop, as it abstracts a lot
of the lower-end programming necessary when writing MapReduce code and
simplifies data management.

- Grab the source and read the README.txt.
- Read everything on the Hive wiki (starting at
- Find some extra info on UDFs/UDAFs.
- Watch the Hive videos linked on the Getting Started page.
- Read all of the example queries to make sure I didn't miss any important
- Read the entire Hive commits, user, and dev mailing lists archives
  (pre-Hadoop sub project).  Only reading stuff that is relevant to Hive
  architecture or HiveQL.
- Might read some of the source code.

- Either run =git clone https://github.com/apache/hive.git= or =svn co
  http://svn.apache.org/repos/asf/hive/trunk hive= (at least, for trunk).
- =cd hive_trunk=, then =ant clean package=.  This takes forever, since ivy has
  to grab a ton of dependencies.
- build/dist in now ready to deploy somewhere.
- Instead of the above, just grab the binary distribution and upack it
- Set $HIVE_HOME to wherever I deploy Hive and add $HIVE_HOME/bin to $PATH.
- Make sure Hadoop is already properly installed and working (and that
  $HADOOP_HOME points to the right place with $HADOOP_HOME/bin in $PATH).
- Run these commands to create the expected Hive HDFS directory structure:
  - hadoop fs -mkdir /tmp
  - hadoop fs -mkdir /user/hive/warehouse
  - hadoop fs -chmod g+w /tmp
  - hadoop fs -chmod g+w /user/hive/warehouse
- Edit $HIVE_HOME/conf/hive-site.xml (compare these to the defaults in
- Add any user-specific Hive startup options in $HIVE_OPTS (added "-hiveconf
  hive.root.logger=ERROR,console" for my setup).
- I had problems compiling Hive from source, and just grabbed the binary
  distribution.  However, my problems were network-related, so I may retry
- Modified .emacs to include:
  ;; Add an auto-mode for the typical HiveQL extension.
  (add-to-list 'auto-mode-alist '("\\.hql$" . sql-mode))

General notes:
- HiveQL-specific notes in test_ddl.hql, test_dml.hql, test_q.hql, and
- See the two sets of CLI flags with =hive -h= and =hive --help=.
- Use SET to set various Hadoop configuration variables.  Use =SET -v;= to list
  all variables/settings.  Just =SET;= will list the non-default variables.
- For processing a job locally, which can be quicker for a very small dataset,
  use =SET mapred.job.tracker=local;= (only works in >0.7).  This uses space in
  mapred.local.dir.  It's also possible to enable this to automatically use
  local mode for small data (<128MB, <4 map tasks, <2 reduce tasks by default)
  with =SET hive.exec.mode.local.auto=true;=.  These are disabled by default.
- Logging: Can configure the logger for the session with hive.root.logger,
  e.g. =-hiveconf hive.root.logger=INFO,console=.  This is an exception to the
  ability to set a variable with SET (since it's initialized at start).  Errors
  by default go to /tmp/<user>/hive.log (on the local FS).
- Java regexes work on some commands like =show tables '<regex_string>'=.  See:
- Due to the use of Derby, only one connection can access Hive (either through
  the CLI or through HQL scripts).  A connection creates lock files in
  $HIVE_HOME/metastore_db.  One way around this currently is
- Lots of HiveQL examples in build/dist/examples/queries and more in the source
  at ql/src/test/queries/positive.
- =hive -f= doesn't like dangling comment blocks (comment blocks without any
  code under it).
- If using Hive to run Python scripts, use sys.path.append(os.getcwd()).
- In the USING..AS clauses (where you can put a Python script), pretty much
  anything that writes to stdout can be here (e.g. /bin/cat).
- Hive now supports WHERE..IN.  Prior to that, it required ~find_in_set(col1,
  'abc,xyz') <> 0~, with coalesce() if the column has NULL values.
- Full list of Hive types: http://wiki.apache.org/hadoop/Hive/HiveQL/Types
- To use external variables, e.g. ~describe ${hiveconf:var}~ in a file called
  t.hql, run the script with =hive -hiveconf var=mytable -f t.hql=.
- Date types aren't yet supported.  Must use strings instead for now.
- See the EXPLAIN plan for any query with ~EXPLAIN [EXTENDED] <query>~.
- The name node will be in safe mode 30 seconds after startup.  Turn this off
  manually with =hadoop dfsadmin -safemode leave= or just wait.
- Use ~insert overwrite local 'local_directory' select ...~ to dump stuff to
  local files.  This output will have control characters in it, so I usually
  insert commas in the select and then filter out the \x01 chars with a Python
  script that does a ~re.sub(r"[^a-z0-9-';.,]", "", line)~.

UDFs (user defined functions):
- Get a description of functions with ~describe function <function_name>;~.
  ~describe function extended <function_name>~ for full details.
- There's some weird rules with HiveQL UDF/UDAF use.  Keep this reference for
  work-arounds: http://wiki.apache.org/hadoop/Hive/LanguageManual/UDF
- Start Hive with =--auxpath /path/to/file.jar= to add jars to the classpath.
  An alternative is to define $HIVE_AUX_JARS_PATH (comma delimited).  This is
  useful for packaging UDFs for use within Hive.  If doing this, it's then
  necessary to do ~create temporary function <func_name> as
- To call a UDF by itself, do something like ~select to_date('1900-01-01') from
  <some_small_table> limit 1;~.  Ideally, some_small_table would just have one
  row and it might make sense to create a dummy table.
- UDFs can be written in Java or Python (and other languages).
- A UDAF is an aggregate function, for which there are special considerations
  for (due to MapReduce).  A UDTF is a table-generating function.

I'm now able to be productive with Hive.  Read some of the mailing list but it
seemed like a non-optimal use of time, as was reading the source.  The rest of
the expertise will come with using it all the time.  I'll still read the Hive
wiki and mailing list occasionally when I have some free time though.
*** DONE Apache Hadoop
    - State "DONE"       [2011-05-06 Fri 06:22]
    - State "STARTED"    [2011-03-21 Mon 02:34]
Need to know this in great detail.  I'll call this done when I'm familiar with
most of the common settings, know how to load stuff into HDFS, have
internalized the HDFS basic commands, understand Hadoop internals to some
extent, and have a list of online resources to consult when I need detailed

Hadoop involves two components: HDFS and MapReduce.  My approach is:
- Survey the Hadoop ecology, learning the problem space it addresses and how it
  fits in with other cloud computing technologies.
- Read up in detail on HDFS.
- Install Hadoop on a virtual cluster.
- Read up in detail on MapReduce.
- Find the Java APIs to program against Hadoop.
- If I have time, write some practice code.

- Attended a work class on this topic.  This was pretty good for an overview.
- Reread the class slides later.
- Watched a few videos online about various Hadoop stuff and Google's
  MapReduce.  There's a pretty good Google Code video series called "Cluster
  Computing and MapReduce".
- Read the Hadoop wiki overview.
- Read this Hadoop Tutorial: http://developer.yahoo.com/hadoop/tutorial/
- Read the book "Hadoop: The Definitive Guide".
- Read the MapReduce tutorial:

It turns out I'm not currently directly writing any Java code against
MapReduce/HDFS (only Hive and Hadoop streaming in Python), so I'll skip
mastering that for now and come back later and finish it.  I'll also defer
setting up my own psuedo-distributed cluster (at work, admin is handled
*** DONE Weka
    - State "DONE"       [2011-05-09 Mon 08:52]
    - State "STARTED"    [2011-05-06 Fri 07:17]
Weka is a suite of machine learning algorithms.  I've used this back in grad
school, but that was a long time ago.


- Read Wikipedia page on Weka:
- Read Weka Manual 3.7.3.
- Review all of the algorithms used by Weka.

- Just installed binary version via apt-get on GNU/Linux.
- Ensure that weka.jar is in $CLASSPATH.

- See book notes under Weka Manual entry.
- Generally, it's much easier to just use the Weka GUI to select parameters and
  such, but running =java weka.<package.class>= is pretty good about showing
  them too.  Flag input files with -t.
- I see many possibilities using Weka for writing trading bots.
- Kappa statistic (Cohen's kappa coefficient): A statistical measure of
  inter-rater agreement.  1.0 signifies complete agreement.
- A history of algorithms and flags used gets written to weka.log.

Couldn't find a list of all of Weka's algorithms with descriptions.  I might
make one of these myself later, but that's a lot more work.
*** CANCELED jQuery
    - State "CANCELED"   [2011-05-10 Tue 05:57]
Deployed form in ~/public_html/inc/jquery-1.4.2.min.js.

While jQuery would be useful to know in general, I don't write JavaScript at
work anymore, and thus can put this off until later (by which time, there may
be something better anyway).
*** DONE Afghanistan war
    - State "DONE"       [2011-05-24 Tue 06:16]
    - State "STARTED"    [2011-05-20 Fri 07:57]
I already know a lot about this, but now that it's my job, I'll add some more
focus on it to fill in the gaps.  Skipping the Soviet-Afghan war background as
I already know that in great detail.

- Update on unclass recent war history.  Using The Institute for the Study of
  War papers from the last year, mainly.
- Read: http://en.wikipedia.org/wiki/Pre-Islamic_period_of_Afghanistan
- Read: http://en.wikipedia.org/wiki/Islamic_conquest_of_Afghanistan
- Read up on differences between Shia and Sunni Islam.  Some info here:
- Read:
- Read up on the Taliban and various factions.
- Read up on the various other groups: IMU, LeT, etc.
- Afghanistan geography.  Maybe grab a provincial map and keep filling it in
  until I can do it by memory.  At least become familiar with FATA provinces.

- Historic Bactria, supposed birthplace of Zoroaster, was the origin of the
  Kushan empire and now the modern day Balkh province.
- The main differences between Shia and Sunni: Shiites believe only the 4th
  caliph, Ali, and his heirs are the rightful successors of Mohammad, whereas
  Sunnis believe Abu Bakar (and 3 others, including Ali) held that position.
  Also, Shiites believe the Mahdi is here and in hiding, whereas Sunnis believe
  he hasn't come yet.  In addition to these, there are numerous small cultural
  differences and which hadiths (narratives) are accepted.
- The Taliban are anti-Shia and primarily Pashtun.
- The primary Taliban division is between TTP (Tehrik-i-Taliban Pakistan) and
  Afghan Taliban.  The primary difference is the theater (FATA
  vs. Afghanistan).  Both factions are enemies of Iran (for the most part), and
  TTP is currently in open conflict with the Pakistani regular army.
- IMU seems like not a significant entity on its own, though its tight ties
  with the Taliban bolster its fighting strength a little.  LeT is primarily
  anti-India, and not a huge player in the Afghanistan war.

Decided to skip the province memorizing for now.  After all this reading, I
know where most of the important ones are and recognize their names, which
should be enough.  I'll try to read at least a paper about the war every few
weeks to keep up on the latest.
*** DONE Apache ZooKeeper
    - State "DONE"       [2011-05-29 Sun 10:24]
    - State "STARTED"    [2011-04-21 Thu 07:37]
Just need to know about what it does, not the specifics on how to setup/admin
it (though knowing that as well might be nice).

ZooKeeper is a service and library for building distributed data structures.  A
number of idioms exist for this, and ZooKeeper implements these for you.  After
reading the chapter on it in Hadoop: The Definitive Guide, reading the intro
pages on the ZooKeeper wiki, and reading some Cloudera blog posts, I still am
not completely sure how it integrates with Hadoop, or even if it does, but
since I'm not using it at work, I'm capping my effort here.
*** DONE read all RHEL info docs
    - State "DONE"       [2011-06-13 Mon 10:06]
    - State "STARTED"    [2011-05-10 Tue 06:17]
Read every info page on RHEL.  Doing this between Hive queries at work.  Skip
the C library info pages.  The big ones are the Emacs Manual, which I already
read, and the two elisp manuals (though apparently the tutorial is missing on
that version of RHEL), which I broke into separate tasks.  This isn't really a
work-related task, but I wouldn't be doing it if not sequestered in a SCIF all

Read the info page for every GNU utility that has one, provided it was
something I didn't know completely.
*** DONE read all RHEL manpages
    - State "DONE"       [2011-07-08 Fri 09:39]
    - State "STARTED"    [2011-06-13 Mon 10:41]
Might as well, since it's mildly productive and passes the time.

Notes (incomplete due to not having this file on hand):
- anacron is similar to cron but is intended for machines that are not always

Done for now.  Read a ton of these, but didn't learn much.  May reopen this
later if I find myself stuck on an RHEL box all day.
*** DONE Udig
    - State "DONE"       [2011-07-26 Tue 14:33]
    - State "STARTED"    [2011-07-25 Mon 15:11]
Installed on Windows.  Doing the built-in tutorial, which includes some sample

Finished the Quick Start tutorial.  I can probably just lazy-load the rest.
** Games to play
*** DONE Light Crusader
    - State "DONE"       [2011-02-27 Sun 20:10]
    - State "STARTED"    [2011-02-27 Sun 19:47]
Jumping puzzles in an RPG = me quit.
*** DONE Sudoku
    - State "DONE"       [2011-03-30 Wed 00:19]
    - State "STARTED"    [2011-03-18 Fri 11:18]
Never played sudoku before, so giving it a try.  Installed the console version
on FreeBSD.

An okay time-waster.  Not much thinking involved though.  It's possible for a
"fiendish" difficulty game to have a valid solution given the set cells, but
that solution not be the one the game determines to be a correct answer.  I
consider this mode bugged as a result.
*** DONE Fallout: New Vegas
    - State "DONE"       [2011-04-09 Sat 20:48]
    - State "STARTED"    [2010-12-17 Sun 20:34]
IMO, better than Fallout 3 overall and a great game, but still has some
problems.  This game captures the original Fallout feel better than 3 (not that
I'm particularly hung up on that), has vastly improved weapons, and is just a
more interesting world to interact with.

- The true-to-the-series, massive collection of bugs everywhere.  Even with the
  patch, any play-through encounters a ton of game freezes, quest system bugs,
  stuck NPCs, etc, forcing reloads and restarts.
- Numerous graphical issues like with draw distance and model clipping.
- Not many of the NPCs really had all that much character.  The previous
  Fallout games weren't that great at this either, but 3 did it slightly
- Many areas have almost nothing to do, as if they were just slapped together.
- Less game real estate than 3, which itself was a bit lacking for my tastes.
  Particularly in the western desert setting, stuff should have been way more
  spread out.  Both Bethesda games squish real life geography all close
  together.  Boulder, CO is over 700 miles from Las Vegas, NV, for example, not
  the approximate 1 mile it seems to be in the game.
- Other annoying geographical errors.  The desert around Las Vegas is very
  flat, not surrounded by mountains.  Like with the distances, the cities, Lake
  Mead, Nellis, etc. are all an astronomically small fraction of what they are
  in real life.
- Way too many houses/buildings are boarded off.  This is just lazy,
  particularly since they already had all the previous game's models to use.
  All they'd have had to do is map edit them up.
- No really decent housing (that I found so far).  I ended up moving into the
  gas station at Goodsprings since it was far superior of a location than the
  other bases I got.  The Lucky 38's upgrade menu was also bugged and unusable.
- Only 3 casino games (+1 custom game)?  At least craps should have been
  added.  The way it is now, casinos get old pretty fast.  The games that were
  included were done well, however.
- It's not humanly possible to reload a single action revolver that fast (same
  goes for a lot of the other guns).
- The ending is kinda bleh.

May play again some day in power-game mode.
*** DONE Syndicate Wars
    - State "DONE"       [2011-05-14 Sat 03:28]
    - State "STARTED"    [2011-04-16 Sat 22:21]
Played this a lot back in the mid-90s, but never beat it thanks to the
timebombs on the orbital station.  I'll also try the Church campaign.

- Grab the Syndicate Wars DOSBox config from:
- Install DOSBox if it isn't already, and create a shortcut to DOSBox.exe.  Put
  the .conf file in the DOSBox install directory.  Add =-conf
  dosboxSyndWars.conf= to the target line.
- Create an install dir and start DOSBox using the shortcut and run =mount c
- Put the install CD in and run =mount d e:\ -t cdrom -usecd 0=.
- Go to the D: drive and run install.
- Set both sound and music drivers to SB16 and configure automatically.  The
  tests should work.
- Do a full install.
- Edit the play.bat file to include the line =mount d e:\ -t cdrom -usecd 0=
- Edit the shortcut target to include =c:\bin\games\swars\swars\play.bat=.
- Before playing, at least change the resolution to 640x480, activate deep
  radar, and remap the camera to WASD, zoom to TG, and group agents to Q.
- Set cycles to around 70000.
- Tried the native port as well, but it runs too fast.
- Can't beat the last 3 missions (you have to do them all in a row without
  losing anyone).  I'm sure it's doable, but I don't feel like doing it over
  and over.  Backing up the saved game, and might try again one day when I
  don't have a job.

Great game, even now.  Supposedly a sequel is finally in the works, so will
keep an eye out for that.
*** DONE Vampire the Masquerade: Redemption
    - State "DONE"       [2011-06-03 Fri 23:26]
    - State "STARTED"    [2011-05-29 Sun 14:09]
Played this 10 years ago, but ran through it quickly, using cheats, and getting
the bad ending.  Doing it properly this time, with some treasure chest scumming
and powergaming of stats/skills/gear.

Not a great game, but still a good one even now, despite a lot of bugs and
problems.  My power-gaming run made completing this extremely easy.  Probably
could've done it solo.
*** DONE Vampire the Masquerade: Bloodlines
    - State "DONE"       [2011-06-10 Fri 23:42]
    - State "STARTED"    [2011-06-04 Sat 20:53]
I recall not liking this game back in 2004, but will give it another try.

Update: Now I remember why.  This game isn't terrible, but is has too many
glitches and is generally a stupid gaming experience.  Quitting.
*** DONE Stars! 2.7
    - State "DONE"       [2011-07-10 Sun 03:28]
    - State "STARTED"    [2011-07-03 Sun 18:36]
Used to play this 4x space game 10+ years ago quite a bit.

Note that the serials I had from before don't work.  First ensure the directory
isn't read only, then use "E4TP99BW".  If it's still being ghey, delete the
GlobalSettings value in the STARS.INI file created in the C:\Windows directory,
then restart and re-enter the serial.  This is also a 16-bit game, so it
doesn't run on 64-bit versions of Windows.  Playing it on an XP VM.  There's an
active channel for the game on Freenode that was helpful for a few things too.

Played a few scenarios.  Definitely a great game and I'll keep it around to
play occasionally.  There's a couple things I'd change, but overall it's just
as good or better than most modern 4x games.  My main complaints are just the
amount of mouse clicking involved despite some advanced automation and the fact
that once the screen gets really full of stuff, it's hard to tell what's going
on without a lot of clicking or digging through report screens.
*** DONE Deja Vu
    - State "DONE"       [2011-09-24 Sat 11:12]
    - State "STARTED"    [2011-09-21 Wed 14:02]
Playing the NES port.  Already beat it long ago, but it's been like 20 years.

Crappy game.  Not sure why I liked it as a kid.
*** CANCELED Jones in the Fast Lane
    - State "CANCELED"   [2011-10-11 Tue 11:13]
Tried the Flash version of it to see if I liked the game style.  This could've
been interesting, but I'd rather it just be a life sim and not a competition
against another player or the computer.  The actual game content itself is
pretty bleh too.
*** DONE Defense of the Ancients
    - State "DONE"       [2011-12-07 Wed 10:39]
    - State "STARTED"    [2011-11-07 Mon 13:22]
OK creep/tower mod.  Doesn't have the long-term appeal that straight tower
defense does though, at least for me.  The biggest problem is the computer
controlled characters.  They play either impossibly good or impossibly stupid.
** General life goals
*** DONE rebuild firearms collection
    - State "DONE"       [2011-02-13 Sun 13:43]
    - State "STARTED"    [2010-11-13 Sat 12:25]
I'm not going to build a full collection and will only own 3 handguns, each
which serves a distinct purpose:
- Sig Sauer p228: Shoots a cheap, reasonably-effective anti-personnel round.  I
  can effectively engage multiple targets at ranges up to 50+ yards with this.
  I'm only firing this just enough to remain competent with it, as I find
  semi-autos predictably boring to use (especially at ranges).  Accessories: 3
  magazines, an OWB holster, 500rds FMJ, and 50rds JHP.
- Ruger New Model Single Six with 4 5/8" barrel: Target and utility gun.
  Solidly-built enough to last the rest of my life.  Shoots just about any .22
  ammo available.  Post-retirement, this will be handy for shooting squirrels,
  rabbits, and other animals that eat food intended for me (though a rifle
  would be better for this).  The extra .22 magnum cylinder enables it to take
  out medium-sized targets if necessary.  Being a .22, it's main purpose is for
  practicing cheap.  I'll be putting many thousands of rounds through this
  thing, which is why this model was selected and why it was bought new.
  Accessories: western-style holster with belt, 5000rds LRN, 100rds HP, 50rds
  shotshell, and 50rds JHP .22 magnum.
- Colt Detective Special: Concealed carry revolver.  This one was selected
  since the Colt D-frame is roughly between the S&W J- and K-frame, and holds 6
  rounds instead of the J-frame's 5.  Colt DA revolvers also tend to increase
  in value faster than inflation, which is a nice plus, though I intend to keep
  mine forever.  Accessories: IWB holster, 300rds FMJ/LRN, and 50rds JHP.

Finished buying all of these and most of the accessories.  No rifle means no
long range capability, and I'll add one when/if I get a retirement property.  I
wouldn't want to get something now that I can't use later.  I got most of the
accessories, but not all of the ammo, which I'll get later since that much
would weigh a lot.

Update 2012-05-20: Sold the SIG P228 for $500 to a guy I met in Afghanistan.  I
may replace that with a 1911, but I don't really feel unarmed with just the
revolver.  I noticed I don't like firearms as much as I used to when a kid, so
maybe this is fine.

Update 2012-09-24: Bought a Colt Series 80 Government Model.  It's pretty nice.

Update 2012-11-05: Though I wasn't in the market for it, I found a good deal on
an FN SCAR 16s from a desperate seller.  It's definitely a nice rifle.
*** DONE $3/day food
    - State "DONE"       [2011-02-28 Mon 15:15]
    - State "STARTED"    [2011-01-05 Wed 10:02]
Apparently it's possible to even do $1/day food, but that'd be tough in my area
with food prices so insanely high and with no ability to grow any significant
quantity of food myself.  I've already been trying to reduce these costs and am
currently at $5.28/day.  If I can manage this, it'll save over $800/yr.

Some methods:
- Eat as much food at work as possible, except candies and donuts (since that
  conflicts with my other goals).
- Buy tons of tomato soup cans whenever they're under $1/each (preferably
  between 50 and 75 cents).
- Buy large bags of potatoes of size 10lbs or more.  10lbs should cost $5 at
  most.  Buy large bags of rice of at least 25lbs.
- Make salads from various combinations of: cucumbers, green peppers, lettuce,
  carrots, radishes, and onions.  Use vinegar, oil, black pepper, and oregano
  instead of normal salad dressing.  I can skip the lettuce to save some money
  though, since it doesn't really provide anything I need to live off of.
- Make sandwiches from $1/loaf bread and tomato, jalepeños, and mustard.  Get
  some plastic container to bring these to work.
- Buy the cheapest tortillas and make vegetable burritos out of them.  Cans of
  refried beans that are under $1 are also good in combination with these.
- Buy the cheapest, largest box of spaghetti.  Make sauce with tomato paste,
  water, and various spices.
- Whenever I have some random leftover vegetables, combine them with tofu and
  make some stir-fry.  Never eat more than half the block myself though (save
  the rest if there's no one else available to eat it).
- At least eat some non-grain products every day.  Saving all this money won't
  pay off if I end up all sickly and malnourished.  However, pre-modern day
  humans attained the majority of their sustenance from grain (several times
  the percentage of today), and I'm okay with doing the same.

Like other stuff here, this change is permanent (unless I find myself
overwhelmed with piles of cash at some point in the distant future).  If I ever
want a nice meal or to eat out, I'll need to reduce the money expended on other
days to compensate for it.

Successfully implemented this, at least for food.  Miscellaneous supplies like
bathroom products are still adding a bit to my expenses though.  However, I've
discovered I can purchase most of these at the dollar store and reduce their
cost to around $10-15/mo.  I should probably just do a full monthly budget
instead of attacking each expense by itself though.
*** DONE balcony garden
    - State "DONE"       [2011-03-21 Mon 03:03]
    - State "STARTED"    [2010-12-24 Fri 11:15]
As much as I hate doing this, it's a smart thing to do for these reasons:
- Food prices keep going up.  I've seen up to a 33% rise in some items I
  regularly buy just in the last 3 years.  For the really expensive things, I'm
  just going to stop eating them.  Even many fresh produce prices are painful
  now.  Just raising a few plants in buckets, if successful, will easily put
  another hundred dollars or more right in my pocket every year.
- Having a garden that takes care of a good portion of my food needs is an
  integral part of my retirement plan.  I need to start developing those skills
  as soon as possible.
- A lot of fresh produce is waxed and not available otherwise.
- I know from eating relatives' garden vegetables that they taste considerably
  better, as they weren't picked unripe.
- More money saved = earlier retirement.

The plan is to spend as little as possible.  So far, I only bought one garden
trowel for $3 and one pack of tomato seeds off Amazon for $1.60.  The
containers are spare cat litter buckets and drink containers cut to size.  The
potting soil I'm stealing from around the neighborhood.  The rest of the seeds
are from vegetables I was eating anyway.

Potentially good balcony plants to try: garlic, tomatoes, green peppers,
jalepeño peppers, cayenne peppers, radishes, scallions.

Results: Cat grass is easy to grow, but doesn't really save any money.  It does
keep cats from eating my other plants though.  In the winter I planted 1
garlic, 2 tomatoes, 2 green peppers, and 5 radishes.  Most of these died due to
cat eating.  Only the garlic worked out okay.  It turns out I don't have enough
sunlight to grow most plants, especially indoors.  I'll stick to garlic and
radishes until I move.  Thus, I'm not really saving much money, but I did learn
a few things.  However, I can produce some food and it'll save a few
dollars/month which is better than nothing.
** Macro-goals
*** DONE attain competence in new job skills
    - State "DONE"       [2011-03-14 Mon 10:28]
    - State "STARTED"    [2010-03-12 Fri 10:17]
All other major tasks take a backseat to learning everything needed to perform
work with minimal effort when starting a new job.  The goal here isn't to
attain complete mastery, as I can pick that up as I go along without much
effort.  This entry is to keep track of overall progress towards this goal --
see individual topic entries for details.

- base JavaScript language
- Tomcat
- Ext JS
- base Java language refresh
- survey intelligence analysis
- ActiveMQ
- Maven
- super-brief Nexus survey
- REST services
- Hibernate
- statistics
- statistical learning models
- Spring
- R
- JUnit

Optional topics:
- Jackson
- Hudson
- Mockito

Almost finished this, but since I'm moving to a different project, I'm going to
start a new macro-goal with all of those things.  I do still want to learn R
and statistics in particular a bit better, but that can wait.  For about a year
of self-directed learning, this went pretty good.
*** DONE attain competence in new project skills
    - State "DONE"       [2011-07-25 Mon 08:47]
    - State "STARTED"    [2011-03-30 Wed 10:17]
Moving to a DARPA project, so I'll need to learn an mostly entirely different
set of work-related technologies.  This could last up to two years, so even if
I spend half of that time getting really good with this stuff, it will be time
well spent.  Most of these things are cloud analytics-related.

- Python
- PostgreSQL
- Apache Hadoop (HDFS and MapReduce)
- Apache Hive
- Weka
- HBase
- Tableau
- Apache ZooKeeper
- Mahout
- RapidMiner

Ancillary tasks:
- Setup a work Debian VM.
- NSA CloudBase
- Finish learning R.
- Finish learning statistical learning models.
- Finish learning statistics.

After this, there's a list of related technologies that aren't actively used at
work, but would be useful to at least know in outline (for technology selection
purposes and larger context).  These are listed in the Work-related Topics

Still need to do more math self-learning and there plenty of ancillary stuff to
learn, but I've got all the main topics down now.
*** DONE year-end review for 2011
    - State "DONE"       [2012-01-02 Mon 04:54]
    - State "STARTED"    [2012-01-02 Mon 04:07]
Observations for 2011:
- Work life was divided into working on RTRG for a few months, changing jobs to
  DARPA, then deploying to Afghanistan.  Once the last phase began, work and
  normal life merged.
- Net worth more than doubled (multiplied by 2.23).  I'm well ahead of schedule
  on getting my target amount for retirement (by about 1.5 years).  More
  importantly, I've secured a position that reimburses me at a rate where I'll
  hit that amount around mid 2012.
- Successfully made a ton of money in an overall flat market for the year.
- Further optimized possessions for an estimated net reduction of around 20%
  (by weight).
- Optimized several aspects of consumption, which is pretty close to minimal
  now.  There's are a few things to fix here remaining, but none that I can act
  on in the current situation since I live out of a suitcase in random places.
- Mastered Python and further developed several other work-related knowledge
  bases: cloud computing, statistics, algorithms, and functional programming.
- Developed a passable public speaking ability.  Though I'm still no master at
  this, I can now deliver a speech or brief to a full room.  As I suspected,
  this was just a matter of practicing it.
- Learned how to survive (so far) in Afghanistan and among the military.
- Overall, this year was about maximizing net worth, which was the intended
  primary goal.  I did manage to develop some permanently useful skills on top
  of that (and some that will be useless later).  In my opinion, this vastly
  tops the productivity of last year and all major decisions made were the
  right ones.  The trade-off has been that life thoroughly sucks now, but
  that's only temporary.

Major goals for next year:
- Finish acquiring retirement target amount.
- Take a huge amount of time off once I get back from Afghanistan.  By then,
  I'll have gone 1.5 years without a single day off, and will need that time to
  flush some garbage out of the brain.  All warzone-specific knowledge can be
  safely deprecated at that time.  Also use this time to rebuild normal life.
- Do whatever is necessary to be able to stay in Afghanistan until the end of
  November, 2012 to save money on taxes.  If this doesn't work out, it won't be
  a disaster, but I do absolutely need to stay in country until August.  Suffer
  whatever pain comes in the meantime (and there's sure to be a lot of it).
- Maybe come up with a detailed exit plan from work.  Currently, this involves
  going back to DARPA for awhile.  During that time, I'll come up with the
  specifics.  If I do that, this will get pushed off to next year, which is
  fine too, as it's better to get the plan right rather than sooner.
- Do taxes remotely.
- Do the best I can with learning new stuff.  If everything goes according to
  plan, I'm somewhat writing off 2012 from learning much of anything.  If I can
  maintain my existing knowledge/skills, then I'll be happy with it.  However,
  I do occasionally find myself with free time, so I'll be making as best use
  of that as I can.  Once I get back to the US, the master plan will go back
  into effect.  I've found it's tough to develop Lisp without internet
  connectivity, so I'm switching back to Haskell for the time being.
- Keep total expenses for the year under $4k (slightly more if I have to pay
  bribes for VISA renewals).
- Don't let being in Afghanistan cause any permanent brain damage.
- Don't die.

* Project List (2010)
** Books: Computer Science/Programming
*** DONE The Art of Unix Programming
    - State "DONE"       [2010-02-05 Fri 00:26]
    - State "STARTED"    [2010-01-29 Fri 14:55]
Once I realized this book wasn't going anywhere and was mostly filler, I
started skimming it pretty quickly.  There's a few okay parts later on, but
even these are shallow introductions to their respective topics.

Wrote the following for this book's amazon.com review:

As someone who's programmed on Unix for many years, I've known about esr for
some time, and probably should thank him for being part of a chorus that
encouraged me to learn things like Lisp. That said, my honest opinion of this
book is that it's a waste of paper and approximately the quality of a typical
esr blog post.

First of all, this book is not really about Unix programming. A full half of it
is dedicated to rehashing the Unix philosophy, history, and community. Yes,
these topics should come up, but at some point I want to read about Unix
programming, which is why I am reading a book with that phrase in the
title. None of this stuff has anything to do with programming, and is just as
applicable to end users.

The other half is supposedly programming related, but upon closer inspection,
mostly isn't. Major topics include things like tools, config file formats, and
a lot of general stuff that applies in non-Unix development too (like VCS and
network protocols). Where's the system programming tips, POSIX standards,
standard libraries, ioctl, BSD sockets, security considerations, and any number
of hundreds of other things anyone who's programmed on a Unix-variant
encounters? Yes, the book claims to not want to talk about these things, but
guess what, that's what Unix programming is all about.

Languages (you know, the thing you actually program in) are completely glossed
over, except to just list a few common ones. Half of the ones mentioned are so
portable, that programmers in them can ignore OS peculiarities the vast
majority of the time (Java, Python, Emacs Lisp). C, C++, and shell are very
tightly coupled to Unix, and much could have been said here, but isn't. Instead
of code, we're treated to reams of config file examples and other filler.

The various aspects of The Unix Way could have been stated in a single
chapter. Someone interested in becoming a Unix programmer needs to know where
to go to find documentation, what development resources he has available, and
other practical things. An MS programmer reading this book would be just as
clueless on how to start programming on Unix as before. Go pick up Advanced
Programming in the UNIX Environment if you want to learn this subject.
*** DONE Essential C++
    - State "DONE"       [2010-02-26 Fri 08:25]
    - State "STARTED"    [2010-02-23 Tue 10:44]
Skipped the first few chapters of stuff I already know.  I didn't like this
book so much at first, but it grew on me some.  It's not bad for a quick
refresher, but I'd rather the examples be more self-contained and more varied.
Of course, it's not a super-excellent programming book, but compared to most of
the trash in this genre, it's OK.  Only worked through about half of this and
then skimmed the rest, so I may revisit this later if the need/desire arises.
*** DONE Essentials of the Java Programming Language
    - State "DONE"       [2010-03-24 Wed 02:17]
    - State "STARTED"    [2010-03-23 Tue 23:48]
Too basic.  This book is apparently for people almost entirely new to
*** DONE Everything you need to know about cryptography in 1 hour (lecture notes)
    - State "DONE"       [2010-05-14 Fri 21:14]
    - State "STARTED"    [2010-05-14 Fri 20:59]
Slides e-book.   OK, but not enough detail on why recommended stuff is better
than the alternatives to be useful.

- Recommends SHA-256 for hashing, HMAC-SHA256 for symmetric authentication,
  AES-256 for block ciphers, and CTR for block cipher mode of operation.
- Recommends RSASSA-PSS and a 2048-bit RSA key with public exponent of 65537
  and SHA256 for asymmetric authentication.
- Recommends RSAES-OAEP and a 2048-bit RSA key with public exponent of 65537,
  SHA256, and MFG1-sha256 for asymmetric encryption.
*** DONE Coders At Work
    - State "DONE"       [2010-05-19 Wed 01:02]
    - State "STARTED"    [2010-05-02 Sun 04:39]
Since I have to listen to boring stories about people's jobs at work every time
I interview someone, just sticking to the ones who've done interesting things
or are likely to have interesting things to say.  Reading: Jamie Zawinksi,
Douglas Crockford, Brendan Eich, Joe Armstrong, Simon Peyton Jones, Peter
Norvig, Guy Steele, Ken Thompson, Donald Knuth.

This book can be a great read sometimes, but there are mountains of
uninteresting text between the good parts.  Skipping the answers to questions
that are too personal (like questions about their first programs and such)
tends to shorten the read by about half.

I'm not sure every one of the guys interviewed here are really the best picks.
There's many more living legends out there and brilliant theoreticians, yet
we're sometimes stuck reading about some guy who wrote a CMS in PHP.  Others
have done a couple interesting things, but we have to listen to their opinions
on stuff they obviously haven't thought about much.  Of course, this is more
about "coders" and less about computer scientists, so the book delivers on its
promised content.

Some interesting observations:
- Most of these guys hate C++ and IDEs.  They also generally shun OOP.
- Most use very primitive debugging techniques, like simple printf statements.
- One problem I've always noticed is how to walk into a huge codebase and grok
  it fast.  Apparently, these guys struggle with that too, and there's no
  method that really makes this easier.  The most common method is to just pick
  out operations you understand as a user and walk through the code to figure
  out how its done.  Eventually, you start to develop a mental model.
- Most don't really do any formal SDLC-type design work.  Most of it is either
  rapid prototyping or just mental visualization combined with rewriting.
*** DONE JavaScript: The Definitive Guide
    - State "DONE"       [2010-05-19 Wed 02:00]
    - State "STARTED"    [2010-03-16 Tue 10:03]
Read a little, but this book is needlessly huge.  I've been writing JavaScript
for a while now and think I have it down for the most part.  Will just leave
this one in the office as a reference.  The book JavaScript: The Good Parts
seems to cover all the important stuff.

Might try reading this one instead, if I find myself needing a bit more:
*** CANCELED Design Patterns
    - State "CANCELED"   [2010-06-08 Tue 10:57]
The eponymous Gang of Four book.  Already skimmed various parts of this, but
since they come up in SE all the time, might as well finish it.

Update: Sold this to a coworker for $20, so canceling this task.  I still have
it on e-book though, if I really want to read it.
*** DONE Big Ball of Mud (paper)
    - State "DONE"       [2010-06-08 Tue 20:26]
    - State "STARTED"    [2010-06-08 Tue 19:51]
Online at: http://www.laputan.org/mud/mud.html

Stopped reading about 1/3rd in since it wasn't saying anything I didn't already
*** DONE JavaScript: The Good Parts
    - State "DONE"       [2010-06-26 Sat 23:08]
    - State "STARTED"    [2010-04-21 Wed 09:51]
Good book.  Makes one wish books of this quality existed for every language.
Chapter 2's flow diagrams are rather useless, however (BNF definitions would be
more useful).

Took notes in ~/src/repo/javascript/jstgp and added some useful stuff mentioned
throughout the book in ~/src/repo/javascript/utils.js.

Skipping JavaScript regexps, due to it having it's own custom syntax for it and
that I don't want to memorize a bunch of alternatives for doing the exact same
thing.  I'll just Google that when needed.  Chapter 8 contains a handy list of
built-in methods.

Of course, writing real JavaScript involves a lot of ugly things this book
doesn't cover, like the DOM and its properties, memorizing all the built-in
utility functions, and using libraries.  I find the level of crap acceptable
using it as a general programming language, but with all that added by these
things, it's still pretty miserable.

This book really brought me from knowing next to nothing about JavaScript to
being at least competent in it.  It still doesn't feel completely natural to me
though, but that's mainly because I haven't written enough code in it.  I'm
sure that will come with time if it's really needed.  My only other comment is
that while I really appreciate the patterns presented in this book, the
language itself makes these rather cumbersome to implement, so I'll probably
try offloading as much as possible to lower tiers and maybe a little to
frameworks like jQuery.
*** DONE Core Java, Volume 1: Fundamentals, 8th Edition
    - State "DONE"       [2010-07-14 Wed 17:13]
    - State "STARTED"    [2010-06-26 Sat 23:16]
A painful read, but gets the job done about as well as can be expected.  Only
read chapters 1-6 and 10-13.  The goal here was just a refresher of previously
learned Java language features/syntax, plus taking stock of the features added
since 1.2.  Since I read much of the 2nd edition of this same book back in
college, was able to speed read it.

Setup notes:
- To install the library source into a JDK install, grab the src.zip file and
  make a src directory in JDK home.  cd to it and run =jar xvf ../src.zip=.
- To install the docs, grab jdk-version-doc.zip, put it in JDK home and while
  there run =jar xvf jdk-version-doc.zip=.
- The corejava8.zip file is in ~/src/java and extracted there too.
- Entry point to the JDK docs on FreeBSD is at:

- Use the appletviewer app to test applets outside of a web client, sending it
  the HTML file.
- Use /** */ for block comments, as these nest properly.
- Makes a case for conventions (which I think I'll adopt) of putting instance
  variables at the end of a class definition and always using ~this.~ when
  referencing them within a class.
- Always use .clone() when returning a mutable data field in an accessor
  method.  E.g.:
  public Date getHireDate() {
      return (Date) hireDate.clone();
- ~main~ methods can be added to any class and are a good way to do ad-hoc
- 1.6 adds the ability to include in CLASSPATH all .jar files in a directory by
  using this syntax (Note that the quotes aren't necessary on Windows):
- Valid Javadoc tags: @param variable description, @return description, @throws
  class description, @author name, @version text, @since text, @deprecated
  text, @see reference.
- See chapter 4's Javadoc section for more Javadoc specifics if ever generating
  full Javadocs for a particular app/library.
- When creating equals() methods, the parameter should be of type Object, check
  to see if they are the same reference, check if the other is null, check if
  other is an instanceof this class, cast other to this class, then do normal
  fields checking.  See chapter 5's equality testing section for details.
- Java collections cannot accept primitive types as type parameters.  Automatic
  boxing and unboxing occurs with collection method parameters/return values.
- Java can define methods to take arbitrary numbers of parameters, like this:
  public int sum(int... values) {
    int sum;
    for (int i : values) { sum += i; }
    return sum;
- The =jar= command supports creation of jar files with manifests that specify
  "Main-Class:" which is the default class to look for the ~main~ method in.
- If doing a serious app, use the Preferences API.  This has advantages like
  being platform-independent and providing the ability to import/export them.
  For smaller stuff, use java.util.Properties.
- When throwing a new exception in a catch block, create the new exception
  object, then call ~newex.initCause(e);~, where e is the original exception.
  This allows for tracing through nested exception stacks.
- When doing industrial-strength logging, create your own logging.properties
  file and specify it at with =java -Djava.util.logging.config.file=myfile=.
  Otherwise, jre/lib/logging.properties is used.
- To debug classpath issues, launch the JVM with the -verbose flag.
- =javac= has a built in lint option.  See =javac -X= for details.
- Check out the GUI app =jconsole= for runtime monitoring of a Java app.
*** DONE How to be a Programmer
    - State "DONE"       [2010-07-15 Thu 19:16]
    - State "STARTED"    [2010-07-14 Wed 17:14]

While most of this is okay advice, this was a boring read.
*** DONE Engineering Large Projects in a Functional Language (paper)
    - State "DONE"       [2010-07-27 Tue 09:01]
    - State "STARTED"    [2010-07-27 Tue 08:50]
A slide series from Galois, Inc.  Not very informative on its own, but has a
few good tips.
*** DONE CSEP: Programming Languages (lecture series)
    - State "DONE"       [2010-09-07 Tue 10:11]
    - State "STARTED"    [2010-07-29 Thu 01:01]
Has a lot of Caml stuff in it, but also spends several lectures on lambda
calculus, type systems, writing interpreters, and a few other topics of
interest.  mp3s downloadable from:

Like other attempts with using an audio format for learning complicated topics,
this works considerably less effectively than text.  But, if you're stuck in a
car, it's better than nothing, and in this case, I'm pretty familiar with the
concepts here already.  The syllabus here is well chosen also, unlike most
programming language courses.
*** DONE UNIX Power Tools
    - State "DONE"       [2010-10-10 Sun 21:11]
    - State "STARTED"    [2010-10-05 Tue 12:56]
As suspected, I already knew the vast majority of the content here.  However,
since I use Unix all day, the few things found here will pay off for the time
spent reading it.  Skipping a few parts that don't interest me, like stuff
about non-Bourne shells, old VCSes like RCS, tape drives, vi, sed/awk (what
appears here is mainly just snippets from O'Reilly's Sed & Awk, so I'll read
that on it's own sometime), etc.

- Some useful utilities to keep in mind: cut, comm, sleep, fc, tpipe, od, hd,
  and fmt.
- inodes contain data about files.  There is one inode per file.  =ls -i= will
  list the inodes for files.  The =stat= command will list the contents of a
  file's inode, which include things like its ownership, timestamps, size, etc.
- You can background a running process by suspending it first with C-z and then
  running =bg=.
- Modified prompt in root's .cshrc to be red in reverse video with the full
  working directory path.
- Redirection operators:
  stderr to a file: prog 2> file
  stdout and stderr to a file: prog > file 2>&1
  stderr to end of file: prog 2>> file
- here documents let you input file data from stdin without creating a file.
  Here's an example, creating a file with 2 lines:
  % cat > testfile <<test
  heredoc> sdf1
  heredoc> sdf2
  heredoc> test
- Building strings with {}: This pattern-expansion syntax allows you to specify
  a list of changes to expand a single expression to.  For example, =mv
  file{1,2}.c= will expand to =mv file1.c file2.c=.  If not sure, test these by
  echoing them first.  One useful tip is to use =cp file{,.bak}= to quickly
  backup a file.
- The foreach control block does the same thing as in normal languages.  This
  works in csh, tcsh, and zsh:
  % foreach file (file{1,2,3})
  foreach> touch $file
  foreach> end
  In bash, use the for loop:
  $ for file in file{1,2,3}
  > do touch $file
  > done
- Using find's -exec flag can save an xargs call, e.g. =find . -name 'file*'
  -exec rm -i {} \;=.
- The !:n* (where n is an integer) construct in bash/zsh might have a use.
  This expands to the nth through last argument in the previous command,
  e.g. =cp file1 file2= followed by =echo !:1*= expands to =echo file1 file2=.
- The ^^ construct allows a replacement within the last command, then it is
  repeated, e.g. =echo hi= followed by =^i^ello= expands to =echo hello=.
- !-expansions can be checked with a :p suffix.  Then this can be followed
  with a =!!= to actually run it.
- =kill= can reference job numbers (shown in =jobs=), e.g. =kill %1=.
- The subshell construct () can be used for collecting output from stdout and
  stderr into a single pipe and for a series of commands that need to change
  the environment to run without changing the parent shell's environment.
- Use find's -o and -a operators to combine search parameters, e.g. =find . \(
  -name file1 -o -name file2 \) -print=.
- tar's z option can also be used when creating gzipped tarballs, e.g. =tar zcf
  stuff.tar.gz stuff=, where stuff is a directory.
- =sdiff= is a side-by-side version of =diff=, but it requires a >80 column
- One use for =exec= is to replace the current shell process with a different
  program.  This can be handy if one of the programs started in this manner by
  my screen rc file dies and I want to restart it without creating another
  wrapper shell process and have it lie around, wasting resources.
- When running commands where the default umask (027 in my case) is
  inconvenient, like modifying a Darcs repo, a subshell can be spawned, wherein
  the umask can be changed without affecting the parent shell.
- Use the =time= command to log the runtime of a process.
- There's an ASCII lookup table in /usr/share/misc/ascii.

Learned a lot of useful tricks here, but many aren't that life-changing in my
case, since I use Emacs for complex editing instead of filters, screen instead
of job backgrounding, org-mode for office automation, and scripts in real
languages instead of shell.  Overall, this is an okay book and worth reading,
but includes a lot of filler sections just describing how to use some flag for
a program and spends way too much time on file editing.  It would have been a
much more useful read to me some 10 years ago.
*** DONE Maven: The Definitive Guide
    - State "DONE"       [2010-11-01 Mon 13:25]
    - State "STARTED"    [2010-10-22 Fri 11:04]
Just reading the intro, part I, and the first few chapters of part II.  The
rest is mainly intended as a reference.

- Maven uses a bunch of conventions, like ${basedir}/src/main/java for code,
  ${basedir}/src/main/resources for resources, and ${basedir}/src/test for unit
- Check http://mvnrepository.com/ for versions and XML snippets.
- To create a new project, use something like: mvn archetype:create
  -DgroupId=com.macroexpand.mygroup -DartifactId=myproj
- Other archetypes exist for other types of apps, like webapps and Swing apps.
- Use =mvn help:effective-pom= to see the aggregate effective POM.
- List of all maven.org packages at: http://repo2.maven.org/maven2/
- =mvn site= generates documentation and reports.
- The pom.xml file can contain license and developer information.  See 4.4 for
- After installing stuff to the local repo, use something like this to run it:

  mvn exec:java -Dexec.mainClass=com.macroexpand.mygroup.myproj.Main

- Get the full description of plugins using this form (the exec plugin is shown
  here) =mvn help:describe -Dplugin=exec -Dfull=.  In this example, it shows
  all the valid parameters that could be used in the previous exec call.
- View the project dependencies in list form with =mvn dependency:resolve= or
  tree form with =mvn dependency:tree=.
- Stick unit test case data in src/test/resources.
- To package and distribute a project and its dependencies as an assembly use
  the maven-assembly-plugin with a descriptorRef of jar-with-dependencies and
  run =mvn install assembly:assembly=.  See 4.13 for details.
- There's a maven-tomcat-plugin that could be useful for webapps.
- SNAPSHOT is a special version in Maven that indicates the latest code,
  typically TRUNK or HEAD.

Keeping this book around for reference purposes.  There's a lot of extra topics
here, covered in detail, that I skimmed or skipped in order to lazy load.  See
Maven under "Work-related topics" for more notes and some commentary.
*** DONE Augustus/PMML documents
    - State "DONE"       [2010-11-01 Mon 14:25]
    - State "STARTED"    [2010-09-23 Thu 12:28]
Reading whatever I can find on Augustus and PMML.

- Augustus: The Design and Architecture of a PMML-Based Scoring Engine: A short
  paper from 2006.
- Augustus Documentation Version Keep this as a reference in case I
  need to know what goes where.

Open Data Group slides:
- Analytic Models:
  - There are four basic data mining algorithms: nearest neighbor algorithms,
    k-means clustering, classification and regression trees, and CUSUM.
  - k-means clusters converge on the centroids (geometric centers) of final
- PMML-Based Analytic Architecture: Just an overview of PMML.
- Introduction to Augustus: A decent overview.  Could be handy for defining
  producer input later.
- Case Studies: Tree Model, Naïve Bayes Model, Highway Traffic: Just some
- Case Studies: Change Detection in Baseline Models: Has an overview of SCADA,
  among other things.
*** DONE Repository Management with Nexus
    - State "DONE"       [2010-11-09 Tue 16:14]
    - State "STARTED"    [2010-11-09 Tue 09:53]
This is the official Nexus book from Sonatype.  Nexus features I'm interested
in are: using it as a central repository and integration with m2eclipse.  Only
reading chapters 1, 2, and 4.

The link to the PDF of the latest version appears broken, so reading the
crappier HTML version: http://www.sonatype.com/books/nexus-book/reference/

- There's two versions of Nexus, Open Source and Professional.  The OS version
  offers everything I'll never need.
- Chapter 4 says to have Maven use a Nexus repo, one must edit
  ~/.m2/settings.xml, but at work, the pom.xml files just have repository
  blocks pointing to a Nexus URL like:

Nexus is okay in that it occasionally fills a needed role in some development
projects.  But, it's also overly complicated and extremely boring to read
about.  If I ever miss reading about boring software in the future, I can also
check out Hudson, which is often combined with Nexus and Maven.
*** DONE RESTful Java Web Services
    - State "DONE"       [2010-11-12 Fri 13:41]
    - State "STARTED"    [2010-11-10 Wed 12:43]
Reading chapters 1-4, and 7.  While it covers RESTEasy, it dedicates most of
the book to the other Jax-RS frameworks of Jersey, Restlet, and Struts, which
I'm ignoring.  The reviews of this book are pretty bad, so just giving it a
fast read.

- REST is just a set of constraints that define a system: client/server,
  stateless, supports caching, uniformly accessible, layered, etc.
- HTTP methods: POST (create), GET (retrieve), PUT (update), DELETE.
- Created a Maven project for a Twitter client in ~/src/repo/java/resttwit.
  This app endlessly scrolls garbage from Twitter in near real time to the
  console.  After writing it, I stared at the moronic "thoughts" of the
  cesspool that is humanity for a few hours.
- The RESTEasy framework is pretty simple to use.  Use chapter 7 as a
  walkthrough while writing one if I ever have to.
- For RESTEasy, basically, you just define a class for each URI.  Within that
  class, you add a few annotations: @Path maps the class to the path (sometimes
  including parameters as extensions to the URI in braces), @GET/@POST/etc. map
  methods to HTTP request types, and @Consumes/@Produces map MIME types to
- RESTEasy also requires a bunch of DRY-violating crap in web.xml.

This book is indeed pretty low quality and sloppy.  If I want to read up on
this topic more in the future, try the book "RESTful Java with Jax-RS".  But,
I'm calling myself reasonably competent in it for now.
** Books: Math
*** DONE The Mathematical Experience
    - State "DONE"       [2010-04-25 Sun 18:46]
    - State "STARTED"    [2009-08-13 Thu 14:49]
Has some boring sections (like those about education), but largely a good
overview of the foundations of mathematics and for large-scale context of how
mathematical subfields fit together.

This book did clarify my conceptual overview of mathematics some, so it was a
worthwhile read.  Chapter 7, in particular, is quite excellent and the most
consequential to the edge of theoretical computer science I'm most fond of.
*** DONE Clustering with Gaussian Mixtures (lecture slides)
    - State "DONE"       [2010-09-01 Wed 15:42]
    - State "STARTED"    [2010-09-01 Wed 13:55]
Also covers the EM algorithm.  GMM is a method for density analysis where there
is an unknown number of clusters.  These slides aren't really all that great on
their own, but they're okay for an overview.

Keep in mind the EM algorithm for finding maximum likelihoods in statistical
*** DONE Dealing With Statistics: What you need to know
    - State "DONE"       [2010-11-05 Fri 09:55]
    - State "STARTED"    [2010-11-02 Tue 15:13]
Supposedly a non-rigorous introduction to statistics.  Reading this to make
sure I have a grasp on all the fundamental topics prior to delving into a more
math-heavy book on the subject.

- Descriptive statistics are quantitative.  Inferential (analytical) statistics
  make inferences based on sampled data.
- In statistics, cardinal numbers are those which mathematical operations can
  be performed.  Ordinal numbers describe position.  These are slightly
  different meanings than the same terms in set theory.
- Only use non-parametric tests on nominal and ordinal variables (categorical
  data), and parametric tests on interval and ratio variables (numerical data).
- Nominal variables are named categories the variables can be in.
- A parameter is a numerical measure of some population characteristic, while a
  variable is the attribute of interest.
- Classifications of data:
  - Categorical
    - Nominal: Grouped into descriptive categories by name, unranked.
    - Ordinal: Ordered data, e.g. first, second, third.
  - Numerical
    - Interval: Difference between values can be state numerically, but not
      relatively, e.g. temperature, time of day.
    - Ratio: Numerical data where 0 represents none/nothing.
- Variables:
  - Independent: The variable altered/changed to find the effect on another
  - Dependent: The focus of the statistical analysis.
- Crosstabs (cross-tabulations) can be used to summarize information about two
  categorical variables at the same time in table format.
- A frequency distribution is a tabulation of values for one or more variables
  in a sample.
- For categorical data:
  - One-sample chi-square test: A dispersion (how spread out values are),
    stating whether there is a difference between observed distribution pattern
    of data for a variable between categories or results where there was no
  - Mode: The most frequently occurring categor(y|ies) within a data set.
    Describes the "location" of categorical data.
- For numerical data:
  - Median: Middle data value.  If an even number of values, average the two
    middle ones.
  - Mean: Average.  Represented by x-bar (\={x}) when a sample mean or µ for a
    population mean.
  - Mode: Most frequently occurring value(s).
  - Range: Difference between highest and lowest ranked data values.
  - Inter-quartile range: Difference between the middle 50% of ranked data
  - Standard deviation: The extent which data values are spread about the
    mean, using the same units the data was recorded in.  Represented by σ for
    entire population SD, and s (or SD) for sample SD.
  - Variance: The extent which data values are spread about the mean, using the
    square of the units the data was recorded in.
  - Skewness: How the shape of distribution deviates from a symmetrical
  - Kurtosis: How pointed or flat a distribution is from a normal
- Null hypothesis: Represented by H_{0} (H, sub 0), the hypothesis that there
  is no significant difference/relationship between two or more variables.
  Significance tests operate by proving that there will not always be no
- Alternative hypothesis: H_{1}, H_{a}.  The rival to the null hypothesis.
- Critical value: Provides the criterion that defines whether or not the null
  hypothesis should be rejected, and is the value for the approximate
  probability of the statistic occurring by chance.
- Errors: Type I errors are the worse, i.e. declaring an innocent person
  - Type I error: Rejecting the null hypothesis when it is correct in reality.
  - Type II error: Failing to reject the null hypothesis when it is incorrect.
- Testing:
  - 1. State the null hypothesis.
  - 2. Choose a statistical test.
  - 3. Select the critical level of significance, usually 0.05 - 0.01.
  - 4. Calculate the test statistic.
  - 5. Interpret the calculated probability value or the critical test value.
    This will determine rejection/acceptance of the null hypothesis.
  - 6. Interpret the test statistic.  If rejecting the null hypothesis, show
    support for the alternative hypothesis (though this doesn't prove it).
- There's a ton of statistical tests, good for varying kinds of data and for
  showing various relationships.  See this list:

Not that great of a book.  Too focused on things like questionnaires,
presentation of results, and other useless items.  I wanted an intro to the
topic, but not one quite this stupid.  However, it was a quick read and not all
that painful.
** Books: General Non-fiction
*** DONE The Worst Mistake in the History of the Human Race (paper)
    - State "DONE"       [2010-01-21 Thu 15:24]
    - State "STARTED"    [2010-01-21 Thu 14:38]
Makes one of the same points made by "Industrial Society and Its Future", doing
a slightly better job at it, but is still poorly written.  I've generally
agreed with this concept, and conjecture that in some ways, its still possible
to live by these principles within an industrial context by forgoing some of
its standard participatory elements, like laboring for security, permanent
shelter, and a trove of possessions.
*** DONE Tractatus Logico-Philosophicus
    - State "DONE"       [2010-01-26 Tue 10:43]
    - State "STARTED"    [2010-01-25 Mon 10:05]
Wrote review on main page.
*** DONE Forensic DNA Typing
    - State "DONE"       [2010-02-02 Tue 22:26]
Observations (not all from this book):
- The mathematics behind DNA matching isn't as complex as I'd originally
  thought prior to working in this field.  Most of it is very basic statistics.
- While the mathematics is sound, there are constants that are arbitrarily
  selected, like for minimum allele frequency.
- Another big problem is outdated population statistics data.  For legal
  reasons, no one wants to update these highly outdated databases, since it
  could potentially change the likelihood ratios of previous matches, thereby
  reopening convictions for appeal.
- Impressive sounding rhetoric like "1 in a million match" means increasingly
  little in random hits as database size increases (the potential for false
  positives increases combinatorially in all vs. all searches).  While not as
  bad given the US's required 13 STR loci completeness rules, EU and UK
  completeness definitions are way too low.
- Despite those (and a few other minor concerns), a forensic match is pretty
  much about as solid evidence as one can get.  Like everyone that works in DNA
  forensics knows: OJ did it.
- Attended a speech by this author and while he's one of the leading DNA
  forensics scientists in the world, and deservedly so, he's at the same time a
  Mormon k00k that believes some ridiculous things, like ignoring genetic
  evidence that links Amerindians with Asians, not Middle Easterners.  A
  perfect example of the small minority of religious scientists that are
  somehow able to turn off their brains when it comes to religion.
- Little does the public know, but the plans are in place to DNA sequence
  everyone any time they're arrested, pass through an airport or border, and
  anywhere else they can.  It's only the state and federal laws that need to
  catch up and the completion of development of networked "black box" profiling
  kits.  I estimate the kits technology will be ready in 5-10 years and the
  laws in perhaps twice that.
- Supposedly the law is that missing person and other non-criminal profiles
  won't be searched against forensic profiles.  In reality, the only thing
  stopping this is a rule not to click on a few buttons.

Read a good bit of this book, and probably know the rest at least peripherally
from work experience.  Since my career in this field is coming to an end, I
won't bother finishing it.
*** DONE Fallible Ideas
    - State "DONE"       [2010-04-12 Mon 21:58]
    - State "STARTED"    [2010-04-12 Mon 13:33]
Online at http://fallibleideas.com/

I might have found this illuminating around age 10 or so, but reading this now
was a waste of time.  Quit about 1/4th in.
*** DONE Crash Proof 2.0: How to Profit From the Economic Collapse
    - State "DONE"       [2010-05-12 Wed 14:20]
    - State "STARTED"    [2010-04-19 Mon 17:06]
A good read, but for me, having watched much of Schiff's videos and read much
of his other stuff, a lot was highly remedial.  Also, I'd have preferred it if
all of the text was updated from the first version instead of adding updates
after the original content.  Lastly, while I can appreciate him wanting to
write in a manner to appeal to the largest number of viewers, I'd have
benefited more from added formal analysis and less FUD (however justified).
*** DONE Managing Humans
    - State "DONE"       [2010-05-17 Mon 09:41]
    - State "STARTED"    [2010-05-12 Wed 14:28]
Recommended by coworker.  An easy read, which it has to be for a book about
management, a topic I find to be a complete bore.  Still ended up skimming
parts of it though.  A bit too informal and hand-wavy for my tastes.
*** DONE The Luttrell Psalter
    - State "DONE"       [2010-05-31 Mon 11:50]
    - State "STARTED"    [2010-05-31 Mon 10:58]
This is a book about the Luttrell Psalter, not the manuscript itself (which
would be fiction).

Not as interesting as I thought it'd be.  It's also a shame to see so much
effort wasted on communicating useless information, but that's true about all
religious activity.
*** DONE Rework
    - State "DONE"       [2010-06-22 Tue 00:18]
    - State "STARTED"    [2010-06-21 Mon 20:48]
Recommended by coworker.  Was okay, but I'm not really into reading about
topics like project management.
*** DONE various intelligence analysis books/papers
    - State "DONE"       [2010-07-12 Mon 02:35]
    - State "STARTED"    [2010-07-08 Thu 13:14]
Reading the full archive of the "Intelligence Analysis Reference Library" at
work.  Some of these are full-sized books and quite large though, so will skim
as needed.  These are the recommended readings by resident analysis SMEs, but I
suspect actually reading these will be mostly useless.  Any knowledge gleaned
here won't be needed years from now, so not taking complete notes.  Skipping
the ones found to be related to direction finding radio communications, since I
don't care about the details of that topic.

Here goes:
- Analytic Culture in the U.S. Intelligence Community: Full book on
  touchy-feely industry culture stuff.  Not useful for me.
- Analytic Teams, Social Networks, and Collaborative Behavior (paper): Proposes
  a restructuring of having initial analysis done by a larger, distributed
  team, followed by final analysis by a core team.  Overall, pretty much
- Anticipating Rare Events - The Role of ACH and Other Structured Analytic
  Techniques (paper): The message here is something that should be common
  sense.  Though, I guess government employees probably do need reminders to do
  things like check key assumptions and investigate the negation.
- AOC EW (Part 3) - VHF/UHF Propagation (page): Skipping.
- AOC EW - Emitter Location (page): Skipping.
- Assessing the Tradecraft of Intelligence Analysis (paper): Not bad.  Delivers
  the worldview of the intelligence community from the inside.  Not
  surprisingly, this view is a bit self-important and myopic.
- Cryptologic Almanac - A Brief Look at ELINT at NSA: Doesn't say much.
- The Ellipsoid and the Transverse Mercator Projection: Skipping.
- Fixing Intel - A Blueprint for Making Intelligence Relevant in Afghanistan:
  Makes some valid points about this topic, but most of this is pretty much
  common sense stuff.  Am I detecting a pattern here?
- Fixing Intel - Initial Thoughts: A critical review of the above by a guy from
  work.  Largely a realistic assessment of DIA analysts and other stuff.
- FM 1-02 - Operational Terms and Graphics: Might be handy for a reference if
  looking up term definitions or using a lot of these graphics.  Probably not
- FM 2-0 - Intelligence: Probably the one book to actually read, assuming you
  really wanted a full overview of this topic.  It's long though, so I just
  kinda skimmed it.  Might give a full read some day.  Had I known, I would've
  just read this in full and skipped the others.
- FM 34-130 - Intelligence Preparation of the Battlefield: Has some okay
  examples of battlefield maps and such.  Not sure how current this info is
  though, since this copy is from 1994.
- Future Intel Analysis (Vol. 1) - Final Report: Useless.
- The Future of Alternative Analysis: Mostly just about how great ACH is.
- How Do Cognitive Pitfalls Limit Our Ability to Anticipate Rare Events?:
  Shallow, amateurish pyscho-babble.
- How Does Analysis of Competing Hypotheses (ACH) Improve Intelligence
  Analysis: More boring stuff about ACH and about sitting around pulling
  probabilities for things out of thin air.
- IEW DF and Fix Estimation Analysis Report: Skipping.
- Introduction Into Theory of Direction Finding: Skipping.
- Introduction to Radio Direction Finding: Skipping.
- Overcoming Analytic Mindsets - Five Simple Techniques: Ugh...
- Psychology of Intelligence Analysis: A 173 book full of psycho-babble, so I
  think I'll skip this one.  I don't think I need to read things like a 20 page
  chapter called "Keeping an Open Mind".
- Q and Z signals (paper): Thoroughly useless.
- Rethinking Challenge Analysis: More pointless text about stuff that should be
- Small Group Processes for Intelligence Analysis: Bleh.
- Taxonomy of Structured Analytic Techniques: Just a grouping of techniques.
- Toward a Theory of Intelligence: Mostly a list of unanswered questions from
  some conference.  In other words: useless.
- A Tradecraft Primer - Structured Analytic Techniques for Improving
  Intelligence Analysis: Bleh.
- The Tradecraft of Warning - Overcoming Cognitive Barriers: Same text as
  "Overcoming Analytic Mindsets" but under a different title for some reason.

Post-mortem: Most of these texts seem to be written by and for idiots.  These
confirm a lot of my suspicions; mainly that the effectiveness of intelligence
analysis is overrated, often counter-productive, and that the field is mostly
populated with chair-warming government employees looking forward to their
pensions.  Excluding target analysis (which is slightly more immediately
useful), like most government employees, their output is at best minuscule and
often negative.
*** DONE For the New Intellectual
    - State "DONE"       [2010-07-21 Wed 00:57]
    - State "STARTED"    [2010-07-11 Sun 15:09]
Just a collection of rants from various Ayn Rand novels.  It's okay, but
there's still a few things about Rand's philosophy and her delivery that I'm
not crazy about.  The underlying messages here I agree with though, I probably
would just word the arguments differently (save a few really great lines).
I'll save my full critique of Objectivism for another day.
*** DONE Lifehacker
    - State "DONE"       [2010-07-29 Thu 15:50]
    - State "STARTED"    [2010-07-29 Thu 15:32]
A bit gimmicky, but who knows, maybe I'll find something in here I hadn't
thought of.  Just skimming this book.

Update: Totally worthless.  Some of these tips are actually counter-productive
in my opinion, like setting up a personal wiki or setting your computer to
constantly download media.  Other tips are so obvious, you'd have to be a
retard not to have thought of them yourself, like clearing your desktop of
unused icons and using web browser tabs to load pages in the background.  If
you actually followed all these tips, you'd do nothing all day but use lame
Windows apps and websites all day, doing data entry.  Didn't find anything
*** DONE Mining the Sky
    - State "DONE"       [2010-12-07 Tue 10:10]
    - State "STARTED"    [2010-02-05 Fri 00:29]
Useful information here about asteroid mining and some on helium-3 in the
chapter on gas giants.  At least read those two chapters again if I ever get to
work on my mining simulator.
** Books: Fiction
*** DONE The Chronoliths
    - State "DONE"       [2010-01-02 Sat 21:23]
    - State "STARTED"    [2010-01-01 Fri 23:31]
A rare, actually-readable time-related scifi novel.  Not great though.
*** DONE World War Z
    - State "DONE"       [2010-01-03 Sun 09:00]
    - State "STARTED"    [2010-01-02 Sat 21:24]
Despite a few biological impossibilities, generally a good read.
*** DONE Moby Dick
    - State "DONE"       [2010-01-03 Sun 20:48]
Finally finished after starting this over 3 years ago.  Definitely one of the
greatest fiction books ever written.
*** DONE Inside the Spaceships
    - State "DONE"       [2010-01-05 Tue 01:53]
    - State "STARTED"    [2010-01-04 Mon 11:34]
Pretty cheesy k00kscr33d that definitely didn't age well.  Good for some mild
amusement.  Online at: http://www.thenewearth.org/InsideTheSpaceShips.html
*** DONE Einstein's Bridge
    - State "DONE"       [2010-01-06 Wed 03:21]
    - State "STARTED"    [2010-01-03 Sun 17:25]
Occasionally has some good hard scifi, but then ruins it with mediocre alien
stuff.  Annoying characters traverse a contrived (but not entirely terrible)
plot.  Unlike most scifi books, this one gets better as it goes on.

Attention authors: The kind of readers looking for the most realistic math and
physics are not the same people looking for love stories or sex scenes.

As a side note, while I'm usually somewhat forgiving about technological
predictions that don't pan out, the idea that a physicist in 1997 thought that
by 2004 (or ever) we'd be browsing filesystems in full VR-land is pretty
*** DONE Pushing Ice
    - State "DONE"       [2010-01-19 Tue 17:48]
    - State "STARTED"    [2010-01-07 Thu 16:10]
Unlike other books by this author I've read, this one was very good.  Well
written, characters not too annoying, along with page-turning artifact
*** DONE House of Suns
    - State "DONE"       [2010-01-23 Sat 01:16]
    - State "STARTED"    [2010-01-19 Tue 18:06]
Suffers from "too far in the future syndrome", where the author fails at the
(admittedly, very difficult) task of making a realistic story in the distant
future, and resorts to dropping modern personalities and concepts in a universe
entirely alien from the present.  Quit about 1/4th in.
*** DONE The Light of Other Days
    - State "DONE"       [2010-01-25 Mon 07:28]
    - State "STARTED"    [2010-01-23 Sat 02:07]
Usually, scifi stories involving time suck, but this one handles it in the most
convincing manner I've seen so far.  Apart from the somewhat unconvincing
characters and the occasional sleaze, this is a pretty good read.
*** DONE Evolution
    - State "DONE"       [2010-02-03 Wed 03:05]
    - State "STARTED"    [2010-01-26 Tue 00:40]
This is the Stephen Baxter novel of this title.  Sounded like a good idea, but
turned out very boring and repetitive.  Gave up after a couple hundred pages.
*** DONE The Mote in God's Eye
    - State "DONE"       [2010-02-17 Wed 01:56]
    - State "STARTED"    [2010-02-05 Fri 00:28]
Too many boring, stupid characters, plot too predictable, and the writing in
general is pedestrian.
*** DONE Manifold Series
    - State "DONE"       [2010-03-15 Mon 12:24]
    - State "STARTED"    [2010-02-18 Thu 13:35]
4 book series that explores the Fermi paradox:
- Manifold: Time: Well written and includes a large quantity of well researched
  real science.  Overall, a good read.
- Manifold: Space: Plot seems a bit more generic, but the hard scifi is still
  pretty good, though it occasionally strains suspension of disbelief.  In some
  ways, it's even better than the previous book, especially since it has a lot
  more original/big ideas.
- Manifold: Origin: Definitely the weakest of the series, mostly due to all the
  primitive hominid perspectives.
- Phase Space: Couldn't find an e-book of this.
*** DONE Excession
    - State "DONE"       [2010-03-16 Tue 10:11]
    - State "STARTED"    [2010-03-15 Mon 12:27]
Supposedly a book exploring the "outside context problem", but ironically
suffers from it itself, as it has about as much original thought as a televised
scifi series.  Another example of "too far in the future syndrome" and a minor
example of "post-humanist candy store syndrome".  Was unable to identify
anything compelling about this book by 12% of the way in, so giving up.
*** DONE Dragon's Egg
    - State "DONE"       [2010-04-12 Mon 01:30]
    - State "STARTED"    [2010-04-10 Sat 22:48]
Decent hard scifi, though as it was written in the 1980s, a few small parts of
it didn't age well, though they have little effect on the story.  Only
complaints are the alien culture had too many parallels with human development
and that some parts in the middle were a bit dragged out.
*** DONE Rocheworld
    - State "DONE"       [2010-04-24 Sat 03:09]
    - State "STARTED"    [2010-04-12 Mon 02:06]
Apparently takes place in some strange alternate reality where government
employees are actually competent.  Characters are a bit weak, some being highly
2-dimensional.  Some good concepts and well thought out hard scifi, but the
story drags and has a lot of mindless filler.
*** DONE Old Man's War series
    - State "DONE"       [2010-05-28 Fri 22:25]
    - State "STARTED"    [2010-05-23 Sun 01:37]
A four book military scifi series:
- Old Man's War: A mindless read, but still not all that bad.
- The Ghost Brigades: A bit more formulaic than the previous.
- The Last Colony: Has a couple interesting plot points, but is mostly bleh.
- Zoe's Tale: A total bore.
*** DONE Aunt Dan and Lemon
    - State "DONE"       [2010-05-31 Mon 01:39]
    - State "STARTED"    [2010-05-30 Sun 15:27]
A bunch of boring nothing happens for most of this play, then at the end some
lame psuedo-philosophical exposition is awkwardly delivered in monologue form.
It doesn't work.
*** DONE more Greg Egan books
    - State "DONE"       [2010-07-11 Sun 15:10]
    - State "STARTED"    [2010-06-01 Tue 01:33]
Finishing up the last half of Egan's bibliography that I have on hand:
- Diaspora: Quite good.  Largely addresses the out of context problems in any
  work of fiction this far removed from the present day.
- The Extra: Pretty good.
- The Vat: Meh.
- Learning to Be Me: Pretty good.
- Scatter My Ashes: Meh.
- Mind Vampires: Sucked.
- Our Lady of Chernobyl: Nothing special.
- Yeyuka: Bleh.
- Steve Fever: Decent idea, but doesn't really go anywhere.
- The Moral Virologist: Mildly entertaining.
- Cocoon: OK, I guess.
- Distress: The plot here meanders quite a bit at first (or seems to), but the
  strength of this book is it as a delivery mechanism for criticism of the
  secular variety of anti-science and statism, and the only proper way to look
  at gender and emotional attachment.  This is probably one of the better Egan
  books, though the plot and some of the characters could use a little work.
- Border Guards: Meh.
- Reasons To Be Cheerful: Not bad, but also not all that good.
- Riding the Crocodile: OK, I guess.
- Permutation City: Not that great.

Can't find e-book versions of Incandescence, Teranesia, or Zendegi.  Might pick
up hard copies of one or more of these some time in the future.
*** DONE The Mysterious Stranger
    - State "DONE"       [2010-07-11 Sun 17:25]
    - State "STARTED"    [2010-07-11 Sun 15:10]

Fairly entertaining and well written.
*** DONE Vitals
    - State "DONE"       [2010-08-10 Tue 21:04]
    - State "STARTED"    [2010-07-21 Wed 21:14]
A bit formulaic and predictable, but well written.  Alternated from being
page-turning to boring on occasion.  Relies too much on action sequences for
me to really like it.
*** DONE A Canticle for Leibowitz
    - State "DONE"       [2010-08-11 Wed 14:59]
    - State "STARTED"    [2010-07-11 Sun 15:10]
Read the first third.  It kinda sucked, so giving up on this.  Not a bad
general idea, but too much Catholic crap in it and there's really nothing
interesting about the story itself.
*** DONE Rama series
    - State "DONE"       [2010-08-31 Tue 00:02]
    - State "STARTED"    [2010-08-16 Mon 09:56]
A four book "big dumb object" scifi series:
- Rendezvous With Rama: OK, but not great.
- Rama Revisited: OK at times, but usually quite stupid.  Where the first was
  written by Arthur C. Clarke, this book, and the remainder of the series, are
  written by someone who obviously is an adequate writer, but lacks his vision.
- The Garden of Rama: Scifi introduced in this book is a bit sloppy and there's
  too much family crap.  About on par with the previous.
- Rama Revealed: The annoying stuff in here totally kills the few good parts.
  The end reveal also isn't worth the effort. Having read all of these, I now
  wish I had stopped after the first novel.
*** DONE Airframe
    - State "STARTED"    [2010-09-02 Thu 10:06]
    - State "DONE"       [2010-09-03 Fri 02:46]
Too many action sequences, too many unambiguously good/evil characters, and the
subject matter (commercial air travel) doesn't interest me.  For a typical
popular fiction novel, it's not too bad though.
*** DONE Axis
    - State "DONE"       [2010-09-10 Fri 11:21]
    - State "STARTED"    [2010-08-11 Wed 14:58]
One of the main problems here is that this story is predicated on the
suspension of disbelief necessary to read Spin, which really didn't work well
for me.

This book isn't that great, less so than expected even.  Stuff happens, and none of
it is particularly interesting.
*** DONE Blind Lake
    - State "DONE"       [2010-09-16 Thu 23:52]
    - State "STARTED"    [2010-09-13 Mon 02:21]
Too much yawn-inducing character development that goes mostly nowhere.  The
ending read like cheap exposition as well.  There were some decent parts
though, so this was okay overall, and probably the best novel by this author.
*** DONE The Lost Fleet series
    - State "DONE"       [2010-09-26 Sun 20:56]
    - State "STARTED"    [2010-09-17 Fri 11:37]
Was never really into this subgenre, but I'm running out of promising scifi
books to read.  A six book military scifi series:
- Dauntless: Plausible space naval combat, but everything else sucks.
- Fearless: More of the same.
- Courageous: More of the same, plus a large quantity of sleaze.
- Valiant: More of the same.
- Relentless: More of the same.
- Victorious: More of the same.

This series is obviously written by someone either not trying very hard and/or
just not all that smart.  Also, these should all really be just one book, since
there's really no logical separation between them.  Excluding the vast tracts
of text that are constantly repeated would make it of normal length.
*** DONE This Perfect Day
    - State "DONE"       [2010-10-05 Tue 14:54]
    - State "STARTED"    [2010-09-29 Wed 09:15]
Had a few interesting ideas and an original take on the techno-utopia concept,
but was nonetheless a boring read.
*** DONE A Burning Obsession
    - State "DONE"       [2010-10-06 Wed 23:58]
    - State "STARTED"    [2010-09-29 Wed 00:50]
By far the stupidest thing I've read all year.
*** DONE The Ungoverned
    - State "DONE"       [2010-10-07 Thu 01:31]
    - State "STARTED"    [2010-10-07 Thu 00:13]
An anarcho-capitalist Vernor Vinge scifi novella, the second in his Across
Realtime series.  I would be interested in reading a story with this concept,
but this one is poorly written and pretty stupid.
*** DONE Cusp
    - State "DONE"       [2010-10-26 Tue 02:20]
    - State "STARTED"    [2010-10-08 Fri 01:20]
Some good ideas here, but the story and characters aren't that great.  The
introduction of the other sentient biological species seems a bit silly.  The
main problem is probably the personal perspective of grand scale events, though
this book does it better than most.  Though, like the many others, it goes too
far into the unknown while still trying to humanize the experience.  Another
big problem is super advanced science is basically presented as magic would be
in a fantasy novel.  Overall, it's still pretty good and keeps the reader
thinking, but the combination of enough shortcomings kept me from finding it
all that compelling.
*** DONE Prophet Without Honor
    - State "DONE"       [2010-10-28 Thu 22:36]
    - State "STARTED"    [2010-10-26 Tue 02:21]
An official Anarchy Online novel.  Supposedly the first book in a series, but
since it's been almost 10 years since it was published and AO development is
stagnant, it's unlikely there will ever be other books, which particularly
sucks since it ends with a bunch of questions never to be answered.  Available
for free on the AO site.

Surprisingly decent, but has problems.  The story lost a lot of its momentum
about half in and the parts in the far distant future aren't done that well.
*** DONE Ishmael
    - State "DONE"       [2010-10-29 Fri 13:38]
    - State "STARTED"    [2010-10-29 Fri 00:50]
While I agree with a select few of the points here, this presentation is for
idiots (and probably written by one too).

Anarcho-primitivism and new tribalism have some serious, fundamental problems
with it that I'm still waiting to be addressed.  I suspect they're intractable,
which is why texts on it tend to resort to emotionalism and hand-waving.

Had grabbed a copy of the sequels, but I think I'll skip it.
*** DONE Rainbows End
    - State "DONE"       [2010-11-02 Tue 23:58]
    - State "STARTED"    [2010-10-31 Sun 12:58]
Acceptably average.  Nothing incompetent about this novel, but it's also
lacking anything interesting.  The main characters are boring, the identity
mystery is too obvious to be much of one, and the plot thoroughly predictable.
One good point is the focus on importance of augmented reality in the near
future, which by now is practically a sure thing and something often missing
from other scifi novels.
*** DONE Oolite fan fiction novels
    - State "DONE"       [2010-11-09 Tue 13:11]
    - State "STARTED"    [2010-11-04 Thu 22:43]
4 fan fiction novels for Oolite were listed on its Wikipedia page.  The last 3
are written by the same guy.
The Virtuous Misfortune: Crap.
Status Quo: Okay, for a fanfic.
Mutabilis: More standard space opera fan fiction.
Schism: Meh.

There's some other fanfics listed on the Oolite wiki, but I've had enough.  The
Elite mythos is okay in some ways, but has a lot of dumb elements too,
particularly the alien races and how soft scifi the technology is.
*** DONE Von Neumann's War
    - State "DONE"       [2010-11-18 Thu 22:52]
    - State "STARTED"    [2010-11-13 Sat 17:56]
Has some authentic defense contracting lingo, and while amusing to see it in a
fiction novel for awhile, it gets old.  Most of the technical terms here are
just awkwardly dropped in, in a sloppy attempt to harden up this scifi some.
Couple this with some signature Ringo ham (buxom lasses, military fetishism,
and unrealistically competent government employees), and you've got several
hundred wasted sheets of paper.
*** DONE Zombie Survival Guide
    - State "DONE"       [2010-12-20 Mon 23:47]
    - State "STARTED"    [2010-12-19 Sun 20:35]
Vastly inferior to World War Z.
*** DONE Patriots: A Novel of Survival in the Coming Collapse
    - State "DONE"       [2010-12-23 Thu 09:37]
    - State "STARTED"    [2010-12-20 Mon 23:50]
The new standard among SHTF/WROL k00ks.  Tons of Jesus crap, but does have some
good advice.  The collapse scenario portrayed here has a few plausibility
issues, but is close enough for a book like this.  Using real product names
helps, but there's so much of it, it reads more like an advertisement at
places.  Some tangents (like on SIGINT) just seem awkwardly misplaced, as if he
just wanted to include some topic he knew a lot about, but didn't bother making
sure it actually integrated into the story.  Overall, I'd describe this as
decent amateur novel writing (good overall structure/flow, pedestrian wording),
but one of those books where the author's worldview is all over every page.
That part probably wouldn't be as annoying here if not for all the religious

There's a ton of recommendations for gear here, and most of it is pretty good.
This guy's obviously thought about it a lot.  A saner person shouldn't go nuts
like this, but have it be one factor when selecting firearms, knives, and other
normal stuff everyone buys.
** Technology and software
*** DONE newsbeuter
    - State "DONE"       [2010-01-06 Wed 00:40]
    - State "STARTED"    [2010-01-05 Tue 16:07]
Replaced newsticker with this.  While I lose the Emacs and w3m integration,
newsticker really isn't all that usable anyway given its annoying CPU-pegging
bug.  newsbeuter is also similar to mutt.  Maybe check back on newsticker a few
years from now.

- Put URLs in a file called ~/.newsbeuter/urls
- Default browser is Lynx.  Since this starts a browser process each time, Lynx
  is faster here.

Archived newsticker setup to unused_init.el
*** DONE Unix quiz
    - State "DONE"       [2010-03-08 Mon 13:39]