Sunday, July 22, 2007
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...
- 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, 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).
Saturday, July 14, 2007
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
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
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
Thursday, June 7, 2007
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
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
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

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
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 (
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
Monday, May 21, 2007
Moron^H^H^H^H^H More on investing
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
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
From Microsoft's Knowledge Base:
Gee, thanks. What if I actually need to, say, compute erf(-1) for, say, comparing against a normal (bell curve) distribution?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.
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
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.