By bounce, I am referring to bounce rate. A bounce is recorded when a visitor views only one page of your site during the visit. As someone who runs a blog, I strive to make my content coherent (ie. my blog contains a lot of programming and technology content) so that it appeals to a certain audience. A good indicator of whether my blog is coherent is if people view more than one page per visit on average, or if I have a low bounce rate.
People usually find my blog through search, and so they land directly on a post (instead of the front page). Likewise, when my blog get Stumbled, the landing page is always a post. When visitors finish reading that post, ideally they’d take a look around to find more of the same content. With that in mind, would the bounce rate of visitors from Google and StumbleUpon be the same? Here is my referral data from the last two months (July 1st - Sept 11th):

As you can see, the bounce rate from StumbleUpon visitors is very low compared to visitors from my other top referrals.
My conclusion (well, it’s more or less an assumption, but an educated one) is that the StumbleUpon Interests selection works very well to channel interested readers to your content. It’s not a bad bet that users who go through the entire process of signing up to StumbleUpon, installing the tool bar, and setting up their interests must really be passionate about the selected topics.
That or they have a lot of time to kill, which, admittedly, is something that StumbleUpon also does very well.
The moral of the story? Tag your Stumbles wisely!
P.S. If you have a blog which gets Stumbled often, post some of your findings on your bounce rate!
New iPod Nano inspiration


When I see search boxes I am often wondering which search parameters to enter. Am I searching for users of this site, or searching for content?
In comes help tips to the rescue! Help text placeholders are used often on search text boxes, but also on inputs which ask for a URL (eg. to remind users to prefix the link with http://).

or:

Here’s an simple function to do this using JavaScript:
1 2 3 4 5 6 7 8 9 10 | function ToggleDefaultHelpText(obj, helptext, isFocus) { var curr = obj.value.replace(/^\s+|\s+$/g, '') ; // trim the text box's value var isEmpty = (curr.length < 1 || curr == helptext); obj.style.color = (isFocus) ? "#000000" : (isEmpty) ? "#999999" : "#000000"; if (isFocus) obj.value = (isEmpty) ? "" : curr; else obj.value = (isEmpty) ? helptext : curr; } |
You will want your text box’s default state to be the same as the blur state, so execute the function with isFocus = false.
1 2 | <input type="text" id="myTextBox" onfocus="javascript:ToggleDefaultHelpText(this, 'search user or tag', true);" /> ToggleDefaultHelpText(document.getElementById("myTextBox"), "search user or tag", false); |
The better way to do this is to programmatically attach this function to the onfocus and onblur events of your text input. If you’re using MooTools it’ll be clean and simple - the above code turns into something much neater:
1 2 3 4 | <input type="text" id="myTextBox" /> $('myTextBox').addEvent('focus', function() { ToggleDefaultHelpText($('myTextBox'), 'search user or tag', true); }); $('myTextBox').addEvent('blur', function() { ToggleDefaultHelpText($('myTextBox'), 'search user or tag', false); }); $('myTextBox').fireEvent('blur'); // execute the onblur function to initiate this text box |
Hope this helps you to help your users.
It has been an obssession of mine to reboot routers on a routine basis. I’m not sure why I do it, but it makes me believe that the router is kept “fresh” and will continue to perform optimally. Maybe I am just used to running Windows (where you will need to reboot the machine every once in a while).
Anyways, I wrote hacked together a simple AppleScript (note: this is my first AppleScript ever written) which simulates menu clicks in the AirPort Utility to restart my Time Capsule. The script doesn’t choose which Apple wireless device to restart, as I only have one - the Time Capsule. If you want to use the script and you have multiple wireless base stations (eg. an AirPort Express), you may have to modify the script to choose which one to manipulate.
Here is the simple AppleScript:
tell application "AirPort Utility" activate end tell tell application "System Events" delay 10 click menu item "Manual Setup" of menu "Base Station" of menu bar 1 of process "AirPort Utility" delay 5 click menu item 6 of menu "Base Station" of menu bar 1 of process "AirPort Utility" delay 5 click menu item "Close" of menu "File" of menu bar 1 of process "AirPort Utility" end tell
With this script saved, I scheduled it to run automatically every week. Of course you can use cron and set this script as a scheduled job, but why do that when you can use iCal? Here’s a thousand words on how to set the script to run automatically:

You may never have a need to restart your Time Capsule automatically, but if you do, this should give you a starting point on how to go about doing that.
One of the things I love doing on my iPhone is to capture and share candid moments in my life. And there’s probably no better way to broadcast novel messages than with Twitter.
There are a lot of ways of getting pictures on Twitter with the iPhone, and I’ll list several here. Each of the methods I’ve tried have their pros and cons, and I’m uploading via 3G, and not wifi.
1. Twitterific
The first method is via the app Twitterific (free ad-supported version, downloaded from app store). To attach an image onto a tweet, simply press the “camera” icon, and you will have the option of taking a picture. The image upload doesn’t take too long (around 15-20 seconds). Here’s a screenshot of the image quality:
To date, all of my images uploaded this way have been rotated sideways. The image quality is average but still very decent.
2. Twittelator
Twittelator is another iPhone app found in the App Store. Like Twitterific, it is free, but does not have any ads. The camera icon makes a familiar return in the create tweet screen in Twittelator, and pressing on it will give you the option of selecting a picture to upload or taking a new picture. The image upload time was very fast. Here’s a screenshot of an uploaded image:
Here, the image has been cropped, and that some of it has been cut off. This image size isn’t acceptable for me as it’s hard to tell which parts will be cropped when you’re taking and uploading a picture in the wild.
3. Email picture to TwitPic
The third method doesn’t require an app - just a setting on TwitPic. Goto the TwitPic website and login with your Twitter credentials and you should see some new options in the top navigation. Enter the settings screen and you will get to see your private email address for uploading images to TwitPic. I’m going to assume everyone knows how to email photos from the iPhone, and there doesn’t need to be text in the body to upload your photo. The subject line of the email becomes your tweet, and your post will appear in Twitter anywhere between 1-5 minutes. Uploading an image with this method on 3G takes quite a while (30 seconds to 1 minute), and you’ll probably want to refrain from doing anything which might stop the uploading. Here’s a screenshot of the uploaded image:
The long upload time is offset by the great image quality and (relatively) high resolution of the picture.
For the most part, Twitterific has the best balance between upload time and image quality. The rotated picture is definitely a setback, but I’m sure Iconfactory will look into that issue. Emailing to TwitPic directly is probably the best way to go if you want quality, and currently that is my method of choice for uploading images to Twitter.
Update: July 27
I’ve recently started using Posterous as an alternative to emailing to TwitPic directly. Posterous is basically a blog you update via email, and any media attached to the email message gets embedded into your post. Although Posterous is a standalone (micro) blogging platform, it does integrate with Twitter, and any posts you create in Posterous gets tweeted. I’ll spare you any of the signup details (as it’s actually quick and quite painless), and go right into the image quality.
Mousing over the file will give the above tool tip, letting users know that they can view the full size of that image. Of course, the “full size” is the shrunken down version of the original, done automatically by the iPhone Mail.app, but it’s still nice to be able to get an even larger image. Image upload time was decent, from around 25-35 seconds on 3G. As a bonus, Posterous sends you an email when the upload is complete, letting you know if the upload was successful. Great feature for Roger’s quirky 3G network (though some people might find confirmation emails annoying).
I was a loyal fan of uploading images directly to TwitPic, but as it stands, Posterous is slightly faster and offers a few nicer features, and leaves me wondering if there’s a need to use Twitter clients to send pictures at all.
The Lazy Blogger’s Post
Are you a lazy blogger? Here’s a tool to generate a freebie blog post for you, which doubles as an excuse to explain your inactivity!
Here’s what I generated by randomly selecting the dropdowns:
Holy crap! I just woke up to the fact I have not updated this since 1999… You would not believe how much it’s costing me. My bad.
I am tied up with discovering time doesn’t stand still, choosing my retirement village, just generally being a parent to the secret service, my day pisses me off from 8am to till I fall into bed at midnight. I am smitten. But who cares.
I absolutely, positively promise that when the weather turns bad, I will blog more often. If you have kids. No Joke!
The Lazy Blogger’s Post Generator [aussiebloggers.com.au]
Frequent readers of my blog will have noticed by now that something’s different. I’ve had my old blog design for about a year and a half, and for the last six months, the look of it was really bothering me.
In short, my old blog looked like a cheap suit - very grey with too many noisy bits (pinstripe background seals the “suit” analogy).
I decided to reduce all the clutter by choosing a minimalistic layout, and the base theme is one by Codreanu Catalin. The colors come from the SNES controller (and the Earthbound menu).
Hopefully now the content takes precendence without obtrusive layout getting in the way.
Getting the 3G iPhone with Rogers
The last time I called into any of the Rogers customer service lines was about 2.5 years ago, to check my account status. That was long enough for me to forget why I don’t like calling in for help: the Roger’s “priority queue”. Regardless, I dialed in today to inquire about the new iPhone, and if I could take advantage of the $30 6GB data plan.
After about twenty minutes of holding (in the queue of priority), I finally got a hold of a representative in the Cancellations department. I decided to play hardball with Rogers to see if I could get a retention plan to offset some of the hefty costs for the phone, and I fully expected resistance on their side. After about fifteen minutes with the customer service rep, I walked away with a great plan and a lot of savings. I was really surprised at how that happened, but they mentioned that I was a “top tier” customer who generates lots of revenue for them. They got me to sign with them for another 3 years, but I was going to do that for the subsidy on the phone anyways.
The voice plan they offered me comes to $20 per month, and comes with:
- 300 daytime minutes
- Evenings and weekends starting at 6pm
- Call display
I also added the $30 for 6GB of data for the iPhone, and purchased the 8GB iPhone for $249. There is also a $35 “manufacturer” fee for the phone, but to compensate for that, the service rep waved my first month’s voice fees. They are going to UPS express the phone to me, which should arrive in two business days.
All in all I am very satisfied with this phone plan, which totals to $50 a month before systems access fee, 911-fee and taxes. It’s still not the best but it is definitely better than what some of my (Canadian) friends are paying. I’m not suggesting that everyone should call into Rogers and play hardball, but do find out what your loyalty is worth, and perhaps you might walk away with a fair cell phone plan.
Original post (June 24, 2008):
A quick search for myself reveals that I’ve been taken off the Google index (do a quick search for “david chan blog”), and I might know why. My guess would be that my Twitter Friend’s links appeared to be “spam” to Google’s crawlers. I’ve heard of people being penalized for link spamming, though that was not my intention at all.
My Twitter blog digest posts will be disabled until further investigation.
Update (July 7, 2008):
After investigating and confirming that I’ve been black-listed by Google, I have sent off a notice of reconsideration. Will update again when reply comes. Stay tuned - it’s going to take several weeks.

Update 2 (evening July 7, 2008):
Within about 12 hours of my Google index reconsideration submission, it appears I have regained my old positions for some search terms. I’ll need to do more checking to make sure that all my old posts have been indexed.
If anyone else runs into this problem, I would be more than happy to guide them through the reconsideration process.
I could be the last person to find out about the ‘SYLK’ issue with loading CSVs in Excel, but the good thing about that is there are plenty of answers out there as to why it happens.
My current project has a “download database data to CSV” feature, and every database table starts with “ID” as the first column. Generating CSV files with headers would give something like this:
"ID", .... 1, .... 2, ....
A quick search on Google gave me this page, with a very blunt answer as to why it happens:
Because the Excel programmers are sloppy. A valid SYLK file begins
with ‘ID;’ or ‘ID’ alone on a line.Sometimes Excel incorrectly says ‘SYLK: file format is not valid.’.
When you try to open a text file that begins with, say, ‘ID’ and a tab,
it could not possibly be a valid SYLK file, but Excel claims it thought
it was, to no avail.Simply rename ‘ID’ to ‘Ident’ or ‘Id’ or something similar.
Changing “ID” to “Id” fixed the problem, and my CSV files opened in Excel correctly. Now hopefully no one else gets tricked by this Easter Egg Microsoft left for us.



