Time-stamp: <2018-01-07 02:17:50 (bm3719)>
#+STARTUP: content

 * Project List (2018)
** Computer Science/Programming
*** STARTED Learn You a Haskell for Great Good
    - State "STARTED"    from "TODO"       [2015-08-06 Thu 13:51]
It's been a couple years since I wrote much Haskell, so this will get me back
into it before doing a larger text.  http://learnyouahaskell.com/chapters
*** TODO Types and Programming Languages
The famous text many have apparently used to attain a pragmatic level of
expertise in type-theoretic models.  Programming language type systems have a
basis in the discipline of type theory, which this book gives a formal
treatment of.  Supposedly has aged well, with a downside being it uses OCaml as
the implementation language.  Some have done the problems here in Haskell,
which I might consider.  Online resources for the book are here:
https://www.cis.upenn.edu/~bcpierce/tapl/resources.html

Note that Philip Wadler recommends TAPL, followed by Proofs and Types, followed
by ATAPL.  Do the opam and tuareg yak-shaving tasks before getting started.
*** TODO LambdaCast (podcast)
A podcast about functional programming concepts.  Topic selection looks good.
On SoundCloud, so will have to find a way to download mp3s from there.
https://soundcloud.com/lambda-cast
*** TODO Clojure Applied: From Practice to Practitioner
A mid-level Clojure book, focused on architecture and composable systems
design.  Focuses on some library specifics that may not last, but otherwise
looks like a good chance to sanity-check a lot of my self-learned design.
Unless something great comes along, I'm making this the last Clojure book I
seriously read.  I'll may still occasionally queue up some of my other Clojure
texts I have in e-book form for casual reading though.
*** TODO Études for ClojureScript
A 2015 book on ClojureScript with practice problems.  There's another O'Reilly
ClojureScript book, ClojureScript Up and Running, but I think I'll skip that
and just read an online tutorial or two to familiarize myself with the
infrastructure and language differences, then do this book.

Differences from Clojure are listed here:
https://github.com/clojure/clojurescript/wiki/Differences-from-Clojure
*** TODO Introduction to the Theory of Computation (3rd Ed.)
A book that supposedly reviews the fundamental theorems of computer science.
This is a highly recommended book among Haskell programmers.  Covers languages,
automata, context-free grammars, computability, and complexity.  Note that
there's another book of the same title.  The one I'm targeting is written by
Sipser in 2012.
*** TODO The Lambda Papers
Having already skimmed these some, I've observed a lot of stuff in here that
make these not particularly enlightening.  For one, the code is antiquated and
not really too close to any modern Lisp syntax.  These are also very much a
product of their time, and include a lot of context within the academic
environment from which the ideas arose.  That would probably be of interest to
CS historians focused on the topic (if any even exist), but isn't useful today.
Another big factor is that most any functional programmer worth his REPL prompt
will already know most of the stuff here, as it's presented in a more
digestible form in places like SICP.

The bits worth reading today are likely confined only to their commentary on
the lambda calculus itself.  Just read those parts.

http://library.readscheme.org/page1.html
*** TODO Lambda-Calculus and Combinators, An Introduction
This was recommended as a suitable introductory text for the λ-calculus and
includes Schönfinkel's combinatory logic.  Replacing "An Introduction to Lambda
Calculus for Computer Scientists" with this one (which I didn't like after
reading a couple chapters).  Another option is An Introduction to Functional
Programming Through Lambda Calculus.
*** TODO The Lambda Calculus
An extremely dense tome on the λ-calculus written by Barendregt himself.  By
the time I get to this, I'll know if it's worth the massive effort.
*** TODO What I Wish I Knew When Learning Haskell
A large compendium of all things Haskell.

Read: http://dev.stephendiehl.com/hask/
Repo: https://github.com/sdiehl/wiwinwlh
*** TODO The Haskell Programmer's Guide to the IO Monad (paper)
A short paper just on the IO monad.
*** TODO Haskell Programming From First Principles
A 2016 Haskell book that starts from nothing and seems to cover the standard
stuff (about the same coverage and Learn You a Haskell).  Might give this a
try.
*** TODO Programming in Haskell (2nd Ed.)
The most recent full-course Haskell book, released in 2016.
*** TODO Real World Haskell
This was once the best Haskell book, but it's getting a little dated now.  I
might still read selected parts of it, however.  It's supposedly still relevant
in areas important to the Haskell practitioner.
*** TODO The Haskell Road to Logic, Maths, and Programming
Might skip this one, unless I'm doing a generalist math re-education at the
same time as my Haskell mastery task.  I might also use it as a source of
practice problems, since most books don't have any.
*** TODO Kleisli arrows of outrageous fortune (paper)
One of those algebraic structures that occasionally come up in Haskell
libraries.
*** TODO Roll Your Own IRC Bot
Probably a good example to learn some real world programming idioms in Haskell.
http://www.haskell.org/haskellwiki/Roll_your_own_IRC_bot
*** TODO Type Systems (paper)
An paper introducing formal thinking about type systems, extracted from the
Handbook of Computer Science and Engineering.  This might be a good review
prior to starting a formal self-education curriculum.
*** TODO Fun With Type Functions (paper)
A tutorial on type families.
*** TODO Practical Foundations of Programming Languages (2nd Ed.)
A book similar to TAPL, but updated in 2016 and not having full overlap.
Written by Harper, CMU professor author of the Existential Type blog.  Judging
from its increased terseness, I'm queuing it afterwards.  Answers to the
exercises here: http://www.cs.cmu.edu/~rwh/pfpl.html

Need to buy a copy.
*** TODO Proofs and Types
A 1990 book by Girard.  It looks like this ties together types with proof
theory, lambda calculus, and logic.  If so, that's just what's needed before
moving on to ATAPL and later dependent types.
*** TODO Advanced Topics in Types and Programming Languages
A compendium of type theory papers, curated by Pierce.  The point of the text
is to explore the interactions of types as they influence various CS subfields.
I'll probably give this a selected reading, given that I know some topics
extend beyond my interest window.  Includes a segue into dependent types.
*** TODO Dependent Types at Work (paper)
An introduction to dependent types in FP using Agda.
*** TODO Why Dependent Types Matter (paper)
A formal methods paper describing the rationale behind Epigram.  Probably won't
get much out of this until some more preliminary formal methods studying is
complete.
*** TODO A Tutorial Implementation of a Dependently Typed Lambda Calculus
*** TODO Software Foundations
Ties together and introduces the topics: software verification, proof
assistants, functional programming, reasoning about the properties of programs,
and using type systems for program guarantees.  Depending on how this goes, I
may read one or more other Coq books at this point.
*** TODO Learn You An Agda
An very short online book for learning Agda.  More of a tutorial, really.
http://learnyouanagda.liamoc.net/toc.html
*** TODO Dependently Typed Programming in Agda
This appears to be one of the most useful Agda texts.  I may consider following
this with Verified Functional Programming in Agda.
*** TODO Introduction to Algorithms
The most used algorithms book (particularly at the gradschool level).  I should
definitely know everything herein cold, at least in outline form.  Have the 3rd
edition in PDF form and the 2nd edition in print.
*** TODO The Annotated Turing
A Charles Petzold book that works through Turing's 1936 paper "On computable
numbers, with an application to the Entscheidungsproblem".
*** TODO Artificial Intelligence, A Modern Approach (3rd Ed.)
My main gradschool AI textbook.  Has a lot of interesting stuff here I never
got around to reading.
*** TODO Gnuplot in Action: Understanding Data and Graphs
Just skim the first few chapters then use the rest as a reference.
*** TODO What Every Programmer Should Know About Memory
A comprehensive survey on how memory and software interact.
http://www.akkadia.org/drepper/cpumemory.pdf
*** TODO Eloquent JavaScript: A Modern Introduction to Programming
Recommended as a good programming intro.  Could possibly use it as a
reintroduction text for refreshing JavaScript knowledge.  If I manage to feel
pretty good about the language prior to reading this book, I'll skip it.
*** TODO Understanding ECMAScript 6: The Definitive Guide for JavaScript Developers
Come up with a selected topics plan for this.  The goal is just to get familiar
with the newer features in modern JavaScript.  I'll take some notes and use
those to refresh my memory when/if needed.
*** TODO Purely Functional Data Structures
Creating data structures in an FPL is a knowledge gap I recently noticed.  This
is the primary text that supposedly addresses that.
*** TODO Deep Learning
A massive 2016 tome collecting the current thought on this topic.  While not
that interested in ML, I like deep learning's higher-level data abstractions.
Maybe do a selected topics read of this.

I may want to read the foundational paper, "A fast learning algorithm for deep
belief nets".
*** TODO An Introduction to Programming in Emacs Lisp (3rd Ed.)
At =C-h i d m Emacs Lisp=.  I don't really have any big ideas for my own modes
in Emacs, so reading this isn't any emergency.  However, even if I never do,
this will help some in debugging existing code.  Seems to have been updated
in 2009, so might be a little dated on the current direction of the language.
I may wait until the next version comes out.
*** TODO Developing Web Apps with Haskell and Yesod (2nd Ed.)
Not a huge fan of web apps, and I'm semi-inclined to default to
Clojure+ClojureScript for anything web-related, but I might give this a skim.
Another Haskell web framework, Servant, is also popular now.  Compare the two
before investing a lot of time in Yesod.
*** TODO Essentials of Programming Languages (2nd Ed.)
There's a 3rd edition of this book, but apparently it's a downgrade.  Stick
with the 2nd edition's cleaner implementation.  Considering this as I was
shortchanged on my PL course in undergrad, and this book covers the more
rigorous treatment of the subject where students incrementally build an
interpreter.  See the official page for this book, with code:
http://www.cs.indiana.edu/eopl/
*** TODO Design Concepts in Programming Languages
An comprehensive and massive tome on all things related to language design.  I
might start here if I want to shift from PLT to PL design.
*** TODO The C Programming Language (2nd Ed.)
C is on my shortlist of languages to use for the rest of my life.  So, doing
the exercises here will be a good refresher.  I'll just do those without doing
any build management or special tool use.

I have a hardcopy of the 1st edition and a mobi copy of the 2nd.  If I do
bother to read this, I'll probably just read the mobi version casually.  Since
I already know it, spending too much time here is probably a waste.
*** TODO Learn C the Hard Way
These "Hard Way" books tend to be a little sloppy, but are okay for language
intros for non-academics or practice-heavy language refreshers.  This will
probably be good enough C practice for me, especially if there's a gap between
reading this and TCPL.

http://c.learncodethehardway.org/book/
*** TODO NeHe OpenGL tutorial
I don't actually want to program OpenGL, but a tutorial could be a good
refresher of 3D programming concepts.
http://nehe.gamedev.net/
*** TODO Data Mining: Practical Machine Learning Tools and Techniques (2nd. Ed.)
Another one I may skip if I don't get to it before retiring from employment.
** Math
*** STARTED Introduction to Mathematical Thinking
    - State "STARTED"    from "TODO"       [2017-04-16 Sun 03:18]
This is the textbook for a 10-week Coursera course of the same name. This is
also the initial text recommended by this guy's "path to programming language
theory enlightenment": https://github.com/steshaw/plt

I'll give this a try, as it's of moderate length and just in case there's
something I've missed in my haphazard academic and self-taught math education.

Took notes and did exercises in practice/misc/itmt.org.  To keep things moving,
I skipped a few of the really tedious/redundant exercises.  I might move these
out to another math-related project later.

This is a pretty good book, though a few of his explanations were mildly
lacking and I doubt almost any HS grads (one of the targeted audiences) would
be ready for this.  I would also prefer topic introduction not occur inside of
exercises.  Regarding lack of answer, It would've been nice to have checked my
work and confirm correctness.  Personally, I've done everything in this book
multiple times in my life, but the refresher was nonetheless welcome and
needed.

Left off on page 67.
*** STARTED Category Theory for Programmers
    - State "STARTED"    from "TODO"       [2017-09-11 Mon 02:53]
An online book, where chapters are posted in a blog.  Might be too sloppy for
me, but will give it a try.  Will use the EPUB version for light reading on the
e-reader.  Some examples are supposedly in C++, which I'll skip/skim.
https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/
*** TODO How to Prove It: A Structured Approach
A college-level introduction to proof reading and writing.  The goal here is to
internalize thinking of the type required for solving proofs.  If this ends up
being inadequate, I can supplement this effort with Book of Proof (2nd Ed.)
which also looks good.
*** TODO Introduction to Logic (2nd Ed.)
This is a often-recommended self-study text on the subject, by Gensler.  If I
do read this book, I'll see about skipping the use of LogiCola, which is an
application designed for use with the book.  Since I've already taken classes
on this subject and this is just for refresher purposes, I might just read it
without doing exercises.
*** TODO To Mock a Mockingbird
An introduction to first class functions and construction to composition of
combinatory logic combinators.  These fundamentals are generally useful and
could be a good introduction to various PLT fundamentals.  Have an e-book copy.
*** TODO Contemporary Abstract Algebra (8th Ed.)
Highly recommended as an ideal self-education text on this subject.  I'll read
this book first, then reevaluate whether to queue any texts on specific
sub-topics, particularly group theory.  I also have the solution sets for the
problems here.  If I still want to do more of this, I also have a copy of A
Book of Abstract Algebra (2nd Ed.), which is also supposedly good.
*** TODO Conceptual Mathematics: A First Introduction to Categories (2nd Ed.)
Apparently one of the best category theory introductory books.  Will try to
start with this and see how it goes.
*** TODO Category Theory for the Sciences
Another supposedly great intro text.  I don't feel comfortable with just one,
so even in the best case, I'll give this one a try as well.
*** TODO A Taste of Category Theory for Computer Scientists (paper)
A lengthy 1988 paper by Benjamin Pierce.  Only available in image PDF form, but
could be useful as groundwork for Category Theory for Computer Science.  Just
read this without doing the exercises.
*** TODO Category Theory for Computer Science
Based on my self-study plan for category theory, I should be super comfortable
with the topic by the time I'm ready to read this extremely dense text.  The
goal is closing the gap from the abstract to application within CS, though if
this book isn't useful in that regard I may bypass it and just go to the PLT
application of the theory.  There are multiple books with the same CT/CS focus,
and this seems the most promising.  Contains both exercises and solutions.
*** TODO Concrete Mathematics: A Foundation for Computer Science
The most recommended math book for computer scientists.  From what I've read of
it previously, it seems to be a good sampling of things I've often encountered
and occasionally wished I had a thoroughly solid grasp of.  It is, however,
mostly in the number-crunching realm, which is probably of limited utility for
me.  As a result, I'll defer this and come back around to it after I've reached
my goals in pure math.  Consider doing all the exercises in Maxima.
** General Non-fiction
*** STARTED The First World War
    - State "STARTED"    from "TODO"       [2015-12-04 Fri 07:27]
I've read this back in college, but lacked some of the context necessary to
understand everything completely.

Designating this as my active hard copy book, so it'll take awhile.  Left off
on page 177.
*** STARTED 688(I) Hunter/Killer manual
    - State "STARTED"    from "TODO"       [2017-05-16 Tue 01:05]
The 250-page manual for this game.  While a good bit is about just playing the
game itself, probably the majority of it is real world info about how
near-modern submarine warfare is conducted.
*** TODO The Deluxe Transitive Vampire
A grammar book on proper English usage.  Will give this a read to ensure I'm
not making any mistakes, and just to remind myself of the various categories of
grammatical structure.  Some of these, I've forgotten due to never thinking
about it.
*** TODO The Design and Implementation of the FreeBSD Operating System (2nd Ed.)
The most recent (2014) FreeBSD internals book.  Will read this instead of The
Complete FreeBSD, which is now rather old.
*** TODO Introduction to Objectivist Epistemology (2nd Ed.)
I'd like to give all of Objectivism one final comprehensive study, then maybe
write a critique of it.  But, I haven't been able to find a PDF of this yet.
I'll give it one more look, then give up on this one.  Have a copy on Kindle.
*** TODO What Is Lojban?
An introductory text to learning the language.  Will at least read this and
make a determination on whether to stick with it.
*** TODO FreeBSD Porter's Handbook
The Handbook claims reading this can help when fixing broken ports (an all too
common problem on FreeBSD).  Maybe I can fix broken ones I need myself.
*** TODO A New Kind of Science
One of the earlier (if not the first of) attempts at proposing an alternative
model of the fundamental laws of everything computationally--an idea that's
resonated with me for a long time now.

Grabbed the e-book, but it's also available online here:
http://www.wolframscience.com/nksonline/toc.html
*** TODO On Thermonuclear War
Having read about a third of this already, I observe that book is worth reading
for more than just entertainment value, despite being published in 1960.  The
book is infamous for its emotionally-detached analysis of data-driven
projections of the results of nuclear war.  I find it the perfect example of a
presentation needing no editorializing.  In fact, the work would be lessened
were one included.  Will save this as the next hardcopy read.
*** TODO The Influence of Sea Power Upon History, 1660-1783
I like naval history, though mainly starting at the Russo-Japanese war era.
Despite being very old, this is still considered a classic and relevant to
naval strategists to this day.
*** TODO Being No One: The Self-Model Theory of Subjectivity
This is supposedly empirically-based (though still a philosophical model),
opposed to the mainly nonsense self theory talk in pseudo-intellectual
academia.  I'll give self-stuff one final chance with this book, and if it's
garbage, forget about it forever.  I may even do so if it's great, since these
theories are pretty pointless anyway, and my biology based operating theory is
actually useful.  This is a massive book, far beyond my tepid interest in the
subject, so I may do a selected reading.
*** TODO Naval Warfare, 1815-1914
A medium-length book covering the transition period from wooden sailing ships
to modern steel.  Focuses on the technology advances of the time and their
implications on naval strategy/tactics.  The reason I'm interested in this,
apart from my affinity to surface warfare, is developing a mental model for the
strategy/technology relationship in naval warfare.  This should help formulate
a realistic space combat model should I ever get to working on my related game
ideas.
*** TODO Multinational Maritime Tactical Instructions and Procedures
An unclassified version of the maritime volume of Allied Tactical Publication
1.  Used for international maritime exercises like RIMPAC.
https://nso.nato.int/nso/nsdd/APdetails.html?APNo=2064&LA=EN
*** TODO Seapower: A Guide for the Twenty-First Century (2nd Ed.)
Would rather read Fleet Tactics and Coastal Combat (2nd Ed.), but I already
have a copy of this, so I'll read it first (or instead).
** Fiction
*** DONE After Life
    - State "DONE"       from "STARTED"    [2018-01-05 Fri 02:26]
    - State "STARTED"    from "TODO"       [2017-12-28 Thu 01:43]
A recommended AI-focused hard scifi novel.  Using the EPUB version, but it's
also available online here.  http://sifter.org/~simon/AfterLife/

Turning this into a good story would mean changing almost everything.  No good
ideas, cringe-worthy pop culture references, needless sleeze, and ultimately a
pointless in the end.
*** TODO Aurora
Another recommended AI-focused hard scifi novel.
*** TODO Grainne War/Aftermath series
Also called the Freehold series.  Looks like another military scifi series.
Will definitely at least require skimming over the smut, which the books
contain at least some of.  Might still otherwise be too low-brow.  Will bail if
necessary.  Listings vary on order, so I just ordered them by publish date.

There's a follow-up series to this, called Ripple Creek, not yet scheduled
here.
- Freehold:
- The Weapon:
- Contact With Chaos:
- Rogue:
- Angeleyes:
*** TODO In Death Ground
Another military scifi novel.  One in a series, but I'll give just this one a
try before committing to it.  Remainder of the series is listed here:
https://en.wikipedia.org/wiki/Starfire_(board_wargame)#Books
*** TODO Worlds of Chthon series
A scifi series begun by Piers Anthony, with the final two novels written by
Charles Platt.  Anthony is mainly a science fantasy author, so bail if these
are in that genre.  Need to find copies of the last two.
- Chthon:
- Phthon:
- Plasm:
- Soma:
*** TODO SSN
A 1996 standalone Clancy novel about a US/China conflict over the Spratly
Islands, making it still sorta relevant today.  Refresh my geographic knowledge
by reading the Spratly Islands Wikipedia article first.  Have a mobi copy on
Kindle.
*** TODO The Last Ship
A cold war naval novel.  Supposedly okay, but has some lengths of content where
skimming or skipping ahead is highly advised.  Will give it a try.  Have a mobi
copy.
*** TODO The Lost Stars series
A military scifi novel series that follows Beyond the Frontier.  This one
focuses on the Midway system featured in previous entries.  After this is a
prequel series called The Genesis Fleet (being written) and a continuation
trilogy called The First Stars (not yet started), should I want to keep going.
- Tarnished Knight:
- Perilous Shield:
- Imperfect Sword:
- Shattered Spear:
*** TODO Takeshi Kovacs series
A semi-scifi series by Richard Morgan.  Might be crap, but will give it a
look.  Need to get copies.
- Altered Carbon:
- Broken Angels:
- Woken Furies:
*** TODO Camouflage
A Joe Haldeman novel about a personality dichotomy between super-intelligent
beings and a BDO, perhaps.
*** TODO Vortex
The final novel in the Spin series.  I'm a bit wary, since I found Axis so
unnecessary (at least in the form it took).
*** TODO Gravity's Rainbow
Supposedly Thomas Pynchon's magnum opus.  I'm mainly interested in its
experimental narrative style that is said to include detailed, specialized
knowledge.  "Experimental" in writing usually means crap though, so I'll bail
quickly if that's what this is.
*** TODO Beggars in Spain
A speculative look at the results of applied Objectivism.  I'm purposely
remaining in ignorance of any conclusions drawn here, so it could be complete
ass.  Objectivist fiction can occasionally be quite good, but most of it
(particularly the criticism, which often misinterprets it) is very awful.  If
this turns out to be the latter, I'll bail quickly.
*** TODO Proxima series
A new Stephen Baxter series about planet colonization.
- Proxima:
- Ultima:
*** TODO Mission of Gravity series
An older hard scifi novel about a highly oblate planet with a few other books
continuing the series.  Note that the second may only be tangentially related.
- Mission of Gravity:
- Close to Critical:
- Star Light:
- Lecture Demonstration:
*** TODO Starquake
The sequel to Dragon's Egg.
*** TODO The Long Earth series
A 5 part novel series about infinite Earths, in this case connected and used as
a device to explore lack of resource limits.  On its surface, parallel worlds
is a tired concept for me, and I'd rather see infinite resources explored via
other means (like asteroid mining).  I might still give it a try though.  Have
copies of all on mobi.
- The Long Earth:
- The Long War:
- The Long Mars:
- The Long Utopia:
- The Long Cosmos:
*** TODO Dune series
I feel ready for the massive undertaking of reading the entirety of the Dune
books.  There exists several curated lists of the order in which to read all
these, so I'll mostly stick to one of those.  For starters though, I'll read
these Frank Herbert authored works, which I consider the saga's core.
Supposedly, the following series are not as high quality and they seem to be
churning them out one a year, so I'll reevaluate when I get to that point.
There's also some other Frank Herbert novels worth considering later too.  Have
copies of all in text and mobi.
- Dune:
- Dune Messiah:
- Children of Dune:
- God Emperor of Dune:
- Heretics of Dune:
- Chapterhouse: Dune:
*** TODO Prelude to Dune series
The first of the expanded series, written by Brian Herbert and Kevin
J. Anderson between 1999-2001.  This is a prequel series, set just a few
decades before the events of Dune.  Reading these will determine whether or not
I can stomach the expanded series at all.  If these suck, I'm not going to be
wasting the months it'll take to read the rest.  Have copies of all in
text/PDF and mobi.
- House Atreides:
- House Harkonnen:
- House Corrino:
*** TODO Legends of Dune series
The second of the expanded series, written by Brian Herbert and Kevin
J. Anderson between 2002-2004.  Another prequel series, but set 10000 years
before the events of Dune.  Have copies in mobi.
- The Butlerian Jihad:
- The Machine Crusade:
- The Battle of Corrin:
*** TODO Dune sequel series
This is another expanded series, but one I'm considering separate for my own
reasons.  Written by Brian Herbert and Kevin J. Anderson between 2006-2007.
These follow the events of the core series and try to tie up loose ends based
on Frank Herbert's notes for the direction of the series.  Have copies in mobi.
- Hunters of Dune:
- Sandworms of Dune:
*** TODO Heroes of Dune series
Another expanded series, written by Brian Herbert and Kevin J. Anderson between
2008-2009.  Set between the events of Dune and Dune Messiah, and also between
House Corrino and Dune.  Have copies on mobi.
- Paul of Dune:
- The Winds of Dune:
*** TODO Great Schools of Dune series
The currently latest of the expanded series, written by Brian Herbert and Kevin
J. Anderson between 2012-2016.  Set 80-100 years after The Battle of Corrin.
Have first two in mobi, last in epub, which I need to run the converter on.
- Sisterhood of Dune:
- Mentats of Dune:
- Navigators of Dune:
*** TODO The Children of the Sky
The last in the series including A Fire Upon the Deep and A Deepness in the
Sky.  The setting for this one doesn't sound that great though, but the other
novels were at least readable, so I'll give it a chance.
*** TODO The Expanse series (in development)
Might be good.  Only know about the setting so far, which looks reasonable.
This series isn't yet finished, wait until it is before reading.  Also might
be too mass appeal targeted, evidenced by an active attempt to turn it into a
show.
- Leviathan Wakes:
- Caliban's War:
- Abaddon's Gate:
- Cibola Burn:
- Nemesis Games:
- Babylon's Ashes:
- Persepolis Rising:
- 2018 8th novel:
- 2019 9th novel:
** Technology/software
*** TODO Indium
Looks like it might be the current best for integrated JavaScript development.
https://github.com/NicolasPetton/Indium
*** TODO restclient.el
https://github.com/pashky/restclient.el
*** TODO Sitemaps
Sitemaps is a protocol used to inform search engines about the resources
available on a site.  Look into whether or not it's worth making one of these.
*** TODO Webpack
A JavaScript bundler and dependency manager.  Also has many other features,
including transpiling (most notably allowing one to code in ES6 and transpile
to ES5) and development deployments.  Setup a sample project.  Might consider
this for my own site use, though I'd rather defer this to use ClojureScript.
https://webpack.github.io/

Added to freebsd_setup.org.
*** TODO ESLint
Replaces JSLint.  Installed via npm.
*** TODO edn
Look into using this to store the data in commercial-angler-clj, instead of its
current method of using CSV files with complex schemas and supporting
functions.

- [X] Read the edn specification: https://github.com/edn-format/edn
- [ ] Read this: http://www.compoundtheory.com/clojure-edn-walkthrough/
- [ ] Refactor game to use edn.
*** TODO fn(fx)
A functional wrapper around Java FX.  Use this for Clojure desktop application
development.  Deprecate all use of seesaw.  Rewrite commercial-angler-clj in
fn-fx.  Consider using the garden library for CSS generation.
https://github.com/halgari/fn-fx

Here's a blog article on the subject:
http://nils-blum-oeste.net/functional-gui-programming-with-clojure-and-javafx-meet-halgarifn-fx/
*** TODO update to xmonad 0.13
I think I'm already using this on my laptop.  See release notes:
https://github.com/xmonad/xmonad/blob/master/CHANGES.md#013-february-10-2017

Also check out: https://github.com/xmonad/xmonad-testing

Keep an eye out for this version being pushed to the repo.  Do a =stack update=
and check ~/.stack/indices/Hackage/packages/xmonad to see what version is
current.
*** TODO MongoDB
I'm definitely at least suitably competent with MongoDB, though I could
probably benefit from a slight increase.  There's little point in going too
deep though, since I mainly only interrogate data on it through a CIDER REPL.

Tasks:
- [X] Install MongoDB on workstation and server.  I was doing a source install
  of this, but my current FreeBSD version is far enough ahead for the
  aggregation pipeline features.
- [ ] Master all features provided by monger.  Read guides and code API.  Write
  some code with it.
- [ ] Briefly scan the online manual.
- [ ] Maybe skim the book MongoDB in Action (2nd Ed.).
*** TODO clj-refactor.el
Probably should be using this.  This comes with pretty nice convenience
features like completion on and hot-loading dependencies, converting nested
structures to thread macros, auto-searching namespaces for filling in requires,
etc.  https://github.com/clojure-emacs/clj-refactor.el
*** TODO MariaDB
Determine if this is objectively better enough to be worth the tradeoffs.  If
so, switch to this from MySQL.  A port is available on FreeBSD.  Migrate all
databases over to this.
*** TODO HTML5
HTML5 is the de facto standard for web markup.  I've picked up some of this by
osmosis while updating my sites, but a more thorough scan of it might pay off.
Choose a text to read, assuming one exists that doesn't suck, in order to get
comprehensive coverage on it.
*** TODO core.reducers
Read up on the reducers library, here and in the linked blog articles.  Know
when to use them. https://clojure.org/reference/reducers
*** TODO core.async
Give this a proper self-education session.  Be sure to pay attention to using
transducers here.  https://github.com/clojure/core.async

Also read some criticism of the pattern here:
http://realworldclojure.com/on-the-judicious-use-of-core.async/
*** TODO clojure.spec
Learn this quite thoroughly.  Create a list of resourced to read on this.  I
was originally waiting until 1.9 was released, but I can do this anytime.
*** TODO test.check
The Clojure implementation of QuickCheck, the currently ultimate test library
for generative testing (also called property-based testing) and an alternative
to the standard example-based testing.  Note that double-check is a cljs port
of the same thing that I may want to check out later.
https://github.com/clojure/test.check

Example of use: https://github.com/reiddraper/clojure-transient-test
*** TODO specter
A library for manipulation of deep, nested structures in a unified and
performance-optimized way.  https://github.com/nathanmarz/specter
*** TODO clojail
Check this out for embedded REPLs.
*** TODO clojure2d
A small library for live 2D image manipulation, popular in "live coding" demos.
Will just give it a quick try.  https://github.com/Clojure2D/clojure2d
*** TODO advenjure
Maybe use this for my Celebrity Stalker game idea.
https://github.com/facundoolano/advenjure
*** TODO Peridot
Full Ring testing with sequences of calls.  Good for, say, testing a login
sequence.  Watch the first lightning talk here:
https://www.youtube.com/watch?v=xaxF5RDdVRE
*** TODO transit-clj
Might want to use this to propagate types between front and back ends on an
n-tier application that encodes data in JSON.  Supposedly, this parsing is
super fast (significantly more so than EDN).  I don't think there's a need for
it at the moment, but it's worth being aware of.
https://github.com/cognitect/transit-clj
*** TODO PhantomJS
Seems to be the preferred back-end for ClojureScript.  Has a port in
lang/phantomjs.  Look into Emacs integration.  Note that if installing via npm,
be sure to symlink command nodejs to node.
*** TODO Tern
Looks like this provides a ton of JavaScript features for Emacs.  Also has an
AngularJS plugin.  http://ternjs.net/doc/manual.html#emacs

Also, see this for jumping to function code:
http://www.reddit.com/r/emacs/comments/224d2c/psa_if_you_are_editing_javascript_in_emacs_set_up/

Read this too:
http://truongtx.me/2014/04/20/emacs-javascript-completion-and-refactoring/
*** TODO play-clj
Was previously going to learn LibGDX, but then this Clojure wrapper to it came
out.  Seems quite excellent and I'll probably make this my replacement
lightweight game library.
*** TODO GraphQL
An alternative to REST.  Maybe check out GraphiQL, which is a GraphQL live
editor/browser plugin, or something like that.  Lacinia, is a GraphQL library
by Walmart Labs.  https://github.com/walmartlabs/lacinia
*** TODO LiquidHaskell
A type system extension that allows for extra compile-time checking.  Looks
pretty amazing.  Look into this after getting to intermediate Haskell skill.
https://ucsd-progsys.github.io/liquidhaskell-blog/

Tutorial: http://ucsd-progsys.github.io/liquidhaskell-tutorial/01-intro.html
*** TODO Gorilla REPL
Possibly the best data science solution for Clojure at the moment.
http://gorilla-repl.org/
*** TODO structured-haskell-mode
Like paredit, but for Haskell.  Lack of AST-aware editing for a language I
intend to use a lot sucks pretty bad.  Looks like this has a stack build file
now, but still requires an external executable.  As a result, I'm deferring
this until I really get into it.
https://github.com/chrisdone/structured-haskell-mode
*** TODO Emerge
A merge tool for Emacs.  This is pretty simple to use, but I need to read the
info page on it (and maybe collect some common commands) and setup git to use
it as its merge tool.
*** TODO advanced Emacs macros
Currently just using macros on a one-time basis, which isn't utilizing their
full power. Write down the stuff needed to record macros, use them in batch
mode for text processing, and whatever else can be done with them.  Maybe start
an archive of useful macros that I often construct.

http://www.emacswiki.org/cgi-bin/wiki/KeyboardMacrosTricks
*** TODO opam
OCaml's package manager.  Supports having multiple compiler versions.
Available on FreeBSD and devel/ocaml-opam.  Read up on its idiomatic usage.
Along with the OCaml package itself, just get this setup good enough to get
some work done in and remove it all after completing work on TAPL (unless I
somehow find permanent utility in keeping it around).  Once done, I'll switch
to one of the implementations in Haskell, or write one myself.
https://opam.ocaml.org/
*** TODO tuareg
Seems to be the canonical OCaml mode for Emacs.  Can be install via opam.
https://github.com/ocaml/tuareg
*** TODO migrate l1j-en server
Migrate my local l1j-en server to cellblock since it has enough RAM/CPU to run
it fine now.  Note that the server nonetheless is considerably slower to
startup than previously.  I'm waiting until there's a little additional
stability in the project in general before going this route.  This is mainly
due to the fact that I develop against it in Eclipse on Windows, and running it
there allows for a quicker edit-compile-test cycle.  When I'm ready to do this,
update my login INI files to include both the Windows and FreeBSD-hosted
versions.
*** TODO Dired+
Been using Dired a lot more lately.  This extends the functionality in ways I
might want.  http://www.emacswiki.org/emacs/DiredPlus

There's also Dired-X, which is already included by default.  If I don't want to
use Dired+, I may still want to expand my normal dired knowledge and include
Dired-X capability.  dired-k and dired-hacks might also be worth a look.
*** TODO crontab rsync scripts
Setup a backup schedule to the external USB drive I plan to get for these
purposes.
*** TODO Overtone
An audio engine in Clojure, wherein you write source and have audio generated
programmatically.  Could be a plausible alternative to externally generating
audio files for games.  Supposedly, this allows one to trade programming skill
for musical skill.
http://overtone.github.io/
*** TODO Unity engine
Check out the free version of Unity to see how much work it is to use.  Unity
has become super popular lately, especially with indie games.  Learn the basics
of the platform, then check out Arcadia, which integrates Clojure and Unity.
https://github.com/arcadia-unity/Arcadia
*** TODO nmh
Consider replacing mutt with this.  mutt's great, but nmh has full Emacs
integration (mh-e) and is supposedly faster (in execution and use), so maybe
this makes more sense for me.

http://mh-e.sourceforge.net/
*** TODO Twelf
A dependently-typed logical language more powerful than Prolog.  Comes with its
own Emacs mode and is available as a FreeBSD port.  Probably will skip, but
will at least consider it once I clear off some of the queue.
http://twelf.org/wiki/Main_Page
*** TODO Aircrack-ng
Being able to have free internet access almost anywhere would definitely come
in handy.  Maybe use kismet for grabbing IVs.  Get some dictionary files for
WPA.  Set all this up on a laptop.  Before spending time on this, look into the
viability of this for modern WPA2.  Aircrack-ng also provides some other
functionality, but not enough to warrant getting into it without the core
feature.  Might skip altogether, since I'm not really into this kinda thing.
*** TODO BitWig
Maybe look into this for normal audio creation.  Ardour is another alternative.
Both run on Linux.
*** TODO Krita
An open-source, free graphics program, seemingly great for drawing.
*** TODO SketchUp
A 3D modeling app that is supposedly super simple.  Use this to design a rifle
rack and any other furniture I want to make.  Can also export to common
formats, so it might be useful for other things.
*** TODO update CUPS setup on FreeBSD
print/cups-client is no more.  Figure out how to get printing working again.
** Work-related
*** STARTED create pantheon of gods
    - State "STARTED"    from "TODO"       [2017-04-17 Mon 23:37]
Think of a hierarchy (or maybe a non-hierarchical assemblage) of gods.  This
should be a completely original conception of what gods should represent.
Historically, humans have created gods to represent things on a spectrum from
the easily fathomable (natural phenomenon, animistic elements, ancestral
lineage) to the mildly esoteric (simplistic, abstract concepts like virtues,
vices, and other anthropomorphous qualities).  Maybe create a page on the site
for these when done.

Properties of my conception of a pantheon:
- Properties of gods are based upon much higher-level abstractions.
- I'd also like a deep, n-ary connection between them that goes beyond
  dichotomous polar-opposites.
- The conceptual space they occupy should be all-encompassing, in some
  large-scale manner, while also ignoring human-scale concerns.
- They should also have symbolic expressions and appropriate names, preferably
  multiple of both.
- They should have a somewhat intelligible description possible, but also a
  true, maximally-esoteric description.
- The pantheon should have a canonical visualization in some obscure geometric
  or abstract polytope.

An example with 3 ternary subgroups:
- god X: Equivalence, implication?
- god Y: Composition and convergence.  Cellular automata.  Conceptually,
  influence and environment.  The comonad.
- god Z (Tensor): Path, direction, progression, state transition?

- god P: Binding, conceptually of names, physically of constraint of movement,
  range, spectrum.  The monad.
- god Q: Boundary, spatial and conceptual.  Surface.  Knowing of things.
  Finitude.  Shape.  The group/category.
- god R: Structure and structure-preserving transformation.  The F-coalgebra.

- god A: Indifference, both of nature and conscious entities.  The nature of
  the universe.  The machine.
- god B: Cause and consequence.  Determinism.  Futility.  Inevitability.
- god C: Stochastic processes/systems, statelessness.  Complexity, in reality.
  The Markov chain.

On the surface, sets are {{X, Y, Z}, {P, Q, R}, {A, B, C}}, but also there is a
deeper set definition of {{X, P, A}, {Y, Q, B}, {Z, R, C}}.

Also pondering the idea of a unification entity, ostensibly representing some
more fundamental abstraction of reality.  The other gods would not then be
discrete entities themselves, but rather eigenvalues of this entity when some
structural transformation is applied.  Alternatively, no central entity could
exist, but the gods themselves could be eigenvalues of each other.
*** TODO presentation on types
The idea behind this talk is to bridge the gap between modern typed FPLs and
Clojure.  The subtopics include:
- Basics of what it means to be dynamically typed.
- Other type concepts at work in Clojure, like extrinsic typing.
- How do deal with types in Clojure code.
- core.typed and the concept of optional typing.
- How constraint-based programming like spec can be used to satisfy some of the
  problems associated with lacking types.
- Some basic type theory.

Sub-tasks:
- Check out core.typed, and write up a quick example.
- Read Types and Programming Languages.
- Create presentation in LaTeX Beamer.
*** TODO rewrite projects page on main site
At least add a blurb for MV Rockzap.
*** TODO read up on ShipBuilder
Just watch a video or something.  Has a full collection of ship components.
*** TODO search engine site tuning
Do these things once the main site is redone and I have some finalized content
for it.  SEO is one scummy industry, and if you ignore the spam part of it, you
can do it yourself quite easily.
- Sitemap.xml: Create one of these for search engine indexing.  See:
  http://www.XML-Sitemaps.com
- robots.txt: Already have one of these, but should add stuff to exclude, like
  various script files.
- Google Analytics: Set this up.  http://www.google.com/analytics/
- Google Webmaster Tools: https://www.google.com/webmasters/tools/
- Dmoz: Add site here.  Google uses Dmoz to factor in its rank.  Go to
  dmoz.org, and click "Suggest URL".  Will need to submit it under some kind of
  software company category though.
** Games
*** STARTED 688(I) Hunter/Killer
    - State "STARTED"    from "TODO"       [2017-05-16 Tue 00:47]
First in the series of naval sims by Sonalysts, released in 1997.  May be too
ancient to be playable, but will give it a try first.  My plan is to progress
through all the PC games in this series, if possible.  However, I'll quickly
plow through these older ones.
*** STARTED The Wizard Sniffer
    - State "STARTED"    from "TODO"       [2017-11-29 Wed 17:00]
Winner of IFComp 2017.
*** TODO X3:Terran Conflict + Albion Prelude (revisited)
Revisit this and restart my pacifist run.  I'm still a bit unenthusiastic about
the X-series due to X:R, but I'll give this game another chance.  I do somewhat
suspect that I may have outgrown the series altogether though.

Docs:
- Beginner's Guide:
  https://steamcommunity.com/sharedfiles/filedetails/?id=180463026

Setup:
- Install game from Steam.
- Run the game from Steam once to do initial setup.  This will also allow
  checking graphics settings (leave these default, and if performance is an
  issue later, decrease AA to 2x).  Also setup the controller.
- Install X3:AP bonus pack 5.1.0.0.  Read bonus pack README PDF.
- Install 3.2 non-Steam .exe.
- Install plugin manager.  Deselect Auto Updater.
- Manually install PSCO1 Cockpit Mod 1.33AP.  I have these as 14.cat and
  14.dat.
- Install Universal Best Buys/Sells Locator into plugin manager.
- Install Universe Explorers.  Requires AP Libraries.  Install both into plugin
  manager.  Also requires Community Plugin Configuration mod, which is already
  installed by default in the plugin manager.
- Manually install transparent sidebar mod.  Create a "dds" folder in the root
  game directory and copy the dds file into it.
- Extract the MK3 Optimization mod and run the extraction exe against the
  addons directory.
- Install (as an archive) Reduced Enemy Missiles mod.  This reduces missiles to
  the X:R rate instead of the missile spam in AP.
- Try no floating icons mod.  This didn't work for AP, last I checked though.
  Maybe modify this mod myself?  Some guy had a solution here:
  http://steamcommunity.com/app/201310/discussions/0/558751364352364986/
- In regedit, modify the HKEY_CURRENT_USER\Software\Egosoft\X3AP\GameStarts
  value to ffff.
- Set FOV to 80 for a 16:10 monitor.  This is a reduction and ideally the FOV
  would be 100 or so, but this does get rid of the stretching.
- Adjust in-game keybindings.  Copy over old config for this.
- Mods to consider later:
  - Anarkis Defense System, if I start using carriers.
  - ANCC Scramble, to scramble fighters.
  - Docking Lockup Fix, if the docking bug shows itself.
  - Terran Conflict plots 2.2a.  Only do this after doing the AP plots, if I
    ever do them at all.
*** TODO Chrono Trigger
Normally I hate JRPGs, supposedly this is one of the best video games of all
time, so maybe it's an exception.
*** TODO Pioneer
An open source space sim.  Looks like an Elite-clone at casual glance.
https://pioneerspacesim.net/#&panel1-7
*** TODO Space Station 13
Supposedly a unique concept.  Multi-player, however, so maybe just give it a
try for a bit.  https://spacestation13.com/
*** TODO Sub Command
First in the series of naval sims by Sonalysts, released in 2001.  Has the
cleanest graphics of the three.  Only allows play of 3 submarine platforms.
Will give this a try before playing DW.
*** TODO Dangerous Waters + RA 1.41
    - State "STARTED"    from "TODO"       [2017-05-13 Sat 02:14]
Probably one of the most involved sims ever made.  Once I can spare several
days to read the manual, I'll give this a try.  Also read at least the
Wikipedia articles on all weapons and platforms in the game.

The Reinforce Alert mod brings in a ton of new platforms, missions, and
improves graphics all around.

Notes:
- Update to 1.04.
- Might want to flag the binary with -wantVSync.  Try without it first.
- Install RA 1.41.
*** TODO The Operational Art of War III
There's a huge genre of TBS wargames that have minimal graphics and are mostly
on hex-based grids by convention.  These supposedly have a lot of strategic
depth.  I'd at least like to give one of them a try, and TOAW3 is often cited
as one of the best (the very expensive War in the Pacific: Admiral's Edition is
another).

The copy I have was stuck in bin/cue format.  Converted this to an ISO using
bchunk on a Linux VM.  Deleted the bin/cue copy.  Installed to my WinXP VM.
Note that this is better at a lower resolution, like 1600x1024.

Notes:
- A copy of the manual is included in the install.
- Read the tutorial .doc file while doing the tutorial mission.
*** TODO Nethack
Once I've finished most of the one-off games off this list, it's time to really
master Nethack and attempt to actually ascend a character (something that has
always been one of my goals in life).  Using games/nethack36-nox11.

Notes:
- Start a terminal with =urxvt -fn "xft:dejavu sans mono:pixelsize=22"= if
  playing fullscreen.
*** TODO Red Storm Rising
A 1989 sub simulator for DOS.  Try to get this working correctly in DOSBox.
Looks like it might be mildly entertaining.

I can spare myself the DOSBox setup by using this online version:
http://playdosgamesonline.com/red-storm-rising.html
*** TODO Orbiter 2016
I've played this over a decade ago, but didn't give it the time it deserved.
Will give it another try since I'm into realistic space sims and orbital
mechanics.  http://orbit.medphys.ucl.ac.uk/
*** TODO Silent Hunter 4
Will play missions to get used to the game, then eventually try to complete a
100% realism career until getting awarded the desk job.  SH5 has also been out
since 2010 and is now DRM-free.  So, I might instead get that if I don't get to
SH4 anytime soon.
*** TODO System Shock 2 (modded)
Try this with the Rebirth (improved models/textures) and/or SHTUP mod (higher
resolution textures).  For sound, there's also a mod called "DeepFriedBeer's
Sound Upgrade for SS2".

There's also a reboot of System Shock in the works now, though I'm not counting
on that being good.
*** TODO Aurora
A freeware 4x game, one that's apparently of extremely huge depth.  Uses native
Windows GUI widgets, like Stars!.  Tutorials are available here:
http://aurorawiki.pentarch.org/index.php?title=Main_Page

Notes:
- Grab the portable version, mentioned here:
  https://www.reddit.com/r/aurora/comments/3z6hy3/aurora_allinone_installer
- Ensure the Microsoft Visual C++ Redistributable for Visual Studio 2015 is
  installed.  On my Windows 7 box, it already was.
- A C# version is supposedly in the works.
*** TODO DCS World 1.5
The current DCS version, released in 2015-10.  Comes with free access to the
Su-25T and TF-51D.  There's no reason not to at least give these aircraft a try
and master their controls.

If I decide to get any modules, the current two highest quality are the KA-50
and A-10C.  I particularly like the KA-50's insane number of switches.
*** TODO Planescape: Torment: Enhanced Edition
Might be willing to give this another go.  Wait until around $5 on GOG.  Since
I have a CD version of it too, I might be willing to just use that instead.
*** TODO Command: Modern Air/Naval Operations (purchase)
Super expensive ($80), but looks like a true Harpoon successor.  Keep an eye
out for a sale.  Probably better to buy from Matrix Games' site, which allows
for registration of the serial on Steam.  Was last on sale for $28, which is
still too much for a Google Earth application.  Multiple DLCs are also
available and can easily double the price if all are bought.  These will need
to be bundled with the main game before considering to purchase.
*** TODO Xenonauts (purchase)
Might be a worthy successor to the X-COM series.  Was released mid-2014.  Looks
okay, but doesn't seem to be worth $25.  Lacks much complexity, it seems, and
I'm not a fan of the manual air battles, so I'm not in any hurry to play this
and may skip it altogether.  Last seen on sale for $10.
*** TODO Wasteland 2 (purchase)
Seems lacking in depth on the items/stats/strategy side of things compared to
JA2 1.13+AFS.  It does have some other unique features, like it supposedly
includes at least some procedurally generated content.  I've read a few bad
points about it, and negative reviews suggest I'll probably dislike it for
things like it's random loot system and lack of variety.  Get this on GOG if I
do, but wait until it's extremely cheap (under $10 at most).
*** TODO Tyranny (purchase)
Uses the Pillars of Eternity engine.  Looks like it might be okay, but will
wait until it's under $20 and all expansion packs are bundled.  Check back
around 2019 or so.  Might skip entirely though, since it doesn't look that
great.
*** TODO Stellaris (purchase)
Another space 4x game, released in early 2016.  This one looks quite polished.
Already has a DLC.  Wait until maybe around 2020 or so.  Keeping this as my
currently most promising 4x game, but will replace if something better comes
along before it's reasonably priced.  I've been too disappointed with this
genre to pay more than $15 or so.
*** TODO Cold Waters (in development)
A new sub-sim.  Give this one some time to see if they add some features hinted
at, like the ability to play as Soviet units.
*** TODO Tales of Maj'Eyal 1.5 (in development)
Includes the second expansion to ToME, with a complete 1-50 campaign.  Also, in
1.5, the possessor class is supposedly being added.  Recent versions have
supposedly made the game's plot-related enemies not so lacking in variety.  I'd
still like to do an oozemancer run.  I could do that now, but by the time I get
to this, 1.5 should be out.  Could also play this on FreeBSD, since there's a
port available now.
*** TODO HELLION (in development)
A game supposedly focused on realism and survival in space.  Currently in early
access.  Looks like development might be stalled, so definitely don't buy.  I
find the concept appealing, so it costs nothing to check back in a few years,
just in case the unlikely thing happens and this game turns out great.
** Programming projects
*** STARTED rewrite Commercial Angler
    - State "STARTED"    from "TODO"       [2015-07-26 Sun 02:20]
This could be a good sample project to do GUI programming in Clojure.
- Rewrite in Clojure using seesaw or play-clj.
- Consider using a deployable database for game data, like SQLite.
- Add saving and custom characters.

Update: Start over using fn-fx.  Also consider using EDN to store the data
instead of CSV files.  That would preclude the need for complex schema code.
*** TODO rewrite pexpect scripts
Rewrite these in some other language besides Python.  Once I do so, I can
deprecate my entire Python development stack and just keep around the built-in
python-mode around on Emacs and the Python interpreter pulled in by Xorg.
There's a list of libraries here: https://en.wikipedia.org/wiki/Expect

Maybe I can use the Java library via Clojure's interop.  Also I might just
deprecate these scripts altogether, since I don't use them much now.
*** TODO miscellaneous practice projects
Some ideas for a few practice projects of the ~3 day effort range.  Break these
into individual tasks if I choose to do any.
- An analog-style clock using vector graphics.
- A parallel Sieve of Eratosthenes.
- Use Delauney triangulation to convert a collection of circles into a graph.
- Rewrite my l33t-speak converter (which I think I lost the source for) in
  elisp.  This would make a superior converter than M-x studlify-region.  Call
  this l33tify-region.  I could also make one for dewdspeak (dewdify-region).
- A market data research program that uses Pearson's correlation coefficient to
  detect related and inverse-related ETFs.  This could actually be quite
  useful, since if one of these coefficients gets significantly out of line, it
  might be a promising trade to buy into a likely gap close.
- A price prediction modeler using Weka.  Locate a target equity that I want to
  predict the price of, and conjecture upon influencing/correlated equities.
- Utility to find the polygon representing the convex hull of a set of points
  in 2D.  Maybe also do in 3D.  This is a solved problem, so do it in some
  esoteric language.
*** TODO The Affairs of Men
Create a more formal design document in org-mode for this game and collect all
of the various ideas I've accumulated there.  Clean up/finish the preview page
and concept art graphics.

Currently, I'm not too worried about coming up with a realistic plan for
actually getting this project off the ground, since every time I've started
writing code, I've just ended up tossing it a year later.  So, the main goal
now is to finish my self-directed languages study.  At that point, I'm sure
I'll have more permanent ideas about how to approach this problem.
*** TODO MV Rockzap
Still a long ways off from actually beginning to implement this, but current
thoughts are to do this in Clojure, using some currently unknown combination of
graphics libraries.

No one has yet seriously attempted to write a game anywhere nearly this
involved in Clojure, so chance of failure is pretty high.  But, getting a
finished product is much less a goal than having some significantly complex
software to work on.
*** TODO Suburban Lawn
Probably write this in Clojure.  See sl.org for design doc.

Only spend a week or two making this, but actually try to make this game
entertaining to play.
*** TODO Anthrocon TD
Rehash of the tower defense game concept.  This is a reimaging of my original
TD game idea, Day Care Defense.  This version takes place in Pittsburgh on
fursuit parade day.  The lore goal can be to kill furries before they get through
the parade, so they can't yiff and procreate.

Features:
- Maps can be various fictional parade routes through Pittsburgh and/or the
  conference center.
- Include bloody remains that don't disappear (something no other tower game
  has, as far as I know), possibly even through levels.
- Possibly have (at least the option of) players retaining wealth through
  levels.
- Have damage affect the speed of enemies.
- If I feel like it, write an algorithm to randomly generate playable maps.
- Towers are remote weapons platforms with upgrades possible: small arms, LMG,
  HMG, grenade, mortar, flame thrower, chemical irritant, etc.  Include damage
  calculations in kilojoules vs. mass, immolation vs. surface area.
- Enemies: Various normal furries, obese furries, wheelchair furries,
  quadsuits, bronies, scalies, various otherkin.
- Alternatively, think about making this a text-based tower game, something no
  one has attempted yet.
*** TODO web app ideas
Nothing too original here, but might be good practice for HAppS or
Ring/Compojure.
- Something to auto-generate RSS-feeds from web-journal posts.  Alternatively,
  something that aggregates post markup from a datasource into various
  presentation outlets (main listing, permalink listing, and RSS).
- Some manner of comment-validator that tests the following captcha idea: A
  captcha, for example, could start with an alpha/beta/eta-reduction answer and
  build up lambda expression complexity around it, then ask the user to reduce
  the expression and enter the answer before posts are accepted.  Think of some
  other composable mathematical expressions along these lines, then randomly
  select an algorithm and generate a problem.
- Auto-page creation based on a directory hierarchy.  Every directory and
  sub-directory will be checked for the existence of a home.edn file. If found,
  a page will be generated based on the template file with the content markup
  inserted into it.  If not found, it will just list directory contents if the
  server supports directory browsing.  When a page is created, the
  sub-directories and any other EDN files will be listed on a navigation bar.
  These will go to auto-generated pages as well.  The navigation will always
  include a top-level and possibly an up-one-level link.  Looks like a project
  called "werc" already does something similar to this, written in rc shell.
- Something to generate various system stats dynamically, so I don't have to
  paste this stuff in again when hardware or software gets updated.
*** TODO Detroit in Ruins
A light/medium-complexity RPG game taking place in modern Detroit.  Perhaps
done in the MMORPG style (but still single player).  Battle respawning monsters
like raccoons, bears, feral dogs, inner city blacks, UAW members, squatter art
students, social workers, prostitutes, arsonists, and community organizers.
Collect gold, food stamps, syringes, scrap metal, copper wire, etc.

This idea isn't worth going all out on.  So just use a pre-built isometric
engine.  This might be a good project for gaining competence in some work
language.
*** TODO Clock Watcher
A simple 2D game with the same visual style of the NES game Wall Street Kid,
where you're a forgotten employee.  Basically, a video game version of this
story: http://shii.org/knows/American_Dream

Played in real time, the player has to endure 8 hours of pretending to be busy
whenever the boss walks by (by alt-tabbing back to Excel), waiting for 5PM (a
clock is visible to stare at), and putzing around with his computer to kill
time.  Status bar should show: Name, date, age, net worth.

Could be a good CLJS game.
*** TODO Freedom Club
A life-simulator where the player plays as Theodore Kaczynksi in his shack in
Montana.  Mostly intentionally boring, but will have activities like:
- Working on your manifesto.
- A mail-bomb construction mini-game.
- Creating night soil from excrement.
- Using a single shot .22 rifle to shoot rabbits, turtles, etc.
- Raising turnips.
- Managing supplies.
- Getting water from a nearby stream.
- Tons of hidden Easter eggs scattered around the game.
- A user-filled or auto-filled diary.
- Chasing away raccoons or other animals that try to steal your food.
- Receiving a monthly check in the mail from your brother.

Game world will be bounded on all sides by industrial parks and suburban
housing, but should include enough wilderness to spend hours roaming in.
*** TODO Trans-Neptunian Hermit
A space simulator taking place in Trans-Neptunian space, on and around Eris,
Makemake, Haumea, Sedna, and the smaller objects in the Oort cloud and such.

This could either be a more serious and scientifically accurate resource
management game, or possibly a more casual incremental game.
*** TODO WROL
A WROL/SHTF scenario simulator.  This can even be a text-based game, but would
be more interesting as a graphical one.  The player starts as a normal
suburbanite and at a randomized time in the future, WROL/SHTF hits.  The goal
is to prepare enough beforehand to survive, managing resources, property,
etc.  The game concept revolves around being a 2-part game, divided by a
significant event that completely changes the game world.

A possible idea I had for this was that the cataclysm could be one of many
dozens (with clues that improve the statistical odds of a particular event
happening).  The player could spend time collecting clues to get better odds
on the event type, or just dedicate energy to preparing.
*** TODO Memewar
An abstraction of character management wherein you manage the susceptibility of
your character to all the world's major memes.  Would be good for a mobile
platform game.
*** TODO Celebrity Stalker
IF game.
*** TODO bf
bf is easy to learn (already learned it once before), but a real challenge to
write programs in.  Maybe implement a few of my favorite algorithms in it.  One
way to debug bf code is to use bf2c, which converts what you write into
something legible.  There's also an Emacs mode for the language, of course.
Could use the Haskell interpreter for this.
*** TODO Departure Lounge
A nursing home RPG.  Probably good for a quick game, in which case the goal
could be escape to the outside.  This could also be an IF game too.
*** TODO GovSim
A multi-agent system that simulates different economic models.  Will have to be
detailed enough to simulate at least the majority of factors involved in
centralized economy management and be back-testable to some precision.  Should
have end user configuration options for tweaking assumptions (like agent
irrationality).  Not sure if this is possible, but would be incredibly awesome
if so.  If it is, it's likely a huge effort that would require a lot of
contributors.
*** TODO Turnip Farm
A farming sim, mostly involving raising turnips.  Just a concept for a setting
currently.
*** TODO Chore Simulator
Make the most dreadful grind of a generic fantasy MMORPG ever.  Only do this if
I have assets and an isometric game architecture already in place.  Will work
on the idea some to see if I can fill out the details of how it will be an epic
burden in every way.
*** TODO lambda calculus library in Clojure
Make a library that includes all the standard lambda calculus features,
particularly lambda reduction.  Some guy did a very lacking version of this
here: https://github.com/viebel/lambda-calculus
** Computer science/programming goals
*** STARTED Clojure mastery
    - State "STARTED"    from "TODO"       [2014-05-05 Mon 17:12]
After vacillating between Clojure and CL for years, I've concluded that Clojure
is the way to go.  The analysis breaks down like this:

For CL:
- Better books.
- Deeper history with decades of ancient and awesome code.
- No JVM and its assorted baggage.  For example, Clojure will barf JVM stack
  traces and has no facility for investigating the stack, changing stuff, and
  resuming execution.

For Clojure:
- Active and rapid progress.  CL is comparatively stagnant.
- More active userbase, consisting of people more amicable to interaction.
- Libraries more often actually work.  CL's ecosystem is full of mostly abandoned
  projects that were written for internal consumption.
- Clojure is on an upward trajectory.  While not the most popular non-Java JVM
  language yet, Groovy and Scala programmers tend to be much less passionate
  about contributing.
- The better CL literature can still be leveraged in the Clojure world, for
  the most part.
- Most of CL's historical baggage is gone and a lot of ugly timesinks (like
  macro hygiene) are mostly non-issues.
- Being a CL master means very little if your goal is to write useful and/or
  sellable software.  I can make money with Clojure, but not CL (minus a few
  exceptions).  If I want to neckbeard it up, I can still use Haskell.
- It supports logic programming with core.logic.  It supports front-end
  programming with ClojureScript.  It also supports JVM game dev with libraries
  like play-clj.  Thus, it fills a bunch of roles impossible with CL.  Those
  that it is lacking in (like anything type-based) are covered by Haskell.

The plan:
- [X] Finish reading The Joy of Clojure (2nd Ed.).
- [ ] Read Mastering Clojure Macros.
- [ ] Read Clojure Applied: From Practice to Practitioner.
- [ ] Master clojure.spec.
- [ ] Read a bit more on these topics: reify, refs, agents, futures, promises,
  transducers.  Make sure I know how/when to use them in practice.

After this, maybe create a separate task for ClojureScript and some supporting
technologies.
*** STARTED minimal front-end competence
    - State "STARTED"    from "TODO"       [2017-04-02 Sun 00:37]
Get from knowing mostly nothing about modern front-end development of the
client-side, web app kind to at least being able to slap something together.
I'll rely on my general programming skills to compensate for my lack of
ecosystem knowledge when/if I have to do anything here.  I'd really hate to do
this, but it would be useful at work and I think I can do it in a minimally
intrusive way.  Try to squeeze this whole half-assed effort into 3 weeks.

Already read Front-End Developer Handbook 2017, which did provide a little
context.  I might give at least the trends part of this a glance every year
from now on.

The plan:
- [X] Read up on npm.
- [X] Look into MathJax and replace all math on my sites with it.
- [X] Read up on highlight.js.
- [X] Read up on Grunt.
- [X] Maybe read up on Mithril.
- [ ] Read up on Webpack.
- [ ] Read up on ESLint.
- [ ] Read/skim Eloquent JavaScript: A Modern Introduction to Programming.
  This will be my reintroduction to the language.
- [ ] Read selected parts of Understanding ECMAScript 6: The Definitive Guide
  for JavaScript Developers.  Take notes.
- [ ] Read up on React.  Maybe grab a book on this and/or split it out into its
  own topic.
*** TODO lambda calculus
I'll do a minor dive on this for research in preparation for a presentation.  A
few larger efforts later, my current master plan has me coming back around to
it, where I'll do some gap-filling and link it to subsequent topics.  Only
tracking the larger effort here.

The plan:
- [ ] Read the lambda calculus content in The Lambda Papers.
- [ ] Read Lambda-Calculus and Combinators, An Introduction.
- [ ] If I feel the need for another text, insert one here.  The task for the
  previous text lists a few options.
- [ ] Consider reading selected parts of Barendregt's The Lambda Calculus.
- [ ] Maybe write a lambda calculus library in Clojure.
*** TODO Haskell mastery
Lesson plan for going from okay with Haskell (I can use it to solve smaller
real world problems) to dreaming in it:
- [ ] Read Learn You a Haskell for Great Good.
- [ ] Consider reading this, which seems to be the standard advice in #haskell
  these days: https://github.com/bitemyapp/learnhaskell
- [ ] Read the Haskell Style Guide.
  https://github.com/tibbe/haskell-style-guide/blob/master/haskell-style.md
- [ ] Read What I Wish I Knew When Learning Haskell before going too far and
  repeating any mistakes: http://dev.stephendiehl.com/hask/
- [ ] Read Haskell Programming From First Principles.  This is a second pass on
  everything in Learn You a Haskell for Great Good, but with extra detail.
- [ ] Maybe do all of these problems:
  https://wiki.haskell.org/H-99:_Ninety-Nine_Haskell_Problems
- [ ] If I want a book with more entry-level exercises instead of the above,
  read Thinking Functionally with Haskell.
- [ ] Maybe do this course and exercises, if I still feel like I need any
  remedial overview: http://www.cis.upenn.edu/%7Ecis194/spring13/lectures.html
- [ ] Read all these monad tutorials, or at least until they get boring and
  redundant: https://wiki.haskell.org/Monad_tutorials_timeline
- [ ] Read Programming in Haskell (2nd Ed.).  Much of this should be
  intentionally redundant by now.  Skim sections that are a waste of time.
- [ ] Read the Typeclassopedia: https://wiki.haskell.org/Typeclassopedia
- [ ] Re-read and do all exercises from Yet Another Haskell Tutorial.
- [ ] Skim the text, but do all exercises from Real World Haskell.
- [ ] Read everything interesting on haskell.org, like "All About Monads":
  http://www.haskell.org/haskellwiki/All_About_Monads
- [ ] Spend a week reading everything on the wikibooks.org Haskell section.
  There's some important advanced concepts the books pass over, like CPS,
  Arrows, Monoids, Zippers, and concurrency.  Find code (or at last resort,
  blog posts) that demonstrates anything I don't grasp from here.
- [ ] Read or skim The Online Report: http://www.haskell.org/onlinereport/
- [ ] Re-read the essay "State of the Haskell Ecosystem" to branch into topics.
  https://github.com/Gabriel439/post-rfc/blob/master/sotu.md
- [ ] Read the code for all the Haskell software I use to see if there's
  anything I missed.  All of this should be easily understandable by now.  Go
  through the entire Hackage repo and download the source for anything that
  looks interesting.  Keep a master list of packages I like so I can always
  cabal-install them.
- [ ] Consider reading and doing the exercises from The Haskell Road to Logic,
  Math and Programming.  Only do this if it ties in with a more generalist math
  self-education.
- [ ] Read (or maybe just skim) the GHC User's Guide.  Check for a newer
  version first.
- [ ] Maybe read a few of the academic papers on Haskell.  Most of these I've
  read so far are boring and seem to just be academic publish fodder.  Maybe I
  can find a pre-filtered list somewhere first.
- [ ] Consider reading the book Parallel and Concurrent Programming in Haskell
  by Simon Marlow.

After this, I have no excuses to not be able to write full-scale applications
in the language.
*** TODO type theory
I think my goals here are: advanced understanding of the concepts of type
theory and understanding the links between type theory and various other
subjects of interest (type systems, lambda calculus, logic, and PLT).  By the
end, I'll be ready for approaching dependent types and possibly later homotopy
type theory.

The plan:
- [ ] Read Why Types Matter (slides).
- [ ] Read Type Systems (paper).
- [ ] Do opam setup task.
- [ ] Do tuareg setup task.
- [ ] Consider reading Type Theory and Formal Proof.
- [ ] Read Types and Programming Languages.
- [ ] Read Types and Proofs.
- [ ] Read Advanced Types and Programming Languages.
- [ ] Deprecate opam, tuareg, and OCaml environment, maybe.
*** TODO dependent type theory
Still thinking about what this will look like.

The tentative plan (not integrated with the reading list yet):
- [ ] Read Software Foundations.
- [ ] Read Intuitionistic Type Theory.
- [ ] Type Theory and Functional Programming.  After ITT came out, this book
  describes how it can be used in practice.
- [ ] Read Programming in Martin-Löf's Type Theory.  Same as the above, but
  different in style.
- [ ] Read Learn You an Agda.
- [ ] Read the Agda docs: http://agda.readthedocs.io/en/latest/index.html
- [ ] Read Dependently Typed Programming in Agda.
** Math goals
*** TODO abstract algebra
Select a book on this subject, which will roll up a few other smaller topics,
like group theory, that are probably not worth me studying separately.  I'm
leaning towards Contemporary Abstract Algebra (5th Ed.), which is supposedly
optimal for self-study.  There are recommendations out there for A Book of
Abstract Algebra (2nd Ed.) by Pinter as well, which I also have a copy of.
*** TODO category theory
I've completed a high level pass on this in the form of study necessary to give
a presentation on it.  This has solidified my desire to make this a major
mathematical focus in life.  I also have better context for what a realistic
self-driven course in the subject looks like.

The plan:
- [ ] Do a high level pass on abstract algebra, providing a solid basis from
  which to build concepts here.
- [ ] Read two category intro texts: Conceptual Mathematics: A First
  Introduction to Categories (2nd Ed.) and Category Theory for the Sciences.
- [ ] With the goal being application towards functional programming, consider
  reviewing this course: https://wiki.haskell.org/User:Michiexile/MATH198
- [ ] Read the Category Theory wikibook on the Haskell Wiki:
  https://en.wikibooks.org/wiki/Haskell/Category_theory
- [ ] A Taste of Category Theory for Computer Scientists
*** TODO automated theorem proving
This task links in with other tasks related to type theory, Haskell, and
various language theory books, and is conceptually related to proof theory and
category theory.  The main goal here is to attain Agda (or Coq or Isabelle)
mastery to the point where I'm either using it to write code in instead of
writing in normal programming languages like Haskell, or at least be capable of
doing this for more complex problems.

The reason someone would want to do such a thing is that if you can prove your
solution in Agda using various type systems like Hindley-Milner and GADT, where
types are propositions, and your solution is correct in the formal system you
can prove it in any universal proof system.

If doing any work in Coq, check out this book, supposedly the best Coq tutorial
around: http://adam.chlipala.net/cpdt/
*** TODO formal logic
I should know all the main logic systems cold and be able to solve proofs in
them in my sleep.  I do kinda know this stuff, I just need to exercise those
neural pathways and do a gaps check.  If I feel like detouring for a couple
months, I can integrate it into my CS/math (re-)education plan prior to doing
abstract algebra.

Tentative plan:
- Read Introduction to Logic (2nd Ed.).
- Read To Mock a Mockingbird.
*** TODO graph theory
While one of the most useful of the mathematics I've employed in my career, I
don't see as many applications for it post-work.  Graph theory is still
generally useful in life and often pops up in strange places in functional
programming.  As a result, I'll probably just do a graph types and algorithms
refresher at some point.
** General life goals
 *** DONE block sites with /etc/hosts
    - State "DONE"       from "STARTED"    [2018-01-06 Sat 03:06]
    - State "STARTED"    from "TODO"       [2018-01-06 Sat 02:30]
As part of my 2018 plan to further remove distractions from my life, I'll block
various sites using the hosts file method.  To do this, edit /etc/hosts and add
entries that look like =0.0.0.0 www.example.com=.

Some comments:
- This method works great, but it is not a solution for an underlying problem
  of being vulnerable to distractions.  But like any brain-rewiring effort, not
  reinforcing the neural pathways that make up the undesirable behavior is a
   necessary component.  Since these are information foraging activities, the
   brain is in a variable reward cycle, making the behavior extinction
   resistant.  Removing the exploit altogether is a separate task.
- I only added a dozen or so entries that I know I've wasted time on in the
  past.  Whenever I spot myself wasting time somewhere, add it to the file.
- While I'm at it, I'll also block any biased/propaganda sites, pay sites, and
  sites with embedded popups.
- This isn't a panacea.  There are sites that have both useful info and tons of
  useless info.  It would be easy to still waste time there since I'm reluctant
  to lock myself out of the useful stuff.
- I'm only doing this on my main workstation for now, where I do most of my
  work.  I might copy it over to my laptop next after awhile.
 *** CANCELED no/less refrigeration
     - State "CANCELED"   from "TODO"       [2018-01-07 Sun 02:06]
 A refrigerator costs about $1/day in electricity to run (for an efficient
 model), and getting rid of it zeros out this cost.  Another option is to switch
 to a mini-fridge.  Either way, a full size refrigerator and freezer is a waste
 of money since it's mostly unused space and sometimes completely empty.  Will
 wait until I'm done with apartment life for this, since there's no point in
 lugging around my own mini-fridge in the meantime.  If I ever choose to unplug
 an apartment fridge, be sure to leave the door open to avoid mold.
 
 I may re-imagine this concept to include a chest freezer and a mini-fridge.
 The deep freezer will be useful if I'm raising a lot of my own food.
 
 Update: Looks like I can afford to run a refrigerator now.  I'll definitely get
 a chest freezer too.  I still want to save electricity as much as possible, of
 course, but the point of this task no longer really applies.
 *** CANCELED DIY Soylent
     - State "CANCELED"   from "TODO"       [2018-01-07 Sun 02:11]
 This recipe seems promising, provided I remove the added flavoring.  May want
 to look into reducing the molybdenum though.
 https://diy.soylent.com/recipes/schmoylent
 
 However, I should look around a good bit first and see if there are better
 options, or completely devise my own from scratch.  Decide whether to
 completely replace bought Soylent with this, depending on confidence level in
 my recipe.  I'm slightly less inclined to do this now that Soylent's price has
 dropped 23%, but I'm still somewhat interested in the idea of saving all that
 money and being non-dependent upon the existence of a single company.
 
 Update: I'm no longer inclined to do this.  I've settled into using this max 1
 meal/day and Soylent powder is cheap enough for me.  Another reason is the
 difficulty is replicating the vitamin/mineral balance.  I consider that worth
 the $1.54 for 400 calories.  Even if I ate nothing but Soylent, it would cost
 about $2810/year, which is a huge improvement from my current food costs.
*** STARTED liquidate extraneous possessions
    - State "STARTED"    [2009-07-30 Sun 12:56]
Make several more complete audits of remaining possessions and trash or sell as
much as possible each time.  Some groups of items to address are media, books,
clothes, furniture, computer parts, and electronic devices.  Most of this is
stuff I accumulated before moving out on my own, then a second wave of buying
stuff once I first commanded some reasonable purchasing power.

At least 1000lbs of stuff trashed/sold so far.  Sold a lot of bulky stuff and a
couple white elephants.  I'm near the end, but there's still further
optimization that could be done.

Remaining tasks:
- Sell half of firearms collection.
- Get rid of record collection.
- Audit all owned clothing.
- Trash some books on topics I don't care about anymore.

I've been at this for awhile and have made good progress.  I've made small
profits where possible, but in the end everyone loses on purchasing consumer
goods.  I don't miss anything I've sold, which probably means I should've never
bought any of it in the first place.  Getting rid of stuff also takes more work
than buying it.  I'll call it done once the remaining listed subtasks are
complete.
*** STARTED consolidate personal data
    - State "STARTED"    [2010-02-03 Wed 13:17]
Go through all of the files I've accumulated in life and mercilessly delete
stuff that is either:
- Easily accessible online.
- Something I haven't looked at in years and am unlikely ever to.
- Something that if I did look at, would be a huge time-waster, like Windows
  games, ROMs, and crappy abandonware.

256GB USB 3.0 flash drives are now available under $100.  Once ready to do the
transfer, get one of these and mount it on FreeBSD.  I may format the drive
with ext2 since that's mountable in both Linux and FreeBSD (requires
sysutils/e2fsprogs).  Another alternative is to format it with ufs and make it
accessible via Samba (this is my preferred method).  I also may want a second
one eventually (once they get even cheaper) as backup.

Tasks:
- [X] Audit all data everywhere.
- [X] Order drive.
- [ ] Mount drive on workstation and include as part of standard setup
  procedure.
- [ ] Analyze and if necessary modify my existing backup directory hierarchy.
- [ ] Copy stuff over to the new storage destination.
- [ ] Write new rsync scripts to automate backups.  These are:
  - [ ] Windows Syncback script.  Might be able to skip this.  Ideally, I want
    no original copies of anything on my Windows box.
  - [ ] Full cellblock backup.
  - [ ] Full macroexpand backup.

Haven't decided whether to keep my Windows backup drive as-is, and rsync it.
I'll have to do that anyway for the VMs, so I'm leaning towards that approach
currently.  This also allows me to leave the backup drive offline most of the
time.
*** STARTED write book: Bacha
    - State "STARTED"    from "TODO"       [2014-05-12 Mon 14:15]
Complete this book.  Repo setup in BitBucket.  Currently suspended due to
Angelica being in college.
*** STARTED use Gnuplot and Soylent to lose weight
     - State "STARTED"    from "TODO"       [2018-01-07 Sun 01:04]
 Living in a tiny box and working in front of a computer all day has made
 fitness a problem area.  However, I refuse accept living with a waistline 4
 inches over what it should be.  I put consistent effort into this, and I've
 noticed that that this effort has been load-bearing.  Without it, things
 quickly start getting way worse.  That means I need an even bigger investment
 in order to move the needle.  Upcoming life changes should make this easier,
 but I'm rebooting this effort now.
 
 The plan:
 - Food intake: Max 1 normal meal and 1 light meal per day.  If a meal goes over
   1.2k calories, skip the light meal.  A light meal is defined as one Soylent
   dose or <600 calories of normal food.  Zero snacking or purchasing of snacks
   is allowed.
 - Normal food composition: Shift non-Soylent meals to be a multi-component
   entrée that includes vegetable sides.  Make an effort to reduce carbohydrate
   consumption (which is where most of my calories originate).
 - Exercise: Maintain output here.  See year-end review task for details.
 - Track weight every Monday morning in Gnuplot file.
 - The goal is <190lbs by end of year.
 
 Success here is a mere test of will.  When done, re-evaluate on optimal way to
 finish the job and get to maximum physical fitness.
*** STARTED buy property
    - State "STARTED"    from "TODO"       [2017-12-01 Fri 07:23]
A long-time goal of life has always been to extricate myself from the hive.
The time has come for the final realization of that goal.  The main trade-off
will be being a home owner.  However, I'm sure that if I do it right, it'll be
a net positive effect on life, and not just by a small margin.

My general goals of this effort are:
- Move to a rural or semi-rural area.
- Own a fairly large plot of land.
- Own an appropriately-sized, utilitarian house.
- While self-sufficiency isn't a goal, increase the amount for which I provide
  for myself.
- Keep one foot in the door with marketable technology skills, my urban
  acquaintances, and some of the minor benefits of the city.  This means I'll
  not move too far out such that I'm completely isolated from these things.
  This is a minor goal, and I'm willing to sacrifice this for optimizing other
  things.

This entry is just noting this effort here for life journal reasons.  See full
details, goals, strategies, and notes in buying_house.org.

 So far this is going very well.  Lessons learned so far:
- This is a complex process with many steps.  It would be significantly more
  complex if I was getting a mortgage.  Apparently most people, even those who
  work in the industry, can't keep track of all the moving parts.  Using
  org-mode makes this as easy as it probably could be.
- Get to know all the personalities involved and understand their motivations.
  This includes the sellers, seller agents, buyer agents, inspectors, etc.  The
  seller is the most important here.  This is hard to do when communication is
  done through multiple parties.  Try to connect directly with as many people
  as possible and talk to them in person, phone, or email as much as possible.
  Try to talk to everyone in person at least once, and the seller as often as
  possible.
- Don't trust any other parties to do their jobs or have your interests in
  mind.  Follow around inspectors.  Track all tasks the buyer agent has on
  their list and make sure every one of them is complete and on time.  These
  people will average to the mean IQ or maybe slightly below it.  You might
  have to do all or most of the thinking for them.
- Online searching is the way to look at 1000s of homes and save an insane
  amount of time.  There was no way I'd have found something as close to
  perfect as I did by being led around by an agent.  The software for all real
  estate sites sucks, so this is a very laborious process requiring possibly
  100s of hours.  I again used org-mode to help, but since you can't export
  data as an end-user, I still had to use a combination of 3 sites.  I also had
  very specific criteria, differently weighed, and only some of them are search
  criteria available on those sites.
- Do massive amounts of research on everything about housing.  If you know
  nearly nothing at the start, like I did, spend 100s of hours researching
  everything about home buying, ownership, mechanicals, etc.  In aggregate,
  this will always pay off, you're less likely to make expensive blunders, and
  you'll need much of that knowledge to properly maintain your home anyway.
  I've been completely confident in every decision along the way thanks to this
  upfront investment.  Both the search and this self-education were basically
  full time jobs for months each.
 *** TODO post-retirement life optimization
 My job is pretty in line with the things I already do in life.  Yet without it,
 there's still room for a fair amount of optimization.  I might split these up
 when the time comes, but for now this collects ideas to implement after this
 becomes a reality.
 
 Tasks:
 - Take a little time off after leaving to cleanse the brain.  Keep this period
   to under a month, if possible, but ensure that I completely repair any brain
   damage incurred by being around so many mentally ill worker drones and
   urbanites.  There are many survival behaviors I perform that are only optimal
   because of interacting with such individuals.  I definitely don't want any of
   those dragged along as habits when not needed.
 - Setup voice mail on the phone and auto-ignore all calls.  Just check them
   once every few days at most.  This will prevent me from getting interrupted
   by all those spam calls.  Alternatively, see if there's a way to just let a
   whitelist of numbers come through and have the rest go to voice mail.  If
   auto-ignore isn't possible, just turn down the ringer volume.  Disable text
   messaging if possible.
 - Switch to only using mutt for email.
 - Ignore IRC almost all the time.  Only pay attention to it when working on the
   game project.
 - Clean out all work-related files I have laying around.
*** TODO FreeBSD mastery
FreeBSD will be my primary OS, maybe for the rest of my life.  I'm willing to
invest several weeks in more study of it if it makes using it even better.
I've already put a lot of time into it, and that's all paid off over time.
This should take it to the next level.

Subtasks:
- [ ] Read The Design and Implementation of the FreeBSD Operating System (2nd
  Ed.).  This should give a better understanding of the kernel and system
  architecture.
- [ ] Build a more highly customized kernel, reading up on all relevant flags
  and hints in detail.
- [ ] Go through all ports and see if there's anything useful I don't know
  about.  Make a list of stuff to check out on a VM and another list of
  heavyweight applications to use only on VMs (maybe just in a GNU/Linux VM).
- [ ] Once I have a finalized list of workstation software (which shouldn't be
  too different from my current one), install them all on my final setup and
  update freebsd_setup.org.
- [ ] Read all documentation for each application.
- [ ] Check out custom make flags for all applications.  Recreate my
  /etc/ports.conf file.
*** TODO try out Kinesis Advantage
 Got two of these for free from work.  Will give it a try for a few weeks until
 I get good enough at it to know for sure if it's better.
*** TODO orbital mechanics (intro)
Get an outline understanding of this in order to properly play Rogue System.
This is a sub-field of astrodynamics, which is on my list as something I want
to properly learn thoroughly, so doing this has another side benefit.

Tasks:
- [ ] Read https://en.wikipedia.org/wiki/Orbital_mechanics and various linked
  topics.
- [ ] Read http://www.braeunig.us/space/orbmech.htm and be sure to understand
  the math behind it.

Also watched a NASA educational film on the topic (which actually helped quite
a bit).  Note that orbital mechanics and astrodynamics are essentially the same
thing.  "Space dynamics", of which I have a book titled this, is a label used
 prior to the establishment of the field.
*** TODO Lojban
Read ".i la lojban. mo".  Use Anki flashcard set, installed on Windows
(dependency list is massive and drags in Qt, so keeping it off FreeBSD).

Also, do these online lessons:
http://jbotcan.org/wave_lesson/
http://www.lojban.org/tiki/wavelessonscontinued

And read this online book:
http://www.lojban.org/tiki/The+Lojban+Reference+Grammar

Not sure if I want to bother being able to speak this, but writing/reading it
would be nice.
*** TODO astrodynamics
I'll need some basic knowledge here at least in order to make a realistic space
sim.

- [ ] Read Fundamentals of Astrodynamics.
- [ ] Read Space Dynamics, if I still feel weak on it.  This is an older book
  and supposedly not as good, however.
*** TODO Latin
Work through or maybe just skim "Wheelock's Latin".  I've learned a little
Latin since scheduling this task, and I'm not sure I like how messy the
language is.  Learn Lojban first.

Plenty of Latin texts to practice on here: http://www.thelatinlibrary.com
*** TODO mono-outfit wardrobe
There's other names for this concept and variations of it, but for me it means
wearing the same outfit every day (with at most one variation for weather).

This concept appeals to me for these reasons:
- Brain clock cycles are freed up from having to decide what to wear every day.
  In my case, that's not much work anyway, but it's still effort expended for
  no result.
- Every article of clothing owned will actually be worn regularly.
- The overall amount of clothes owned is significantly reduced.  There are no
  situation-specific outfits.
- With a varied wardrobe, one has to invest an amount of time into finding
  every individual article.  That cost is only paid once in a mono-outfit
  wardrobe.
- Human clothing is a solved problem.  Pending the invention of some kind of
  useful and affordable smart clothing, there's no point in trying to dedicate
  time/energy towards a problem that doesn't exist.  Purchasing all kinds of
  clothing variations is just cosplay at best.

What about costume-required events/places?  My opinion here is that if
something requires a specific costume that plain shirt+pants don't qualify for,
then it's probably not worth attending anyway.

I'm putting off actually executing on this plan until I get a permanent
residence, so as not to drag around more stuff.

Tasks:
- [X] Get one good pair of gloves.
- [X] Buy about 20 boxers.  Went with Ex-Officio.
- [ ] Buy about 20 more pairs of socks.  I like the Allen Edmonds variety.
  These are very expensive though, so wait for a sale and stock up.
- [ ] Find a type of t-shirt that fits perfectly.  Once found, purchase around
  15 black and 5 gray.  Find one reasonably thick so they last longer.
- [ ] Find a type of black polo shirt and get 8-10 of them.  I think I know
  which of these I want.  Got 3 so far.
- [ ] For colder times, get 4-5 gray long-sleeve t-shirts to wear under the
  polo shirts.  Got 3 so far.
- [ ] Figure out which jeans I have that fit me the best and get about 10 of
  them.
- [ ] Select 4-6 jackets that work best with these items and toss the rest.
  This should include: top-coat (cold resist), military jacket (max AC), light
  jacket (wind resist), raincoat (water resist).  Any others can be backups.
- [ ] Consider getting a pair of Allen Edmonds boots or casual shoes (maybe the
  Voyager walking shoes).  This leaves work boots and 2 casual shoes.
- [ ] Select still useful clothing that otherwise works fine and prioritize
  wearing it out.
- [ ] Throw away all other clothes.
- [ ] Ensure all purchased clothing has no visible brand labels or other
  printing.
- [ ] (Optional) Consider replacing dress shirts.  I haven't been able to find
  a reasonably priced one that I like recently though.  Maybe keep 5 of these,
  primarily for hip CC.

I'll revisit this task once all this is done, perhaps with more of a focus on
what's actually owned.
** Macro-goals
*** STARTED attain competence in new job skills
    - State "STARTED"    from "TODO"       [2014-04-16 Wed 10:45]
Hopefully a list of everything used is forthcoming and I'll update this then.
I won't have a ton of time to work on this, but I'll use some of my free time
on it and wrap the rest up on the job.

Tasks:
- [X] Spring Security: Make a template/sample where this works with Compojure.
- [X] Groovy: At least get comfortable enough with this to write/edit code.
  Will lazy-load the rest.
- [X] monger: Get familiar with this.  Will lazy-load deep knowledge.
- [X] Ring: Do the task above.
- [X] Compojure: Do the task above.
- [X] Node.js: Shouldn't need to actually use this.  But, I'll still install
  it and get used to npm.
- [X] Docker: At least get familiar with the concept.
- [X] Clojure: Finish reading The Joy of Clojure, at least.
- [ ] MongoDB: Do the MongoDB task above.
- [ ] Webpack: Do the Webpack tasks above
- [ ] Lodash: This is the underscore.js superset being used.
- [ ] AngularJS: Get at least some familiarity with this.  Stick to 1.6.x.
  Switch this to React if the project ends up going that way.
- [ ] Twitter Bootstrap: Read the docs.
- [ ] Incanter: Maybe skip since it's not being actively developed.
- [ ] Refresh JavaScript skills: Maybe read a book on ES6.
*** TODO CS/math (re-)education
I know enough now to redo my CS education, optimally focused towards specific
end goals.  This will take years, but I think it'll be worth it.  This workflow
is a merger between CS, math, and programming goals that takes me to where I
want to be, with the end goal being represented by being fluent in interactive
theorem proving in a dependently typed, purely functional language like Agda.
This end goal, however, shouldn't be confused with the point of the effort.
Each step along the way represents a significant paradigm shift in thought and
skills.  This plan ignores remedial topics in which I'm comfortable with my
current proficiency.

The progression of topics:
- General "mathematical thinking": There are several options here, one approach
  is through formal logic, the other more proof-focused.  I'll probably do a
  combination of both, but proof solving is skill I must hone.
- Abstract algebra: Study this to the depth covered by an intro-level course's
  textbook.  Apart from being foundational to later work, this also rolls up a
  lot of minor math topics I would otherwise be remiss to exclude.
- Theory of computation: A meta-subject I only need some gap-filling on.  Read
  a single, but carefully chosen, text on the subject.
- Lambda calculus: A mostly remedial effort, narrowing focus from the larger
  topic of computation to one towards functional programming.
- Haskell: Switch from Clojure to Haskell as primary language.
- Category theory: A multi-part effort involving several books, from intro to
  intermediate.
- Type theory: In parallel or interspersed with the category theory topics, do
  the progression of 4-5 type theory texts.
- Agda/Coq: Keep Haskell and Clojure as main languages, but switch all
  self-study in languages to these two, preferring Agda where possible.
- Dependent types: Maybe group the Coq-related work together, so I can forget
  the language later and focus on Agda.

I'll have a good idea of where I want to go next after this once I get
there. But, I can already imagine multiple options now:
- Apply some of these ideas to real software.
- Pivot from PLT to language and compiler design.
- Progress into formal methods.
- Round out self-study with some ancillary topics like information theory or
  some of the AI subfields I never spent much time with.
- Go deeper into academic study of type theory, collecting and reading the best
  papers on the topic.

Will start this as soon as I clear off my Clojure mastery and logic programming
goals.  I might also defer it for another month after that to do a front-end
technologies refresher for pragmatic reasons.
*** TODO year-end review for 2018
Context: I made up for a disappointing 2016 with a super-productive 2017.  The
future is bright if I can keep up, or even build upon, that momentum.  There's
plenty of room for improvement still too.  In 2017, I had several periods of
low productivity, either for playing games or getting mired in distractions,
and I've had several other parallel efforts not tracked here.  Work has also
been especially draining.  Acknowledging all of that is this year's master
plan.  Generally, I intend to take care of many long-running issues and start
tackling some extremely tough efforts.

Goals for 2018, now ordered by priority:
- Distraction management: If I thought there were a way to build up distraction
  immunity, I'd work on that.  Maybe I'll think about that some.  In the
  meantime, I have a good plan.  Here's a refined version of the plan from last
  year:
  - Actively ignore all popular media about everything, especially general
    interest and news sites.  Be in ignorance of national and global news.
  - I have a few feeds very narrowly focused on just my active interests.
    However, it's probably still best to ignore these.  I should only catch up
    on them when I have a few minutes that would otherwise be wasted, like if
    using the bathroom.  However, I value mental downtime too, so that's not
    critical either.  I'm also implementing blocking sites via the hosts file.
  - Only venture onto the general web when seeking information or asking
    questions where I cannot get the answers elsewhere.  Video should only be
    used for quick tutorials on real-world tasks I lack experience in, like
    repairing something or operating some machinery.
  - Scale effort wisely.  Not all topics need completionist achievements.  When
    a half-assed job makes sense, do that.
  - Maximize use of FreeBSD machines.  Only use Windows box for dedicated
    tasks like VMs and games.  I use the VMs there for work sometimes, so once
    that's over, turn the Windows box off when not using it to save power and
    raise the overhead of playing games.
  - Have a max of 1 active game at a time.
  - Have a max of 1 active fiction book at a time.
  - Take breaks between games and fiction books.  While having something
    non-work related to go to is nice, they have their own mental overhead.
  - Put even more effort into sticking to this plan.  This works.  When I
    deviate from it, distractions predictably parasitize my time once again.
- Health: The #2 priority after distraction management (since everything else
  depends on that).  This has the greatest ROI in terms of quality of life
  among anything I could do next year.  Points:
  - I expect active improvement every week starting week 2 of 2018.
  - Get a treadmill or some other piece of aerobic equipment for the new house.
  - Grab the weight set from parents and put it in the new house.
  - Every day, max food consumption is 1 full meal and 1 light meal.  Aim for 2
    light meals or 1 full meal.  A complete light meal is defined as one dose
    of Soylent or normal food under 600 calories total.
  - Get a mountain bike for riding around the new local area.  Find out which
    roads are safe for doing so.  See if I can go to any stores just on bike.
    If so, I'll do as many errands that way as possible, even if it costs more.
  - Switch normal food consumption away from so much prepared and frozen food.
    Make things like mashed potatoes, veggies, and other dishes that combine
    into multi-item meals.
   - Goal: Weight <190lbs.
- Retirement:
  - Finish acquiring property.  This is already in motion.  I'm hoping this
    goes snag-free, but it apparently does require a lot of manual oversight.
    Managing this via org-mode seems to be working great.  Since there's a
    rent-back agreement, this will stretch out until at least mid-April.
    That's a significant chunk of the year, so try not to let it consume too
    much overhead.  However, I do want to default to making sure it's all done
    right.
  - Quit work.  If I can, I'll stick around a little after moving to pad out
    the liquid funds and get a few items I could use.  However, don't do this
    for more than a few months, at the absolute max.  After that, I will
    definitely not do any W-2 work until 2019-08 at the earliest, and will
    maybe never do any.  I'll not plan that far out now though.
   - Execute sub-tasks in post-retirement life optimization task.
  - Figure out what it means to own a huge property with various outdoor goals.
    Figure out what those goals even should be.  This is intentionally vague
    since I haven't done any of this stuff since I was young.  Maybe start from
    the way the family did things then as a baseline and branch out from there.
- Self-study goals:
  - Do a little Clojure wrap-up.  Maybe just read Applied Clojure.
  - Pivot to Haskell.
  - Do all the type theory pre-requirements.
  - Maybe do a presentation on type theory.
  - If I have some extra bandwidth, learn modern front-end development too.
    This is less urgent, since I have nothing to use it for at the moment, and
    it churns so quickly.
- Meta: Give this list a once-over after leaving work.  I have a lot of general
  life tasks I've been working on in a separate list I can merge in here.  See
  about merging in some of my other org-mode files and just keeping the main 2
  for all general activities.
- Miscellaneous:
  - After leaving work, tear down and redo all computers (except perhaps the
    Windows box) and their OSes from the ground up.

Results:
- Distraction management: TBD.
- Retirement: TBD.
- Self-study goals: TBD.
- Meta: TBD.
- Miscellaneous: TBD.
- Conclusions: TBD.