<?xml version="1.0"?>
<!-- name="generator" content="blosxom/2.0" -->
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">

<rss version="0.91">
  <channel>
    <title>rlucas.net   </title>
    <link>http://rlucas.net/blog/index.rss</link>
    <description>Blog of Randall Lucas (rlucas)</description>
    <language>en</language>

  <item>
    <title>Fixing Net::Google error with 404 File does not exist</title>
    <link>http://rlucas.net/blog/index.rss/2008/08/26#net_google_wsdl_file</link>
    <description>&lt;p&gt;

I was trying to install Net::Google 1.0 using CPANPLUS on my Mac OS X 10.5
machine, and kept getting a pesky error:
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;Service description 'file:' can't be loaded: 404 File `' does not exist

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
One thing I had to do to fix it was install an apparent prerequisite,
SOAP::WSDL.  It wasn't included by CPANPLUS.
&lt;/p&gt;


&lt;p&gt;
Another thing I had to do to make the tests run was to include the lib/
(not just the blib/) directory in @INC when running the tests:
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;perl -Iblib/lib -Ilib t/001-search.t

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
Even though that made the tests succeed, the installed module still wouldn't
work and gave the same darn error.
&lt;/p&gt;


&lt;p&gt;
It turns out that some deeply, deeply nested code in Net::Google searches
through @INC to find:
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;$DIR/Net/Google/Services/GoogleSearch.wsdl

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
This file doesn't get installed by &quot;make install&quot;, unfortunately.
&lt;/p&gt;


&lt;p&gt;
So, I had to do the following:
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;rlucas:/Library/Perl/5.8.8/Net/Google$ sudo mkdir Services
Password:
rlucas:/Library/Perl/5.8.8/Net/Google$ cd Services/
rlucas:/Library/Perl/5.8.8/Net/Google/Services$ sudo cp \
~/.cpanplus/5.8.8/build/Net-Google-1.0/lib/Net/Google/Services/GoogleSearch.wsdl \
.

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
Now my Net::Google using scripts seem to work right.
&lt;/p&gt;


&lt;p&gt;
$Id: net_google_wsdl_file.txt 1127 2008-08-27 02:11:49Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Thoughts on the Eve of CFA I Results</title>
    <link>http://rlucas.net/blog/index.rss/2008/01/22#thoughts_on_cfa_i_results_eve</link>
    <description>&lt;p&gt;

On 01 December 2007, I took the
&lt;a href=&quot;//www.cfainstitute.org/cfaprog/overview/&quot;&gt;CFA Level I exam&lt;/a&gt;.
The results for this exam will be made available tomorrow (23 January 2008),
but before I find out how I did, I think it might be useful to you and a
good exercise for me to describe my thoughts on the exam, the process, and my
self-assessment of how I did.
&lt;/p&gt;


&lt;p&gt;
First, a word of background.  I am untrained in finance and economics in any
formal sense.  On the job as a venture capital analyst and associate for the
past two years, I have
learned modeling and DCF, and have also picked up a strong interest in
reading macroeconomic blogs and news (e.g. &lt;em&gt;The Economist&lt;/em&gt;, 
&lt;em&gt;Calculated Risk&lt;/em&gt;).  However, VC is not a &quot;finance-heavy&quot; branch of finance,
as most of the risk we look to assess is more human and &quot;soft&quot; in
nature, such as management and market risk.  I never took economics, finance,
or economics in school, although I did run bookkeeping for a couple of
startup companies I ran (accrual accounting, double-entry bookkeeping).  So
the content of CFA I was largely new to me, though the generalities of
finance were not.
&lt;/p&gt;


&lt;p&gt;
In general, I am very smart and a good test-taker.  For example, I aced the
SATs (on my second try), several College Board and AP exams, and most of my
International Baccalaureate exams.  But I studied like a mofo for those, and
those (roughly 11 years ago) were the last time I took any standardized
tests.  In college, my record was significantly less stellar (for too many
reasons to list here).
&lt;/p&gt;


&lt;p&gt;
However, CFA I claims you need 250 hours of prep.  It boasts a 40% pass rate.
Nearly all of the takers (so far as I can tell) come from the finance industry
and/or economics or finance academic backgrounds.  So I figured (then and
now) that it's anyone's game: me, the solid test-taker, against CFA I, the
exam whose pride depends upon trouncing 60% of comers despite their being
specialists.
&lt;/p&gt;


&lt;p&gt;
So, I set out in June / July 2007 to begin studying for CFA I.  I bought both
the &quot;official&quot; curriculum (several hundred $$), about 12&quot; thick of books, and
the &quot;Schweser&quot; third-party, &quot;Cliff's Notes&quot;-style curriculum, which was
perhaps 7&quot; or 8&quot; thick.  I started out powering through the CFA books, but
quickly, upon advice of friends and upon realizing the difference in
concision, switched to using the Schweser exclusively.
&lt;/p&gt;


&lt;p&gt;
I got busy with a lot of work stuff and really didn't put much, if any, time
into test prep in July-September 2007.  Maybe 1 hour a week.  Then, in
October, I really picked things up, and started putting in 4-5 hours a week.
Finally, in November, I rededicated myself to the effort, making flash cards,
carrying books with me to lunch each day, and adopting a mantra of &quot;study
every day, test (practice tests) every weekend.&quot;  I probably did an average
of 15 hours per week during November 2007, starting at 10 hours and moving to
20 hours for the last couple weeks (2 hours a day for 6 days + 8 hours on
Saturday).
&lt;/p&gt;


&lt;p&gt;
All in all, I'd estimate time spent:
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;Nov 2007   4.3 weeks @ 15 hrs / week   = 64.5
Oct 2007   4.3 weeks @ 5 hrs / week    = 21.5
July-Sept 2007 13 weeks @ 1 hrs / week = 13
---
Total                                  = 99 hrs

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
In the last two weeks, I was scoring between 68% and 78% on the Schweser
practice exams.  (Two runs closer to 68%, the final &quot;outlier&quot; being closer to
78%.)  Part of this may have been a discrepancy in the difficulty between the
Schweser &quot;sample&quot; vs. &quot;practice&quot; exams; I think that the &quot;practice&quot; exams may
be a bit harder to make the &quot;sample&quot; ones, and the real thing, seem easier.
&lt;/p&gt;


&lt;p&gt;
On exam day, I showed up with a good amount of fresh fruits, complex carbos,
caffeine and nicotine, and lots of fresh pencils and two TI BA-II+
calculators.  I did &lt;em&gt;not&lt;/em&gt; get a good night's sleep before; much of that was
probably stress (both CFA I and exogenous, career- and personal-oriented
stress).
&lt;/p&gt;


&lt;p&gt;
On the morning half, I finished the exam once through with about an hour left
to spare.  I spent 35-40 minutes going over my answers and changed perhaps
10% of my answers from their prior values.  (You're stuck in the room for the
final 30 minutes if you haven't bailed before then; I napped at my desk.)
&lt;/p&gt;


&lt;p&gt;
On the afternoon half, I finished with just over an hour left.  I reviewed my
answers and changed maybe 5% of the values, but realized that I was &quot;bonking&quot;
-- getting somewhat tired and low-blood-sugar, I was in danger of making
corrections worse than the originals.  So I called it with 45 minutes left,
and drove home to Seattle through an incipient snowstorm to party it up with
some old friends (including a CFA II candidate).
&lt;/p&gt;


&lt;p&gt;
Overall, I left the exam center confident that I did at least as well on the
exams as I had on my practice / sample runs.  Given what folks had been
posting on &lt;a href=&quot;//www.analystforum.com/phorums/list.php?11&quot;&gt;Analyst Forum&lt;/a&gt;,
I think high 60s would probably be a safe pass.  Considering that my low-end
practice runs were already there, and that I left feeling I did at least that
well, I would wager, perhaps laying 4:1, that I passed.
&lt;/p&gt;


&lt;p&gt;
The one area I have some serious apprehension about would be with respect to
the particulars of filling in the bubbles.  Perhaps it was my 11 year hiatus,
but in the afternoon session I recalled filling in some bubbles or such (not
answers, just pro forma stuff) that
I didn't remember from the morning.  I'm hoping that it was a false memory, a
true difference in the AM / PM test forms, or something not tabulated for
scoring.  But given the anal nature of standardized tests, who knows.  Also,
there were some rocky sections in the vagaries
of financial statement analysis (there are lots of traps and tricks with e.g
lease capitalization and LIFO COGS) and ethics.  Bad showings in those two
areas could have really knocked me down a few notches, perhaps enough to fail.
&lt;/p&gt;


&lt;p&gt;
So, there you have it: the story of one man's CFA I attempt.  Will my
superior test-taking history compensate for only having done 40% of the
recommended hours of study?  Will my senile old-man's mistake of filling in
the wrong test center number or such disqualify my entire AM session?  And
will those whippersnappers with their recent finance degrees outfox me,
leaving me in the dust?  Stay tuned.
&lt;/p&gt;


&lt;p&gt;
(I promised myself a new motorcycle if I passed, so if you do stay tuned, you
may get to hear another &quot;product review&quot; in short order...)
&lt;/p&gt;


&lt;p&gt;
&lt;b&gt;Update:&lt;/b&gt; I passed.  
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;Multiple Choice
Q#    Topic                   Max Pts &amp;lt;=50% 51%-70% &amp;gt;70%
- Alternative Assets              12  -       *       -
- Derivatives                     12  -       *       -
- Economics                       24  -       -       *
- Equity Analysis                 24  -       -       *
- Ethical &amp;amp; Professional Stnds.   36  -       -       *
- Financial Statement Analysis    68  -       -       *
- Fixed Income Analysis           24  -       -       *
- General Portfolio Management    12  -       -       *
- Quantitative Analysis           28  -       -       *

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
Thanks to the CFA Society of Seattle for a scholarship and to Voyager Capital
for picking up expenses.
&lt;/p&gt;


&lt;p&gt;
$Id: thoughts_on_cfa_i_results_eve.txt 1061 2008-01-23 18:26:44Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Things Pictured on &quot;The Stuff of Thought&quot;</title>
    <link>http://rlucas.net/blog/index.rss/2008/01/21#things_pictured_on_the_stuff_of_thought</link>
    <description>&lt;p&gt;

Here is an attempt at an exhaustive list of objects drawn as colorful
icons on the cover of the hardcover 2007 edition of Steven Pinker's 
&quot;The Stuff of Thought.&quot;
&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;fork
&lt;li&gt;trash can
&lt;li&gt;sunglasses
&lt;li&gt;lamp, desk
&lt;li&gt;salt shaker, pouring
&lt;li&gt;football helmet
&lt;li&gt;door (safe vault?)
&lt;li&gt;film canister, 35 mm
&lt;li&gt;mortar and pestle
&lt;li&gt;plunger, toilet
&lt;li&gt;vial, poison
&lt;li&gt;condom
&lt;li&gt;speaker, tweeter and woofer
&lt;li&gt;cup with toothbrush
&lt;li&gt;straitjacket
&lt;li&gt;medicine dropper, dropping
&lt;li&gt;monitor, computer
&lt;li&gt;pills, medicine (capsules)
&lt;li&gt;glove (gauntlet)
&lt;li&gt;hammer
&lt;li&gt;sardine tin, half-open
&lt;li&gt;padlock, open
&lt;li&gt;briefcase
&lt;li&gt;teabag
&lt;li&gt;hand grenade, pineapple
&lt;li&gt;ice cream cone
&lt;li&gt;pinwheel
&lt;li&gt;bandage, adhesive strip
&lt;li&gt;roll (paper or textile)
&lt;li&gt;cigarette or joint
&lt;li&gt;paintbrush, dripping
&lt;li&gt;dynamite or firecracker, fuse lit
&lt;li&gt;bullhorn
&lt;li&gt;brassiere
&lt;li&gt;toaster, bread popping out
&lt;li&gt;bowling pin
&lt;li&gt;Martini glass, with olive
&lt;li&gt;Game Boy
&lt;li&gt;toilet
&lt;li&gt;cell phone
&lt;li&gt;underpants, briefs
&lt;li&gt;teacup and saucer, sugar cube above
&lt;li&gt;computer with keyboard (different from computer monitor)
&lt;li&gt;blow up doll
&lt;li&gt;cigarette or joint (again)
&lt;li&gt;flag, atop pole
&lt;li&gt;pistol
&lt;li&gt;dildo or vibrator
&lt;li&gt;hatchet or axe
&lt;li&gt;television set
&lt;li&gt;handcuffs
&lt;li&gt;clock face
&lt;li&gt;roll, toilet paper
&lt;li&gt;popsicle or creamsicle, bitten
&lt;li&gt;straitjacket (again)
&lt;li&gt;electric chair
&lt;li&gt;lipstick
&lt;li&gt;kitchen mixer or egg beater
&lt;/ul&gt;
&lt;p&gt;

I think (from the first hundred pages) that each of these items is referenced
at some point within the text.  But how interesting that the only two items
that Steve-o repeats are a straitjacket and a cigarette or joint.

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Against Blogging, or Why I Am Discontinuing This Futility</title>
    <link>http://rlucas.net/blog/index.rss/2008/01/10#against_blogging</link>
    <description>&lt;p&gt;

&lt;b&gt;1. An experiment in radical openness.&lt;/b&gt;
&lt;/p&gt;


&lt;p&gt;
I started blogging in 2002/2003 as a way to post bug fixes that I'd
discovered up onto the Web in a way that I and others could quickly find
them.  For example, if I got an &quot;Parse Error #123 in dorklib.so,&quot; and I found
out how to fix it, I'd post up both the error message and the fix so that
anyone searching on the error message would find the fix right away.
&lt;/p&gt;


&lt;p&gt;
That worked really well for that limited purpose.  I didn't get a &lt;em&gt;lot&lt;/em&gt; of
traffic, but I did get a decent amount, and folks tended to leave positive
comments.  I wasn't influencing crowds, but I was improving a few people's
lives each week at no marginal cost to me.  Karma bonus.  Bloghisattva.
&lt;/p&gt;


&lt;p&gt;
Then, right after coming to work for Voyager Capital in late 2005, Web 2.0 and
the social web were really taking off.  I got the news, and decided I needed
to really dive into the culture of &quot;radical openness.&quot;  Sort of getting on
board with the MySpace generation (I'm a few months away from actually being a
member -- rather, I'm the youngest possible &quot;Gen Xer&quot;).  
&lt;/p&gt;


&lt;p&gt;
The idea is pretty simple: dive into the conversation, push your ideas and
your self and your self-image out there.  Privacy is old school, promiscuity
is the new fad.  I covered this in
&lt;a href=&quot;//blog.rlucas.net/tech_and_market_reflections/your_old_ass_values_are_broken.html&quot;&gt;&quot;Your Old-Ass Values Are Broken.&quot;&lt;/a&gt;
It seems to work well for some people.  Fred Wilson, a well known VC,
has lots of readers for his 
&lt;a href=&quot;//avc.blogs.com/a_vc/2007/11/guitar-queer-o.html&quot;&gt;cartoons of gay jokes&lt;/a&gt;, 
tales of how much he plays video games,
and posts saying things like &lt;a href=&quot;//avc.blogs.com/a_vc/2007/12/iphone-for-sale.html&quot;&gt;&quot;fuck Apple&quot;&lt;/a&gt;.
Decorum, farewell!  You have been relegated to the recycle bin of history!
&lt;/p&gt;


&lt;p&gt;
When Real
Grownups, like Fred Wilson, do the high-personality, low-filter thing, you
end up with something &lt;em&gt;like&lt;/em&gt; an unvarnished truth: lots of input, fairly low
signal to noise ratio, and occasional obscenity or flagrancy -- but in
exchange, you get a measure of honesty, a personal &quot;voice&quot; that engages the
reader, and an (imagined) human connection with the writer.
&lt;/p&gt;


&lt;p&gt;
So, as I stated in 
&lt;a href=&quot;//blog.rlucas.net/metablog/plan_less_write_more.html&quot;&gt;&quot;Plan Less, Write More&quot;&lt;/a&gt;,
I decided to do less -- a &lt;em&gt;lot&lt;/em&gt; less -- planning, filtering, and
proofreading, and just let it hang out.  Hey Fred, wait up, I'm hoppin' on
board too!
&lt;/p&gt;


&lt;p&gt;
But, there are a couple of problems with that idea.
&lt;/p&gt;


&lt;p&gt;
&lt;b&gt;2. I rant too much when I'm radically open.&lt;/b&gt;
&lt;/p&gt;


&lt;p&gt;
The main problem is pretty reducible to an abstract model.  Fred writes pretty
much every day.  So do most of the 20 or so bloggers I regularly read --
generally, at least a couple entries a week.  At that rate, most of the
entries end up being pretty tame and moderately well thought-out, even though
they have this &quot;unvarnished&quot; quality.
&lt;/p&gt;


&lt;p&gt;
But I've been blogging once or twice a month on average.  Why do I blog so
much less than a real &quot;blogger?&quot;  Well, because it hasn't been a priority for
me.  So, my entries tend to happen when I get particularly worked up about
sharing something with the world -- in chemistry terms, I have a high
&quot;activation energy&quot; for putting out a blog post, and so I only post when I'm
agitated.
&lt;/p&gt;


&lt;p&gt;
The effect of this, of course, is that I seem to rant a lot.  If I've come up
with a novel observation on the VC industry, or a new tech trend I think is
interesting, but I'm not worked up over it, I probably won't write about it.
But if I'm having a shitty day, and some software bug or ill-considered policy
really tweaks me off, then &lt;b&gt;bang&lt;/b&gt;, I settle up the bill with an excoriating
blog rant faster than you can say &quot;Fred's your uncle.&quot;  (Sometimes, happily, I
think better of it before pushing the post out to the Web, but often not.)
&lt;/p&gt;


&lt;p&gt;
So, I end up with a strong bias toward rants.  Probably not the best.
&lt;/p&gt;


&lt;p&gt;
&lt;b&gt;3. Domain blogging would be good.&lt;/b&gt;
&lt;/p&gt;


&lt;p&gt;
What could fix this?  Well, &quot;domain blogging&quot; is one possibility, where I
create a single blog based on one topic and really hammer on it.  (I've tried
vainly to separate things into categories here but they end up pretty spread
out with no critical mass in any one.)
&lt;/p&gt;


&lt;p&gt;
The problem with domain blogging in my main domain of activity -- venture
capital finance of early stage tech companies -- is that the best and
meatiest observation and analysis of the industry is the &lt;em&gt;worst&lt;/em&gt; possible
thing you can put into a public blog.  
&lt;/p&gt;


&lt;p&gt;
My job is all about relationship, resource, and information asymmetry.  We
make it our job, eight days a week, to cultivate relationships with the right
people, to raise funds for our discretionary deployment, and to form
proprietary opinions on market and technology trends.  Then, we go around
trading and arbitraging these things, like for like, and for equity in a
startup, and eventually for dollars returned to our investors.
&lt;/p&gt;


&lt;p&gt;
So, the meatiest things I could post here would be about those relationships,
or resources, or that information.  Which, of course, is like laying out a
dish of dollars for all your competitors to see.
&lt;/p&gt;


&lt;p&gt;
Within the world of VC, my situation is generalizable, but not universal.
Back to our exemplar &lt;em&gt;par excellence&lt;/em&gt; (sorry, Fred), there actually &lt;em&gt;are&lt;/em&gt; some
circumstances in which radical openness within the domain is a successful
strategy.  If you can, leveraging the Web, get a dominant mindshare among the
wired crowd by means of your openness, you might cast a much larger shadow
than you really have, and actually &lt;em&gt;attract to yourself&lt;/em&gt; valuable
relationships, resources, and info.  But it's a fat-tail game even within the
fat-tail industry of VC, and it's risky: it's like shooting the moon in
Hearts.  Or like chopping blocks of ice with your hand.  If you break through,
you're golden!  But if you don't, you've only managed to harm yourself in the
process.
&lt;/p&gt;


&lt;p&gt;
It's probably OK for me to keep posting observations on the quirks of the
industry, or purely functional / mechanical advice for newcomers, like my 
&lt;a href=&quot;//blog.rlucas.net/vc/vc_jargon.html&quot;&gt;&quot;VC Jargon&quot;&lt;/a&gt; post.
&lt;/p&gt;


&lt;p&gt;
&lt;b&gt;4. Don't shit where you eat.&lt;/b&gt;
&lt;/p&gt;


&lt;p&gt;
There's another issue with domain blogging, too.  The more senior, and more independent,
the VC blogger, the more he can get away with.  Junior executives of any
stripe remain, in certain ways, beholden to the norms of their seniors.
(I touched on this in 
&lt;a href=&quot;//blog.rlucas.net/vc/vcs_and_the_naughty_bits.html&quot;&gt;&quot;VCs and the Naughty Bits.&quot;&lt;/a&gt;)
Even a completely independent entrepreneur, unless he wants forever to bootstrap or
self-fund, can't stray too far from the comfort zone of his investors while
in the public eye.  (Nobody's smacked me down for this yet, but at this rate
it's only a matter of time until I piss off the wrong person.)
&lt;/p&gt;


&lt;p&gt;
I used to think that, amongst the giants of this industry, I was like a court
jester -- free to say whatever I thought, or whatever might seem funny or
entertaining, even if it involved the king.  How could the king get upset at a
mere jester?  A few events I've been to recently have changed my mind.  Do you
really want to be introduced over cocktails to someone whom you've accused
(even indirectly) of having the skill set of a  &quot;retarded chimpanzee?&quot;  Yeah,
me neither.  Seattle's a small town, but guess what?  Silicon Valley's a small
valley (sic), NYC's a small metropolis -- in fact, it turns out it &lt;em&gt;is&lt;/em&gt; a
small damn world, after all.  The chances of me sitting next to any given F50
CEO, Senator, Rails core developer, or hedge fund manager are individually
pretty small, but OR'ed together and over a few years, end up approaching p=1.
Might not want to badmouth too much (even if it is &lt;em&gt;sort of&lt;/em&gt; in good humor and
&lt;em&gt;mostly&lt;/em&gt; about the issues, not the people).
&lt;/p&gt;


&lt;p&gt;
(Note that it does not escape me that this is one of the self-reinforcing
traits of capitalism: every step up the ladder of wealth and influence that
one takes is simultaneously a greater investment in the same system and a
deeper barb into one's flesh.  One is less and less able to speak truth to
power the higher one gets; gotta keep one's reputation for playing a good
clean game.  Want to silence those upstart rabble-rousers?  No need for a hit
man; just give 'em promotions and fat raises.)
&lt;/p&gt;


&lt;p&gt;
&lt;b&gt;5. The problem with Steely Dan.&lt;/b&gt;
&lt;/p&gt;


&lt;p&gt;
Blogs are ostensibly written for the outside world to read.  The author is
dying to be a star, and make them laugh, right?  But we all know that &lt;em&gt;really&lt;/em&gt;,
blogs are written &lt;em&gt;for the writer to write.&lt;/em&gt;  The further out the long tail
the blog is, the truer this is, until N(readers) approaches 1, the author
himself.
&lt;/p&gt;


&lt;p&gt;
At the peak, I had just over a thousand uniques monthly to the blog (most
were RSS readers).  Yay!  Even I can't go visit my own blog from a thousand
different cybercafes each month, so there must have been some actual readers.
But let's make no mistake: I was getting no material (in either sense)
benefit from my readership, so we can pretty much assume I was writing just
for moi.
&lt;/p&gt;


&lt;p&gt;
And so, predictably, I indulged myself with things like addressing the &quot;gentle
reader&quot; and making gratuitous references to Steely Dan or Beatles lyrics.
This alone isn't a huge problem, but it doesn't exactly help mitigate the
other issues.  (&quot;Hey, this VC associate just said my developers must have
ordered extra lead paint chips on their breakfast cereal before coding the UI
for my product, but then he threw in a line from 'Pretzel Logic' in the same
post.  Maybe he's not so bad after all!&quot;)  Jackass allusions are fun easter
eggs when a co-conspirator spots them, but they just confuse everyone else and
make them think you're off-kilter.
&lt;/p&gt;


&lt;p&gt;
&lt;b&gt;6. Technical commentary is still appropriate.&lt;/b&gt;
&lt;/p&gt;


&lt;p&gt;
Technical commentary, including bug fixes and product reviews, are still very
much appropriate.  I think that using adult language is still probably OK,
too, although after reading the now-infamous
&lt;a href=&quot;//www.zedshaw.com/rants/rails_is_a_ghetto.html&quot;&gt;Zed's commentary on Rails&lt;/a&gt; I am
rethinking just how cool it actually is to use the potty-mouth when talking
about software.
&lt;/p&gt;


&lt;p&gt;
&lt;b&gt;7. Conclusion and next steps.&lt;/b&gt;
&lt;/p&gt;


&lt;p&gt;
Sadly, this means I will be stripping most of the humanity and voice from the
blog.  Which is OK since, frankly, the &quot;radically open ranting voice&quot; wasn't
the best version of my voice anyhow.  It also means I'm going to back and
strike all the &quot;big red words&quot; from this little blog, or at least the most
rant-a-licious parts.  Sure, they'll still be cached somewhere, so an amateur
historian of the inconsequential could still see just how indiscreet I once
was.  But this isn't about revoking or burying what once I said, but merely
taking it off display, thus failing to renew implicitly my imprimatur.  
&lt;/p&gt;


&lt;p&gt;
And so now, gentle reader, this author as you have known him must say adieu.
Not radically closed, quite, but back to the paleo-openness of Web 1.0 goes
this blog.
&lt;/p&gt;


&lt;p&gt;
$Id: against_blogging.txt 1069 2008-03-12 17:52:35Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Entering a Hard Line Break in a Text Cell in Excel 2004 for Mac OS X</title>
    <link>http://rlucas.net/blog/index.rss/2007/11/12#excel_mac_os_x_line_break</link>
    <description>&lt;p&gt;

No cutesy commentary for once:
&lt;/p&gt;


&lt;p&gt;
The equivalent on Mac OS X of alt-enter for entering a hard line break within a cell in
Excel is command-control-enter (open apple-control-enter).
&lt;/p&gt;


&lt;p&gt;
$Id: excel_mac_os_x_line_break.txt 1025 2007-11-13 04:11:18Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Microsoft: Clueless or Actively Hostile to Search?</title>
    <link>http://rlucas.net/blog/index.rss/2007/11/01#msft_clueless_or_actively_hostile</link>
    <description>&lt;p&gt;

I know that large enterprises have traditionally taken a lot longer to get
clues, both generally, and specifically around &lt;b&gt;search&lt;/b&gt;.  To some extent, this
is just a factor of organizational size: 
&lt;a href=&quot;//voyagercapital.com/&quot;&gt;Voyager&lt;/a&gt;'s awesomely successful 
&lt;a href=&quot;//semdirector.com/&quot;&gt;enterprise search marketing company, SEMDirector&lt;/a&gt;, is
helping enterprises learn to adapt to this brave new world, and creating a
lot of value doing it.
&lt;/p&gt;


&lt;p&gt;
Of all big enterprises, Microsoft is one that we'd &lt;em&gt;expect&lt;/em&gt; to be
relatively early on the search bandwagon.  After all, they've largely
reoriented the company around search and advertising.
&lt;/p&gt;


&lt;p&gt;
But inexplicably, the &lt;em&gt;very best assets&lt;/em&gt; that Microsoft has from a
search-marketing content perspective -- the gigs
and gigs of support info and (heh) bug workarounds on their massive, 
persistent, ubiquitous installed base -- are 
&lt;em&gt;piss-poorly optimized for search!&lt;/em&gt;
&lt;/p&gt;


&lt;p&gt;
Sometime, try searching for something like, oh, say:
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;exchange server pop mail marked as read

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
...which you might do if, like me, you're frustrated that MSFT's latest
version of Exchange server can't seem to support POP3 access without flagging
all the POP'ed messaged as read (thereby screwing up the flawed but &lt;em&gt;de facto&lt;/em&gt;
organizational method that Outlook has trained us all to use over the years).
(Yes, it's a real problem; no, I haven't found a solution.)
&lt;/p&gt;


&lt;p&gt;
Well, the first several hits are forums, blogs, and ISV's offering solutions.
Somewhere around 9th place comes a hit from Microsoft, though, and you're
thinking: &quot;Great! these forum postings are people complaining, but the
solution will just be right here in the handy Microsoft link!  Boy, what
smart guys they are!&quot;  So you click on 
&lt;a href=&quot;//support.microsoft.com/ph/2520/en-us/?sid=78&amp;amp;aid=2&amp;amp;GSA_AC_More2&quot;&gt;Microsoft Office Outlook 2003 Solution Center&lt;/a&gt;
... 
&lt;/p&gt;


&lt;p&gt;
...and what you get back is a huge page full of what I can only describe as
&quot;useless crap&quot;.  Twenty or thirty topics, all loosely grouped around a product,
but nothing apparently on my problem.  A confusing mess of acronyms and key
terms.
&lt;/p&gt;


&lt;p&gt;
Sigh.  OK, So then you pull out the backup.  Use your browser's
in-page-search (cmd-f) to find &quot;POP.&quot;  Surely, one of these thirty topics is
about what I want, I just need to find it here.  (Though, isn't that what the
search engine was supposed to have done?  Whatever.)
&lt;/p&gt;


&lt;p&gt;
Search: &quot;POP.&quot;  A few instances, but nothing relevant.  OK, Search: &quot;marked
as read.&quot;  One instance, but describes the &lt;em&gt;opposite&lt;/em&gt; of my problem.  How
about &quot;marked as unread.&quot;  Also irrelevant.
&lt;/p&gt;


&lt;p&gt;
Now you sit back and scratch your head: Every single other link in Google,
prior to the Microsoft link, was relevant (if not useful) to my particular
problem and my carefully worded query.  Now comes the link from the very
author of my misery, the Leviathan, and NOT A SINGLE G.D. SENTENCE is
relevant to my problem!!
&lt;/p&gt;


&lt;p&gt;
&lt;em&gt;And that's when it hit me:&lt;/em&gt; Microsoft's &quot;support&quot; pages are actually &lt;b&gt;search engine spam&lt;/b&gt;.
&lt;/p&gt;


&lt;p&gt;
(And Google has properly detected this: that's why for Microsoft's own
product, and despite Microsoft's huge &quot;Google Juice,&quot; its own support pages
rank a pitiful 9th.)
&lt;/p&gt;


&lt;p&gt;
The answer to what needs to be done is fairly simple.  (Our friends at
SEMDirector could walk you through it.)  Push the search engine juice out to
the edges of the graph (leaf nodes with real info, rather than these
pseudo-indices which serve only to conflate keywords together that don't
belong on the same page); let real human end-users discuss topics, using words that
come naturally to them (and hence to other help-seekers); engage external
bloggers and forums both to push info out into the ecosystem and to get deep
links back in to the leaf nodes.  
&lt;/p&gt;


&lt;p&gt;
(Back in 2004, I was seeing this kind of search-friendly
behavior on HP's server support forums, and it was AWESOME.  But then, that
was all about running Linux on a well-engineered, open platform.)
&lt;/p&gt;


&lt;p&gt;
All of the above recommendations are anti-hierarchical, control-ceding,
conversation-seeding moves.  They require a mental move from hold on tightly
to let go lightly.  I'm talking about not just opening the kimono, but playing
volleyball on the nude beach.  Do you think that a company unable to do that
with its support pages is going to be able to embrace a whole new and
orthogonal, search-and-ads based strategy?
&lt;/p&gt;


&lt;p&gt;
$Id: msft_clueless_or_actively_hostile.txt 1051 2008-01-11 05:17:26Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>wxPerl on Mac OS X must be run with special binary</title>
    <link>http://rlucas.net/blog/index.rss/2007/10/04#wxperl_mac_os_x_must_use_special_binary</link>
    <description>&lt;p&gt;

If you are having trouble with your &quot;hello world&quot; wxPerl script
on Mac OS X, check your shebang (&lt;tt&gt;#!&lt;/tt&gt;) line and make sure you're running
&lt;tt&gt;/usr/bin/wxPerl&lt;/tt&gt; (or &lt;tt&gt;which&lt;/tt&gt; ever &lt;tt&gt;wxPerl&lt;/tt&gt; you have) rather than
merely &lt;tt&gt;/usr/bin/perl&lt;/tt&gt; -- the normal perl will display the main window
but won't allow interaction between the window and the interface (e.g. you
can see hello world but can't click the button).
&lt;/p&gt;


&lt;p&gt;
&lt;a href=&quot;//www.nntp.perl.org/group/perl.wxperl.users/2007/06/msg3181.html&quot;&gt;This posting&lt;/a&gt;
seems to imply that Mac OS X 10.4 comes with a wxPerl installed; you can also
get it via &lt;tt&gt;cpan&lt;/tt&gt; / &lt;tt&gt;cpanp&lt;/tt&gt; or from the wxPerl website if you don't have it
on your Mac.
&lt;/p&gt;


&lt;p&gt;
$Id: wxperl_mac_os_x_must_use_special_binary.txt 997 2007-10-04 16:52:41Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Everything Old Is New Again: Innovation to Adoption Lag</title>
    <link>http://rlucas.net/blog/index.rss/2007/09/12#everything_old_is_new_again</link>
    <description>&lt;p&gt;

There are a lot of problems in software that aren't solved well in a
ubiquitous product (think PIMs, Personal Information Managers; they all suck
royally despite everybody's best efforts, and the OSAF Chandler project has
taken years trying to redesign the very concept, with little to show for it to
date).  But there are precious few problems that haven't been solved &lt;em&gt;at all&lt;/em&gt;.
&lt;/p&gt;


&lt;p&gt;
In fact, a ton of things that are being held up these days as &quot;innovations&quot;
are rehashes of old concepts from the 90s, or the 80s, or sometimes even the
70s.  Today this came into sharp focus when I saw
&lt;a href=&quot;//www.w3.org/DesignIssues/RDFnot.html&quot;&gt;this bit&lt;/a&gt; from a circa 1999
document on the Semantic Web by the Right
Reverend Tim Berners-Lee.  Here he asks, then answers, a question:
&lt;/p&gt;


&lt;p&gt;
&amp;lt;blockquote&amp;gt;
Surely all first-order or higher-order predicate caluculus based systems
(such as KIF) have failed historically to have wide impact?
&lt;/p&gt;


&lt;p&gt;
The same was true of hypertext systems between 1970 and 1990, ie before the
Web. Indeed, the same objection was raised to the Web, and the same reasons
apply for pressing on with the dream.
&amp;lt;/blockquote&amp;gt;
&lt;/p&gt;


&lt;p&gt;
Then, while searching for some theory on append-only databases (such as would
be used in a revision-control system), I came across
&lt;a href=&quot;//www.cs.cmu.edu/~dmaltz/main-report/main-report.html&quot;&gt;this 1994 piece&lt;/a&gt;
on &quot;collaborative filtering.&quot;  That report in turn points to earlier work on
&quot;Information Tapestry&quot; from the early 1990s.
&lt;/p&gt;


&lt;p&gt;
So: 1970-1990, hypertext exists and is studied in CS departments.  1995,
Netscape IPO.  Early 1990s, collaborative filtering exists and is studied in
research labs.  2006-2007, rise of Digg and Delicious.
&lt;/p&gt;


&lt;p&gt;
I think there's a very strong case to be made that VCs should &lt;em&gt;stop&lt;/em&gt; looking
for &quot;innovation,&quot; &lt;em&gt;per se&lt;/em&gt;, and start looking for 10-20 year old CS masters'
theses that touch on an emerging market space...
&lt;/p&gt;


&lt;p&gt;
$Id: everything_old_is_new_again.txt 986 2007-09-13 00:57:24Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>The Magical Coefficient of Motorcycling</title>
    <link>http://rlucas.net/blog/index.rss/2007/09/06#the_magical_coefficient_of_motorcycyling</link>
    <description>&lt;p&gt;

There are a few things in Nature that seem like magical numbers.  One is /e/.
Another is the Golden Ratio.  Another more applied version is 4 degrees C,
the temperature at which water has its maximum density (thereby guaranteeing
the action of thermal inversion, which prevents all of life from going
extinct every few thousand years during an Ice Age).
&lt;/p&gt;


&lt;p&gt;
There's one for the world of motorcycling as well.  But it's more boring if I
just tell you want it is, so here's a bit of setup:
&lt;/p&gt;


&lt;p&gt;
Think about flying down the freeway at 60 or 70 MPH.  Sure, you are ATGATT
(all the gear, all the time -- no skin below the chin) and are helmeted, but
doesn't it seem crazy not to wear a seatbelt or &lt;em&gt;something&lt;/em&gt;?  (This sentiment
dates me as being of the generation that grew up with mandatory seatbelt
laws.)  How the hell can you hold on to something going 70 MPH?
&lt;/p&gt;


&lt;p&gt;
Well, it's only &lt;em&gt;sort of&lt;/em&gt; crazy.  It turns out that &lt;em&gt;holding on to&lt;/em&gt; (or
rather, &lt;em&gt;not falling off of&lt;/em&gt;) something going 70 MPH is a damn sight easier
when you're going 70 MPH along the same vector.  What really matters is the
acceleration involved.  You at 0 MPH, bike at 70 MPH = bad news; you and bike
both at 70 MPH = OK.
&lt;/p&gt;


&lt;p&gt;
But, you may counter, how the heck can you &lt;em&gt;get&lt;/em&gt; to 70 MPH?  Isn't that quite
an acceleration, one that we usually encounter while strapped in with our
backs against a DOT-approved seat?
&lt;/p&gt;


&lt;p&gt;
Well, yes.  But your acceleration is really bounded by one thing: the
friction of your tires on the pavement.  (You can have a stronger engine or
tighter brakes, but they only are effective to the limit of your tires' grip.)  
As it turns out, the natural properties of rubber make it so that you get
about 1.1 g of traction on dry pavement.  Torque your wheel faster, you spin
out (or slow it more than that, you'l skid).  Hence, as long as the bike
isn't cheating -- starting or stopping using something besides the tires
(like a rocket JATO or a brick wall) -- you're basically limited to applying
about 1.0 g.
&lt;/p&gt;


&lt;p&gt;
And guess what?  Human bodies and minds happen to be really good at dealing
with 1.0 g.  In fact, you might say that the whole of bipedalism is just
drill for how not to tumble against the pull of 1.0 g.  So, from the day you
first pulled yourself up as an infant, you were practicing the skill needed
to hang onto the handlebars during a 1.0 g acceleration.
&lt;/p&gt;


&lt;p&gt;
And that, my friends, is the magical coefficient of motorcycling: the
traction of rubber on dry pavement.  And that is why it's maybe not so crazy
to go 70 MPH without a seatbelt after all.
&lt;/p&gt;


&lt;p&gt;
(&lt;em&gt;Pace&lt;/em&gt;, engineers: I know that my explanation is oversimplified, but it's
roughly right.)
&lt;/p&gt;


&lt;p&gt;
(And to the safety-concerned: your biggest concerns, of course, are exogenous
to the question of traction: it's when you &lt;em&gt;do&lt;/em&gt; hit a brick wall, or when you
start testing the friction of leather on pavement, that you really get hurt.)
&lt;/p&gt;


&lt;p&gt;
$Id: the_magical_coefficient_of_motorcycyling.txt 1123 2008-07-28 03:13:38Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Bubble Factors: Real Change, Easy Credit, and Self-Interested Lies</title>
    <link>http://rlucas.net/blog/index.rss/2007/08/30#bubble_factors_change_credit_lies</link>
    <description>&lt;p&gt;

Look at &quot;Bubble 1.0&quot; (as it's known in the relatively young tech industry:
the 1997-2000 tech-media-telecom bubble and the general IPO / equity 
bubble that went along with it).
&lt;/p&gt;


&lt;p&gt;
1. A real change occurred -- the uptake of Internet technology -- and created
some initial successes (think Netscape IPO).  This got folks thinking about
how to turn a profit, lighting aflame the animal spirits, and buoyed the mood
of the markets.
&lt;/p&gt;


&lt;p&gt;
2. Accommodative monetary policy made money cheap, and in combination with
the buoyant mood and the animal spirits, led to compressed risk premia in the
capital markets.  Think insatiable demand for IPOs, and Fed rate-slashing due
to LTCM in 1998.
&lt;/p&gt;


&lt;p&gt;
3. Sensing opportunity (and driven to madness by their proximity to money
with no ability to make it themselves), those in charge of telling the truth,
like auditors, started fudging things in order to keep the good times rolling
and to get a slice o' Cheddar for themselves.  Think Arthur Andersen and
Enron.
&lt;/p&gt;


&lt;p&gt;
Now, let's take a look at Housing in 2002-2007.
&lt;/p&gt;


&lt;p&gt;
1. A real change occurred.  Think a palpable change in national mood and
priorities post-bubble and post-9/11.  In the realm of personal finance, we
saw an aversion to &quot;paper&quot; assets and a move toward the real and
tangible.  To many people, this meant plowing what was left from equities
into real estate, which had already been enjoying decent returns from the
wealth effect of Bubble 1.0.
&lt;/p&gt;


&lt;p&gt;
2. Accommodative credit.  Think not only macro level, Fed funds rate stuff,
but no-doc loans, NINJA (no income, no job or assets) loans, ARMs, option
ARMs, interest-only loans, etc.
&lt;/p&gt;


&lt;p&gt;
3. The truth-tellers started lying.  Think the house appraisers here who were being
incentivized to keep the party going at risk of losing business from the real
estate agents, and the mortgage &quot;officers&quot; who were effectively the &quot;buyer
apraisers,&quot; incentivized to keep the party going directly due to fee
structures.  Nobody in either group called foul on the prices or the
creditworthiness in question.
&lt;/p&gt;


&lt;p&gt;
This formula works pretty good, although it's loose enough that its
predictive power is probably fairly weak (better for validating a thesis than
for scouting out a new bubble in progress).  Any other ideas as to bubbles where we can
look for these factors?
&lt;/p&gt;


&lt;p&gt;
$Id: bubble_factors_change_credit_lies.txt 978 2007-08-30 22:42:36Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Textmate Cheat Sheet</title>
    <link>http://rlucas.net/blog/index.rss/2007/08/14#textmate</link>
    <description>&lt;pre&gt;
 Option+PgDn    Page down while moving cursor (caret)
 Esc            Autocomplete
 Command+/      Comment/Uncomment (Ruby, at least)
 Ctrl+Command+V Paste without reindenting

$Id: textmate 973 2007-08-15 00:56:21Z rlucas $
&lt;/pre&gt;</description>
  </item>
  <item>
    <title>VCs and the Naughty Bits</title>
    <link>http://rlucas.net/blog/index.rss/2007/08/09#vcs_and_the_naughty_bits</link>
    <description>&lt;p&gt;

I spotted
&lt;a href=&quot;//paul.kedrosky.com/archives/2007/07/26/vcs_hugging_por_1.html&quot;&gt;a piece by Paul Kedrosky&lt;/a&gt; 
today during a blog-feeds-catchup-session where Paul talks about a sort of
&quot;(minimum) two degree of separation&quot; rule that VCs maintain between themselves and the
sex industry.  (Quotes above for my words, not his.)  In other words:
benefiting from infrastructure, transport, payment mechanisms -- cool.
Having fleshy bits linked to from the portfolio companies page -- not cool.
&lt;/p&gt;


&lt;p&gt;
This reminds me of an early experience I had at Voyager.  We were looking at
a company that was building an online search / social media app.  They talked
about people using it for various applications -- consumer, enterprise, small
business, blah blah blah.  We were just about to the end of the pitch, when I
asked pretty straightforwardly: &quot;So, what's the sex angle here?  Is there an
application in dating or porn?&quot;
&lt;/p&gt;


&lt;p&gt;
The room went silent.
&lt;/p&gt;


&lt;p&gt;
I pushed on, oblivious to the mood that had just chilled like a shot of
Jaeger down an ice luge.  &quot;You know, like VHS, or modems for BBSes, or early
adoption of Web marketing tricks like affiliate programs and popups,&quot; I
articulated despite the intrusion of my foot now rapidly entering my oral
cavity.  &quot;Is there a strategy for accelerating adoption around that content?&quot;
&lt;/p&gt;


&lt;p&gt;
The founders were visibly uncomfortable.  Mercifully, my boss was not pissed, just
bemused.  &quot;I ... I guess people could use it for other things, too,&quot; said one
of the founders, finally.  Handshakes all around, a quick note on our investment
process, and we'll get back to you after next week's partner meeting, ciao
for now.
&lt;/p&gt;


&lt;p&gt;
Oops.  Back at the office, this is &lt;em&gt;addressed&lt;/em&gt;.
&lt;/p&gt;


&lt;p&gt;
&quot;Randall, in the venture business, we have certain things we don't &lt;em&gt;talk&lt;/em&gt;
about, and certain things we don't &lt;em&gt;invest in&lt;/em&gt;, due to a number of reasons.&quot;
&lt;/p&gt;


&lt;p&gt;
At the time, I'm thinking: OK, VCs are pillars of the community, have to show
up at the Opera, at the charity events, at the B-school reunions, and can't
be branded pornographer or such.  I filed this away under the &quot;shit not to
talk about, Einstein&quot; filter, along with ever admitting to listening to
Journey, or denigrating tattoos while speaking to anyone whom you've never seen
fully naked.
&lt;/p&gt;


&lt;p&gt;
But now, Paul Kedrosky gives me a flashback and with a key piece of insight.
It's a &lt;em&gt;follow the money&lt;/em&gt; moment: &quot;... until the venture business is funded by
groups other than pension funds, trusts, and endowments (ahem), the
likelihood of mainstream VCs ever getting beyond flirtations 
[[with the sex business]] is vanishingly small.&quot;  Yep, &lt;em&gt;follow the money&lt;/em&gt;.
The paymasters here are the Prudent Men, the real stodgy guys, the Trustees
and the Chairmen and the Stewards and the Overseers.
&lt;/p&gt;


&lt;p&gt;
And frankly, this is probably a good thing.  It's a little like the Senate.
You don't want the country entirely run by a bunch of pasty old white dudes,
most all millionaires, 60 years old and who won't be fired for 12
years (&lt;a href=&quot;//www.senate.gov/reference/resources/pdf/RS22007.pdf&quot;&gt;on average&lt;/a&gt;), 
and who probably still think that Kudzu and the missile gap are our biggest
national problems.  But you don't want a bunch of whippersnappers on the make
driving all your big decisions without recourse to the accumulated wisdom of
years past.
&lt;/p&gt;


&lt;p&gt;
The real test will be if one of the trendsetter endowment funds like Harvard
or Yale green lights a VC or PE investment that targets the sin sectors.  If
that ever happens, then the VC business will start to get a lot more
(directly) involved in the naughty bits...
&lt;/p&gt;


&lt;p&gt;
$Id: vcs_and_the_naughty_bits.txt 969 2007-08-09 18:19:32Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Liquidation Preferences: A Response to Leo Dirac</title>
    <link>http://rlucas.net/blog/index.rss/2007/08/08#vc_liquidation_preference_response_to_dirac</link>
    <description>&lt;p&gt;

In
&lt;a href=&quot;//www.embracingchaos.com/2007/07/liquidity-prefe.html&quot;&gt;a recent blog entry&lt;/a&gt;, 
Leo Parker Dirac poses the question of the fairness of liquidation
preferences in VC financings of startups.  He's going to be delivering a
lightning talk based on it tonight at 
&lt;a href=&quot;//igniteseattle.com/&quot;&gt;Ignite Seattle&lt;/a&gt;.
&lt;/p&gt;


&lt;p&gt;
(To those of you who don't know, liquidation preferences, or prefs, are
usually a multiple of invested dollars that a VC gets out &lt;em&gt;first&lt;/em&gt;, before
anyone else is paid.  This is because if you take $10 M from a VC for half
your company, then shut down the company one second
after depositing the VC's check, he would only have a claim on half of it,
thereby snookering him out of $5 M.  To avoid this outcome, and due to our
general greed, we VCs like to ask for at least a 1.0x preference, meaning
that you have no incentive to shut down the company until you've grown it
to something more than our investment dollars.) 
&lt;/p&gt;


&lt;p&gt;
His conclusion seems to be that liq prefs can be fair if transparently
communicated to all parties.  Of course, this implies that sometimes, details
of prefs are &lt;em&gt;not&lt;/em&gt; communicated clearly.
&lt;/p&gt;


&lt;p&gt;
How can this be?  I've seen many tens of term sheets, and never once have I
seen one that uses invisible ink.  Neither have I ever seen a term sheet that
has a clause invalidating it if you show it to your lawyer.  In short,
&lt;em&gt;there is never a case where an entrepreneur isn't reasonably informed about prefs&lt;/em&gt;.
&lt;/p&gt;


&lt;p&gt;
Let me construct an example.  Say that you're a first-time entrepreneur, and
that you don't have anyone on your exec team, nor on your board of directors,
nor among your existing investors, who's ever seen a term sheet before.  (I
was in that spot starting my first company back in 2000, by the way.)  And,
let's say, you get hold of a term sheet that casually throws out there
something like 
&quot;&lt;em&gt;holders of Series A shall be entitled to an amount per-share equal to two times the per-share price...&lt;/em&gt;&quot;
and you don't know what it means.
&lt;/p&gt;


&lt;p&gt;
Well, one thing I can absolutely promise you is that no VC is trying to sneak
one by you for a shot at 2x his money.  A VC investment just takes way too much
heartache and worry and effort -- not to mention opportunity-cost of not
investing in the billion-dollar blockbuster every VC's looking for -- for a
VC to fuck around with &lt;em&gt;taking a chance&lt;/em&gt; at cheating you out of a couple
million (remember, he has to give all but 20% of that profit to his
investors, and split that 20% through some formula of his partnership, so
even if he cheats you out of $5 M he's not going to deposit more than a few
hundred $k in the bank, and that's at risk of losing his several hundred $k per
year sinecure for a GP of a decent-sized fund).
&lt;/p&gt;


&lt;p&gt;
Another thing I can promise you is that no VC &lt;em&gt;ever&lt;/em&gt; wants you to sign
anything without reading it and having your lawyer read it twice.  Think
about this one for just a second: I'm about to wire you enough money to buy
twenty or thirty Porsches, based on the notion that you're a brilliant
businessman who's going to make us both rich.  Do I want to give thirty
Porsches worth of cold, hard cash to 
the kind of guy &lt;em&gt;who signs deals without reading the contract???&lt;/em&gt;
Seriously: I want you to be the slickest of salesmen, the toughest of
negotiators, and the most diligent of dealmakers (not to mention a prodigious
engineer, a revered leader, and a master marketer).  VCs do &lt;em&gt;not&lt;/em&gt; want to
give money to sloppy suckers who can't be bothered to read and understand a
term sheet -- including seeking savvy legal counsel when appropriate!
&lt;/p&gt;


&lt;p&gt;
Now, having said all this, there are at least two cases where Leo's thinking
really &lt;em&gt;does&lt;/em&gt; apply to the question of liq prefs.  (It shows of Leo that his 
thinking on the matter of prefs is mostly abstract, that he
does not mention either of these two cases.)
&lt;/p&gt;


&lt;p&gt;
The first case is where you are dealing with a fake VC.  A &lt;b&gt;real&lt;/b&gt; VC is someone
who spends &lt;em&gt;full time&lt;/em&gt; managing a fund of &lt;em&gt;committed&lt;/em&gt; capital from one or
more &lt;em&gt;arm's length&lt;/em&gt; investors, which capital amounts to at least, say, &lt;em&gt;$10 M&lt;/em&gt;
per general partner and is entirely meant to be invested in growth companies
for the purpose of &lt;em&gt;financial returns&lt;/em&gt; primarily via capital appreciation. 
A fake VC is anyone else who calls himself a VC without pointing out the
major differences with the above.  And a fake VC has God-knows-what sort of
motivation and may well want to swindle you out of a preference multiple.
&lt;/p&gt;


&lt;p&gt;
Your uncle who owns a chain of bagel shops is not a VC.  A hedge fund is not
a VC.  A dude who claims to represent a group of &quot;anonymous Asian industrial
families&quot; is not a VC.  Anyone who is keeping his day job is not a VC.  Real
estate guys are not VCs.  Note that this doesn't mean they are bad people
(unless they pretend to be VCs, in which case they are &lt;em&gt;fake VCs&lt;/em&gt;).  It just
means that the ground rules that you can understand all VCs to play by don't
apply.
&lt;/p&gt;


&lt;p&gt;
If you're not dealing with a real VC, read everything three times and have your
lawyer read it six.
&lt;/p&gt;


&lt;p&gt;
The second case is in follow-on rounds where the company is in a distressed
situation.  Everything Leo talks about (and everything I assume in the first
part of this post) is about the moment &lt;em&gt;before&lt;/em&gt; you take your first VC
investment: do I take this capital, with its strings attached, for a shot at
building my dream?  The alternative there is to simply walk away, and go back
to working at Microsoft.  But once you're hot and heavy with a company, once
you've raised money, promised the moon and the stars to your friends and
family, bamboozled the VCs into funding you, alienated all your social
contacts and exacerbated your RSI, hired fantastic people and worked them to
exhaustion and made them love you enough to drink the Kool-aid, extended
commitments based on your word and your honor to customers and suppliers --
only to find that revenues aren't ramping up fast enough and you need cash --
OK, &lt;b&gt;now&lt;/b&gt; you are officially up against a wall.  And precisely &lt;em&gt;now&lt;/em&gt; is when
you will be addled from overwork, and adrenalin-high, and blinded with the
urgency of your need -- and when the sharks will smell blood.
&lt;/p&gt;


&lt;p&gt;
That is when you will get the predatory term sheet.
&lt;/p&gt;


&lt;p&gt;
If Leo wants to do entrepreneurs (and VCs) a favor, he should take a hard
look at what happens then: when you've got a company that still holds
promise, but is in a distressed situation and needs capital for its very
survival.  Exploring those moral complexities is a lot more interesting than
the sort of clean-room, game-theoretical chatter about whether one accepts
term X on a first round of capital.
&lt;/p&gt;


&lt;p&gt;
$Id: vc_liquidation_preference_response_to_dirac.txt 966 2007-08-08 22:49:34Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Rails form_tag Changes in Rails 1.2</title>
    <link>http://rlucas.net/blog/index.rss/2007/08/06#rails_form_tag_changes_in_1-2</link>
    <description>&lt;p&gt;

I recently updated my dev machine (Mac OS X) to the latest Rails gems, and was
getting deprecation warnings for using &lt;tt&gt;form_tag&lt;/tt&gt; in its old, non-block,
pre-Rails 1.2 way.
&lt;/p&gt;


&lt;p&gt;
Then, in moving between my development and acceptance-testing boxes (you &lt;em&gt;do&lt;/em&gt;
have a mirror of your production environment running as an acceptance testing
server before you push things from your laptop to production, right?)
I started getting blank HTML pages out of the testing box.  Whoops.
&lt;/p&gt;


&lt;p&gt;
Well, one thing is that the two different versions of &lt;tt&gt;form_tag&lt;/tt&gt; act
differently with respect to output -- so with the old one, you needed to put:
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;&amp;lt;%= form_tag ... %&amp;gt;

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
While the new one takes:
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;&amp;lt;% form_tag ... do %&amp;gt;
  ...
&amp;lt;% end %&amp;gt;

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
(Note &lt;em&gt;lack&lt;/em&gt; of &lt;tt&gt;=&lt;/tt&gt; sign in the new, block version.)
&lt;/p&gt;


&lt;p&gt;
But that wasn't it.  My problem was that, even with the equal signs fixed, I
was getting no love from my testing box.  Things that should have been
enclosed in the form tag block were just not happening.
&lt;/p&gt;


&lt;p&gt;
My hunch was that the old version of Rails was barfing (this was sort of
true: the new block form of &lt;tt&gt;form_tag&lt;/tt&gt; is not backwards compatible).  I
updated Rails with a one-two punch of &lt;tt&gt;apt-get update; apt-get upgrade&lt;/tt&gt;
mixed with a &lt;tt&gt;gem install rails&lt;/tt&gt;.  No luck.  Aha!  Have to kill and restart
the server process: still, I got no form tag love.
&lt;/p&gt;


&lt;p&gt;
I checked the Rails version with &lt;tt&gt;rails -v&lt;/tt&gt; and got 1.2.3, the latest
version.  &lt;tt&gt;gem list&lt;/tt&gt; showed that 1.2.3 was coexisting with some older
versions.  Aha!  And a real aha this time -- for this was, it turns out, the
problem.
&lt;/p&gt;


&lt;p&gt;
Thanks to the folks who author the
&lt;a href=&quot;//technoweenie.stikipad.com/plugins/show/Acts+as+Authenticated&quot;&gt;acts_as_authenticated&lt;/a&gt;
wiki.  It was there that I found a reminder that the &lt;tt&gt;RAILS_GEM_VERSION&lt;/tt&gt;
variable, in &lt;tt&gt;config/environment.rb&lt;/tt&gt;, can be set to peg which, among several
possible installed versions of Rails, the app will use.
&lt;/p&gt;


&lt;p&gt;
It appears that if you comment out &lt;tt&gt;RAILS_GEM_VERSION&lt;/tt&gt;, you get the latest
installed version -- which in my case fixed it to use 1.2.3, thereby giving
me my &lt;tt&gt;form_tag&lt;/tt&gt;s back.
&lt;/p&gt;


&lt;p&gt;
$Id: rails_form_tag_changes_in_1-2.txt 964 2007-08-08 00:06:56Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>God Help You If You Get Derailed: &quot;Model is Deprecated&quot;</title>
    <link>http://rlucas.net/blog/index.rss/2007/08/03#god_help_you_if_you_go_off_the_rails-model_is_deprecated</link>
    <description>&lt;p&gt;

The comprehensible but often superfluous &lt;tt&gt;model&lt;/tt&gt; method in Rails is used in
an ActionController to tell it about an ActiveRecord model that it ought to
have loaded in order to have the AR classes available to it.  It's kind of
got the feeling of a &lt;tt&gt;require&lt;/tt&gt; or a &lt;tt&gt;use&lt;/tt&gt; in Perl.  It's fairly
straightforward to reason by analogy about what it does.  
&lt;/p&gt;


&lt;p&gt;
(The only confusing thing, I think, is that it works by imputing a filename
from a symbol representing the class to do its &quot;magic&quot; so if you define
multiple AR classes in a single file, you'd want to make sure that the symbol
that matches the filename containing the multiple classes is what you pass to
the &lt;tt&gt;model&lt;/tt&gt; method.)
&lt;/p&gt;


&lt;p&gt;
But in a nutshell, you stick &lt;tt&gt;model :my_object_class&lt;/tt&gt; in, say, the base
ApplicationController class and you're good to go to use MyObjectClass and
any subclasses defined in the same file.
&lt;/p&gt;


&lt;p&gt;
Well, it &lt;em&gt;was&lt;/em&gt; the way you do it.  Around Rails 1.2, it started barfing up
preemptive deprecation warnings: 
&lt;tt&gt;model is deprecated and will be removed from Rails 2.0&lt;/tt&gt;.  
&lt;/p&gt;


&lt;p&gt;
So, you follow the URL they give you for more info.
Unhappily, nowadays (August 2007), the page they point you to,
&lt;a href=&quot;//rubyonrails.org/deprecation&quot;&gt;//rubyonrails.org/deprecation&lt;/a&gt;, doesn't say anything about &lt;tt&gt;model&lt;/tt&gt;.
WTF, guys?
&lt;/p&gt;


&lt;p&gt;
Googling around tells you that you should use &lt;tt&gt;require_dependency&lt;/tt&gt; instead.
Oh, good.  Way longer to type and harder to remember, but it's OK, 
because &lt;tt&gt;require&lt;/tt&gt; is part of
the language itself and is familiar to those who understand it.  Er, wait:
it's &lt;tt&gt;require_dependency&lt;/tt&gt;, not &lt;tt&gt;require&lt;/tt&gt;:
&lt;a href=&quot;//wiki.rubyonrails.com/rails/pages/RequireDependency&quot;&gt;it's a Rails feature, not a Ruby core language feature.&lt;/a&gt;
&lt;/p&gt;


&lt;p&gt;
Fine, you say, I'll do it if I must.  Just do a replace on those lines, and
you're good, right?  Oh, wait again, now my app is bombing with an error 500,
and the log says &lt;tt&gt;undefined method `ends_with?' for :my_object_class:Symbol&lt;/tt&gt;.
I won't keep you in suspense: you can't give a symbol &lt;tt&gt;:my_object_class&lt;/tt&gt; to
&lt;tt&gt;require_dependency&lt;/tt&gt;, you have to give it a String (&lt;tt&gt;&quot;my_object_class&quot;&lt;/tt&gt;).
&lt;/p&gt;


&lt;p&gt;
All of this highlights a pretty big issue with Rails.  It's really an
infantile, nascent culture.  To keep up with it, you really need to be in
constant conversation with the community (like &lt;em&gt;constant&lt;/em&gt;: I mean, you need
to be sitting in the session at RailsConf with Colloquy open on your MacBook,
chatting about stuff on an hour-by-hour basis).  This isn't &lt;em&gt;bad&lt;/em&gt;, but you
better understand it.  And you better be refactoring your app constantly in
order to keep up with best practices and to be able to use new plugins, 
etc. -- which also isn't &lt;em&gt;bad&lt;/em&gt;, but it's expensive and a hassle.
&lt;/p&gt;


&lt;p&gt;
And to anybody who thinks a Perl app is tough to maintain: yeah, right.  Try
Rails code from a year or so ago if all you know is Ruby and you haven't been
heavily engaged in Rails culture during that time.
&lt;/p&gt;


&lt;p&gt;
&quot;Convention over Configuration&quot; is &lt;em&gt;fine and dandy&lt;/em&gt; as long as you're steeped
in the culture that maintains the shared conventions.
&lt;/p&gt;


&lt;p&gt;
$Id: god_help_you_if_you_go_off_the_rails-model_is_deprecated.txt 962 2007-08-03 18:10:18Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>VC Career Snippets: &quot;The Wormhole&quot;</title>
    <link>http://rlucas.net/blog/index.rss/2007/07/16#vc_career_snippets-wormhole</link>
    <description>&lt;p&gt;

&lt;em&gt;This is the first of a series of &quot;snippets&quot; about getting a job in VC.  I get asked about this approximately weekly, so I am going to try and do a highlights reel of things I tell people or thoughts I come up with on the topic.&lt;/em&gt;
&lt;/p&gt;


&lt;p&gt;
In a nutshell, VC is this weird parallel universe into which there are very
few wormholes.  (To start a career in VC) It helps to distort the space-time
continuum with an extremely concentrated mass of money that you already have. 
&lt;/p&gt;


&lt;p&gt;
$Id: vc_career_snippets-wormhole.txt 948 2007-07-17 02:32:19Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Swik Has Jumped the Shark</title>
    <link>http://rlucas.net/blog/index.rss/2007/07/02#swik_has_jumped_the_shark</link>
    <description>&lt;p&gt;

Seattle-based Open Source startup Sourcelabs put together the Swik.net wiki
a year or two ago.  They seeded it with some links of moderate usefulness, and for a brief
time, it was a decent, if hit-or-miss, way to find information about an open source project
or tool that you were considering using.
&lt;/p&gt;


&lt;p&gt;
No more.  Not only are most of the pages I'm finding on Swik these days simply
a one-link screen-scrape to the actually interesting page (which often ranks
higher in Google alone, anyhow), but Swik has committed the cardinal sin of
infovoria: &lt;em&gt;playing audio that automatically starts on page load.&lt;/em&gt;
&lt;/p&gt;


&lt;p&gt;
(They do this by means of an auto-starting video advertisement that spams up the top bit
of the page.  Not &lt;em&gt;quite&lt;/em&gt; as egregious as a MIDI object, but every bit as annoying.)
&lt;/p&gt;


&lt;p&gt;
Unbelievable.  I thought we'd gotten past this with the turn of the millennium.
But everything old, it seems, is new again.  Swik, however, now gets the same
mental category as &quot;About.com,&quot; namely, ad-filled, nearly unusable results
&lt;em&gt;not&lt;/em&gt; to click when they appear in a web search.
&lt;/p&gt;


&lt;p&gt;
$Id: swik_has_jumped_the_shark.txt 928 2007-07-02 17:46:28Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Spry VPS Mixed Experience Report</title>
    <link>http://rlucas.net/blog/index.rss/2007/06/27#spry_vps_mixed_experiences</link>
    <description>&lt;p&gt;

I've been using an &quot;el cheapo,&quot; $15 / month, 64M RAM Debian GNU/Linux VPS from
&lt;a href=&quot;//spry.com/&quot;&gt;Spry&lt;/a&gt; for a couple weeks now.  Some things to note:
&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;You get X amount of RAM with &quot;burstable&quot; extra ram, but you're not going to get any from the burst.  Everyone else is using it.
&lt;li&gt;There is &lt;b&gt;NO SWAP&lt;/b&gt; as far as I can tell.  When you hit 63.9M of RAM, processes start segfaulting and blowing up.
&lt;li&gt;&lt;tt&gt;free&lt;/tt&gt; and &lt;tt&gt;top&lt;/tt&gt; will lie to you.  &lt;tt&gt;ps -aux&lt;/tt&gt; seems to tell the truth.
&lt;li&gt;You really need to check &lt;tt&gt;/proc/user_beancounters&lt;/tt&gt; as root to get the real number of (4k) pages of memory used, and the number of faults, if you're curious. 
&lt;/ul&gt;
&lt;p&gt;

Too early for a verdict.  But don't count on being able to run the same stuff
on a 64M Spry VPS as you would on a 64M box with a half-gig of swap (grinding
its way through but eventually getting the job done).
&lt;/p&gt;


&lt;p&gt;
$Id: spry_vps_mixed_experiences.txt 920 2007-06-27 19:10:21Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Relational Database Problems</title>
    <link>http://rlucas.net/blog/index.rss/2007/06/26#relational_database_problems</link>
    <description>&lt;p&gt;

Many of these problems arise because RDBMSs are &lt;em&gt;designed&lt;/em&gt; typically with the
conceit of being the sources of truth within the organization (e.g. invoice
#1234 exists &lt;em&gt;because the database says so&lt;/em&gt;), but are often &lt;em&gt;used&lt;/em&gt; to reflect
external truths about the world, which are input messily and which themselves
are often shifting or subject to change in ways not contemplated by the
schema.
&lt;/p&gt;


&lt;h2&gt;I. The entity deduplication problem.&lt;/h2&gt;
&lt;p&gt;

Alice is entering information about companies, and creates a record #1001 for
&quot;Acme Widgets.&quot;  She then adds a bunch of information, including relating
other tables to Company #1001.  For example, she may put in a press clipping
about Acme Widgets, which gets linked by a link table to Company.id==1001.
&lt;/p&gt;


&lt;p&gt;
Then, Bob comes along entering information about companies, and creates a
record #1234 for &quot;Acme Widget Corporation.&quot;  He adds stuff, and includes a
different press clipping, which gets linked to Company.id==1234.
&lt;/p&gt;


&lt;p&gt;
Later, Charlie arrives, and notices that there are two records starting with
&quot;Acme.&quot;  He investigates a bit, and discovers that &quot;Acme Widget Corporation&quot;
is the full legal name of the company that is familiarly called &quot;Acme
Widgets.&quot;
&lt;/p&gt;


&lt;p&gt;
How can Charlie cause the database only to reflect a single Acme which is
associated correctly with both press clippings?
&lt;/p&gt;


&lt;h2&gt;II. The undo problem.&lt;/h2&gt;
&lt;p&gt;

I do some stuff.  Then I change some stuff.  Then later, I want to see how it
was before I changed it.  Tough luck.
&lt;/p&gt;


&lt;h2&gt;III. Bitemporality&lt;/h2&gt;
&lt;p&gt;

Let's include financials on our companies!  Acme revenues are $12 M.  (wait a
year.)  Now Acme revenues are $15 M.  But wait: we now need a couple of slots
for revenues.  Oh, ok, a revenue report is associated with a year.  Acme 2006
revenues were $12 M, 2007 revenues were $15 M.  Wait.  I was wrong.  Acme
2006 revenues were $9 M in reality.  OK, update that.  Now the boss calls up
and wants to know who it was that we told the wrong 2006 number to.  But we
can't, since we don't know what we thought we knew when we thought we knew it.
&lt;/p&gt;


&lt;p&gt;
(In fairness, bitemporality is somewhat easier than the other ones; you just
double-time-stamp everything.  But it's still a pain in the ass.)
&lt;/p&gt;


&lt;h2&gt;IV. The incomplete multi-table entity problem&lt;/h2&gt;
&lt;p&gt;

This one is not &lt;em&gt;really&lt;/em&gt; an RDBMS problem so much as a Web applicaiton
architecture problem.
&lt;/p&gt;


&lt;p&gt;
Doug wants to create a record in our database -- let's say, a &quot;publication.&quot;
The publication must have an &quot;editor&quot; (n:1) and at least one &quot;author&quot; (n:m, m
&amp;gt;= 1).  Doug gets to inserting the publication, but is stopped because it has
a null editor_id, violating the editor constraint.  D'oh!  OK, we can work
around this: good databases permit deferring of constraints until the end of a
transaction.  But in order to make that work with your application, you now
must tightly couple the transactionality between the RDBMS and the server part
of the Web application.
&lt;/p&gt;


&lt;p&gt;
Let's try again with Doug.  He inserts the publication, no sweat, and now can
insert an editor.  Then, he adds some other stuff, like some authors.  (Maybe
Doug is using an AJAX-y Web front-end that lets him add new authors on the fly
without going to a new &quot;screen,&quot; or maybe he has to navigate between modal
&quot;screens&quot; to do this.)  Because he's added multiple different entities (a
publication, an editor, some authors), he gets to feeling that what he's done
is already written to the database.  He leaves without hitting save.  Do'oh!
Two things have now happened: first, the entire graph of all the entities he's
added is in limbo, and second, the server part of the Web app is holding open
a (possibly scarce) connection to the RDBMS (which may or may not, depending
on how fancy the example gets, be holding locks with a SELECT FOR UPDATE...).
&lt;/p&gt;


&lt;p&gt;
The first sub-problem -- the limbo -- seems not that bad, because Doug is used
to losing all his data when he forgets to hit &quot;save&quot; on a desktop application,
so he's fairly well trained and will avoid this.  But if the program is &quot;DRY&quot;
(Don't Repeat Yourself), and especially if it had modal &quot;screens,&quot; Doug
probably hit &quot;save&quot; or &quot;update&quot; or &quot;submit&quot; several times on interfaces that
look like the normal (non-multi-table-entity graph) ones in order to add his
multiple required entities (editors and authors).  Therefore, Doug has a not
unreasonable expectation that he's done his part for saving, based on the fact
that when he edits or creates an author entity in isolation, he uses that
same workflow and it saves OK.
&lt;/p&gt;


&lt;p&gt;
The second sub-problem -- the RDBMS connection -- is sort of more pernicious,
because now Doug isn't just losing (or jeopardizing) data he though he'd
saved, but because he's potentially contributing to a denial or degradation of
service for all users.  This is sort of an artifact of the way that DB
connection pooling evolved from the mid-90s to today.  Traditionally, DB
connections have been scarce and costly to set up (network IO in addition to
whatever socket / semaphore / locks / whatever had to be written to disk).
Therefore, the widespread practice evolved in Web application design to use
connection pooling -- where some subsystem in the server layer makes a bunch
of connections to the database, and then does fast handoffs of DB connections
to application requests, freeing them up when each request is done.  That way,
you can run, say, 300 near-simultaneous requests with, say, 30 database
connections.
&lt;/p&gt;


&lt;p&gt;
Of course, if you're pooling database connections, you pretty much have to run
your entire transaction, succeed or fail, within the space of one application
request (hopefully a sub-500ms affair), since transactions bind to database
connections, but connections don't bind to end-clients (stateless HTTP again).
You &lt;em&gt;can&lt;/em&gt; try and bind the DB connection to a particular client's cookie- or
token-identified session (like &lt;a href=&quot;//seaside.st/&quot;&gt;Seaside&lt;/a&gt; does, I think),
but then you lose out on the ostensible benefits of pooling -- now you need
300 RDBMS connections for your 300 clients, and your DB machine is choked.  
What's more, if Doug leaves his transaction open, and you don't fairly quickly
time it out and kill it, you could end up needing &lt;em&gt;more&lt;/em&gt; than 300 DB
connections for your 300 clients, because you also have 300 old &quot;Dougs&quot; who've
left stale transactions open -- and now your DB machine is &lt;em&gt;crashed&lt;/em&gt;.
&lt;/p&gt;


&lt;p&gt;
&lt;em&gt;I will update this post periodically with other relational database problems, and, I hope, solutions.&lt;/em&gt;
&lt;/p&gt;


&lt;p&gt;
$Id: relational_database_problems.txt 933 2007-07-06 17:17:05Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Apple Occasionally Kicks Ass: A Tech Support Experience</title>
    <link>http://rlucas.net/blog/index.rss/2007/06/22#apple_occasionally_kicks_ass</link>
    <description>&lt;p&gt;

Last night, I was typing happily along on my MacBook Pro, unplugged and on
battery power with about 40% indicated remaining, when &lt;b&gt;bam&lt;/b&gt;, the power went
right out like a light.  Curse words.  Flipped the thing over, and got no LED
action from the battery charge indicators.  Plugged it in and it would boot,
but pull the plug and it goes down hard again.
&lt;/p&gt;


&lt;p&gt;
I had just bought the thing in December 2006, refurbished direct from Apple and
with a 3 year Applecare extended warranty.
&lt;/p&gt;


&lt;p&gt;
Well, I hopped on the bike and made it to the Apple store in the peculiar
ring of hell known as &quot;University Village&quot; (an upscale retail cesspool here
in Seattle.  Aside #1: Never go there.  Aside #2: When you must, ride a
motorcycle or bicycle, because parking is impossible, and the sheer
&lt;em&gt;Schadenfreude&lt;/em&gt; of watching the SUVs joust and jockey while you glide to
within a few meters of your destination almost makes the place bearable).
&lt;/p&gt;


&lt;p&gt;
The Apple storeites had me belly up to the Genius Bar (their open-air repair
facility).  I handed the MacBook over with a brief description of the
problem.  As the guy was keying in something (serial number?) he started to
regale me with an explanation of the normal sleep procedure and how the
battery is supposed to work.  &quot;Oh shit,&quot; I thought, &quot;here comes runaround
city.&quot;
&lt;/p&gt;


&lt;p&gt;
The guy leaves, I get ready to get comfortable and either wait it out or
raise sufficient hell to get what I need.
&lt;/p&gt;


&lt;p&gt;
To my &lt;em&gt;surprise and delight&lt;/em&gt;, when the &quot;Genius&quot; returned, he had a box in his
hand just slightly bigger than the batter in question.  Snip, snip, out comes
the battery, and into my laptop it goes.  Hands it over without a word and
gets to printing me a receipt.  Holy shit -- he just silently and competently
fixed my problem, without me paying a dime or sitting through any bullshit
(other than the complimentary, brief lecture on hibernate vs. power down
while he looked up the inventory for the replacement part)!
&lt;/p&gt;


&lt;p&gt;
Too many other tech repair facilities have long algorithms they have to go
through, debugging procedures, etc. -- all of which ostensibly save money on
parts but waste uncounted hours of techs' and customers' time.  Apple,
despite really dropping the ball when my wife's laptop started crashing
intermittently eleven-and-a-half months into owning it, really came through
on this one.
&lt;/p&gt;


&lt;p&gt;
Pros: This is exactly how customers should be treated.  Fix it.  Sign for it.
Send 'em on their way.  Go Apple!
&lt;/p&gt;


&lt;p&gt;
Cons: This probably means that the Genius bar sees quite a few cases of
MacBook Pro battery-sudden-death.
&lt;/p&gt;


&lt;p&gt;
$Id: apple_occasionally_kicks_ass.txt 910 2007-06-22 16:55:05Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Truth and Fiction in Motorcycle Gear: Cortech DSX Jeans</title>
    <link>http://rlucas.net/blog/index.rss/2007/06/21#truth_and_fiction_in_motorcycle_gear-cortech_dsx_jeans</link>
    <description>&lt;p&gt;

I've been looking for good, mostly-civilian-looking riding jeans with armor
and abrasion resistance.  Cortech DSX Jeans use leather instead of the kevlar
/ aramid that some (e.g. Draggin' Jeans) use in the knees and seat.  They do
have some knee armor.  Plus, the price was right (about $70 shipped) vs. the
kevlar ones, so I ordered a pair.
&lt;/p&gt;


&lt;p&gt;
Levi 501s in 38&quot; waist, 32&quot; length fit me pretty well.  Snug, perhaps, but
not tight (neither gangsta nor European).  So, I was hoping to get a similar
fit out of the Cortech DSX.  At risk of giving you more info than you need, I
have kind of thick legs, a residue from too much rowing in college.
&lt;/p&gt;


&lt;p&gt;
No such luck.  Cortech DSX jeans are cut for fatasses.  The 38&quot; waist hangs
off me like a 40&quot;.  I have to cinch it up so much with my belt that there's a
fold.  I really ought to have it taken in 1-2 inches by a tailor.  And my
thickish legs flop around in the bagginess of the jeans.
&lt;/p&gt;


&lt;p&gt;
The cut of the jeans is sort of a low-rider type thing.  These are definitely
cut to be worn lowish on the hips (lowish for men's jeans, that is; not
hip-huggers, but probably 4&quot; lower on the body than Western jeans).
&lt;/p&gt;


&lt;p&gt;
Accordingly, the 32&quot; seems to be measured from the floor to a lower height
than with e.g. Levis or more Western type jeans.  When I sit on my bike, the
jeans pull up almost to the top of my Cortech Tourmaster riding boots.
&lt;/p&gt;


&lt;p&gt;
Long story short: if you wear a 38-32 in Levi 501s, you probably should order
a 36-34 to get jeans that 1. fit snugly (and therefore keep the armor and
leather in place), and 2. don't ride up when you're on the bike.
&lt;/p&gt;


&lt;p&gt;
Other than that, I can't complain.  They are some nice jeans, they just
happen to be cut without reference to the actual measurements on the tag...
&lt;/p&gt;


&lt;p&gt;
$Id: truth_and_fiction_in_motorcycle_gear-cortech_dsx_jeans.txt 906 2007-06-22 01:27:20Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Truth and Fiction in Motorcycle Gear: Olympia &quot;Waterproof&quot; Gloves</title>
    <link>http://rlucas.net/blog/index.rss/2007/06/12#truth_and_fiction_in_motorcycle_gear-olympia-waterproof-gloves</link>
    <description>&lt;p&gt;

Motorcycle gear is tough to buy.  There are lots of places that sell some
stuff, but precious few that sell a really good selection.  Also, there are
tons of vendors available online, but since you can't touch or try the stuff
before you get it, you're SOL.  My goal is to write up all the moto gear I
buy so that folks can make good decisions about it.
&lt;/p&gt;


&lt;p&gt;
To kick it off, I'm going to pick on Olympia's &quot;Waterproof&quot; gloves.
&lt;/p&gt;


&lt;p&gt;
My first pair of bike gloves were the 
&lt;a href=&quot;//www.olympiagloves.com/glovedetails/4370BLK.html&quot;&gt;Olympia Cold Throttle gloves&lt;/a&gt;.
These worked well for me in coldish weather (say, 40's; it would get chilly
in there but livable).  However, after a single day on the MSF course range
during a rainy March day, the gloves were completely soaked through.  (In
fact, they got totally soaked in the first 4 hours or so of rain.)  I don't
mean that they leaked -- which they might have -- but that the leather itself
was completely soaked.  You could take the glove off and literally wring out
the leather and have ounces of water come out.  I couldn't get the glove dry
overnight, even putting it on top of a fan on top of a heater all night.
&lt;/p&gt;


&lt;p&gt;
Still, when not wet they worked well and fit nicely.  Plus, the longish
nylon gauntlet played nice with my textile jacket and prevented water from
coming up the sleeve, at least.
&lt;/p&gt;


&lt;p&gt;
Then, a couple weeks into owning the gloves, the
pull-cord-to-tighten-stopper-thingy (the thing you squeeze to let the cord
loosen up) just snapped right off of one glove during a routine closure of
the cord.  &lt;a href=&quot;//hondabikes.com/&quot;&gt;University Honda&lt;/a&gt; was good enough to take
them back on a warranty replacement and give me a new set.  &quot;Maybe,&quot; I
thought, &quot;this pair will &lt;em&gt;actually&lt;/em&gt; be waterproof!&quot;
&lt;/p&gt;


&lt;p&gt;
Well, no such luck.  A 20 minute ride in a steady rain last Saturday soaked
the leather straight through.
&lt;/p&gt;


&lt;p&gt;
(Now, it should be said that all gloves will accumulate &lt;em&gt;sweat&lt;/em&gt; inside of
them, whether or not they keep out rain.  This is, of course, what Gore-Tex
ostensibly fixes.  Note that it won't fix it fully, because the sweat vapor
really has nowhere to go when the outside of the glove is covered in water...)
&lt;/p&gt;


&lt;p&gt;
So, although I have read good things about Olympia on the web, and although
these gloves offered beefy knuckle protection and good insulation when dry, I
can't recommend the Olympia Cold Throttle &quot;waterproof&quot; gloves for any wet
applications.
&lt;/p&gt;


&lt;p&gt;
$Id: truth_and_fiction_in_motorcycle_gear-olympia-waterproof-gloves.txt 894 2007-06-13 17:26:18Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Highway 202 North of Snoqualmie Falls Sucks Right Now</title>
    <link>http://rlucas.net/blog/index.rss/2007/05/30#hw_202_north_of_snoqualmie_falls_sucks_right_now</link>
    <description>&lt;p&gt;

A quick note for any of you thinking of heading out to 
&lt;a href=&quot;//maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;q=snoqualmie+falls,+wa&amp;amp;ie=UTF8&amp;amp;om=1&amp;amp;ll=47.545249,-121.838722&amp;amp;spn=0.0803,0.060596&amp;amp;z=14&amp;amp;iwloc=addr&quot;&gt;Snoqualmie Falls&lt;/a&gt;
&lt;em&gt;en moto&lt;/em&gt; right about now (late May 2007).  The road getting there from I-90
was just fine, and indeed, at the falls there were plenty of bikers (no place
to park, even!).
&lt;/p&gt;


&lt;p&gt;
However, if you continue north on Highway 202 (SE Fall City-Snoqualmie Rd)
after the falls, you'll hit about a mile of twisties with heavily grooved
pavement.  It sucks.  Be real aware of this if you're planning to visit (or
pass by) Snoqualmie Falls on your bike this summer -- hills plus curves plus
thick grooves make for an unpleasant if brief part of the trip.
&lt;/p&gt;


&lt;p&gt;
$Id: hw_202_north_of_snoqualmie_falls_sucks_right_now.txt 879 2007-05-30 15:55:43Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Just How F'ed Is The U.S. Dollar?  I'll Tell You.</title>
    <link>http://rlucas.net/blog/index.rss/2007/05/16#how_effed_is_the_us_dollar</link>
    <description>&lt;p&gt;

Here's how F'ed the U.S. Dollar is right now.  If you go for a bit of
shopping in Montreal over the weekend these days, you probably pay with your
credit card to try and get the best exchange rate.  When you next get online
and look at your credit card statement, you will be shocked to find:
&lt;/p&gt;


&lt;p&gt;
&lt;em&gt;the USD-CAD exchange rate is so poor right now that, after taxes, you pay &lt;b&gt;more&lt;/b&gt; U.S. dollars for your purchase than the price tag in Canadian dollars originally said!&lt;/em&gt;
&lt;/p&gt;


&lt;p&gt;
Cheers to our northerly neighbors, I guess.  (Although it does kind of put
the lie to the whining I heard from some Ontario snorkelers when in Florida,
that the boat skipper ought to give them a break on account of exchange
rates.)
&lt;/p&gt;


&lt;p&gt;
$Id: how_effed_is_the_us_dollar.txt 880 2007-05-30 16:03:57Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Printing From Mac OS X Without Going Bankrupt</title>
    <link>http://rlucas.net/blog/index.rss/2007/05/10#print_on_your_mac_without_going_bankrupt</link>
    <description>&lt;p&gt;

One thing about buying a new(ish) MacBook Pro loaded with Tiger: they really
aren't cutting a lot of corners.  This includes in the area of resource
usage (see e.g. memory usage, as you buy another gig of RAM).  This, of
course, is done in the name of an &quot;Insanely Great&quot; user experience, and
mostly, it works.
&lt;/p&gt;


&lt;p&gt;
One difference from Windows is that the Mac, when printing, defaults to the
best mode possible on our big office multifunction color laser printer; in
this case, it's fully glossy color.  Those of you who've ever had to buy
toner for such a printer are now wincing: it is damn expensive.
&lt;/p&gt;


&lt;p&gt;
In Windows, it seemed, I had to opt &lt;em&gt;in&lt;/em&gt; to print in color.  I'd like to run
the same sort of system on my Mac.
&lt;/p&gt;


&lt;p&gt;
Well, as it happens, this is one sad case where the Mac requires you to know
&lt;em&gt;more&lt;/em&gt; about how the OS works than does Windows.  Specifically, we want to
use a feature of &quot;Quartz&quot; (the graphical engine) to convert colors to
greyscale before sending them to the printer.  Do it like this:
&lt;/p&gt;


&lt;ol&gt;
&lt;li&gt;Open a print dialog with command-P.
&lt;li&gt;It should show a box with pulldowns at top for &quot;Printer&quot; and &quot;Presets&quot;
&lt;ol&gt;
&lt;li&gt;Make sure you're working with the Printer in question.
&lt;li&gt;You're probably using Standard Presets -- that's fine for now.
&lt;/ol&gt;
&lt;li&gt;In the middle is a third pulldown that says &quot;Copies &amp;amp; Pages.&quot;
&lt;ol&gt;
&lt;li&gt;Choose it and change to &quot;ColorSync.&quot;
&lt;li&gt;Set a &quot;Quartz Filter&quot; to greyscale or black &amp;amp; white (maybe test each to see what works best).
&lt;/ol&gt;
&lt;li&gt;When satisfied, go up to &quot;Presets&quot; and save your settings under a name like &quot;dreary grey.&quot;  
&lt;li&gt;Keep this selected and it should now show up as your default settings for this printer.
&lt;/ol&gt;
&lt;p&gt;

$Id: print_on_your_mac_without_going_bankrupt.txt 865 2007-05-10 16:49:40Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>How To Be a Biker</title>
    <link>http://rlucas.net/blog/index.rss/2007/05/10#how_to_be_a_biker</link>
    <description>&lt;p&gt;

If you want to move longer distances than your legs (walking or biking) carry you,
such as between major cities or, within our metropolises, from the mire of
suburbia to the oases of interestingness, and the generally crappy mass
transit options found in the U.S.  aren't compelling for your purposes, it
seems that you really have no choice but to give in to car culture and become
an automobile driver.  
&lt;/p&gt;


&lt;p&gt;
This is a shame, because obligate car culture frankly sucks.  It's wasteful
not only of fuel but of resources in the cars themselves.  Worse, it constricts
the mind's range by giving a low-activation-energy default pathway for
transportation needs, and promotes a positive-feedback loop of car reliance
(I have to drive around and find parking so that I can, er, drive some more).
And that's just the effect on the driver; obligate car culture
does &lt;em&gt;horrific&lt;/em&gt; things to neighborhoods, commercial districts, etc.
&lt;/p&gt;


&lt;p&gt;
(I use the term &quot;obligate car culture&quot; to define a style of living and
interacting that requires a car.  Rich people, poor people, hippies,
students, bobos, and some yuppies can escape this.  But the vast numbers of
Americans living in suburbs and exurbs -- who can't walk, bike, or reasonably
quickly (circa q 15 minutes) get on mass transit to get to places to work,
eat, shop, play, and socialize -- are obligated to have access to a car or be
a pariah.)
&lt;/p&gt;


&lt;p&gt;
In fairness, the pluses of car driving -- when everything goes right -- are
substantial.  For a small price, you can go any distance from a few blocks to
all the way across the country.  Modern vehicles, even the cheapest, are
amazingly reliable (if wanting in many other aspects of engineering) and
capable of exceeding legal performance limits.  The interstate system is a
marvel and will take you within a mile of every urban center in the land.  
&lt;/p&gt;


&lt;p&gt;
But a car is at least a metric ton of steel, glass, and assorted crap that
you're dragging with you, despite the fact that a knowledge worker typically
only needs himself, some papers, and perhaps a laptop wherever he goes for
work.
&lt;/p&gt;


&lt;p&gt;
But there's another means to getting your transportation needs fulfilled.  A
personal, more human, and cheaper way to travel at high speeds.  That way, is,
of course, via motorcycle (or scooter, as the case may be).
&lt;/p&gt;


&lt;p&gt;
Let's take a look at some of the benefits of travel by motorcycle:
&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;Lower capital costs.  A motorcycle in good repair can be purchased for $500 to $5,000, used, whereas a decent used car will typically start at $5,000.
&lt;li&gt;Lower insurance costs.  It's not unreasonable to expect to pay $300 a year for a relatively vast amount of coverage ($250k of liability protection, well above the legal requirements), whereas the same in a car would be a minimum of $1,000 a year.
&lt;li&gt;Lower fuel costs.  40-60 MPG is the norm for small- to mid-sized bikes, whereas one would need to shell out for a Prius or a Smart in order to get that kind of mileage on four wheels.
&lt;li&gt;Use of HOV (&quot;carpool&quot;) lanes in many states.
&lt;li&gt;Lane-splitting (&quot;white-lining&quot;) in California.
&lt;li&gt;Occasionally preferential parking.  This is dodgy because sometimes you get the shaft by having to pay the full auto rate, but sometimes you get cheap spots, can sneak into smaller on-street spaces, or can downright cheat by parking in (legal, legit, off-street) nooks and crannies.
&lt;/ul&gt;
&lt;p&gt;

The downsides are worth considering:
&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;Getting creamed by some asshole in an SUV is a real possibility, and injuries in that case are certain.
&lt;li&gt;Weather can be a downer.
&lt;li&gt;Passenger capacity is limited to one, and then only with appropriate gear, skill, and mutual confidence.
&lt;/ul&gt;
&lt;p&gt;

The negatives do have some mitigating factors that should be mentioned,
though.  
&lt;/p&gt;


&lt;p&gt;
In the case of accident and injury factors, you can self-select out of the
highest-risk categories with three easy steps.  First, take a course, such as
the &lt;a href=&quot;//www.msf-usa.org/&quot;&gt;Motorcycle Safety Foundation&lt;/a&gt;'s Basic RiderCourse, which qualifies you for
a motorcycle endorsement to your license.  This takes you out of the dangerous
&quot;self-taught&quot; and &quot;friend/family taught&quot; categories, and takes you out of the
&quot;unlicensed&quot; category (NEED CITE).  Then, buy appropriate head-to-toe gear --
&quot;no skin below the chin&quot; -- including a full-face helmet.  The helmet alone
reduces your risks of the most grievous injuries and death substantially --
but make sure it's full-face, since post-crash analyses of helmet damage areas
show that 
&lt;a href=&quot;//www.flamesonmytank.co.za/helmets.htm&quot;&gt;the chin bar takes damage in about a third&lt;/a&gt;
of head-banging incidents.  Really quite decent gear can be assembled for the
low side of $500 -- consider it a one-time spend of the first year's
car-vs-motorcycle insurance delta.  Third, &lt;em&gt;never&lt;/em&gt; drink and bike -- even if
you're the type who will drive after a beer or three, change that habit for
the motorcycle.  Studies and
&lt;a href=&quot;//www.motorcyclecruiser.com/streetsurvival/riding_drunk/&quot;&gt;anecdotes suggest dangerous impairment&lt;/a&gt;
&lt;em&gt;well&lt;/em&gt; below .08 % BAC for motorcycling (NEED CITE).  And there -- with three
simple maneuvers -- you've sliced out huge chunks of the risk of major injury
or death.  Perhaps not quite as safe, still, as being in that SUV, but a
minimum of $25,000 cheaper and a thousand times cooler.
&lt;/p&gt;


&lt;p&gt;
&lt;img src=&quot;http://www.flamesonmytank.co.za/images/helmetDamage.gif&quot;&gt;
&lt;/p&gt;


&lt;p&gt;
(Helmet damage distribution.  Used without permission from
flamesonmytank.co.za, who in turn used it without permission from David
Hough's &lt;em&gt;Proficient Motorcycling&lt;/em&gt;.)
&lt;/p&gt;



&lt;p&gt;
Regarding weather, you'd be &lt;b&gt;amazed&lt;/b&gt; at how good the waterproof textile gear
can be.  I spent a full 8-hour day in the pouring Seattle March rains, doing
low-speed exercises outdoors in an instructional course, and my 
&lt;a href=&quot;//firstgear-usa.com/&quot;&gt;Firstgear&lt;/a&gt; jacket kept me completely dry and entirely warm
from the waist up, including protecting my cell phone from the elements.  (My
bottom half, in makeshift &quot;water resistant&quot; gear, was completely soaked.)
Gore-Tex is off patent these days, and so everyone and their brother uses it
or a knockoff to make waterproof, breathable materials.
The technology is to the point where you can practically dress up in black
tie, then slide
on your waterproof gear, head out in the rain on your bike, and upon arrival, shed the wet
stuff and emerge no more rumpled than you might get sitting on a crowded
train or bus.
&lt;/p&gt;


&lt;p&gt;
So, when it comes down to logistics, how does a carless urban yuppie type
(like your humble correspondent) actually effect becoming a biker?
&lt;/p&gt;


&lt;p&gt;
1. Find a Basic RiderCourse, sign up, and take it.  Mine was 12 folks; about
2/3 owned bikes already, and 1/3 were complete novices.  I'd been on a bike
once (tearing up empty lots on a buddy's dirtbike down in Oregon as a
teenager, before flipping the thing upside down in a misguided wheelie
attempt), but there were at least two folks who'd never ridden in their
lives.  Around Seattle, market for the unsubsidized courses is $240 for an
evening of classroom work and two days of riding (state subsidies bring the
cost to $100 for some dates, but those fill up fast).
&lt;/p&gt;


&lt;p&gt;
2. If you're still positive after the course, get your license endorsement.
Generally you have some period of time from passing the course to presenting
it at the DMV.  Washington wants, I believe, $25 for the chore of endorsing
your license.
&lt;/p&gt;


&lt;p&gt;
3. Sketch out a feature range and price range for your bike.  I recommend
spending time on dealership websites to get a feel for new prices and
the various available models; then, do likewise on Craigslist and eBay to get
the used prices and the (different) models available.  Bikes last forever if
properly maintained, and it's not unusual to find Japanese bikes from the
1970s offered for sale today.  1980s bikes are even more common.  (However,
surviving bikes from the '60s and earlier become expensive collector's
pieces.)  
&lt;/p&gt;


&lt;p&gt;
But these are distinctly different types than one sees today.  Since the late
1990s, bike manufacturers have concentrated on two kinds of street bikes:
cruisers (kind of &quot;chopper&quot; or &quot;Harley&quot; lookin' types, low seat, chrome,
forward foot position) and sport bikes (&quot;crotch rockets&quot;, with bright colors
and plastic, with a forward lean and a rearward foot position).  This has
pretty much meant the death of the &quot;standard&quot; motorcycle, though Honda still
makes the Nighthawk in this category.  Another victim of this change is the
mid-displacement bike.  It used to be that one could buy motors in 125, 250,
450, 600, 750, and 1000 cc sizes (roughly).  Now, the 250 cc motors are still
around on Yamaha Virago and Honda Rebels, but there's really nothing until you
get to 650-750 cc engines.  This is widely viewed as a shame because a 450 cc
standard bike, such as might have been common in the 1980s, is a great starter
bike but is unavailable new today.  (However, see below for a caveat on buying
an older bike.)
&lt;/p&gt;


&lt;p&gt;
4. Find a place to get your bike worked on and to park it.  These two
logistical hurdles are not insubstantial.  A lot of the cheaper bikes you'll
find for sale are sort of DIY projects on wheels; unless you have, or want to
acquire, tools, skills, time, and a work area, you'll need to trade your
treasure to someone with these things.  Complicating matters, dealerships and
service facilities sometimes limit the model years they will work on.  This
will, therefore, interplay with #3 above.  (This was a factor in my decision
to buy used from a dealership.)  Parking, depending on your area, may require
permits for on-street, or may require a parking pass.  However, be sure to
ask around for &quot;boots-on-the-ground&quot; info about motorcycle parking in your
neighborhood.  There are certain facilities and areas where one can park a
bike for free, but these are unlikely to be publicized on the Internet for
fear of overuse or loss of the privilege, so talking with local bikers,
garage attendants, etc. can be rewarding.
&lt;/p&gt;


&lt;p&gt;
5. Find a way to 
&lt;a href=&quot;//www.msgroup.org/TIP026.html&quot;&gt;get the bike home from purchasing it.&lt;/a&gt;
(I agree with the author of the article linked above that riding the bike
home is a &lt;em&gt;last&lt;/em&gt; resort; I did so, but it was under half a mile, early on a
weekend morning.)
If everything is cool, you may be able to ride home from the purchase, but you
may need a trailer.  The carless yuppie will note that U-Haul offers
motorcycle trailers at a reasonable rate, which trailers may be attached to
one's rented truck.  Alternatively, if you're the kind of carless urban yuppie
whose friends drive cargo vans or pickups, strike yourself a deal.
&lt;/p&gt;


&lt;p&gt;
6. Get the gear.  Full gear, no excuses.  Budget $60-200 for a helmet,
$80-300 for a jacket, $50-200 for pants or chaps (chaps &lt;em&gt;not&lt;/em&gt; recommended; the
not-too-squeamish can look at
&lt;a href=&quot;//www.soundrider.com/archive/safety-skills/chaps_and_hats.htm&quot;&gt;this&lt;/a&gt; for
evidence), $20-60 for gloves, and
$60-200 for boots.  The boots are kind of negotiable; good work or hiking
boots will work for starters.  Otherwise, get &lt;b&gt;motorcycle&lt;/b&gt; stuff: no football
helmet, no fashion leather, no garden gloves.  Ebay can be a source for very
cheap entry-level stuff.  
&lt;/p&gt;


&lt;p&gt;
7. Inspect, negotiate, select.  Look at several bikes.  You might not get
test rides; dealer insurance issues and private-owner reluctance are
unfortunate but standard problems.  Get a checklist such as the
&lt;a href=&quot;//www.clarity.net/%7Eadam/buying-bike.html&quot;&gt;Used Motorcycle Evaluation Guide&lt;/a&gt;
to help you walk through the inspection process.  Other online buying guides
can help you with this process.  You should have ammo for negotiation from
your online research into the models you want: make sure that among your data
points you have recent comparable asking prices from e.g. Cycle Trader or
Craigslist, actual closing prices from eBay, and Kelly Blue Book values.  Try
not to get walked on; read a book or two on negotiation.  FYI, the dealer I
dealt with opened with a highball for almost 30% higher than our final sales
price (though our final deal included things like cash payment, additional
gear purchases, etc.; these are gives you, too, can offer in exchange for a lower
price).  &lt;em&gt;Don't take possession right then!&lt;/em&gt;  Finalize your deal and schedule
pickup for the next possible day (Fridays are therefore good for this).
Before you leave, &lt;em&gt;get the VIN (Vehicle ID Number).&lt;/em&gt;
&lt;/p&gt;


&lt;p&gt;
8. The night before.  Check the VIN online; depending on the price of the
bike you're acting on, it may not be worth paying for a full Carfax-style
report, but you should definitely Google around; see if anyone has posted the
VIN as stolen; make sure that the make, model, and year as represented to you match up with the
manufacturer's coding scheme for the VIN.
&lt;/p&gt;


&lt;p&gt;
9. Get insured.  You can sign up for insurance online.  I used
&lt;a href=&quot;//progressivedirect/&quot;&gt;Progressive&lt;/a&gt; to get a quote that ran $330
annually.  At that price (and given my good experience with Progressive in
the past), it wasn't worth shopping around for a 10% discount.  YMMV.  A
modern insurance company should let you not only sign up, but add a specific
vehicle (by VIN) and print out insurance ID cards, all online and within
minutes.  (Again, YMMV: Progressive's lack of sucking may not be
representative of all insurers.)
&lt;/p&gt;


&lt;p&gt;
10. Take delivery.  Use good practices if buying from a private party, such
as a written bill of sale.  If you must ride it home, 
&lt;a href=&quot;//www.msgroup.org/TIP026.html&quot;&gt;ride real safe&lt;/a&gt;!  Once
home, make sure that you've got all the state paperwork underway and, if
you're going to ride before getting back any tokens from the government that
you need fully to be legal, try carrying copies of what you sent in, to try
and get sympathy from any possible cop stops until you become &quot;official.&quot;
&lt;/p&gt;


&lt;p&gt;
11. Practice slow and easy for starters.  Even if you live in a dense urban
environment on a steep hill (like your correspondent), you can find a block to
circle around so as to get a feel for the bike.  Please, and this is
important, &lt;b&gt;please&lt;/b&gt; just ride like a total pussy for the first couple days and
several hours.  It's important to remember that you're already 10x more badass
than anyone else who's not a biker at this point, so just slow it down, and do
exactly like you learned in class.  Don't worry about delaying or slowing down
motorists while riding around your neighborhood, or about seeming odd for
running the same route ten times -- naysayers can kiss your ass.  There are
&lt;b&gt;no&lt;/b&gt; bonus points for scraping off someone's side-view mirror an hour into
owning your new ride (except for the extra caution karma that you will then
enjoy for quite some time...).
&lt;/p&gt;


&lt;p&gt;
12. Use a checklist like the one at (NEED CITE) to step up your riding over
the next several days and weeks.  Take graduated steps out of your comfort
zone.  Don't stick to parking lots; you've got to push yourself to expand
your skills and confidence.  As you grow, continue to read, perhaps
starting with David Hough's &quot;Proficient Motorcycling.&quot;
&lt;/p&gt;


&lt;p&gt;
Here are some other tips:
&lt;/p&gt;


&lt;p&gt;
1. If you're busy, start this process in the late winter (early spring if
you've got time to move through it rapidly).  As spring moves in and the
rains stop, sales pick up, and with the extra demand so go prices.  This is
also true for things like occupancy at the classes, lines at the DMV, etc.
If you're ahead of the curve, you'll be riding with less time and capital
outlay.  Plus, taking the MSF class in absolutely dismal weather (large swaths of
our riding range were covered in multiple inches of water, and it rained for
about 12 of 16 hours) means the first time the weather turns sour during a
ride, you're not experiencing something new.
&lt;/p&gt;


&lt;p&gt;
2. If you've heard that &quot;everyone lays it down in the first year of riding,&quot;
think again.  My riding instructor reports that he has never, in 20 years of
riding, laid it down.  Is he phenomenally skilled or just lucky?  Probably a
mix of both.  But if you follow this guide (and / or other good info sources)
there's no reason why you can't be the same way.  On the other hand, wearing
All The Gear, All The Time (ATGATT -- not, as it might seem out of context,
some sort of six-base-pair polymorphism conferring hereditary
safety-mindedness but an acronym for volitional safe behavior) is your way of
hedging that bet.
&lt;/p&gt;


&lt;p&gt;
3. Take the time to research the concepts of &quot;countersteering&quot; (&lt;em&gt;not&lt;/em&gt;
&quot;counterweighting&quot;) and &quot;high side&quot; vs. &quot;low side.&quot;  The topics are too
involved for me to delve into here, but suffice it to say that
countersteering (push right, lean right, go right) is the only way to turn
your bike above about 10 MPH, and a low side is a relatively &quot;nice&quot; crash where
the rider goes down low (usually below / behind the bike) while a high side
is the perilous case when the rider goes over the bike, sometimes to be
followed by the bike itself!  Neither topic is covered very well in the Basic
RiderCourse, and in one case, my instructor gave bad info about
countersteering due to a terminological error.
&lt;/p&gt;


&lt;p&gt;
An estimate of the time and money spent on this:
&lt;/p&gt;


&lt;blockquote&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
Internet research on safety
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;
20 hrs
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
Internet research on bikes
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;
20 hrs
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
Basic RiderCourse
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;
18 hrs
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
Shopping for bikes
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;
6 hrs
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
Negotiation
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;
1 hr
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
Total
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;
65 hrs
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
Bike (with tax, title, etc.)
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;
$3,800
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
Insurance
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;
$300
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
Gear
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;
$600
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
Basic RiderCourse
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;
$240
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
Settling with guy whose mirror I smashed
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;
$500
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
Repairing my damage from the smash
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;
$200
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
Total
&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;&lt;p&gt;
$5,640
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/blockquote&gt;
&lt;p&gt;

Yes, that comment about smashing off a guy's rear-view mirror is from real
life.  Sucked to be me.
&lt;/p&gt;


&lt;p&gt;
You could do this for about half the price I paid, if you're willing to cut
some corners and do a lot of the maintenance-type stuff on an older bike
yourself (and &lt;em&gt;not crash&lt;/em&gt;).  You could also easily spend twice or even three
times this (there were some people in my class who were bragging about
financing $16,000 worth of purchases from the Harley dealership; good for
them, I guess).
&lt;/p&gt;


&lt;p&gt;
$Id: how_to_be_a_biker.txt 901 2007-06-15 05:39:53Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Making Subversion Set Reasonable Default Properties Like Keyword Substitution</title>
    <link>http://rlucas.net/blog/index.rss/2007/05/09#svn_set_default_properties_like_keywords</link>
    <description>&lt;p&gt;

(Programmers: skip down to the &lt;b&gt;Meat&lt;/b&gt; section below.)
&lt;/p&gt;


&lt;p&gt;
If you are so bored as to actually have read all the articles on this blog,
you may have noticed that the &lt;em&gt;&quot;Id: lucas blah blah blah&quot;&lt;/em&gt; string that shows
up at the bottom of the articles.  This is an interpolated keyword, put in by
the revision control system, that shows in the text of the document when it
was last committed to revision control.
&lt;/p&gt;


&lt;p&gt;
Subversion (svn) is a revision control system -- probably the leading such
system for new deployments (I am not counting Microsoft-land, where old,
proprietary systems still abound).  It's most familiar as the replacement for
the venerable CVS, which used to do replacement more or less automatically.
But a stock Subversion install won't do keyword replacement unless you do a
&quot;property setting,&quot; or propset, on a file-by-file basis (this is to prevent
clobbering a file that happens to have the magical string in it).
&lt;/p&gt;


&lt;p&gt;
Therefore, you have to remember to do something like this to your new files:
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;svn propset svn:keywords Id myfile.txt

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
This tells svn to set the &quot;svn:keywords&quot; property to &quot;Id,&quot; meaning it will
replace instances of $Word: $ with the ID string (when &quot;Word&quot; is &quot;Id&quot;).
&lt;/p&gt;


&lt;p&gt;
However, this is a pain, and although you could conceivably script this
action as a hook upon new additions to svn, there's an easier way.
&lt;/p&gt;


&lt;p&gt;
&lt;b&gt;Meat&lt;/b&gt;
&lt;/p&gt;


&lt;p&gt;
Find your local ~/.subversion/config file and edit it.  Set the following:
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;[miscellany]
enable-auto-props=yes

[auto-props]
*.txt=svn:keywords=Id

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
(The default config file has a bunch of examples commented out for you to
base your settings on, but the above is the minimal set to get textfiles set
with keyword substitution for the &quot;Id&quot; keyword.)
&lt;/p&gt;


&lt;p&gt;
$Id: svn_set_default_properties_like_keywords.txt 858 2007-05-09 17:21:17Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Ruby's ActiveRecord Makes Dropping to Raw SQL a Royal Pain (Probably on Purpose)</title>
    <link>http://rlucas.net/blog/index.rss/2007/05/09#ruby_active_record_makes_raw_sql_a_royal_pain</link>
    <description>&lt;p&gt;

The opinionated programmers behind Rails have generally done a good job.
(There are couple of FUBARs in their bag of tricks, such as the boneheaded
choice to use pluralized table names (in some places) and use automagical
pluralization code to try and mediate between the singular and plural.)
&lt;/p&gt;


&lt;p&gt;
There's another item I'd like to bring up, however, and that's the fact that
ActiveRecord intentionally cripples your ability to do raw SQL queries.  This
is, I'm sure, done to discourage raw SQL hacking in favor of using the
ActiveRecord objects (which, for small numbers of objects, is admittedly a
superior way to do many things, because of concerns for clarity,
maintainability, etc.).
&lt;/p&gt;


&lt;p&gt;
However, sometimes you need SQL, dammit.  Especially when you're doing a
correlation between, say, different tags that describe business plans, and the
people that link those business plans together, plus the number of times that
such tags appear, there's just no sense in pulling thousands of records into
memory, instantiating Ruby objects, and improperly reimplementing basic CS
sorting algorithms to link them up.  You've got all that sitting right there
in your RDBMS.
&lt;/p&gt;


&lt;p&gt;
ActiveRecord lets you do something like this:
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;BusinessPlan.find_by_sql( 
  [ 
    'SELECT s2.id FROM (COMPLICATED_SUBSELECT) AS s2', 
    var1, var2, var3 
  ]
)

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
Which will run the complicated SQL and replace the bind vars (question marks)
in the raw SQL with var1, var2, var3, etc., and give you a bunch of
&lt;tt&gt;BusinessPlan&lt;/tt&gt; objects that it's instantiated off those IDs.  Easy enough.
&lt;/p&gt;


&lt;p&gt;
But what if you need not merely to get the objects, but to get some other
important info (say, &lt;tt&gt;COUNT(something)&lt;/tt&gt;) out?  You're shit out of luck with
ActiveRecord.  The &lt;tt&gt;.connection.select_all&lt;/tt&gt; method returns you an array of
record hashes, but it requires fully-baked SQL (no bind vars).
&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;You could manually construct the SQL and manually quote each bind variable into its place, but &lt;em&gt;avoiding&lt;/em&gt; that kind of retarded scut work is exactly why you're using Rails in the first place.  
&lt;li&gt;You could try and get the DBI handle that underlies ActiveRecord (does it?), but it's very unclear as to how or if you can do that.  If you call &lt;tt&gt;.connection.raw_connection&lt;/tt&gt; you get a PGConn object (for PostgreSQL), not a DBI handle.
&lt;li&gt;You could open up your own new DBI handle, which involves recapitulating the Rails initialization code for ripping the config values and rewriting connection-pooling code, which is bad for all sorts of reasons, not least of which is that you're &lt;em&gt;already f'ing connected to the DB!&lt;/em&gt;
&lt;/ul&gt;
&lt;p&gt;

WTF?  If you read the code for the &lt;tt&gt;find_by_sql&lt;/tt&gt; method, you'll see:
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;def find_by_sql(sql)
  connection.select_all(
    sanitize_sql(sql), 
    &quot;#{name} Load&quot;
  ).collect! { |record| instantiate(record) }
end

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
Given this, you might think: &quot;aha, I'll just use a similar method and pass to
&lt;tt&gt;sanitize_sql&lt;/tt&gt; an array with my SQL and bind vars, then pass that on to
&lt;tt&gt;select_all&lt;/tt&gt;.  No can do.  &lt;tt&gt;sanitize_sql&lt;/tt&gt; is a protected method.
&lt;/p&gt;


&lt;p&gt;
So, here's my encapsulation-breaking, OO-unfriendly, scofflaw workaround to
let you have access to what you should already get: a decent bit of code for
binding SQL parameters:
&lt;/p&gt;


&lt;p&gt;
(In &lt;tt&gt;helpers/application_helper.rb&lt;/tt&gt;)
&lt;/p&gt;


&lt;blockquote&gt;&lt;pre&gt;arb = ActiveRecord::Base
def arb.sanitize_fucking_sql(*args)
  sanitize_sql(*args)
end

&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
Now, you can happily go about your business and, when necessary, call
&lt;tt&gt;ActiveRecord.sanitize_fucking_sql(...)&lt;/tt&gt; to get 'er done.  No special-purpose
DB connections, no wrangling thousands of objects in memory.
&lt;/p&gt;


&lt;p&gt;
Caveats:
&lt;/p&gt;


&lt;ol&gt;
&lt;li&gt;I suck at Ruby, I know.  There's a more elegant way to add a public method to a class, but that works and I understand it.
&lt;li&gt;Eventually, this will break.  But it will probably be a long time and the, er, &lt;em&gt;unique&lt;/em&gt; method signature I suggest should be easily globally replaced.
&lt;/ol&gt;
&lt;p&gt;

$Id: ruby_active_record_makes_raw_sql_a_royal_pain.txt 863 2007-05-09 18:07:04Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Hurrah for Kwiki</title>
    <link>http://rlucas.net/blog/index.rss/2007/05/08#hurrah_for_kwiki</link>
    <description>&lt;p&gt;

... and for
&lt;a href=&quot;//oubliette.alpha-geek.com/2003/10/28/hacking_at_kwiki_table_formatting&quot;&gt;Jeremy Smith&lt;/a&gt;.
Thanks to Jeremy's hack on top of Ingy's quickie wiki, we can now get proper
behavior inside of table cells.
&lt;/p&gt;


&lt;p&gt;
In a nutshell, Kwiki didn't handle things like &lt;em&gt;italics&lt;/em&gt; inside of a table.
This should fix it.  Previous posts that used the stock Kwiki should be fixed
now.
&lt;/p&gt;


&lt;p&gt;
Now, to remedy blockquotes ...
&lt;/p&gt;


&lt;p&gt;
$Id: hurrah_for_kwiki.txt 857 2007-05-09 17:10:14Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>The Housing Bubble and General Financial Depravity</title>
    <link>http://rlucas.net/blog/index.rss/2007/05/08#housing_bubble_and_general_financial_depravity</link>
    <description>&lt;p&gt;

Yesterday the Seattle &lt;em&gt;Times&lt;/em&gt; brought us
&lt;a href=&quot;//archives.seattletimes.nwsource.com/cgi-bin/texis.cgi/web/vortex/display?slug=loan07&amp;amp;date=20070507&quot;&gt;this gem&lt;/a&gt;:
&lt;/p&gt;


&lt;blockquote&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tr valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;p&gt;
... the couple -- with no savings and about $20,000 in credit-card debt
-- shopped for a mortgage to buy their 1,200-square-foot house in Tukwila
last year, they heard the same thing from lenders and in a home-buying class
they attended: Forget it.
&lt;/p&gt;


&lt;p&gt;
&quot;You basically had to be Scot free, no massive credit debt, which we had, and
to have money in the bank, which we didn't,&quot; said Swartz, 31. &quot;How do people
buy houses in America anymore?&quot;

&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/blockquote&gt;
&lt;p&gt;

In a nutshell, the country is going to hell in a handbasket.  When people are
so &lt;em&gt;poisoned with the mindset of entitlement&lt;/em&gt; that they literally can't
comprehend why having no cash and a negative $20k net worth doesn't qualify
one to incur a quarter million in debt, well, it's hard to believe that these
are the attitudes and values that built the greatest economy in the world.
&lt;/p&gt;


&lt;p&gt;
$Id: housing_bubble_and_general_financial_depravity.txt 862 2007-05-09 18:06:16Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>Installing RMagick on OS X with Fink</title>
    <link>http://rlucas.net/blog/index.rss/2007/03/29#rmagick_on_osx_with_fink</link>
    <description>&lt;p&gt;

&lt;b&gt;Hold on: I'm not sure that the below works right.  Don't use it yet.&lt;/b&gt;
&lt;/p&gt;


&lt;p&gt;
There are lots of instructions out there for installing RMagick, which 
is a graphics manipulation library used by many Ruby-istas for things like thumbnailing,
resizing, etc.  I wanted to use it for an internal database I'm building in Rails.
&lt;/p&gt;


&lt;p&gt;
Some of the sites offering instructions:
&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;//rmagick.rubyforge.org/install-osx.html&quot;&gt;The RMagick site itself&lt;/a&gt;.  This one is tilted toward using Darwin Ports (the BSD-ish way to do third party package management on your mac; I prefer the Debian-ish &quot;Fink&quot;).
&lt;li&gt;&lt;a href=&quot;//hivelogic.com/narrative/articles/rmagick_os_x?status=301&quot;&gt;Hivelogic&lt;/a&gt;.  This one involves manual downloads of tarballs and &lt;tt&gt;configure; make; make install&lt;/tt&gt; type loving.  I don't like this way of going about it because you lose the package management features.
&lt;/ul&gt;
&lt;p&gt;

But nobody seemed to have a Fink-friendly way to do this.
&lt;/p&gt;


&lt;p&gt;
If you naively try to install with &lt;tt&gt;gem install rmagick&lt;/tt&gt;, you'll get
something like:
&lt;/p&gt;


&lt;p&gt;
&lt;tt&gt;configure: error: Can't install RMagick. Can't find libMagick or one of the dependent libraries.  Check the config.log file for more detailed information.&lt;/tt&gt;
&lt;/p&gt;


&lt;p&gt;
My solution:
&lt;/p&gt;


&lt;p&gt;
1. Install the needed dependencies from binaries using Fink.
2. Use &lt;tt&gt;gem install&lt;/tt&gt; to install RMagick (the Ruby bit) itself.
&lt;/p&gt;


&lt;p&gt;
The dependencies include (as best I can tell):
&lt;/p&gt;


&lt;p&gt;
&lt;tt&gt;freetype freetype-shlibs imagemagick imagemagick-dev imagemagick-shlibs ghostscript ghostscript-fonts gv libpng-shlibs libjpeg libjpeg-bin libjpeg-shlibs lcms lcms-bin lcms-shlibs libtiff libtiff-bin libtiff-shlibs &lt;/tt&gt;
&lt;/p&gt;


&lt;p&gt;
Therefore, you should probably be able to install simply by doing:
&lt;/p&gt;


&lt;p&gt;
&lt;tt&gt;sudo apt-get install freetype freetype-shlibs imagemagick imagemagick-dev imagemagick-shlibs ghostscript ghostscript-fonts gv libpng-shlibs libjpeg libjpeg-bin libjpeg-shlibs lcms lcms-bin lcms-shlibs libtiff libtiff-bin libtiff-shlibs &lt;/tt&gt;
&lt;/p&gt;


&lt;p&gt;
&lt;tt&gt;sudo gem install rmagick&lt;/tt&gt;
&lt;/p&gt;


&lt;p&gt;
(I realize that this is probably overkill and that you don't actually need all those packages above.  If you figure out the minimal subset, why don't
you post a similar blog entry of your own?)
&lt;/p&gt;


&lt;p&gt;
Good luck!
&lt;/p&gt;


&lt;p&gt;
$Id: rmagick_on_osx_with_fink.txt 863 2007-05-09 18:07:04Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>VC Essential Tensions: Momentum vs. Contrarianism</title>
    <link>http://rlucas.net/blog/index.rss/2007/03/21#vc_momentum_vs_contrarianism_essential_tension</link>
    <description>&lt;p&gt;

&lt;em&gt;It is my intention to begin a series of entries dealing with &quot;essential tensions&quot; in investing in general and VC in particular.&lt;/em&gt;
&lt;em&gt;This is the first of the series.&lt;/em&gt;
&lt;/p&gt;


&lt;p&gt;
Venture capital as an industry deals with momentum investing.  Paul Kedrosky
has argued on his &lt;em&gt;Infectious Greed&lt;/em&gt; blog that VC is a &quot;bubble business,&quot; and
that venture returns, when they're good, come from momentum-fueled exit events.
This is an argument where the counterexamples are the exception that proves
the rule: Google's IPO (unimpeachably a deal that stands on its own merits rather
than a momentum exit) stands out for having decisively ended the exit drought 
that had plagued the industry since 2001.  Indeed, GOOG going out kicked off the recent positive-momentum
exit cascade that gathered steam throughout 2006.
&lt;/p&gt;


&lt;p&gt;
Likewise, on the &quot;entry&quot; side of new financings, momentum tends to rule the day (especially when exit
momentum &quot;spills over&quot; into fundraising and new financing activity).  See, for example,
the cavalcade of YouTubettes that have been trotted out, freshly funded and hoping to hit 
warp 10 and slingshot off the perceived stellar performance of online video and user-generated content.
(Indeed, it would take some backwards time-travel for most of these to capture any fraction
of the value in that particular space.)
&lt;/p&gt;


&lt;p&gt;
It is easy self-righteously to laugh at the absurdity of funding 30 YouTubes.  But if we accept
whole-heartedly the &lt;em&gt;ad absurdum&lt;/em&gt; version of Kedrosky's argument, we can't blame VCs for
believing in momentum.  After all: if folks today are buying online video companies, then the savvy VC
better have one to sell.
&lt;/p&gt;


&lt;p&gt;
But investing is not a game played alone, and contrary to the bluff and bluster of some VCs, no 
deal is &quot;binary.&quot;  Every deal is implicitly an auction, with a bid and an ask, and the formula
for investment return is ancient and venerable: buy low, sell high.  Momentum helps with the latter,
but crushes our ability to do the former.  Apart from the occasionally perverse incentives provided
by large, fixed fund sizes, pricing going in is even more leveraged in ROI than pricing coming out.
Getting into a good deal at an attractive price -- and hence, the longer lever on ROI --
depends on a virtue diametrically opposed to momentum, namely, contrarianism.
&lt;/p&gt;


&lt;p&gt;
The contrarian looks for undervalued purchasing opportunities by ignoring or subverting the 
prevailing wisdom of the day.  He makes it his job to call the tops or bottoms of markets, and
sometimes is the one declaiming the emperor's nudity.  An occupational hazard of this is that sometimes,
the market has a ways to go yet, and occasionally the emperor still has flesh-colored tights on --
and early is the same as wrong when timing markets.
&lt;/p&gt;


&lt;p&gt;
Certainly, if there is a mythical hero of venture capitalism, it is the steel-nerved visionary contrarian
who makes what looks like a long-shot bet, boldly doubling down when others are fearful, and propelling
forward great companies and great technologies that nobody else dared touch (and hence, that he invested
in on the cheap).  Where else do we get the 
nerve lionizing our asset class as &quot;venture?&quot;
&lt;/p&gt;


&lt;p&gt;
So, we are faced with a contradiction between the mythology of our industry and the harsh reality.  You
don't get to be both the visionary contrarian and still have the online video portfolio company.  Why do
so many venture firms seem to choose momentum in this tradeoff?
&lt;/p&gt;


&lt;p&gt;
I have two theories.  One is that, although entry price has more &lt;em&gt;theoretical&lt;/em&gt; leverage over ROI than
does exit value, exits are so much more &lt;em&gt;visible&lt;/em&gt; that they dominate the consciousness of most VCs.  That is,
given the implicit opportunity to make a 8x ROI on, say, a $60 M exit, or to make a 2.5x on a $500 M exit, and
assuming that the probabilities and amounts are adjusted to keep other comp and performance measures &lt;em&gt;ceteris paribus&lt;/em&gt;, I
bet that VC decision processes are strongly skewed to the big dollar, highly visible exit.  Half-billion IPOs
are much better bragging fodder at the VC confabs than mid-market M&amp;amp;As, even though the latter may well pay
off better.  This would be
a great master's or Ph.D. thesis if one could substantiate and measure the value of this skew.
&lt;/p&gt;


&lt;p&gt;
The second theory is a general theory for understanding why contrarianism, itself, is &quot;meta-contrarian&quot; (that is,
why contrarianism is selected against as an investing style).  I call this the &quot;rich friends theory.&quot;  I use
it to explain why, despite all rationality, U.S. investors tend to overweight U.S. equities in their portfolios.
In a nutshell the theory is this: it sucks far worse to miss out on an investment opportunity that all your
friends have scored on, than it does to miss out on an equally profitable opportunity that everyone else missed,
too.  Put another way, it's awesome to get richer than your friends, but it's way worse to get much poorer than them.
Thinking of this &quot;peer-relative risk aversion&quot; helps to understand a lot of bubble / momentum dynamics.  This, too,
would be fascinating to measure, although I can reasonably set a lower bound here of 0.7% skew toward the crowd,
which is the &quot;rich friends tax&quot; you pay in incremental house edge at craps by playing the pass line (the &quot;do's,&quot;
where most players play, has a house edge of 1.41%) vs. the don't pass line (the&quot;don'ts,&quot; almost diametrically
opposed to the do's, where winning earns you enmity and losing earns you jeers from your fellow punters, has
a house edge of 1.40%).
&lt;/p&gt;


&lt;p&gt;
There's also a case to be made that emerging managers hew more closely to the herd because it could be
an existential crisis to a firm for its first fund to be a &quot;fourth quartile&quot; performer.  Much better for a
new firm to post median returns and live to raise more funds, than for it to risk lagging returns
on a series of contrarian bets (better, that is, for the &lt;em&gt;firm&lt;/em&gt;, if not for its &lt;em&gt;investors&lt;/em&gt;, who may in fact
be better served by the longer-shot odds).  This is, of course part of the &quot;tyranny of IRR,&quot; about which I have
another blog entry under preparation.
&lt;/p&gt;


&lt;p&gt;
I wish I could say that understanding, or even measuring, these effects gives you some kind of instant
edge in investing.  But, alas, this is a perfect example of the occasional frustrating impotence of mere
understanding.  (I &lt;em&gt;do&lt;/em&gt; have some ideas for exploiting this particular case, but those obviously aren't public.)
&lt;/p&gt;


&lt;p&gt;
$Id: vc_momentum_vs_contrarianism_essential_tension.txt 838 2007-03-21 20:31:25Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>VCs Are Not Your Channel (But They Might Be Your Friends)</title>
    <link>http://rlucas.net/blog/index.rss/2007/03/12#vcs_are_not_your_channel</link>
    <description>&lt;p&gt;

Occasionally I get calls from folks who get the bright idea that, since VCs have
a bunch of portfolio companies under influence, they can leverage selling their
stuff by talking to me instead of pounding the pavement to the whole portfolio.
&lt;/p&gt;


&lt;p&gt;
If you're thinking of doing this, remember that we (VCs) are not your personal
sales channel into our portfolios!  Consider:
&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;VCs generally take a board seat at most; we influence our portfolios, not control them, and we do so at a fairly high and abstract level.
&lt;li&gt;Most VCs abandoned the &quot;incubator&quot; model after the '90s bubble; we prefer that our portfolio companies seek the best service providers for their particular needs rather than establish some sort of Gleichschaltung.
&lt;li&gt;We ain't in it for charity!  We're trying not only to build and sell our portfolio companies, but to seek out new deals, with new capitalizations, and to boldly go where no man has gone before!  (er, sorry.)  Star Trek aside, this takes up our time, so even if your shiny new product (or dreary old service) is really groovy for a portfolio company, unless it gets them to an exit or gets us a new deal, it's probably best dealt via a different contact.
&lt;/ul&gt;
&lt;p&gt;

Now, all that said, there are some cases where using VCs for leverage into their portfolios
does make some sense.
&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;You have some particular specialized characteristics that suit one VC's portfolio well.  This could be a mix of geography, stage, domain expertise, etc., like, say, a life sciences IP law firm that caters to early stage firms in Botswana might find affinity with a VC with that same focus.
&lt;li&gt;Your sale is at the board level.  C-level recruiters come to mind (although this is emphatically &lt;em&gt;not&lt;/em&gt; guidance for recruiters to start badgering VC board members).
&lt;li&gt;You have some referenceability within the world of VC-funded startups.  These people talk to each other, go to work for each other, and start companies over and over with each other.  Your sales into big companies (even tech) or lifestyle businesses (even small &quot;startups&quot;) are &lt;em&gt;not&lt;/em&gt; representative of what the experience with a VC-funded firm will be, and won't necessarily reference well among such firms.
&lt;li&gt;Your offering will almost certainly speed a company to exit at an excellent valuation (hint: you can't, or else you'd be a champion VC yourself).
&lt;/ul&gt;
&lt;p&gt;

What &lt;em&gt;should&lt;/em&gt; you do if you decide to make the pitch?
&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;Do your homework -- it's fairly trivial in most cases to discover a VC's portfolio and the specific investors (partner) on each board.
&lt;li&gt;Use your homework -- figure out which portfolio companies you have a great deal for, and make your pitch to the specific investor affiliated with that company.
&lt;li&gt;Reference successes and, ideally, get referred in.  Find other venture-backed companies that you did an amazing job for, and, if possible, get the CEO or VC board member from that company to recommend you.  This would be the holy grail introduction.
&lt;/ul&gt;
&lt;p&gt;

I personally try to be helpful to decent and courteous sales / biz dev folks, but I think that reading and acting on the above is a bare minimum
level of courtesy for sales / biz dev people talking to VCs.
&lt;/p&gt;


&lt;p&gt;
$Id: vcs_are_not_your_channel.txt 833 2007-03-12 23:13:51Z rlucas $

&lt;/p&gt;
</description>
  </item>
  <item>
    <title>The Washington State 529 Program (GET) Offers an Overlay</title>
    <link>http://rlucas.net/blog/index.rss/2007/03/12#wa_get_529</link>
    <description>&lt;p&gt;

State-administered &quot;529 plans&quot; for education savings are another in the series
of tax dodges doled out by the Bush administration (thereby further and
regressively lowering the effective rate of taxation on the higher-income
people most likely to avail themselves of such dodges).  (Sticklers will 
observe that 529s predate Bush; true, but their extra tax favorability is a 
post-2001 invention.) On the bright side,
they offer quite a good deal if you can find an investment that keeps pace
with college tuition (and you don't need to worry about also beating the tax
rake, since 529 gains are tax 