Tuesday, October 28, 2008

If the polls are skewed...

There's been some concern about the accuracy of polls -- are people telling the truth? Is there a skew towards Obama because people are afraid of appearing racist? Is there a skew towards McCain because polls exclude non-land-line owners (who tend to be older and more Republican)?

Well, I can't answer the "accuracy" question with any certainty. However, being the database geek that I am, I can crunch numbers.

I took the poll data from RealClearPolitics and tossed them into an SQLite database; you can download the database itself here. Taking the latest poll data, here's what the election results look like if the percentage points are skewed in one direction or another.

SkewObamaMcCainUndecidedResult
McCain +62632760McCain
McCain +526321561No winner
McCain +432418233Obama
McCain +33571820Obama
McCain +23571820Obama
McCain +13571820Obama
No Skew35716814Obama
Obama +13711680Obama
Obama +23711680Obama
Obama +33711680Obama
Obama +43711680Obama
Obama +537115810Obama
Obama +638113226Obama


In case you want to play with the database:
ELECTORAL_VOTES contains a mapping from state to number of electoral votes for that state (state, votes).
POLLS contains a listing of each poll; the rows contain: state, poll_date, poll_name, obama, mccain.
LATEST_POLLS is a view containing the latest polls from POLLS.
SKEW is a table containing the integers from -6 to 6.

The query to produce the above table is:
select skew, sum(obama_votes), sum(mccain_votes), ifnull(sum(undecided_votes), 0)
from (select skew, (mccain - obama > skew) * votes mccain_votes,
(mccain - obama < skew) * votes obama_votes,
(mccain - obama = skew) * votes undecided_votes
from latest_polls
cross join skew order by skew) group by skew;

Monday, October 20, 2008

Powell's lament

Buddy, I know how you feel. From today's New York Times:
"I have some concerns about the direction that the party has taken in recent years," Mr. Powell told Tom Brokaw on "Meet the Press" on NBC as he made his endorsement of Mr. Obama. "It has moved more to the right than I would like to see it."
I've also been reading a new biography of Barry Goldwater written by John Dean and Barry Goldwater, Jr., Pure Goldwater. My father -- a Goldwater supporter in the 60s -- gave me an autographed copy. I'm only about halfway through it; so far, though, I'm quite enjoying it and am finding him to be a man whose wisdom we desperately need today. At any rate, I think Goldwater would've been fairly disappointed in the Republican party of today, too.

McCain continues to disappoint me. I had hopes that his shift from his 2000/2004 persona was a ploy to clinch the nomination and appease the powers in the party. Alas, as the NYT article points out with his choice of advisers, he's just going deeper and deeper into neocon territory.

Sunday, October 12, 2008

I am dead to the Internet

Apparently, the Internet thinks I should be dead, given my current exercise regimen:

Anyway, this is my new standard workout. I've been swimming in Port Orchard Narrows (which, despite the name, is actually a channel/strait, not a port) from Fletcher Landing (short bike ride from my house) down to the tip of Crystal Springs. Google Earth puts it at 1.18 miles. My thermometer puts it at 50°-56°, depending on the day.

Thursday, October 9, 2008

Apples

I didn't get a chance to follow the news today. Why were there so many folks selling apples on the street corners on my ride home?

Actually, right now I'm feeling somewhat lucky; back in July, I sold all the stock I had and took out a loan against my 401(k) when we bought the house. I wish I could say that it was some keen insight, but it was just pure luck. Not so lucky: working in an industry where much of my compensation comes in the form of stock. I suspect a lot of folks, myself included, will max out on the capital loss deduction come next April.

Scary times.

Saturday, October 4, 2008

Flight Simulator

There's an Airbus flight simulator on sale over at DoveBid. It won't install on your PC, though; you'll need a warehouse.

Oh, man... this could be a lot of fun...

Friday, September 26, 2008

Hacked

Dammit, someone managed to hack into a couple of my accounts. On the plus side, I was watching them as they did it, so I was able to stem the problem very quickly (within a few minutes), but dang... they're fast. They managed to create ~$400 in fraudulent PayPal charges in the span of 5 minutes. (I was on the phone with PayPal as they did were still fumbling about, in fact.)

I'm still at a loss as to how they accomplished this. I do know that I received an e-mail which caused GMail to spaz out -- text was flowing outside of the places it was supposed to be (so they probably found yet another XSS vulnerability in GMail) and attempting to view this e-mail caused the page to spend a long time loading (i.e., it was phoning home, probably with my GMail login cookie).

However, this doesn't explain how they were able to get into my PayPal account. The only thing I can think of is a keystroke logger, but it's not like I typed any passwords in those 5 minutes. That, or they managed to get into my saved passwords in Firefox (though I don't think I saved my PayPal password in there for this very reason). I guess I'll find out on Monday when I bring my laptop in forensic analysis.

In the meantime, I had my work account locked down (which I highly doubt was accessed, but this is still the prudent measure to take) and managed to change all of my other passwords within 30 minutes, all without incident; this means they probably didn't get at anything else.

The attack itself was quite sophisticated. Not only was it generating PayPal charges as fast as possible, it would intercept and delete the PayPal confirmation e-mails which showed up. I got glimpses of the subject lines and actually managed to click on one (and confirm, to my horror, that it was draining money from my real bank account), but they were being deleted not long thereafter.

Google, incidentally, is of no help here (even though I'm paying $50/year for their "premier" edition of GMail). I called their emergency number only to be told that their offices are closed until Monday morning.

Anyway. PISSED OFF IS ME.

Friday, September 19, 2008

The ultimate in high maintenance

Ah, the laughs. I've found the dating profile of someone who is the ultimate in high maintenance. And it's a 53 year old guy.

He even has a section entitled, "Do NOT Fall in Love with Me until I say so!"

Monday, September 15, 2008

Need to take a week off.

Just got back from a three day kayak trip around the San Juans (mainly Cypress Island) with Tamara and Julie (a friend from Sacramento who came up with the crazy plan in the first place). It was quite fun and nicely relaxing. However, the kayaking, plus swimming and hiking each night, has left my body exhausted and my muscles sore. As I'm flying down to San Diego tomorrow and spending the rest of the week there, I think I'm going to take a bit of a break from swimming.

Work has been exceedingly stressful as of late. Too many last-minute critical projects being juggled and thrown my way. I seem to spend 80% of my time in front of Outlook delegating and explaining what needs to happen instead of doing it myself. I suppose this would be acceptable if I were a manager, but I'm not. I think I'd be happier if I didn't know that spending time on this would be held against me come performance review time. Ah, like Dilbert, I guess I have the curse of competence.

Anyway, time to pack.

Wednesday, September 3, 2008

Setting priorities; more Chrome nits

Due to various events circulating around and entrapping me, I'm thinking of requiring folks to prioritize the requests they send me. They can select from the following options:
  • Priority 1.15. My request is important, but not so important that anyone will actually notice before we or they change teams/companies. I'm mainly filing this to cover my ass and I can point to a document and say, "I told you so," should this blow up.
  • Priority 1.1. My request is important enough to require you to do this now, but not so important that I'm willing to devote any of my team's resources into understanding the problem.
  • Priority 1. My request is important enough that I'll make vague promises to understand the problem at some unspecified point in the future, but will hope that you don't follow up on this. Also, I'll hound you with meeting invites until you submit to my will.

On the Chrome front, I'm still generally happy with it, though I did experience slowdowns with some Flash stuff. My experience here mirrors someone's review (which I can't seem to find at the moment): better than Firefox on CPU usage, but worse than IE8.

However they don't support SPNEGO/Kerberos/NTLM authentication, at least not yet. This is the magic which lets me get away with typing my work password only once a day rather than once for each internal website I visit. I'll have to keep Firefox open in the meantime.

Tuesday, September 2, 2008

Quick update on Chrome

Sure enough, a site I browsed to caused Chrome to crash -- not unexpected, given this is the first release of an alpha product (yeah, I know that Google calls it beta; I'm doing my own take here). However, true to expectations, it only caused that tab to close and vanish; the rest of my browser was unaffected.

This pleases me.

Separate processes are the way things should have been done a long time ago. (Why won't anyone listen to me on this?) Threads are fine if you have short, asymmetric work loads (e.g., spinning up a separate thread to monitor a file handle); they're generally not the right solution if you have symmetric work to perform. The Java fanboys at work yell and scream that threads are perfect, processes don't scale on multicore systems (huh?), you can't share memory (uh, that's kind of the point), and going multiprocess is an admission that your code has bugs (well, duh).

Of course, Java has plenty of objects to handle threads but no fork() call. Going multiprocess is much harder in this kind of environment. Not impossible, as the Cygwin guys have demonstrated through their fork() emulation on Windows, but definitely harder.

Chrome...

I'm trying out the new browser that Google has tossed together. But my first impression: what the heck? It insists on installing itself for each and every user of a given computer? WTF?

That said, browsing my usual websites shows that it is quite zippy. It also imported all of my bookmarks, saved passwords, and browsing history from Firefox without a hitch (though I did have to shut down Firefox first -- I'm guessing Firefox doesn't leave files in a consistent state while it runs and doesn't provide APIs for other apps to access this information).

It does spawn a bunch of processes, as expected. Even show, with three tabs loaded, it's using less than 100 MB of memory; Firefox 3, by comparison, eats up around 300 MB just to start up.

Firefox: I'm not giving up on you just yet, but you're on notice.

Monday, August 11, 2008

Good god...

I have to wonder if Russia is trying to start WWIII in Georgia. This is the biggest finger they could possibly give to the U.S. and Europe.

Of course, the second part of that statement might be, "And we know you're not going to do anything about it because your people are too tired of Iraq." On that count, so far they're right. Oh, and toss in a, "Hey look, Olympics!" for good measure.

Tuesday, August 5, 2008

Don't get sick in Oregon

Can anyone confirm this story? I can only find it on Fox News and a few other right-wing blogs; I'm guessing there's more to it, but dang if I can find any additional information on it.

Oregon Offers Terminal Patients Doctor-Assisted Suicide Instead of Medical Care

Since the spread of his prostate cancer, 53-year-old Randy Stroup of Dexter, Ore., has been in a fight for his life. Uninsured and unable to pay for expensive chemotherapy, he applied to Oregon's state-run health plan for help.

Lane Individual Practice Association (LIPA), which administers the Oregon Health Plan in Lane County, responded to Stroup's request with a letter saying the state would not cover Stroup's pricey treatment, but would pay for the cost of physician-assisted suicide.

If true, this is obviously more than a bit chilling.

Saturday, July 19, 2008

Fat Salmon

I swam in the Fat Salmon open water race today. This was 3.2 miles in Lake Washington, from the I-90 bridge to the WA-520 bridge.

Oh, and I decided to do it without a wetsuit. The temperature was nice (~72°F), but oof -- the double whammy of no neoprene and fresh water meant my buoyancy went out the window. And, boy, did I pay the price -- I clocked in at an even 2 hours (my official time was something like 2:00:14). The last time I did a straight 3 mile swim in the pool I finished in 1:38 -- still not zippy, but not sluggishly slow.

I never even saw the first set of three buoys I was supposed to swim between. I might have gone between them, but then I should have caught a glimpse of them. Apparently, neither did a few others, nor were people being disqualified for this. (Not that they're overly strict at Fat Salmon.) Trying to sight them was a pain -- buoys aren't the easiest thing to spot when your eyes are at water level, and my lack of buoyancy only made things worse -- so I suspect I lost a lot of time craning my neck up every 12 counts.

But I finished.

The course:

Sunday, June 29, 2008

The Rock

I haven't been posting my open water workouts -- too many to list this year, and I just haven't had the time -- but this morning's workout was notable: I finally make it to Blakely Rock today!



This is about a mile off-island; since we start in Blakely Harbor this makes the trip just under 2 miles one-way). You feel like you're in the middle of Puget Sound standing on the rock. I hope to get some pictures soon. In the meantime, here's an overview map to give you an idea where this is in relation to Seattle:

Sunday, June 15, 2008

It's the year 2008...

Forget my flying cars. Why the heck can I still not print from Linux (more specifically, Ubuntu 8.04)?

I threw together a little applet to stitch together a Puget Sound navigation chart from NOAA (check out chart number 18449). This isn't acceptable for navigation, they say, but hey: I just want something to look at. I don't own a yacht, boat, or even a kayak; the extent of my water vessel ownership is owning a swimsuit and goggles...

It was a success; you can download it here, if you're so inclined. Anyway, now to print it.

Oh, god, the agony.

I tried Eye of Gnome first. I tweaked my printer settings a bit (I'm printing this to 13"x19" glossy paper instead of the normal letter paper) and hit print. The system starts puzzling over this for a bit (at least if the CPU usage bar is any indication) and then... nothing.

I open up the printer jobs viewer. It says the job is stopped with no indication at to why. That's strange. I cancel it and try again. Same result.

Ok, maybe EOG is flaky. I cancel the second job and start up Gimp (which, incidentally, is an exceedingly dumb and potentially offensive name for an image editing program, but I digress...). I change the settings again, hit print... and, again, minutes of thinking followed by nothing. I do the cancel/reprint/cancel/print a test page/reprint shuffle a few times, but all to no avail.

Hrm. Something is amiss. I check out the CUPS logs:
E [15/Jun/2008:23:11:10 -0700] PID 28099 (/usr/lib/cups/filter/pstoraster) stopped with status 1!
E [15/Jun/2008:23:11:11 -0700] [Job 226] Job stopped due to filter errors.

Well, that's interesting. But why is this pstoraster program failing? Any logs?

Nope, can't find them. But it turns out that pstoraster is a shell script which does attempt to print some logs out -- they're probably just going to /dev/null. I write a wrapper to send its output to /var/log/cups/pstoraster.log, try printing again, and see what I get.

Oh, joy. It's failing somewhere deep in the bowels of Gutenprint and Ghostscript:

DEBUG: Running /usr/bin/gs -dQUIET -dDEBUG -dPARANOIDSAFER -dNOPAUSE -dBATCH -dNOMEDIAATTRS -sDEVICE=cups -sstdout=%stderr -sOUTPUTFILE=%stdout -c -
... many lines of garbage deleted ...
Error: /rangecheck in --image--
Operand stack:

Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval--
--nostringval-- 2 %stopped_push --nostringval-- --nostringval--
--nostringval-- false 1 %stopped_push 1905 1 3 %oparray_pop
1904 1 3 %oparray_pop 1888 1 3 %oparray_pop 1771 1
3 %oparray_pop --nostringval-- %errorexec_pop .runexec2
--nostringval-- --nostringval-- --nostringval-- 2 %stopped_push
--nostringval-- 1809 1 3 %oparray_pop
Dictionary stack:
--dict:1149/1684(ro)(G)-- --dict:0/20(G)-- --dict:126/200(L)--
Current allocation mode is local
Last OS error: 2
GPL Ghostscript 8.61: Unrecoverable error, exit code 1
DEBUG2: cups_close(0x685378)

Catch all that? This will be on tomorrow's quiz.

How did I end up printing this? I fired up Windows XP in VMware Player, opened the image using an old copy of Paint Shop Pro 5 (which works well for 99% of my image editing needs), and hit print. Pretty map came out a few minutes later.

Seriously, folks: this is an embarrassment. You're making Vista look like a dream.

Friday, June 6, 2008

Fly Derrie-Air

Skinny? Flying to Philadelphia? Check out Derrie-Air:
The magic comes from our one of a kind "Sliding Scale"—the more you weigh, the more you'll pay. After all, it takes more fuel—more energy—to get more weight from point A to point B. So we will charge passengers based on how much mass they add to the plane.
Yes, it is a joke. Nonetheless, the media company behind this spoof actually did buy full-page adverts in Philly papers this morning.

Seals, coming unglued...

First, the coming unglued part: this was not my fault. (Actually, it wasn't anyone's fault, though working around the issue took a lot longer than it should have.)

But the more interesting part: I apparently have a new pet. There's a seal in Manzanita Bay, where we often swim, who has decided that I'm fun to play with. It was pouring on Tuesday, so we didn't have a support craft; instead, I had one of those lifeguard rescue tubes dragging behind me on a strap. The seal thought it would be hilarious to play with it and tug on the straps. Spooked me out the first time the came around. Eventually, it just got annoying.

Wednesday was another swim day, this time with a support craft. To my surprise, the seal still wanted to play even though I didn't have the tube with me. This time, it was mostly in the form of bumping against my feet and swimming below me (face up, just to show that he was a better swimmer or somesuch).

I am a bit worried that he's getting too comfortable with humans. That's usually not a good thing for wildlife. Ah well... all of our attempts to scare him off have proven unsuccessful. I guess we'll just have to live with him.

Monday, May 26, 2008

I've been busy.

It amazes me that using the Internet, which used to be a fun, diversionary pastime, is now a lot like work. When I do get a free moment -- which is sadly becoming a rare occurrence these days -- jacking in to the matrix (errr, surfing the web, that is) is down at the bottom of the list of things I want to do.

As a result, updating my journal falls by the wayside, too.

So... let's see. Last update was 18 April. Since then, I've:
  • Gone to Maker Faire with Tamara and our friend Julie. It was a lot of fun. A few pictures I took of the gizmos are online.

  • Started open water swimming in Puget Sound again. We've mostly been swimming in Manzanita Bay (here's an overview of a typical workout there), and there's a seal which loves to swim with us. Actually, it's the ladies he seems to like. Don't ask me how he can tell the difference (or even if it's a male -- apparently, his/her ability to determine interspecial gender is better than mine), but he definitely goes up next to them instead of the guys.

  • Gone to Hobuck Beach a couple times. No pictures, sorry; I felt more like wandering than thinking about taking photos. I did get a nasty tire puncture hitting a sharp rock on highway 112 when returning from my first trip. That also prompted me to get my tires replaced; when putting the spare on, I noticed that the treads were much more pronounced. Oops.

  • Built a BlackBerry application to make oncall life easier at work, called Sur Appels Sans Frontières (i.e. "On Calls Without Borders" -- yes, I know the French is atrocious, but it translated forward and back properly in Google Translator, so I'm sticking with it). This was part of a competition to build tools for others in the company to make their lives easier. The upside: I won the "Best Tool For Builders" category. The downside: They want me to roll this baby out (in my copious spare time, of course :-). I did get a nifty hard hat helmet/trophy (in keeping with our internal system builder website's Bob the Builder theme). I'll have to take a picture of that.

  • Gotten completely inundated with operational issues at work. Ironically, while I was giving the demo of Sur Appels, my team was in the middle of dealing with a Sev-1. It also seems that the new database hardware we're getting has a bad issue with the storage controllers which causes the database to completely hang from time to time. In usual Amazon tradition, the engineers are being told to just deal with it, it's your problem, not provisioning's. That is, we'll spend a few million to work around the problem rather than a few thousand to deal with it directly. <sigh>

  • Been househunting off and on. More off than on in the last few weeks. I hate the whole process. That's all I'll say for now lest this become an angsty rant.

And there you have it, in executive summary PowerPoint bullet form. Next slide please.

Friday, April 18, 2008

It is snowing.

Which wouldn't be unusual in and of itself except (a) it's mid-April, and (b) this is Seattle.

We're supposed to have our first open water swim in a couple weeks. I'm beginning to wonder about this.

Maker Faire

Anyone reading this going to Maker Faire at the San Mateo Fairgrounds next month?

After two years of wanting to go but doing nothing about it, I'm finally plunking down the money to fly down and go. I'm usually reluctant to spend money on trips like this for myself without some other attached event (e.g., someone else is going, is getting married, etc.). I don't really know why I'm that way; I just am.

I'll be there on Saturday, May 3rd. If you'll be there, get my contact info and come say hi!

Sunday, April 13, 2008

I spent my weekend mostly naked.

Probably more information than you wanted to know. But I was at the PNA/NW Zone swim meet, so I had an excuse this time. This was my first ever swim meet that I've actually swum in (I've spent others timing and running the computer).

The King County Aquatic Center is nice. The competition pool is an LCM (long course (50) meter), dividable into various arrangements; for this meet, it was divided into two SCY (short course (25) yard) pools. It's 9 feet deep throughout -- no worrying about hitting your head turning in the shallow end -- and has waveless gutters. You could warm up during the meet in the dive tank -- 25 yards square and 17.5 feet deep. When you jump into it, you feel like you're just going to float forever downward.

Anyway, I did the 1000 and 1650 ("swimmer's mile") freestyle events, and a relay event where I swam another 50 freestyle. I learned that I'm faster than I think I am, but still nowhere near as fast as I'd like to be. I managed a 15:13 in the 1000 (vs. expected 18:00), and 25:08 for 1650 (expected 29:00). However, I know that I was faster here than I am in my normal pool -- all those niceties plus the adrenaline rush add up.

Tuesday, April 8, 2008

A decent web framework?

I've been playing with a combination of CherryPy, Genshi, and Dojo to put together a website for a friend. So far, I've been quite pleased.

CherryPy is the request router -- it's responsible for cracking open the HTTP message and deciding how to process it. I have a few nits about it -- mainly documentation related -- but getting a webserver set up which did something along the lines of, "Route everything through Genshi except this path, which you should serve from the filesystem," was very straightforward.

Genshi is the first page framework which evoked a response from me of, "Hm, this could work," instead of, "God, I feel like I'm going to throw up." It uses an interesting approach: you write everything in XML and embed the programmatic constructs in the attributes. The rendering phase takes care of the transformation to HTML (or text, or ). For example, here's how you might render a table full of sliders for every integer or floating-point parameter:
<tr py:for="param in parameters">
<td py:if="param.valueType in ('int', 'float')">
<div dojoType="dijit.form.HorizontalSlider"
id="${param.name}Slider"
py:attrs="param.sliderAttributes"
intermediateChanges="true"
onChange="onNumericSliderChange('${name}')" />
</td>
</tr>


I'm used to the frameworks which require you to escape any code. Genshi lets you do that, if you absolutely insist upon it:
<?python
for param in parameters:
?><tr><?python
if param.valuetype in ('int', 'float'):
?><div dojoType="dijit.form.HorizontalSlider"
id="${param.name}Slider"
py:attrs="param.sliderAttributes"
intermediateChanges="true"
onChange="onNumericSliderChange('${name}')" />
</td>
</tr>


Dojo is a set of widgets. Not quite Google Web Toolkit, but it's simple and gets the job done.

Friday, April 4, 2008

SpamAssassin's multiple personality disorder

SpamAssassin has become a bit overly aggressive in its filtering as of late. A few of my friends' e-mails are getting sucked up in there, so I've had to monitor it a bit more closely.

Today, however, I found this gem in there. Clearly, it was conflicted as to whether the e-mail was spam or not, though ultimately it decided it was (and was correct in this determination). What amazes me is that, even with 12.3 positive points subtracted, this e-mail still scores as spam.
Content analysis details:   (8.6 points, 5.0 required)

pts rule name description
---- ---------------------- --------------------------------------------------
1.0 NO_REAL_NAME From: does not include a real name
0.1 FORGED_RCVD_HELO Received: contains a forged HELO
0.1 HTML_90_100 BODY: Message is 90% to 100% HTML
0.0 HTML_MESSAGE BODY: HTML included in message
0.5 BAYES_99 BODY: Bayesian spam probability is 99 to 100%
[score: 1.0000]
0.0 MIME_HTML_ONLY BODY: Message only has text/html MIME parts
-4.3 RCVD_IN_BSP_TRUSTED RBL: Sender is in Bonded Sender Program (trusted
relay)
[Return Path SenderScore Certified (formerly]
[Bonded Sender) - ]
1.6 URIBL_SBL Contains an URL listed in the SBL blocklist
[URIs: selleis.com]
3.8 URIBL_AB_SURBL Contains an URL listed in the AB SURBL blocklist
[URIs: selleis.com]
4.1 URIBL_JP_SURBL Contains an URL listed in the JP SURBL blocklist
[URIs: selleis.com]
2.1 URIBL_WS_SURBL Contains an URL listed in the WS SURBL blocklist
[URIs: selleis.com]
3.0 URIBL_OB_SURBL Contains an URL listed in the OB SURBL blocklist
[URIs: selleis.com]
4.5 URIBL_SC_SURBL Contains an URL listed in the SC SURBL blocklist
[URIs: selleis.com]
0.0 MIME_HTML_ONLY_MULTI Multipart message only has text/html MIME parts
-8.0 AWL AWL: From: address is in the auto white-list

Office/cubicle location

I've decided that it's not the size of the office which matters; it's the location. While I wouldn't pass up a posh corner window office on the penthouse floor, that's not what I'm thinking of. I need an office deep within a maze of twisty passages, all alike. The effort required to find me would place a high premium on interrupting me, and hopefully I could get more done.

Then again, maybe this will ensure that I only get determined idiots bugging me. Hm.

Tamara and I went down to Sacramento to visit a friend for an extended weekend. It was fabulous -- we spent a few days at her family's cabin in the Sierras, got together with a bunch of college buddies in the Bay Area, and otherwise just hung out.

Remember that fitness challenge I was doing in February? Well, the results have been posted; I came in second in my age group again. The guy who beat me won't beat me next year, though -- if only because I'll move up to the next age group. :-)

Monday, March 17, 2008

Value of a dollar?

If you are paid in or have bank accounts valued in U.S. dollars, the news that Bear Stearns was sold for $2 per share -- in a deal backed with $30 billion [edit: I originally mistyped "million" here] of your tax dollars -- should be extremely worrying.

This means that Bear Stearns is valued at $236 million. Last Monday, when it was trading at $70/share, it was valued at $8.26 billion. In the span of a week, $8 billion dollars effectively vanished into thin air -- in other words, investors overvalued BSC by 3500%.

If we were talking about Moe's Junkyard and Hot Dog Stand and other places with shoddy or non-existent accounting, nobody would care. But we're talking about a bank, whose finances were tracked by other banks.

This is like going to the ATM, withdrawing $20, and then trying to buy lunch -- only to find you can't afford it because there's only 57¢ in your wallet. Or going to the gas station and finding that the price of gas has risen from $3.50/gallon to $122.50/gallon. All stuff which is supposed to be unthinkable.

Yet it's here. And I'm worried.

Saturday, March 15, 2008

Mirroring blog entries from Blogger to LiveJournal

I've gotten a few questions on how I'm using Blogger while having posts mirrored to LiveJournal. The magic is a little Python script I wrote, which I've sanitized (that is, I got rid of my hard-coded and tossed up here.

It's not for the faint of heart in its current form. You'll need:

  • A Unix-ish computer. MacOS X is probably sufficient, but I don't have a Mac to test it on. Sorry, porting this to Windows is just too much effort.
  • Python 2.5.
  • The GData API for Python.

You'll probably want to install it as a cron job. My crontab runs this every 15 minutes:

# m h  dom mon dow   command
*/15 * * * * /home/dacut/bin/blogger2lj.py

Why would you want to do this? In my case, I'm getting weary of the goings-on with the suits over in LJ land, but still have a bunch of folks who read the version over there. I guess we got settled in before LJ became the platform for emo tweens. Heh, live and learn.

Anyway, I'm not saying that others should move to a new blogging platform. This just gives you the option to move without having to cut ties with your existing social circle. Could you imagine what real life would be like if decisions like this dictated your social circle? "Bob, Linda, Jake: It's been great hanging out with you guys, and I'm going to miss you. But I'm changing mobile phone companies, and the new one doesn't take phone calls from you. Sorry."

Thursday, March 13, 2008

Oracle Poetry

It's interesting what you can stumble across when you turn stones over while walking along a path. Or, in my case, when you snoop on network traffic. Worry not; I was doing this for a good cause: to track down a problem with the Oracle database driver.
@"Oracle

Everybody follows
Speedy bits exchange
Stars await to gl@ow"
The preceding key is copyrighted by Oracle Corporation.
Dupl@ication of this key is not allowed without permission
from Oracl1e Corporation. Copyright 2003 Oracle Corporation.

It looks like this is a creative way of making sure nobody else writes their own software for talking to Oracle databases -- to do that, you would have to copy the poem, which is a violation of Oracle's copyrights.

Saturday, March 8, 2008

Either I'm losing my edge....

... or the jargon beast has eaten the Eclipse folks and changed their website.

Granted, I'm only develop in Java because it's the langue du jour in software circles today and am not overly enamored of it (or its fanboys), but I do have a reasonably deep understanding of the lingo. But I can't make heads or tails of the Eclipse Equinox mission statement:

From a code point of view, Equinox is an implementation of the OSGi R4 core framework specification, a set of bundles that implement various optional OSGi services and other infrastructure for running OSGi-based systems.

More generally, the goal of the Equinox project is to be a first class OSGi community and foster the vision of Eclipse as a landscape of bundles. As part of this, it is responsible for developing and delivering the OSGi framework implementation used for all of Eclipse. In addition. the project is open to:

  • Implementation of all aspects of the OSGi specification (including the MEG and VEG work)
  • Investigation and research related to future versions of OSGi specifications and related runtime issues
  • Development of non-standard infrastructure deemed to be essential to the running and management of OSGi-based systems
  • Implementation of key framework services and extensions needed for running Eclipse (e.g., the Eclipse Adaptor, Extension registry) and deemed generally useful to people using OSGi
As a peer of the Platform, JDT and PDE projects, the Equinox OSGi code is managed by the Eclipse PMC and ships with the Eclipse project major releases. The various other bundles developed here may ship independently and on different schedules.

On the other hand, I think I'd be more worried if I did understand this...

Saturday, March 1, 2008

February is over...

And that means the February Fitness Challenge is done. Which is good, because my body desperately needs a day off.

I'm rather pleased with how I did. I swam 121,000 yards (68¾ miles/110 kilometers), beating my goal of 100,000 yards.

In pictorial form:

Monday, February 25, 2008

Am I radiant?

If you're going to steal something from an abandoned building, I recommend choosing something other than the old, radioactive X-ray source. It's also probably not a great idea to sell it on eBay.

Friday, February 22, 2008

Vista -- sorry, it's my bad...

At least according to Slashdot, Amazon caused Vista to ship before it was ready by stealing a key Microsoft SVP, Brian Valentine. He's the SVP of my org at Amazon now.


They also point out that we're paying him something like $33M over four years; for once, though, I'll say it's money well spent. He's probably saved the company that much already by cutting out crap. Very effective leader in my book.

Monday, February 11, 2008

I wax statistical...

I'm watching "Deal or No Deal" -- they have a new gimmick where they're putting up multiple cases with $1 million (12 of 26 for the current contestant), replacing the other high dollar amounts on the board. However, I'm not sure it actually changes the gameplay at all.

Computing the expected value at any point is straightforward. The bank's offers, however, are not solely dependent on the expected value; the number of turns appears to be a factor. A comment on this blog post suggests offer = <value> * turn / 10 (where <value> is the expectation value). The offers the bank is making in the early rounds of the 12 $1 million case version, however, seem low -- almost as if the values on the board were not $1 million but the previous values. The episode ended before the contestant finished, so I'm left wondering at this point.

One thing which strikes me, however, is that the endgame is probably the same. If he/she makes it to the final round, in all likelihood (though I have yet to confirm this statistically) the choice will be between a low dollar amount and a $1 million suitcase. Maybe it's somehow easier to get to this endgame? Hm. You know, I'm going to have to do the math on this one.

Saturday, February 9, 2008

Oof...

Silly me. Silly fitness challenge. I swam just over 6 miles today (10,600 yards). That's the most I've done in a single day and my arms are complaining like crazy.

I'm currently at 23.8 miles for the month; my goal is 56.8 miles (100,000 yards), so I'm a good part of the way there. Let's hope my muscles don't fall apart.

Early results from Washington

At least if the precincts in my caucus were anything to go by, it looks like Obama will have a solid lead in Washington. The breakdown in my precinct was 188 (12 delegates) for Obama, 55 (3 delegates) for Clinton, and 19 (1 delegate) undecided. Other precincts split similarly. Turnout was heavy, as one might expect.

This is the first time I've ever participated in a caucus -- my previous experiences were voting in lame duck primaries in California and Pennsylvania. I quite like Washington's system; you don't register for a particular party, so you can go to either of the caucuses. Since McCain has the Republican nomination pretty much locked up, it made far more sense to attend a Democratic caucus. Listening to people campaign makes for a far more lively atmosphere; participating in the political process is more fun this way.

Sunday, February 3, 2008

When work intrudes on your personal life...

I just saw the Super Bowl ad for Pepsi Stuff. Unremarkable, except they flashed the Amazon.com logo for a fraction of a second. It's so weird seeing that. I forget just how big Amazon is sometimes. It's unusual, because the work I do often has a direct impact on the website.

At every other big company I've worked (IBM, Seagate, Cadence), my work usually ends up being a footnote for some minor offshoot project which never made it into a real product. Until now, it's only been the startups (AstroTerra, Neolinear) where my contributions actually have had a measurable impact for a customer.

Monday, January 28, 2008

The Fed's big 75 point mistake

This article in the Motley Fool is, IMNSHO, spot-on. The Fed's recent 75 point cut in interest rates is a crazy mistake.

Remember that the Fed's job is to tame inflation, not try to correct the economy. The economy simply cannot be corrected by central planning like this -- time has shown again and again that this produces results counter to the effect desired.

What does reducing the interest rate do? It makes the dollar a less attractive investment for foreigners -- who wants to buy dollars when the return is lower? Then basic supply and demand kicks in: a decrease in demand means the price (or exchange rate) goes down. Since a lot of our goods are imported -- including and especially oil -- their prices will go up.

The net result? Stagflation.

Thursday, January 24, 2008

OOXML bad? Try iTunes.

Technical folks like to wail about how defective OOXML (Microsoft's "open" format for Office) is. I agree -- with instructions like "render this table in the quirky way Word 95 did it", it's an impossible standard to implement.

However, that is nothing compared to the travesty that is iTunes. I've been having problems with my iPod; whenever I plug it in, iTunes spits up a DOS-like dialog box: "There is no disk in the drive. Please insert a disk into drive E:. Abort/Try Again/Continue." Googling suggests a possible fix: delete your iTunes preferences and reinstall.

Ugh. I'd rather not delete my license key and preferences, thankyouverymuch. So I decided to see what was in this file and if I could fix it myself.

I open up iTunesPrefs.xml in XEmacs and am presented with:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EQ Preferences</key>
<dict>
<key>EQPresets:129</key>
<data>
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
....
</data>
</dict>
<key>HTTP</key>
<dict>
<key>Cookies</key>
<data>
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NU
WVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUgQ29tcHV0ZXIvL0RURCBQTElT
...
</data>
</dict>
<key>Keychain</key>
<dict>
<key>Keychain</key>
<data>
WqtWpl9/8NLX0QgFWU4ogEh/7aKP4SbSBd7LRQZ6G8NBJ8dt+AjSv4fs6UOK
qZQ1PkuO6SqRct7r67XozEPbT8LIyXCZsHZe3w5qcvBQyWOzOTUVOJXT74ZC
...
</data>
<key>iTunes Library XML Location:1</key>
<data>
QwA6AFwARABvAGMAdQBtAGUAbgB0AHMAIABhAG4AZAAgAFMAZQB0AHQAaQBu
AGcAcwBcAGMAdQB0AGgAYgBlAHIAdABcAE0AeQAgAEQAbwBjAHUAbQBlAG4A
...
</data>
</dict>
</dict>
</plist>

And so forth.

Ok, so I can understand wanting to obfuscate things like my DRM keys (presumably what's behind the Keychain bit). But equalizer settings? Application paths? Huh?

If you're going to store things in a locked down, proprietary format, why go through the lengths to format and parse it in an interchange format like XML?

Thursday, January 17, 2008

Ah, PL/SQL

Ah, the idiocies of Oracle's database language, PL/SQL.

Let's say you're trying to fix things for a few thousand customers who have managed to create duplicate accounts. You want to delete the duplicate accounts, which are listed in a driver table called DUPLICATE_ACCOUNTS. Knowing that committing a few rows at a time is a good thing on a running database, you might try something like the following:

DECLARE
    CUSTOMER_ID NUMBER;
    CURSOR CDEL_CUR IS SELECT CUSTOMER_ID
        FROM ADMIN.DUPLICATE_CUSTOMERS;
BEGIN
    OPEN CDEL_CUR;
    LOOP
        FETCH CDEL_CUR INTO CUSTOMER_ID;
        EXIT WHEN CDEL_CUR%NOTFOUND;
        DELETE FROM CUSTOMERS
         WHERE CUSTOMERS.CUSTOMER_ID = CUSTOMER_ID;
        COMMIT;
    END LOOP;
    CLOSE CDEL_CUR;
END;

Note the boldfaced delete clause. One might expect this to find the row where the CUSTOMER_ID is the same as the CUSTOMER_ID we just fetched from the driver table. But no! Oracle interprets this the same as:
    DELETE FROM CUSTOMERS
     WHERE CUSTOMERS.CUSTOMER_ID = CUSTOMERS.CUSTOMER_ID;


In other words, those rows whose CUSTOMER_ID is equal to itself -- which (since there are no null CUSTOMER_IDs) is every single freaking row in the database!

Yes, I did this (well, something similarly disasterous) at work today. Yes, it was a production database. No, thankfully nothing crashed -- our databases are so busy that this immediately got hung up waiting for locks that we were able to kill it once we realized what was happening.

I'm not a DBA. I just play one on TV.

Tuesday, January 15, 2008

I don't *want* to drool...

First off, I don't like Apple, the company. Steve Jobs is rather arrogant and his company reflects this character flaw.

But their products? Oooh. A laptop that's 0.16 inches (40 mm) thick? Yes, please.

I also acquired an iPod Shuffle over Christmas. It usually lives in a waterproof housing and goes swimming with me, though I'm still tweaking the headphones -- you need to prevent water from getting between the headphones and your eardrums to keep the music going. Apparently, the shape and size of my ears is at the tail end of some bell curve; I end up having to stuff massive amounts of silicone putty over my ears just to make it last more than a few laps.

Alas, I doubt that I'll own a Mac in the foreseeable future. I rarely have a need to upgrade my computer(s) wholesale -- they're like George Washington's axe, wherein each component has been replaced at various times so that none of the original parts still exist. If I remember correctly, my current machine started out life as a Cybermax (a company which went bankrupt years ago) AMD K6-2 with 512 MB of memory and a 8 GB hard drive, running Windows. It's now an Athlon 64 with 2 GB of memory, 250 GB RAID-1 array, in an understated Lian Li case, running Ubuntu 7.10.

Work is going well, though I can't post much in the way of specifics of what I've been working on. It's nothing exciting (well, to non-dev-types) or anything you'll hear about in the news, though; I only work on the backend systems, after all.

Monday, December 24, 2007

Merry Christmas!

Visiting Tamara's family over in D.C. (the other Washington). Lots of merriment is being had.

This came from my sister-in-law: what really happens to the glassware in hotels, with a follow-on edition for five-star hotels.

I guess I can understand why I was able to eat at the roach coaches parked in front of CMU and not get sick during my grad school years and not get sick: it's not that different from real life.

Saturday, December 22, 2007

Replacing the artist with a computer?

No, not really. At least, this falls far short in my mind.

I came across a CNet review of Photofiddle, a service which will turn your digital pictures into paintings and the like.

Alas, looking at the samples they have online, it looks more like they're just printing stuff onto canvas. You can have various effects applied (e.g. oil painting, watercolor), but I don't think they're actually applying oils with a brush (human or computerized). Brush strokes (and the globs of paint they can produce) affect the painting, and -- unless I'm mistaken -- these are simply absent in Photofiddle.

I'm also quite disappointed in what they claim are sketches. Sorry, but a crappy edge detection filter does not make it a sketch.

Friday, December 21, 2007

Amazon is moving to South Lake Union

It's official -- Amazon is moving to new digs in 2010 in the South Lake Union neighborhood.

I guess this means I'll be riding the S.L.U.T. to work every day.

I'm not so sure if swimming in Lake Union is an option. The south end is where a number of boat docks and Kenmore Air are located; the north end at Gas Works Park is apparently somewhat toxic.

Also, this is the first post I'm making through Blogger. I'll have to see if I can get my replication system over to LiveJournal working.

Sunday, December 2, 2007

Hm, so I haven't been reading many LJ entries as of late -- though not for lack of trying. I had to clear my browser's cookies (as I often do -- lots of work-related testing), forgot to log back in, and have been missing anything protected as a result. Whoops.

So I'll embed a video to make amends. (No, I'm not sure how that works, either.) It's an Aussie TV comedy/talk show host flirting with a church group. And not just any church group -- it's the Westboro Baptist Church.

Tuesday, November 27, 2007

They say that multi-drive failures are infrequent enough that you generally don't need to worry about them. RAID-5 is good enough.

Well, buy me a lottery ticket. I had to deal with a multi-drive failure on one of our login databases on Sunday night -- first drive failed at 9:30 pm, then the second at 10:08 pm. It took us about six hours to recover the database. Fortunately, our applications are resilient to a single-database failure, so there wasn't any impact -- but those were a tense six hours nonetheless.

Friday was another interesting day. A few web devs thought it would be neat to implement an AJAX script which updated a progress bar showing the progress of a sale (what percentage of items have been sold). Alas, they didn't think through the impact their little script would have as a few million users hit the site with a refresh request every half second. The script was badly written enough that it grabbed data from multiple services and then ignored 90% of the information retrieved. The net result? A few services and networking devices melted down. And guess who got to help clean up the mess?

Thursday, November 22, 2007

My people? Crazy.

Tuesday, November 20, 2007

I haven't checked work e-mail since late Friday night. I've been tempted, especially since today's Newsweek had the Kindle on the front cover and I'm sure there's a bunch of buzz in the office, but I need the unplug time.

Incidentally, I've known about this for a year or so, though I only knew it by its internal name, Fiona. I hadn't heard anything about it for a long time; I was wondering if it had died. Obviously not. My first impressions: Ugly? Yes (and it was just as ugly a year ago), though part of me says that if you focus on these sorts of things, you're not the target audience. Expensive? Ayup, too much so for my tastes (though the price will surely come down). Will I give up books for it? Doubtful; books don't have restrictive DRM and you can dogear pages much more easily. They are heavier and (in the instances where it matters) less searchable.

Vacation has been quiet and nice so far. Spent much of today working on my console (an electronics workbench). Lots of sawdust everywhere. Trying to use a 1/8" Dremel router bit to mill out a largeish area (about 10" x 6" x 1/4") is very, very tedious. Tomorrow will involve swimming, maybe some wandering over on the Olympic Peninsula, and more milling. Notably absent: work. :-)

Friday, November 16, 2007

One of the better things about Amazon: our senior managers are not out-of-touch with the engineers. Nor are they afraid to speak their mind; what they say is not couched in managerspeak.

Brian Valentine, my division's SVP, gave a talk today entitled "Lessons Learned" -- basically a rundown of what he worked on in his career (most of it -- 19 years -- at Microsoft), described the mistakes made, talked about what he wanted to do at Amazon, and related a lot of war stories. It was hilarious and inspiring -- and this is from someone who is usually a bit pessimistic.

Alas, I don't know how much I can relate here, so I won't go off quoting bits and pieces of it.

Tuesday, November 13, 2007

Heh... so my son will be Robert'); DROP TABLE Students;--. I guess my daughter will be Elaine:

Monday, November 12, 2007

I was starting to wonder just how much energy a compact fluorescent bulb saves in terms of carbon footprint. It's widely known that you can use a lower wattage CFL bulb to replace a given incandescent bulb; e.g., the light given off by a 23 W CFL bulb is the same as that of a 100 W incandescent bulb.

However, CFLs also contain mercury (on the order of 5 mg per bulb). Disposal regulations vary widely; in my area of the woods, there's some confusion as to how households are supposed to dispose of them. We'll play responsible citizen here and take them to a recycling center.

In my county, there are three sites which accept CFLs. The nearest one is in Poulsbo, a 25.2 mile round trip.

Let's assume it's time to take that bulb to the recycling center. (Ok, normally I would bundle them up and take a bunch at a time.) In my 2000 Honda CR-V, this trip would consume a gallon of gas. According to a random environmental site on the Intertubes, this is 10.9 kg (24 lbs) of CO2.

Yikes. That sounds like a lot. Does this offset the benefits of a CFL?

The average lifetime of a CFL is 15,000 hours. Assuming our earlier 23/100 W bulb comparison, that's a difference of 1155 kWh over the lifetime of the CFL. According to this carbon calculator, 1 kWhr of electricity results in 0.43 kg of carbon emissions.

That's a 496 kg; discounting our (silly) trip, I will have released 486 kg less CO2 into the atmosphere -- that's half a ton.

Ok, I can rest easier now. :-)

Wednesday, November 7, 2007

Watching a train wreck...

A Canadian dollar is now worth 1.08 US dollars. Next stop: Australian dollar parity. And I don't see a bottom to this:

My investments have been flat. As expected, losing money on domestic stocks; gaining it on foreign stocks.

Saturday, November 3, 2007

Friday, November 2, 2007

What the heck is this? I see it popping up on various sites -- it's one of the most annoying Web 2.0 inventions I've ever seen.


I'm guessing it's supposed to show a thumbnail of the linked page. I've never seen anything but the "Loading Preview" text, though.

As another blogger aptly put it, "I was beginning to think it was the 90’s all over again, with the blinky text and the annoying midi files."

Even better:
Snap’s preview anywhere gizmo is ruining the reading experience for millions of people. Its intrusive, obstructive and un-useful in almost every respect and use case. The fact that so many big blogs are using it, big well respected blogs, does not mean that it’s useful, it just means that they, like most bloggers, have all the self restraint of a magpie in a sparkly things factory.


What's next? Are these folks going to go around and start modifying cars so they honk every time you hit the brake? Have my office phone ring anytime someone on my floor gets up to use the restroom?

Edit: Thanks to for providing this tip on how to disable it:
If you click on the gear, there should be an option to "disable", and the little preview-page that results will let you chooose "all sites" and then "save". It'll set a cookie somewhere and never bother you again, as far as I can tell.

Wednesday, October 31, 2007

This is what I've been spending a fair amount of time on over the last six months. Not that web page specifically, but all of the backend logic to make it work as well as migrating about 100k customers from the old set of bank accounts to the new.

Monday, October 29, 2007

U.S. occupies Canada

Our solution to the currency issue? Take over Canada, one piece at a time.




Yes, I am disappointed in the Rockies' implosion in the series. Excellent showing by the Sox. Careful, though; keep it up, and people will start lumping you with another team in the northeast.

Saturday, October 27, 2007

Apple has apparently perfected their Windows emulation:
Dreaded Blue Screen of Death mars some Leopard installs
Apple support drones are getting an earful from Mac users who are getting the dreaded Blue Screen of Death while trying to update to the latest and greatest version of OS X. This thread on an official Apple support forum has more than 200 posts left in 25 hours at time of writing. A large percentage of the writers report getting a persistent blue screen that forces them to abort their installation of Leopard.


I cannot help but be amused. I kinda like Apple, but Steve Jobs' arrogance gets to me. This will take him down a peg or two -- hopefully.

Monday, October 22, 2007

On fire...

I-15 is never this empty, especially at rush hour:

I-15 at Felicita Road [map]




I-15 at Centre City Parkway [map]



I-15 at Mira Mesa Boulevard [map]



My parents were evacuated around 1 pm; their house is (was?) on the northwestern edge of the Witch fire. Haven't been able to reach them, but I'm figuring they're safe and probably stuck in traffic on a surface street somewhere.
Anyone else remember Master Ninja's Q&A section? For some reason, I was trying to remember the characters, and then I realized I didn't even recall which site it was. (Google was of no help; it's been gone for a few years now.) No idea why I was trying to remember this; it wasn't terribly amusing back then, either.

At the risk of offending , , and , I feel a bit sorry for the Red Sox. Now, I like the Sox -- how can you not like a team whose archrival is the Yankees? -- but they're going up against the Rockies. The Rockies who have been kicking everyone's ass -- including my Padres -- since the start of September. The Rockies who have won the last 22 of 23.

Oh, and this time it's not the Red Sox who are the underdogs.

The Sox' best hope is that the boys in Denver have cooled off while waiting for the ALCS to finish up.

Thursday, October 18, 2007

BBC News

Argh. They're screwing up everything I like about BBC news; -- basically, dumbing it down to become a British version of CNN or Fox News.

Saturday, October 13, 2007

This is what's in the water...

(from the Nikon Small World photomicrography competition)

Wednesday, October 10, 2007

Tamara, I know what to name our kids now...

Friday, October 5, 2007

I've been dared to explain seven of my interests...



Anachronism
Because, doggoneit, quill pens shouldn't just gather dust in museums! Seriously, though, there are a number of interesting solutions to problems in past times which required a lot of thought. Modern conveniences ("just take the car," "get a portable electric generator," "throw a microprocessor at it") have made us intellectually lazy and wasteful.
Carver Mead
One of my professors at Caltech; I took analog VLSI from him. He invented many of the techniques used to design modern chips. In the 90s, the startups he founded created the touchpad and CMOS digital cameras. More recently, he's been working on something called "collective electrodynamics," which is an attempt to revamp the way we're taught electricity and magnetism (E&M) from a quantum perspective.
Finesse
No, not the shampoo. See my response for anachronism. I love elegant solutions. If a solution is not elegant, then it probably isn't correct.
Jenolan Caves
An absolutely beautiful formation of caves in the Blue Mountains in New South Wales.
Scones
Sweet but not kick-you-in-the-teeth sweet, and they go well with tea. Comfort food. I don't know that I've ever passed one up for breakfast.
Scraphead Challenge
The original title of Junkyard Wars, as set in Britain. Developed by the inimitable Cathy Rogers, contestants had to cobble together working machines or vehicles from items found in an actual scrapyard. The ultimate in finesse.
Throwing Rocks
Because the damn kids won't keep off my lawn.

Thursday, September 27, 2007

Swam about a mile yesterday in Dewatto Bay. It was absolutely beautiful.


To put the location into context, it's on the eastern shore of the Hood Canal, on the Kitsap Peninsula. All of this is west of Puget Sound. We live on Bainbridge Island.

Tuesday, September 25, 2007

I just got ripped off.

I spent the last 90 minutes watching Open Water 2: Adrift. It was a free cable "On Demand" feature. That was about $30 too much. Which, if you're doing the math, means they should have paid me $30 to watch that turd.

Thursday, September 20, 2007

I had forgotten this quote. An excerpt from Greenspan's new book, The Age of Turbulence: "I am reminded of Churchill's perception of Americans, who 'can always be counted on to do the right thing -- after they have exhausted all other possibilities.'"

Also, in the excerpt printed in Newsweek, Greenspan lambasts the U.S. educational system, blaming its pitiful state for the growing income disparity. I have to agree; as long as schools are churning out people ill equipped to work in a high tech labor force and we persist in restricting the inflow of skilled immigrants, the wages of the few skilled workers remaining (which includes everyone who reads my journal, at least that I know of) will keep rising out of proportion. Simple supply and demand.

Alas, I'm not going to go out and buy the book just yet. I'm in the middle of Another Day in the Frontal Lobe: A Brain Surgeon Exposes Life on the Inside. Quite a good book so far; both entertaining and informative.

No more "Monopoly Money" jokes...

Start holding on to those Canadian coins. Each is now worth the same as the equivalent US coin. You still can't use them in vending machines, though.

Anyone know if the retailers up north who previously accepted US dollars have stopped doing so? And can I expect to see US retailers in areas like Bellingham to start accepting Canadian money?

Washington State Ferries may want to reconsider their relatively recent refusal to accept the loonie.

Sunday, September 16, 2007

Imagining the Tenth Dimension

In case you can't find your usual stash of mind-altering drugs...
http://www.youtube.com/watch?v=qU1fixMAObI

Wednesday, September 5, 2007

This is how cult religions get started...

Never mind that mentioned multiple times that she would be in Seattle on the 11th. Never mind that I have multiple gadgets telling me that today is the 5th. It's in my Outlook calendar: so it must be true.

This is the reality of my life these days. My schedule is completely interrupt driven. Without Outlook, I wouldn't know when and where to be or, conversely, what I can get away with putting off for now. Flipside: if I enter an appointment incorrectly, forget any possibility of me making it. It might as well not exist.

Ok, so I do know my wife's birthday (April 8th) and our anniversary (October 26th) off the top of my head. And, no, I don't need to look in the address book to remember that her name is Tamara :-P.

Anyway, , this means that I can still make a 11:30/noon lunch next week when is here.

Sunday, September 2, 2007

I managed to drive 73 miles yesterday without leaving the island.

How or why? I was one of the ground crew coordinators for the Arms Around Bainbridge swim.

Tiring, but lots of fun. I also took pictures, but I'll spare your friends page from them.

Friday, August 31, 2007

Those who enjoy cooking appreciate a good set of knives.

This guy, however, has taken one-upmanship to a new level; he uses a laser to cut his steak.

Wednesday, August 22, 2007

Most people's commutes are delayed by mundane things: traffic congestion, accidents, vehicles breaking down, etc.

In my case, I have bomb scares thrown into the mix.

I'm guessing this was intentional; who in their right mind would accidentally leave a bag of sparklers (which will set off the bomb-sniffing dogs they have here) stuffed behind a toilet just a day after the FBI released photos of a couple guys who have been asking for details about ferry operations?




Of course, this is all trivial stuff. I recently heard from a friend from high school who spent the last year in the hellhole of Darfur. I recommend reading her blog -- it's an eye opener. And nobody else could sum up the Darfur conflict as eloquently and flippantly as she does:
And that’s Darfur in a nutshell. The Red Sox, the Yankees, the Dodgers, the Padres, and the entire rest of the American League all armed and jealous of one another.
Anyway, off to a block of meetings.

Thursday, August 2, 2007

Wow. Video footage (from a security camera) of the I-35W bridge collapse.

Sunday, July 22, 2007

Harry entered the nearly deserted dining hall. A few other Hogwarts students were in the far corner carrying on a game of Wizard's Chess; one of them -- a Slytherin Harry didn't recognize -- looked up for a moment, but then returned his attention to the game.

Minutes passed. Where were Ron, Hermione, and Ginny? Harry hummed a tune; something catchy he heard played in a muggle shop. He didn't know most of the lyrics; something about a boy in Detroit catching a train at midnight to anywhere. The thought of a train reminded him of King's Cross station and made him chuckle. How constraining it must be -- was, he reminded himself -- to be tied to train and bus schedules, having to fill up automobiles.

Ginny enters and asks him how his meeting with Snape went. "Oh, as you might expect," Harry says. "Draco won't going to testify against his father to the new ministry."

At this news, Ginny sighs. "Well, we can't expect it all to happen at once. Hey! You're sitting on my wand!" she says to Ron as he enters and plops himself down next to her.

"Sorry. I've spent the last five hours tending to Professor Sprout's mandrakes, and I'm wiped. But as dad used to say, 'Try to remember the times that were good.'" A few of the chess players look over in their direction at the break in the silence. Harry feels the gaze of the Slytherin student, putting him on a bit of edge.

Ron shakes some dirt off the sleeve of his robe; something ruffles in his pocket. "Oh, right. Mum sent me a box of Bertie Botts." Ron pulls the box out and starts to open it. "Want some? Hey, where's Hermione anyway?"

A brief interruption in the sunlight streaming in an upper window catches their attention. Another shadow -- this time, they can see it's Hermione flying backwards, attempting to park her broom. "Ah, still trying to park," Ron sighs. The Slytherin student walks slowly towards them, still gazing at Harry. He pulls his wand out, and Harry feels a chill on the back of his neck. Just as Harry moves to pull his wand out, the Slytherin brushes past them to go to the restroom.

Ron finishes opening the box of jelly beans, and they each pop one into their mouths. Hermione, having finally parked her broom, runs up to the dining hall entrance.

[FADE TO BLACK]

Saturday, July 21, 2007

For my roadgeek friends...

I used driving directions from Google Maps today which included the following:
  • South on US 101 for 3.3 miles.
  • West on WA 108, WA 8, and US 12 for 38 miles total.
  • South (again!) on US 101 for 0.5 miles.
Yes, the directions are correct.
Yes, US 101 runs reasonably north/south in both locations.
Yes, WA 8/108 and US 12 run reasonably east/west.

The answer lies in the strange routing of US 101 between Astoria, Oregon and Olympia, Washington:
  • From Astoria, it runs north to Forks via Aberdeen (directionals read north/south).
  • From Forks, it runs east through Port Angeles to Port Townsend (directionals read east/west).
  • From Port Townsend, it runs south to Olympia via Shelton (directionals read south/north and the mile markers increase going south).
In case you're curious, we were going here.
Being so far behind in the series, I decided to read the Harry Potter and the Deathly Hallows plot summary on Wikipedia. The only thing I don't quite understand: Why, exactly, did Harry kill John F. Kennedy?

Saturday, July 14, 2007

Let me tell you firsthand: stingray stings are painful. Much more painful than a bee sting.

I was swimming just north of the San Onofre nuclear power plant on the Camp Pendleton side. Reaching the end of the swimming area, I stood up to turn back and promptly felt an intense pain in my right foot. After a sharp yelp followed by a few expletives, I hobbled back to the lifeguard tower where they had me soak my foot in near-scalding water. Trying to burn my foot never felt so good; apparently, the toxin breaks down when exposed to heat.




I discovered a combination toilet paper dispenser and iPod dock at Fry's yesterday. Seriously, folks -- if you're blowing money on this kind of crap, you have way too much disposable income.




Here are a couple pictures of the concrete roller coaster they're installing on I-15:

Sunday, July 8, 2007

In San Diego briefly; heading up to Mt. Whitney tomorrow with my dad.

First, though: WTF, San Diego? Have you decided that you wanted to pick up the worst features of Los Angeles and pave over the entire place? I swear, it looks like you're building a concrete roller coaster in the middle of I-15. Every town along the corridor looks like a game of Sim City gone horribly, horribly wrong.

Wow... I never thought I'd be glad to leave SoCal. The place is soooo married to the automobile, it's frightening. It's impossible to be a pedestrian here, really -- watching people try to navigate their way across eight-lane surface streets is sad.

Saturday, July 7, 2007

I've been remiss in posting these.

Today's workout was a killer -- just myself and the coach, and we had initially planned on a 1:20 workout. Instead, it ended up being 2:15 (!). We were 35 minutes in; she mentioned that I had been swimming with the current so it'll take longer to get back. Ok, "but let's go for five more minutes." Five minutes later: "Oh, hey, look, there's a neat beach neither of us have explored." Ten more minutes, we're at the beach.

Remember how I was going with the current? So, 50 minutes there... 1:15 back. About 3.4 miles total.

My arms were killing me when I got out. And this was all after an on-call shift from hell (35 pages in 48 hours... WTF?).

Friday, June 15, 2007

From today's low tide:


Trying to identify these critters...
Ah, joy. IBM has apparently lost a backup tape containing my name and social security number. And I only worked there for a summer 10 years ago. sigh

Thursday, June 7, 2007

My coach is trying to kill us -- either by the 1.8 mile swims or stings by a thousand jellyfish. Yet I pay for the torture and enjoy it. I guess that makes me the freak. :-)


Seeing jellyfish this early in the summer was strange. We haven't seen them anywhere except in Blakely Harbor, though. Fortunately, as with most things in the Pacific Northwest, they aren't the dangerous kind; their barbs are incapable of penetrating the skin, so the worst you'll get is a mild rash.

Wednesday, June 6, 2007

Saw this interesting vehicle on Wyatt Way on the Island this morning:


I thought it was unmotorized -- the guy was pedaling as it went along -- but it was zipping along faster than anything else I've seen.

A closeup revealed that the wheel he was pedaling is attached to a generator (under the front bar) charging a battery (in the black box under the seat); this is attached to a motor which powers the rear wheel.

The front wheels are only for steering and braking.

I thought it was cool.

Tuesday, June 5, 2007

Heh... I just spent an amusing yet frustrating 8+ hours tracking down an obscure bug. (Non-coders, you probably want to stop reading now.)

I thought there was something bizarre going on with our logging framework. We're working on some new validation code (checking for things like invalid characters in names, etc.). One of the things we log is the number of calls to various functions handled in each request. The logs should look like (simplified):

Request 1: RequestHandler:1,Validation:1,IsClientAuthorized:1,IsValidName:1
Request 2: RequestHandler:1,Validation:1,IsClientAuthorized:1,IsValidName:1
Request 3: RequestHandler:1,Validation:1,IsClientAuthorized:1,IsValidName:1
Request 4: RequestHandler:1,Validation:1,IsClientAuthorized:1,IsValidName:1


Instead, I was getting:
Request 1: RequestHandler:1,Validation:1,IsClientAuthorized:1,IsValidName:1
Request 2: RequestHandler:1,Validation:1,IsClientAuthorized:1,IsValidName:2
Request 3: RequestHandler:1,Validation:1,IsClientAuthorized:1,IsValidName:3
Request 4: RequestHandler:1,Validation:1,IsClientAuthorized:1,IsValidName:4


This indicates we're calling IsValidName() four times on the fourth request. Huh? This is utter nonsense. That's got to be a bug in the logging framework or our log4j configuration, right?

Nope. We really were. My desktop started getting *really* slow around the 100,000th request.

The culprit? We screwed up a singleton initialization. The RequestHandler initializes the validation framework each time; the first call should do the real setup work, and the follow ons should be no-ops. Except... we forgot to set the alreadyInitialized flags and we were adding the same set of validations to the framework each time. For various obscure reasons, the setup actually appends to the framework rather than replacing it.

Amusing because I didn't believe what my eyes were telling me. Frustrating because it took 8 hours of me looking in the wrong place to track this down.

Sunday, June 3, 2007

I am the proud owner of a new cast iron skillet:


It's 17" across, which is the perfect size for making large pizzas -- which is exactly what we did today. The crust came out better than any other I've done.

Yes, I'm getting excited about cooking utensils. Eating well is important!

In other news, L-Com -- a provider of networking equipment and cabling -- knows how to appeal to the Y chromosome:

Yes, they're showing some networking equipment being run over by a truck.

Resulting conversations go something like this:
Husband: We need one of these.
Wife: (Comes over) What are you looking at?
Husband: It's an OC-3 to OC-12 media converter.
Wife: Err... it's a thousand dollars. Where are you going to use it?
Husband: I... don't know. But we need it!
Wife: What do you mean you don't know? How can you need it, then?
Husband: Isn't it obvious? It can survive being run over by a truck!
Wife: (Shakes head, walks away)

Wednesday, May 30, 2007

The recent mass deletion of "objectionable" communities and journals has me on edge. Not that it affects me directly -- none of the communities I visit were affected -- but the attitude being taken is so very big brother-ish. You can argue about legalese and how, as a corporation, Six Apart is not bound by the Constitution of the United States -- at a basic level, I feel there's been a violation of an implicit trust.

And, as an engineer, things that put me on edge spark me into looking for solutions to the problem. Technical solutions, not diplomatic ones (though I did pass the U.S. Department of State's Foreign Service Exam, I decided this isn't exactly my calling). It makes me wonder if there's a way to ensure this doesn't happen again -- e.g., by decentralizing the power that's currently centralized.

Ironically, solving this would solve a similar issue we're facing at work (, you might have seen my thread on sde-feedback@ about my ideas for a decentralized package store). I even have the basic idea in my head.

What I can't figure out, however, is how to restrict access in the manner of friends-only entries and the like. I mean, it's certainly possible -- a friends-only entry just becomes an entry encrypted with various friends' public keys. However, today I can trust that my restricted entries won't be reposted because I trust those on my friends list. With what I'm proposing, I would have to trust not only you, any software that you might run, and anyone who might acquire (illicitly or via other means) your private key, now and in the future.

That's a lot of trust.

I'm going to mull this over in my head a bit more. I don't know if it'll actually go anywhere -- honestly, work has left me in a zombie state most days. I'm angry, but I don't know if I'm angry enough to overcome zombie dacut.

Wednesday, May 23, 2007

Oof. Only a mile and change, but this left me wiped:


Swimming with a wetsuit feels like someone has attached rubber bands to my limbs. It's also nice, though a bit exhausting, to not have to turn around every 25 yards. :-)

Monday, May 21, 2007

Moron^H^H^H^H^H More on investing

Amazon's stock is up 7% today -- for no reason. I decided to sell my (small) holdings entirely.

I mean, rah rah company and all, but this is just irrational. Our P/E ratio is 107. In plainer English, this is thinking along the lines of: "If the stock price is tied to a company's performance, if I give you $107 today, I can expect this to be worth $108 a year from now."

This is a worthy investment in, say, a charity (where I expect to reap zero financial return). In a for-profit enterprise, however, it's silly. With inflation running a little over 1% per year, this is a net loss. Most banks will pay you a higher interest rate!

Now, there can be other assumptions being made in the valuation. Some of this is a correction for previous assumptions about stagnant profits, which were blown away during our last earnings report. It could also be shorts covering (an activity I'll explain below). Either way, this is not a position I feel a comfortable basis for investment.
What's this about "shorts covering"? No, it's not a way to hide your underwear. A short seller is someone who makes a bet that a stock fall over some time period. An example of how this works is:
  • Alice thinks Amazon's stock will fall over the next three months.
  • Alice borrows 100 shares of Amazon from her broker, Bob, which she immediately sells for $5/share, netting her $500.
  • Three months pass, and Amazon is now at $4/share. Alice buys 100 shares, costing her $400.
  • Alice returns the 100 shares to Bob and keeps the $100.


Ok, sounds reasonable. But what if Amazon's stock actually rises a month after Alice sells her (well, Bob's) shares? She could hang on, hoping that it will fall in the next couple months; on the flip side, she could decide to cover her losses and buy the shares back right now (before they rise further).

Like anything else, stocks are subject to supply and demand. When a lot of people want to buy the stock, this increases demand and the price rises. You can see how short sellers can create a feedback loop here: A positive report about the stock causes the price to rise; shorts cover their losses, causing the price to rise further.

Anyway, if this sounds a bit abstract and sketchy to you, you're not alone. I prefer a firm connection between a company's performance and its stock price.

Saturday, May 12, 2007

I think this short is going to give me nightmares.

Saturday, May 5, 2007

Canada does away with paper money

At least, that's what appears to be happening. They've just issued a C$1 million coin. It's 50 cm wide, 3 cm thick, and weighs 100 kg.

Sunday, April 29, 2007

What the hell?

From Microsoft's Knowledge Base:

When you enter a negative number in the ERF function or in the ERFC function, you receive a "#NUM!" error in the Microsoft Excel worksheet. The "#NUM!" error occurs when you enter a negative number as the lower_limit value or as the upper_limit value.

Additionally, if you enter a numeric value of 27.3345 or larger in the lower_limit value or the upper_limit value in the ERF or ERFC functions, you may receive a #NUM! error in the Excel worksheet.

CAUSE:
This problem occurs because Microsoft Office Excel 2003 and earlier versions are not designed to correctly process negative input values and input values that are larger than 27.3345. This is true even though negative input values and input values that are larger than 27.3345 are both mathematically correct.

Gee, thanks. What if I actually need to, say, compute erf(-1) for, say, comparing against a normal (bell curve) distribution?

Goddammit. Microsoft, you suck. I shouldn't have to write my own program to do something that should be so freaking trivial in Excel.

Wednesday, April 25, 2007

When I woke up this morning, I was quite a bit richer than I was when I went to bed last night.

Alas, it's all paper money, and I expect the irrational exuberance will settle down by the time my stock actually vests. Still, it's a bit nice to know that there's a possibility these golden handcuffs might be made of something other than fool's gold.

Thursday, April 12, 2007

Girl is incredibly attractive when wearing a black dress.

Friday, April 6, 2007

I'm not sure why I took this picture this way, but I like how it came out.

Saturday, March 31, 2007

Feeling much better today: everything is back to normal except appetite, which I can live with. Heck, that might do me some good.

In other news: one way to capture my interest is to put a big "OFF LIMITS" sign on something. In this case, a blacked out region on the Alaska/Canadian border on every satellite photo I can find:
Google Maps
TerraServer

Thursday, March 29, 2007

Ugh. I've been horribly sick the last two days, to the point where yesterday is a complete blur. I'm having trouble piecing together what was real and what was dreamed during my short fits of restless sleep.

Alas, the stinking, stained clothes in the bathtub indicate that the projectile vomiting was real.

Thank god I have a lovely wife who's willing to run out to Safeway at 6 am to buy Gatorade to rehydrate me.

Saturday, March 24, 2007

During a browsing stream-of-consciousness, I came across a YouTube video of the Dan Rather/George H. W. Bush interview during the 1988 presidential campaign. (Yes, I'm old enough to remember watching it.)

One thing I found quite interesting rewatching it: Bush 41 was perfectly happy to have his and others' testimonies provided under oath, and made quite a point of this during the interview. It makes you wonder why is his son so reluctant to do the same.

Wednesday, March 21, 2007

I just posted the picture of Athena widgets below in 's journal because she randomly mentioned widgets.

Looking at this -- what, 20+ year old? -- picture, it occurred to me: someday, there will be a revolt against all of these sculpted interfaces and eye candy, and people will be clamoring for the simplicity of Athena widgets.

Except the scrollbar. Sorry, but the Athena scrollbar's unintuitive behavior is just crap.

Tuesday, March 13, 2007

My quote of the day on Java and its fanboy community:

"Java is like an F-14 Tomcat. It can be a useful, deadly weapon. But you wonder what the heck you were thinking when you sold it to the Iranians."

Thursday, March 8, 2007

My job today was to be a babysitter. An overpaid, glorified babysitter.

This makes me regret that corporal punishment has fallen out of favor as a disciplinary measure.