Have a look at his blog and decide for yourself. It looks like MT, smells like MT, and sorta tastes like MT.
Thanks to Brandt for pointing out the site.
But it's his own lack of any comments that confused his co-worker. If the code isn't intuitive, document it.
Come on Tim, don't you know better? Don't blame the language. You can write obscure code and leave it undocumented in any language.
It's July. In the Bay Area. And it rained.
This is rather unusual. But I like it.
(Today is short sentence day. I think.)
Find one of my blog posts. Notice that what I wrote about is no longer true (like a service that no longer works). Ignore the fact that there were other posts indicating that it no longer worked. Post 4 comments asking for help. Mail my personal e-mail address asking for help. Twice. With two different subject lines. Then mail my work account with another one.
Arun, welcome to my kill file.
UPDATE: Oh, you can also make it worse by posting here with a lame excuse.
Lance, Brett, and I volunteered to become guinea pigs for the "Panoche Checkout" program that Drew and Russell have been cooking up. They'll say a lot more about it in the coming days and weeks, but the idea is to provide a stepping stone between local flying at Hollister and cross country flying. To do so, they'll take pilots down to Panoche to get familiar with flying (and landing) in the area. Once completed, you can then tow to Panoche for local soaring--meaning that it's being done with the intent of landing at Panoche and getting a tow retrieve back to Hollister. This way it eliminates the risk and more advanced decision making associated with cross country flying while providing the opportunity to fly at a site with much better lift in the summer soaring season.
We gathered at Hollister between 11am and noon yesterday (Wendesday, July 30th) to give it a shot. Since there were three of us, Lance and Brett each took one of the ASK-21s and I took the BASA Grob. Flying with each of us was an instructor, of course: Drew with Lance in 63JJ, Russell with Brett in 9KS, and Johnathon Hughes with me in 15M.
We spent quite a bit of time going over our glide slop rulers, discussing the route to Panoche, marking up our sectionals, and trying to determine a reasonable decision point and altitude. We eventually decided that 18nm out from Hollister or 12nm from Panoche (just over the ranch), we should be at 7,500 feet. This provides a safe return to Hollister or a glide to Panoche even with a 20kt headwind in either direction.
We also needed to work out the logistics of getting all three gliders down there and one towplane (Alan in the Pawnee) to stay there with us. Alan was there so we could practice landings in Panoche. Given how bad the BLIPMAP looked (1kt thermals to 3,000 feet), we assumed we'd be doing a lot of landing practice.
It took a while to get everyone in the air and to Panoche. Drew and Lance launched first, likely releasing just past the decision point and flying toward the first elevator (EL1) . Johnathon and I launched second, at roughly 2:30pm. The tow was uneventful and Johnathon did a good job of pointing out useful landmarks along the way. I played with my GPS on tow enough to verify that some of the landmarks were already in my database and used it to know how far from Panoche we were. Before I knew it, I looked off the left wing and saw the ranch down below. We were at roughly 7,300 feet. Johnathon said it was my call, so I held on for another minute and released at 7,500 as planned.
We glided toward EL1 and Johnathon described the area in a bit more detail. Drew and radioed that there was lift there, so we went in search of it. Before long we were finding 2-4kt lift in a few spots. It was going terribly high--maybe 4,000 feet, but it was a cloudy day and more than I expected to find.
After a bit, Johnathon said that he could see the landing strip and asked me if I could find it. By using the sectional, a rough idea of where it should be, and a couple of roads, I was able to spot it in a minute or two. I was surprised that it was relatively easy to find. I expected it to be much harder to pick out from the surrounding terrain.
A bit later, while still thermalling around EL1, Johnathon asked me for the altitude at which I'd give up and head to the strip to land. I guessed that we were 5 miles from the landing strip (the GPS said 4.6), and from the glide ruler and our pre-flight discussions, I knew the Grob would fly roughly 4 miles per 1,000 feet of altitude with a 33% safety margin and assuming no headwind. Since the Panoche strip is at roughly 1,340 feet, that meant 1,000 feet for pattern altitude and 1,000 feet to get there, which is 3,300. So my answer was something like "between 4,000 and 3,500 I'd decided to head toward the strip, hoping to find lift or land." He agreed that my numbers were more than reasonable.
Not long after that, the Grob's electric vario died (low battery?), so I had to actually look inside the cockpit a bit more often to glance at the mechanical vario. No big deal, but it was sort of annoying.
Eventually we decided to fly elsewhere, so we flew over the livestock farm that's a couple miles west of the strip. We found some good lift there and circled for quite a while. From that vantage point we could see 63JJ practicing takeoffs (and rope breaks) while listening to the radio and just hanging out. I was surprised that there was sufficient lift to keep us up indefinitely on even a cloudy day.
My thermalling wasn't anything special, but I managed to keep us in the air with a bit of help now and then. The two real problems I had were speed control and forgetting about turn directions. The speed issue was me not controlling the speed as much as I should have. I often flew too fast (55kts vs. something closer to 40kts) in the lift. As for the second problem, a couple times I tried to reverse directions (turn left when thermalling right). Johnathon explained why that's a really bad idea, and after a couple reminders I got it through my think skull and was no longer tempted to do that.
Eventually 63JJ they finished up, launched, and found lift. So it was our turn to land. My first pattern was a bit unusual. Johnathon suggested I get close to the strip and have a good look at it. So I flew a very close downwind that was a bit high. By the time I got on base I suspected we were high, so I opened the spoilers quite a bit and tried to remember that the ground was really at 1,300 feet there so the mental math was a bit different. I was too high. Way to high. After a forward slip, Johnathon suggested a 360 with spoilers on final to burn off altitude. It worked well.
I flew my final approach, did a low-energy landing roughly 1/4 to 1/3 of the way down the strip and rolled most of the way to the end. Johnathon told me the landing was perfect, which obviously made me very happy. I was concerned about landing on a dirt strip without a centerline and obstacles on either side (grass that can cause a ground loop if you're not careful).
I then got the chance to fly my first takeoff from Panoche. Alan warned us about the dust cloud that the Pawnee would kick up. We'd be flying in the dust cloud behind him (*not* above it), so we just had to follow the rope and watch out wing tips to make sure we didn't end up too far to one side. This was, of course, with no wing runner.
So I flew two takeoffs to 2,600 feet and two more landings. The landings were, again, very good.My third takeoff was a rope break at 300 feet AGL. When the rope popped, I turned us onto final (we were basically flying a base leg on tow already) opened the spoilers, and just did what I'd been doing--landed slow and gentle.
After the successful rope break, we took off with the intent of finding lift and staying up long enough for Brett and Russell to practice their takeoffs and landings. We flew around a bit off tow but didn't find much. Lance and Drew in 63JJ managed to find very good lift just south of the strip, so we headed to their position and ended up quite close to pattern altitude with 9KS following us on their first pattern.
We found a bit of lift and Johnathon took the controls for a while to work it up a few thousand feet. This game me a good chance to really look around and try to get a feel for the area, terrain features, and to think about what the winds might be doing to influence the lift we found. Of course, being a moron, I didn't think to take any pictures from the air.
After a while, I took the controls with the intent of gliding around for while until we got low enough to land. 9KS launched to head back to Hollister. We landed a bit after they launched and after 63JJ landed. We were on the ground with 63JJ for a bit and got them set to launch for the second tow back to Hollister. Before long they were gone.
While on the ground waiting for Alan to return for us, I took a few pictures of the strip and surroundings. When Lance and Drew reached their decision point, they released for Hollister and Alan came back for us.
Before long, Johnathon was hooking up our tow rope and Alan was towing us back home.
The ride back was odd. For quite a while I could not see Hollister at all. The high terrain, haze, and sun glare all conspired against me. I just had to trust that we had enough altitude (we did) and that the airport hadn't moved in the few hours we were gone (it hadn't).
My main landmark on the way back was Santa Anna peak. We passed it and the Three Sisters while just below 5,000 feet. At that point, I knew we had lots of altitude to spare. So I flew around the airport, entered the pattern for 24 when we got low enough, and landed a bit before 7:30pm.
We put the glider to bed, talked about how the day went, paid for the day, and made the necessary log book entries.
I had a great time despite the less than optimal weather. Johnathon was excellent to fly with. He taught me a lot about flying and flying in that area both by what he said and what he did when he had the controls. Landing several times at Panoche really helped my confidence a lot. I now feel like the door is opening a bit more.
I'm glad that Drew and Russell are putting this program together. It's going to give a lot of low-time or newly licensed pilots the opportunity to really expand their soaring--especially during the summer season when the sea breeze is destroying all the local Hollister thermals.
I recommend this to anyone who's interesting in flying a bit outside the local area as well as anyone who's trying to figure out how to get from "I got my license" to "How can I start on the path to cross country soaring?"
There's a lot more I could say, but I've probably rambled enough as it is. If you do go... make sure to bring lots of cold water to drink. Even on a a cloudy day it's really warm in the Panoche area.
I want to get back down to Panoche to fly some more.
It seems that Adrian Holovaty is offering custom RSS feeds. Very interesting idea. I might add something like this to my MT setup when I get some spare time.
Anyone else doing this?
Woohoo! IBM fixed up my Thinkpad by swapping in a new motherboard (as expected).
I'm syncing my mail, blog stuff, and book data. Now I can get back to normal.
Yeay IBM!
I guess that this high school really is (or will be) gay.
A school in New York's Greenwich Village will reopen in September as America's first publicly run high school for gay, lesbian, bisexual and transgender students, officials said on Monday.
Although The Harvey Milk School has been operating with two classrooms for 20 years, $3.2 million is being spent by the City to expand it to take 100 students. Named after a gay San Francisco politician assassinated in 1978, the school will be funded jointly by the city education department and a gay rights youth advocacy group.
(This really isn't funny if you weren't in high school in the last 15 years and remember when "That's gay!" was one of the most common ways to put down something.)
If you're like Milton in Office Space and want to set the building on fire, it's best to do on a day like today. Why? Here's a paraphrased version of what we got via e-mail at work today...
We will be conducting fire testing for all buildings today. There will be some alarm bells ringing periodically. Please DO NOT be alarmed, we are only testing!! Do Not Evacuate.
Then again, it might be better to just do the damned TPS reports.
I took Adam up for a flight in the Grob yesterday. We released at 6,000 feet near Fremont Peak and glided around west of Hollister. We flew north/northwest of the field, looped around Frazier Lake airport, and headed toward the foothills before heading back toward the airport. Roughly 1.5 miles north of the field we found a broken thermal over a field that was being plowed by a farmer. I provided 2-4kt lift between 1,500 and 2,000 feet.
Today I headed down with Lance and Joyce. Lance now has his license, so we flew together twice. The first time we took up a 2-32 (N7531) so Lance could try flying from the back. I flew the takeoff to 3,000 feet and he flew the rest of the tow to 5,000. Then he practiced turns, speed control (which was excellent), and a few stalls. He gave me the controls back at 2,000 feet so that I could fly the pattern and landing. It was a bit odd flying a 2-32 again, but the landing was decent.
Then, after Joyce managed to ground 64E after a hard landing, we took up an ASK-21 (N63JJ) and flew out west of the field. Lance was just along for the ride on this flight. I had wanted to fly the Grob again, but Charles had booked it so I ended up in the 21. The flight was uneventful except for a bounce on landing. I landed well, tail wheel first and then main wheel. But when I went to put a bit more back pressure on the stick to keep the tail wheel down, I accidently closed the brakes a bit and the stiff headwind meant that we hadn't lost much airspeed. So we ended up back in the air. We climbed about 8 feet and then I leveled out and landed a bit more slowly the second time.
I didn't feel so bad after watching Charles land the Grob and do nearly the same thing.
I have nothing interesting to say today (do I ever?), so...
The National Radio Astronomy Observatory (NRAO) is one of the world's premier research facilities for radio astronomy. NRAO operates powerful, advanced radio telescopes spanning the western hemisphere. Scientists from around the world use these instruments to probe fundamental questions in astronomy and physics.
And they have some great pictures. Check out their gallery.
I plan to visit someday.
Yes, this mini-bubble.
It seems that eBay has announced a stock split.
EBay's stock has one of the highest valuations of any company in the United States -- far greater than Microsoft Corp. and other technology titans -- and it has remained impervious to the dot-com stock market bust. The stock's ascent this year, 71 percent, prompted eBay's board to announce a two-for-one split effective Aug. 28, for stockholders of record on Aug. 4.
Here we go again...
This isn't something you see every day. Apparently the Hulk is not only quite angry sometimes, but he's also rather excited by little girls!
SHOCKED six-year-old Leah Lowland checked out a mystery bulge on her Incredible Hulk doll and uncovered a giant green WILLY.
Curious Leah noticed a lump after winning the monster, catchphrase ""You wouldn't like me when I'm angry," at a seaside fair.
And when she peeled off the green comic-book character's ripped purple shorts, she found the two-inch manhood beneath them.
I'm not sure what this says about the Hulk, but he's clearly comfortable with his sexuality. And it's hard not to laugh at that picture.
(Thanks to Ray for the link.)
I just don't get some people.
From: "Dan" <dan@stockmarketyellowpages.com>
To: <Jeremy@Zawodny.com>
Subject: Question about zawodny.com
Date: Wed, 23 Jul 2003 16:42:40 -0700
I emailed you a couple weeks ago regarding our site and was wondering if you had time to get to it. I see your link to finance.yahoo.com on your page http://jeremy.zawodny.com/ and am wondering if my site, www.StockMarketYellowPages.com , would also be useful to your visitors. It allows you to search for public companies based upon their descriptions. If you want to link to us you can place your site in our directory. You also can put our search on your site and make it look as if people are still on your site.
I won’t bother you again if you don’t get back to me. Please email me if you have any questions.
Thanks,
Dan
Sorry, Dan.
This is a little unexpected. We actually had a moderate amount of mid-day cloud cover today.
I'm not saying that's bad or anything. I rather like it. Unless it's a flying day, of course.
That reminds me, I really need to get back up in the air.
My friend Lance flew last Friday over the Tahoe area. He had a 280km glider flight and was over 16,000 feet a few times.
I've gotta get me some of that.
This isn't really news, but hey... better late than never.
In case it isn't obvious, some images just don't scale well. So until I ask O'Reilly for a thumbnail image, it's probably best to look at the full-sized one on the book web site: HighPerformanceMySQL.com.
If you can do a better job, grab the original and show me. I freely admit to having no graphics (or design) skill at all.
There isn't a lot on-line there yet. Once most of the writing is done, there will be news, an RSS feed, and other good stuff. For now, you're probably asking yourself "what's this book about?" In case the name isn't relatively obvious (don't get me started on how difficult it is to name a book), here's the Table of Contents--subject to changes before this thin appears on shelves somewhere. But it should be sufficient to give you an idea of what's covered.
If there's a topic you think is missing, let me know. I doubt we can do much about it, but you never know.
"We?" you ask. Yes, I recruited another fool to help get the book out the door. That's why there are two names on the cover. :-)
Oh, and for those of you wondering about the book known as "Advanced MySQL", this is the same book. The old title was really just a working title. Yeah, that's it.
Update: Thanks for all the scaled covers! You can stop sending them now. I've used one from Jon Abernathy, simply because he was first and it looks good.
I just discovered another way to sink my productivity for the day.
My iPod just ran out of power. Damn. I've switched over to the Walkman, but the commercials are likely to make me want to channel surf when I should be typing something or other.
Damn, I type a lot.
For whatever reason, both yesterday and today have felt like Wednesdays. It's as if the week is always half over before I get a chance to realize that it's not.
I wonder what tomorrow will bring... maybe a case of the mondays?
I finally got around to reading Clay's A Group Is Its Own Worse Enemy piece. And I'm still not done. But I can already tell he's done a very good job of explaining what's revolutionary about all this stuff (blog, wikis, instant messaging) that many of us take for granted.
It is now possible for every grouping, from a Girl Scout troop on up, to have an online component, and for it to be lightweight and easy to manage. And that's a different kind of thing than the old pattern of "online community." I have this image of two hula hoops, the old two-hula hoop world, where my real life is over here, and my online life is over there, and there wasn't much overlap between them. If the hula hoops are swung together, and everyone who's offline is also online, at least from my point of view, that's a different kind of pattern.
"I never really thought about it that way." I find myself saying that over and over as I read.
Check it out.
Jon Udell points to a GUI tool (Sendmail Enabler) for making sendmail work on OS X.
Yet another reason I'm glad I installed Exim on the TiBook last night. It took all of 10 minutes (including compile time). And now I have secure (thanks to OpenSSL) and authenticated relaying to my favorite mail server. It works from anywhere in the world.
Of course, it was Exim version 3.36. I really need to get on the Exim 4.0 bandwagon one of these days.
IBM tech support rocks.
Earlier this year, I picked up a Thinkpad T21 from eBay. It was one of those corporate off-lease refurb deals from a reputable dealer. I got a good deal. It was roughly $600 for the machine with on-board ethernet, 256MB RAM, 20GB disk, etc. The battery was even in good shape.
But then I tried to add memory to it. I installed a second 256MB SO-DIMM to max it out at 512MB. But the machine wasn't happy. It locked up a lot. So I figured the DIMM was bad and swapped in an older 128MB DIMM that I knew was good. Same problem.
I busted out a copy of memtest86 and verified that both DIMMs where bad.
Then it hit me. Rasmus had described a very similar problem with his T21. He had to send it back about 6 months ago because "it kept frying memory."
After some digging, I found the number for IBM's Thinkpad support (1-800-772-2227) and talked with Ron. I explained the problem and he gathered some info from me. After he go the model # and serial # he informed me that "as far as IBM is concerned, it's still under warranty."
Woohoo!
He had me run a few more diagnostics to make sure nothing else was wrong and then agreed to send out a box so that I could ship it to IBM. He asked that I leave the hard disk out but install the bad memory and mark it as such. Airborne Express picked up the box today at work. I hope to have it back by Friday.
This is cool. IBM never hassled me about not having "registered" the machine, or the fact that I bought it used, or the fact that I installed "non-IBM" memory in it.
Hopefully they'll do what they did for Rasmus, swap the system board, and ship it back to me without further trouble. If I'm really lucky, maybe they'll even replace the fried 256MB DIMM.
We'll see.
This is one of four Thinkpads I've owned (380D, 600E, T21, and T23). I love Thinkpads. I hope IBM doesn't let me down.
Meanwhile, I'm using the TiBook while it's out. I got the latest Developer Tools and Fink installed last night. Then I built and installed mutt and Exim. So I can at least keep up on e-mail... Well, sort of. That implies that I was caught up before this happened.
As usual, Tim's got some great stuff to read:
People, on average and in the long term, aren't stupid and aren't patient and aren't cowards. When there's an obviously better way to get the job done, they go out and get it, and management can't stop them, and Forrester and Gartner can't stop them, and Accenture and EDS can't stop them, and not even Microsoft can stop them.
His commentary reminds me of the stuff the "IT Services" organization at my previous job tried to pull off. The standardized, locked-down, centrally controlled desktop plan comes to mind.
I was always amused, as an IT Services employee, how you heard a completely different story when you talked with actual users instead of IT Services project managers.
It really does work.
A few weeks back, before a meeting got started, I was talking with Brian and Michael about physical spam--the stuff that fills your real-world mailbox.
Michael was extolling the effectiveness of the Operation Opt-Out site which he blogged last year. You simply generate the forms, send them in, and wait. I thought it was too good to be true, but I tried it anyway. After all, it was only $3-$4 worth of postage.
You know what? It really works.
It's only been a month or so, but I'm already getting less junk mail--noticeably less. Michael said that they get virtually none. I can't wait. :-)
From rediff.com:
Yahoo! the global Internet communications, commerce and media company, is the latest on the block to begin outsourcing its software requirements from India by setting up a development centre in Bangalore, its first outside the United States.
There's been a lot of talk about this among some of the engineers at work. "How long until we don't bother hiring US engineers?" and stuff like that.
It's too soon to tell what it all really means, but it's a real reminder of the fact that we live in a global economy.
Amusingly, there's a typo at the end of the article: "As one of the first online navigational guides to the Web, Yahoo! caters to over 235 users in 25 countries in 13 languages." It's been pointed out in the comments, but I guess the rediff.com folks don't bother to read those.
My body hates me.
Thursday night, not long after dinner, I felt a bit sick. Not really sick, but I had a pain in my stomach. At first I assumed that Murphy was messing with me--going for a replay of the Denny's Episode.
But after a few hours, I realized it was something entirely different. The sensation reminded me of the pains I had before my gall bladder was removed last year. A slowly building dull pain in my upper-right abdomen that eventually became quite intense for an hour or two and then would slowly go away.
The differences this time were that (1) the pain wasn't nearly as bad, and (2) I no long have a gall bladder.
Figuring it was just some odd problem, I went to bed hoping that it'd be gone in the morning. I woke up yesterday morning to find that it was mostly (but not completely) gone. It wasn't so bad that I couldn't eat, so I had a banana and muffin for breakfast. I went about my morning routine and headed to work.
Sitting at my desk, the pain got worse and I started to feel very, very warm. The pain got worse. I decided to try waiting it out. But after 30 minutes I gave up and decided to go home. There was no way I was going to get anything done anyway.
I arrived home and sat in the Lazy Boy recliner with a laptop on my lap. The pain got worse. Then it occurred to me that I could have picked it up from someone. After all, on Thursday, I had picked up the Friedl's from the airport. They had been in Japan for 6 weeks and there was a bit of sickness going around while they were there.
I gave up and laid down, hoping to sleep it off. No luck. It was too damned hot to sleep. So I laid there, annoyed and in pain. For hours.
Eventually I got up and went back to the computer but wasn't really able to focus. Most of the night continued this way. I tried laying down and/or sleeping on the bed, couch, and even the floor. (The floor was nice and cool as the cooler air came in.) It still hurt.
After a while, I noticed that the pain wasn't getting any better but it also wasn't getting any worse. It still reminded me a lot of a gall bladder attack. I began to wonder what could cause such a thing. What if the clamp/staple/whatever that they left in place when they disconnected my gall bladder had come loose? Maybe it had hooked on something and was now tearing up my insides?
Who knows. I'm no doctor.
I considered going to the hospital. Several times. But each time I told myself that I couldn't stand the thought of sitting in the waiting room for 2-3 hours (though the air conditioning would be nice). I convinced myself to give it just a couple more hours. Around 1:30AM, I moved back to the couch and was able to get comfortable. I slept there, on and off, for about 3 hours. I woke up feeling a bit better and decided to go to bed for real.
Waking up this morning, I felt better. I was terribly hungry (hadn't eaten for 24 hours), thirsty, and generally worn out. I did the dishes and had some breakfast (peaches and a banana). The pain is virtually gone, but for some reason it feels like it could return at any moment. That's probably just my paranoia. I hope.
Like I said, my body hates me.
From Phil Greenspun:
I'm not going to say who it is because he'd be embarrassed but perhaps the incident reveals something general: people over the age of 25 shouldn't use Unix/GNU/Linux/whatever, unless they are full-time professional Unix sysadmins. The dialog boxes on WinXP are annoying but for those of us nearing 40 perhaps it would be nice to have the computer ask "Are you sure that you want to overwrite all the most critical files on this machine?"
Maybe that's another vote for Mac OS X? :-)
According to CBS MarketWatch:
Yahoo Chairman Terry Semel sold 500,000 shares via exercised stock options just a few days after his company announced a pact to acquire online advertising firm Overture Services, according to regulatory filing disclosed Friday.
Semel exercised the Yahoo (YHOO: news, chart, profile) options and sold the shares in two parts on July 16. He exercised 437,500 shares at $9.24 and 62,500 shares at $16.46. All of the shares were sold at prices ranging from $32 to $32.64, according to the filing.
You do the math.
See also: It pays to be an eBay exec
If you don't have a sick mind, stop reading this now.
Oh, good. You're sill here. :-)
Thanks to jwz, I ran across this:
Purely in the interests of science, I have replaced the word "wand" with "wang" in the first Harry Potter Book. Let's see the results...
Damn. That's some funny stuff.
I hadn't seen this before, but it's quite amusing (and true). Every once in a while, you need to Flip the Bozo Bit.
(Insert story of inept co-workers here.)
I'm half expecting Derek to recount a story about someone from his days at Yahoo. Or his current job. Or just about any job he's every had. Derek's funny that way.
The fine folks at Yahoo! Buzz have launched 5 new feeds:
We don't have an official feedback channel, so feel free to post comments here. I'll make sure that the folks involved see them.
See Also: Yahoo! Buzz RSS Feeds
After a bit of a delay, I've also posted the slides to the MySQL Query Benchmarking talk I gave at OSCON last Friday. They're available in HTML and PDF. The PDF sucks and I'm not sure if I should blame OpenOffice or ps2pdf for that.
If you're a Yahoo engineer, expect to see this as a Tech Talk (in some form) in the not too distant future.
See Also: Mike Kruckenberg's notes.
After a bit of a delay, I've posted the slides to the MySQL Scaling Pains talk I gave at OSCON last Friday. They're available in HTML and PDF. The PDF sucks and I'm not sure if I should blame OpenOffice or ps2pdf for that.
If you're a Yahoo engineer, expect to see this as a Tech Talk (in some form) in the not too distant future.
See Also: Radwin's notes and Mike Kruckenberg's notes.
Oh, what the heck. I say we elect him if he runs. I think it'd be terribly amusing. We don't have enough amusement in politics these days.
Update: Welcome Google, Yahoo, and other search engine users! Perhaps you ought to read this for futher evidence that Google isn't as smart as you might think. Heck, the fact that you probably came here from a Google search should be evidence enough, right?
From the excellent interview with Jim Gray:
The first thing to keep in mind is it's not over yet. At the FAST [File and Storage Technologies] conference about a year-and-a-half ago, Mark Kryder of Seagate Research was very apologetic. He said the end is near; we only have a factor of 100 left in density--then the Seagate guys are out of ideas. So this 200-gig disk that you're holding will soon be 20 terabytes, and then the disk guys are out of ideas. The database guys are already out of ideas!
Very good stuff. Go read it.
Thanks to Phil for the pointer.
To the incredibly beautiful 20-somethings that moved into the apartment next door, on the off chance that you're reading my blog tonight, welcome to the neighborhood.
You you may not have noticed this yet but I have. Two of the three largest windows in my apartment (kitchen and bedroom) happen to face the same windows of your apartment. I noticed that in a hurry. But you haven't opened your blinds much--yet. So you may be unaware of this little bit of trivia.
I guess there are times that apartment living isn't that bad.
I don't expect you to be like neighbors that lived there in most of 2001. They were quite loud when it came to, uh, bed time.
Dave says:
Isn't it obvious that either Google or Yahoo will buy Feedster so their search engine can understand RSS. Then the other guy is going to wonder why they missed the boat. After that, they can make their search engines understand OPML and throw out the antiquated centralized directories and let the amateurs compete to create the best directory for a given topic, the same way we compete for page rank.
What makes Dave think that Yahoo and Google's technology doesn't already "understand" RSS, I wonder? RSS is simple. Really simple. And structured. Hardly the mess that HTML is. It's not a really hard problem if you already have crawling infrastructure and the ability to query structured data.
Heck, I fully expect Microsoft's search engine to grok RSS and/or OPML.
I don't mean to detract from Scott's work on Feedster. It clearly fills hole that nobody else has.
(Reminder: I don't speak for my employer or any of my employer's technology providers. Not that will stop anyone from reading all sorts of stuff into what I say...)
Yeay!
Anyone know if AOL will have TrackBack support?
Update: Err. As Dave points out, it's Manila, not Radio. But it sounds like Radio is next, so yeay anyway.
I really want my old house back so I can get out of my apartment.
Why?
I managed to break the bathroom faucet.
How?
I turned it.
Did I call my landlord?
Yes. But he's not home and either doesn't have an answering machine, or the one he does have is full.
Grr. If he's not around in a day or so, I'll have to call someone to come fix it. Maybe while the mystery plumber is here, s/he can have a look at the leaky kitchen pipes too.
Ugh.
If only houses here were so damned expensive. Despite all the advantages of living at the epicenter of technological spew, I'll sure be glad when I can leave and afford a house again.
Of course, if our stock price manages to hit $75, I'll consider buying a house here. But the odds of that happening are quite slim. And the thought of dropping close to a million dollars [that I don't have] on a house is a bit insane.
I could move to a cheaper and nicer apartment, but I really really really hate moving. I'd only end up saving $100/month if I did, based on what I've seen. (My current rent is $1,300/month, thanks for asking.)
Okay, enough bitching. I have work to do.
Robert Scoble thinks so:
I believe the Web became such a success because it was a single app that did so much. I was a BBS, then Prodigy, then AOL, then CompuServe, then came to the Web in 1995, so pretty early on (certainly not first, but certainly before 99.9% of people got on).
No.
He's wrong. The Internet is a service. Applications are built on top of the infrastructure provided by the Internet. The Internet helps to deliver the World Wide Web, E-Mail, Newsgroups, Instant Messaging, and so much more.
AOL isn't an app either. It's a service. AOL is a service provider--at least in this context. AOL is also a big evil media company, but that's a side issue.
I know he knows better, but this bugs me in the same way that people who say "My Internet is down!" do. They really mean "My Internet connection is down!" but don't know it.
Apparently the Internet is Shit:
And look what we've done with it. Food wrappers and soap operas now tell us to visit their websites. Money is pumped online by people who can't even spell HTML. All manner of pointless and irritating content is continually poured down the infinite hole of data, unfiltered and over-appreciated. In accepting freedom of speech, we can't hide from its consequences - which in this case is millions of terabytes of unreliable information, badly designed and clumsily written. We have failed our own creation and given birth something truly awful. We're just too busy cooing over the pram to notice.
I'mn not saying I agree, but go read it and decide for yourself.
Ray and I were just talking about this feature for Feedster the other day. What do you know? Scott already had implemented it as Feedster Backlog.
If you want Feedster to index your entire weblog, all you need to do is generate a new RSS feed with everything you've ever blogged in it and then give us the URL to it as well as your existing RSS url. What we'll do is load the old posts, discard the duplicates and then get it all indexed.
So I've setup a full feed here using this MT template.
Scott rocks.
If you're on a road trip through Oregon and California and find yourself at the local Denny's ordering the "French Slam" for breakfast, do yourself a favor. Do order the sausage to go with it. If you do, make sure not to eat it.
You'll spend the rest of the day with a very bad feeling in your stomach and no appetite for the next 24-36 hours. You'll feel like you need to barf it all up, but it won't happen. You burp now and then, careful not to burp too hard, tasting the sausage a little bit each time. It'll just ripen in your bowels for a while.
This concludes today's public service announcement.
After a long drive and a few mistakes, Ray and I arrived back in the Bay Area at roughly 4am this morning from Portland. I hadn't slept but managed to fix that pretty quickly. (Just got up a few minutes ago at 11am.)
Lots to catch up on. Apparently Yahoo is buying Overture. It's about time that happened.
I have many pictures to upload and a few older entries (from the trip) to post later today.
I just had the weirdest experience. I'm sitting in the speaker's lounge at the conference. I happened to glance at the iBook next to me and saw the blog entry that I just wrote up on the screen.
That doesn't happen every day.
(Let's see if it happens again when I post this entry.)
I've been deleting more and more spam comments from my blog recently. I'm this close to hacking MT to call SpamAssassin before allowing a comment to actually post.
Am I the first? Has someone else already done the work? Google hasn't located anything relevant for me. And I figure it'll be a 5-10 minute hack once I get back into the MT codebase again.
Phil is talking about Ruby. Again, semi-realtime notes on Ruby.
Ruby is roughly 10 years old now. Matz liked Perl's text processing but didn't think that Python was OO enough. It's more of a Perl/SmallTalk blend. Classes, methods, objects, exceptions, message passing, iterators, closures, garbage collection, etc. And it's multi-platform, of course.
Back in 2000, Phil used a lot of Perl but found OO Perl tedious.
Why learn Ruby? It has a similar syntax but is different enough in some places to make you think differently. Strings, hashes, arrays, etc. Ruby can use any object as a key to a hash. Regexes, here-docs, etc.
@ means instance variable inside a class, not an array. The $ denotes global scope variable. @@ denotes a class variable. Semi-colons are optional at the end of line. Parens are optional in method calls.
False and nil are false. But 0 and '0' are true. Everything is an object.
Smaller community for Ruby, but that's okay.
Lots of interesting on-screen examples that I can't reproduce easily, so I'll just watch.
Bruce is discussing various replication schemes for PostgreSQL database servers. These are nearly real-time notes, so they're a bit sketchy.
Each use has slightly different requirements. Fast or slow line, on-line 24/7 or only part time, etc.
Given a particular usage, which method do you use?
Talk is half done, but I'm off to a Ruby talk now...
I'm attending the session about MySQL and Pogo Linux. They've partnered to produce a turnkey rack-mounted MySQL server that comes with a MySQL support agreement built into the price. (press release)
Erik Logan is speaking with David Axmark.
Pogo specializes in hardware. They add a tuned RedHat and MySQL to create the product. They're centralizing support for the hardware, OS, and MySQL. If it's a MySQL issue, the MySQL folks will handle it.
Their product is called the DataWare Database Appliance. Dual Intel Xeons w/Hyper Threading, 15K RPM SCSI drives, battery-backed RAID-10 with write cache. Total RAM capacity is 16GB.
Not sure about the default filesystem. I'm guessing ext3 or ReiserFS.
There's a liberal warranty that allows for vendor approved upgrades and enhancement. They're talking about integrated backup options as well.
The specs are still in flux too. Not sure how much storage will be on by default. 36GB or 72GB drives? Probably 6x36GB to start.
I slept in today. But others did not. Phil Windley and Michael Radwin both blogged about Tim's keynote. Sounds like a lot of what Tim's been saying in recent years.
Ray and I met up with some of the MySQL folks for dinner and headed to a local Spanish restaurant. Good stuff. I have a picture of Monty and David that I need to extract from my camera.
After that, we came back to watch the State of the Union presentations: Larry, Guido, Shane, and David/Monty. Interesting tidbits: Guido is leaving Zope. Larry will have to get "real job" again someday.
Finally, we spent some time at the always excellent ActiveState party. I have a pic or two from that too.
Now (Wednesday morning), I'm catching up on e-mail and working on my Friday presentations. Lunch just started. It's sponsored by Microsoft. How odd is that?
I don't get this one at all, but it sure is funny.
From: "" <request_81@chiche.com>
To: <jeremy@zawodny.com>
Subject: Dimensional Warp Generator Needed ojljhbjgorq
Date: Wed, 09 Jul 03 11:01:21 GMTGreetings,
We need a vendor who can offer immediate supply.
I'm offering $5,000 US dollars just for referring a vender which is (Actually RELIABLE in providing the below equipment) Contact details of vendor required, including name and phone #. If they turn out to be reliable in supplying the below equipment I'll immediately pay you $5,000. We prefer to work with vendor in the Boston/New York area.
1. The mind warper generation 4 Dimensional Warp Generator # 52 4350a series wrist watch with z80 or better memory adapter. If in stock the AMD Dimensional Warp Generator module containing the GRC79 induction motor, two I80200 warp stabilizers, 256GB of SRAM, and two Analog Devices isolinear modules, This unit also has a menu driven GUI accessible on the front panel XID display. All in 1 units would be great if reliable models are available
2. The special 23200 or Acme 5X24 series time transducing capacitor with built in temporal displacement. Needed with complete jumper/auxiliary system
3. A reliable crystal Ionizor with unlimited memory backup.
4. I will also pay for Schematics, layouts, and designs directly from the manufature which can be used to build this equipment from readily available parts.
If your vendor turns out to be reliable, I owe you $5,000.
Email his details to me at: info@federalfundingprogram.com
Please do not reply directly back to this email as it will only be bounced back to you.
Too bad I can't reply. I have a great lead for them.
David is presenting MySQL's new features, covering 4.0, 4.1, and a bit of 5.0. I'm at this presentation mostly because I've been using the new features that I no longer consider them new. That means I have trouble enumerating the new features when people ask. So I'm hoping this talk provides a nice summary that I can reuse.
SAP will use MySQL as their default database in a few years. MySQL is providing ideas for implementation, advice, access to developers, and so on.
Lots of talks about crash me and benchmarking various databases.
The MySQL folks remind us that software patents are evil.
I'm in John Ashenfelter's Data Warehouses talk this morning. He's an excellent presenter who really knows his material and is completely sold on MySQL. At least one person in the audience has already extolled the use of MySQL in data warehousing applications.
I'm taking notes real-time, so this will be a bit disjointed but that's life.
Idea for O'Reilly book: Data Warehousing in a Nutshell.
The talk starts with a story about why MySQL is the most cost-effective data warehousing solution available. Compared to Microsoft SQL Server (the cheapest closed-source solution), MySQL is a big savings.
Data Warehouse vs. Data Mart. Plan for a warehouse, but build a mart. There are a lot of things you might need, but there's no need to build all of it until you need it. Data marts lock together to become a warehouse.
Book recommendation: The Data Warehouse Toolkit.
Data warehouse: focused on business processes, using standardized granular facts. It's a collection of standardized marts.
Data mart: focused on one narrow business, includes lightly summarized data. It's a component of a data warehouse.
Metadata capture. Need to get terms and definitions correct and agreed upon in advance. Policies and company practices factor into the decision making. How does your business really quantify things? You need to ask users what their business needs are. Sometimes this involves going quite high in the organization.
Every time you hear "by", think about dimensions. They're wide and flat tables (compared to fact tables). Lots of redundant data. Make sure the measurement units are the same. This is hard in multi-national companies. Which day (time zones)? Sizes and volumes of items, etc. How will they be formatted? What enumerations (possible values) will exist? M/F, 0/1, Y/N, Small/Medium/Large/X-Large.
Calendar dimension example: date_id, date_value, description, month, day, year, quarter, is_weekday, day_of_week, fiscal_month, fiscal_quarter, astrological_sign, etc. Lots of duplication (imagine one record for each day of the year). You could add weather info, abnormal business closes, etc.
All about keys. Many keys, few facts. Very deep (tall) and narrow. It's best not to store calculated values because you may need to recalculate someday (margin, for example). You can calculate on the fly (in the query) or in code that's pulling the data. Use facts that the business users understand.
Don't use anything meaningful for keys. Never. Ever. Meaningful things change when companies merge, change, etc. Just invent numbers that are meaningful to the database only.
There's a central fact, many dimensions (the arms), and no other tables. Don't "snowflake" or over-normalize by hanging new tables off of the dimension tables.
When building the schema, decide on the grain. What's the smallest bit of data anyone will ask for? One day? One hour? One week?
Sales from a web-based meal order system (Vmeals.com). Many clients/customers, caterer/restaurants, delivery locations, etc. The database is relatively small now (300MB or so).
Lots of data to track (on the white board). The most important bit will likely be order items. Starting simple, our facts are orders and customer service metrics. Dimensions are calendar, customers, products, promotions, and so on. Create a bus design.
We'll use sales for this example.
Pick the lowest possible grain that makes sense. For this example, it's orders or more specifically ordered items. Order will be the second fact table. Dimensions: calendar (order date, deliver date), product (menu items), customer, delivery location, provider (vendor), licensee (market).
Need to pull data from the on-line system to populate the warehouse. Some may came from other places too: market information system (MS Access), promotion engine, etc. Larger companies will have many more.
The order fact table will be primarily built from line items from orders. Think about additive, non-additive, and semi-additive values. You generally want additive data. Store the data needed to compute things, not the resultant values. Snapshot values (daily bank balance) not additive.
Degenerate dimensions have no corresponding dimension table. Invoice or oder number are common examples. They're only used in groups or rollups, typically.
Role-playing dimensions are used over and over. Dates are good example: payment date, order date, delivery date. In some systems you'd use views for this. They'd all be views over the underlying calendar table. You can use MySQL Merge tables to work around the lack of views. Or you can create several one-table merge tables.
Slowly changing dimensions. Fixed data: just update. Changed data: add a new row (like a new address). Fundamental schema change: add a new column, keep old column data around.
ETL process: extract, transform, load. Go to the source of the data. Extraction can be tricky if you have lots of data and little time (24x7 system). If the source data has date stamps, you can perform incremental dumps. With some systems you can use a row checksum and a computed index. Transformation is about making the data match the warehouse's metadata standards. Perl to the rescue! (Or maybe using an intermediate database.)
Microsoft DTS is a good option in the Windows world. It comes with SQL Server and is scripted via a scripting host language. Lots of expensive commercial tools to do this too.
When dumping from other systems, watch out for blobs. They probably don't belong anyway. Make sure that stuff comes out as quoted ASCII rather than some internal representative that MySQL won't grok.
To load, MySQL's LOAD DATA INFILE works quite well for this. It's fast and flexible.
Demo: Dump via MSSQL BCP and load into MySQL using LOAD DATA.
Having a staging environment is important. Rather than loading all the data into the warehouse, you can do a lot of intermediate work on a different server before loading into the "real" warehouse. You can use this staging area for run validation checks, manage any changes needed (SQL, Perl, custom apps, DTS or other ETL tools), and perform multi-step extractions.
A frehness date helps users understand when the latest data isn't as new as they might think.
All Java, open source: Jasper Reports, jFreeReport/Chart, DataViz.
Open Source: Mondrian (Java), JPivot (Java/JSP), BEE (perl).
More demos at the end.
Well, this sucks. For the first half of this morning session (Building Data Warehouses with MySQL), I couldn't even get on the wireless network. After the break, I was able to at least get an IP address from the DHCP server. But it seems that there's no connectivity to the outside. I can ping the gateway just fine.
Grr.
O'Reilly's wireless network is really starting to bug me. And from the folks I've talked with, I'm in the majority here.
More delayed posting today...
I'm sitting in the Jabber Bootcamp session now with Derek and Ray. Not a lot new here if you've seen a good "How Jabber works" presentation of some kind. Given that it's a half-day tutorial, the presenters are able to take their time and go into a good level of detail. It seems to be a very good Jabber overview.
Jabber is quite cool. It's really a shame that it's not more widely used.
Reminder to OSCON attendees: You can ping a TrackBack URL for each session. The ping URLs are available from the Conference Grid.
Update: Derek found this URL: http://alpha.oreillynet.com/cgi-bin/tb/tb.cgi/oscon2003 for general conference pings.
Warning: I'll be posting a bit out of order...
I attended Damian Conway's ~damian/bin tutorial this morning (Monday). It was entertaining (as always). The focus of his talk was convincing us to customize our environments for personal productivity. I felt like much of what he covered was already standard practice for experienced (2+ years) Unix folks, but maybe not.
He covered shell aliases, vi customization, filename completion, small utilities (some in Perl). He demonstrated many of his personal tools and customizations and even makes them available under the Artistic License. Get them here:http://www.yetanother.org/damian/bintools.tar.gz
I didn't really learn much new information, but I did get a new appreciation for how much repetitive work can be streamlined with a bit of effort. It's been a while since I added much to my shell aliases and tools.
Well, I'm sitting downstairs (in a conference room) during a break at OSCON and can't get much of a signal from the O'Reilly network. The morning newsletter is advertising such a network, but it's more of a notwork right now.
kismet finds the network, but there appears to be no traffic on it. Grr.
I should have headed up to the speaker's lounge during the break. They have hubs and actual ethernet cables there.
Ah, they've fixed it. Now I can complain about a problem that no longer exists! :-)
After a 2 day road trip, I'm in Portland for OSCON. The window is open and there's a Blues Fest across the street. Good stuff.
I have lots to catch up on, including a ton of pictures I took at Crater Lake that I need to post. More later.
Story on Yahoo News.
Meanwhile, I'm packing, cleaning, and finally writing my presentations for the conference. Leaving tomorrow. Driving up to Portland by way of Crater Lake. More on that later.
Kasia's right. Karl's blog has good stuff in it. (It's been on my blogroll for a few weeks now.)
Face the fact that if you were any good at what you do, you would be employed right now. Maybe a career change is in order.
Excellent. Go read it.
The funny thing is that I was just having a similar discussion--about how a lot of job seekers got laid off from jobs that they really weren't cut out for in the first place.
Great minds think alike.
And so do we, I guess.
Everyone enjoys a good language bashing now and then--especially when it's a shining example of how the language makes it hard to do something amazingly simple, like reading a file.
You know, I've never really felt like I've been at Yahoo long enough to say things like "This is really stupid. You know, I remember back when..."
Over the last few years, things have been changing. As companies grow and evolve, they develop and enforce processes and procedures--often complex. They do this for a variety of reasons, and we're no exception. So far many of the changes have happened slowly and they often haven't affected me directly.
Something that used to be done in a matter of a day or two has become a drawn out ordeal that can result in weeks of waiting. And, of course, the number of people in the path from point A to point B is a little stupid.
Dumb corporate policies.
Sometimes you end up fighting a problem and realize that you have two options. First, you can "give up" and start over (reinstall). Or you can keep trying, knowing you'll eventually come up with a solution and likely learn a lot along the way. The tradeoff, of course, is time. The first may take an hour, while the second can consume much of a day.
I opted for the second yesterday. I didn't get to bed early at all, but I did manage to fix a very odd problem on a server. In the process, I replaced the 2 80GB software RAID-1 disks with 2 120GB disks and undid the raid. I also converted the ext2 root filesystem to ReiserFS, my filesystem of choice.
Along the way, I learned a lot more about partitions, filesystem recovery, initrd/mkinitrd, and various other tidbits. I'm happy I did it. I didn't lose a single bit of data despite one of the disks seeming to be funky.
Later today, I'll haul the server to it's new home in a colocation facility in Santa Clara. (It used to live in Palo Alto, but I had to move it, thus killing the 520+ day uptime.)
Hands-on experience can be one hell of a teacher.