Sony Ericsson K700i

July 26, 2004

I didn't intend for this review to be as long as it is, but it seems I got a little trigger-happy and couldn't stop typing.

It's no secret that I'm a big fan of Sony Ericsson mobile phones (I've had the T68i, P800, and T616) and the K700i is certainly no exception. Though there are a couple of disappointments, I have to say that overall, I'm pretty impressed. That said, let's take a look at this phone.


Though it's a slight departure from previous designs, I think that the K700i looks great. I don't quite understand the whole "dual face" thing that SE is trying to push (the idea that it "looks" like a camera on one side, and a phone on the other), but whatever.

What I do miss from the T61x is the identation up the sides of the phone. As I wrote in the T616 review, this made the phone feel secure in your hand, something that is difficult to do with such a small device. That's not to say that the K700i doesn't feel good in the hands, quite the oppposite actually, but the automatic comfort of the T61x is notably absent.

The phone feels very solid, almost like you could throw it against a wall and expect it to make a hole. Like most mobile phones, the only movable part is the battery cover, which fits very snuggly (no doubt due to the long "tracks" that run along the cover) and produces no rocking (unlike the T68i) when typing on the keypad and no creaking noises when squeezing the phone.


The keypad buttons feel very solid and have a great tactile feedback to them. The keys are rectangular, transparent (kind of look and feel like glass), elevated above the phone, and layed out in a square matrix (as they should be). The function keys aren't as 'glassy,' but have a more 'milky' look to them. The illumination on the keypad is excellent.


I'm glad to see that SE has moved away from the square shape of the T61x joystick and gone to a completely round design similar to the one found on the T68i, though a little larger. It actually makes the control feel a bit more analog (it's not), especially when playing games. Another good change is that the joystick can no longer "wake up" the phone — you have to either press the menu buttons or the keypad to bring the phone back to life (yes, you could lock the keys, but I hate extra steps  :P).

All of the joystick directions can be assigned shortcuts.

Data Port and Charger

My second biggest gripe with the phone (behind battery life; see below) has to do with the black rubber cover that "protects" the data port and charger. SE has never offered this on a phone before and I'm unsure why they decided to go with it now; it's not needed and only makes it more difficult to charge the phone. Morever, it feels hyperextended when you have the charger connected to the phone. I have half a mind to remove it, but because I'll probably sell the phone at some point, I'm compelled to leave it fully intact.

The charger connects the same as all (?) SE phones — there are two little prongs that snap into the connector. I'd much more prefer a single "plug" as is found on most Nokia phones.


Under the camera button on the left side of the phone is the obligatory rock-switch. During calls it controls volume; incoming calls can be given a busy tone; in standby mode, information about the phone is displayed, including date, profile, model name, your mobile number, and free memory (sadly missing here is information about remaining battery life); and in camera mode it's used to set the exposure compensation.

"Online" button

The right side of the phone has an "online" button that takes you straight to the WAP browser. I've never used this button in past phones, so I doubt I'll start now. I don' t think it can be assigned another function, which is unfortunate.

Camera Button

The camera button on the side now has a delay on it so you have to hold it down for a couple of seconds before it activates the camera.


The display is amazing and really stands out from almost all other mobile phones. The screen is a very bright TFT capable of 16-bit color and features one of the best resolutions available today: 176x220. Text is very smooth and pictures are simply gorgeous — you have to look pretty hard to make out individual pixels.

There are no options to adjust the brightness or contrast, but I haven't come across a need to do that yet. The screen looks great in direct sunlight and is very readable, perhaps moreso than any other mobile phone display I've ever seen.


I was blown away by games on this thing. They look absolutely incredible. The Mascot Capsule Java 3D gaming engine is really impressive — this is one of the very first phones to ship with MIDP 2.0/CLDC 1.1 and J2ME 3D. Combine that with the resolution and brightness of the screen and the superb sensitivity of the joystick and you are left with a pretty decent gaming platform (the best I've seen yet on a mobile phone).


The phone ships with 41MB of available memory (you can get a couple more megs by deleting some of the installed applications/themes/games/etc). All of this memory is available to just about everything on the system, including image, audio, and video files. While there is no memory-expansion slot, I'm not sure that one is really needed given the fact that you would be fairly hard-pressed to fill this thing up with just games, applications, and audio/video/image files (obviously MP3s and MP4 video are a different story).

Syncing with iSync

This was not as easy as I had hoped, but given that there is no official support in the latest version of iSync for the K700i (which makes sense; the phone isn't even available in the US yet), I was a little surprised to find that, after a little finagling, I could get it working out of the box. The trick is that you have to initiate the Bluetooth pairing from both your computer and the phone, one right after the other. After this is done you should see a K700i icon inside iSync.

I'm positive the next iSync update will have native support for the K700i.

Transferring files with Bluetooh

As expected, I had absolutely no trouble transferring files back and forth between the PowerBook and K700i, be them themes, pictures, videos, games, whatever. There is support for the new HID profile which includes both the 'object push' and 'file transfer' options of moving files between devices.

Files transferred to the phone through Bluetooth (or by other means) are placed in the appropriate folder in the "File Manager" (see below) based on file extension. If the extension is unrecognized, the file will be placed in the "other" folder.

Using Bluetooth to Browse the Phone

No trouble here either. I actually think the browsing is quite a bit faster than with the T61x. I experienced no problems moving in and out of directories and moving files back and forth.

Digital Camera

The K700i takes decent pictures, but nothing mindblowing. As usual, I really couldn't care less whether it came with a camera or not. Until they're 3MP and above, I just don't care (it won't be long). The pictures have a native resolution of 640x480 and can be interpolated to 1280x960 (but, um, why?). In addition to these sizes, you can also take pictures at 320x240 and 160x120 and the camera is capable of 4x digital zoom.

The design of the phone is such that when you take pictures and hold the phone horizontally, you'll find the "snap" button on top of the phone along with the rock-switch that controls exposure compensation (of course you're taking portrait-mode pics when you do it like this; the option to rotate pics is offered after taking them). You can take landscape pictures by simply keeping the phone vertical. The lens can be snapped by either pressing the joystick down, hitting the camera button, or pushing the bottom-left function key.

As expected there are all kinds of picture options, including black and white, sepia, solar effects, and negative. There's also a "night" option. Somewhat surprisingly, there's a panoramic option that is quite functional and something I wouldn't expect in a camera phone like this. It takes three pictures and stitches them together to form a larger, [hopefully] seamless 1664x416 picture — it actually works pretty well. You line up your pictures by aligning a semi-transparent image of the previous shot that is overlayed onto the viewfinder.

The built-in image editor allows you to add all sorts of things to the images including text and freehand drawings.

One of the neatest additions to this phone is the "flash," which isn't a flash at all, but rather a very bright LED light. My limited use has shown that this actually does a decent job when taking close-up camera shots and video clips in low-light settings. It also works very well as a flashlight of sorts and is especially useful for finding the right key and getting it in the door at night. I only wish that you could assign the light a shortcut key, but instead you have to be in camera mode to invoke it (hitting keypad #5 turns it on while in camera mode).

The viewfinder looks great and the refresh rate is excellent.

There is a small mirror on the back just under the lens for self-shots.

Digital Video

Yes, this phone will shoot video as well (with sound!). You can choose between one of two resolutions, 176x144 or 128x96 (both weak for sure, but this is a phone). Again, I couldn't care one way or the other if I could take video, but because I can, I'm finding that it's something I play around with quite a bit. Further adding to the enjoyment of taking videos is the fact that you're limited only by the available memory in the phone (as I mention above, 41MB, which makes for A LOT of video at these resolutions). You can limit the video to a length of 10 seconds if you want to shoot short clips for MMSs. All of the features and effects described above for the digital camera are also available for the video.

Like most other phones that are capable of shooting video, the format is 3GP (H.263), which can be played back on the phone or a computer (yes, you get sound when playing back video on the phone).

File Manager

The file manager built into the phone is pretty nice. It's broken down into seven folders: pictures, sounds, videos, themes, games, applications, and other. You can move, rename, copy, and delete files from within the file manager. One neat (and long-needed) option available here is the ability to mark several files at a time for deletion (among other things). The photos in the pictures folder are shown as small thumbnails (four per screen) and you can even have it run a slideshow of the pics.

You can also view information for each folder such as the number of files within the folder and their total size.

All of the regular options are here for transferring files: Bluetooth, IR, MMS, or e-mail.

User Interface

I love the interface. It's very similar to that of the T61x, but with a few changes. The most notable is the sharpness of the icons in the main menu (which is due more to the increased resolution than anything else). They are layed out the same way as the T61x: four rows with three icons each. As you cycle through the icons they 'magnify' quickly and then shrink to a size that is slightly larger than the unselected icons, changing looks in the process. A nice touch is this circle 'cursor' that follows your joystick moves and jumps from the sides or top/bottom of the screen as you "wrap around" the menu. It looks great.

This phone also makes use of tabs, which I think is a first for a phone-only device, and certainly makes for a better user experience.


The K700i uses graphic themes and is capable of displaying animated wallpapers. Currently, I'm using a theme called "Nemo" that mimics the virtual aquariums available on the Finding Nemo DVD. The background wallpaper to this theme is gorgeous and little bubbles rise up from the coral at the bottom. It's pretty neat.

I've run through most of the themes currently available, and have seen some pretty impressive collections, though not too many that I would consider using. The number of available themes will grow rapidly as this phone starts to take hold around the world.

[I got an e-mail from someone pointing me to a movie he made that shows off the animated wallpapers — take a look]


I can't say that I have any complaints with the layout of the phonebook. The menu has been redone a little bit so that more information can fit on the screen. When viewing your list of contacts all you see is their name, but as you highlight each name, the view expands around the name to expose the main contact number for that particular contact; you can then scroll to the right to reveal other numbers and e-mail addresses attached to that contact. Depending on what is selected (number or e-mail address), pressing down on the joystick either engages a phone call or presents a compose window for an e-mail. Pretty slick.

Obviously, you can also attach a photo to a particular contact for photo caller-ID and can have custom ringtones as well. Voice-dialing is also supported.


You'll find all the usual suspects here: SMS, EMS, MMS, and e-mail (IMAP4/POP3/SMTP).

One of the complaints of the T61x was the number of steps one had to go through to get to an SMS compose window. That has been taken care of with the K700i by allowing you to assign this to a shortcut (when I want to send a text message, I simply tap the joystick left). Another really nice touch is a 'recently sent' list; this pops up after you've composed the message and displays a list of the 10 people you've most recently sent an SMS to, while also offering the option to search your phonebook for a number. Overall, the messaging options and associated menus are done very well.


Nothing too groundbreaking here except for the fact that you can now send attachments of any file type (even if not understood by the phone), which is a very neat feature.


The K700i comes with a lot of multimedia options, including the ability to listen to MP3s, an FM radio, and some "DJ" software that you can use to create music to be used for whatever (e.g., ringtones, etc).

Media Player

The "media player" can handle the following file types: MP3, AAC, WAV, AMR, MIDI, and MPEG-4 video. It can be put into the background so that you can do other things on the phone while using it.

While 41MB is a shit-ton of storage for a mobile phone, it obviously doesn't go very far in the way of MP3s or other storage-intensive media (where are the half-terabyte phones?  :P), which is why the media player will rarely, if ever, be used by me, but I thought I would mention it. For the sake of this review I loaded up a few MP3 files to test it out. The sound out of the loudspeaker was excellent and there is an equalizer so that you can adjust the sound to your liking. You can also listen to the music through the supplied headphones.

FM Radio

This is an SE first. It's been a while since I've had an FM radio in my phone (not since the Nokia 7210 and 7250), but I doubt I'll use it any more now than I did then, though it will be good to listen to Stern in the morning again. Like the MP3 player, you can either play the sound through the headphones or the loudspeaker, with the only caveat being that heaphones must be plugged in because the antenna is contained within the cord. You can save up to 20 presets by frequency number.


As is expected, ringtones can be either MIDI (40-chord polyphonic), MP3s (and other supported formats), or anything that you record. Unfortunately, your options aren't so great when it comes to message alerts as you are limited to one of six pre-defined sounds.


The functionality here is very similar to that of the T61x models. Included are a calendar (viewable by week or month), tasks, notes (all of which can sync with your computer), timer, stopwatch, calculator, and alarms (both single and recurrent).

One neat thing about the notes is that you can have one displayed on the main screen to remind you of something; it's displayed on top of a transparent window, which looks really nice.

The calculator works the same as the one on the T61x, which is still the best I've seen on a non-'PDA' mobile phone.


Instead of searching the net for Internet settings and putting them in manually, I used the Wap Set-Up found on the SE site. An SMS message is sent to the phone that automatically loads up the settings for my particular provider. I must admit that I've become quite fond of this after having used it on the past few phones that I've had.

The built-in WAP 2.0 browser (which is quite capable of displaying pages built with XHTML and CSS) is one of the best that I've seen — I can't say that I'm blown away by anything, but I don't have too much to complain about either.

I think this phone is the first SE device to support GPRS Class 10 speeds in addition to both CSD and GSM Data.


Unlike the T68i or T61x, this model comes with a speakerphone. Both the loudness of the speaker and the sound quality from the microphone are excellent — friends can't tell when I'm on speakerphone. The only complaint I have is that there is no easy way to turn on the speakerphone. You first have to be in a call and then you have to hit the joystick and scroll down to the option, which means that most of the time you will have to tell the person on the other end to hold on. I'd like to see a way to turn this on before making or receiving a call.

Battery Life

The biggest disappointment of this phone is the battery life. It doesn't make sense that SE would use a battery that is smaller than the one found in the T61x (700 mAh as compared to 770 mAh), knowing full well that the more demanding screen, Bluetooth, loudspeaker, and camera would suck up power like crazy. I'm having to recharge the phone almost daily with regular use, even though I have the screen set to turn completely off when I'm not using it. The specifications claim a talk time of 7 hours and a standby time of 300 hours — not even close.


Remote Screen and Remote Display

The "remote screen" option allows you to shoot media over to a Bluetooth Media Viewer (MMV-100) device such as a TV, which means that you can view images or sounds from the phone through the TV.

The "remote display" program lets you use the phone as a remote control for your PC (much like the the third-party Salling Clicker has allowed Mac users to do for a while now).

Has it really been five years?

July 23, 2004

I got an e-mail from a friend this morning congratulating me on the 5th-year anniversary of this site (how I didn't notice this is beyond me). It was five years ago to the day that I registered this domain. Damn. This was the last in a long line of domains that I purchased and was initially going to be used only for e-mail — I wanted an address-for-life. It has since become much more than that and now somewhat serves as a repository for my life (well, the geekier side of my life anyways).

For years I was really reluctant to put any content on the site (I didn't start writing here until 2002) because I was scared that I would become obsessive with it — good thing that hasn't happened *cough*. It's turned into a labor of love, and while it does eat up a lot of my time (more than I'll ever admit), I've never regretted working on it.

As long as I continue to receive positive feedback from random strangers and real-life friends about what I'm writing/doing here, I'll continue to produce.

Here's to another five years.

Nested archives with Movable Type

July 21, 2004

I've wanted nested archives on this site for a while, but didn't get around to figuring out a way to do it until a few days ago. I wanted:

  1. a list of the months in which I posted something;
  2. each element of that list to be linked to the archive page for that month;
  3. a list of posts under each month that were published during that month; and
  4. each element of that list to be linked to the individual archive page for that particular post.

The entire point of this is to consolidate the list of individual posts with the month in which a post appears. I wanted to merge the list of individual posts with the list of months in which I posted (I'm removing both of these pages as soon as this entry runs its course).

I figured that there was no "direct" way to do this with Movable Type (I realized later that I was wrong; keep reading) and so I started looking at the MT Plugin Directory for a plugin, but there weren't any that fit the bill. I tried a combination of various plugins, but still couldn't come up with the functionality that I wanted, which I thought was rather simple.

I began whipping up something in PHP, but quickly realized that there had to be a better way; there had to be a way to do it directly through MT. It didn't take long for me to figure it out (or for me to feel like an idiot for not trying to do it like this from the beginning).

The following is a very quick and simple way to achieve what I described above (and illustrate on my main archive page) using nothing but MT tags (I've included the actual markup that I use as well):

<MTArchiveList archive_type="Monthly">
<h2><a href="<$MTArchiveLink regex="noExtension"$>">
<a href="<$MTEntryLink regex="noExtension"$>">
(<MTEnglishOrdinal number='[MTEntryDate format="%d"]'>)

If you're confused by the "regex" stuff in the link tags above, have a look at my post on future-proofing your URIs. The MTEnglishOrdinal tag is part of a plugin I use called DateTags; it takes in the cardinal date number and passes back ordinal numbers (i.e., 1st, 2nd, etc).

Not for nothing, but I really like the look and feel of my main archive page now. On a related note, I've changed the menu (the right-hand column) around a bit for archive pages — tried to make it a little more relevant/helpful. and broken spam filters

July 19, 2004 is often lauded (and rightfully so) for its exceptional spam filtering, but what to do when the filters start breaking down? It seems that after the file that contains your filtering rulebase (~/Library/Mail/LSMMap2) becomes too large, effectively stops catching spam. I've experienced this more than once and each time it has come on rather suddenly, leading me to believe that there is a specific filesize threshold that, when crossed, breaks the filters (the last time I noticed this the size of the LSSMap2 file was ~8.5MB).

The only way to "fix" this is to remove the LSSMap2 file ( recreates a new, blank file when you restart the application). Yes, this means that you have to start training the application again, which, for at least a little while, puts you in the same position you were in before you removed the file.

Enter JunkMatcher:

JunkMatcher filters spam using flexible regular expressions, IP query against multiple blacklists (such as and varoius other techniques such as email property matching, HTML final rendering matching etc. You can match against almost every bit of a message (including attachment filenames and charsets), and the raw material for matching is cleaned out for you to defeat some of the tricks spammers use to obfuscate their messages.

To get my rules back on track again, I simply let JunkMatcher "define" the native filters by using it for a few days. This means that you have to actively look for false-positives (I always get quite a few with JunkMatcher's default rules), but I've found that after just two or three days (given the extremely high volume of spam I get; >2000/day) the filters have been "trained" well enough that I can turn JunkMatcher off (until LSSMap2 decides to shit on itself again).

It isn't the best solution, but for now it does the trick and has stopped me from implementing Knowspam or something similar.

iPhoto and image resizing

July 16, 2004

I'm not quite sure when it happened (sometime ≥ v4.0), but iPhoto has finally fixed the non-anti-aliasing of exported photos. This makes my life a tad bit easier. The following steps are those that I used to take to get photos up on this site:

  1. Create a temp folder in iPhoto.
  2. Copy to this folder all of the pictures from the latest trip/event/whatever that I want to put up on the site.
  3. Go to the temp folder and remove all of the photos that I know I'm not going to use on the site.
  4. Sort the remaining photos in the order that I want.
  5. Tag these photos with the "web" keyword (more about this here) for future reference.
  6. Export them from iPhoto with no resizing and where the filenames are based on the album name. This will export the images with numbers that correlate to the order that you have them laid out in iPhoto (e.g., temp-01.jpg, temp-02.jpg, etc).
  7. Use QuickName (or whatever you like) to remove "temp-" from the front of the filenames. I've found no way to get iPhoto to use only sequential numbers in the filenames (i.e., without a title preceding the number).
  8. Use Photoshop to batch-resize the pictures to the size that I want for the website (currently 500x375).
  9. Create a new folder on my webserver for the pics and drop them in there along with my Slideshow script.
  10. Think about a faster, more efficient way to do this.

Now, because I don't need to use Photoshop for resizing, I can get rid of step eight and pretty much keep everything within iPhoto. I realize that this method is still a little long-winded — if you know of a faster, more efficient way that is both free and uses iPhoto, then by all means, please let me know (and no, iPhoto's built-in "Web Page" export and the BetterHTMLExport plugin are not options). Come to think of it, I'm not sure that there is a better solution given the way that I present the pictures on my site, but I'm certainly open to suggestions either way.

I still need to redo a couple of sets on the photos page where I used iPhoto for resizing the pictures (before it was fixed and before I started using the method outlined above). I was actually in the process of doing this when, by some fortuitous event, I realized that iPhoto was now properly resizing images.

Loving the Alien

July 16, 2004

Sometimes I think I'm scared
Sometimes I know
I feel like making love
Sometimes I don't
I feel like letting go
Maybe not
I feel like giving up
Is all we got

Sometimes is all the time
And never means maybe
Sometimes is all the time

And I'm moving on
And I'm moving on (Sometimes I feel alone)
And I'm moving on
And I'm moving on

Sometimes I make believe
When we're alone
Machines have taken hold
Can you get me to a telephone
It's just the little things
You used to see
Am I still that man who makes you who you want to be

I never noticed
How lovely were the aliens
Lovely were the aliens
I never noticed
Lovely were the aliens
Lovely were the aliens

From Velvet Revolver's Loving the Alien

A wonderful weekend

July 12, 2004

Sara flew out to my place last weekend — she's leaving the states and heading back to Paris sometime early next year and I'm not sure when I'll see her again. We had a great time, but needless to say, parting was incredibly difficult, moreso than we thought it would be. At the risk of getting too personal (which, as of late, I've become reluctant to do on this site), I'm not going to say anything more.

I put up a few pictures from a day we spent in San Francisco. Enjoy. and very large mailboxes

July 08, 2004

It wasn't too long ago that I wrote about moving all of my e-mail over to from myriad applications going back to '99. At that time, and as I mentioned in that post, I sorted the e-mail by year and sent/received. I've since gone the way of some others and removed the year from the equation altogether, so that now there are just two files: sent and received. These are not small files (14,000+ received; 11,500+ sent — not including mailing lists or school-related junk) and has handled them without issue. Not once did it hiccup as I dragged and dropped mailboxes with 3,000+ e-mails into the main received box. In fact, I've yet to have any trouble whatsoever with the large files. The only real difference I've noticed at all is a slow-down in indexing time when you click on a mailbox-- it's trivial but noticeable. I was sold, until...

...I shutdown and brought it back up. It was hosed. At least for a short while. For one thing, it took forever for it to "index" the files in the mailboxes — we're talking over 10 minutes. What is more, nearly half of the e-mail that was marked as spam (more on's weakening spam detection in a later post), which was subsequently sent to the "Junk" folder, had reappeared in my inbox. I could find no rhyme or reason as to why some spams reappeared and others didn't. Given that these spams were now marked as "Not Junk," I had to go back through my inbox and remove all of them — manually — a daunting task when we are talking about almost a month's worth of e-mail (since the last time I shutdown

Given that the only real advantage to using the one-file-for-everything approach is the ability to search all of your e-mail at once (instead of searching through mailboxes by year or whatever other system you've come up with), the benefits no longer outweigh the risks if you're doing this with; not when you face the possibility of having to weed out spam again and/or wait an indordinate amount of time to bring the application back up after prolonged periods of use.

I'm quite confident that Apple will correct these 'problems' in due time and will probably eventually move to the everything-in-one-file method where "virtual" folders are created using labels and whatnot (ala Evolution and now Gmail). Until then, I'm a little uneasy about having all of my eggs in one basket and might move everything back to the year+sent/received structure.

Monitor PageRank with RSS

July 02, 2004

I've just come across a very simple Perl script that allows you to monitor your Google PageRank through an RSS feed. While I don't know why anyone would actually want to monitor such a thing (*cough* you can find my feed here), the idea is still pretty neat and a much better solution than using those "pagerank calculator" sites to check it manually (again, who does that?  :P). I realize that I could get this information through the Google Toolbar, but that requires both Windows (which I don't use) and Internet Explorer (which you couldn't pay me to use; well, maybe if you paid me a lot and I didn't have to actually be connected to the Internet while it was open).

If you are looking to setup a feed for yourself, use this site to calculate the checksum value you'll need (the site linked to in the original article no longer exists and so I had to find another one).

One could obviously take this simple code and port it to many other languages to provide similar solutions (e.g., maybe a shell script that would check for a change every hour and then e-mail you when a change is seen), but RSS is the way to go for me.

Gmail odds and ends

June 29, 2004

I've added a few things (eight to be exact) to the Getting More Out Of Gmail post that I put up a few days ago. I'm mentioning it here because if you aren't subscribed to my RSS feed it's likely that you haven't seen the additions.

Please Stop Requesting Invites

I've been completely inundated with these for the last week or so (we're talking hundreds). Any new Gmail invites I receive will be given out in the order in which I received requests, but like I just said, I've received hundreds and so sending me another would be a futile move. Just trying to save both of us time.

Minor design changes

June 27, 2004

As you can see, I've made a few aesthetic changes to this site. I realize it's nothing too crazy (never is) — hopefully I can get away with describing the design as "simple and elegant" — always a goal. I'd like to discuss a few things that gave me a headache with you-know-which browser and this layout. I'm sure this is old hat for most web designers, but these are problems that I hadn't come across before.

We all know that IE/Win doesn't recognize "dotted" borders, but instead treats them as "dashes." It is because of this that I have always stayed away from the dots — I want the sight to look the same on all browsers (obviously) and IE/Win would screw this up (as is usually the case). I finally gave in to desire and decided to figure out a way around the problem. The first thing I did was create an image 1 pixel high and 3 pixels across. The first pixel was made black and the other two transparent.

I thought I would just tile this horizontally with CSS to create the dotted line and be done with it. Well, as it turned out, that is all that needed to be done for every browser except IE/Win, which made the line 10 pixels high instead of one (yes, even when "height: 1px;" is used; it's completely ignored by IE/Win). There is no explanation for this other than to say that IE/Win is broken as usual. After trying eveything I could possibly think of, I started messing around with the padding and noticed that a top padding of 1 pixel solved the problem in IE/Win without affecting any of the other browsers I used for testing. So, the trick on 1 pixel images in IE/Win is to give them a vertical padding of 1 pixel.

The second thing that had me going crazy trying to fix was the fact that in IE/Win any margin I was adding to the right of my menu div was being doubled. Literally. If I wanted a 10 pixel margin, I would specify 10 pixels and every browser would follow my orders, except for IE/Win, which would make it 20 pixels. I've come to find out that it is a well-known bug and occurs when you are trying to add a margin to the same side as the float direction of the div. The fix is simple enough: just add "display: inline;" to the div. All browsers (including IE/Win) ignore this here, but for whatever reason it corrects IE's doubling of the margin.

A more filling appetizer

June 27, 2004

Mail.appetizer (which I wrote about here) is actually being worked on and a new version is available for download. Yes, I'm surprised too — it's been nearly five months since the initial release and I know most of us had just assumed that this project was dead.

The newest version includes:

  • Resizable notification window to fit your desktop.
  • Custom font for the message body.
  • Displays sender's photo signature (from Address Book or .Mac).
  • Counter showing number of outstanding messages.
  • Shows mailbox name (optionally).
  • Notification for every incoming message (no longer limited to the INBOX)

A Short History of Nearly Everything

June 24, 2004

I put Bill Bryson's A Short History of Nearly Everything on my Amazon wishlist nearly a year ago, but never got a copy of it. A few weeks back I came across the audiobook version and can't stop listening to it (despite the annoying accent of the reader).

It's a great book for those who simply love to learn. While "nearly everything" might be a little too ambitious a title for a book that doesn't reach too far beyond the natural sciences, still I think it's fitting. From the Big Bang to the present, he looks at how our universe and planet evolved (and are still evolving) and how we came to know and understand our world (or not). we went from there being nothing at all to there being something, and then how a little of that something turned into us, and also what happened in between and since.

The book is incredibly engaging and I can't recommend it highly enough.

Getting more out of Gmail

June 19, 2004

UPDATE: Also see Google Hacks (Second Edition) and Hacking Gmail — I was the technical editor on both books.

The large number of Gmail invites that I've given out in the last few days has spawned a lot of dialogue between friends and I on how to do certain things with the service. There are all kinds of neat things popping up for Gmail. Given that I don't use Gmail for anything more than sending invites, my experience and knowledge with these things is somewhat limited, but that doesn't mean I don't have to answer my friends' (and strangers') questions, right? I had half a mind to send all inquiries to Fucking Google It, but I digress.  :)

That said, the following is a collection of programs, sites, and information that will allow you to get more out of Gmail.

Easily Move All of Your Contacts to Gmail

I received quite a few questions from friends wondering if they could import their contacts into Gmail. Unfortunately Gmail doesn't yet offer the option to do this (they will in the future) unless you're running Mac OS X or *nix (see next section), but I've come up with a very simple solution that you can use in the interim.

  1. Send out a single e-mail (preferably one that announces your intention) to all of your contacts from whatever program/site you used before Gmail and make sure you also send it to your Gmail account (or to an account that you forward to Gmail).
  2. After you receive the e-mail through Gmail, open it and choose "Reply to all."
  3. Write something in the e-mail explaining its purpose and send it off.

Gmail automatically adds to your contact list the names and e-mail addresses of the people you e-mail from Gmail, therefore the e-mail you sent in Step 3 should add all of those people to your contact list.

Import Contacts Directly With Mac OS X (and *nix)

Apparently Gmail already offers the option to import contacts directly, but it seems that this is hidden to all browsers except Camino (v0.7 only) on Mac OS X.

Instructions for how to do this on Mac OS X.

I've heard that this method also works for Gecko-based browsers running on *nix (though I'm not sure which versions of which browsers can see the import option).

Helpful/Interesting Sites

  • Gmail Gems — a weblog devoted to Gmail tips and tricks.
  • Gmail for the Troops — a site that looks to give Gmail invites to the troops in Iraq.
  • Gmail 4 Troops - same as above.
  • Gmail Swap — a site where you can trade your invites for almost anything. It should be noted that in the last couple of weeks Google has been tossing out invites left and right and subsequently the 'value' of the invites has effectively been reduced to zero (this goes for selling them on eBay as well). After all, it is (or rather will be) a free service.
  • Gmail Machine — a site that gives away Gmail invites (you have to keep refreshing the page and hope that the "magic" number pops up).
  • GmailForums - as the name implies, a forum to discuss all things Gmail.
  • Most Wanted Gmail Features - a site that allows you to vote on which features you'd most like to see in Gmail (including those that we know Google is already working on but hasn't yet released). If there is a feature you'd like to see that isn't already on the list of things you can vote for, let him know.

Helpful Programs

  • Gmail API - There are two distinct components here: an open source Gmail API written for the .NET framework, and a proof of concept Windows application built on top of that API that provides basic remote Gmail functions.
  • Mbox & Maildir to Gmail Loader (GML) — allows you to import your mbox or Maildir files into Gmail. The only problem I see with this is that it doesn't get the timestamp right — messages will be timestamped with the time that they are received by Gmail (there is presently no way around this). If you're thinking about using this program I would suggest waiting for Google to add this functionality (and it will) so that the timestamps are correct. I don't plan on making this move any time soon, but if I were, I would definitely wait for Google to offer a solution — the idea of e-mailing 13,000+ e-mails, one every two seconds, does not sound very appealing to me. While this program automates the entire process, the practicality of this method has to break down once you go beyond a certain mailbox size. Also, there is still no way to import your sent messages, which, at least for me, are often as important as those that I've received. You can now specify where you want your e-mails sent (i.e., "Inbox" or "Sent Mail").
  • gExodus - a graphical Gmail import utility written in Python.
  • Import Mail from Mac OS X into Gmail — uses the source from the above program along with some AppleScript to allow you to migrate e-mail from your mailboxes to Gmail.
  • Export your Gmail inbox with Python — allows you to export e-mails from your Gmail inbox. Again, this is something that I'd wait for Google to do on their own, but by all accounts it works fine. Like the importers there is still no way to deal with your sent messages.
  • gCount (Mac OS X) — displays the number of unread Gmail messages in the Mac OS X menubar.
  • G-Mailto (Mac OS X) — allows you to associate mailto links with Gmail (instead of a local client).
  • G-Mailto (Windows) — allows you to associate mailto links with Gmail (instead of a local client).
  • Pop Goes the Gmail (Windows) — allows you to retrieve your Gmail e-mail through POP3 clients.
  • GTray (Windows) — an icon in the systray shows the number of unread messages in your Gmail account.
  • GetMail (Windows) — forward your Hotmail e-mail to any address.
  • Transfer files to and from Gmail - a tiny PHP script that allows you to send files to and from Gmail accounts. Very very cool. This is actually something I've been talking about with some of my friends for a while now. It's not going to take too long for more robust and powerful scripts to surface. When Gmail is made available to the public I don't see why one couldn't sign up for an unlimited number of accounts; the accounts could be entered into a script similar to this one, and provide, theoretically, unlimited storage.
  • GmailCompose (Firefox/Mozilla) - browser extension that adds a context-menu link for opening a GMail compose window when clicking on mailto links or when selecting a text e-mail address.
  • Gmail Bookmarklets - all of these are for composing messages in Gmail. Some claim that they are browser-specific, but these usually work across the board.

    Bookmarklet One
    Bookmarklet Two
    Bookmarklet Three
  • libgmail - pure Python binding to provide access to the Gmail service.

Wake up

June 19, 2004

Typical order of things after I crawl out of bed:

  • Check e-mail
  • Check mobile phone for voicemails and SMS messages
  • Check news aggregator (quickly)
  • Check stocks
  • Check referrers
  • Check AdSense
  • Pee
  • Go back to news aggregator and start reading
  • Quickly realize that other, more pertinent things need to be taken care of and news will have to wait

More Gmail

June 17, 2004

Google keeps giving me Gmail invites (36 in the last 72 hours). I currently have three left — e-mail me if you want one.

Want a Gmail invite?

June 14, 2004

I'm giving Gmail invitations to the first six real-life friends who e-mail me asking for one (I'm doing it this way so that I don't get charged with playing favorites  :P). I plan to get a lot of e-mails (much more than I have invites to give), and to be fair, I'll defer to these unfulfilled requests as I get more invites in the future.

How to create a linkblog in Movable Type

June 12, 2004

First off, let me apologize for using the word 'linkblog' — I'm not a fan of it myself and am only using it because it seems that that is what this sort of thing is being called (and if you got here from Google then I chose the right word   :P).

I'm going to start by going over two solutions that I didn't choose to implement, but that might be of some use to you, and then I'll explain the method I came up with, which is easy to setup and use.

The Easiest Method

The first thing that came to mind when I decided that I wanted to do this was to simply create a category in my current Movable Type weblog. To post a new link you would just create a new post in your current weblog and put it into the new category. The code to list the latest links would be very similar to the code you already use to display your weblog entries, except that you'd limit the output to "link" entries through the use of category tags.

This is all well and good and I'd imagine that most people would be fine with this solution, but I had a couple of problems with it. The biggest problem for me was that these tiny, one-line posts would be interlaced with the regular posts (on my end) — I wanted to keep the linkblog completely separate from my normal posts. Just my preference. The other thing that bothered me was the "Post Status" option. For my regular entries I like the default "Post Status" set to "Draft," but for the linkblog I wanted it set to "Publish" — there is no way to set this variable based on the category of the post. Again, this might not bother you.

The Worst Method

The first thing I did after deciding that I was going to create a linkblog was to look for a Movable Type plugin that already did what I looked to do. After being unable to find one, I thought to create another weblog inside my MT installation and then just reference the second weblog from my first (main) weblog. This is not possible in MT! What the hell? Naturally, I immediately went looking for a plugin that would allow me to call other weblogs from my main one. I ran across David Rayne's MTOtherBlog plugin. A good idea to be sure, but for it to work, one must rebuild their entire weblog. For example, you'd place the MTOtherBlog call in a template where you wanted information from another weblog to be inserted. Then, you'd add a link to your new linkblog. Now, while the change has been made in your linkblog, it won't show up on your main weblog until you rebuild the template where the MTOtherBlog call resides — you have to manually rebuild all the pages that reference the linkblog (in my case, every page on my site) each time you add a new link!

Enter pingToRebuild.cgi, which automatically rebuilds a Movable Type weblog (i.e., you'd setup your linkblog to run pingToRebuild each time you add a link). While this obviates the annoyance of constant manual rebuilding, the fact remains that you're still left to rebuild each and every time you add a link. I find this unacceptable. You might not.

My Method

This method lets you keep the links in a separate weblog and doesn't require you to rebuild each time you add a link. Keep in mind that the following is my specific setup; there are a lot of things you can play around with and add depending on your needs. The basic idea is that each time you add a new link to the linkblog, a text file is written with the new link and loaded into any page you wish through PHP. It's very simple.

The first thing I did was create another weblog within my current installation of Movable Type. I decided that the link's title would be set by the MTEntryTitle tag and the URI set by the MTEntryBody tag. You could obviously use any of the other variables as you see fit (e.g., you could add a brief description of each link through the MTEntryExcerpt tag, etc). After realizing which tags would be used and for what purpose, I created a new template and named its "Output File" "linked-list.txt." The entire template is shown below:

<MTEntries lastn="15">
<a href="<$MTEntryBody$>"><$MTEntryTitle$></a>

That's it. The new link is wrapped in markup and "linked-list.txt" is written. As explained above, the title of the post is the title of the link, and the body of the post is the URI itself.

Finally, to pull this file into another template (e.g., your main weblog template), you simply need to add one line of PHP wherever you want the file's contents to be inserted.

<?php include('absolute/path/to/your/file'); ?>

To make the posting of links faster, I took the obvious step of linking a bookmark in my browser to the "New Entry" page of the linkblog. After I read an article that I want to add to the linkblog, I copy the URI, hit the bookmark button, put whatever title I want into the title field, paste the link into the body field, and press "Publish." Done.


June 11, 2004

I've put it off for as long as possible and have finally added a 'linkblog' to this site (see "Bits" in the menu). The only reason I didn't add this sort of thing sooner (especially after seeing most of the people I read do something similar) is because I was never too sure that I wanted to keep up with it. It then dawned on me that I've been doing this in a roundabout way for many years: I have a notorious habit of e-mailing links to any of my friends who might find them remotely interesting and have even gone so far as to create 11 different e-mail 'groups' to more easily allow me to send the link to those that would find it pertinent. The new 'linkblog' will allow me to do the same, but in an easier, faster, and more accessible way (i.e., available to anyone that reads this site, not just the people I e-mail). It will also act as a bookmark repository for myself. I should mention that below the list of "Bits" you can find an RSS feed for the links.

I'm going to do a write-up sometime soon (later today or tomorrow) on how to create a 'linkblog' in Movable Type. My solution is really simple and adding a new link is mindless after you get it up and running.

About The Minor Design Changes

I keep flip-flopping on whether I want the menu on the left or the right, so I'm not sure which side it will be on when you read this post. As much as I loved the previous menu (simple, simple, simple), the menu column needed to be widened to accommodate the "Bits" section. The previous menu was on the left and the text was right-aligned, but this posed a problem when I widened the column because the space between the menu text and the left edge of the container became too great and it visually offset the page. I played around with a lot of different layouts, including a horizontal menu (as I've used in the past), but I really like the dual-column menu that you see now and I think I'm going to stick with it. To make the columns equal (four links in each), I removed the search link and placed the option below the menu. I'm not sure it will stay there.

I'll be making slight tweaks for the next couple of days (font sizes/types/colors, column widths, etc.), but I doubt I'll deviate too much from this layout.