this topic more in the future, try the book "RESTful Java with Jax-RS". But,
I'm calling myself reasonably competent in it for now.
** Books: Math
*** DONE The Mathematical Experience
- State "DONE" [2010-04-25 Sun 18:46]
- State "STARTED" [2009-08-13 Thu 14:49]
Has some boring sections (like those about education), but largely a good
overview of the foundations of mathematics and for large-scale context of how
mathematical subfields fit together.
This book did clarify my conceptual overview of mathematics some, so it was a
worthwhile read. Chapter 7, in particular, is quite excellent and the most
consequential to the edge of theoretical computer science I'm most fond of.
*** DONE Clustering with Gaussian Mixtures (lecture slides)
- State "DONE" [2010-09-01 Wed 15:42]
- State "STARTED" [2010-09-01 Wed 13:55]
Also covers the EM algorithm. GMM is a method for density analysis where there
is an unknown number of clusters. These slides aren't really all that great on
their own, but they're okay for an overview.
Keep in mind the EM algorithm for finding maximum likelihoods in statistical
models.
*** DONE Dealing With Statistics: What you need to know
- State "DONE" [2010-11-05 Fri 09:55]
- State "STARTED" [2010-11-02 Tue 15:13]
Supposedly a non-rigorous introduction to statistics. Reading this to make
sure I have a grasp on all the fundamental topics prior to delving into a more
math-heavy book on the subject.
Notes:
- Descriptive statistics are quantitative. Inferential (analytical) statistics
make inferences based on sampled data.
- In statistics, cardinal numbers are those which mathematical operations can
be performed. Ordinal numbers describe position. These are slightly
different meanings than the same terms in set theory.
- Only use non-parametric tests on nominal and ordinal variables (categorical
data), and parametric tests on interval and ratio variables (numerical data).
- Nominal variables are named categories the variables can be in.
- A parameter is a numerical measure of some population characteristic, while a
variable is the attribute of interest.
- Classifications of data:
- Categorical
- Nominal: Grouped into descriptive categories by name, unranked.
- Ordinal: Ordered data, e.g. first, second, third.
- Numerical
- Interval: Difference between values can be state numerically, but not
relatively, e.g. temperature, time of day.
- Ratio: Numerical data where 0 represents none/nothing.
- Variables:
- Independent: The variable altered/changed to find the effect on another
variable.
- Dependent: The focus of the statistical analysis.
- Crosstabs (cross-tabulations) can be used to summarize information about two
categorical variables at the same time in table format.
- A frequency distribution is a tabulation of values for one or more variables
in a sample.
- For categorical data:
- One-sample chi-square test: A dispersion (how spread out values are),
stating whether there is a difference between observed distribution pattern
of data for a variable between categories or results where there was no
pattern.
- Mode: The most frequently occurring categor(y|ies) within a data set.
Describes the "location" of categorical data.
- For numerical data:
- Median: Middle data value. If an even number of values, average the two
middle ones.
- Mean: Average. Represented by x-bar (\={x}) when a sample mean or µ for a
population mean.
- Mode: Most frequently occurring value(s).
- Range: Difference between highest and lowest ranked data values.
- Inter-quartile range: Difference between the middle 50% of ranked data
values.
- Standard deviation: The extent which data values are spread about the
mean, using the same units the data was recorded in. Represented by σ for
entire population SD, and s (or SD) for sample SD.
- Variance: The extent which data values are spread about the mean, using the
square of the units the data was recorded in.
- Skewness: How the shape of distribution deviates from a symmetrical
distribution.
- Kurtosis: How pointed or flat a distribution is from a normal
distribution.
- Null hypothesis: Represented by H_{0} (H, sub 0), the hypothesis that there
is no significant difference/relationship between two or more variables.
Significance tests operate by proving that there will not always be no
difference.
- Alternative hypothesis: H_{1}, H_{a}. The rival to the null hypothesis.
- Critical value: Provides the criterion that defines whether or not the null
hypothesis should be rejected, and is the value for the approximate
probability of the statistic occurring by chance.
- Errors: Type I errors are the worse, i.e. declaring an innocent person
guilty.
- Type I error: Rejecting the null hypothesis when it is correct in reality.
- Type II error: Failing to reject the null hypothesis when it is incorrect.
- Testing:
- 1. State the null hypothesis.
- 2. Choose a statistical test.
- 3. Select the critical level of significance, usually 0.05 - 0.01.
- 4. Calculate the test statistic.
- 5. Interpret the calculated probability value or the critical test value.
This will determine rejection/acceptance of the null hypothesis.
- 6. Interpret the test statistic. If rejecting the null hypothesis, show
support for the alternative hypothesis (though this doesn't prove it).
- There's a ton of statistical tests, good for varying kinds of data and for
showing various relationships. See this list:
http://en.wikipedia.org/wiki/Category:Statistical_tests
Not that great of a book. Too focused on things like questionnaires,
presentation of results, and other useless items.  However, it was a quick read and not all
that painful.
** Books: General Non-fiction
*** DONE The Worst Mistake in the History of the Human Race (paper)
- State "DONE" [2010-01-21 Thu 15:24]
- State "STARTED" [2010-01-21 Thu 14:38]
Makes one of the same points made by "Industrial Society and Its Future", doing
a slightly better job at it, but is still poorly written. I've generally
agreed with this concept, and conjecture that in some ways, its still possible
to live by these principles within an industrial context by forgoing some of
its standard participatory elements, like laboring for security, permanent
shelter, and a trove of possessions.
*** DONE Tractatus Logico-Philosophicus
- State "DONE" [2010-01-26 Tue 10:43]
- State "STARTED" [2010-01-25 Mon 10:05]
Wrote review on main page.
*** DONE Forensic DNA Typing
- State "DONE" [2010-02-02 Tue 22:26]
Observations (not all from this book):
- The mathematics behind DNA matching isn't as complex as I'd originally
thought prior to working in this field. Most of it is very basic statistics.
- While the mathematics is sound, there are constants that are arbitrarily
selected, like for minimum allele frequency.
- Another big problem is outdated population statistics data. For legal
reasons, no one wants to update these highly outdated databases, since it
could potentially change the likelihood ratios of previous matches, thereby
reopening convictions for appeal.
- Impressive sounding rhetoric like "1 in a million match" means increasingly
little in random hits as database size increases (the potential for false
positives increases combinatorially in all vs. all searches). While not as
bad given the US's required 13 STR loci completeness rules, EU and UK
completeness definitions are way too low.
- Despite those (and a few other minor concerns), a forensic match is pretty
much about as solid evidence as one can get. Like everyone that works in DNA
forensics knows: OJ did it.
- Attended a speech by this author and while he's one of the leading DNA
forensics scientists in the world, and deservedly so, he's at the same time a
Mormon k00k that believes some ridiculous things, like ignoring genetic
evidence that links Amerindians with Asians, not Middle Easterners. A
perfect example of the small minority of religious scientists that are
somehow able to turn off their brains when it comes to religion.
- Little does the public know, but the plans are in place to DNA sequence
everyone any time they're arrested, pass through an airport or border, and
anywhere else they can. It's only the state and federal laws that need to
catch up and the completion of development of networked "black box" profiling
kits. I estimate the kits technology will be ready in 5-10 years and the
laws in perhaps twice that.
- Supposedly the law is that missing person and other non-criminal profiles
won't be searched against forensic profiles. In reality, the only thing
stopping this is a rule not to click on a few buttons.
Read a good bit of this book, and probably know the rest at least peripherally
from work experience. Since my career in this field is coming to an end, I
won't bother finishing it.
*** DONE Fallible Ideas
- State "DONE" [2010-04-12 Mon 21:58]
- State "STARTED" [2010-04-12 Mon 13:33]
Online at http://fallibleideas.com/
I might have found this illuminating around age 10 or so, but reading this now
was a waste of time. Quit about 1/4th in.
*** DONE Crash Proof 2.0: How to Profit From the Economic Collapse
- State "DONE" [2010-05-12 Wed 14:20]
- State "STARTED" [2010-04-19 Mon 17:06]
A good read, but for me, having watched much of Schiff's videos and read much
of his other stuff, a lot was highly remedial. Also, I'd have preferred it if
all of the text was updated from the first version instead of adding updates
after the original content. Lastly, while I can appreciate him wanting to
write in a manner to appeal to the largest number of viewers, I'd have
benefited more from added formal analysis and less FUD (however justified).
*** DONE Managing Humans
- State "DONE" [2010-05-17 Mon 09:41]
- State "STARTED" [2010-05-12 Wed 14:28]
Recommended by coworker. An easy read, which it has to be for a book about
management, a topic I find to be a complete bore. Still ended up skimming
parts of it though. A bit too informal and hand-wavy for my tastes.
*** DONE The Luttrell Psalter
- State "DONE" [2010-05-31 Mon 11:50]
- State "STARTED" [2010-05-31 Mon 10:58]
This is a book about the Luttrell Psalter, not the manuscript itself (which
would be fiction).
Not as interesting as I thought it'd be. It's also a shame to see so much
effort wasted on communicating useless information, but that's true about all
religious activity.
*** DONE Rework
- State "DONE" [2010-06-22 Tue 00:18]
- State "STARTED" [2010-06-21 Mon 20:48]
Recommended by coworker. Was okay, but I'm not really into reading about
topics like project management.
*** DONE various intelligence analysis books/papers
- State "DONE" [2010-07-12 Mon 02:35]
- State "STARTED" [2010-07-08 Thu 13:14]
Reading the full archive of the "Intelligence Analysis Reference Library" at
work. Some of these are full-sized books and quite large though, so will skim
as needed. These are the recommended readings by resident analysis SMEs, but I
suspect actually reading these will be mostly useless. Any knowledge gleaned
here won't be needed years from now, so not taking complete notes. Skipping
the ones found to be related to direction finding radio communications, since I
don't care about the details of that topic.
Here goes:
- Analytic Culture in the U.S. Intelligence Community: Full book on
touchy-feely industry culture stuff. Not useful for me.
- Analytic Teams, Social Networks, and Collaborative Behavior (paper): Proposes
a restructuring of having initial analysis done by a larger, distributed
team, followed by final analysis by a core team. Overall, pretty much
useless.
- Anticipating Rare Events - The Role of ACH and Other Structured Analytic
Techniques (paper): The message here is something that should be common
sense. Though, I guess government employees probably do need reminders to do
things like check key assumptions and investigate the negation.
- AOC EW (Part 3) - VHF/UHF Propagation (page): Skipping.
- AOC EW - Emitter Location (page): Skipping.
- Assessing the Tradecraft of Intelligence Analysis (paper): Not bad. Delivers
the worldview of the intelligence community from the inside. Not
surprisingly, this view is a bit self-important and myopic.
- Cryptologic Almanac - A Brief Look at ELINT at NSA: Doesn't say much.
- The Ellipsoid and the Transverse Mercator Projection: Skipping.
- Fixing Intel - A Blueprint for Making Intelligence Relevant in Afghanistan:
Makes some valid points about this topic, but most of this is pretty much
common sense stuff. Am I detecting a pattern here?
- Fixing Intel - Initial Thoughts: A critical review of the above by a guy from
work. Largely a realistic assessment of DIA analysts and other stuff.
- FM 1-02 - Operational Terms and Graphics: Might be handy for a reference if
looking up term definitions or using a lot of these graphics. Probably not
though.
- FM 2-0 - Intelligence: Probably the one book to actually read, assuming you
really wanted a full overview of this topic. It's long though, so I just
kinda skimmed it.  Had I known, I would've
just read this in full and skipped the others.
- FM 34-130 - Intelligence Preparation of the Battlefield: Has some okay
examples of battlefield maps and such. Not sure how current this info is
though, since this copy is from 1994.
- Future Intel Analysis (Vol. 1) - Final Report: Useless.
- The Future of Alternative Analysis: Mostly just about how great ACH is.
- How Do Cognitive Pitfalls Limit Our Ability to Anticipate Rare Events?:
Shallow, amateurish pyscho-babble.
- How Does Analysis of Competing Hypotheses (ACH) Improve Intelligence
Analysis: More boring stuff about ACH and about sitting around pulling
probabilities for things out of thin air.
- IEW DF and Fix Estimation Analysis Report: Skipping.
- Introduction Into Theory of Direction Finding: Skipping.
- Introduction to Radio Direction Finding: Skipping.
- Overcoming Analytic Mindsets - Five Simple Techniques: Ugh...
- Psychology of Intelligence Analysis: A 173 book full of psycho-babble, so I
think I'll skip this one. I don't think I need to read things like a 20 page
chapter called "Keeping an Open Mind".
- Q and Z signals (paper): Thoroughly useless.
- Rethinking Challenge Analysis: More pointless text about stuff that should be
obvious.
- Small Group Processes for Intelligence Analysis: Bleh.
- Taxonomy of Structured Analytic Techniques: Just a grouping of techniques.
- Toward a Theory of Intelligence: Mostly a list of unanswered questions from
some conference. In other words: useless.
- A Tradecraft Primer - Structured Analytic Techniques for Improving
Intelligence Analysis: Bleh.
- The Tradecraft of Warning - Overcoming Cognitive Barriers: Same text as
"Overcoming Analytic Mindsets" but under a different title for some reason.
Post-mortem: Most of these texts seem to be written by and for idiots. These
confirm a lot of my suspicions; mainly that the effectiveness of intelligence
analysis is overrated, often counter-productive, and that the field is mostly
populated with chair-warming government employees looking forward to their
pensions. Excluding target analysis (which is slightly more immediately
useful), like most government employees, their output is at best minuscule and
often negative.
*** DONE For the New Intellectual
- State "DONE" [2010-07-21 Wed 00:57]
- State "STARTED" [2010-07-11 Sun 15:09]
Just a collection of rants from various Ayn Rand novels. It's okay, but
there's still a few things about Rand's philosophy and her delivery that I'm
not crazy about. The underlying messages here I agree with though, I probably
would just word the arguments differently (save a few really great lines).
I'll save my full critique of Objectivism for another day.
*** DONE Lifehacker
- State "DONE" [2010-07-29 Thu 15:50]
- State "STARTED" [2010-07-29 Thu 15:32]
A bit gimmicky, but who knows, maybe I'll find something in here I hadn't
thought of. Just skimming this book.
Update: Totally worthless. Some of these tips are actually counter-productive
in my opinion, like setting up a personal wiki or setting your computer to
constantly download media. Other tips are so obvious, you'd have to be a
retard not to have thought of them yourself, like clearing your desktop of
unused icons and using web browser tabs to load pages in the background. If
you actually followed all these tips, you'd do nothing all day but use lame
Windows apps and websites all day, doing data entry. Didn't find anything
useful.
*** DONE Mining the Sky
- State "DONE" [2010-12-07 Tue 10:10]
- State "STARTED" [2010-02-05 Fri 00:29]
Useful information here about asteroid mining and some on helium-3 in the
chapter on gas giants. At least read those two chapters again if I ever get to
work on my mining simulator.
** Books: Fiction
*** DONE The Chronoliths
- State "DONE" [2010-01-02 Sat 21:23]
- State "STARTED" [2010-01-01 Fri 23:31]
A rare, actually-readable time-related scifi novel. Not great though.
*** DONE World War Z
- State "DONE" [2010-01-03 Sun 09:00]
- State "STARTED" [2010-01-02 Sat 21:24]
Despite a few biological impossibilities, generally a good read.
*** DONE Moby Dick
- State "DONE" [2010-01-03 Sun 20:48]
Finally finished after starting this over 3 years ago. Definitely one of the
greatest fiction books ever written.
*** DONE Inside the Spaceships
- State "DONE" [2010-01-05 Tue 01:53]
- State "STARTED" [2010-01-04 Mon 11:34]
Pretty cheesy k00kscr33d that definitely didn't age well. Good for some mild
amusement. Online at: http://www.thenewearth.org/InsideTheSpaceShips.html
*** DONE Einstein's Bridge
- State "DONE" [2010-01-06 Wed 03:21]
- State "STARTED" [2010-01-03 Sun 17:25]
Occasionally has some good hard scifi, but then ruins it with mediocre alien
stuff. Annoying characters traverse a contrived (but not entirely terrible)
plot. Unlike most scifi books, this one gets better as it goes on.
Attention authors: The kind of readers looking for the most realistic math and
physics are not the same people looking for love stories or sex scenes.
As a side note, while I'm usually somewhat forgiving about technological
predictions that don't pan out, the idea that a physicist in 1997 thought that
by 2004 (or ever) we'd be browsing filesystems in full VR-land is pretty
laughable.
*** DONE Pushing Ice
- State "DONE" [2010-01-19 Tue 17:48]
- State "STARTED" [2010-01-07 Thu 16:10]
Unlike other books by this author I've read, this one was very good. Well
written, characters not too annoying, along with page-turning artifact
mysteries.
*** DONE House of Suns
- State "DONE" [2010-01-23 Sat 01:16]
- State "STARTED" [2010-01-19 Tue 18:06]
Suffers from "too far in the future syndrome", where the author fails at the
(admittedly, very difficult) task of making a realistic story in the distant
future, and resorts to dropping modern personalities and concepts in a universe
entirely alien from the present. Quit about 1/4th in.
*** DONE The Light of Other Days
- State "DONE" [2010-01-25 Mon 07:28]
- State "STARTED" [2010-01-23 Sat 02:07]
Usually, scifi stories involving time suck, but this one handles it in the most
convincing manner I've seen so far. Apart from the somewhat unconvincing
characters and the occasional sleaze, this is a pretty good read.
*** DONE Evolution
- State "DONE" [2010-02-03 Wed 03:05]
- State "STARTED" [2010-01-26 Tue 00:40]
This is the Stephen Baxter novel of this title. Sounded like a good idea, but
turned out very boring and repetitive. Gave up after a couple hundred pages.

*** DONE Manifold Series
- State "DONE" [2010-03-15 Mon 12:24]
- State "STARTED" [2010-02-18 Thu 13:35]
4 book series that explores the Fermi paradox:
- Manifold: Time: Well written and includes a large quantity of well researched
real science. Overall, a good read.
- Manifold: Space: Plot seems a bit more generic, but the hard scifi is still
pretty good, though it occasionally strains suspension of disbelief. In some
ways, it's even better than the previous book, especially since it has a lot
more original/big ideas.
- Manifold: Origin: Definitely the weakest of the series, mostly due to all the
primitive hominid perspectives.
- Phase Space: Couldn't find an e-book of this.
*** DONE Excession
- State "DONE" [2010-03-16 Tue 10:11]
- State "STARTED" [2010-03-15 Mon 12:27]
Supposedly a book exploring the "outside context problem", but ironically
suffers from it itself, as it has about as much original thought as a televised
scifi series. Another example of "too far in the future syndrome" and a minor
example of "post-humanist candy store syndrome". Was unable to identify
anything compelling about this book by 12% of the way in, so giving up.
*** DONE Dragon's Egg
- State "DONE" [2010-04-12 Mon 01:30]
- State "STARTED" [2010-04-10 Sat 22:48]
Decent hard scifi, though as it was written in the 1980s, a few small parts of
it didn't age well, though they have little effect on the story. Only
complaints are the alien culture had too many parallels with human development
and that some parts in the middle were a bit dragged out.
*** DONE Rocheworld
- State "DONE" [2010-04-24 Sat 03:09]
- State "STARTED" [2010-04-12 Mon 02:06]
Apparently takes place in some strange alternate reality where government
employees are actually competent. Characters are a bit weak, some being highly
2-dimensional. Some good concepts and well thought out hard scifi, but the
story drags and has a lot of mindless filler.
*** DONE Old Man's War series
- State "DONE" [2010-05-28 Fri 22:25]
- State "STARTED" [2010-05-23 Sun 01:37]
A four book military scifi series:
- Old Man's War: A mindless read, but still not all that bad.
- The Ghost Brigades: A bit more formulaic than the previous.
- The Last Colony: Has a couple interesting plot points, but is mostly bleh.
- Zoe's Tale: A total bore.
*** DONE Aunt Dan and Lemon
- State "DONE" [2010-05-31 Mon 01:39]
- State "STARTED" [2010-05-30 Sun 15:27]
A bunch of boring nothing happens for most of this play, then at the end some
lame psuedo-philosophical exposition is awkwardly delivered in monologue form.
It doesn't work.
*** DONE more Greg Egan books
- State "DONE" [2010-07-11 Sun 15:10]
- State "STARTED" [2010-06-01 Tue 01:33]
Finishing up the last half of Egan's bibliography that I have on hand:
- Diaspora: Quite good. Largely addresses the out of context problems in any
work of fiction this far removed from the present day.
- The Extra: Pretty good.
- The Vat: Meh.
- Learning to Be Me: Pretty good.
- Scatter My Ashes: Meh.
- Mind Vampires: Sucked.
- Our Lady of Chernobyl: Nothing special.
- Yeyuka: Bleh.
- Steve Fever: Decent idea, but doesn't really go anywhere.
- The Moral Virologist: Mildly entertaining.
- Cocoon: OK, I guess.
- Distress: The plot here meanders quite a bit at first (or seems to), but the
strength of this book is it as a delivery mechanism for criticism of the
secular variety of anti-science and statism, and the only proper way to look
at gender and emotional attachment. This is probably one of the better Egan
books, though the plot and some of the characters could use a little work.
- Border Guards: Meh.
- Reasons To Be Cheerful: Not bad, but also not all that good.
- Riding the Crocodile: OK, I guess.
- Permutation City: Not that great.
Can't find e-book versions of Incandescence, Teranesia, or Zendegi. Might pick
up hard copies of one or more of these some time in the future.
*** DONE The Mysterious Stranger
- State "DONE" [2010-07-11 Sun 17:25]
- State "STARTED" [2010-07-11 Sun 15:10]
http://www.shsu.edu/~eng_wpf/authors/Twain/Mysterious-Stranger.htm
Fairly entertaining and well written.
*** DONE Vitals
- State "DONE" [2010-08-10 Tue 21:04]
- State "STARTED" [2010-07-21 Wed 21:14]
A bit formulaic and predictable, but well written. Alternated from being
page-turning to boring on occasion. Relies too much on action sequences for
me to really like it.
*** DONE A Canticle for Leibowitz
- State "DONE" [2010-08-11 Wed 14:59]
- State "STARTED" [2010-07-11 Sun 15:10]
Read the first third. It kinda sucked, so giving up on this.
*** DONE Rama series
- State "DONE" [2010-08-31 Tue 00:02]
- State "STARTED" [2010-08-16 Mon 09:56]
A four book "big dumb object" scifi series:
- Rendezvous With Rama: OK, but not great.
 Where the first was
written by Arthur C. Clarke, this book, and the remainder of the series, are
written by someone who obviously is an adequate writer, but lacks his vision.
- The Garden of Rama: Scifi introduced in this book is a bit sloppy and there's
too much family crap. About on par with the previous.
- Rama Revealed: The annoying stuff in here totally kills the few good parts.
The end reveal also isn't worth the effort. Having read all of these, I now
wish I had stopped after the first novel.
*** DONE Airframe
- State "STARTED" [2010-09-02 Thu 10:06]
- State "DONE" [2010-09-03 Fri 02:46]
Too many action sequences, too many unambiguously good/evil characters, and the
subject matter (commercial air travel) doesn't interest me. For a typical
popular fiction novel, it's not too bad though.
*** DONE Axis
- State "DONE" [2010-09-10 Fri 11:21]
- State "STARTED" [2010-08-11 Wed 14:58]
One of the main problems here is that this story is predicated on the
suspension of disbelief necessary to read Spin, which really didn't work well
for me.
This book isn't that great, less so than expected even. Stuff happens, and none of
it is particularly interesting.
*** DONE Blind Lake
- State "DONE" [2010-09-16 Thu 23:52]
- State "STARTED" [2010-09-13 Mon 02:21]
Too much yawn-inducing character development that goes mostly nowhere. The
ending read like cheap exposition as well. There were some decent parts
though, so this was okay overall, and probably the best novel by this author.
*** DONE The Lost Fleet series
- State "DONE" [2010-09-26 Sun 20:56]
- State "STARTED" [2010-09-17 Fri 11:37]
Was never really into this subgenre, but I'm running out of promising scifi
books to read.
- Fearless: More of the same.
- Courageous: More of the same, plus a large quantity of sleaze.
- Valiant: More of the same.
- Relentless: More of the same.
- Victorious: More of the same.
This series is obviously written by someone either not trying very hard and/or
just not all that smart. Also, these should all really be just one book, since
there's really no logical separation between them. Excluding the vast tracts
of text that are constantly repeated would make it of normal length.
*** DONE This Perfect Day
- State "DONE" [2010-10-05 Tue 14:54]
- State "STARTED" [2010-09-29 Wed 09:15]
Had a few interesting ideas and an original take on the techno-utopia concept,
but was nonetheless a boring read.
*** DONE A Burning Obsession
- State "DONE" [2010-10-06 Wed 23:58]
- State "STARTED" [2010-09-29 Wed 00:50]
By far the stupidest thing I've read all year.
*** DONE The Ungoverned
- State "DONE" [2010-10-07 Thu 01:31]
- State "STARTED" [2010-10-07 Thu 00:13]
An anarcho-capitalist Vernor Vinge scifi novella, the second in his Across
Realtime series. I would be interested in reading a story with this concept,
but this one is poorly written and pretty stupid.
*** DONE Cusp
- State "DONE" [2010-10-26 Tue 02:20]
- State "STARTED" [2010-10-08 Fri 01:20]
Some good ideas here, but the story and characters aren't that great. The
introduction of the other sentient biological species seems a bit silly. The
main problem is probably the personal perspective of grand scale events, though
this book does it better than most. Though, like the many others, it goes too
far into the unknown while still trying to humanize the experience. Another
big problem is super advanced science is basically presented as magic would be
in a fantasy novel. Overall, it's still pretty good and keeps the reader
thinking, but the combination of enough shortcomings kept me from finding it
all that compelling.
*** DONE Prophet Without Honor
- State "DONE" [2010-10-28 Thu 22:36]
- State "STARTED" [2010-10-26 Tue 02:21]
An official Anarchy Online novel. Supposedly the first book in a series, but
since it's been almost 10 years since it was published and AO development is
stagnant, it's unlikely there will ever be other books, which particularly
sucks since it ends with a bunch of questions never to be answered. Available
for free on the AO site.
Surprisingly decent, but has problems. The story lost a lot of its momentum
about half in and the parts in the far distant future aren't done that well.
*** DONE Ishmael
- State "DONE" [2010-10-29 Fri 13:38]
- State "STARTED" [2010-10-29 Fri 00:50]
While I agree with a select few of the points here, this presentation is for
idiots (and probably written by one too).
Anarcho-primitivism and new tribalism have some serious, fundamental problems
with it that I'm still waiting to be addressed. I suspect they're intractable,
which is why texts on it tend to resort to emotionalism and hand-waving.
Had grabbed a copy of the sequels, but I think I'll skip it.
*** DONE Rainbows End
- State "DONE" [2010-11-02 Tue 23:58]
- State "STARTED" [2010-10-31 Sun 12:58]
Acceptably average. Nothing incompetent about this novel, but it's also
lacking anything interesting. The main characters are boring, the identity
mystery is too obvious to be much of one, and the plot thoroughly predictable.
One good point is the focus on importance of augmented reality in the near
future, which by now is practically a sure thing and something often missing
from other scifi novels.
*** DONE Oolite fan fiction novels
- State "DONE" [2010-11-09 Tue 13:11]
- State "STARTED" [2010-11-04 Thu 22:43]
4 fan fiction novels for Oolite were listed on its Wikipedia page. The last 3
are written by the same guy.
The Virtuous Misfortune: Crap.
Status Quo: Okay, for a fanfic.
Mutabilis: More standard space opera fan fiction.
Schism: Meh.
There's some other fanfics listed on the Oolite wiki, but I've had enough. The
Elite mythos is okay in some ways, but has a lot of dumb elements too,
particularly the alien races and how soft scifi the technology is.
*** DONE Von Neumann's War
- State "DONE" [2010-11-18 Thu 22:52]
- State "STARTED" [2010-11-13 Sat 17:56]
Has some authentic defense contracting lingo, and while amusing to see it in a
fiction novel for awhile, it gets old. Most of the technical terms here are
just awkwardly dropped in, in a sloppy attempt to harden up this scifi some.
Couple this with some signature Ringo ham (buxom lasses, military fetishism,
and unrealistically competent government employees), and you've got several
hundred wasted sheets of paper.
*** DONE Zombie Survival Guide
- State "DONE" [2010-12-20 Mon 23:47]
- State "STARTED" [2010-12-19 Sun 20:35]
Vastly inferior to World War Z.
*** DONE Patriots: A Novel of Survival in the Coming Collapse
- State "DONE" [2010-12-23 Thu 09:37]
- State "STARTED" [2010-12-20 Mon 23:50]
The new standard among SHTF/WROL k00ks. Tons of Jesus crap, but does have some
good advice. The collapse scenario portrayed here has a few plausibility
issues, but is close enough for a book like this. Using real product names
helps, but there's so much of it, it reads more like an advertisement at
places. Some tangents (like on SIGINT) just seem awkwardly misplaced, as if he
just wanted to include some topic he knew a lot about, but didn't bother making
sure it actually integrated into the story. Overall, I'd describe this as
decent amateur novel writing (good overall structure/flow, pedestrian wording),
but one of those books where the author's worldview is all over every page.
That part probably wouldn't be as annoying here if not for all the religious
stuff.
There's a ton of recommendations for gear here, and most of it is pretty good.
This guy's obviously thought about it a lot. A saner person shouldn't go nuts
like this, but have it be one factor when selecting firearms, knives, and other
normal stuff everyone buys.
** Technology and software
*** DONE newsbeuter
- State "DONE" [2010-01-06 Wed 00:40]
- State "STARTED" [2010-01-05 Tue 16:07]
Replaced newsticker with this. While I lose the Emacs and w3m integration,
newsticker really isn't all that usable anyway given its annoying CPU-pegging
bug. newsbeuter is also similar to mutt. Maybe check back on newsticker a few
years from now.
Notes:
- Put URLs in a file called ~/.newsbeuter/urls
- Default browser is Lynx. Since this starts a browser process each time, Lynx
is faster here.
Archived newsticker setup to unused_init.el
*** DONE Unix quiz
- State "DONE" [2010-03-08 Mon 13:39]
- State "STARTED" [2010-03-08 Mon 10:10]
Completed the question set in unix_test.txt. Answers in
~/src/repo/misc/unix_test-answered.txt. There was a couple things I didn't
know, but most of this was pretty easy. Didn't learn much.
*** CANCELED Synergy
- State "CANCELED" [2010-03-16 Tue 10:21]
Considered replacing hardware KVM with this TCP/IP-based keyboard/mouse sharing
client/server. Was going to put the server on cellblock, since it's always up,
but I'm not sure I like the idea of having one computer dependent on the other
and the existence of the network. If the home network ever grows, I'll revisit
this.
*** DONE IntelliJ IDEA
- State "DONE" [2010-03-25 Thu 21:36]
- State "STARTED" [2010-03-25 Thu 20:39]
Windows only. The community edition of this IDE is free. Was rather surprised
how nice this IDE is. However, since Eclipse is cross-platform, I'll probably
stick with it, at least until verifying JDEE can do everything I need.
Update: IntelliJ does supposedly run on FreeBSD and Linux. I'd still rather
use Eclipse though, as it supports more languages and has a massive collection
of plugins for everything imaginable.
*** DONE various new Emacs modes
- State "DONE" [2010-04-02 Fri 23:58]
- State "STARTED" [2010-04-01 Fri 09:31]
Added some modes for the new job and got more stuff working in Windows.
- JavaScript modes: Added espresso as major JavaScript/JSON mode and moz.el to
interact with MozRepl.
- Added pabbrev minor mode to give some typing prediction in JavaScript. May
activate this for other languages too.
- Added batch-mode for editing DOS batch files.
- Updated csharp-mode since there was a couple annoying bugs in the version I
was using. Not currently using this language though, so ended up deprecating
it from my init.
- Added sqlplus to interact with Oracle databases.
- Got w3m sorta working in Windows, but it's still buggy in Emacs 23.
- Added Maxima support in Windows.
- Got elscreen working in Windows (required a manual install of apel).
- Added nXhtml, a much better mode for (X)HTML and includes MuMaMo for embedded
programming languages in markup files. This has some validation bugs I've
noticed, but overall is still an improvement. After installing this, be sure
to byte-compile it. Activate menu-bar-mode, go to nXhtml|nXhtml Help and
Setup|Byte Compile nXhtml.
- Added YASnippet, auto-activated for most major modes.
- Added scala-mode, which is included in the scala distribution.
- byte-compiled many of the add-on extensions to speed up loading. To
byte-compile everything, run: C-u 0 M-x byte-recompile-directory
Notes:
- In nxhtml/util/mumamo.el, get rid of the extra \n's in the final messages.
These fsck up my minibuffer size in xmonad.
- Disabling YASnippet. This messes up the modeline in some modes (espresso and
python-mode for example -- like, the flymake-mode text is clobbered) and I
generally don't use it enough to be worthwhile. Will check back on it in a
year or so, maybe.
*** DONE various Windows Apps
- State "DONE" [2010-04-04 Sun 18:24]
- State "STARTED" [2010-04-03 Sat 00:07]
Not a high priority, since I want to minimize time spent on Windows anyway, but
there's a few minor things I could replace/add/optimize when I have nothing
better to do. Collecting all of these tasks to do at once.
Installed:
- UFFunlock: Unlocker is broken on 2k8/Win7, so replaced it with this.
- Sumatra PDF: Less bloated than Foxit.
- Toad for MySQL: Considered replacing Navicat with HeidiSQL, but going with
Toad, since it's actually used in work environments.
- .Net 3.5 SP1: Requires using Server Manager's Role Manager to install. This,
in turn, requires adding the Application Server role. :|
- PuTTY: Switched to this from SecureCRT. SecureCRT has a couple extra, nice
features, but I never seem to use them, so might as well use the smaller of
the two apps. It's also just a single binary, so will save me installing an
SSH app over and over.
Consider for the future:
- AutoHotkey: Maybe set up some hotkey stuff for Windows, like mapping caps
lock to control. Look into possibilities for macroing certain repetitive
video game tasks.
- Launchy: Might be as handy as dmenu for X.
- TrueCrypt: Maybe start using this for Windows encryption.
- Need to do some filesystem cleanup as well.
*** DONE Emacs 23
- State "DONE" [2010-04-06 Tue 09:35]
- State "STARTED" [2010-04-03 Sat 11:45]
Upgraded all ports on laptop first to test, and all seemed well, at least from
a port dependency side. Unfortunately, w3m still seems broken on Emacs 23.
While this sucks, decided to use Lynx until this is fixed and upgrade anyway.
remember-mode, nxml-mode, and linum-mode are now part of Emacs, so deprecating
my own installs of those.
Updated Emacs font to Inconsolata-12 on FreeBSD machines.
Notes:
- mysql60-server deprecated. Replaced with mysql50-server. xorg update
requires restarting the dbus and hald daemons.
- fltk failed to update, causing xpp to skip. Test this later. If xpp still
works, ignore it.
*** CANCELED Expression Blend
- State "CANCELED" [2010-04-07 Wed 01:43]
Install Expression Studio 3. Overcome distaste for GUI design for a day and do
a WPF project or two.
Canceling.
*** DONE Rhino/JSLint
- State "DONE" [2010-05-10 Mon 15:57]
- State "STARTED" [2010-05-05 Wed 09:31]
Finally got this working in Emacs after many painful hours.
Setup notes:
- Install Rhino. This is in lang/rhino on FreeBSD. On Windows, manually grab
this from the main Rhino site and put it somewhere, like ~/bin. In Arch
Linux, this is in extra/rhino.
- Create a flymake-jslint.el file in ~/.emacs.d. Make sure the call to Rhino
is correct for the environment. FreeBSD defaults this to rhinosh, but
Windows requires an explicit java -jar to js.jar. Added OS detection to the
file, so it should work for either.
- Grab jslint.js from http://www.jslint.com/rhino/index.html and put it in
~/.emacs.d.
- Add a require of flymake-jslint to ~/.emacs.

Usage notes:
- Suggestions should highlight. Added C-c[ (previous error) and C-c] (next
error) keybindings.
- For whatever reason, opening a new file doesn't work and will require
manually calling flymake-mode once ready to start validating.
- See http://www.jslint.com/lint.html for explanations of warnings.
Attempted to setup the lintnode version of this using node.js to initialize a
server, but this refused to work for me. Investigate this later if I have the
time (run ~/.emacs.d/u_lintnode to grab the source and node.js is in
~/src/javascript/node-vx.x.xx).
*** CANCELED djinn
- State "CANCELED" [2010-05-19 Wed 23:11]
- State "STARTED" [2010-05-19 Wed 23:11]
Useful for generating Haskell code from a type signature. Might want to
refresh knowledge on the Girard-Reynolds isomorphism first.
It's no longer possible to cabal install this due to it being abandoned. A
full theorem prover is probably more useful anyway.
*** DONE w3m on Emacs 23
- State "DONE" [2010-05-12 Wed 13:02]
- State "STARTED" [2010-05-19 Wed 23:14]
Emacs 23 breaks emacs-w3m integration. Apparently it's possible to get this
working though, so look into it.
Notes:
- The new emacs-w3m adds search engine queries. To use this, in a w3m buffer,
just hit `g' and type `gg:<your search text>'. This will send the text to
Google.

*** DONE OpenSSH authentication
- State "DONE" [2010-05-21 Fri 23:44]
- State "STARTED" [2010-05-21 Fri 22:47]
Setup various machines to auto-authenticate, negating the need to constantly do
password authentication. This is particularly handy with editing files over
scp with Emacs.
On remote host:
- For Unix-variants, just make sure OpenSSH is installed. For Windows, install
Cygwin with OpenSSH.
- Run `ssh-keygen -t rsa'. An empty passphrase can be used. On Windows, this
often has an invalid default directory to save id_rsa.
- This should create an id_rsa and id_rsa.pub file.
- Copy the id_rsa.pub file over to the server.
On the server:
- Ensure that a ~/.ssh directory exists.
- With the above id_rsa.pub, run `cat id_rsa.pub >> .ssh/authorized_keys'.
Back on the remote host:
- Unfortunately, PuTTY requires keys be in its own format, so grab PuTTYgen
from the PuTTY website.
- Go to File | Load private key, and select the id_rsa file.
- Now save as id_rsa.ppk with File | Save private key.
- In the PuTTY server's profile, under Connection | SSH | Auth, add the .ppk
file, then save it.
- If only using one user, be sure to add it under Connection | Data to save
typing that too.
- Authentication should now be automatic.
Did setup on: DREAMS to cellblock, DREAMS to sdfg, cellblock to sdfg, work
laptop to both work linux servers, work laptop to cellblock.
*** CANCELED malabar-mode
- State "CANCELED" [2010-05-25 Tue 12:53]
- State "STARTED" [2010-05-25 Tue 10:43]
While Annotations are supported in JDEE, it doesn't support generics, enums, or
foreach loops (due to BeanShell, which is unmaintained and doesn't support Java
1.5+ and should be not used as a result). malabar-mode is said to resolve
this, which also adds better Maven integration, a Groovy console, JUnit
integration (stand-alone and Maven), and refactoring features.
Setup notes:
- Add malabar-mode and build it with `mvn -f ~/.emacs.d/malabar-mode/pom.xml
package' (requires a Maven install).
Update: Followed steps, but the tests always fail, regardless of which tag I
use. This is probably due to either me using the integrated version of CEDET
or because of the various function renamings that have been occurring in the
23.x versions. Maybe check back on this later. Back to JDEE for now.
*** DONE Python Emacs setup
- State "DONE" [2010-06-25 Fri 14:45]
- State "STARTED" [2010-06-24 Thu 8:56]
Using some Python at work, so wanted to polish its Emacs setup a bit.
Emacs notes:
- Currently just using Pylint with flymake. It's also possible to use a bunch
of other static analysis tools (even several at the same time) like pyflakes
and pychecker, but Pylint seems to be the strictest of the three, so just
sticking with that for now.
- Added iPython with Emacs integration. Package install on *nix. On Windows,
download from http://ipython.scipy.org/moin/Download and add Python's Script
directory to the %PATH%.
- Added ipython.el to ~/.emacs.d.
- To run an iPython session, run M-x py-shell or C-c C-!.
- Send to buffer with C-c C-c.
- On Windows, edit \Python26\Scripts\ipython.bat and add a -i flag to
python.exe.
- Windows also requires a manual install of pyreadline.
- To change the working directory (to ensure imports work, for example),
`import os', then use `os.getcwd()' and `os.chdir("/path/somewhere")'.
- Added pabbrev-mode for completion assistance. Maybe look into getting
company-mode working with this later (maybe with pysmell and ropemacs).
*** CANCELED company-mode
- State "CANCELED" [2010-06-30 Wed 16:12]
- State "STARTED" [2010-06-16 Wed 13:00]
A potential ultimate completion minor-mode for Lisp, e-lisp, Java, XML, etc.
However, it's a bit specific about provided backends, so decided not to use it
until the need is more obvious. Archived this and slime-company to
~/src/elisp/unused.
*** DONE DejaVu Sans Mono
- State "DONE" [2010-06-30 Wed 20:55]
- State "STARTED" [2010-06-30 Wed 20:08]
Inconsolata is a better-looking font, but lacks much Unicode coverage. DejaVu
Sans Mono on Unix-variants is almost as nice looking and covers the vast
majority of characters, including Asian languages and math symbols. The latter
is of particular importance for using Agda properly.
DejaVu setup:
- Install x11-fonts/dejavu.
- Add /usr/local/lib/X11/fonts/dejavu to FontPath in /etc/X11/xorg.conf.
- Add to fp in .xinitrc.
- Add to .Xdefaults.
Note that despite using the same font in both X11 Emacs and urxvt, the latter
doesn't cover certain character ranges. Also, if it's necessary to get better
coverage on Windows, maybe try out Arial Unicode MS.
*** DONE Haskell flymake
- State "DONE" [2010-06-30 Wed 22:14]
- State "STARTED" [2010-06-30 Wed 16:19]
Using the Perl script method. More info at:
http://www.emacswiki.org/cgi-bin/wiki/FlymakeHaskell
Setup notes:
- Grab the Perl script, name it `hslint', and stick it in ~/bin. There's a
bunch of versions here, but the last rewrite seems the cleanest. There's
also a Cabal version too, which I might switch to once I start creating Cabal
packages.
- Change the first three self-explanatory variables.
- It's necessary to comment out the following code in haskell-mode.el:
(eval-after-load "flymake"
'(add-to-list 'flymake-allowed-file-name-masks
'("\\.l?hs\\'" haskell-flymake-init)))
Took awhile to get this working, but finally managed it.
Update: Someone posted a solution to emacswiki with a pure Emacs lisp way of
doing this, which I'd definitely prefer to an external Perl script (I noticed a
few annoyances with the method as well, like stale flymake copies laying
around). Added this code to .emacs and deprecating the old method to
unused_init.el. This still requires commenting out the flymake code in
haskell-mode.el.
*** DONE Apache Ivy
- State "DONE" [2010-07-01 Thu 10:06]
- State "STARTED" [2010-07-01 Thu 09:38]
Just need this to get ENSIME to compile. Only requirements are Ant and the
JDK.
Notes:
- Grabbed from SVN into ~/src/java/ivy.
- Run `ant jar' in that directory to build. ivy.jar will now be in
build/artifact/jars.
- This can be install on a per-user basis by creating a ~/.ant/lib directory
and putting ivy.jar there.
- Go to src/example/hello-ivy and run ant. This will test the setup so far and
install ivy as a dependency.
- Added a script that runs `java -jar ~/.ant/lib/ivy.jar' to ~/bin. This seems
to be adequate for running ivy.xml files.
Seems like yet another messy Java project with poor documentation and that
craps a mess all over your user directories. Ran the ENSIME build, but that
just seemed to grab a bunch of dependencies and I ended up grabbing the
distributed version anyway, so this was a waste of time.
*** CANCELED winner-mode
- State "CANCELED" [2010-07-01 Thu 15:56]
- State "STARTED" [2010-07-01 Thu 15:46]
Handy global minor mode to restore window setups. The only time I think this
might be useful is when working with gdb-many-windows and ecb.
winner-mode's OK, but doesn't work when ecb is active. Also, ElScreen is a
good bit nicer anyway. So, not using it.
*** CANCELED SLIME48/Scheme48
- State "CANCELED" [2010-07-02 Fri 00:23]
- State "STARTED" [2010-07-02 Fri 00:04]
Apparently one can use SLIME with this version of Scheme. If so, replace
Gauche with this.
Setup notes:
- Install lang/scheme48.
- Grab SLIME48 tarball from: http://mumble.net/~campbell/slime48.html
Update: Nope. Looks like this was abandoned in 2007, and it doesn't work with
the current version of SLIME. Sticking with Gauche for now.
*** DONE Emacs bookmarks
- State "DONE" [2010-07-12 Mon 02:59]
- State "STARTED" [2010-07-12 Mon 02:45]
I ignored this feature since my directory structures were always maximally
shallow and sensibly named. Unfortunately, not everyone at work shares my
philosophy here, so bookmarks will make life a bit easier.
http://www.emacswiki.org/emacs/BookMarks
Notes:
- C-x r m: Set a bookmark (marks both file and location within it).
- C-x r l: Lists bookmarks.
- To delete a bookmark, just mark them with `d' in the list and hit `x' to
commit it (just like dired).
These are pretty handy. Will create a collection of them as I find places to
bookmark in various work codebases. Might also be handy for any JVM-based
language projects I work on in my own time, since these tend to require the
ugly Java convention of directories matching package names.
Seems useful enough on its own, but if I want to extend this feature some day,
check out http://www.emacswiki.org/emacs/BookmarkPlus which adds some nice
things like managing w3m bookmarks and changing font face based on type.
*** CANCELED FreeBSD 8.0 on VirtualBox
- State "CANCELED" [2010-07-12 Mon 20:41]
- State "STARTED" [2010-04-21 Wed 09:53]
Set this up to replace my Arch Linux VM at work.
http://wiki.freebsd.org/VirtualBox
Update: This would've been nice, but for whatever reason, VirtualBox crashes a
lot when running FreeBSD, especially when compiling or installing things (Linux
runs nearly perfect though). Maybe check back on this when 8.1 comes out and a
VirtualBox has a few revisions.
Update: Resolved. See below.
*** CANCELED Rails
- State "CANCELED" [2010-07-21 Wed 21:10]
Sorta learned Ruby long ago, but have forgotten it since then. But, it
wouldn't hurt to know how to throw up a quick Rails site. Create a quick
practice site or two. Only use an SQLite backend to keep things portable.
Don't put any real content on Rails though, as I definitely don't want to
actually maintain this environment locally.
Might want to use Groovy/Grails instead. Think about this some before
committing to a few days of coding.
Canceled this for now, since I have considerably more important things to do.
Might revisit it I really have nothing to do some week, but after reading up on
it a little, it's convention hell and generally for homos.
*** DONE ENSIME
- State "DONE" [2010-07-28 Wed 05:54]
- State "STARTED" [2010-07-01 Thu 02:39]
This is an add-on to the stock scala-mode that adds a ton of great features
with more to come in future versions (hopefully).
This can be a bit of a pain to setup due to the poor documentation. Once
everything's in place though, it's pretty nice. Currently, it seems a bit
fragile though, since the server process barfed on me a couple times. Keep an
eye on http://github.com/aemoncannon/ensime/downloads for new releases.
Setup notes:
- ENSIME requires ivy to build, but it looks like this just drags in the
dependencies. Just run ivy against the root ensime directory.
- Even if doing this, it's still necessary to download the distributed version,
since building the SVN version doesn't create a jar file.
- chmod bin/server.sh to u+x.
- Make sure the hashbang points to the correct path for bash for the OS
Project setup notes:
- Create a directory for a Scala project.
- Create a .ensime file within it. Left a template in ~/src/scala/.ensime.
- Choose a build manager tool and make sure the directory structure matches.
- Change .ensime's :server-root to point to /home/bm3719/.emacs.d/ensime/dist.
- Open a .scala file somewhere in the project and run M-x ensime. This will
start the server, swank will connect to it, and the full ENSIME features will
be available.
Usage notes:
- Unfortunately, ENSIME requires a GUI instance of Emacs to use effectively.
Without it, you lose the echoing of types under the cursor and ability to
double-click on package imports. Looks like the most recent version added
keybindings for these though.
Finished installing 0.0.20. This still has some minor bugs, but from the small
amount of Scala I know so far, it seems usable. I'm still not sure what the
official workflow is for using scala-mode, ENSIME, and SBT all together though
(there probably isn't one). Hopefully this will become more obvious later.
Consider investigating the following later:
- Check scala-mode indentation. If fscked up, maybe use this guy's:
http://snippets.dzone.com/posts/show/5013
- Use ctags to see if that makes the completion menu work.
*** DONE Java flymake
- State "DONE" [2010-07-28 Wed 13:23]
- State "STARTED" [2010-07-28 Wed 10:11]
Finally got this working. This is pretty much essential to using Emacs for
production Java programming. Now using flymake with the JDT core compiler.
This is a ~1.5MB stand-alone jar that doesn't require Eclipse (and thus not
needing all of Eclipse's massive dependencies). Using the method that spawns a
separate JVM process for each flymake build, which is slightly slower than the
server method, but bypasses bsh.
Setup notes:
- Grab ecj-3.6.jar and put it in ~/.ant/lib.
- Put jde-eclipse-compiler-server.el in ~/.emacs.d.
- Make sure not to define the path of the ECJ jar relatively (wasted a lot of
time trying to figure this one out).
- Make sure to specify `none' and not `/dev/null' to the -d flag, unlike what
EmacsWiki says.
- For Windows, use a local Eclipse install and grab the JDT core jar from the
plugins directory. It should be named something like
org.eclipse.jdt.core_3.5.2.v_981_R35x.jar. Put this somewhere else, like in
~/bin, since flymake doesn't like spaces in file paths. Make sure this
filename matches what's in .emacs.
- It's also possible to do this without an Eclipse version of Ant, but still
using the Eclipse core jar from another machine. This requires Ant have a
copy of jdtCompilerAdapter.jar in its lib directory though.
*** DONE JDEE (revisited)
- State "DONE" [2010-07-28 Wed 14:17]
- State "STARTED" [2010-04-07 Wed 10:57]
I need this for occasional Java programming at work, so putting in the time
needed to get this usable.
Setup notes:
- Don't use a JDEE version older than <IP_ADDRESS>. A ton of stuff is broken in
2.3.x.x against Emacs 23 and it doesn't work with Java 1.6.
- Requires elib-1.0. Switching all installs to a manual elib install.
- Designate browse-url for documentation viewing.
- Run M-x jde-compile-jde to byte-compile JDE.
- It's necessary to set jde-jdk-registry and jde-jdk, lest compiles not work.
- Added a custom control flow abbreviation for `main' in ~/.emacs.
- Modify first comment line jde-wiz-get-javadoc-template and
jde-wiz-set-javadoc-template to include 4 spaces. This sets the indent
properly on the get/set method comments.
- JDEE's massive amount of features actually makes setting menu-bar-mode t a
potentially useful thing. Going to try to go commando for now though.
Usage notes:
- Most handy control flow abbreviations (type these in, followed by a space,
and they will auto-expand): if, ife, while, for, fori, switch, try, tryf.
- Import generation: Auto-creates imports based on class names found in the
classpath. For example: Type FileWriter, hit C-c C-v C-z and `import
java.io.FileWriter;' will be auto-added at the top of the file. C-c C-v z
will do this for the full file.
- Various wizards are available, though I'm not sure how useful these will be
in practice, except maybe jde-wiz-implement-interface and
jde-wiz-get-set-methods (which auto-creates get/set methods for all private
variables in the class at point).
- Regarding get/set generation, another handy template is M-x jde-gen-get-set.
This takes a type and name, then generates the methods and private variable.
- When using jde-run, if an exception occurs, you can walk the exception stack
with C-c C-v C-[ or C-c C-v C-].
- Couldn't find any decent docs for prj.el files. Here's an example file
that helped: http://wttools.sourceforge.net/emacs-stuff/prj.html
- Tons more, of course. Keep the JDEE User Guide handy for reference.
Handy keybindings:
- C-c C-v C-c: jde-compile.
- C-c C-v C-r: jde-run.
- C-u - C-c C-r: Specify the main class and arguments to jde-run.
- C-c C-v j: Insert Javadoc template (put point on first line of method/class).
- M-x jde-javadoc-make: Make project's Javadoc.
- C-c C-v C-.: jde-complete. Completes within the current classpath.
- C-c C-v .: jde-complete-inline.
- M-/: hippie-expand. This integrates well with JDEE and can handle most
completion tasks (much faster too).
- C-c C-v C-z: Generates an import for class at point.
- M-x jde-import-organize: Cleans up and sorts imports.
- M-x jde-create-new-project: Creates a new prj.el in specified directory.
This is the place to set various project-specific variables, like for
building the project and setting the jde-global-classpath.
- M-x jde-open-project-file: Opens a prj.el file.
- C-c C-v C-n: jde-jdk-browse-doc. Browse JavaSoft version of the JDK docs.
- C-c C-v C-w: jde-help-symbol. Look up documentation for class at point.
- C-c C-v C-y: jde-open-class-at-point: Browse to the source of a class.
*** DONE Lusty Explorer
- State "DONE" [2010-07-28 Wed 14:48]
- State "STARTED" [2010-07-28 Wed 14:39]
Added. This addon is amazing. Will just need to get used to the new tab
behavior. Just remember that tab or return will always select the highlighted
entry (which is also at the top of the list) and that a fuzzy matching
algorithm is used.
*** DONE mutt aliases
- State "DONE" [2010-07-29 Thu 09:18]
- State "STARTED" [2010-07-29 Thu 08:57]
Aliases can be used as an address book feature for mutt. Added aliases for my
most common mail recipients.
Notes:
- Storing aliases in .muttrc instead of the typical .mutt-aliases. One less
file to migrate this way.
- If I get a mail from someone I want to add an alias for, highlight the
message and hit `a'.
- When composing a mail, hit tab to list all aliases or just type the alias
name.
*** DONE graphviz
- State "DONE" [2010-08-17 Tue 15:59]
- State "STARTED" [2010-08-17 Tue 10:28]
Replacing ditaa use with this, as graphviz is considerably more functional, but
I'll keep ditaa around in case I want to convert an org-mode table to an image.
Notes:
- Installed graphviz with default options.
- To convert a directed graph to an image file of some kind (in this example, a
PNG file), run `dot -Tpng test.gv -otest.png'. See manpage of `dot' for full
details and a list of other converters.
- To include graphviz images in a LaTeX file, output to EPS, then run epstopdf
on it. After that, include the graphic in PDF format with something like:
`\includegraphics[scale=0.75]{sa1.pdf}'. Note that Text-Pdf mode must be
enabled for this to work.
- Tried using dotty in X, but it seems rather broken for graph drawing, at
least on my setup. However, it is useful for previewing your .gv file.
Used graphviz to create a design document at work with a few graph images in
it. I'm certainly no expert at graphviz after a day, but it's pretty easy to
use and I can lazy-load the rest as needed.
For future consideration:
Supposedly org-mode might have some kind of export capability to it.
http://www.paradox1x.org/archives/2009/06/reading-about-g.shtml
http://orgmode.org/worg/org-contrib/org-exp-blocks.php
org-exp-blocks.el currently missing in the org-mode version included in 23.x.
Most likely this functionality moved somewhere else. Might research this
sometime, but it's not something I need now.
*** DONE Coq setup
- State "DONE" [2010-08-21 Sat 20:02]
- State "STARTED" [2010-08-21 Sat 15:13]
Tried editing the Makefile to flag the IDE off, but it was ignored. In any
case, it's on my FreeBSD VM now. Coq pulls in a ton of crap, but works fine
without any special steps. Deferring using this until later since I'm a bit
overloaded to dive into this topic right now.
*** DONE FreeBSD 8.1 on VirtualBox
- State "DONE" [2010-08-26 Thu 09:47]
- State "STARTED" [2010-08-19 Thu 13:46]
Finally got this working. Looks like 8.1 solves the kernel panics.
Notes:
- To get the network up, add `ifconfig_pcn0="inet <IP_ADDRESS> netmask
<IP_ADDRESS> media 10baseT/UTP"' to /etc/rc.conf. Then go into sysinstall,
and detect the work network with DHCP.
- Xorg works with vesa, but to get it supporting large displays:
- Install emulators/virtualbox-ose-additions.
- Add `vboxguest_enable="YES"' to /etc/rc.conf.
- In xorg.conf, set the device driver to `vboxvideo' and the InputDevice
driver to `vboxmouse'.
- Follow steps on http://wiki.freebsd.org/VirtualBox to setup HAL.
- If this goes correctly, mouse integration should be active.
- Differences from my normal FreeBSD setup (since this is just a development
VM):
- Didn't copy over all user data, just the minimal needed.
- Installed mutt and msmtp but didn't scp over the config/mail dirs.
- Skipping py-game/pyglets (might do this later).
- Skipping CUPS and printer setup for now.
- Skipping Samba, ddclient, and MySQL.
- Installing Tomcat 7 (actually 6.0.29) instead of lighttpd. Adding
`tomcat6_enable="YES"' to /etc/rc.conf.
- Had to add Firefox in order to use Firebug, but Conkeror is still on too.
Adding `sem_load="YES"' to /boot/loader.conf for HTML5 support.
- Installed Eclipse.
- Installed R (installs a different gcc version).
- Install Coq.
- Didn't create symlinks for Ext JS.
- Using GENERIC kernel.
- Bugs noticed: xmonad's frame highlighting is messed up.
- Backed up config at the state where the steps in fbsd_setup.org (with the
above differences) was complete. This was done running `VBoxManage clonehd
/path/to/orig.vdi /path/to/copy.vdi'. Using this method creates a new hard
disk UUID.
- Use `dhclient em0' to renew the DHCP lease.
Update: Ended up hosing this setup and having to redo it while trying to use
VBoxManage to forward ssh. This also killed my snapshots. The only major
difference in the current setup now is that Tomcat is upgraded to 7.0.2
(requiring tomcat7_enable="YES" in rc.conf).
*** DONE ConnectBot
- State "DONE" [2010-09-01 Wed 14:47]
- State "STARTED" [2010-08-31 Thu 16:16]
Set this up to SSH in from Android phone. Can now log into my home computer
and do just about anything I would normally do from a shell. The small screen
makes a few things a little difficult though (particularly reading text), and
typing is a pain.
Keys:
- Fn 1-10: S-[1-10]
- Tab: C-i
- Control: click trackpad once.
- Alt: double-click trackpad.
*** DONE Pexpect
- State "DONE" [2010-10-06 Wed 16:53]
- State "STARTED" [2010-10-06 Wed 16:19]
Using this instead of regular expect or any of the many other expect clones
since this one is in Python. Pretty easy to write scripts for this. Will have
to keep it in mind to use on everything I can think of automating.
See: http://www.noah.org/wiki/Pexpect
Scripts made in ~/src/repo/python:
- Checking the weather with the telnet weather server (pexpect_weather.py).
- Log into ISCABBS as a guest (pexpect_isca.py).
Grab the source for this if in need of some example scripts.
*** DONE Emacs Speaks Statistics (ESS)
- State "DONE" [2010-10-15 Fri 14:40]
- State "STARTED" [2010-10-13 Wed 11:45]
ESS provides an Emacs interface to various statistical packages. I'm only
using it for R. Here, I setup ESS, used it for a couple days, and read the ESS
manual. Will be using this regularly at work, but I still need to spend a lot
of time learning R.
Setup notes:
- Added SVN checkout script, u_ess, to ~/.emacs.d.
- For Windows, just grab the .zip and stick it in ~/.emacs.d. Be sure R's bin
directory is in %PATH%.
Usage notes:
- Use `dev.off()' to kill various X11 windows (sometimes this acts weird so I
doubt it's the proper way to manage windows, but it's better than xkill-ing
them, since that messes up the R process).
- The ESS-preferred commenting scheme is 3 hashes for beginning of line
comments, 2 for the current indent level, and 1 to a right column (column
40).
- ESS supports an R documentation mode, which is written in a LaTeX-like
language. These are bound to .Rd files. C-c C-e will insert a skeleton R
document. See mode help for more info. Keep this in mind if I ever make my
own R package.
- Roxygen can also be used for documenting R code (and then generating the .Rd
files). This is similar to Javadoc comments. See section 8.2 of the ESS
manual if I ever want to do this.
- ess-rdired provides dired-like mode for viewing the state of the current REPL
environment. Useful for inspecting and mutating the current state. See mode
help for keybindings.
- Added Rutils. Includes more than just ess-rutils-rmall and
ess-rutils-rsitesearch, but anything else I find useful will need a
keybinding.
Some keybindings:
- M-x R: Start R REPL.
- C-c C-r: Send a region to the R REPL.
- C-c M-b: Send buffer to REPL and switch to REPL.
- C-c M-j: Send current line to REPL.
- C-c C-n (or S-RET): Send current line to REPL and move down one line.
- C-c C-v: Help on symbol at point.
- C-c RET: When on an old command in the REPL transcript, sends the command to
the current prompt for editing.
- C-c C-c: Abort current command.
- C-c C-f: Eval function.
- C-c C-d: Edit object (data frame, function, or variable) in a buffer. Rather
useful for objects that have complex structure and/or have been modified in
unknown ways.
- C-c C-l: Load (source) a file.
- C-c M-r: My binding of an Rutils function to remove all objects.
- C-c C-f: My binding of an Rutils function to search the R-help mailing list
archives.
The ESS manual has a ton of additional minor editing commands that didn't seem
useful enough to write down, but if I find myself using ESS daily for a long
time, these might be worth reviewing.
*** DONE AutoHotkey
- State "DONE" [2010-10-30 Sat 12:32]
- State "STARTED" [2010-10-26 Tue 13:13]
Just using AutoHotkey Basic for now. The plan is to macro up game
interactions. This will only work for some games, some of the time, since it's
not smart about things like 3d objects. Scripts that involve clicking on
certain places on the screen will also be resolution-dependent. I'll probably
only bother with this for MMO-type games.
Notes:
- Use the utility Window Spy to determine what X,Y coordinates I want for mouse
clicks. Use the "in active window" coordinates in scripts. Use S-M-TAB to
freeze the coordinates if in a full screen game.
- Apparently doesn't work in some games. So far, it's non-functional at least
in Anarchy Online.
Make some full buff scripts for Lineage 1 later.
*** CANCELED jde-maven
- State "CANCELED" [2010-11-02 Tue 14:17]
http://www.emacswiki.org/emacs/jde-maven.el
Apparently this is abandoned and doesn't work anymore. Haven't verified this
myself, but since it was made back in Maven 1 times, I can probably spare
myself wasted effort.
*** DONE jde-mvn
- State "DONE" [2010-11-20 Sat 23:33]
- State "STARTED" [2010-11-20 Sat 10:18]
Yet another attempt at JDEE Maven support. Looks like this repo has been
updated as of this year. The author claims it is abandoned though, but the
potential payoff is probably worth a look.
http://bitbucket.org/espenhw/jde-mvn/wiki/Home
Setup:
- Ensure that Mercurial, Maven (along with a syntactically valid
~/.m2/settings.xml file), and the JDK are installed.
- In ~/.emacs.d, run `hg clone http://bitbucket.org/espenhw/jde-mvn/'.
- In the jde-mvn directory, run `mvn package'.
- In the jde-mvn/target directory, there should be a file called
jde-mvn-1.0-SNAPSHOT-dist.zip. Run M-x describe-variable on
"jde-plugins-directory" to find where to extract this to. Create this
directory if it doesn't exist. chmod it go+rx.
- Run M-x jde-pi-load-plugins to load it. This should add a JDEpi group to the
menu-bar. I had to restart Emacs though.
To my amazement, this actually worked, sort of.
- Adding a dependency through jde-mvn's menu doesn't work due to some problem
with parsing the pom.xml file. Using M-x jde-mvn-pom-add-dependency does
work though.
- Still can't figure out how to tie this in with flymake.
- I don't see a way to send different Maven commands, goals, or other
parameters to jde-mvn.
- jde-mvn randomly decides to reparse my pom.xml file on certain files, but not
others.
Usage notes:
- Don't use any of the jde-mvn menu-bar options besides Visit POM.
- To add a dependency, run M-x jde-mvn-pom-add-dependency. If jde-mvn is
already loaded, it should immediately be able to provide completion on known
dependencies in the local Maven repo.
- Add the following elisp to the project's prj.el file, then load the project
from JDE|Project|Project File|Load:
(jde-set-variables
'(jde-build-function (quote (jde-mvn-build)))
'(jde-compile-option-command-line-args
(quote ("-Xlint:all" "-Xlint:-serial"))))
(with-pom ()
(jde-mvn-set-jde-variables :include-dependency-sources))
;; Map C-c C-v C-t to run current test
(define-key jde-mode-map [remap jde-jdb-menu-debug-applet]
'jde-mvn-build-run-test)
- To build, run C-c C-v C-b (M-x jde-build).
I guess I'll use this for now, since it seems to work okay. Need to
investigate further with my "project management with JDEE" task to see if this
integrates well enough with the rest of the JDEE functionality. I'll still
need to run `mvn package' from the command line to create jars/wars though.
Update: None of the standard JDEE built in completions recognize the
dependencies imported via jde-mvn. I'll probably give malabar-mode another try
later, as it advertises integrated Maven support (among other nice things).
Uninstalled this for now as a result.
*** DONE project management in JDEE
- State "DONE" [2010-11-21 Sun 00:33]
- State "STARTED" [2010-11-18 Thu 14:50]
Research if there's a way to do the following:
- Have JDEE start a Maven build.
- Recognize a project created with Maven, even if that means redoing some of
the pom.xml settings in a JDEE project file.
- Recognize dependencies in ~/.m2, which is in a huge directory tree.
- Add stuff in JDEE and have it show up in Eclipse if I then import the project
as a Maven project (this might already work, but haven't tested it).
I'm still debating on whether to give malabar-mode another try. I'd rather
stick with JDEE if possible though, since there's a lot more documentation for
it, and it remains to be seen if malabar-mode will really be the new de facto
Java IDE major mode for Emacs.
I also need a workflow for working with JDEE. The list of commonly used
commands helped, but doesn't cover all the real tasks for Java project
management. Create a test project with Maven and JDEE to demonstrate whatever
I come up with. This test project will be a Hello World app with a single
dependency and two Java source files that do absolutely nothing interesting.
To create a project called jdeetest2 in ~/src/java, do the following:
- Run `cd ~/src/java'.
- Run `mvn archetype:generate -DgroupId=com.macroexpand.jdeetest2
-DartifactId=jdeetest2 -DpackageName=com.macroexpand.jdeetest2
-Dversion=1.0-SNAPSHOT -DinteractiveMode=false
-DarchetypeGroupId=org.apache.maven.archetypes
-DarchetypeArtifactId=maven-archetype-quickstart'. This skips interactive
mode and specifies everything that would be prompted for (though
archetypeGroupId is optional to specify).
- In Emacs and run M-x jde-create-project, selecting the root project directory
(in this case, ~/src/java/jdeetest2).
We now have a base project structure in ~/src/java/jdeetest2. Note that this
procedure is preferable to the one mentioned under the Maven book task (which
uses the deprecated archetype:create).
Adding dependencies. I'm using jde-mvn (for now) to manage these. Let's say I
want to add commons-httpclient:
- Run M-x jde-mvn-pom-add-dependency, and type in the various dependency fields
I grabbed from mvnrepository.com.
- Add the jde-mvn boilerplate elisp to the prj.el file (see jde-mvn entry for
this code).
- Run jde-load-project-file to rescan prj.el.
- Add import statement `import org.apache.commons.httpclient.HttpClient' and
whatever code that uses it.
- Run C-c C-v C-b to build the project to make sure the dependency works. This
is equivalent to running `mvn build'.
To add a new class called Test to the project:
- Create a new file, Test.java, in the same directory as App.java.
- Run M-x jde-gen-class. When prompted, use the same package as App
(com.macroexpand.jdeetest2), and (in this case) nothing for extends and
implements.
- Let's add a private field of type String called hello and generate a get/set
pair for it. Run JDE|Code Generation|Templates|Get/Set Pair... and fill in
the self-explanatory prompts.
- Now I'll change App.java to use the get/set to store the message I want to
see when the program runs.
- Add maven-jar-plugin and maven-assembly-plugin XML blocks to pom.xml so the
jar file is runnable. I usually just grab these from an old project
somewhere so I don't have to keep looking it up.
- Build the project to make sure everything works.
- In a shell buffer, run `mvn assembly:assembly' to create the jar with
dependencies (since I've got an external one).
 I was able to get Maven builds
kicked off, but not every other useful Maven task. I was able to sort of get
JDEE to recognize Maven projects, but most of the JDEE commands don't work with
external dependencies. Since there's nothing essential to the build outside of
the POM, Eclipse will be able to load these projects just fine.
I've sunk a massive amount of time into getting JDEE to do what I would
consider very essential Java development tasks, and while I can develop real,
production Java code this way, it's needlessly painful to say the least. JDEE
is a giant, bloated, buggy mess.
Still need to figure out what ecj settings to put in prj.el to get flymake to
actually be useful. I've had enough JDEE frustration for a few weeks though.
*** DONE CLI wireless activation on Linux
- State "DONE" [2010-11-23 Tue 23:49]
- State "STARTED" [2010-11-23 Tue 23:08]
I've got a ralink adapter. In my case, the appropriate driver is already
insmod-ed, and ra0 is up.
Tried the following methods:
- Running:
iwconfig essid linksys key <key here>
ifconfig ra0 <IP_ADDRESS> netmask <IP_ADDRESS> up
route add default gw <IP_ADDRESS>
- Running:
iwconfig ra0 mode managed channel 6 key open <key here> essid linksys
iwlist ra0 ap C0:3F:0E:6C:2C:58
dhclient ra0
- Editing /etc/network/interfaces with:
auto ra0
iface ra0 inet static
address <IP_ADDRESS>
netmask <IP_ADDRESS>
wireless-key <key here>
wireless-essid linksys
None of these worked for some reason. I'll try again later when I redo the
eeePC OS.
** Work-related topics
*** DONE C++ refresher
- State "DONE" [2010-03-02 Tue 10:15]
- State "STARTED" [2010-02-22 Mon 10:13]
Found a few random web resources and programmed along with Essential C++.
Source in ~/src/repo/cpp.
*** DONE Java refresher
- State "DONE" [2010-03-05 Fri 16:06]
- State "STARTED" [2010-03-02 Tue 10:17]
Practice problems from javabat.com: These are a bit easy and of the 200-level
CS problem type at best. Most are solvable at maximum typing speed. Code in
~/src/repo/java/javabat/. Gave up after awhile since these are so pathetically
easy, but I might finish them if I'm bored some day.
Java design patterns: Implemented singleton, strategy, and visitor in java.
Code in ~/src/repo/java/design_patterns/.
Not surprisingly, every Java source I could find on short notice sucked more or
less. If I get a job back in Java-land again, just toss my outdated Core Java
books and buy the latest versions.
*** CANCELED LINQ
- State "CANCELED" [2010-03-12 Fri 10:17]
Pretty much mastered this without any directed effort by using it at work often
enough. Was still going to read the book "Pro LINQ", but not now.
Canceling, due to not programming on Windows anymore.
*** CANCELED WCF
- State "CANCELED" [2010-03-12 Fri 10:28]
Have used service-oriented programming, message queues, and web services, but
haven't looked into the rest of WCF. Might as well waste a few days reading up
on them.
Canceling, due to not programming on Windows anymore.
*** CANCELED WPF
- State "CANCELED" [2010-03-12 Fri 10:28]
WPF is kinda lame, but then again, so are winforms. Hopefully, I won't have to
do any more Windows GUI or web programming in my life, but just in case, might
as well get a little more familiar with this topic. Don't waste more than a
few hours on it though, since it'll probably be obsolete in a few years anyway.
Canceling, due to not programming on Windows anymore.
*** CANCELED T-SQL
- State "CANCELED" [2010-04-03 Sat 11:52]
Still know more PL/SQL than T-SQL. Convert over remaining concepts.
Read (or at least skim) the books "T-SQL Querying" and "T-SQL Programming".
Already read a little of these, and they're pretty boring, so brace self for
many hours of dull tedium.
Maybe setup Emacs sql-mode to interact with SQL Server with, if I want to code
along with the books.
Update: Using Oracle again at work now instead of SQL Server, so canceling
this task indefinitely.
*** DONE Eclipse customization
- State "DONE" [2010-05-12 Wed 20:29]
- State "STARTED" [2010-05-12 Wed 15:57]
Using this for some project management and browsing around projects, but most
coding is done in Emacs. Did this a while back, but forgot to add my notes
here.
Notes:
- Install m2eclipse plugin for Maven integration. Change the active Maven
profile in the Maven group in the project properties. In preferences, be
sure to always change the Maven installation to external (that way command
line builds always use the same as Eclipse).
- Add install site: "m2eclipse Core Update Site" at
http://m2eclipse.sonatype.org/sites/m2e
- On FreeBSD, this requires a manual install of java/eclipse-gef and
java/eclipse-webtools (drags in java/eclipse-emf and
java/eclipse-datatools).
- Install Subclipse plugin for subversion integration. If planning on using
integrated SCM, setup an SVN Repository perspective and save it, so it's
easier to jump to this. I generally prefer to do this from the CLI (or using
TourtiseSVN in Windows) though.
- Add install site: "Subclipse 1.6" at
http://subclipse.tigris.org/update_1.6.x
- Don't install "Subclipse integration for Mylyn 3.x".
- Install JSLint Eclipse plugin. Be sure to uncheck the "Group items by
category" button for its update site. Don't include /*jslint */ comment
blocks, since the dialog settings override it. Run from context menu.
- In Window|Preferences|General|Keys, set the Scheme to "Emacs".
- In Window|Preferences|Java|Code Style|Formatter, create a new profile from
the default and change the Tab Policy on the Indentation tab to use spaces
only.
- If using Hibernate, install JBoss Tools.
- Add install site "JBoss Tools 3.1 Updates" at
http://download.jboss.org/jbosstools/updates/stable/galileo/
- For Helios, use this URL:
http://download.jboss.org/jbosstools/updates/stable
- Only install "Application Development|Hibernate Tools".
- Install FindBugs.
- Add install site: "FindBugs update site" at
http://findbugs.cs.umd.edu/eclipse
- Install Groovy-Eclipse.
- Add install site (3.5 only) "Groovy-Eclipse update site for Eclipse 3.5" at
http://dist.springsource.org/milestone/GRECLIPSE/e3.5/
- Just install the Groovy-Eclipse feature and not the SDK.
- Install AJDT.
- Add install site (3.5 only) "AJDT update site" at
http://download.eclipse.org/tools/ajdt/35/update/
- Just install the core ActiveJ Tools.
- Install Spring IDE. This requires AJDT.
- Add install site: "Spring IDE update site" at
http://springide.org/updatesite
- Be a bit selective here about what to install, or it'll require a bunch of
dependencies. At least just install the Spring IDE stuff.
- Be careful with the UI while installing crap in Eclipse in xmonad. It
doesn't play nice with tiling WMs and will sometimes hide modal dialogs.
Always restart Eclipse after every plugin install.
- Check out CheckStyle in the future.
Eclipse plugins installed through the UI are currently broken as they don't
register in the IDE despite going to the ~/.eclipse directory. Tried to fix
this for a couple hours but eventually gave up. Plugins installed through
ports work fine though.
*** DONE Tomcat
- State "DONE" [2010-05-18 Tue 04:42]
- State "STARTED" [2010-05-12 Wed 14:44]
It's been like 10 years since I professionally used Tomcat, so I'm reading all
the official documentation here, just as a refresher:
http://tomcat.apache.org/tomcat-6.0-doc/index.html
Setup notes:
- Run `keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass
changeit -keystore keystore.jks'. Even though it asks for your first and
last name, put "localhost" as the value, the remaining values do not matter
and can be defaulted.
- Add the server to the trusted list:
- Export the generated server certificate into the file server.cer with
`keytool -export -alias tomcat -storepass changeit -file server.cer
-keystore keystore.jks'.
- Move the file (server.cer) to the JRE's lib/security folder.
- Change directory to the JRE's lib/security folder.
- Import the file (server.cer) with `keytool -import -v -trustcacerts -alias
tomcat -file server.cer -keystore cacerts -keypass changeit -storepass
changeit'.
- If on Windows, delete or rename tcnative-1.dll located in <tomcat>/bin.
- Create Directory <tomcat>/certs.
- Copy keystore.jks to <tomcat>/certs.
- Add the following connector to <tomcat>/conf/server.xml:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="certs/keystore.jks" keystorePass="changeit"
truststoreFile="certs/keystore.jks" truststorePass="changeit" />
- Right after ‘set CLASSPATH=’ of <tomcat>/bin/catalina.[sh|bat] add the following
two lines (changing $VAR to %VAR% in Windows):
set JAVA_OPTS=$JAVA_OPTS
-Djavax.net.ssl.trustStore=$CATALINA_HOME/certs/keystore.jks
-Djavax.net.ssl.keyStore=$CATALINA_HOME/certs/keystore.jks
-Djavax.net.ssl.keyStorePassword=changeit
set JAVA_OPTS=$JAVA_OPTS -XX:PermSize=64m -XX:MaxPermSize=128m
Notes:
- Always check on the Tomcat Wiki first, at: http://wiki.apache.org/tomcat/
- A single Tomcat install can run multiple instances, by setting $CATALINA_BASE
($CATALINA_HOME will always be the same).
- It's possible to run Tomcat as a service on Unix-variants using jsvc. Look
into that in the Setup section of the docs should I want to do such a thing.
- Tomcat expects certain directory structures, like the existence of WEB-INF.
- WEB-INF/web.xml is used to route URLs to servlets. It's not required if
there are none.
- WEB-INF/lib contains .jar files of libraries. WEB-INF/classes contains all
.class files of the web application. Standard Java directory hierarchy
applies here for package names.
- META-INF/context.xml can have Tomcat config options.
- The manager app (located at /manager) allows for runtime
deployment/undeployment of webapps without restarting Tomcat. This is sent
with commands like localhost:8080/manager/deploy?path=/foo.
This was the most boring thing I've read in quite some time.
*** DONE SMILE
- State "DONE" [2010-06-21 Mon 15:02]
- State "STARTED" [2010-06-18 Fri 14:48]
SMILE is a library for probabilistic reasoning using models like Bayesian
networks. Currently only using on Win32 and with some internal test code.
Setup notes:
- Create a directory somewhere for jsmile_win32 (e.g. \bin\jsmile_win32).
- Put smile.jar, jsmile.dll, and the tutorial files in this directory.
- Create a BayesianNetwork directory and place the test Java files there.
- Change the tutorial2.net file path in ExampleMain.java.
- Compile in the root jsmile directory with `javac -cp smile.jar
BayesianNetwork\*.java'.
- Run test code with `java -cp smile.jar:. BayesianNetwork.ExampleMain'.
Still need to write some code to use this and preferably some better interface
code. Also need to look into getting a non-Windows version of it.
Update: For latest deploy version, dump the deploy files somewhere and run
`java -cp smile.jar:BayesianNetwork.jar:. Bnet.ExampleMain'
*** DONE Augustus
- State "DONE" [2010-06-24 Thu 15:26]
- State "STARTED" [2010-06-17 Thu 12:57]
Augustus is a scoring engine for statistical and data mining models, using
PMML. Augustus 4.x.x seems to be pretty much broken at the moment, so sticking
with 3.3.1 for now.
Setup notes:
- Install latest 2.x Python.
- Install latest py-numpy (Numerical Python) superpack. Make sure the Python
version matches. This should detect the Lib/site-packages directory. On
FreeBSD, it's probably a good idea to binary install this, since it pulls in
gcc 4.4 and its dependencies.
- For the latest version: Download from http://code.google.com/p/augustus/ or
grab with Subversion via `svn checkout
http://augustus.googlecode.com/svn/trunk/ augustus-trunk-read-only'. For the
last working version: Download from http://sourceforge.net/projects/augustus/
- Extract Augustus somewhere (if grabbing a tarball), cd to the directory and
run 'python setup.py install'. This copies various stuff to
Lib/site-packages/augustus and Scripts/. Alternatively, set PYTHONPATH and
PATH environmental variables (see .zshrc for setup). I prefer this latter
method, since uninstalling Python libraries still isn't possible.
- Now, just deploy the stuff from the mathematicians, which is scada, the batch
scripts, and the Augustus Change Detection hierarchy.
- scada: Extract scada.rar and edit both XML files to change the dumb
pathnames to more sensible ones. Move the scada directory to under the
augustus-3.3.x folder.
- batch scripts: Extract batchScripts.rar and stick them somewhere convenient
(like in the root Augustus directory). Edit the paths within the contained
commands.
- Augustus Change Detection: Extract this to Augustus root, and make sure the
scada XML files point to it. Change the directory names not to include
spaces or capital letters.
- Test by running edProducer batch script generating baseline (change
detection) results. This should produce a file, scada_baseline.pmml.
- I think I prefer the structure of the included examples which use Python
produce/consume scripts and a directory convention for where stuff goes.
Just follow the steps in doc/augustus-project-example.html to run one of
these.
Was hoping to use the HTTP server, but this seems to just be a completely
generic server that does nothing Augustus-related. In order to use this, one
would have to write all the Python code to link it with the engine (something I
don't have time for). Might start looking around for a replacement in Java.
Closing for now under the assumption that this isn't going to be useful (which
would be a shame since I just set up a nice Emacs Python environment).
Update: Version 4.x.x. works now, as does the HTTP server.
*** DONE JavaScript
- State "DONE" [2010-06-26 Sat 23:09]
- State "STARTED" [2010-03-29 Wed 22:42]
This task is just to master JavaScript syntax and be able to write clean code
and be as expressive in it as other languages I consider myself good at.
JavaScript isn't a complex language, but it has a lot of ugly baggage, dumb
design decisions, and many other shortcomings that make knowing things in a
very exact way necessary (at least, if you're planning on writing any real code
in it). So, though I've been writing it now and then for years, extra
formalized effort is necessary. I'm throwing my lot in with the "JavaScript:
The Good Parts" philosophy, at least as a starting point.
Environment notes:
- On a box with Firefox installed, it's possible to get a JavaScript REPL up
using MozRepl. Install the MozRepl plugin on Firefox and the moz.el minor
mode on Emacs. MozRepl can be used to examine and modify the state of the
existing document and even the browser elements. This is very handy for
rapid prototyping within the global state of a webapp, and the only way to do
so with all of the zillions of files that typical make them up.
- Also in Firefox, install the Firebug plugin. This allows runtime checking of
errors and even a few decent debugging features like breakpoints.
- Another must have plugin for Firefox is the Clear Cache Plugin that adds a
button to do just that to the toolbar. This saves thousands of clicks and
makes you less likely to forget clearing cache (necessary since FF tends to
cache .js files and not check for updates).
- Firemacs makes Firefox more Conkeror-like. On Windows, this requires setting
ui.key.menuAccessKey to 0 in about:config.
- JSLint is handy for use with Emacs' flymake-mode. This saves dozens of
iterations of publishing bugs to a local test server, discovering the bug,
then editing. Also setup the JSLint plugin on Eclipse, but not using it.
See JSLint/Rhino task for details.
- Autofill Forms saves a lot of typing, if working with forms a lot, like
having to fill in stuff every time you want to test a webapp change.
- Lastly for Firefox, is the It's All Text add-on. This isn't really
JavaScript-related, but still handy sometimes. Point this at
emacsclientw.exe binary on Windows. Associated e-lisp in mutt section.
- It's possible to install MozRepl on Conkeror for computers I don't want
Firefox on. One can to do most of the things possible in Firebug with just
MozRepl, but it requires a lot more typing of commands.
MozRepl notes:
- For setup with Conkeror, see Conkeror entry.
- MozRepl has very few commands. From a JavaScript buffer:
C-c C-s: open a MozRepl interaction buffer and switch to it
C-c C-l: save the current buffer and load it in REPL.
C-M-x: send the current function (as recognized by c-mark-function) REPL.
C-c C-c: send the current function to REPL and switch to it.
C-c C-r: send the current region to REPL.
- May want to write some custom functions to automate anything I find myself
doing over and over.
Basically, decent JavaScript web development requires Firefox, since that's
where most of the tools are centered around. Apart from that, all you need is
Emacs, espresso-mode, and a Rhino/JSLint setup. You can get by without MozRepl
easier than the other stuff, but it'd be a serious loss. I'm sticking with
just Conkeror+MozRepl outside of work though.
Still want to check out JsUnit, but leaving that for a separate task.
*** DONE intelligence analysis
- State "DONE" [2010-07-12 Mon 02:36]
- State "STARTED" [2010-07-08 Thu 15:36]
Wanted to get a slightly better understanding of the mission goals of the
projects I'm on. The two things done here to do that were 1.)
Read/skim the
intelligence analysis book/paper collection (see separate task for details);
2.) while in South Korea with an analyst, tried to slurp up some knowledge from
him on the subject. I definitely know more about it now than before, but it
was also a bit disappointing to find the field almost completely non-scientific
and far more shallow than I had ever expected. I knew it was bad, but not THAT
bad. The mathematicians and computer scientists that work here are among the
best, but as a whole, all the effort mostly results in nothing.
*** DONE Ext JS
- State "DONE" [2010-07-29 Thu 10:12]
- State "STARTED" [2010-04-07 Wed 21:05]
Completed tutorial on main Ext JS site. Added some of the code from this to
~/src/repo/javascript/extjs.
Installed extjs system-wide to be accessible from any site hosted on this
server. This requires the following:
- Install www/extjs.
- Edit /usr/local/etc/lighttpd.conf and add mod_alias to the list of server
modules like: server.modules += ( "mod_alias" ). In my case, it was already
in the default file. It just needed to be uncommented.
- Add the following aliases:
alias.url = ( "/extjs/docs" => "/usr/local/share/doc/extjs" )
alias.url += ( "/extjs/examples" => "/usr/local/share/examples/extjs" )
alias.url += ( "/extjs" => "/usr/local/www/extjs")
- Restart lighttpd.
The Ext JS API is documented at: http://dev.sencha.com/deploy/dev/docs/
Pretty boring topic, like most GUI programming. Didn't really go all out on
learning this or read any books on the subject, but I think I pretty much get
it now, not that there's any underlying concepts to learn. Hopefully, I won't
have to actually use it much (or at all). If I'm feeling masochistic some day,
I have a couple e-books on the subject I could read.
*** DONE Cassandra
- State "DONE" [2010-08-10 Tue 09:29]
- State "STARTED" [2010-07-27 Tue 09:18]
Install, setup a simple one-node cluster, and try creating a database and doing
a few other things.
Setup notes:
- Install databases/cassandra. This installs to /usr/local/share/cassandra.
- Edit bin/cassandra.in.sh and change the 8080 port default to something else,
like 8081.
- Copy conf/storage-conf.xml.sample to conf/storage-conf.xml. Do the same with
log4j.properties.sample.
- Create /var/lib/cassandra. I'll probably want to run this as a user, so
chown -R bm3719:bm3719 this directory and /var/log/cassandra (might want to
start it up as root first to create all the files and subdirs).
- Added `cassandra' and `cassandra-cli' scripts to ~/bin.
- Log in with cassandra-cli.
Canceling further work, since it turns out I won't be using this. Cassandra's
still interesting anyway, so I'll keep it around and maybe use it as a database
for something of my own one day.
Update: Work pre-ordered the book Cassandra: The Definitive Guide. Give this a
read when it comes in.
*** DONE ActiveMQ/JMS
- State "DONE" [2010-09-29 Wed 13:42]
- State "STARTED" [2010-09-28 Tue 13:22]
Apache ActiveMQ is a message broker implementing JMS 1.1. Installing 5.4.1 on
work FreeBSD VM.
In this task, I'll setup an ActiveMQ service (running under a normal user), add
a queue, and write a simple JMS program to add/remove a message under that
queue.
Setup notes:
- Grab latest tarball from site and extract somewhere.
- Run `chmod 755 bin/activemq'.
- Change bin/activemq script's hashbang to /usr/local/bin/bash.
- Create a startup file with `~/src/java/apache-activemq-5.4.1/bin/activemq setup
~/.activemqrc'
- Modify this rc file to properly set $ACTIVEMQ_HOME; in my case, to
`${HOME}/src/java/apache-activemq-5.4.1'.
- Probably want to run it with nohup, so do something like `nohup
~/src/java/apache-activemq-5.4.1/bin/activemq start >
~/src/java/apache-activemq-5.4.1/data/smlog 2>&1 &' or just start it with
`activemq start'.
- After starting, check if it's bound to a port with `netstat -a | grep 61616'.
- logger logs go to data/activemq.log.
- I had a `Cannot resolve localhost' error, but it turned out to be my fault
for not adding an entry in /etc/hosts for my host.domain on my VM.
- Might want to add activemq's bin directory to $PATH.
- ActiveMQ includes a web-based monitor which lets you look at active topics
and such at: http://localhost:8161/admin/
- Stop the service with `activemq stop'.
Notes:
- Message persistence can use a database, but is defaulted to the AMQ Message
Store. See details here: http://activemq.apache.org/amq-message-store.html
- Topics vs. Queues: Topics implement publish and subscribe semantics.
Publishing a message to a topic informs all subscribers, which all receive a
copy, and these will only be received if the subscriber is currently
subscribed. Queues implement load balancer semantics. There is one consumer
who receives a single message. Messages will remain in the queue if there is
no consumer. It's possible for there to be multiple consumers, but only one
of them will receive the message in a load balancing manner. For my
purposes, a queue is appropriate.
- To use ActiveMQ within JVM ecology languages, grab the activemq-all.jar file,
which should be in the top level of the distribution. If not using J2EE,
then the lib/geronimo-*.jar files will also be needed (but only if using the
ActiveMQ core jar). Update: Managed to get this working with Maven, by
adding a dependency to org.apache.activemq, activemq-core, 5.4.1.
Wrote a test program in ~/src/repo/test/MQTest.java to create a queue and
access with both a producer and consumer. Compile and run with these commands:
javac -cp activemq-all-5.4.1.jar MQTest.java && mv MQTest.class MQTest
java -cp activemq-all-5.4.1.jar:. MQTest.MQTest
*** DONE OSGi
- State "DONE" [2010-10-22 Fri 15:57]
- State "STARTED" [2010-09-02 Thu 13:22]
OSGi isn't very interesting. It's just a specification for creating pluggable
components of software. I do like the idea of jar-level hidden-by-default and
using this as alternative to factory patterns (though, the need for a factory
pattern is the language's fault to begin with).
- Attended work presentation on OSGi and Spring DM (Dynamic Modules).
- OSGi adds the concept of "bundles", encapsulated by services. These have
tool-generated manifests that define their contents and versions.
- BundleActivator is an interface that defines starting and stopping of a
bundle.
- Spring DM takes care of a lot of the architecture of OSGi.
- BundleListener/ServiceListener provide dynamic integration at runtime.
- Apache Felix is an implementation of OSGi.
- Read http://www.osgi.org/About/WhatIsOSGi
- Read http://en.wikipedia.org/wiki/Osgi
After researching this, decided not to use it. Too much architectural
overhead.
*** DONE Maven
- State "DONE" [2010-11-01 Mon 13:25]
- State "STARTED" [2010-03-31 Wed 00:14]
Maven is a build tool that, at least in the enterprise Java world, has largely
displaced Ant and offers more functionality than Ivy. I'm already using Maven,
so the goal here is to just stop sucking at it and create a practice project.
Setup notes:
- Install java/maven2 on FreeBSD.
- With Eclipse, install m2eclipse plugin. To load Maven projects, do a Maven
import on a directory. This will scan all subdirectories for pom.xml files.
- In Emacs, do something like this for the build command, `mvn -f
/path/to/pom.xml package -Pmy-prof'. This just uses the standard Emacs build
tool though. It looks like there was once a JDEE plugin for Maven, but it
appears to be currently unsupported.
- Sometimes, it's necessary to manually put some dependency in the local Maven
repository. Use something like `mvn install:install-file
-Dfile=~/activemq-all-5.4.1.jar -DgroupId=activemq -DartifactId=activemq
-Dversion=5.4.1 -Dpackaging=jar'.
- Issuing `mvn eclipse:eclipse' will parse the POM file, install dependencies
in the local .m2 repo, and update the Eclipse project's .classpath file.
The tools associated with Maven are terribly lacking. The usage patterns for
getting things done with it are non-intuitive and rather dumb.  Dependency hell is a constant pain and since it's often
impossible in practice to isolate a stable dependency tree of static versions,
it introduces non-determinism into builds. The repository hierarchy tree is a
total mess and difficult to navigate. Random versions of packages are often
not available, broken, or require manual installs. Error output is often
useless or erroneous. Documentation is sparse, forcing you to often Google for
answers on random sites. Maven is painfully slow and has plenty of bugs.
Basically, Maven is a mess.
Some possible Maven replacements: rake, Lancet (uses Clojure), sbt (uses
Scala), and maybe APB (A Project Builder). Maybe I can switch over some
projects to one of these sometime. Maven 3 also supports actual programming
languages like Scala, so maybe this will solve some of the issues.
*** DONE Nexus
- State "DONE" [2010-11-09 Tue 16:15]
- State "STARTED" [2010-11-09 Tue 09:53]
Just skimming the Nexus book for a few hours. See book entry for Repository
Management with Nexus for details.
Could definitely have gotten away with ignoring this minor topic, but I feel
better with one more black box in my environment turning gray.
*** DONE Java development environment
- State "DONE" [2010-11-10 Wed 13:09]
- State "STARTED" [2010-04-07 Wed 10:57]
Now that I'm programming Java some at work, I need to get Emacs to do
everything that I can in Eclipse. I already use Emacs for this, but there's a
few nice-to-have things that I don't have it doing yet.
Remaining subtasks:
- Read JDEE user guide.
- Read JDEE EmacsWiki page.
- Get flymake working for Java (jde-flymake, most likely).
- Maven integration beyond just using it in compile mode.
Update: Maven integration is no longer supported in JDEE. Check back on this
next year. This kinda screws up the ability for Java projects to see
dependencies in JDEE (which messes up jde-flymake). Creating a new task that
includes figuring this out. The environment is setup though, so closing this
task.
*** DONE REST services
- State "DONE" [2010-11-12 Fri 13:47]
- State "STARTED" [2010-04-09 Fri 11:04]
REST services are used extensively at work, so I need to dedicate a few days to
reading up on them.
Tasks:
- Read Wikipedia page.
- Attended work presentation on REST and ROA (which was boring).
- Read the book RESTful Java Web Services.
- Read some of the RESTEasy documentation at:
http://docs.jboss.org/resteasy/docs/2.0.0.GA/userguide/html_single/index.html
- Created a Twitter REST client in Java.
- Was going to create a second practice project for a REST service, but I'm
pretty sure I get it enough to be able to do that when needed.
- Attending a work class on this topic later (though after the above, I'm
pretty good with it now).
- The Firefox plugin Poster lets you setup arbitrary REST calls.
Notes:
- REST URL elements should be nouns.
*** DONE Jackson
- State "DONE" [2010-12-08 Wed 17:30]
- State "STARTED" [2010-12-15 Wed 20:03]
Already looked into this briefly. There's a class at work on this, and taking
that should be enough to fill in a few gaps to get comfortable enough with it.
** Miscellaneous Other
*** DONE Redo resume in LaTeX
- State "DONE" [2010-01-06 Wed 16:05]
- State "STARTED" [2010-01-06 Wed 17:47]
Posted online in DVI and PS format. Updated my MS Word version too, just in
case. Convert from DVI using dvips.
*** DONE ClickSaver source
- State "DONE" [2010-10-22 Fri 15:57]
- State "STARTED" [2010-10-20 Wed 10:57]
The Anarchy Online mission rolling tool ClickSaver somehow reads a bunch of
info from the screen of a 3D application and controls the mouse within it.
Read the source for this to see how it's done.
This is an MSVS project that uses a library called MadCodeHook.
*** CANCELED Abstract painting
- State "CANCELED" [2010-12-31 Fri 09:05]
Get easel, brushes, etc. Splash paint randomly on canvases and frame them.
Surround self in the aura of a tortured, brooding artist.

Update: Canceled this altogether. Unless I can think of a way to make money
doing this, it's a waste of time.
** Games to play
*** DONE Desert Bus
- State "DONE" [2010-01-02 Sat 15:06]
- State "STARTED" [2009-12-31 Thu 05:17]
Got to Las Vegas, but did so using emulator save states. Still want to do this
all in one sitting some day.
*** DONE Barrow Hill
- State "DONE" [2010-01-11 Mon 03:47]
- State "STARTED" [2010-01-10 Sun 05:43]
Great puzzles that are well integrated into the game environment and has a good
atmosphere. But, a bit too easy and/or short though, since I managed to beat
it within only a few hours of play time.
*** DONE Ship Simulator 2008
- State "DONE" [2010-01-18 Mon 11:27]
- State "STARTED" [2010-01-18 Mon 04:58]
Could have been a good game, but some terrible programming really ruins
everything.
Complaints:
- Main menu interface is massively buggy, at least on my system. Almost makes
the game unplayable.
- The ocean has a noticeable tiling pattern to it, which is pretty sad,
considering how little this game needs to do right.
- Game runs windowed, but doesn't update display when unfocused (sometimes it
will grab input system-wide instead).

- No radio or GPS (apart from just your location).
- Lifeless shores. Particularly a shame regarding ports.
- No wind and water current to factor in.
*** DONE Bus Driver
- State "DONE" [2010-01-18 Mon 20:04]
- State "STARTED" [2010-01-17 Sun 21:15]
Not quite realistic enough to be a commercial driving simulator. Still
somewhat entertaining for awhile.
Complaints:
- No cockpit mode.
- Camera makes it hard to see things like traffic lights and front corners.
- Traffic lights change too fast.
- Nothing like a "career mode", only short, one-time missions.
- Analog controls not scaled properly, particularly troublesome on turns.
- No pedestrians, motorcycles, bicycles, or vans in game.
- Pretty bad balance issues in regards to time. Due to some of the control
issues, it's impossible to ever get 100% on time. However, you can usually
safely ignore this scoring category if you wanted.
- Passengers teleport into the bus.
- Needs more long, straight highways. Real roads aren't this curvy.
- Needs long distance bus driving, like between at least two cities.
- Though not really necessary, visible damage on vehicle models would be a nice
touch.
Finished all the missions, but might replay a few now and then, so leaving
this installed for a little longer.
*** DONE Torchlight
- State "DONE" [2010-01-24 Sun 01:23]
- State "STARTED" [2010-01-20 Wed 18:20]
Played through as a vanquisher. Not really much of a desire to continue
farming on this char or make others though. This game gets repetitive fast.
Complaints:
- WoW-style graphics, while not bad, aren't really my thing.
- Was never really a fan of this style of randomized item generation, instead
favoring weapons/armor to be rarer and less often useless vendor trash.
Vendor trash can then be various other items like mats, gems, etc. Of
course, the best item systems only drop exactly what the mobs are carrying.
- Reuses the same few random level styles too much. Once you seen all the area
types, you've pretty much seen everything.
- Ups the stats of the same monsters for harder levels. Fighting the same
enemies with larger HP bars forever isn't fun.
- Flintlocks and other primitive firearms don't fire this fast. They also take
ammo. Then again, this game pretty much ignores any attempt at realism.
Still an okay game for a couple days though, but definitely no Diablo II.
*** DONE Rampart
- State "DONE" [2010-01-24 Sun 17:09]
- State "STARTED" [2010-01-24 Sun 17:05]
Not fun.

*** DONE Trainz 2010 Engineer's Edition
- State "DONE" [2010-02-11 Thu 21:26]
- State "STARTED" [2010-02-11 Thu 17:48]
Could be pretty good, but isn't. Also, train simulators just don't seem all
that fun to me. What little there is to do is rather tedious.
Complaints:
- Buggy graphics. Trees don't scale properly when moving towards/away from
them, making it look like they grow out of the ground and become huge over
and over. Cars disappear on roads when they hit a dead end.
- Game world seems dead.
- Awkward interface.
- Annoying sound.
- Loading takes forever.
*** DONE Gratuitous Space Battles
- State "DONE" [2010-03-12 Fri 10:48]
- State "STARTED" [2010-02-14 Sun 21:07]
There's more strategy to this than appears at first. Would prefer a bit
smarter AI, since you can't control your units during battle. The randomized
mission doesn't work on my install for some reason.
Wasn't much more to do with this game after playing this a few nights. Will
uninstall, I guess.
*** DONE Battlefield: Bad Company 2
- State "DONE" [2010-03-12 Fri 13:26]
- State "STARTED" [2010-03-05 Fri 22:49]
Nice weapons and graphics, and better than the Modern Warfare series, but still
a tardfest. Was in the market for some mindless fun after a few weeks of
interview cramming, but this was just too mindless. Overall, a waste of money.
 Like the CoD games, your guy soaks up a few
thousand bullets during the game, healing himself magically in a few seconds
by ducking behind cover for 5 seconds.
- Treadmilling access to various weapons in multiplayer is a massive timesink.

- There's only one team strategy in multiplayer: frontal assault.
- Single player campaign too linear and formulaic. At least it doesn't have
the near infinite enemy respawn problem that CoD does though.
- NPC squadmates are pretty much useless except for drawing fire while you
regen. However, as soon as you stick your head out, the enemy mobs typically
prioritize the player.
- Battles against helicopters are highly unrealistic and annoying.
*** DONE Ad Astra
- State "DONE" [2010-04-03 Sat 01:43]
- State "STARTED" [2010-04-03 Sat 01:38]
Doesn't run on 2k8 or XP in a VM. :( Check back in a year or so to see if a
newer version is out.
*** DONE Defense Grid: Borderlands
- State "DONE" [2010-05-01 Sat 23:31]
- State "STARTED" [2010-04-25 Sun 22:01]
Pretty good new maps and some of the new challenge modes are fun (in
particular, reverse mode and super grinder). Would like even more maps, but
can't really complain since this is a free DLC.
*** DONE Raincat
- State "DONE" [2010-05-02 Sun 02:00]
- State "STARTED" [2010-05-02 Sun 01:15]
Written in Haskell. Too easy and not enough levels. Was mildly entertaining
for about half an hour though.
*** DONE Digital: A Love Story
- State "DONE" [2010-05-02 Sun 17:05]
- State "STARTED" [2010-05-02 Sun 03:50]
Great implementation of an original concept and generally succeeds at creating
the atmosphere intended. Noticed a couple small bugs related to plot triggers
though, not seeing your own replies was a bit of a letdown, and would have
preferred at least a little non-linearity.
*** DONE Sol Survivor
- State "DONE" [2010-05-08 Sat 18:48]
- State "STARTED" [2010-05-05 Wed 21:13]
Decent game, but not as good as Defense Grid. Did some of the challenge games,
but it got old before finishing all of them.
Complaints:
- Not being able to modify the path of creeps kills most of the strategy aspect
of a tower defense game.
- Cloaking countermeasures are highly annoying. Flare timer duration is way
too short, resulting in a massive click-fest. Inhibitor towers are better,
but the range is frustratingly short.
- Survival mode more frustrating than fun.
*** DONE Typhoon 2001
- State "DONE" [2010-06-19 Sat 03:03]
- State "STARTED" [2010-06-19 Sat 02:54]
A good remake of Tempest 2000, but I guess I'm not really into action games
anymore.
*** DONE FreeOrion
- State "DONE" [2010-06-23 Wed 20:33]
- State "STARTED" [2010-06-19 Sat 03:10]
Checked this out a couple years ago, but it wasn't really playable yet. This
version only adds a couple new things on top of what I saw last time, like
starlanes.
With all the remaining features to be implemented, I'll just continue waiting
and check back again in a year or so. Not in any desperate hurry to play an
MoO remake anyway.
*** DONE Defense Grid: Resurgence
- State "DONE" [2010-06-26 Sat 00:14]
- State "DONE" [2010-06-15 Tue 02:13]
4 new DLCs which are just packs of 2 maps each. Picking them up in groups of
two, since not all are being released at the same time.
Of the first 4 maps, only Height of Confusion was really good. The others were
only okay.
Of the second 4, all were pretty good except Urban Planning.
UPDATE: On 2011-08-02, I completed all achievements. Yay for me, I guess.
*** DONE Napoleon: Total War
- State "DONE" [2010-06-26 Sat 00:53]
- State "STARTED" [2010-02-26 Fri 08:25]
Overall, a great game, and the most polished in the Total War series yet.
Complaints:
- Naval battles don't incorporate wind direction, one of the most important
factors in sail-era naval warfare.
- No "raking fire" damage bonus, and you can't really "cross the T", since
ships can turn so fast.
- During this period, riflemen formations fired volleys in ranks, usually 3
deep. Here just the front line fires and soldiers further back wait for the
guy in front of them to die.
- No officers alongside units. This was in earlier TW games, and would have
been historically accurate here.
- Would prefer to be able to have a full map campaign with an infinite or more
generous time limit option. Campaign faction selection is also a bit
disappointing. Could have been fun to start off as a minor faction and
attempt to conquer Europe. Many of these other factions are available in
multi-player, but that does nothing for me.
Got bored with this game apparently, since it sat unplayed for months. I guess
my main problem is the world just doesn't seem as open as Rome: Total War did,
and all the other improvements can't make up for that.
*** DONE ADOM
- State "DONE" [2010-07-22 Thu 02:57]
- State "STARTED" [2010-07-22 Thu 00:30]
Did a few attempts. Didn't get past level 9 on any though. :(
*** DONE Requiem: Memento Mori
- State "DONE" [2010-10-16 Sat 14:18]
- State "STARTED" [2010-08-29 Sun 16:07]
Yet another EQ-clone, this one a free-to-play item mall one.
Complaints:
- Thoroughly devoid of any originality.
 Dialog
windows buggy, don't properly wrap text, and often don't recognize click
events properly (like when selecting items from reward lists).
- Skill trees are very, very small. The two char types I tried had the exact
same combat routine for every single fight, and those were just spamming the
same few skills repeatedly in an HP bar duel. Only way later in the game did
it vary some, and then only a small amount.
- Like every other MMO, the game world is populated with retards and perverts.
- Lots and lots of small glitches, like mobs spawning in scenery, disappearing
parts of models, database persistence issues, etc.
- The PvP battle system has numerous design issues and bugs. To get decent PvP
rewards gear, you have to farm these battles for months, and it only gets
exponentially worse at higher levels.
- Like most item mall games, the crappiness of various aspects of the game
serve only to remind you to buy items with real money. The problem then is
that if you wanted to de-suckify all those things, you'd end up paying way
more than just a normal subscription-based MMO.
- The game can't decide whether it wants to be fantasy or sci-fi. I guess it's
a combination of those, but generally it feels more like a cheap fantasy one.
- Like most 3D MMOs, you can walk through other players and mobs.
- No attack summons/pets capable of significant damage.
- Serious lag issues with the server, constant disconnects, and inexcusably
constant and long downtimes.
- The most annoying thing about my char was that my main nuke had a minimum
range. This meant I had to kite around like a spaz whenever farming. That
got old extremely fast.
As suspected, got bored pretty quick. Got to level 56 on an elementalist.
Overall, the game is just poorly run and the result of sloppy development and
derivative ideas. Uninstalled.
*** DONE Project Entropia
- State "DONE" [2010-10-22 Thu 19:20]
- State "STARTED" [2010-10-22 Thu 20:50]
Make an account here and try to see how far I can get without paying any real
money, perhaps by collecting sweat or dung.
Practically unplayable as a fr00b, so quitting. Using sweat collectors
wouldn't be so annoying if it wasn't an aggro action. One nice feature its
engine has though is that when running through dense foliage, leaves and
branches get bumped out of the way instead of clipping through the player
model.
*** DONE Starlanes
- State "DONE" [2010-10-22 Fri 10:50]
- State "STARTED" [2010-10-22 Fri 11:00]
The FreeBSD port of this doesn't run properly in my urxvt terminals for some
reason. I had this working before though, so not sure what the problem is, but
it's not really worth looking into. The little of the game I played before
wasn't any fun due to it being too random.
*** DONE Icewind Dale (+HoW/ToL)
- State "DONE" [2010-10-26 Tue 11:09]
- State "STARTED" [2010-08-01 Mon 18:09]
Trying a 4 character party of fighter, cleric, mage, and thief.
This went fine and was quite easy up until I stuck my party by going to ToL too
soon. The final ToL battle is extremely tough, even for a 6 char party, and
while I'm sure I could take it in a few levels, jumping there shortly after HoW
was available was just stupid. In retrospect, I also should've dual-classed my
cleric and theif to start as fighters and switch to their main classes after
level 1 or so. I could also change the fighter to a dual-classed bard to
offset the OP-factor of this.
I could salvage this from an earlier save, but redoing all of ToL just doesn't
sound like fun. Maybe I'll start over again in a few years, though I've played
through this game so many times now, that it's really not enjoyable anymore.
*** DONE Save Scummer
- State "DONE" [2010-11-03 Wed 19:02]
- State "STARTED" [2010-11-03 Wed 16:03]
http://www.zincland.com/7drl/savescummer/
Entertaining for awhile. Would be nicer if it included armor, some heal spells
and/or HP/MP regen, had the ability to level up your character, and was
considerably longer.
*** DONE Anarchy Online
- State "DONE" [2010-11-08 Mon 09:17]
- State "STARTED" [2010-10-16 Sat 14:35]
AO is better than I thought it'd be. The graphics look nice on modern
machines, load times are near-instantaneous, most buffs are long-lasting, and
the game doesn't hold the player's hand like modern MMOs do. Probably my
favorite thing about it is that the game world is massive and the population
extremely low (at least on the RK2 server). You can easily run for hours in
one direction without seeing another player.
Playing a nanomage metaphysicist, a min/max build focusing on passive play.
For harder mobs, I can help out the pet summons with some nukes, but otherwise,
the goal is to do nothing, weilding 1HB buff weapons (shields,
pillows/cushions) or low QL buff pistols. Previously tried ranged weapon MPs,
but those chars were doomed to be sub-par (IMO), since I had to spread IP
around to too many combat skills.
Read all the relevant info online I could find and made a detail build plan
with the info at hand in ~/doc/misc/metaphysicist_notes.org. AO has a lot of
opportunities for gimping your char, so this plan should prevent that. Wrote
some AutoHotkey scripts to automate as much as I could, but for whatever
reason, AutoHotkey and AO don't work together.
Complaints:
- No auto-loot. Clicking corpses to loot gets old, fast. Making it worse is
the focus is lost on a mob as it dies, meaning if you had it targeted and
killed it, you'd have to re-target to loot. This isn't as terrible as it
would be in most games, since you kill fewer mobs overall, however.
- There's some annoying graphical glitches and still plenty of bugs. There's
really no excuse for this given that the game's been out for almost 10 years.
- The game has already suffered from years of game currency inflation and all
the typical side effects of that.
- The pet's hunt function typically causes it to wander outside its 50m pet
radius and default back into guard mode. Of course, without auto-loot this
function is less useful anyway. It can still be used to farm up some n00b
mobs occasionally though and other situations where the farm area is
geographically restricted.
- Leveled XP. Like most modern MMOs, you get no XP for killing gray con mobs.
 Some areas are also have
level limits on entry.
- Not a big fan of item systems that have minimum stats to equip, but at least
most of the items aren't level-restricted. Also has NODROP and UNIQUE items.
- AO's developer (Funcom) intends to upgrade the engine to the AoC engine.
While most players might like this, I'd rather have the current graphics and
instantaneous zone loads.
- The Shadowlands area has a ton of problems, but the main one is that it
throws out a lot of the good things about AO and copies the more modern MMOs
(e.g., a linear progression of areas, distinct good/evil factions, etc).
Got bored after a few weeks. Made it to level 36 or so, and lost all desire to
continue playing. In retrospect, I think I'd have enjoyed the game more as a
fr00b, as apart from perks/research, the pay expansion content sucks.
*** DONE Winter Voices Prologue: Avalanche
- State "DONE" [2010-11-11 Thu 20:35]
- State "STARTED" [2010-11-01 Mon 22:53]
Part 1 of a 7 part series. Looked like an interesting 2D isometric game.
Didn't disappoint on graphics, sound, or atmosphere, and has an original system
of stats/skills, but fell short in most other areas.
Complaints:
- The story is rather dumb so far. Most of this is due to the actual text of
the narration and dialog, which fails at its intended goal of being poetic.
- The environment is almost entirely non-interactive.
- Not really big on feelings, dreams, and other touchy-feely stuff like that.
- While original, the stats/skills system could have been better thought out.
For example, having to dedicate stat points to making the game harder is
kinda dumb.
- Settings refuse to accept a change to 16:10 aspect ratio.
- Dialog choices often lack in any real consequence.
- Uses Adobe AIR, which is probably what makes parts of it feel like a casual
Flash game, albeit a very polished one.
- Controls are a bit crappy and unresponsive.
- Combat actions and spells lack sound effects.
- Boring to play, and not the good kind of boring.
Gave up after a few hours. Overall, a waste of $5.
*** DONE Exult (Ultima VII BG/SI)
- State "DONE" [2010-11-20 Sat 21:53]
- State "STARTED" [2010-07-17 Sat 19:16]
Setup notes:
- Grab both BG and SI from: http://www.abandonia.com/
- Make an `exult' directory somewhere and extract both zip files to
`exult/ultima7' and `exult/serpent'.
- Run Exult installer, installing to the `exult' directory created above and
point to the BG/SI locations appropriately.
- Putz with the resolution settings in exult.cfg until something close to a
window the size of the screen is found, but only go this large if the screen
isn't more than like 1280x960 or so, since then it would require to much
mousing to run. Don't use fullscreen, since it's pretty buggy.
- Change bg_paperdolls to no, since the other kind make it hard to see who's
wearing what and accessing the backpack is more difficult.
- Run Exult and start stealing food.
Complaints:
- The controls are pretty bad sometimes. It's hard to click small items and
stuff is often in the way of other stuff you do want to select. The higher
resolution available with Exult makes up for cramped UI, but doesn't help
clicking things.
- Combat is so fast, it's often impossible to do anything strategic during it.
- Checking the party's stats is a massive amount of clicking and their max HP
isn't shown.
- No ability to sell most stuff to stores kinda ruins the fun of collecting
since found items have no value unless you can use them yourself.
- Couldn't get most sound effects to work in Exult. The background music works
fine though. Probably could putz with the sound settings some, but didn't
bother.
Despite these complaints, Ultima VII is a truly epic game and way ahead of its
time in sandbox world creation. Even most modern games that attempt the same
fall short of many of the features this has.
Kind of abandoned this effort due to lack of interest in the main plot line.
Played it in sandbox mode until I effectively maxed out all my chars though.
This kept me sane while stuck on work trips, so I'm keeping it around for
future ones and may continue here then.
*** DONE The Mana World
- State "DONE" [2010-12-01 Wed 17:22]
- State "STARTED" [2010-11-29 Mon 23:53]
Plays pretty good, but not really in the market for playing any MMORPGs any
time soon, especially considering how bad the drops are here and how much
grinding is required.
*** DONE Sins of a Solar Empire
- State "DONE" [2010-12-02 Thu 20:13]
- State "STARTED" [2010-12-01 Wed 17:29]
Already played this some before, but giving it another run through. Considered
buying the 2 expansion packs, but since they just add a few units and
technologies, not bothering with it. This is a really well-made game from a
gameplay perspective, but it's not perfect.
Complaints:
- Though the graphics are 3D, the game is effectively 2D. Would've been more
interesting with jump ranges (perhaps as a research-increasing technology)
that allowed jumping to any nearby planet, no phase jump lanes, and the
occasional orbiting body off the ecliptic plane. The ability to setup bases
in random locations in space would've been nice too.
- Actual combat doesn't have many strategic options.
 Attempting to keep allies happy or
befriend other factions is often impossible, since you sometimes can't do
their quests (especially in larger maps).
- Scenarios tend to be intentionally designed for one resource to be in
constant shortage, usually crystal, which just ends up being annoying.
- Would be nice to be able to turn down the pirate faction instead of it always
being exactly the same strength or completely disabling it.
- Though the ability to zoom from system view down to planetary orbit is cool,
the scale is way off.
- Would prefer a little more realism. Like grouping planet types together in
accurate distances from their star (i.e. no Terran planets way out in distant
space), including moons of varying size and usefulness, asteroid belts that
are actually belts, etc.
** General life goals
*** CANCELED MagicJack
- State "CANCELED" [2010-10-13 Wed 09:42]
Considered replacing normal land line with this, but just got a smartphone
instead. MagicJack would almost work, but requires a Windows box on 24/7.

*** DONE LED lighting
- State "DONE" [2010-12-10 Mon 11:27]
These only use about 1.5W.
Turns out I only owned 1 fluorescent light bulb (the rest belong to the
apartment). This finally died, so I replaced it.
** Macro-goals
*** DONE year-end review for 2010
- State "DONE" [2010-12-31 Fri 09:18]
- State "STARTED" [2010-12-30 Thu 19:07]
Observations for 2010:
- I needed a good bit of the first 2 or 3 months of this year refreshing old
development knowledge in order to breeze through interviews. While
that sucked, the end result was certainly worth it.
- Switching jobs to a more programming-intensive one was the right move, but it
also threw out half of my SE knowledge due to switching dev ecologies. The
most important effect here is that I had to invest most of the year
researching work-related topics.
- Moving slurped up a good month of productive time. This was and is worth it
though, as now I can walk to work when weather permits.
- Compared to where I was last year at this time, I can unequivocally state
that I have made progress in a vast number of major areas: Better living
conditions (nicer apartment and better location), improved monetary
efficiency (about 30% reduced expenses), reduced extraneous possessions
(around 700 lbs), greatly expanded programming skill (mostly work-related),
healthier (almost 30lbs lighter), increased monetary net worth (over +$80k),
improved career standing (more advanced job and another clearance upgrade),
around twice as many books read, less time spent on frivolous activity (like
playing video games), better work conditions (and more pay), and while I've
still got some major tasks ahead of me, my life is getting close to maximal
optimization. Of course, things out of my control could always throw large
parts of it out of balance, but that's why I'm on my way to reducing, and
eventually eliminating, the greatest source of instability, risk, and
inefficiency: work. Getting there as fast as possible requires running life
like a business, and that's exactly what this file is all about.
Major goals for next year:
- The main goal now is to max out the savings rate. I need to save at least
$75K/yr in order to meet my retirement goal. That shouldn't be too much of a
challenge at my current rate. Ignoring this will just mean I have to work
longer. CompSci is still my main long-term goal, but securing my freedom is
far more valuable to my personal wealth than writing code for employers, and
is also a necessary step to write the code I want to. I've now got a 5 year
plan, starting now, to get to where I need to retire (detailed in
~/ideas.org). Meeting or exceeding the yearly milestones therein is my
primary focus. Due to the timescale, there are some major risk factors
(macroeconomic crises, my target industry collapsing, layoffs, medical
emergencies, and burnout). I'm sure I'll encounter at least one of these in
that time, and I can only buffer myself as best I can. Making it to next
year while still on track will be a huge step in the right direction.
- Finish learning new job skills. The only remaining items are Hibernate and
Spring, so this shouldn't take long.
- Finish these life goals: losing weight, quitting smoking, curing caffeine
addiction, finish firearms collection, learn how to grow food, and
liquidating remaining extraneous possessions. Life will be a great deal
better once these are complete, as apart from the retirement target plan,
these are the last big aspects of life to address while still in employment
mode (or, at least of the ones I can think of now).
- Once all the above is accomplished, return to my CompSci goals which are
still the same as before, and, of course, keep thinking of ways to improve
life.
* Project List (2009)
** Books: Computer Science/Programming
*** DONE Living in Emacs
Didn't learn anything new.
*** DONE The Object-Oriented Thought Process
- State "DONE" [2009-08-07 Fri 12:59]
- State "STARTED" [2009-08-02 Sun 13:59]
Mostly n00bfeed with many typos. Didn't learn anything new.
*** DONE Getting Started with LaTeX
- State "DONE" [2009-08-15 Sat 20:00]
- State "STARTED" [2009-07-18 Sat 10:27]
Learned a large portion of LaTeX syntax and concepts thanks to this.
Supplemented it some with the online LaTeX wikibooks and the book "Math Into
LaTeX".
*** DONE Monads for Functional Programming (paper)
- State "DONE" [2009-07-24 Fri 01:10]
- State "STARTED" [2009-07-23 Thu 23:14]
This is about as good a non-category-theoretic introduction to monad type
constructors as it gets. Knew most of this, but should have read this paper
much earlier on.
Notes:
- A state transformer monad can be used to explicitly indicate an array is
single-threaded.