- Keep monads in mind when creating recursive descent parsers in the future.
*** DONE The UNIX-HATERS Handbook
- State "DONE" [2009-08-27 Thu 23:18]
- State "STARTED" [2009-08-26 Wed 09:18]
This world without Lisp Machines is almost not worth living in.
*** DONE SQL Server 2005 Administrator's Companion
- State "DONE" [2009-09-01 Tue 02:13]
- State "STARTED" [2009-08-31 Mon 22:22]
Wrote the following for this book's amazon.com review:
I (perhaps naively) attempted to use this book to educate myself on SSIS, SSAS,
and SSRS.
Here's just a few of its many problems:
- 90% of its content is just walkthroughs, most likely pasted in from MS help
docs and KB articles.
- No actual educational surveys of the topics in chapters are provided, apart
from a couple paragraphs introducing it and telling you how thankful you
should be that MS added some lame features to it in this version.
- The walkthroughs are literally unreadable unless you're actually performing
that task right now. What few explanations of concepts there are, are buried
in reams of "click this button, now click the drop-down selector, now click
OK."
- This presentation becomes instantly useless when a new version comes out
(which already happened) since the text is married to this version's GUI.
- The occasional typo and grammar error complete the tardfest.
Basically, this book is just 1200 pages of filler with a hardcover for
cubicle-shelf eyewash purposes. Only the most clueless MS weenies would
actually use this for a reference on the job when the KB has the same thing,
only more up to date. Even more pathetic is it took 5 people to "write" this.
Typical mall bookstore-grade tech book detritus.
*** DONE Managing Projects with GNU Make
- State "DONE" [2009-12-14 Mon 08:48]
- State "STARTED" [2009-08-28 Fri 00:49]
Pretty dry. GNU Make is another great example of `worse is better'. Note to
self: stop buying books on particular software systems/tools, especially ones
that I'm not getting paid to master and/or can learn online just as easy.
Read the fist half and made a couple boring practice projects added to the
Darcs repo. Stopping short of learning make functions, macros, and other
`advanced' features. Will just use the rest of this book as a reference
when/if needed. Might read the rest of this some day in the distant future if
I really have nothing better to do.
*** DONE The Creation of the UNIX Operating System
- State "DONE" [2009-12-14 Mon 09:21]
- State "STARTED" [2009-12-14 Mon 08:48]
Thought this was going to be an online book, but wasn't. Too abridged to say
anything I didn't already know.
** Books: General Non-fiction
*** DONE Godel, Escher, Bach
Quit around chapter 12. While there are some important ideas in number theory,
proof theory, and the incompleteness theorem presented in this book, it tends
to be drowned in a sea of nonsensical, hypothetical pseudo-isomorphisms between
those math topics and music, art, and fiction, effectively introducing
unnecessary noise. Maybe it would be okay for readers in need of a lot of
hand-holding and relations between these semi-complicated topics and everyday
life, but I think I can say this doesn't apply to me, at least not with math.
Another bad thing about it is that there are some ideas of obviously
questionable merit, in particular the "strange loop" which the author seems
hung up on (his followup book is entirely about strange loops). The book isn't
terrible, but I have better things to do with my time, already know most of
this, and what I don't I can learn elsewhere much faster.
*** DONE Financial Freedom Through Electronic Day Trading
Semi-crap.
*** DONE Secrets to Creating Passive Income
Inserted book into garbage can.
*** DONE God Wants You Dead
- State "DONE" [2009-06-08 Mon 10:28]
Decent meme/memeplex introduction. Not quite perfect, but includes some stuff I
hadn't considered. However, has a lot of cheesy humor and is obviously written
for commoners.
*** DONE The Zurich Axioms
- State "DONE" [2009-06-28 Sun 15:28]
- State "STARTED" [2009-06-28 Sun 10:14]
Pretty good. Didn't learn anything new, but good to have smart advice
rehashed. I agree with all of these axioms except 2 that says to sell early.
This is unnecessary in liquid markets like securities.
*** DONE Market Wizards
- State "DONE" [2009-08-15 Sat 20:29]
Starts out interesting, but gets repetitive fast. Definitely one of the better
books on the trading out there, but that isn't saying much.
*** DONE The End of Faith
- State "DONE" [2009-08-17 Mon 01:11]
- State "STARTED" [2009-08-16 Sun 00:11]
Pretty good, if somewhat prefatory in my case. Apparently like a lot of
non-theists, found a few things that I do disagree with here though, in
particular, the free pass given to Eastern mysticism and Harris' statism.
*** DONE The Demon-Haunted World
- State "DONE" [2009-08-17 Mon 21:07]
- State "STARTED" [2009-08-17 Mon 01:11]
Painfully basic. Would have found this informative around 15 years ago.
*** DONE Trading in the Zone
- State "DONE" [2009-08-22 Sat 12:54]
Says a lot of touchy-feely things some traders maybe need to hear (trading is
definitely a non-science, after all). A rather dull and slow read though - not
unlike a cheesy self-help book. About half-way through, started wishing the
book would just end. Factually, there's a lot wrong with this book (with far
too many errors to enumerate), but I do generally agree with the central theses
regarding the attitude necessary for interacting with the existing state of the
market on short time scales, at least to some extent.
*** CANCELED Short Term Trading
- State "CANCELED" [2010-07-16 Fri 04:23]
Canceled. Taking a break from day trading.
*** CANCELED The ETF Book
- State "CANCELED" [2010-07-16 Fri 04:23]
Canceled.
** Books: Fiction
*** DONE Spin
Okay. Not great.

*** DONE Greg Egan books
- State "DONE" [2009-08-15 Sat 03:34]
Hard scifi author with some original ideas and who's mostly free of a lot of
the obvious flaws of most books in this genre. Greg Egan-ed out for awhile,
but there's more books of his I'll consider reading later.
- Glory: Pretty good.
- Oceanic: Pretty good.
- Luminous: Pretty good.
- Dark Integers: Not bad.
- Singleton: OK, not great.
- Artifact: Good concept, but not great.
- Lost Continent: Meh.
- The Planck Dive: Pretty good.
- Worthless: OK, not great.
- The Demon's Passage: Very good.
- Oracle: Not bad.
- Closer: Pretty good.
- Neighbourhood Watch: Meh.
- TAP: Decent.
- Quarantine: Pretty good. Ending a bit disappointing. Somehow manages to
turn his only Copenhagen interpretation book into another MWI one. :\
- Schild's Ladder: Some of the math/physics used here reads a bit tacked on
instead of integral to the story and is too focused on the developments of
the (actual) present. Despite having post-human brains, the characters also
regularly engage in vacuous dialog. Still a great book, but won't be
entertaining 20,000 years from now (when the story takes place).
- Dust: Pretty good. Ending a bit sloppy.
- Wang's Carpets: Also included in Diaspora. Pretty good on its own too.
*** DONE State of Fear
- State "DONE" [2009-06-08 Mon 10:28]
Pretty good concept and well researched, but wooden, 2D chars outside of the
uninspired "common man" main char. Plot often simplistic with details-minimal
action sequences. Overall plot a typical, multi-stage quest that quickly
becomes predictable. Probably written with an eye towards movie rights.
*** DONE A Fire Upon the Deep
- State "DONE" [2009-06-11 Thu 16:40]
- State "STARTED" [2009-06-08 Mon 10:28]
Not impressed. Wasted several days reading this. :(
*** DONE The Newtonian Legacy
- State "DONE" [2009-06-13 Sat 14:03]
- State "STARTED" [2009-06-12 Fri 23:59]
OK, but could've done without the instances of sexual innuendo. If I wanted
to read about buttocks and looking up skirts, I'd go find some pr0n.
*** DONE The Death of Richard Dawkins
- State "DONE" [2009-06-13 Sat 17:17]
- State "STARTED" [2009-06-13 Sat 15:31]
Crap.
*** DONE Show of Force
- State "DONE" [2009-07-04 Sat 20:39]
Quit a few chapters in. Could have been interesting from a modern naval warfare
perspective, but this writing is just awful.
*** DONE Quantico
- State "DONE" [2009-09-09 Wed 09:37]
- State "STARTED" [2009-09-07 Mon 21:26]
Ass sandwich.
*** DONE The Magic of Krynn
- State "DONE" [2009-09-12 Sat 14:22]
- State "STARTED" [2009-09-10 Thu 02:40]
Probably would have enjoyed this more around age 10.
*** DONE At the Mountains of Madness
- State "DONE" [2009-09-29 Tue 15:55]
- State "STARTED" [2009-09-24 Thu 15:20]
Reread.
*** DONE The Fall of Colossus
- State "DONE" [2009-10-08 Thu 03:03]
- State "STARTED" [2009-10-04 Mon 22:53]
Bleh.
*** DONE Colossus and the Crab
- State "DONE" [2009-10-17 Sat 01:15]
- State "STARTED" [2009-10-08 Thu 03:13]
Bleh.
*** DONE The Forge of God
- State "DONE" [2009-10-29 Thu 02:20]
- State "STARTED" [2009-10-26 Mon 19:22]
The good: This book sort of explores the interesting topic of Von Neumann
probes.
The bad: Everything else. The execution of this is almost exclusively composed
of lots of pointless filler and braindead dialog, making for a highly annoying
read. The world is ending, and the reader is treated to scenes with puppies,
detailed meal descriptions, relationship drama, and other trivialities. No
character ever once says anything intelligent. Plot-progressing events are
completely random, giving the reader nothing to ponder or do except turn the
page. Finishing this turned into a real chore.
*** DONE Anvil of Stars
- State "DONE" [2009-11-06 Fri 00:45]
- State "STARTED" [2009-10-29 Thu 11:27]
Unlike most sequels in this genre, this book was actually rather good,
especially in comparison to previous one.
*** DONE Accelerando
- State "DONE" [2009-11-25 Wed 14:04]
- State "STARTED" [2009-09-24 Thu 22:59]
Wrote the following for this book's amazon.com review:
Apparently it really is possible to spend too much time with the GNU Manifesto.
At least we can take comfort in the knowledge that the personal lubricant
industry will do well as the technological singularity approaches.
Some observations:
- This book isn't bad, but for someone whose lexicon includes all the
post-humanist buzzwords (of which a near complete survey is made herein),
it's pretty obvious the underlying stories here are a bit weak. The
shamelessly heavy obscurantism here doesn't work for anyone with a CompSci
degree and who's read all of the transhumanism Wikipedia articles.
 Even modern humans would get bored of
this pretty quick.
- Obviously written by an OOP fanboi. References to Python and Java are pretty
laughable early on in the book. No attempt is made to continue the detail of
following programming language development after a few chapters, probably as
a result of the author being incapable of speculation in this area.
- Along those lines, the hard scifi level of detail gets continuously more
sloppy as the book goes on.
- Anti-Objectivist/pro-communist propaganda is laced into the early plot in
such a heavy-handed fashion as to just be awkward.
- Has several "well, that's just stupid" moments, like killing gray goo with
fuel-air explosives bombing and most everything involving the
extra-terrestrials encounter.
- Exhibits what I'll hereby christen "historical gravity well syndrome" where a
scifi novel tries to fill in back-story in a way that over-emphasizes the
history of the decade or so before it was written (i.e. talking about Richard
Stallman, George Soros, Noam Chomsky, a thinly-veiled RIAA, etc., yet nearly
completely ignoring the history from the present until the beginning of the
book). Do humans today spend all their time talking about the 1960s while
ignoring everything since then?
- Most importantly, the book's universe is basically the myopic worldview of
the salivating Linux freetards. This makes for a lot of cringe-worthy scenes
and dialog that read more like a Slashdot post than an actual novel.
- Despite all the above, it's still nice to see ideas like Matrioshka brains,
lightsails, computronium, distributed intelligence, and exocortices come to
life, but none of these ideas are original to this book. Hopefully someone
less simple-minded will write a better book about them some day.
*** DONE Rescue Party
- State "DONE" [2009-11-29 Sun 02:16]
- State "STARTED" [2009-11-29 Sun 01:02]
Meh.
*** DONE The Man From The Sea
- State "DONE" [2009-12-11 Fri 11:12]
- State "STARTED" [2009-12-06 Sun 03:21]
Starts out pretty good, but loses its initial momentum mid-way on, and has some
serious deus ex machina on multiple occasions.
*** DONE Notes From Underground
- State "DONE" [2009-12-22 Tue 22:54]
- State "STARTED" [2009-12-21 Mon 23:41]
A good read. As this work is no doubt the hapless victim of many a clueless
literature and philosophy major's forced essay, I'll spare it further analysis
out of pity.
*** DONE Warrior 1
- State "DONE" [2009-12-28 Mon 03:18]
- State "STARTED" [2009-12-28 Mon 03:00]
Dude...
 I'm pretty sure I can find something better to do with my
time, so quitting this one about 1/4 the way in.
*** DONE Spindrift
- State "DONE" [2009-12-30 Wed 01:59]
- State "STARTED" [2009-12-28 Mon 10:53]
Not bad.
*** DONE Babel-17
- State "DONE" [2009-12-31 Thu 23:28]
- State "STARTED" [2009-12-30 Wed 02:20]
Good idea, but poor execution. Quit early.
** Technology and software
*** DONE TRAMP
Not much to TRAMP.
Notes:
- Standard TRAMP syntax: C-x C-f /servername:~/somefile
- Using sudo to edit local system files: C-x C-f /sudo::/etc/passwd
*** DONE org-mode, remember-mode
Now using org/remember for ASCII tables, managing all notes files, making quick
notes (with remember-mode), address book, financial ledger, and as a personal
planner. Not using org-agenda and not doing any future task scheduling. Might
add these later, but at the moment, I don't see a need.
Main task lists:
- GTD list: This is a short-timescale list of boring, life-maintenance
activities, like paying bills and buying carrots.
- Projects list (this list): Longer term tasks that work towards larger goals
in life. Publishing this list online to keep self motivated (not that anyone
reads it). Started on <2009-04-06 Mon 16:58>.
- Work list: Pending work-related tasks.
Notes:
- It's possible to use Emacs calc functions in org tables by defining table
formulae. See ~/doc/misc/net_worth.org for an example. Use C-c = to enter a
formula for this field.

- I'm including things here that aren't necessarily productive, like fiction
books and games, in order not to get stuck on them. Playing the same game
forever is easy to end up doing. Not cutting losses on crappy books is
another time-wasting trap as well. Logging effort here retains focus.
*** DONE gnuserv
Using instead of server-start on *nix. Use `gnuclient somefile.txt&' to send
files to Emacs. Aliased gnuclient to gc.
Update: Switched back to server-start/emacsclient. Archived gnuserv setup to
unused_init.el.
*** CANCELED ido-mode
Replaces completion functions for C-x b, C-x C-[wf]. Also enabled fuzzy
completion, but will have to spend some time with it to decide if its
useful. If annoying, disable it.
Update: ido got annoying altogether, so disabling it completely. To put back
in, re-add this code:
;; Enable ido-mode for a more intelligent C-x b (iswitchb) and C-x C-[fw]
;; (ido-find-file). Cycle stack with C-s.
(ido-mode t)
(setq ido-enable-flex-matching t) ;; Enable fuzzy matching.
Archived setup to unused_init.el.
*** DONE set up rsync scripts
- State "DONE" [2009-06-30 Tue 00:34]
Final syncing setup:
- Copying /etc, /root, /local/www/data, /home, /usr/src/sys/i386/conf,
/usr/local/etc to /home/bm3719/smbmount (mapped to D:\backups\cellblock on
dreams).
- Rsyncing useful ~ files from server to Linux laptop.
- Also using SyncBack on Windows to copy various directories to same drive.
- Might want to add some rsyncing to FreeBSD laptop, like all relevant dotfiles
from ~. Since not using it currently, no big deal.
*** DONE Emacs Regexps
- State "DONE" [2009-07-11 Sat 17:07]
Reviewed Emacs regexps enough to be competent in them. Created a notes file
emacs_regex.txt to remind self of common syntax.
M-x re-builder: Allows interactive Emacs regexps building.
Global query-regex-replace: M-x qrr, enter regex-strings, ! for global replace.
Maybe relearn perl regexps for use with shell scripts later if I have nothing
better to do with a few hours (used to use these like 10 years ago). There's
more advanced regexp topics to cover as well, and maybe take a look at the book
"Mastering Regular Expressions" if I really want to get into it.
*** DONE EMMS
- State "DONE" [2009-07-16 Thu 22:18]
- State "STARTED" [2009-06-24 Wed 10:54]
Set up and did some basic config. Using mplayer as backend. Look into
making/saving playlists. Once done previewing mp3s on Windows box, copy all
the ones I like to a fs hierarchy on cellblock and archive the full albums
somewhere else. Then migrate foobar2k playlists over or recreate them.
*** CANCELED Gnus
- State "CANCELED" [2009-07-17 Fri 01:41]
Deprecating Gnus in favor of wl for email and newsticker.el for RSS. Might
revisit this if I get another working NNTP server from a future ISP (though, wl
also supports NNTP). Otherwise, the command syntax overhead and Gnus' awkward
handling of non-Usenet sources makes it less than ideal for the tasks I was
still using it for. While Gnus probably is still the best NNTP reader, the
need for one has largely vanished, as I have better things to do than killfile
spammers all day.
Archived setup to unused_init.el.
*** DONE wl
- State "DONE" [2009-07-17 Fri 11:03]
- State "STARTED" [2009-07-17 Fri 10:36]
Considerably better than Gnus, but a bit heavy on the dependencies.
A few basic keybindings for quick reference:
f6 - wl
w - new mail
C-c C-c send in compose mode
s - update summary
a - reply w/o citation
A - reply w/ citation
D - mark for delete
x - execute mark actions
Only weird thing is that in testing, it seemed to generate a lot of junk
messages (drafts?) when sending that only show up on the Gmail side. May want
to start using BBDB later for an address book.
Overall, wl seems pretty good, but mutt still might be a little better. Will
use as main MUA for awhile.
*** CANCELED JDEE
- State "CANCELED" [2009-07-17 Fri 09:44]
Got this working, but deprecated it from .emacs since no longer working on any
java projects. If revisiting, look into a minor annoyance of bsh shell buffers
auto-creation at init (would prefer they only auto-create at jde start).
Archived setup to unused_init.el.
*** CANCELED BeanShell
- State "CANCELED" [2010-2009-07-17 Fri 09:47]
Like with JDEE, deprecating since no longer writing any java.
*** DONE newsticker.el
- State "DONE" [2009-07-17 Fri 11:21]
- State "STARTED" [2009-07-17 Fri 01:47]
Works with all feed protocols, unlike Gnus (which does, but requires a lot of
config and addons). Migrated some more often updated Google reader feeds over
to ~/.emacs.d/newsticker-feeds.el.
Is rather CPU heavy at startup considering what it does. Might want to check
out newsbeuter which is probably more light-weight.
Update: Replaced with newsbeuter.
*** DONE gv
- State "DONE" [2009-07-18 Sat 08:49]
- State "STARTED" [2009-07-17 Fri 11:28]
Seemed promising as an xpdf replacement but has a bloaty UI and pops up
retarded modal error dialogs.
Update: Tried mgv, which was completely broken. gsview is slightly better, but
the print dialog is screwed up. I guess xpdf really is the best PDF reader man
is capable of creating.
*** DONE nXML-mode
- State "DONE" [2009-07-18 Sat 08:53]
- State "STARTED" [2009-06-19 Fri 16:16]
Definitely better than xml-mode, mostly for syntax highlighting. C-c C-f saves
a lot of typing by auto-closing elements.
*** DONE gtags
- State "DONE" [2009-07-18 Sat 12:41]
- State "STARTED" [2009-07-18 Sat 12:37]
Did setup for C. Might want to look into C++, yacc, Java, and PHP4 later,
which are also supported. Unlike ctags/etags, gtags can list the references to
a symbol, not just its definition.
Some notes:
- Create a folder for C project and start creating source files in it. Then,
run gtags -v in that folder which will generate various G-files.
- When looking for the definition of a function, run M-x gtags-find-tag and
type in the func name (will auto-populate if in that function call's scope)
and it will navigate to the definition.
- To enable auto completion of function names\symbols etc: M-x
gtags-make-complete-list
- To locate a function: M-x gtags-find-tag function_name
- If more than one is found a stack is returned. Select one and hit RET. In
order to get the stack: M-x gtags-pop-stack
- To find a symbol: M-x gtags-find-symbol m_myVar
- To find a string: M-x gtags-find-with-grep "gtags rules"
*** DONE elscreen-w3m
- State "DONE" [2009-07-18 Sat 21:48]
There's some elscreen addons available for various major modes. Only using
the w3m one for now.
*** DONE ddclient
- State "DONE" [2009-07-21 Tue 12:54]
Added ddclient. Configged in /usr/local/etc/ddclient.conf using:
http://www.dyndns.com/support/kb/using_ddclient_with_dyndns_services.html
Now I won't have to manually refresh my DynDNS redirection IP every few
months.
*** DONE dired
- State "DONE" [2009-07-22 Wed 13:50]
- State "STARTED" [2009-07-22 Wed 10:40]
Read dired sections of Emacs manual. After using dired for awhile, it's
definitely better than an explorer/mc-like file manager, but I still find it
less useful than a shell. Some comments/notes:
- Operations on specific dir contents can be wildcard-globbed at open (and
later).
- Can quickly sort a dir by date (though ls -tl is still better if that's all I
want to do).
- OK for navigating a project dir full of files that I'm jumping around in
(though ecb is probably better for this).
- C-_ works, but only for mark operations.
- C-x 4 d will open dired in another window
- Made a list of commands in ~/doc/dired_commands.txt
- It's possible to do a recursive display by setq-ing dired-listing-switches to
include an -R flag, but seems kind of inconvenient. See (describe-variable
'dired-listing-switches).
For future consideration: x-dired, wdired.
*** DONE Muse
- State "DONE" [2009-07-22 Wed 16:03]
- State "STARTED" [2009-07-22 Wed 13:52]
Evaluated. Muse is a reasonably nice add-on that I'll keep around for times
when I might want to toss together a quick doc that I wanted multiple output
formats for. Like, it might be great for documenting software or making
manuals. However, I don't want to switch to it for general web publishing for
the following reasons:
- Instead of writing in HTML, I would have to write in a simplified wiki-like
markup some of the time, and Muse would infer what markup I'd want the rest
of the time based on things like indenting and such.
- Muse format offers reduced fine-grain control of output.
- I would still have to keep in mind what output markup Muse was going to
convert anything to, which is just replacing one annoyance with another.
- I'd waste days rewriting existing pages into .muse files and tweaking them to
generate the same output I already have. In fact, generating that output
just the way I want as it is now might not even be possible.
- Adds another layer of complexity to web publishing without enough return to
justify it. What if I'm outside of my trusty Emacs environment and just want
to make a quick page edit with vi?
- Normal Emacs already grants me a lot of functionality for HTML editing that
make it almost painless. Thus, there's not really much of a problem to
solve.
- Muse has its own ideas about dynamically generated content that might not
match or become an obstacle to any CGI ideas I might have in the future.
Basic setup is in .emacs. If I want to make a project for something, add code
like this:
(setq muse-project-alist
'(("website" ("~/Pages" :default "index")
(:base "html" :path "~/public_html")
(:base "pdf" :path "~/public_html/pdf"))))
*** DONE Calc on Emacs
- State "DONE" [2009-07-23 Thu 15:28]
- State "STARTED" [2009-07-22 Wed 16:36]
Calc definitely isn't user-friendly (except maybe to forth and factor
programmers.) It seems to make up for it in accessible math power once you get
over the rather large learning curve. Having calc be second nature will be a
matter of using it for years, but now I have a hang of the basics and can
easily find additional functionality as needed.
Some great things I'll try to use calc for from now on:
- Verifying answers received from various programming book exercises.
- Datetime arithmetic, instead of writing programs that import date libs.
- Financial calculations, instead of hand-coding these in python or scheme.
- Calculations in org-mode tables.
- Will be handy for using when working on analytical math books.
- Various import (grab) commands. Whenever I want to xfer data into calc I
already have in a file, always look for an import function first.
- Matrix math for any future graphics programming or practicing linear algebra.
- Binary arithmetic like bit-wise operations, something I need to make more use
of in C apps. Also exports to LaTeX and other stuff too.
- It's possible to convert equations and solutions directly to C code. Making
use of this will save a ton of time whenever programming math in C (or other
languages, since converting from C to most other languages is trivial).
- Lots more. Basically, if it's analytical math-related, check here first.
Notes:
- Use h s to display a keymap and isearch for whatever I want. In fact, h
commands are pretty much a necessity given all the functionality calc has
(some 750+ functions according to the keymap).
- Calc can output graph info to Gnuplot. Probably no pressing need to set this
up right now, but keep in mind if needed later. Might be handy for graphing
financial data at some point or as a graphing calculator replacement.
*** DONE Maxima
- State "DONE" [2009-07-23 Thu 16:59]
- State "STARTED" [2009-07-22 Wed 16:23]
Looks like Maxima has some annoying deps (tcl, tk), so might want to install
this on Linux only. Might be worth it if I can get LaTeX rendering in Emacs
though.
For Emacs integration, see:
http://www.emacswiki.org/emacs/init-maxima.el
or with full uber LaTeX rendering:
http://members3.jcom.home.ne.jp/imaxima/Site/Welcome.html
Update: Crapped a huge mess over my Linux fs, none of the included docs have
accurate info on how to integrate with Emacs (init-maxima broken), the elisp
files supposedly included in the port are missing, imaxima source build is
non-functional, and using from CLI memory leaks and segfaults sometimes.
Giving up on this app for now as a result. Will stick with Emacs calc mainly
and sometimes Mathcad on Windows until I find something better or wait ~2 years
and try again here.
Update: Got this working. See Maxima (revisited) task.
*** DONE irssi scripts
- State "DONE" [2009-07-23 Thu 20:59]
- State "STARTED" [2009-07-23 Thu 20:21]
Went through the main collection of available add-on scripts. Most were
garbage.
Notes:
- Put scripts to load manually with `script load' in ~/.irssi/scripts.
- Put scripts to load automatically in ~/.irssi/scripts/autorun
Added to autorun:
- autorejoin.pl: Automatically rejoin to channel after kick, after a (short)
user-defined delay.
- keepnick.pl: Try to get your nick back when it becomes available.
*** DONE DDD
- State "DONE" [2009-07-26 Sun 12:02]
- State "STARTED" [2009-07-25 Sat 16:50]
Seems like a standard graphical debugger + a GDB CLI. Much better than xxgdb.
Will use some for now, but probably should force myself to use GDB from within
Emacs instead since I can use that from a remote terminal too.
*** DONE zsh
- State "DONE" [2009-08-03 Mon 01:51]
Read most of the zsh manual to see if there was any features I wasn't aware of,
which only uncovered a few minor things. Skipping zsh shell scripting for now.
Notes:
- If a pipeline is preceded by `coproc', it is executed as a coprocess; a
two-way pipe is established between it and the parent shell. The shell can
read from or write to the coprocess by means of the `>&p' and `<&p'
redirection operators or with `print -p' and `read -p'. A pipeline cannot be
preceded by both `coproc' and `!'. If job control is active, the coprocess
can be treated in other than input and output as an ordinary background job.
- End coproc with `coproc exit'.
*** CANCELED PowerShell
- State "CANCELED" [2009-08-06 Tue 12:43]
Closing, having decided to not bother with this for now (object-oriented
pipelines? Yawn.), but might reschedule this next year or something. If I
want to learn a shell scripting language sh or zsh is probably a better use of
time. I don't really have any win32 tasks I need to automate anyway and what
little I do know of PowerShell includes many shortcomings (lacking redirection
operators, crappy CMD.exe-style tab-completion, flags can't be combined, etc).
*** DONE Swank
- State "DONE" [2009-08-07 Fri 13:08]
Got working on Linux, but didn't attempt from Windows. See setup details in
~/.sbclrc.
*** DONE bitlbee
- State "DONE" [2009-08-07 Fri 14:58]
- State "STARTED" [2009-08-07 Fri 13:54]
Replaced Pidgin with this. Using a remote server so as not to muck up the
system with a bunch of crapware. Checked out irssi bitlbee scripts but didn't
see anything too useful.
NOTES:
- Using official server, to start up, do: /connect im.bitlbee.org
- Initialize MSN account with `identify <password>'.
- Use `set strip_html true' if someone's ghey client starts spamming markup.
- Stop using IM altogether around mid-2010.
- To use multiple IM accounts with it, like say one MSN and one Yahoo account,
connect, identify, then add both accounts. `account list' will show the
accounts. Then use `account 0 on', for example, to turn on account 0.
*** DONE LLVM
- State "DONE" [2009-08-10 Mon 16:04]
- State "STARTED" [2009-08-07 Fri 15:54]
LLVM will probably one day replace gcc, and is currently better at just about
everything it attempts to replace in the gcc toolchain. It's also going to be
the base compiler for FreeBSD 8.0 (update: didn't happen), so might as well get
friendly with it.
NOTES:
- llvm port installs llvm toolchain. llvm-gcc4 installs gcc/g++ replacement.
*** DONE Cygwin/win64 Emacs integration
- State "DONE" [2009-08-10 Mon 23:05]
- State "STARTED" [2009-07-18 Sat 13:17]
Win64 breaks a lot more than used to be broken in win32, but some things are
still fixable (or are stuff I never bothered setting up ever). At least the
following are non-functional on Windows box currently:
- TRAMP: Maybe use Cygwin ssh.
- w3m: This is also breaking newsticker.
- elscreen: No clue here.
- EMMS: Needs mplayer.
- gnuserv: Need to install this, but work machine will need to disable.
- SWANK: Probably because using an ssh tunnel and there's no ssh client.
- gtags: Need GNU Global and a reference to gtags.el.
- run-scheme: REPL non-functional. Apparently not fixable.
- AUCTeX: Requires a GNU toolchain to compile.
Added Emacs explorer integration with:
[HKEY_CLASSES_ROOT\*\shell\openwemacs]
@=&Edit with Emacs
[HKEY_CLASSES_ROOT\*\shell\openwemacs\command]
@=Absolute\Path\to\your\emacs\bin\emacsclientw.exe -n "%1"
Update: Installed Cygwin openssh, but w32 Emacs hangs when trying to use
ssh/scp binaries (TRAMP manual indicates might not be possible with stock v22).
Installed Cygwin w3m, but w32 Emacs doesn't include w3m.el. However, installed
mingw mplayer and got EMMS working. Absolute full integration isn't possible
obviously, and Windows will always be a second-best platform for the stuff I
want to use a computer for. This subset of functionality is acceptable, but no
TRAMP is kinda teh sux.
*** DONE LaTeX
- State "DONE" [2009-08-15 Sat 20:00]
- State "STARTED" [2009-07-18 Sat 10:27]
Installed AUCTeX from ports (and apt-get on Linux), since it has a lot of deps
and an info file. Also put MiKTeX and TeXniCenter on Windows. It's possible
to get AUCTeX working on Windows, but it's a huge pain and not even remotely
worth the effort.
Read most of the AUCTeX info file, did some additional .emacs configuration for
it, worked through an online LaTeX tutorial ("Getting Started with LaTeX",
which was pretty good), created a practice file (latex_notes.tex), using the
book "Math Into LaTeX" as a reference for more complex mathematical notation.
Notes:
- Compile with C-c C-c. If there are errors, use C-c ` to view. Keep using
C-c ` to go to subsequent errors.
- To convert LaTeX to PDF, just run `latex file.tex' from CLI, or change output
with pdflatex by toggling between DVI and PDF with C-c C-t C-p.
- AUCTeX has a massive number of keybindings. Some of these, like C-c C-f,
group a category of TeX tags. Mashing a random key after the group prefix
will show a list of completions.
- After compiling, look at the log to see if there were any style warnings, or
use C-c C-w to toggle warnings on.
- See latexsheet.pdf for a quick reference of LaTeX commands.
- To preview within Emacs, use a preview command like preview-buffer (C-c C-p
C-b). When done looking at it, clear the preview with
preview-clearout-buffer (C-c C-p C-c C-b).
- For looking up TeX characters, use C-h I or describe-input-method tex.
AUCTeX and LaTeX in general are quite amazing. Should have mastered at least
LaTeX way back in undergrad.  Redo
resume in LaTeX when I get around to it.
*** DONE CUPS
- State "DONE" [2009-08-16 Sun 15:59]
- State "STARTED" [2009-08-16 Sun 14:55]
Got HL-5240 postscript driver working with CUPS. Steps documented here so I
know what to do next time.
Install notes:
- Install cups, cups-client, gutenprint (without gimp-print drivers), and
foomatic-filters.
- Create /etc/devfs.rules with the following, which sets the permissions and
associates print devices with the cups group:
[system=10]
add path 'unlpt*' mode 0660 group cups
add path 'ulpt*' mode 0660 group cups
add path 'lpt*' mode 0660 group cups
- Add root and other users to cups group in /etc/group
- Enable CUPS and the above rules at startup by adding these lines to
/etc/rc.conf:
cupsd_enable="YES"
devfs_system_ruleset="system"
- In order to enable CUPS printing under certain Windows clients, the line
below should be uncommented in /usr/local/etc/cups/mime.types and
/usr/local/etc/cups/mime.convs:
application/octet-stream
- Either reboot or issue the following commands:
> /etc/rc.d/devfs restart
> /usr/local/etc/rc.d/cupsd restart
- Config printers via the CUPS web interface by going to: http://localhost:631
- Go to Administration|Add Printer, type in names, select USB printer 1,
specify Brother-HL-5240-Postscript.ppd file from the local filesystem. Use
root l/p when asked for a login.
- Set US Letter, no double siding, 600dpi, no banners.
- On Windows, just add a network printer (should find it automatically).
Search for driver, install Brother HL-5420 BR-Script3.
Looks pretty good. Retired dot matrix printer as a result.
*** DONE GDB
- State "DONE" [2009-08-19 Wed 14:41]
GDB has a ton of features. Research here is limited to getting many-windows
mode working in Emacs, and establishing a workflow for C/C++ debugging. Used
http://sourceware.org/gdb/current/onlinedocs/gdb_toc.html as a reference.
An example debug session:
- Do gtags setup, load source file, hit <F5> and specify gcc or make with
appropriate flags, including -g for debug symbols.
- Run M-x gdb against output file.
- Run M-x gdb-many-windows to flag many-windows as on.
- In gdb window, load symbols with `file <output filename>'.
- Use C-x <SPACE> in the source window to insert a breakpoint. Alternatively,
use `break <function name>' in GDB to set a breakpoint at a function entry
point by name.
- In GDB, enter `r' to being running. Include CLI parameters here if needed.
Now the local vars, stack frames (same as `bt'), breakpoints, and other
helpful info is visible.
- Use something like `set variable f = 0' or `p foo = 0' to evaluate
expressions at runtime.
- Use `s' to step into, `n' to evaluate next in current scope.
- Use `c' to continue.
- Use `up' (C-x C-a <) and `down' (C-x C-a >) to navigate the call stack.
- Use M-x gdb-restore-windows if something munges the window layout.
- Check Gud menu for full list of commands.
Other actions:
- If compilation errors are encountered, use C-x ` to go to next error.
- Use M-! to execute the binary in normal mode and view output in a buffer.
- Start gdb with a core file with something like `gdb prog prog.core'.
- Attach GDB to a process with `gdb prog <PID>'.
- gdbserver can be used for remote debugging.
*** DONE BibTeX
- State "DONE" [2009-08-20 Thu 10:40]
- State "STARTED" [2009-08-20 Thu 09:19]
BibTeX is a better way to manage references within documents than just using
built-in LaTeX citations. It also saves a ton of time by just grabbing the
BibTeX block for a cited work. Read this and created a practice document using
external BibTeX references (bibtex_notes.tex):
http://en.wikibooks.org/wiki/LaTeX/Bibliography_Management
Notes:
- Including URLs in citations requires \usepackage{url} in the using document's
preamble.
- Google Scholar is pretty handy for BibTeX searching for non-journal sources.
Select "Show links to import citations into BibTeX" in Scholar Preferences.
For non-scientific papers, CiteULike seems decent.
*** DONE FreeBSD CPU scaling
- State "DONE" [2009-08-20 Thu 23:17]
- State "STARTED" [2009-08-20 Thu 22:45]
Added the following to /etc/rc.conf:
powerd_enable="YES"
powerd_flags="-i 85 -r 60 -p 100"
Previously:
dev.cpu.0.freq: 2333
With scaling:
dev.cpu.0.freq: 750
Costs about 1MB of resident memory to run powerd, but should save around 50% of
the power used by the CPU. Also lowers the running temperature to around 28C.
Ran naive Fibonacci in Lisp with a large n and confirmed the CPU does scale up
to max as needed.
Update: Not using this on new workstation, since the Atom n270 already only
uses 4W while pegged. Thus, the (idle clock cycles saved) - (cycles consumed
by powerd polling) would end up with a minuscule net benefit.
*** DONE GnuPG
- State "DONE" [2009-08-29 Sat 12:49]
- State "STARTED" [2009-08-29 Sat 12:10]
Get this working with wl. Being paranoid already, encrypting all my email
should fit into my lifestyle well. Requires MailCrypt.
http://box.matto.nl/wanderlustgpg.html
Also use this to encrypt all archived data. Check out this (also requires
MailCrypt) to work with .gpg files:
http://www.emacswiki.org/emacs/mc-gpg-file-mode.el
Finally, go through ~/.gnupg/gpg.conf and take a look at all the options or
consult manual for choosing desired settings.
Update: Canceling above tasks for now, since the FreeBSD ports version of
MailCrypt deps Emacs 21.3 and it doesn't look like anyone is going to fix that
anytime soon. In the meantime, got GPG working from the shell, which is
slightly less convenient than editing encrypted files in place.
NOTES:
- GPG CLI requires pinentry. On FreeBSD, this comes in various flavors, and
curses mode is the least annoying. Install ports/security/pinentry-curses.
- To encrypt files into binary goo, use `gpg -c filename'.
- To encrypt files into ASCII, use `gpg -c -a filename'.
- To decrypt files, use `gpg -o outfile infile.gpg'. By default, the outfile
created during encryption retains its original filename and is appended with
.gpg or .asc. This works on both encryption output types.
*** DONE SQL Server 2008
- State "DONE" [2009-08-31 Mon 20:23]
- State "STARTED" [2009-08-31 Mon 22:13]
Installed, upgraded to SP1, and disabled in services so it doesn't waste a ton
of clock cycles during normal use. Needed an install of this for the SSIS,
SSAS, SSRS reading and for the work-related SQL Server proficiency upgrade.
NOTES:
- Looks like the next version of SQL Server won't be out until 2011, so might
as well use 2008. 2k8r2 is scheduled for first half of 2010.
- When enabling, don't bother activating the Browser, Integration Services, and
SQL Agent, unless specifically doing something with these.
*** DONE SSIS, SSAS, SSRS
- State "DONE" [2009-09-01 Tue 02:14]
- State "STARTED" [2009-08-31 Mon 22:22]
On the recommendation of the DBA at work, did a half-assed investigation of
these technologies, attempting to read the relevant chapters in "SQL Server
2005 Administrator's Companion". See comments on book above.
 These are basically just data transfer/analysis/reporting
methods that have their details abstracted away from you in a CMS-like manner.
I knew being an SQL Server DBA was ghey, but I had no idea how ghey until now.
*** DONE Selective ports-supfile
- State "DONE" [2009-09-01 Tue 11:00]
- State "STARTED" [2009-09-01 Tue 10:11]
Created a new supfile called ports-supfile-selected that excludes all the
garbage from branches I don't care about. Saves about 10MB of disk, but
doesn't do anything about the massive INDEX files portsdb grabs. However,
keeps port searches clean of useless results and speeds up updates.
NOTES:
- Excluded: arabic, french, german, hebrew, hungarian, korean, mbone, palm,
polish, portuguese, russian, ukrainian, vietnamese.
- Edited root's up_ports script to call the new supfile.
- Note that this causes problems with doing a `make clean' from /usr/ports.
*** DONE Emacs printing on FreeBSD
- State "DONE" [2009-09-03 Thu 18:21]
- State "STARTED" [2009-09-03 Thu 18:08]
Emacs was sending print output to lpr, but my printer is only accessible
through CUPS. This fixes that.
- Installed print/xpp (a minimal fltk print dialog).
- Added a remapping of lpr-command to xpp in .emacs.
- Since I use a dark theme and don't have a color printer, if printing as
postscript, use the B+W filter (M-x ps-print-buffer).
*** DONE IIS on 2k8
- State "DONE" [2009-09-03 Thu 20:58]
- State "STARTED" [2009-09-03 Thu 20:27]
Installed IIS and dependencies. Copied over backup of main and personal site
to wwwroot. Now when I need to take cellblock down for a few hours to replace
hardware, just redirect HTTP requests there. Will be missing some content, but
since this is just a backup site, it's no big deal.
*** DONE asdf-install, mk-defsystem
- State "DONE" [2009-09-05 Sat 10:01]
- State "STARTED" [2009-08-10 Mon 15:58]
Will need to revisit ASDF later for making my own build systems. This task is
just on the end-user side for now. ASDF is already included in SBCL.
asdf-install: http://www.cliki.net/ASDF-Install
mk-defsystem: http://www.cliki.net/mk-defsystem
asdf-install notes:
- Install: (asdf-install:install 'vecto)
- Load a package already installed: (asdf:oos 'asdf:load-op :vecto), or in SBCL
just: (require :vecto)
- To asdf-install while ignoring security, add this to /.asdf-install:
(defparameter ASDF-INSTALL-CUSTOMIZE::*VERIFY-GPG-SIGNATURES* nil)
- Otherwise, grab the developer's public key off their site and add it to the
gpg public keyring with: gpg --import pubkey.asc
- List of asdf-installable pkgs on asdf-install CLiki site.
- asdf:*CENTRAL-REGISTRY* stores location of local registry. Currently mapped
to ~/.sbcl/asdf-registry.
- See ~/.sbcl/systems for a list of installed packages. Multiple versions
defsystem in the same .asd file and correspond to different sub-directories
in ~/.sbcl/site.
- Use M-x slime-apropos-package to list all external symbols in a package.
- Use an installed and loaded package: (use-package :vecto)
- Additional asdf-upgrade package can keep packages up to date. Doing this
manually for now.
mk-defsystem notes:
- Can install mk-defsystem via ASDF, which saves some manual labor.
- Modify .sbclrc (see file for contents).
- Grab tarball of system to install, and extract it in ~/cl-library.
- Symlink the .system file to the cl-library parent directory, with something
like `ln -s ~/cl-library/cl-ppcre-0.4.0/cl-ppcre.system
~/cl-library/cl-ppcre.system'.
- Start up SBCL and load with: (mk:find-system :cl-ppcre)
- Then compile with: (mk:oos :cl-ppcre :compile)
- Then load with: (mk:oos :cl-ppcre :load)
asdf-install is considerably more advanced and less error-prone than
mk-defsystem, so use that when possible. XCVB is an in-development potential
replacement for ASDF, but ASDF is still the current standard.
*** DONE LispWorks Personal Edition
- State "DONE" [2009-09-05 Sat 14:36]
- State "STARTED" [2009-09-05 Sat 13:58]
Installed this just to compare commercial Lisp IDEs to Emacs+SLIME. Probably
won't use this for anything, but this and Allegro CL are semi-popular in
industry. Only checked out the Windows port, but there's one for Linux and
FreeBSD as well.
 Only fixedsys is
reasonably bearable and looking at that all day would get old fast.
- Has some nice tools easily accessible, like: various browsers, a shell window,
multiple listeners, tracer, profiler, metadata breakpoints.
- Compilation output gives some useful code metrics, something I haven't seen a
free implementation do.
- Has some Emacs keybindings, but still have to use the mouse for a lot of
stuff, especially managing all the MDI windows.
- Doesn't auto-format code like Emacs and syntax-highlighting isn't as nice.
- Be sure not to leave any unsaved code open in LispWorks overnight, since this
edition shuts down automatically after 5 hours.
I prefer my current Emacs+SLIME setup for the kind of Lisping I do by a large
margin, but since LispWorks supports a lot of enterprise-grade features and
doesn't require weeks of tweaking or the memorization of thousands of key
sequences, it can make sense in a commercial setting.
*** DONE umass
- State "DONE" [2009-09-10 Thu 02:14]
- State "STARTED" [2009-09-10 Thu 01:50]
Notes:
- vfs.usermount change requires devfs.system.ruleset change to "localrules",
which conflicts with CUPS, so leaving umass mount to root.
- `camcontrol devlist' lists attached umass devices.
- Mount with something like `mount -t msdosfs /dev/da0s1 /mnt/umass'.
Grants about 40MB/s transfer rate. Once USB flash drives reduce in price a bit
more, grab a couple of 32GB or 64GB drives and use one for backup and one for
main offline storage. Might want to ufs-format them instead of the default
msdosfs, assuming I won't need to mount them outside of FreeBSD.
*** DONE FLAC+mplayer
- State "DONE" [2009-09-12 Sat 15:17]
- State "STARTED" [2009-09-08 Tue 11:06]
Installed audio/flac. Thought I'd have to do some manual config, but mplayer
on CLI and in EMMS work out of the box.
*** DONE Conkeror
- State "DONE" [2009-09-15 Tue 14:55]
- State "STARTED" [2009-09-09 Wed 21:23]
Since FF2 on FreeBSD is now unsupported with open security holes and FF3 is
unacceptably bloated, switching to Conkeror for a GUI web client. I'll miss
Vimperator, but after the initial setup, Conkeror is better overall (uses Emacs
keybindings, fewer package dependencies, easier to migrate config, etc).
Notes:
- Post-install setup: Reads .conkerorrc on FreeBSD, but on Windows, the %HOME%
environmental variable isn't read. So, put rc file somewhere and run: M-:
user_pref("conkeror.rcfile", "c:\\path\\to\\conkerorrc");
- Adblock Plus:
- Grab Adblock Plus xpi from adblockplus.org.
- Run M-x extensions and install the xpi manually.
- Then restart, go to the extension's options and add a filter subscription.
- Customized "blackened" theme:
- Put a copy in ~/.conkeror.mozdev.org/blackened on FreeBSD and
C:\bm3719\bin\conkeror\style\blackened on Windows.
- Edit minibuffer.css and change background-color of minibuffer element to
AAA and color to black. The default scheme makes input text unreadable.
- Archived a tarball of this to ~/doc/misc/blackened.tar.
- Webjumps by default are a bit of a mess:
- In define_default_webjumps in /usr/local/share/conkeror/modules/webjump.js,
comment out all except scholar, dictionary, clhs, emacswiki, cliki.
- In /usr/local/share/conkeror/search-engines, delete answers,
creativecommons, mozilla-bugzilla, yahoo.
- Can type the minimally-distinct substring of webjump instead of full name.
- Added Amazon, Google Finance, Hoogle, FreeBSD Ports webjumps to rc.
- Created rc file with lots more custom stuff. Edit this when moving between
systems since it has a static pathname for the theme/start page, and there's
no function to check the OS type. Apart from that, should be fully portable.
- Some non-Emacs-based commands:
- C-x C-v or G: Edit existing URL.
- M-w: Copy selected text.
- [nime*][sc]: Save/copy link/image/frame/media/DOM prefix (0 for current
page). See content-buffer/element.js for full list.
- C-i: Calls edit-current-field-in-external-editor when on a textfield.
- M-x view-source: Open source in $EDITOR.
- See full bindings in modules/bindings/defaults.
- In minibuffer.prototype.read_yes_or_n in modules/minibuffer-read-option.js,
add "y" and "n" the options array and an or-conditional for result == "y".
This fixes the whole typing "yes" and "no" thing on download overwrites.
- Bookmarks: Just using lynx bookmarks as a start page for now. Revisit this
later if Conkeror gets additional bookmark support.
- Maybe add password management later, but probably shouldn't since xulrunner
stores these in a text file.
Update: Adding MozRepl installation.
- Grab mozrepl.xpi from http://repo.hyperstruct.net/mozrepl/ and install with
M-x extensions.
- Added config to .conkerorrc. Make sure it's there.
- Run M-: user_pref('extensions.mozrepl.autoStart', true);
- Make sure that .mozrepl.js is in ~.
- Restart Conkeror.
*** DONE portmanager
- State "DONE" [2009-09-16 Wed 15:14]
- State "STARTED" [2009-09-16 Wed 11:08]
Generally, I think portupgrade is a better management utility than portmanager
when having a ton of installed ports, but since mine tends to be around 350 or
so, portmanager is almost as useful and doesn't require a Ruby backend. Also
can detect pkgs built with stale deps. It does get slower proportional to
number of ports installed, since it has to recollect port info every time.
Examples:
- List outdated ports: portmanager -s | grep OLD
- Full upgrade with logging: portmanager -u -l
- Upgrades everything except nedit,open office and their dependencies:
portmanager -u -ip editors/nedit editors/openoffice
- Upgrade gnome2 and its dependencies with logging enabled: portmanager
x11/gnome2 -l
- Rebuild gnome2 and its dependencies: portmanager x11/gnome2 -l -f
- Show leaf ports (ports without dependencies upon them): portmanager -sl
Uninstalled portupgrade and modified /root/bin/up_ports script.
*** CANCELED cdrtools
- State "CANCELED" [2009-09-16 Wed 16:57]
Come up with a working set of commands and flags for creating audio CDs
(cdrecord), data CDs/DVDs (dvd+rw-tools?), and ISO images (mkisofs). Just
document the commands so I can blindly run them when needed. Need to buy some
blank CDs first.
Update: Canceling this and uninstalling these apps for the following reasons:
- Haven't created an audio CD in like 8 years and can't imagine wanting to.
- No longer backing up data to DVDs.
- ISOs can be mounted with something like:
mdconfig -a -t vnode -f /path/to/file.iso -u 0
mount -t cd9660 /dev/md0 /mnt/iso
- It's possible to install FreeBSD from an image on a USB stick now.
Won't be buying optical drives on computers from now on either.
*** DONE Update fonts
- State "DONE" [2009-09-17 Thu 00:36]
- State "STARTED" [2009-09-16 Wed 14:52]
Been staring at misc-fixed on BSD and Courier New on Windows for the last 12
years or more. Updating fonts worked pretty well on Windows, but it looks like
decent fonts support is still pretty lame on Unix-variants, at least in the
apps I use.
Inconsolata on FreeBSD:
- Install x11-fonts/inconsolata-ttf (called ttf-inconsolata on Linux).
- Add `/usr/local/lib/X11/fonts/OTF/' to the FontPath in xorg.conf.
- Run mkfontdir and mkfontscale in the OTF directory if the fonts don't already
show up in the fonts.dir and fonts.scale files.
- Add a `xset fp+ /usr/local/lib/X11/fonts/OTF' to .xinitrc.
- Check xfontsel to see if inconsolata shows up (restart X or do a xrdb -merge
.Xdefaults).
- Enabled for gvim, but Emacs doesn't support anti-aliased fonts in 22.3. Will
have to wait until 23.1 is out. Tried in urxvt, but too blurry for me.
Terminus on FreeBSD:
- Using in Emacs and urxvt.
- Useful for monospace Unicode support.
- Add /usr/local/lib/X11/fonts/terminus-font to FontPath in xorg.conf.
Code2000 on FreeBSD:
- Picks up everything else missed by the above.
- Conkeror includes this as a backup font in most obscure Unicode ranges.
Consolas on Windows:
- Archived a copy of Consolas in C:\bm3719\doc\fonts.

- Need to install fonts on Windows 2k8 via Control Panel|Fonts.
- Using in w32 Emacs, MSVS, gvim, PuTTY, and SecureCRT.
*** DONE ports make flags
- State "DONE" [2009-09-18 Fri 10:39]
- State "STARTED" [2009-09-18 Fri 10:12]
Instead of trying to remember which make flags I prefer on each port, then
manually typing in each -DWITH_SOME_FLAG argument, created a collection of
system-wide make settings to manage these.
Example:
- Edit /etc/make.conf to include the following:
.if ${.CURDIR:M*/usr/ports*}
.include "/etc/ports.conf"
.endif
- Create/edit /etc/ports.conf, adding entries like this:
.if ${.CURDIR:M*/www/apache*}
WITH_OPENSSL_BASE=1
APACHE_BUFFERED_LOGS=1
.endif
- This example effectively adds -DWITH_OPENSSL_BASE -DAPACHE_BUFFERED_LOGS when
make is called under the apache port dir.
*** DONE lighttpd, FastCGI
- State "DONE" [2009-09-23 Wed 08:24]
- State "STARTED" [2009-09-22 Tue 09:52]
Replaced Apache and mod_perl with this.
Notes:
- Installing with spawn-fcgi pulls in this port automatically.
- Add lighttpd_enable="YES" to /etc/rc.conf.
- Edit /usr/local/etc/lighttpd.conf, enable mod_fastcgi, mod_userdir, and
mod_cgi along with their corresponding sections. See current conf file for
the full changes.
- If starting from CLI, use `/usr/local/etc/rc.d/lighttpd start'.
- Requires properly owned error and access logfiles, so run:
cd /var/log; touch lighttpd.error.log; chown www:www lighttpd.error.log;
touch lighttpd.access.log; chown www:www lighttpd.access.log;
- mod_fastcgi requires `mkdir /var/run/lighttpd; chown www:www
/var/run/lighttpd;'.
- Updated ~/bin/logcheck script.
- For PHP support, recompile lang/php5 with FastCGI extensions and set php-cgi
binary to fastcgi.server's bin-path.
Memory footprint much smaller than with Apache 1.3.x.x. Later on, check out
Haskell/Lisp mods, setup/install darcs_cgi, find a replacement for mimeTeX
which deps Apache (maybe just do this manually with www/textogif).
*** DONE cellblock hardware upgrade
- State "DONE" [2009-11-24 Tue 13:49]
- State "STARTED" [2009-11-13 Fri 14:26]
Finished construction of a custom m-ITX PC with no moving parts. According to
benchmarks on silentpcreview.com, their version maxes out at 18W and runs
normally at 11W, but that's with a pegged GPU, wireless networking, and a
standard HD. Estimating mine should be 3-4W less though I don't have a
watt-meter to confirm. Should be able to stick with this exact hardware until
i386 is abandoned by most developers.
Hardware used:
- Intel D945GSEJT m-ITX motherboard ($109).
- OCZ Vertex Series OCZSSD2-1VTX30G SSD ($165).
- SUPER TALENT 2GB 200-Pin DDR2 SO-DIMM DDR2 800 RAM ($47).
- Morex T-1610 case ($65)
Observations:
- Can't use VESA mount with Dell monitors, so using the vertical stand.
- The power switch doesn't lock in the on position, and should have probably
been a button instead. Still works fine though.
- Would be nice to have a front USB port for thumb drives.
- Front power LED on my case is non-functional.
- Apart from all of that, works great and is completely silent.
*** DONE portaudit
- State "DONE" [2009-11-27 Fri 13:44]
- State "STARTED" [2009-11-26 Thu 16:37]
Used to use this, but got lazy. portaudit integrates into your daily system
scan automagically, so there's little setup apart from install.
- Update the portaudit database manually: portaudit -Fd
- List all known vulnerabilities for installed software: portaudit -a
*** DONE update FreeBSD to 8.0
- State "DONE" [2009-11-27 Fri 21:12]
- State "STARTED" [2009-11-24 Tue 13:52]
Instead of source upgrading as normal, started over from scratch since it's a
new disk. Sticking with i386 version since the Atom N270 is a single-core,
32-bit instruction set CPU.
Notes:
- FreeBSD 8 now distributes a USB drive image, so using that.
- Managed to cut down my installed packages by about 50.
- Documented process in fbsd_setup.org to make future installs easier.
- Would have hoped Emacs 23 was out of -devel by now, but didn't make it in
time, so will stick with 22.3 for now.
- Using cabal to only install stuff at the per-user level.
- All development environments configured and fully operational.
- Xorg actually runs smoother with this crappy integrated 945GME, probably due
to Intel driver being better than the nv one.
- Generic kernel: 11492703, custom kernel: 6688090.
- Boots pretty fast, and with network services running, uses about 20MB active
memory.
- Fixed all setup mistakes made last time around.
Basically this is about as perfect a setup as I can imagine. Shouldn't need to
upgrade any of these parts for many years.
*** CANCELED VS2k8 database edition + GDR
- State "CANCELED" [2009-11-30 Mon 06:06]
Update from VS2k8sp1. Or just wait for VS2010.
Update: Closing since I'm using VS2010 RCs. Will still need to install the
final version when released, but either way, this task is now N/A.
*** DONE Egg
- State "DONE" [2009-11-30 Mon 13:52]
- State "STARTED" [2009-11-30 Mon 12:59]
Looks like git is winning the repo game, so probably should learn how to
interact with it in Emacs. Took a survey of Emacs git interfaces to find one
that works and sucks not.
Notes:
- Was going to install Magit, but `make install' barfs. Egg is a Magit fork, so
using that instead.
- Run u_egg update script and M-x byte-compile-file egg.el.
- Opening a file in a git-managed directory (where .git exists, I guess)
auto-loads Egg in minor-mode.
- Prefixes git commands with C-x v. E.g. C-x v l shows branch history.
This works pretty good. No complaints so far.
*** DONE Windows Server 2008 R2
- State "DONE" [2009-12-01 Tue 13:26]
- State "STARTED" [2009-10-31 Sat 01:20]
2k8r2 is still better than Windows 7, but it's a big step on the path to
further n00bification. All the more reason to leave the Windows box off, I
guess.
Observations:
- Removes classic start menu. There's an add-on hack to replace it, but it's
not really the same. At least classic taskbar is still here.
- Dragging windows for tiling 2 apps is nice, but requires too much mouse
molesting to be really useful.
- Wastes much more RAM than 2k8 did. To what end, I cannot tell.
Tasks Completed:
- Installed OS and de-fagified default system settings some.
- Installed MSVS 2010 RC-something.
- Installed some apps, games, utils. Going to try to lazy-load these, so I
don't waste days installing stuff I'll never use.
- Setup Emacs and printing.
- Setup IIS backup site.
- Tried to install MS SQL Server, but it barfed. Don't need this now, and
since r2 is coming out, will try again later when I need it.
- Setup Cygwin (base, urxvt, Xorg, some fonts, git, svn, etc).
If I knew r2 was going to be the way it turned out to be, I'd not have
bothered. But, it's not worth downgrading. I think I stopped caring.
*** DONE Valgrind
- State "DONE" [2009-12-01 Tue 15:10]
- State "STARTED" [2009-07-26 Sun 14:04]
Valgrind is the current de facto standard for a memory profiler. No pressing
need for this, since I'm not writing any C, so just spending a few hours
getting aware of its benefits here.
Notes:
- Requires a procfs entry in /etc/fstab, like `proc /proc procfs rw 0 0'.
Then `mount proc'.
- Created a test file ~/src/c/valgrind_test.c.
- After compiling, run valgrind on the output with something like this:
valgrind --tool=memcheck --leak-check=yes --show-reachable=yes
--num-callers=20 --track-fds=yes ./valgrind_test
- This catches the forgetting to free chars from the first and last malloc.
There's many other kinds of errors that can be caught. Check Valgrind manual
for explanations of those.
Valgrind's quite great, and I'll definitely use it on all C programs larger
than a few 100 lines from now on. Maybe check out gprof (performance analysis)
and splint (security profiling) in the future.
*** DONE Malyon mode
- State "DONE" [2009-12-04 Fri 15:48]
- State "STARTED" [2009-12-04 Fri 15:38]
Replaced Frotz with this Emacs major mode.
Update: After playing a lot of IF on Malyon, I've concluded it's pretty good,
but only most of the time. There are some major downsides to it:
- It only supports 3 Z machine formats. Even zblorb doesn't work.
- It sometimes doesn't capture certain keys, thinking they are Emacs commands.
- Killing game buffers in some cases doesn't properly exit the mode. There's
then no way to start a new game without restarting Emacs.
- Some games, like Lost Pig, have a lag when parsing input.
These are pretty bad, but for games that actually work in it, this mode is
fine, and being in Emacs is of course a big plus. So, I'll use it in those
cases, but it looks like I'll have to reinstall Frotz for everything else.
*** DONE Update FreeBSD to 9.0-CURRENT on laptop
- State "DONE" [2009-12-08 Tue 10:44]
- State "STARTED" [2009-12-05 Sat 01:27]
The main purpose for bothering to keep this Thinkpad up to date is that it's
useful for testing out new applications or configurations without gunking up my
main box.
Do the same setup as workstation except the following differences:
- Reduce size of /home and /var in disk setup.
- Enable APM in post-install configuration.
- Don't install mysql-server, ddclient, lighttpd/fastcgi.
- Don't setup a printer or bother with cups-client.
- Different symlinks.
- Don't bother setting up a local samba share (just using samba client).
- Leave netsmb_load out of loader.conf and nmbd/smbd out of rc.conf.
- Since I'm updating to 9.0-CURRENT (for no particular reason), use `tag=.' in
src-supfile.
- Enable ACPI support for the various extra Thinkpad buttons in kernel config.
Kernel errors do seem to occur occasionally on -CURRENT. Since I'm not doing
any OS development, probably better off sticking with -RELEASE in the future.
*** DONE mutt + msmtp
- State "DONE" [2009-12-11 Fri 11:11]
- State "STARTED" [2009-12-08 Tue 11:02]
Emacs' wl is an okay MUA, but mutt provides all the same features and more, and
does so far faster. While perhaps not the final word on mail clients for me,
mutt is definitely a small overall improvement for this task in my case or at
least seems so at the moment. Uninstalling wl and will try to use this
exclusively for a few months.
Setup notes:
- Looks like some options I'd rather use (like message and header caching) are
not supported in the version I'm using. Could try mutt-devel or just check
back after some time to see if they or some equivalent has been added.
- Not a big deal, but Gmail trash folders are non-functional. To get this
working, apply the trash patch for current mutt version from
http://cedricduval.free.fr/mutt/patches/download.html and recompile.
- Need msmtp port for an SMTP MTA. Be sure to compile with -DWITH_GNUTLS
(added to /etc/ports.conf).
- Create a symlink to /usr/local/share/certs/ca-root.crt as /etc/ssl/cert.pem,
or cp the file to ~/.mutt/cert.pem (did the latter).
- Created a ~/.msmtprc file, chmoded 0600.
- Created a ~/.muttrc file and ~/.mutt directory.
- Using Emacs as message editor, but not pager.
- Considered setting up print/muttprint, but since it only takes a couple more
seconds to save the message to a file and print that, and considering I can't
even remember the last time I wanted to print an email, I'm skipping it.
Most used keybindings:
- m: compose message
- d: delete current message
- v: view attachments
- a: attach file
- y: send message
- ?: shows all commands in current context
- ^: update IMAP inbox (custom key)
- c: change folder
Some day when I have nothing better to do, consider setting up the whole mail
stack (current setup + fetchmail and procmail), just using Gmail for a mail
relay. This exceeds my current interest in email right now though. See this
page for some tips on that: http://www.andrews-corner.org/mutt.html
*** DONE Agda setup
- State "DONE" [2009-12-11 Fri 20:33]
- State "STARTED" [2009-12-03 Thu 11:17]
This task was just to get a main theorem prover environment working. Will be
sticking Agda for now, as both Coq and Isabelle (which require Proof General)
pull in a lot of dependencies. Agda seems capable of everything the others
are, for the most part, and is more entrenched in the Haskell world, so will
default to this for now until there's reason to do otherwise.
Agda: Written in Haskell and available on Hackage. No Proof General support,
but has its own Emacs major mode. In addition to a proof assistant, Agda is
also its own dependently typed functional language.
- In order to get the CLI Agda batch mode binary, install with `cabal install
Agda-executable -p'.
- A dependency of this is haskeline, which for some reason can't find libiconv.
Specifying its location manually with `cabal install haskeline -p
--extra-lib-dirs=/usr/local/lib' worked though.
- Added Agda hook to .emacs. agda-mode starts when loading a .agda file.
- Will need to read up some on Martin-Löf Type theory.
- An Agda "standard library" exists that includes various modules full of
common functionality. Requires a source install.
- A lot of the documentation online refers to Agda 1, which uses a completely
different syntax and system architecture, so always check that first.
Notes on other software for future consideration:
Coq: Seems to be the most popular system, but is very bloaty. Compiling this on
FreeBSD with WITH_IDE="no" avoids pulling in the mess of Gnome libs it depends
on by default, but the Proof General issues prevent me from this being as
usable as Agda. Assuming I resolve this later, read the Coq tutorial and then:
http://www.cis.upenn.edu/~bcpierce/sf/
Isabelle: Probably most useful for FOL/HOL and ZFC set theory. But, from what
I can tell doesn't do anything that Agda can't do except export to a few other
languages. Written in SML, and seems to have a build option for running with
SML/NJ (which I already use) instead of PolyML. Also has Proof General
support.
Proof General: FreeBSD port of this doesn't detect GNU Emacs install properly
and tries to install XEmacs. Setting the supposed make flags to their
indicated values has no effect.
*** DONE Computer algebra system setup
- State "DONE" [2009-12-11 Fri 22:06]
- State "STARTED" [2009-12-11 Fri 20:36]
Still in need of a plotting CAS for some upcoming calculus work that I'd prefer
not to need Windows for. Try installing various apps on the laptop and pick
the least annoying and preferably one without a very app-specific language.
Ideally, it'd have an Emacs interface with output to Gnuplot or something
similar, but I won't rule out TeXmacs or custom "notebook" UIs. Also need to
be able to dump anything written here into LaTeX, which would save a rewriting
stuff twice.
Some options: Octave (uses MatLab notation), Maxima (written in Lisp, but
already tried this on GNU/Linux and wouldn't integrate with Emacs there), Yacas
(not high on the list, since it uses its own language along with the XML-based
OpenMath), OpenAxiom (no comments so far), Mathomatic (no plotting, so not
really a solution, but might have use for it anyway), MathEclipse (does
everything needed at the moment, but Eclipse is for fags).
Maxima: Brings in gnuplot (default options OK for this). Seems to work pretty
good. Running something like `plot2d(x^2-x+3, [x,-10,10]);' does draw the
graph properly in gnuplot. Will be sticking with this then until there's
reason to do otherwise.
*** DONE ImageMagick
- State "DONE" [2009-12-13 Sun 02:43]
- State "STARTED" [2009-12-13 Sun 00:32]
Handles a large number of lightweight image manipulation tasks from the command
line. Nothing complicated about it. Might be able to incorporate this for
certain repetitive actions, like resizing images. Obviously, this doesn't
replace the rare need for a full-featured graphical suite, but should take care
of 90% of my image tasks, which is already an uncommon thing anyway.
I'm not going to try to predict all future image manipulation tasks. Just add
notes here when I figure out some handy operation to use this for. The
ImageMagick homepage or Google usually turns up an answer.
Notes:
- Install with defaults, minus FPX and JBIG support. If I want SVG support,
enable that here (this depends on librsvg, for which Mozilla plugin support
should be disabled). Enabling SVG pulls in a lot of other dependencies too,
so only enable if really needed. Compiling without it for now.
- Use display command to view images.
- To create a negative of an image, use `convert -negate pos.png neg.png'.
- for i in `ls *.png`; do convert -negate $i $i; done
*** DONE Maxima (revisited)
- State "DONE" [2009-12-14 Mon 21:24]
- State "STARTED" [2009-12-11 Fri 23:57]
Now that I've gotten Maxima actually working, I need to spend a couple days
learning it before doing any analytical calculus work. Did some of the
tutorials on http://maxima.sourceforge.net/documentation.html and created a
test LaTeX document in ~/src/latex/maxima. The manual at
http://maxima.sourceforge.net/docs/manual/en/maxima.html also has per-math
topic sections.
Notes:
- Use `? functionname' to view documentation on any function.
- To output to PNG, use something like this example:
plot3d(f(x,y), [x,-5,5], [y,-5,5], [nticks, 500],
[gnuplot_term, "png size 1000 1000"], [gnuplot_out_file, "myfile.png"]);
- Use trunc() when plotting infinite series.
- gnuplot can also be used on its own and has a bunch of potentially useful
features including an add-on Emacs mode. Might want to check this out
sometime later.
- Functions like lambda(), map(), apply() have their same meanings as in Lisp.
- Also as in Lisp, quoted expressions with the ' char are not evaluated.
- Can export a file with something like save("filename.max", all); which stores
the current session buffer as Lisp expressions. load() does the opposite.
writefile() can be used to enable logging for a session.
- . is used for scalar product (the dot product of two vectors or matrices).
- When using something like diff(), del(var) will be returned in the
differential if var is not specified. If needing to get rid of this, set
del(x) to 1 with `%, del(x) = 1'.
- imaxima seems nonfunctional on FreeBSD and GNU/Linux. According to some
docs, this was the GUI frontend, but xmaxima seems to work.
- If doing work I want to save, open a .max file and use the maxima buffer as a
REPL, sending lines or regions to be evaluated. This is probably the best
way to do series of exercises in a textbook.
Maxima -> LaTeX workflow:
- Use the tex() function to output TeX formatted markup for any expression.
- Paste the generated TeX into my LaTeX document. I prefer numbered equations,
usually, so if I want that, change the $$ pairs to \begin{equation} and
\end{equation} tags.
Maxima -> LaTeX -> HTML workflow (using latex2html):
- Duplicate above workflow until the LaTeX form is complete.
- Run latex2html on the filename.tex file, generating a filename directory
with the HTML files and images in PNG form.
- Note that these usually won't be chmoded correctly due to my umask.
- Also note that this creates a page for each subsection. Flag with
`-no_navigation -split 0' for a single page, which is probably what I'll want
most of the time.
- Note this creates an index.html in a directory, but the links point to
anchors within filename.html. If doing some manual formatting afterward,
only use the latter, preferably.
An alternative method to the above is to paste in the equation TeX markup into
EQ tags in a pre-existing HTML document and run gladtex on that. This probably
makes more sense for appending some equations to an already existing document.
*** DONE xargs
- State "DONE" [2009-12-21 Mon 10:56]
- State "STARTED" [2009-12-21 Mon 10:00]
I've learned how to use xargs several times in the past. It's not complicated,
but I always forget by the time I need it next. Recorded relearning it here so
it can be the last time.
- A simple example to rm a bunch of files, one a time with prompting.
find . -maxdepth 1 -name '*.txt' | xargs -p -n1 rm
- This version handles names with whitespace.
find . -maxdepth 1 -name '*.txt' -print0 | xargs -p -n1 -0 rm
- Input manipulation. This creates a backup of all .png files in cwd.
find . -maxdepth 1 -name '*.png' | xargs -p -n1 -I {} cp {} {}.bak
Notes:
- -t echoes the command before executing it, and -p echoes it and asks for
confirmation.
- -n1 passes one argument at a time to the command -- usually what I want.
- The whitespace handling args are required on both sides of the pipe to work.
*** DONE darcsum
- State "DONE" [2009-12-21 Mon 16:17]
- State "STARTED" [2009-12-21 Mon 16:03]
Emacs PCL-CVS style integration with Darcs.
To create a patch:
- Run M-x darcsum-whatsnew and mark/unmark items with m. Hit
RET on entries to preview differences.
- Either run darcsum-record, c, or R to record the patch.
- After entering short and long descriptions, hit C-c C-c.
Other commands:
- r: darcsum-remove
- U: darcsum-revert (undo)
- =: darcsum-diff
- e: darcsum-ediff
- E: darcsum-ediff-merge (three-way)
*** DONE Darcs
- State "DONE" [2009-12-21 Mon 16:18]
Darcs is losing the repo wars badly to git. I still like it for various
reasons and will use it locally to manage all projects not already under some
other VCS. Been using it for a few years now, but this is a directed effort to
become familiar with all things Darcs and incorporate it into everyday life.
Reasons why Darcs is better than git:
- Certain unusual tasks (e.g. modifying previous patches so they appear atomic)
are doable without a complex workflow.
- Darcs is based on a "theory of patches", which allows for any supported
operation to be provable within it. This, IMO, is how complex software
should be designed. Git, on the other hand, uses the standard "just get it
working" model, like most Linux apps.
- Darcs is written in Haskell, and with all things being equal, I'd rather
install apps that I enjoy looking at the source code for.
To create a repo:
- Go to directory where repo is to be created and run `darcs initialize'.
- Now run `darcs add dir1 dir2 file1 ...' to add all files and dirs. Probably
want to run `darcs add * -r' though to recursively add everything.
- If this includes "boring" files by Darcs' definition, and I want these, use
--boring flag.
- Record the first patch (which is everything) with `darcs record --all'.
Grabbing a repo:
- Over HTTP: darcs get http://somewhere.org/darcs/project
- Over SSH: darcs get bm3719@cellblock:/home/bm3719/repo/project
- Grab the latest from upstream with `darcs pull'.
Using Darcs:
- After changing some stuff, run `darcs whatsnew' to see pending changes. Note
this won't pick up added files. Run `darcs whatsnew -l' for that.
- When ready, run `darcs record' to create a patch, including various changes.
Try to keep these atomic to a single feature, bugfix, project, or whatever.
- If this is non-central repo, use `darcs send -a' to send all patches upstream
by email, and if a local mail client isn't functional, export to a file with
`darcs send -a --output=~/changes.patch' and email them manually.
- Over SSH, use `darcs push bm3719@cellblock:/home/bm3719/repo/project'
- Create a tag for current set of patches with `darcs tag'.
Other notes:
- Might want to check out darcsweb at: http://blitiri.com.ar/p/darcsweb/
- The CAMP project is mildly interesting: http://projects.haskell.org/camp/
- Created a Darcs repo in ~/src/repo to store all files I want to version
control. Right now this is just what was currently in ~/public_html/src plus
a few other things I have laying around.
- Added some environmental variables for Darcs to .zshrc.
- Switched from vc-darcs to darcsum in Emacs. Deferred to separate task.
- Note that umask affects the permissions of the patches created. Make sure
they're all chmoded a+r.
- Might wanna think about setting up per-project repos, instead of having one
big one.
*** DONE Ruby environment
- State "DONE" [2009-12-22 Tue 23:16]
- State "STARTED" [2009-12-22 Tue 11:38]
Set up the Ruby development stack. Ruby has a language ecology around it like
Haskell and Lisp, so just installed the base compiler (looks like 1.9 isn't
ready yet, so sticking with 1.8) and RubyGems. Everything else will be
per-user. Not doing any Ruby programming at this time though, as I have more
important tasks. Will schedule this later when I foresee the free time for it.
Notes:
- Added ruby-mode support to ~/.emacs, including run-ruby mode.
- If doing some Rails at a later date, add additional Emacs support for that.
Having set up Ruby and gems, I then proceeded to browse RubyForge for fine
additions to either my general or Ruby-specific environment, but was rather
disappointed. If "Rails is a Ghetto," then the rest of the Ruby world is its
sewer. Surely there are some projects of worth here, but thus far, their
presence eludes me.
** Work-related topics
*** DONE C# 3.5 features
- State "DONE" [2009-07-28 Tue 08:07]
- State "STARTED" [2009-07-28 Tue 05:49]
Already knew these, but needed to internalize them.
Notes:
- Object Initializers: Include these when instantiating new objects; e.g. new
MyObj() { prop1 = "val" }
- Collection Initializers: Use if an object implements IEnumerable and defines
Add(); e.g. MyCol col = new MyCol { 3, 4 }; // calls Add() on 3 and 4
- Anonymous types: Saves some explicit type defining for simple collections of
properties. Like a struct, but less verbose; e.g. var x = new { FirstName =
"John", LastName = "Doe" };
- Local type inference: Saves some type declaration. Not a big deal. Probably
was added mainly for LINQ; e.g. var x = new List<int>();
- Lambda Expressions: Just like in other languages. Use instead of anonymous
delegates; e.g. listOfFoo.Where(x => x.Size > 10);
- Expression trees: Deferring to an in-depth LINQ study.
- Automatic properties: Typing saving syntactic sugar; e.g. public string Name
{ get; private set; }
- Extension methods: Static method that extends another class's existing
method. Requires a `this' keyword in parameter. Doesn't belong in an OOP
language, IMO.
- Partial methods: Pretty much a useless feature unless you really wanted a
partial class with all the method type signatures in it like a C header file.
*** DONE read the MS VS documentation
- State "DONE" [2009-08-07 Fri 13:58]
- State "STARTED" [2009-07-23 Thu 13:05]
This is probably a non-optimal use of time, but might as well waste a few days
skimming this. Could learn a few things to make work life easier at least.
Ignore anything VSTO, VB, or JScript-related. Only read this stuff while at
work. In particular, look into all the extra debugging functionality. I was
originally going to buy the book 'Advanced Windows Debugging', but I have a
feeling all the info is already here for free.
Update: Read a lot of the intro documentation, but this started getting into
reference-level detail. So, calling off any further effort here. Will
probably still randomly read pages to kill time at work now and then though.
*** DONE SQL Server
- State "DONE" [2009-09-01 Tue 02:17]
- State "STARTED" [2009-08-31 Mon 22:22]
Not sure I even want to know MSSQL DBA stuff, but books on the topic make good
sleeping pills.
Sub-tasks:
- Install SQL Server 2k8SP1 (done).
- Read up on SSIS, SSAS, SSRS (done).
- Skim the rest of the book "SQL Server 2005 Administrator's Companion", then
toss it in the trash.
- Find out what's different between 2005 and 2008 and skim some docs on that.
- Check out the latest integration methods with VS2k8 or VS2k10.
Update: Cutting my losses on this one. I want to learn concepts, not chores.
See "SSIS, SSAS, SSRS" and "SQL Server 2005 Administrator's Companion" entries
for details. Might still do the last sub-task as part of the VS upgrade.
*** DONE review conference notes
- State "DONE" [2009-09-03 Thu 06:09]
- State "STARTED" [2009-09-03 Thu 05:29]
Reviewed the notes I took from Devconnections (in ~/conference.txt) to see if
there's anything worth committing to long term memory.
Thoughts (per talk):
- .Net Rocks session: Noted the morbid obesity of hosts. Interviewed some
boring ASP.Net guy who said nothing of importance. Noticed that anyone that
includes stuff like "MVP, MCSD, MSDE" after their name is probably a
quiche-eating homo.
- TFS VC talk: Boring.
- VS2010 & 2k8 GDR talk: Check out "Database projects", unit test coverage
tool, and pcode profiling once 2010 is out.
- WPF & WCF in business apps: Meh.
- LINQ talk: OK for an overview, but nothing I didn't already know.
- Reflection talk: Can discover type info, late binding, and attributes set.
Can be used to combine modules in different languages into one assembly
(requires CLI tool). ReflectionPermission can block reflection. Attributes
can be applied to assemblies, classes, members, and parameters.
- .Net Synchronization: Asynchronous delegate pattern. Uses thread marshaling
and BackgroundWorker. Task Parallel Library is an API that provides thread
pooling and other such stuff. PLINQ parallelizes LINQ (which is coming out
soon).
- Expression Blend demo: Yawn.
- Transactions for the Common Service: Probably the most interesting talk I
attended. Some code samples on CD if this problem ever comes up in real
life, but it's still interesting from a theoretical perspective. This is
basically the underlying problem of distributed state. Some active research
here in volatile resource managers (normal ones non-viable for this problem),
durable services, and durable behavior.
Maybe I just picked crappy talks to attend, but most of these sucked.
Definitely wouldn't go to MS conferences if I was the one paying for it. Could
have learned far more just staying home and reading for 5 days. Probably won't
even bother taking notes at these from now on.
** Games to play
*** DONE Emacs blackbox
OK for some casual time-wasting.
*** DONE OpenTyrian
- State "DONE" [2009-06-08 Mon 11:22]
Pretty much played this to death.
*** DONE Starflight on Genesis emu
- State "DONE" [2009-06-19 Fri 21:06]
- State "STARTED" [2009-06-19 Fri 21:06]
Not fun.
*** DONE VMS Empire
- State "DONE" [2009-07-18 Sat 07:46]
- State "STARTED" [2009-07-17 Fri 17:41]
This has a bug where the initial text is invisible. It prompts for a difficulty
level of 0-99, so just enter a number and hit enter.

*** DONE Flatspace
- State "DONE" [2009-08-07 Fri 22:43]
- State "STARTED" [2009-08-01 Fri 20:42]
Not bad, but too action-oriented and not sim-like enough for my tastes.
*** DONE BGTutu
- State "DONE" [2009-08-09 Sun 14:31]
- State "STARTED" [2009-08-03 Mon 11:48]
Doing a full saga run with an evil bard (skald) and a 4 character party (PC,
Viconia, Imoen, Edwin).
Update: Spanked Molahey and confronted Tranzig on Feldepost's Inn 2F. Game
then crashed after zoning out of the map, corrupting the install, and is now
unrecoverable. Will try again some day with the updated BGTutu version and
a new char. :(
Notes for next time (if doing a similar run):
- Make male bard instead of female to get Viconia romance in BG2.
- Try to roll these stats: STR 18 (Viconia needs gauntlets of ogre power), DEX
17, CON 16 (max HP bonus for bards), INT 17 (max INT not necessary at
beginning, but will max later with tome), WIS 9 (only affects lore, which
bards have in abundance), CHA 18 (add tome + char cloak for 21, which makes
up for the low rep some). Total: 95.
- Put proficiencies in long sword, two weapon, and short sword.
*** DONE Ur-Quan Masters
- State "DONE" [2009-08-15 Sat 13:00]
- State "STARTED" [2009-08-11 Tue 00:05]
Installed this instead of legacy Star Control II, which it's a considerable
improvement on. However, it's also a frustrating game for the following
reasons:
- Combat is too arcade-like and has horribly awkward controls.
- Navigation around systems is too imprecise.
- Planet surface activity plays like a cheap mini-game.
Still a pretty good game, considering. But, too much button-mashing and too
little thinking for my tastes.
*** DONE XEvil
- State "DONE" [2009-08-17 Mon 13:07]
- State "STARTED" [2009-08-17 Mon 12:32]
Very awkward controls. Generally not fun.
*** DONE ZAngband
- State "DONE" [2009-08-18 Tue 15:09]
Since ZAngband development has ceased, calling off further playing of this and
switching to ToME. Might still play it some later if ToME is less likable or I
need a Zelazny/Amber fix for some freakish reason.
*** DONE Emacs mpuz
- State "DONE" [2009-09-02 Wed 00:25]
- State "STARTED" [2009-09-02 Wed 00:10]
Good for some quick math fun.
*** DONE Defense Grid: The Awakening
- State "DONE" [2009-09-20 Sun 03:18]
- State "STARTED" [2009-09-12 Sat 23:55]
Best tower game played so far. Almost perfect. Keeping this one installed for
occasional replaying.
Complaints:
- 20 maps for a full-featured game seems a bit low.
- Opening tower placement too important compared to later placement. There's
usually only one or two proper opening moves.
- Most maps could use another 5-10 waves.
- Grinder mode needs more variety.
*** DONE Zombie Shooter 2
- State "DONE" [2009-10-10 Tue 18:23]
- State "STARTED" [2009-10-11 Tue 11:15]
While the Alien Shooter games were pretty good, this one kinda sucks.
*** DONE Space Siege
- State "DONE" [2009-10-18 Sun 14:34]
- State "STARTED" [2009-10-17 Sat 11:53]
Mindless, yes. Fun, not really.
*** DONE Flash-based tower defense games
- State "DONE" [2009-10-19 Mon 22:39]
- State "STARTED" [2009-10-19 Mon 08:40]
Normally wouldn't play Flash-based games, but since that's where a lot of the
tower games are, giving them a look. Most of these suck, as expected. The
good ones aren't really worth suffering with Flash for.
Games:
- Garden Defense: Probably the best of these. Didn't seem worth $7 though.
- Desktop Tower Defense: Better at maze-construction. Needs a smart pause or
start wave button though.
- Zombie Tower Defense: Craptastic.
- Xeno Tactic: Craptastic.
- Flash Element TD: Entertaining for a few minutes.
*** DONE Harvest: Massive Encounter
- State "DONE" [2009-10-22 Thu 21:45]
- State "STARTED" [2009-10-18 Mon 21:41]
Pretty good tower/RTS game. Not quite good enough to keep around after doing
everything though.
Complaints:
- Only having surface mining is a little unrealistic.
- Could use more building types, upgrade options, or something to add more
strategy variety.
- Having no way to create terrain funnels vastly limits strategic options.
- Really needs more precise building placement controls, especially considering
that's what the game is mostly about.
- Needs ability to adjust threat timer.
*** DONE Homeworld 1
- State "DONE" [2009-10-30 Fri 13:22]
Doing a max salvage corvette run.
Update: Reinstalling Windows, and don't feel like reinstalling this, so
closing. Got bored, having already played this through so many times.
*** DONE Eschalon Book I
- State "DONE" [2009-10-31 Sat 03:17]
- State "STARTED" [2009-07-13 Mon 01:11]
Save-crawling an atheist mage.
Update: Good game for the most part, but got a bit repetitive, and I eventually
lost the urge to complete it. Probably will revisit this later, so backed up
saved game.
*** DONE Bridge Building Game
- State "DONE" [2009-11-08 Sun 12:20]
- State "STARTED" [2009-11-08 Sun 00:41]
Kinda fun for awhile. Got bored after a few hours though.
*** DONE Dragon Age: Origins
- State "DONE" [2009-12-11 Fri 11:21]
- State "STARTED" [2009-11-11 Wed 05:44]
Playing through as a mage. Overall, this is an OK game, but I do have many
design complaints, mostly having to do with over-simplification of various
gameplay elements.
The good:
- Great graphics and a much better camera system than NWN.
- An all new game universe, with lots of new lore to learn.
- Manages to present some decent strategic challenges.
The bad:
- Overdoes it on the blood splattering everywhere.
- Highly influenced by MMORPG-style spell/ability systems. There's a lot I
dislike about this, but generally it's just dumbed down compared to D&D.
- Too few items, spells, enemy types, races, classes, etc.
- No place to store items not currently needed besides selling them to the shop
and having to buy back later at a huge markup.
- Enemies don't drop all of the items that they were using, e.g. kill a knight
wearing full plate wielding two swords and he drops only a heal potion.
- Some annoying graphical oversights, like character model clipping, invisible
walls, and randomly disappearing sustained spell effects.
- Plot largely linear despite the occasional choice of sequence. No
opportunity for the player to do any higher thinking to put pieces together.
- Despite the visually detailed background, interaction with it is limited to
the rare predetermined container or activation object.
- Long load times no matter how good your hardware is.
- Like most modern MMORPGs, requires a con system of colored mob names to
indicate difficulty. Better design negates the need for this, like having
difficult mobs be the ones that look fearsome.
- Has a few original parts, but most of the story is pretty cliché, filled with
stock characters acting stereotypical roles.
- Too heavy on the scripted dialog, which is well voiced, but lacking in
interesting content. Conversations have at most 1 or 2 branch points, but
almost all have none except the option to end them early.
- Morrigan's cleavage and other low brow content to appeal to console owners.
Update: Ended up liking this less the more I played. Perhaps this is because
once the initial impress wore off, it becomes obvious how little real game
there is here compared to Bioware classics like the BG-series. This continued
until I now apparently lack even the desire to complete this, and since I'm
making it a point to stop playing games once I stop enjoying them, I'm closing
this task.
*** DONE Lost Pig
- State "DONE" [2009-12-21 Mon 23:03]
- State "STARTED" [2009-12-18 Fri 14:46]
Great story/puzzle IF, original concept, and good writing. A couple ways to
put it in a non-winnable state, but otherwise about as good as they come.
*** DONE Phantasy Star IV
- State "DONE" [2009-12-29 Tue 12:36]
- State "STARTED" [2009-12-26 Sat 01:41]
Despite some flaws, this is the best game in the Phantasy Star series and the
best RPG on the Genesis, though still mostly a pretty mindless farming
experience.
Complaints:
- NPCs randomly leaving your party is kind of annoying.
- 2-line text blocks turn extended dialog sequences into a button mash-fest.
- No descriptions of what spells do in game. Had to find a guide online.
- Story is pretty standard for JRPGs.
Quit just short of the final battle, since beating the final boss would've
required me to level grind for several hours and I can pretty much guess what's
going to happen.
** Programming projects
*** DONE L1J-En
Officially retired from this project. Some other people are still working on
it, but after a year of programming in Java and with that brain-dead
(non-)relational schema, I've lost the urge to continue. It pretty much
accomplished its goals of creating a working server emulator anyway.
** Macro-goals
*** DONE year-end review for 2009
- State "DONE" [2009-12-29 Tue 12:39]
- State "STARTED" [2009-12-16 Wed 16:42]
It'll definitely be constructive to wrap up the end of a year with an analysis
of it in relation to the tasks here. That is, did these projects bring me
closer to my larger goals and what kinds of adjustments can I make to optimize
the next year?
Along those lines, here's the observations for 2009:
- Listing out projects like this definitely improves productivity by many
factors. The main reason why it's worth the time to do so are: 1.) Keeping
record of productive activities. I can't even remember what I was doing from
Jan-Mar (before creating this list), but if I want to know what I was doing
in April 2009, I need only look here. 2.) Knowledge retention. 3.)
Organization. Prior to managing my life with org-mode, my activities were
inherently disorganized. This is now no longer a problem.
- In 2008, I wasted a ton of time working on an open source project. In 2009,
the biggest time-waster was day trading. Day trading is a pretty mindless
activity, and even in the best-case outcome, only increases monetary wealth
at the sacrifice of the far more valuable intellectual wealth. While true
that they are not complete wastes, day trading and OSS projects (from which I
gain no knowledge) are two things that a cost/benefit analysis reveals should
be avoided for the near future (at least, as long as I have these far more
important things to do).
- A year ago, I recall thinking I had the ultimate *nix development
environment. It turned out this was far from the case, and the large number
of "Technology and Software" tasks I realized needed tackling proved that.
Though it's possible to endlessly improve this, I definitely don't want to
expend this percentage of time on it in future years, or I'll never get to
the harder stuff. I don't consider the time spent this year wasted in any
sense though, as most of the work was related to development environments,
and being *nix, it's cumulative.
- My life-long love affair with playing video games endlessly seems to be over,
which is probably a good thing. The amount of time spent playing them this
year wasn't a significant negative factor in my time management, probably for
the first time in my life.
- Spent too much time reading fiction and not enough time reading non-fiction.
I don't consider this a bad thing as long as this ratio doesn't persist. I
did have a large quantity of these books queued up over the years, and
reading a typical novel only takes a few days to a week, so it's accessibly
tempting.
- Getting there from here is more work than anticipated. Subsuming the massive
amounts of knowledge on this agenda required more remedial work than I had
expected -- all the more reason to reduce overhead and target effort
optimally.
- Lists have one downside: the temptation to solve all the quick or easy tasks
first. While it may seem more rewarding to be closing multiple tasks a day,
if they're all lower priority ones, it's better overall to trudge through the
more important huge task which may very well take weeks to close. Realizing
this isn't the problem though; the main impediment is that it's often not
possible to focus on highly complicated side-projects while multitasking
job-related work, for example.
- Instantly abandon tasks the moment they seem pointless or significantly less
important than originally conjectured.
Major goals for next year:
- Master Lisp programming to the point where it's the language I'm most
effective in. If I've read all the Lisp books on my list but still don't
feel like a guru (a highly likely scenario), write games or other apps in it
until I do. Ignore temptations like Clojure until this is done. The only
caveat to this is that there are several things about Lisp that bother me
(dynamic typing being the foremost). As I spend more time in it, these
problems may make it clear to me that the statically-typed/purely-functional
road is the path for me (I'm already pretty sure this is the case, actually).
If this feeling becomes unbearable, cut off Lisp work early.
- Master at least these math topics: Set theory, formal logic, lambda calculus.
- Be able to construct proofs far more naturally (something I always sucked
at).
- Finish some remedial math refresher tasks in discrete math,
differential/integral calculus, and linear algebra. Having forgotten so much
of this is a real hindrance sometimes.
- Finish SICP.
- Finish mastering every technical subject related to my current job (apart
from app-specific domain knowledge) to the point where I can do any of it in
my sleep. I'm already pretty close to this, but there's a few topics I just
haven't been able to force myself to completely take in. This will
unfortunately require spending some of my own time doing some MS development.
- If I still have time after this, finish the Algorithms book.
- Only once all this stuff is done, begin on the whole taxonomy of tasks
including Haskell, category theory, type theory, and theorem proving. But,
I'm presuming I won't even get to this stuff until the following year anyway.


Sample work
Predicting Bitcoin pricing through technical analysis
Tools: R, Markov process
Visualising nationalities in Formula 1
Tools: Tableau
Alternative investments portofolio simulation (group work)
Tools: MS Office, Stata
Thesis extract
Tools: MS Office, Stata
◄ go back to homepage


temperature trends time climate satellite channel observations AMSU-A channels ATMS data ascending decade temperatures trend differences calibration descending series SNPP global diurnal orbits anomaly SNPP/ATMS (H), Fig. microwave Aqua/AMSU-A MetOp-A different stability biases lower {border-style local px;} radiometric satellites stable #ffffff;} atmospheric difference errors Aqua relative MSU changes cooling used Atmos. channels. drift respectively. troposphere Clim. MetOp-A/AMSU-A anomalies change daytime instrument large mean nighttime Oceanic Res. asymmetric brightness climatology daily error land radiosonde scan surface Geophys. assessment frequencies limb long-term observational orbits, records tropospheric uncertainty upper S). Zou channels, high instruments onboard p.m. sampling stratosphere using (V), Atmospheric NOAA Satellite Technol. accurate grid help observation px; series. trends. {font-family Aqua, C.-Z. However, NOAA- algorithms averages close comparison comparisons developed drifting drifts font-size frequency homogenized measure minus monthly nadir observed providing reference reliable similar stratospheric (fig. Climate JPSS Microwave Wentz a.m. adjustment analyzed calibration-drifting compared detection double; estimates generation measured mid-tropospheric nonlinearity operational orbit orbital period represent satellite-derived scene sounders suggest uncertainties Anomaly Christy December Earth Goldberg Lett. Mears National Spencer Table U.S. adjustments applied averaged border-color border-width caused cells confidence constant correction decade) decade. derived developing estimated exactly gridded improve intervals layer lower-tropospheric measurement measuring middle midnight near-nadir noon ocean, off-nadir orbits. original polar-orbiting provides radiances rate research result resulted satellites. small smaller solid; sounder, stratosphere. warming {font-style {font-weight AMSU AMSU-A, Advanced April GHz GPS LECT Meteorol. NOAA/STAR Peterson Po-Chedley Program Science Sounding Uncertainties absolute accuracy approach atmosphere averaging bias bold calculated capability causes contains contribution counterpart courier; cross-track data. detection. earlier effect em; fixed future. individual launch limb-adjusted minimum model month new observations. overlapping overlaps overpass potential primary pt;} range record researchers resolution second simulations sounders. sounding study swath temperatures, temperature–dependent time. times total versus vertical weather weighting width