June 30, 2003

Fun with mod_rewrite

A while back, I discovered that someone was embedding one of my photos in their own web site. It showed up in my referer logs pretty frequently. I contacted the owner and asked him to stop. I never heard back.

So I decided to have a little fun with him.

If you're easily offended, stop reading right here. I don't want to read your complaints if you think I've done something crude. Go elsewhere and take your judgments with you. Thanks.

Anyhoo, the image he used was this one. It's the house I owned in Ohio before I moved to California and decided to pay twice as much for a crappy apartment. He linked to it from this page. So I decided to use mod_rewrite to serve a different image to his visitors and only his visitors.

(You may see the wrong image on his site if your browser decides to cache it. Just force a reload (shift-reload on most browsers) if you do.)

How'd I do it?

Easy.

Added this to the right VirtualHost block of Apache's httpd.conf file:

RewriteCond %{HTTP_REFERER} ^http://members.asianavenue.com/I_am_that_guy/$
RewriteRule ^/pics/house/DCP00047-320.jpg$ /images/babyshit.jpg [P]

Tested it, and restarted.

Magic.

Go forth and spread the mod_rewrite love.

And don't use my images without asking. It's just rude.

Posted by jzawodn at 02:18 PM

It pays to be an eBay exec

From TheStreet.com:

With the full approval of its board, eBay is issuing ever-increasing amounts of stock options, transferring an unusually large portion of the company's market value to corporate insiders. And many of these insiders have wasted little time in cashing in, selling hundreds of millions of dollars worth of stock, even as other investors, especially mutual funds, have bought up the shares.

And it seems that even the peons might benefit:

Despite these concerns, eBay shareholders last week overwhelmingly approved a proposal that would increase the number of shares available under its latest stock plan by more than 50%. The proposal would allow the company to give away an estimated $1 billion worth of options, about $250,000 per employee, this year alone. This year's handout is more than four times eBay's net income last year.

Nice. A little more of the mini-bubble, perhaps?

Posted by jzawodn at 12:03 PM

Google API Offline Aagain, MT pissed

This sucks.

MovableType is great, but...

Every time that api.google.com times out (like now), MT decides that it can't build pages anymore. Therefore, I cannot post.

500 Can't connect to api.google.com:80 (connect: timeout) at /home/jzawodn/public_html/mt/lib/MT/Template/Context.pm line 1749

I know that's because I use the Google API search results in my pages, but shouldn't it just timeout and gracefully continue as if the call returned no results?

Yeah, I thought so. The only options offered are "Close" and "Go Back." Given that this stuff is all loosely coupled, it really ought to be designed to deal with failure--not just give up.

Has anyone patched MT to work around this problem? I'm sure this problem isn't specific to me.

This will get posted eventually, I hope.

Update: Yup, had to post this a day later.

Posted by jzawodn at 10:28 AM

June 29, 2003

Don't call me, UNLESS...

I'm starting to wonder if this whole Do Not Call Registry isn't just a bunch of bullshit that the government put together to make us think it matters.

Over in jwz's journal he enumerates the many exceptions to the new rules. Looking at the list, I'm having a hard time figuring out how this new service (which still hasn't sent me e-mail confirmation) is going to help. Yeah, maybe it'll stop 1-2 calls a month.

It's too bad that our government doesn't have the balls to give us a real solution. (Hint: an opt-in list seems more appropriate.)

Posted by jzawodn at 12:35 PM

June 28, 2003

Not So Fast

I started out with the best intentions, but it seems that my body has decided to veto the idea of running on a regular basis.

It began rather well. I tried to be careful not to over-work myself. All the experts warn that it's easy to do too much too soon. So I paced myself.

I decided to try for every Monday, Wednesday, and Friday morning. I started on a Friday. It was hard. The first time was all about feeling my limits and how my body would respond. I'd walk for a few minutes, run for one, and repeat. I did the before and after stretches.

My body was clearly not used to this.

I skipped the next Monday and tried again on Wednesday. Much to my relief, it was quite a bit easier. And the iPod helped too, I'm sure. Friday wasn't bad either.

The next week, I walked/ran on Monday but noticed something odd. My legs were unhappy. There was pain. I've yet to accurately pinpoint it, but it's just below the front of my knees--I think. Anyway, it's not good.

An old college injury (nearly breaking my right ankle) also decided to remind me that it could bother me if it wanted to.

I took off Wednesday, expecting to be better on Friday, but I wasn't. In fact, I'm still not. It's now mildly painful to walk. Climbing stairs isn't fun either. I can do it, but I don't enjoy it. Actually, climbing isn't so bad, it's going down that gets me.

Needless to say, this is quite a setback. I'm going to probably go back to biking as soon as I can. I'll try tomorrow, but I'm not sure how my legs will react.

Grr.

I hate you, Murphy.

Posted by jzawodn at 08:34 PM

Mt. Dew to the Rescue!

My ass has been dragging all day. I went back to bed twice. I got up at 9am, then 11am, then 2pm. It was really quite hot by then.

I showered and ate. Still had little energy. Did dishes, paid bills, and random other crap.

Still tired.

Watched TV.

Still tired.

Walked to the 7 Eleven to buy some Mt. Dew at 8pm. Noticed it was finally cooling off outside.

Poured it into a big frosty mug.

Energy!

If only I'd thought of this 9 hours ago.

I haven't had Dew in about a week, so don't call me an addict. :-)

Posted by jzawodn at 08:12 PM

Russell on Vacation Time

One of the first blogs I began reading was Russell Beattie's Notebook. I don't remember how I found him, but I immeditately like his writing style and the fact that his posts often taught me things or made me think about something.

Go read his Vacation Time post. It's good to hear a U.S. citizen's perspective on the European approach to vacation time. They're a lot smarter than we are.

This caught my interest because I came very close to working for a European software company a few months ago. I'd have remained in the U.S. but would have still been on the stanard company vacation program--roughly 25 days per year. I have to say, it was difficult to pass that up. Not Russell is making me think about it again.

Posted by jzawodn at 01:36 PM

June 27, 2003

Whoring your PageRank

Okay, this has gone too far. Yesterday I received an e-mail from someone who wanted to buy some text links on my blog. I figured it was a humorous response to Google AdSense rejecting me.

No. He was serious.

I am interested in buying text link advertising promoting my internet pharmacy off of your website. The links would not have to be in a very prominent place on the website, as I am not looking for traffic from your site. I am looking to increase my PageRank in google.

(Emphasis mine.)

Does anyone else find this both amusing and disgusting at the same time?

On the other hand, I wonder what it was worth to him. :-)

Posted by jzawodn at 02:50 PM

June 26, 2003

High Expectations

I headed to Hollister this morning because of the amazing looking BLIPMAP. Thermals in the area were predicted to be 500-700fpm and as high as 10,000 feet. The forecast was dead on. It was really hot.

I flew twice in the Grob. My first flight sucked. I released at 2,400 after going thru a few strong thermals. I turned around to get them and couldn't find anything but sink. I was back on the ground in less than 15 minutes.

I waited a while before going up again. Launching well after noon, I towed to the Three Sisters--where all the action was. A bunch of other gliders found 6-8 knot thermals. I released at 5,400 in a thermal and found some 4-5 knot thermal activity but it was surrounded by 8-10 knot sink. I lost 1,000 feet and then gained 600. Then lost 800 and gained 400. And I was heading away from the airport.

I decided to head back toward the airport. Just at the edge of the foothills, I found a good 5 knot thermal at 2,700. It took be back up to 4,000. Having re-gained some confidence (it was in short supply), I took some big drinks of water (damn it was hot!) and headed south to look for more.

I found sink again. I got out of it quickly and headed toward the junk yard. It was sink all the way there but then I found 2-3 knots lift. Compared to what others found in the hills, it was crap, but it was better than nothing.

While trying to center the thermal, I started to realize that the heat was really getting to me. So I decided to go land. Just before I made my pattern entry, I found more lift and worked it for 2 minutes before heading in.

I got hit with more lift in the pattern and came in with full dive brakes. In fact, I landed long. It was either that or fly a 360 on final to drop altitude. I could have done that but I knew that my brain was not working at full power, so I just let the brakes do their thing. I even added a slip for good measure.

I went home, took a cold shower, and decided never to soar in 100 degree heat again.

Posted by jzawodn at 09:00 PM

Hot

So damned hot. It's at least 100 degrees now.

I, like an idiot, saw the soaring forecast and couldn't resist going to fly for a bit before work (thus starting work late).

Bad move. I got really hot. And I never got to the "good lift" that others found. There are still gliders at 10,000 feet or more now. But I'm home. And hot. And pissed.

Time for a cold shower.

Posted by jzawodn at 02:46 PM

June 25, 2003

Salon on The Google Backlash

Salon is running a front page story titled The Google Backlash (that's the single page printable version) in which I'm quoted heavily.

(BTW, I love the Google muscle image on the first page. That cracks me up.)

Who'd have thought that my complaints about PageRank would get that sort of attention.

Heh. Don't worry. Blogs are still just a fad, right? :-)

At least that's what I keep hearing... We'll see. There's a heck of a lot of momentum here right now. But we all remember what happened to push technology, right?

Posted by jzawodn at 03:39 PM

Speaking about MySQL at OSCON 2003

Since the conference is right around the corner and I'm finally motivating myself to do something about organizing my talks, I figured it was time to pimp the conference one last time. (O'Reilly likes it when we do that.)

So, click on the logo at the left for my speaker page, or go directly to my talk descriptions: Benchmarking MySQL Queries and MySQL Scaling Pains

I'm really looking forward to the Scaling Pains talk. I get to bitch about MySQL for 45 minutes. :-)

If you're going to be there, drop by and say hi sometime. Or throw rotten food at me while I'm speaking. That's always fun. If you're not going, I will have the slides on-line after the conference, so you'll have an idea of what I talked about.

Posted by jzawodn at 11:55 AM

June 24, 2003

Disk wait monitoring in Linux?

Any Linux sysadmins reading this?

In FreeBSD, I can use systat to find out how busy a given disk is. It looks like this:

Disks   da0   da1 pass0 pass1   md0
KB/t  26.67 22.10  0.00  0.00  0.00
tps       1     8     0     0     0
MB/s   0.02  0.18  0.00  0.00  0.00
% busy    0     4     0     0     0
queue     0     0     0     0     0

See, disk da1 was 4% busy during that 5 second snapshot. (I ran systat -v 5).

That's very useful when diagnosing a disk-bound MySQL server that's not doing lots of I/O but ends up waiting for lots of disk seeks on a slow RPM drive.

How do I do that in Linux?

I don't want to know how much I/O it's doing--that's easy... I want to know how often it's servicing an I/O request ('cause it may spend a lot of time seeking). I need to know how busy the disk is--even if it's not doing any I/O at the moment.

vmstat will give me I/O figures (read & write) but not % busy.

On Solaris, I'll use iostat to look at the average wait time for disk requests. It turns out that Linux can do the same thing. The await value tells you this.

However, I ran iostat -d -k -x 5 but got no data--just headers. It seems that -x only works in post 2.5 kernels. Damn.

Hmm.

My questions are two-fold:

  1. Can I get those stats for a 2.4.xx kernel? How?
  2. Can I get something like FreeBSD's systat % busy value in Linux? How?

Thanks to any pointers you might offer.

Update: Steve tried iostat -x on his RedHat 8 box and got meaningful output. Now I'm really puzzled.

Posted by jzawodn at 08:46 PM

Rude Blog Readers

No, I'm not talking about aggregators that suck down too much bandwidth. It seems that comments are being disabled in the Surfin' Safari blog.

I have decided to permanently disable comments in my Safari blog. Despite my repeated insistent attempts to explain that my blog is not a bug database, people still come here complaining about every random Web site that doesn't work. When I blog about a topic like "Standards Charts" instead of getting relevant feedback, I get more bug reports. In the real world this would be clearly impolite, somewhat akin to interrupting someone in the middle of a conversation in order to babble about a completely different subject, so what makes you think it's any less rude to do it in my blog comments?

Always refer to rule #1: People are stupid. (Even computer people. Especially some computer people.)

Posted by jzawodn at 08:31 PM

June 23, 2003

PHP5, MySQL, and Licensing

It seems that Sterling and others are talking about the licensing conflict between PHP (BSD) and MySQL's updated client library (GPL).

This may be a bit premature, since the folk at MySQL are considering a blanket exemption for Open Source projects with OSI approved licenses.

Yo, MySQL folks! What's the word? Can we get this straightened out before too many people blow it out of proportion?

Zak? How 'bout it?

If there's anything the Open Source freaks are good at, it's blowing stupid licensing debates way out of proportion.

Posted by jzawodn at 08:26 PM

DVD Audio Extraction?

I have a few DVDs that contain concert or concert-like music. I'd like to extract this audio so that I can listen to it on my iPod. Any idea how to do that? (Presumably it's encrypted, so I'd need to somehow DeCSS it first.)

The few searches I've tried produced so much other noise that I wasn't able to anything fruitful.

I know I can run the audio back thru the input of the sound card to capture it and all that junk. But I'd rather use a more direct solution--sort of like the way I can use cdparanoia to pull audio from CDs.

I'm game for a Mac OS X, Linux, Windows, or FreeBSD solution here. Any of 'em will do. Really. Free software, of course, is preferred.

Anyone doing this?

Posted by jzawodn at 03:12 PM

Does Google Like Me?

It's hard to tell anymore. On the one hand, I'm [temporarily?] back in the #1 slot for jeremy searches.

On the other hand, I applied to their AdSense program--just for kicks. I was rejected.

Your website is a type of website that we do not currently accept into our program. Such websites include, but are not limited to, chat sites, personal pages, search engines, sites that contain predominately copyrighted material, and sites that drive traffic through cybersquatting.

Heh. I guess I'm not worth their ad-serving time.

No, I really didn't plan to advertise on my site, but I was curious to see how the process worked. Now I know. Sort of.

Posted by jzawodn at 12:11 PM

June 22, 2003

Linux Desktop Woes

Scott has been using Linux as his day to day desktop for a while now. Probably a few months, I'd guess. The other day he posted a rant about Evolution, the Linux Open Source world's answer to Outlook. Evolution wouldn't export his task data.

He's since followed up with another post in which he says:

What about the person who goes to desktop Linux because its "open" and then finds out that Outlook for practical purposes is more open than Redhat's default mail client. What does that say about us the "open" community.

Very good point, Scott.

Posted by jzawodn at 08:20 PM

June 21, 2003

Rewarding Me

I don't know why, but I've been so in the groove today that I managed to get more writing done in 4 hours than I have in the past 1.5 weeks.

So I'm taking a 2 hour break to reward myself. I'm cooking up some Teriyaki Salmon to go with my Heineken and blueberry muffin.

Oh, and I'm going to consume these while watching my unrated, wide screen Old School DVD. :-)

Yeay!

Now if I could only figure out what caused this overdue burst of productivity...

Posted by jzawodn at 08:27 PM

Studies Show...

Why are people compelled to use phrases like "studies show..." as evidence for things that are already common sense to most reasonably intelligent people?

I've been hearing this commercial a lot on the radio recently. It advocates getting children started on education as early as possible in life. Or something like that. I stopped paying attention when I realized how insultingly stupid it is.

Studies how that children who do well in high school are more likely to graduate from college.

<sarcasm>

No shit?

Well, damn! These radio commercial people sure are smart. I'd have never guessed that on my own.

</sarcasm>

I can only assume that their target audience are people without common sense, idiots, or both.

What I'd give for a radio with an intelligence knob on it.

Oh, well. It can't be any worse than television.

Posted by jzawodn at 05:47 PM

High Availability is NOT Cheap

Over the years, I've seen too many posts on the MySQL mailing list from eager users of free software on cheap hardware who want 24x7x365 availability for their databases. Inevitably, the question gets replies from a few folks who respond with something like:

Here's what I did... I setup replication and wrote some Perl scripts to notice when there's a problem. They'll switch everything to the slave. The code is ugly but it works for me. :-)

I always cringe when reading those responses. I shouldn't really complain, though. I've been guilty of providing terse replies once in a while. But usually I just ignore 'em because I don't have the time or experience to really do the question justice.

Today I read a response from Michael Conlen that finally comes close to explaining why you're probably asking for something you don't need, why it's not cheap, and what you really need to be thinking about.

Since it was posted to a public list, I don't mind quoting it here (with a few spelling fixes).

First get an acceptable outage rate. Your only going to get so many nines, and your budget depends on how many. The system will fail at some point, no matter what, even if it's only for a few seconds. That's reality. Figure out what kinds of failures you can tolerate based on how many 9's you get and what kinds you have to design around. From there you can figure out a budget. 99.999% uptime is 5 minutes and 15 seconds per year of total downtime. 99.99% is 52.56 minutes and so on. At some point something will happen, and I've never seen anyone offer more than 5 9's, and IBM charges a lot for that. Then, figure out everything that could cause an outage, figure out how to work around them and give them a budget. Watch how many 9's come off that requirement.
If you have to use MySQL I'd ditch PC hardware and go with some nice Sun kit if you haven't already, or maybe a IBM mainframe. Sun's Ex8xx line should let you do just about anything without taking it down (like change the memory while it's running). Then I'd get a bunch of them. Then I'd recode the application to handle the multiple writes to multiple servers and keep everything atomic, then test the hell out of it. There's a lot of issues to consider in there, and you probably want someone with a graduate degree in computer science to look over the design for you. (anything this critical and I get someone smarter than me to double check my designs and implementations). It may be best to just build it in to the driver so the apps are consistent.
On the other hand, if you have all this money, look at some of the commercial solutions. This is probably heresy on this list, but hey, it's about the best solution for the needs right? Sybase or DB2 would be my first choices depending on the hardware platform (Sun or Mainframe). The systems are setup to handle failover of the master server. I know for Sun you want to be looking at Sun Clustering technology, a nice SAN and a couple of nice servers. You write to one server, but when it fails the backup server starts accepting the write operations as if it were the master. There's a general rule with software engineering that says "if you can buy 80% of what you want, your better off doing that than trying to engineer 100%"
Think about the networking. two data paths everywhere there's one. Two switches, two NIC cards for each interface, each going to a different switch.
Depending on where your "clients" are you need to look at your datacenter. Is your database server feeding data to clients outside your building? If so you probably want a few servers in a few different datacenters. At least something like one on the east coast and one on the west coast in the US, or the equivalent in your country, both of whom have different uplinks to the Internet. Get portable IP addresses and do your own BGP. That way if a WAN link fails the IP addresses will show up on the other WAN link even though it's from a different provider.
This is just a quick run down of immediate issues in a 24x7x365, it's not exhaustive. Think about every cable, every cord, every component, from a processor to a memory chip and think about what happens when you pull it out or unplug it, then make it redundant.

Well said.

Like the title of this entry says, High Availability is NOT Cheap.

Now, I know what you're thinking. These folks who are asking for 24x7x365 don't really need what they're asking for. A response like this is not helpful.

Re-read the first three sentences of the reply again.

Posted by jzawodn at 09:12 AM

The autoconf insanity

I've long been annoyed by the needless complexity and obscurity of autoconf and related tools. Finally someone who understands the problem much better than I do has spoken up.

The autoconf tools are also portable to almost every *nix platform in existence, which generally makes it easier to release your program for a large variety of systems. However, despite these few pluses, the auto* tools are constantly a thorn in the side of users and developers alike.

Read the full article on freshmeat.net

Posted by jzawodn at 08:40 AM

June 20, 2003

1 Year of Blog

It seems that I've been doing this a year now.

(Well, that's technically not true. Way before I knew was blogging was, I was already doing it but I didn't know it at the time. I got the idea from Alan Cox. My old on-line journal covered my doings from part of 1999 through 2002. Of course, only a few friends were reading it. It had no syndication. I didn't know what RSS was. I didn't know I should know. And the software was just 2 simple Perl scripts, a Makefile, and a single table in MySQL. Like Radio, it build pages statically and pushed them to the server via FTP or rsync.)

Getting Started

I started this blog at the suggestion of Jon Udell, originally playing with UserLand's Radio. I gave up on Radio after a few days of remembering why I didn't want to depend on Windows for something so important. In fact that first attempt at blogging is still hosted on UserLand's server.

A month or so after I began, we started syndicating my Linux entries and MySQL entries on the Linux Magazine web site.

My first post was about hardware and on-line communities. Since then I've moved on to a MovableType powered blog hosted on one of my co-located servers. And now I write entries in a variety of categories: MySQL, Linux, Perl, Random funny stuff, etc.

Late last year, I also started my flying blog to document my glider training and subsequent fun in the air. Later this year I'll begin training for my power training and continue to log my progress there.

Traffic

Let's look at some numbers.

In the past 365 days, I've posted roughly 732 entries. That averages about 2 per day.

My top 10 posts (based on the number of times viewed in the past year) are listed below. You can hover over the link to see the number of hits each has had as of today.

  1. RedHat 8.0 ISO Mirror(s)
  2. MySQL Full-Text Search Rocks My World
  3. FreeBSD or Linux for your MySQL Server?
  4. DVD Player Hacks
  5. The 10 Habits of Highly Annoying Bloggers
  6. MySQL, Linux, FreeBSD, and Swap Space
  7. Revisiting FreeBSD vs. Linux for MySQL
  8. MySQL, Linux, and Thread Caching
  9. Penis Puppets
  10. Yahoo Gets Slashdotted

A lot of those, like DVD Player Hacks, RedHat ISOs, and Penis Puppets are mostly thanks to Google. Others, such as the MySQL related posts and the 10 Habits are thanks to lots of bloggers linking to them. The MySQL Full-Text story was linked from the MySQL home page for a while. That generated a lot of hits.

It's interesting to note that no one force drove the bulk of traffic. Some was from other bloggers, some from Google, and some for other publicity. Notable entries are: Slashdot, Scripting News, Daemon News, MySQL AB, Barrapunto, Jon Udell, Phil Windley, and so on.

In the last year:

  • The front page of my blog has been hit 207,377 times, resulting in 15,619,459,294 bytes transferred (not counting images or style sheets). That's over 14GB.
  • My RSS feeds have been requested 1,148,625 times, totalling 7,316,111,247 bytes sent--nearly 7GB.
  • I've been visited by 245,111 unique IP addresses.
  • I've served a total of 2,771,246 requests across all archives, indexes, and RSS feeds--not including images or style sheets. That's 40,447,281,983 bytes--nearly 38GB
  • When all versions are combined, the most popular aggregators are NetNewsWire and Radio UserLand.

Since I log all traffic into MySQL, that was pretty easy to figure out. :-)

People

I had no idea it would last this long. And I wasn't prepared for all the benefits I'd reap from blogging. I've met a lot of interesting people via this blog--to many to mention. If you consider the time and energy that I put into reading other blogs, this has been quite an undertaking--but a completely worthwhile one.

My blogging in some way or another influenced a few others to jump on the bandwagon. In no particular order:

If there are others, please let me know. If you don't belong on this list, tell me. My memory can be fuzzy at times.

Trivia: Dan and Brandt's blogs are hosted on this server too.

Okay, I'm done rambling. For now.

Posted by jzawodn at 10:52 PM

June 18, 2003

Udell on Blind Ignorance

Okay, he doesn't call it that, but I do.

After all these years, the Unix and Windows cultures are still profoundly unaware of one another's strengths.

Read the whole story in Jon's Towards a unification of strengths article.

Posted by jzawodn at 11:02 PM

TypePad in Private Beta?

My surprisingly popular MSNBOT post got a referral and a TrackBack from http://firstpost.typepad.com/firstpost/2003/06/microsoft_crush.html but tried to follow the link and hit a password prompt. I guess the beta advertised on the TypePad site is running.

It's no surprise that they're using TrackBack, of course.

I've got to give 'em credit for calling the server firstpost. :-)

Posted by jzawodn at 10:28 PM

Search Users

Tim Bray's second installment is on-line now. It's brief, but I assume it's building up to the third installment.

Posted by jzawodn at 08:27 AM

Long eitheruse of time does not become pain.

Huh?

Go read this Register story and you'll understand.

It's really quite amusing if you're amused by Engrish and similar things.

Posted by jzawodn at 08:21 AM

June 17, 2003

MSNBOT - The Bot From Redmond

Well, it seems that they're crawling now.

They don't appear to have hit my site(s) yet. But they're probably just starting to ramp up.

According to Feedster there aren't many bloggers talking about it yet. Anyone seen this thing hit their site yet? How long has it been coming? Does it visit your blog frequently (like Googlebot does)?

Posted by jzawodn at 10:14 PM

Overcoming MySQL's 4GB Limit

(After having explained this for the 35th time, I decided it's time to simply put something on-line.)

When a MyISAM table grows large enough, you'll encounter the dreaded "The table is full" error. Now I could simply point at that page and leave this subject alone, but there's more to this story.

When this happens, the first reaction I hear is "You never told me that MySQL has a 4GB limit! What am I going to do?" Amusingly, I usually do describe the limit when I discuss the possibility of using MySQL with various groups--they often forget or underestimate the impact it will have. Putting that aside, the problem is easily fixed, as that page explains. You simply need to run an ALTER TABLE command.

And you'll need to wait. That ALTER TABLE is going to take some time. Really.

To protect yourself in the future, use the MAX_ROWS and AVG_ROW_LENGTH options at CREATE TABLE time if the table is likely to get big.

InnoDB tables do not have this limitation because their storage model is completely different.

Where does this limit come from?

In a MyISAM table with dynamic (variable length) rows, the index file for the table (tablename.MYI) stores row locations using 32-bit pointers into the data file (tablename.MYD). That means it can address only 4GB of space.

This problem is both a historical artifact and an optimization. Back when MySQL was created, it wasn't common to store that much data in a single table. Heck, for a long time 4GB was an entire hard disk and most operating systems had trouble with files larger than 2GB. Obviously those days are gone. Modern operating systems have no trouble with large files and hard disks larger than 100GB are quite common.

From an optimization point of view, however, the 32-bit pointer still makes sense. Why? Because most people are running MySQL on 32-bit hardware (Intel/Linux). That will change as use of AMD's Opteron becomes more widespread, but 32-bit will be the majority for the next few years. Using 32-bit pointers is the most efficient way to do this on 32-bit hardware. And even today, most MySQL installations don't have tables anywhere near 4GB in size. Sure, there are a lot of larger deployments emerging. They're all relatively new.

An Example

Here's a table that you might use to store weather data:

mysql> describe weather;
+-----------+--------------+------+-----+------------+-------+
| Field     | Type         | Null | Key | Default    | Extra |
+-----------+--------------+------+-----+------------+-------+
| city      | varchar(100) |      | MUL |            |       |
| high_temp | tinyint(4)   |      |     | 0          |       |
| low_temp  | tinyint(4)   |      |     | 0          |       |
| the_date  | date         |      |     | 0000-00-00 |       |
+-----------+--------------+------+-----+------------+-------+
4 rows in set (0.01 sec)

To find its size limit, we'll use SHOW TABLE STATUS

mysql> show table status like 'weather' \G
*************************** 1. row ***************************
           Name: weather
           Type: MyISAM
     Row_format: Dynamic
           Rows: 0
 Avg_row_length: 0
    Data_length: 0
Max_data_length: 4294967295
   Index_length: 1024
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2003-03-03 00:43:43
    Update_time: 2003-03-03 00:43:43
     Check_time: 2003-06-14 15:11:21
 Create_options: 
        Comment: 
1 row in set (0.00 sec)

There it is. Notice that Max_data_length is 4GB. Let's fix that.

mysql> alter table weather max_rows = 200000000000 avg_row_length = 50;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show table status like 'weather' \G
*************************** 1. row ***************************
           Name: weather
           Type: MyISAM
     Row_format: Dynamic
           Rows: 0
 Avg_row_length: 0
    Data_length: 0
Max_data_length: 1099511627775
   Index_length: 1024
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2003-06-17 13:12:49
    Update_time: 2003-06-17 13:12:49
     Check_time: NULL
 Create_options: max_rows=4294967295 avg_row_length=50
        Comment: 
1 row in set (0.00 sec)

Excellent. Now MySQL will let us store a lot more data in that table.

Too Many Rows?

Now, the astute reader will notice the Create_options specify a limit of 4.2 billion rows. That's right, there's still a limit, but now it's a limit on number of rows, not the size of the table. Even if you have a table with rows that are 10 times as large, you're still limited to roughly 4.2 billion rows.

Why?

Again, this is 32-bit hardware. If you move to a 64-bit system, the limit is raised accordingly.

Posted by jzawodn at 01:42 PM

June 16, 2003

Asking Questions in Public

I read this a long time ago and agreed with it completely but had lost the URL. The document Why Ask Questions in Public? does a good job of explaining why one should shouldn't reply off-list by default and directly engage helpful list members privately.

Allow me to quote a bit here...

I, like many other people with technical expertise in some topic, regularly read various Usenet newsgroups and mailing lists and try to answer questions for which I know the answer. However, I am also extremely busy with a large number of projects, often including improving the very software that people are asking questions about, and I've found that taking some time to help other people sometimes has the regrettable tendency to add to my total level of pending work. This is sometimes hard for me to deal with, and I'd like to ask for your help in solving this problem.
The problem generally takes the following form: Someone posts a question about something I know something about. I respond in the newsgroup or on the mailing list with some suggestions or possibly some questions. In response, the person mails me directly (rather than responding in the newsgroup or mailing list) with the answers and with other questions. Occasionally the problem takes another, related form: I post about a topic, someone who has a question about that topic reads my posts and thinks I sound knowledgeable, and they send me e-mail asking me questions.
I understand why people do this. Often they view newsgroups and mailing lists as giant, impersonal places and want to get out of them as soon as they can, and as soon as they find someone who can answer their questions, they latch on to that person and want to interact with them directly. I'm sure that they don't understand that this behavior causes problems for the person of whom they're asking questions.

Go read the rest to see how it concludes. Tell others who seem to habitually get this wrong.

It always surprises me that people who've been on-line for years seem to somehow not get the importance of keeping some discussions in the open. I don't know why. Even after repeated prodding, they seem to lapse into their old habits.

What's even worse for me is that we seem to have some of the worst offenders at work. :-(

Am I alone here or do others see this happening too often? Do you try to do anything about it? Have you found an effective tactic? I haven't.

Posted by jzawodn at 03:30 PM

Tim Bray on Search

Tim Bray has posted the first of what he says will be a searies of articles on search technology. It looks like he's off to a good start.

Posted by jzawodn at 08:59 AM

June 14, 2003

Bronze Badge Class

I've been remiss in updating my flying blog. :-(

After a little date mixup, I headed down to Hollister for Russell's Bronze Badge class. When I arrived, I was surprised to find that the office size had doubled and than there was a Piper Pawnee among the towplanes. How things have changed in the 2 weeks since I last flew!

Anyway, Russell covered all the necessary information for the SSA Bronze Badge test. There were 6 of us in the class.

After the test, I wiped down the wings of the Grob and took it for a short flight. Mike had flown earlier and told me that it was pretty calm. Any lift would be low and near the airport. Grr.

I found that conditions had changed by the time I launched. My tow was pretty bumpy. When I reached the foothills east of the field, I just run into two good thermals, so I released at 3,200 feet to go after 'em. Well, I couldn't find 'em. So I headed back in the direction of the airport and found a lot of 400ft/min sink and bumpy conditions. But the bumps were all quite small and impossible to work.

Before I knew it, it was time to land. I headed into the pattern and landed. I was able to get the glider all the way off the runway to roughly the spot I had planned, so at last my landing was good.

I waited a few hours before going up again. The sea breeze had begun, so conditions weren't likely to change. I was in no hurry.

I had a good 10 knot headwind for my second flight. And I was towing behind the Pawnee for the first time. Damn, can that thing climb!

Before I knew it, I was near the Three Sisters and climbing through 5,000 feet. I got the towplane to perform a gentle left 180 and released heading west. Unlike my earlier flight, it was quite calm. So I headed north along the ridge for a bit. Finding nothing, I headed west across the valley and over the hills west of the field. I played around there for a while before entering the pattern to land. About 30 seconds after making my pattern entry call (downwind for 24), a plane flew right over my. I saw him maybe 200 feet away off my left wing and dove immediately. As far as I could tell, he wasn't on the radio and hadn't heard my call. I'm sure he didn't see me because I was below him. And he was visually blocked by my wing while he approached.

Yes, aircraft have blind spots too.

Anyway, I landed without incident. I came in a bit high but used spoilers on downwind, base, and final to land normally.

It wasn't a great soaring day, but I had fun. It was good to get back in the cockpit again.

Posted by jzawodn at 11:33 PM

June 13, 2003

Lame Programmers and Credit Card Numbers

Some programmers are so lame that they haven't figured out how to strip spaces and dashes from input. Really. Check Steve's No Dashes or Spaces Hall of Shame for some nice examples.

My question for you is this: Would you let a programmer who can't handle sanitizing input anywhere near your e-commerce system? I sure as hell wouldn't.

In other news, George Bush fell off a Segway. He's nothing if not funny. To bad he's in charge of the country.

Posted by jzawodn at 09:29 PM

No more IE for OS X

Not like it's any great loss, since Mac IE was one of the worst browsers on OS X, but News.com tells us that Microsoft has given up on producing a Mac browser--in favor of telling users that Safari is better.

Posted by jzawodn at 08:52 PM

RSS Ads

There's some discussion in Phil Windley's weblog about advertisements in RSS. This is something that comes up now and then at work, so it's good to see that someone's giving it a fair shake.

Posted by jzawodn at 01:05 PM

Illegal Software Benchmarks

Tim Bray has a great post that sums up my feelings quite nicely when it comes to publishing benchmarks of vendor-supplied products (XML parsers, databases, web servers, etc.)

Microsoft and Oracle (to name a few) have been using a pretty lame excuse on this for a long time. It's good to see that the courts are sensible enough to see through it.

Posted by jzawodn at 01:02 PM

June 12, 2003

Man in Motion

Well, I've been slowly working up the motivation to try running on a regular basis. Kasia pointed me at some articles about running that are intended to help get a newbie like me started.

That last one sounds totally doable if you follow the plan and take it one step at a time (sorry for the pun).

What's my motivation for this? It has less to do with the fact that my 29th birthday has just passed and more to do with the fact that I feel like I need to do something.

Really. The whole "I'm getting old" thing just never bothers me. It occasionally surprises me, but it doesn't bother me like it does some people. I think getting older is kind of fun. Life's a journey, right?

Anyway, let's face it, this country is making us fat and I'm no exception. Sure, I bike when the weather is nice. And I really enjoy it. I've always enjoyed biking. It's even more fun now that I have a GPS on board.

I know that if I could get into it, running would be good for me and help me to drop some pounds. And it might make me seem less lazy. Kasia tells me that she's managed to hook several friends on it. She says the first few months are quite hard, but if you can hold out that long it gets to be very enjoyable.

That's a key piece for me. I know from experience that exercise for the sake of exercise doesn't work for me. It never has and never will. Period. I just get bored. I need to enjoy what I'm doing or else I won't keep doing it week after week, month after month.

Why running? I don't know, really. It's simple and I like simple things. Maybe because I've never really tried it before? Others seem to have had success with it. I know that Dan used to run a lot, and he's no fatass. Mark (who lives like 2 miles from Dan) seems to like it too. (Though I will have to look at the Hacker's Diet that he points out in Generation XL.)

And, in case you couldn't guess, blogging this is part of my attempt at self-motivation. Hey, the thought that someone might ask me how much I'm running a few months from now might just be enough to make it happen.

You never know. :-)

Anyway, I start tomorrow morning--Friday. Let's see how quickly I collapse.

Bonus points to anyone who can tell me where the title for this entry came from--without Google helping.

Posted by jzawodn at 10:28 PM

June 11, 2003

Note To Self

Don't argue with a self-proclaimed database expert about MySQL. It's just not worth it. I thought it'd be entertaining but it's more draining than anything else.

Heck, now that I think about it, try to avoid technology arguments completely. Life's to short for all the associated penis waving and bullshit that comes with it. If you don't like my technology and I don't like yours, fine.

*sigh*

I need a beer.

Posted by jzawodn at 10:52 PM

Flying with John

I took some time off from the book today to go flying with my friend John. He got his power license last year (I think) and we'd been talking about a combined power and glider day sometime. So the plan was to meet up at Palo Alto (he's a member of the West Valley Flying Club or WVFC), get a plane, fly down to Hollister Airport along the Diablo Range, take some glider rides, and then fly back.

But things never go according to plan.

Read the rest of the story in my flying blog.

Posted by jzawodn at 06:29 PM

Flying a Piper Archer

I took some time off from the book today to go flying with my friend John. He got his power license last year (I think) and we'd been talking about a combined power and glider day sometime. So the plan was to meet up at Palo Alto (he's a member of the West Valley Flying Club or WVFC), get a plane, fly down to Hollister Airport along the Diablo Range, take some glider rides, and then fly back.

But things never go according to plan.

The weather wasn't being cooperative at all. I arrived at WVFC at 10am to find that the whole Bay Area was covered in clouds--low clouds. The ceilings were 2,400 at best. But the forecast said things should be clearing up, and typically around 11am or noon the fog/clouds are mostly broken up, if not gone entirely.

So we double-checked the weather and route and then headed out to find the plane and begin the pre-flight checks. Our plane for the day was N1648H a Piper Archer with 180 horsepower behind the prop. The plane is relatively roomy and has nice instruments, including a color Garmin GPS that was fun to play with. It beats the pants off my little handheld model.

After pre-flight and warming the engine a bit, we contacted the tower and asked for permission to taxi to the runup area. We hung out near the end of runway 31 for a bit and then requested clearance to take off. After one more plane landed, it was our turn to go. We pulled out onto the runway, John said "you ready?" and off we went. That Piper has a lot of power and we were in the air in no time.

We flew out over the southern tip of the bay, heading eastward toward the hills. The plan was to fly over highway 680 and then follow it down to Reid-Hillview Airport, request permission to cross their airspace, and then head south to Hollister. But the clouds were still quite low and didn't show much sign of going anywhere. We stayed at 1,500 AGL.

Roughly 5 miles from Reid-Hillview, we couldn't contact the tower because they were very busy. So we circled around a couple times, waiting for a break on the radio. It turns out that something like 4 or 5 planes were flying patterns and/or touch-n-go landings. So they were talking seemingly non-stop.

Eventually we got thru to the tower and they let us fly over the airport and head south. But then when we were 2-3 miles south of the airport, they asked us to turn left and fly northwest. Given that they knew our intention was to fly south to Hollister, this was a gently way of saying either "you can't safely get there with those low clouds" or "I'm not going to let you try, but maybe San Jose will." We never tried contacting San Jose.

Instead, we headed east to see if the clouds would be broken up (or gone entirely) over the Livermore area and into the Central Valley. As we came over the Altamont Pass (and associated win turbines), the sky turned mostly blue. The clouds were virtually gone. We had to fly past Livermore to get completely into the clear, but once we did it was pretty smooth and clear sailing--aside from some early afternoon haze.

As we flew along, we tuned into the various airports we passed along the way, Livermore, Tracy, Los Banos, and ultimately Hollister. As we flew along it was quite clear, but the clouds over in the valley didn't look promising. The breaking and clearing I expected by that time of day simply wasn't happening. We eventually found ourselves near the San Luis Reservoir where I had hoped we'd be able to cross the range and land over at Hollister. It was solid clouds over the hills and into the valley. It looked like 10 miles south of Hollister was broken to clear, but that didn't help us. With those low clouds, we wouldn't be able to do much glider flying.

So we turned around and headed home. After a few minutes of flying back the way we came, John said "Okay, your plane." He let me fly for 10 minutes or so while he relaxed and just didn't need to think about flying. I found the Piper pretty easy to control. I was able to maintain a heading and altitude within the range for Private Pilot testing standards. I flew a 360 degree turn and a few gentle banks. It was a relatively smooth ride. The plane didn't require nearly the amount of rudder that I'm used to, but I expected that and didn't find myself over-controlling.

We got to see a lot of the soon-to-be urban sprawl that's invading the Livermore and surrounding areas too.

After flying through the haze again, we found ourselves near the Altamont Pass once again where the sky was much clearer. We flew back into the Bay Area and contacted the Palo Alto tower to let 'em know we wanted to land.

The tower told us where to go and that there were, at one time, 4 planes ahead of us in the pattern. I'm not using to flying with that many planes in the pattern, but with a bit of looking we managed to find them all.

I knew that the pattern for powered aircraft would be different than what I'm used to in a glider, but it was quite different to experience in the air. There were a few times when I was thinking "we really should have turned back there" but we just kept on going. Eventually, though, we turned base and then final. Lined up for runway 31, we followed the plane ahead of us and came in to land. John did a good job of keeping the glide slope and we touched down pretty smoothly after a bit of floating.

We asked for permission to taxi back to the parking spot, taxied, parked and tied the plane down, and gathered up our stuff. We decided to try for a second attempt next Wednesday. But next time we're not planning to leave the airport until 1pm, so if the clouds decide to stick around longer, they shouldn't be much of a factor.

We'll see.

I've posted all the pictures from the day's flying for your viewing pleasure.

Posted by jzawodn at 06:24 PM

June 10, 2003

Heineken Temperature

Through extensive trial and error, I've discovered that the optimal temperature for Heineken is not achieved in the refrigerator. The taste seems to improve quit a bit after it's had a chance to get roughly half way to room temperature. I don't have a thermometer handy, but I'm going to guess that it's roughly 48-52 degrees Fahrenheit. The fridge gets it close to 38 degrees or so (last time I checked) and it's about 65 in my apartment.

It's really too bad that I can't find JW Dundee's Honey Brown in the Bay Area. And it seems that Killian's Irish Red is hard to come by too. Those were my college favorites.

If you feel like bashing my choice of beer, don't waste your time. I really don't care what you think. Now, if you'd like to suggest something I ought to try, I'm all ears.

Posted by jzawodn at 11:22 PM

RSS Behind the Firewall

I knew this day would come, but I've been trying to avoid it. For roughly a year now, I've been happily reading various news source by using RSS aggregators of various form and function. Some were desktop apps and others were server-side. Some for Windows, some for Linux, and some for OS X.

In recent months, there's been growing talk about RSS at work. And I don't mean things like the Finance, Ask, or Buzz RSS stuff. There's been talk of using it internally. We have a growing number of internal weblogs (or people looking to experiment with them) and some in-house tools that now generate RSS.

This is great.

But it's going to suck too.

The honeymoon is over. Now I need to have two aggregators: one at home and one at work.

I'm used to doing this for e-mail, but that doesn't mean I like it. I suppose I could start taking my laptop to work every day, but then I'd have to take my laptop to work everyday.

I've been thinking about this for a while and haven't come up with any good solution. I suppose that someone could work on synchronizing aggregators. Then I could sync up my home and work aggregators somehow. Maybe that'll happen?

I wonder if is going to become a more common problem as RSS picks up steam in various companies.

Posted by jzawodn at 07:47 PM

June 09, 2003

Blog Search Growing

Well, it seems that Scott's Feedster is no longer alone. Dave Sifry's Technorati is now offering full-text search and he's already integrated it into the Technorati API. Read the full announcement on his blog.

For what it's worth, I use both services. They're great. I'm a paid subscriber of Technorati and I'm going be helping Scott out with a bit of stuff on Feedster sometime soon.

Keep up the great work guys...

Posted by jzawodn at 02:00 PM

MoveableType API Hackery

Around 3am this morning, I got to wondering what it'd take to write a command-line script that, given a post id number, would cause MT to regenerate it. The reason I need this (at least as a stepping stone) is that in my quest to remove blog pop-ups I neglected to notice that MT doesn't rebuild the entry page upon receiving a TrackBack ping--only when a comment is posted. This was pointed out by several folks in the comments. Someone even pointed to a patch that fixes this.

Instead, I wanted a way to do this without relying on a patch that may or not still work after the next MT upgrade. So I did a bit of poking around and read some of the MT perl module documentation. What I found made me very happy.

  1. MT is very well documented, from a programmer's point of view
  2. MT is very well designed, from a programmer's point of view
  3. Doing simple things in MT really is simple

With that in mind, I created a few test scripts before settling upon what I wanted. I devised a script called rebuild_recent.pl. Given a number (N) on the command-line, it rebuilds the N most recent entries. Have a look. It's really quite simple. Just drop it in your MT directory and it'll work.

Now I mentioned that this is a stepping stone. Since I recently moved from Berkeley DB to MySQL for the back-end, I'm going to rig up a cron job that scans for recent TrackBack pings and rebuilds affected entries. If I run it every 2-10 minutes, that should be sufficient.

Kudos to Ben and Mena for a great product that's also hacker friendly.

Posted by jzawodn at 11:47 AM

BusinessWeek on the SAP/MySQL Deal

BusinessWeek has published a good overview of the ramifications of the recently announced SAP/MySQL deal and MySQL's recent funding boost from Benchmark Capital. Marten Mickos, the CEO of MySQL AB, is discussed frequently as well.

To date, though, MySQL has been viewed mainly as a cheap database for running Web sites and as relatively unsophisticated compared to the whiz-bang wares of the database Big Three, Oracle (ORCL), IBM (IBM) and Microsoft (MSFT). Further, MySQL was never seen as an apple-cart tipper on the order of Linux. But Mickos and his minions served notice to the database sector on May 27 when MySQL announced an alliance with German software giant SAP (SAP). Then on June 3, MySQL announced a $19.5 million venture-capital financing round including marquee Silicon Valley VC firm Benchmark Capital.

I especially like this bit:

And the new financing should give MySQL the cash to upgrade its database with new features to take on Oracle, Microsoft, and IBM -- at least in less sophisticated installations. If the story of Linux's rise from humble hobbyist project to powerful corporate system is prologue, then this spring could mark the start of MySQL's inexorable ascent.

Since that's pretty much what I've been telling reporters for months now, I tend to agree.

In this Fortune article, I'm quoted as:

Yahoo's Zawodny makes a different analogy: "MySQL is to Oracle as Linux is to Windows. It will slowly but steadily creep up the food chain, just like Linux has."

So it seems that the message is getting out. Excellent.

Anyway, the BusinessWeek article is a good read if you can get past the sea of flashing ads on the page.

Posted by jzawodn at 02:12 AM

Getting into the groove

Finally.

After a very messed up sleep schedule (I just at lunch--at midnight), I managed to get into a productive groove. The chapter I've been not working on for the last 3-4 days is finally becoming reality.

It'll be interesting to see if I got to bed tonight or just wait until after the 10am root canal check-up appointment I have.

Posted by jzawodn at 12:11 AM

June 08, 2003

Samba 3.0.0 beta 1

Check it out. Samba 3.0.0 beta 1 has been announced.

Some of the new features.

  • Active Directory support
  • Unicode support
  • New authentication system
  • A "net" command, like on Windows
  • Improved error handling

Yeay!

Posted by jzawodn at 02:18 PM

June 07, 2003

American Wedding

While at the movie last night I saw the preview I've been waiting for.

Jim and Michelle are getting married - in a hurry. Jim's grandmother is sick and wants to see Jim walk down the aisle, so they're going for it in two frantic weeks. Stifler plans to be there (bridesmaids!), and more importantly to throw the ultimate bachelor party (strippers!). While everybody else sweats and frets, Jim's Dad (Levy) is cool as ever, dispensing advice that no one wants to hear.

I thought it'd be called American Pie 3 but they went with American Wedding instead.

Regardless, as a huge fan of the Pie, I'm really looking forward to this film. I'd try to describe the funny stuff from the movie trailer, but you're best off watching it yourself if you're into this genre at all. (I am.)

Posted by jzawodn at 07:07 PM

2 Fast, 2 Furious, 2 Fun

The second was far better than the first. Really. Rather than being about Vin Diesel as a badass driver, this film had a bit more humor, driving, and action.

Posted by jzawodn at 01:17 AM

June 06, 2003

Yahoo! Buzz RSS Feeds

Neat. The new religion is spreading at work--specifically on the Yahoo! Buzz Index.

Be nice. And report any bugs you find. They're very new.

Posted by jzawodn at 02:44 PM

Fonts on Linux: A Rant

Have you ever noticed what a royal pain in the ass it is to get fonts working on Linux that do not look like complete crap? On Windows it's a non-issue. On Mac OS X it's all quite amazing out of the box. But for some reason, having the X Window System on your desktop means that fonts must suck.

Here's a great example--a web browser. I want web pages to look decent on my Linux box. It's not asking a lot, is it? They don't have to look exactly as the "designer" intended, just nice. I have all high-resolution LCD displays at home. I run relatively modern graphics cards (or chipsets in the case of the notebooks) and nearly the latest release of X. Yet it's still a complete mystery to me.

Firebird

Let's start with the latest release of the Mozilla Firebird browser (not the database). I installed it recently on my notebook (and IBM ThinkPad T21 running the latest Knoppix, which is based on Debian). Go ahead, click the little thumbnail image to see what I see on my screen when reading my blog with Firebird.

Notice the jagged fonts? No smooth edges here. No anti-aliasing.

I spent some time futzing around with the fonts to figure out what's wrong. And I can't figure it out. Nothing I did resulted in a dramatic improvement of the display--not that I claim to have tried everything. Though I do claim that I shouldn't have to do anything. Anyway, we'll come back to that.

Mozilla

Let's now look at the latest version of Mozilla on the same machine (the IBM ThinkPad T21 running the latest Knoppix), with the same blog screen, at the same resolution and window size. Go ahead, click the little thumbnail image to see what I see on my screen when reading my blog with Mozilla.

Nice, isn't it? The fonts are crisp and clear. There are no jagged edges. On my LCD screen it looks very, very good.

Digging Deeper: Firebird

Okay, here's where it gets really mysterious. Let's think briefly about what's going on... I'm using two browsers that use the same underlying rendering engine (Mozilla's Gecko), yet they're showing me radically different things.

"Ah..." you say, "Firebird must simply have different default fonts configured. That's what I thought. So I pulled up the little font configuration window (click the image on the left to see what I saw).

Notice that funny looking font names? My default serif font is something called adobe-times-iso8859-1. The name's a big long-winded. One would that that Times is sufficient, but it's not a crisis.

The display resolution setting didn't help either. I'm not sure why the application needs to know what my display resolution is. Furthermore, I'm not sure why it doesn't simply ask the system. It seems to, by default, so I'm not sure why I'm being offered a choice. Is there a reason that I'd want to run one application at 72dpi while the others all run at 100dpi? I don't think I've ever needed to do that.

Unfortunately, I found no check box marked "Use crappy fonts only" that I could toggle. So I turned my attention back to Mozilla.

Digging Deeper: Mozilla

Mozilla, of course, also has a font configuration tool. So I launched it to see what it had to offer (click the image on the left to see what I saw).

Hmm. It looks remarkably similar. The only real difference I noticed is that the font names were different in two important ways. First, the names look like they were designed to be read by humans--like you'd see on a Mac: Courier, Times, Century Schoolbook, and so on. Secondly, the font names didn't seem to be related to those I could choose from in Firebird.

From this I concluded that the two applications were using different sets of fonts, one set crappy and one set nice.

Konqueror: Sanity Check

Not sure what to do next, I tried one last sanity check. I launched Konqueror, the browser built by the KDE folks. Guess what. It muddied the waters even more!

Konqueror makes my blog look crappy too, just like Firebird. However, when I view the font choices, they match those offered by Mozilla. I didn't bother with screen shots this time. It's too depressing.

The Burning Question

Having seen what I've seen so far, I'm really left with one burning question: What the hell is going on with my fonts?!?!?

Why do these two applications use completely different fonts? And why does a third, using the same as the second, render things more like the first? I cannot figure out how to get Firebird to use the set of fonts that Mozilla is using. I can not figure out how to get Konqueror to render like Mozilla even though it seems to be using the same fonts. Hell, I'm not even sure where the applications look to figure out what fonts are available.

On any other operating system, I'd expect all apps to have access to all fonts. Fonts are one of those "core services" that the GUI desktop framework ought to provide--to all applications.

Am I smoking something here? Am I expecting too much?

Can anyone explain what I've done wrong? I have to believe that it's something I did. What sort of self-respecting Open Source hackers would do this?

I give up.

Conclusion

Linux is not ready for the desktop.

Why not? Fonts, that's why.

Posted by jzawodn at 01:22 AM

June 04, 2003

No More Blog Popups

Okay, I've finally "fixed" my templates for MovableType. There should no longer be and stupid pop-ups on my archive pages or new entries (I didn't regen all 750+ old ones). Feel free to steal my templates. I use MT's ability to link a template to a file on disk to guarantee that those will always be exactly what I'm using.

MovableType is great. Except for that.

I never understood why the default templates use pop-ups for comments and TrackBack. No longer will you be subject to them here.

In reality, I've been phasing this in over time. I just happened to do the last 5% of it this evening.

Enjoy.

Posted by jzawodn at 11:42 PM

Adobe's Stupidity

I was going to write a long commentary on how stupid Adobe is being with version 6.0 of Acrobat Reader. Err, I mean "Adobe Reader" I guess.

Just read this and you'll see. I can't add much more to the discussion without using using a lot of four letter words.

Think about what a powerful brand "Adobe Acrobat" is, as one of the single most popular web plug-ins or "helper applications" of all time. Really. I remember those little Acrobat buttons showing up on web sites in the mid-90s.

Anyway, I'll stop before I start ranting.

Thanks to Scott for the pointer.

Posted by jzawodn at 09:39 PM

Birthday Biplane Ride

I decided to do something fun for my birthday today (29th, thanks for asking). So I hooked up with Amelia Reid Aviation at Reid-Hillview Airport in San Jose, the folks who also run RideInABiPlane.com. I had picked up a business card and flyer from them at the Watsonville Air Show (see this entry) a few weeks ago.

Anyway, we flew for about 40 minutes. Here are some pictures from the experience. The plane had room for two in the front, so Ray came along too.

It was great fun. I highly recommend going for a ride. I'm now tempted to work on my power license after the book is done.

Posted by jzawodn at 04:08 PM

Perspective

Do you ever play the "now vs. then" game?

My mind is a little strange. But you probably knew that already. About 20 minutes ago it was wandering a bit and I found myself wondering what'd it'd be like if me now met me from 10 years ago and had a chat.

What might that be like?

It went something like this.

(I was a freshman in college 10 years ago.)

Then: Wow, this is so cool. I don't know where to start. What did you do today?
Now: Well, I went for a bike ride, drove some friends to the airport, got my hair cut, went to work, did a bit of consulting after work, came home, watched a George Carlin video, and went to bed.
Then: Is work fun? Do they pay you a lot? Are there cool computers? Do you have to wear a tie?
Now: Yeah, work is pretty interesting. Sometimes it sucks, but that's life. They pay pretty well, but living in California is expensive too.
Then: You live in California and don't have to wear a tie to work?
Now: Right. I can pretty much wear whatever I want.
Then: No shit? Wow. That's great. Do do have a girlfriend?
Now: No.
Then: Why not?
Now: I live in Silicon Valley. The ratio of available girls to guys is really out of whack here. As far as I can tell, they're really quite hard to find. It seems that everyone I meet is either already dating, married, or just not realistic. Usually they're married. And the few that are available and interesting... Well, I never seem to be able to ask them out.
Then: Oh. That sucks.
Now: You're telling me.
Then: Do you have a cool computer?
Now: I have, uh... (counting) ... 11 computers.
Then: (blank stare)
Then: I'll just pretend you didn't say that. What's this consulting about?
Now: I sometimes help small companies fix their computer problems or design software systems.
Then: And they pay you?
Now: Yeah. It's nice to make a few hundred dollars for a few hours of work. It helps to pay for my expensive hobbies.
Then: Damn! They pay a lot!
Now: Yeah, and it's really laid back. We met at the founder's apartment, had a beer, a cookie, and talked through their problems.
Then: You get to drink on the job? No way.
Now: Well, it's not what you think. Really.
Then: What's the expensive hobby?
Now: Flying gliders.
Then: All right! That means I'll get to keep flying someday.
Now: Exactly.
Then: Hm. I don't even know what to ask next. There are so many things I still want to know.
Now: Well, I'm not going to tell you how to live your life. Life hasn't turned out at all the way I expected. But I don't regret any of it. (Okay, a few minor things, but don't worry about that.) You'll know what to do.

Of course, I have no idea what it'd be like. But that doesn't strike me as being too far off.

A lot has changed in the last ten years. But what's more striking is what hasn't changed. It's fun to look back. Especially since I'm no good at looking forward. "Where will you be in five years?" Beats me. Wherever life takes me.

Enough rambling. I'm tired. I have a big day tomorrow.

Posted by jzawodn at 12:10 AM

June 03, 2003

Life is Teasing Me

I suppose it was due. It's been a while. But I just realized that life is, once again, teasing me.

Hm. There's really no way around it either.

Posted by jzawodn at 11:31 PM

Network World Fusion Weblogs

This may not be news, but I just noticed that Network World Fusion has weblogs.

Posted by jzawodn at 05:52 PM

June 02, 2003

Corporate Panty Raid

Well, well, well. It seems that another company has begun trying to recruit people from one of our business units as they begin trying to staff up their own.

It's really too bad that I didn't know this before responding to the recruiter who contacted me. I could have had a lot more fun.

Apparently the games that rivals played in high school continue right on into the "professional" world.

Posted by jzawodn at 09:20 PM

June 01, 2003

Knowledge Worker or Google Hound?

I was having a chat with Kasia a little while ago and we got on the topic of knowledge. I had mentioned that the MySQL folks have asked me to take the MySQL Core Certification Exam, which I think is a good idea. They'd like some feedback on the exam and I'd like to be able to tell people that it's a worthwhile certification, etc.

Along the way I said something like "I don't know how much they expect me to study, but there's a whole lot of stuff that I just don't know without the on-line manual nearby." Call me selfish, but that was one of my motivations for becoming a MySQL mirror (mysql.zawodny.com). I wanted to ensure that I'd always have fast access to the documentation.

Anyway, the conversation went roughly like this:

k: That's true of most everything I know..
k: I'd be lost w/o books and manuals
j: Yup, me too
k: I'm good at looking things up
k: I've always felt sort of guilty about that..
k: People think I'm bright.. nah
k: I'm just efficient with google
j: Heh, right... I think lots of people are like that.
k: Do you ever get that feeling?
k: "If people only knew how little I really know..."
j: All the time.
k: Oh, good. Not just me then.
j: Not at all.
k: That makes me feel better.
j: It's most noticeable when I'm talking with VPs at work and they're like, "but we have you so it's no big deal..."
j: But that's probably just good delegation on their parts too... "That's your problem, not mine..." :-)

And then I had this "ah ha!" moment.

In thinking about the difference between "knowing something" and "knowing how to find something" I realized that I'd heard this all before in a different context.

Back in the late 90s when I was occasionally building things that passed for knowledge management tools at Marathon Oil, there was all this talk about knowledge workers. These were people who'd have vast quantities of information knowledge at their fingertips. All they needed was a way to organize, classify, index, search, and collaborate with it.

I think we've made it. I've become quite efficient at finding information when I need it. But the information isn't organized like I had envisioned a few years ago. It's just this big ugly mess known as the The Web. Lots of pockets of information from mailing lists, weblogs, software projects, communities, and company web sites are loosely tied together by hyperlinks. There's no grand schema or centralized database. There's little structure or quality control. No global vocabulary.

But even with all that going against it, it's all indexed and easily searchable thanks largely to Google and the companies that preceded it (Altavista, Yahoo, etc.). Most of the time it actually works.

Amazing!

Really. Think about it from the point of view of 6 years ago.

Now that I think about it, there was also a lot of talk about corporate intelligence back then too. But one thing I learned in my time at Yahoo Finance was that a lot of people who work for very respectable multi-million dollar companies used Yahoo Finance (and various other common web sites) for corporate intelligence--not some fancy tool that was designed and marketed for corporate intelligence.

We're all just very efficient at scavenging on the Web. Some are simply more efficient (or can think of better keywords) than others.

So, anyway... I just figured all this out. I guess I'm a little late to the party on this one. But I can't help but to look back and laugh at all the stuff that never materialized.

Posted by jzawodn at 08:53 PM

Remote Control Ceiling Fan

My landlord called me on Thursday to let me know that someone would come by on Saturday to install the ceiling fan that I requested over a year ago. He bought it a long time ago but never got around to getting it installed. And by the time I remembered it was fall and not that hot anymore.

Anyway, the guy came by on Saturday and did the installation. I have a nice new ceiling fan in the computer room of my apartment. It was the only room that had virtually no circulation, so it always got really warm in the summertime.

The funny part was when he asked me if I had a 9-volt battery. "Why?" I asked. "For the remote control" he said with a straight face. I looked at him blankly for couple seconds and then looked at the box. Sure enough, there was a remote control in it.

You don't believe me? Have a look.

It's official:

  1. People are too lazy
  2. I now really have too many remote controls
  3. The computer room is cool. Literally.

This got me thinking. If we're putting remote controls on ceiling fans now, what's next? I already have remote controls for my Sony Car Discman, DVD player, Lights (X10), TV, VCR, TiVo, and Stereo. My previous car had a keychain remote for locking, honking, and so on.

Maybe kitchen appliances? Or the toilet? You know, a "John Cage from Ally McBeal" sort of remote flush device?

Sigh.

Posted by jzawodn at 03:01 PM