Blog

Acer Aspire One Unboxing - Canadian Version

I finally received my much-awaited Acer Aspire One this week and have been enjoying it ever since. I ordered the 1 GB/120 GB HDD/Windows XP Home edition from DirectCanada.com last Friday (an online store that is most likely a front for NCIX.com, which I’ve also ordered from) and the package arrived on Monday - this was with the free shipping option!

Keyboard is close to full-size for most keys

I’m still forming my final opinion of the device but my initial impression was very positive - I don’t have any major complaints. The device is well-designed, stylish, easy-to-use and very snappy. The 1.6 GHz Intel Atom N270 that powers the laptop is more than enough for the things you’ll the Aspire One - and it supports hyper-threading and so shows up as “two” cores in Windows.

The Canadian Keyboard

The one downside to the Aspire One that is specific to the Canadian version is the inclusion of a “bilingual” keyboard layout. Apparently, it is required(?) that laptop vendors sell a version of the laptop with this layout in the Canadian market, so many laptop vendors are just switching completely over to this layout for their Canadian versions in order to simplify things and not have to deal with multiple models. This keyboard layout differs from a standard “US” keyboard layout in two ways:

  • The left-shift is shortened to half-size and a pipe/backslash key is placed to the right of it, between the left-shift and the ‘Z’ key.
  • The enter key is not on a single row, but is instead an inverted L-shape. Another pipe/backslash key is placed to the left of it, in between the enter key and the quote (”) key. Thus, the pipe/backslash key is moved down from the “QWERTY” row to the “ASDF” row.

This is an absurd layout and probably no one more than I hates it; it makes no sense that a “bilingual” layout would require such a ridiculous change. However, after typing on it for a bit, it becomes apparent that it’s not that horrible. The biggest problem is the poor positioning of the backslash key, which makes typing Windows-style pathnames difficult. The extra key near the left-shift can hopefully be remapped using the registry editor or some helpful utilities.

Photos

Expect a full review in the future. In the meantime, check out of some of the unboxing photos below or see the full set in my Zooomr photostream.

Continued

The effect of heat on exercise

Heat: Everyone knows that when there’s too much of it, things can get very uncomfortable, especially if there’s an accompanying high humidity. However, a high temperature is also something that needs to be considered if you are training under these conditions. Besides the general notions to drink plenty of fluids and stay hydrated, excessive temperatures can also adversely affect your performance, so any benchmarks or goals you set for yourself need to be adjusted depending on the conditions.

Take, for example, the route that I have been running for the past several weeks. During that time, I’ve kept records of my run times along with the conditions that day. (Specifically, the temperature, dew point and relative humidity)

On days where the temperature was above 25C my run times were averaging between 45-46 minutes. On days where the temperature was 20C or lower, average times decreased to around 43 minutes. That’s roughly a 4-6% decrease in time when going from 25C to 20C, or conversely, a 4-7% increase in times when going from 20C or below to 25C or higher.

Continued

Decoding Google Maps Encoded Polylines using PHP

I’ve talked about the Google Maps encoded polyline format before. While there’s some nice utilities for encoding polylines that take the work out of implementing it yourself, I couldn’t find many polyline decoders.

This made it somewhat tedious to decode them, as the only way to get the original list of points was to create a GPolyline and then pull out the points from that object. This is not ideal since the work must always be done on the client side with JavaScript and using Google Maps.

To solve this, I quickly ported the algorithm over to PHP from the JavaScript source. Please feel free to download/modify/use this script.

Continued

Bought a PS3

After discovering that Rock Band for Wii turned out to be a disappointment, I recently decided to sell it off and save up for a Playstation 3, which I bought last week. I also picked up a copy of Rock Band for PS3 and am now playing Rock Band the way it was meant to be played: With downloadable content (DLC), properly-rendered gameplay and character creation. (I actually bought a used copy of just the game and then forked over $100 for the PS2 special edition, taking advantage of the current promotion and saving about $40 after taxes)

Does this mean I’ve lost faith in the Wii? Well, probably not. My disappointment in Rock Band for Wii was not entirely Nintendo’s fault, even if they have acknowledged storage/space issues, since many have pointed out that Harmonix may have cut a few corners by simply porting the PS2 version over to Wii, saving time but perhaps selling short its full capabilities. This point is further underscored by the fact that the upcoming Guitar Hero IV: World Tour, will feature DLC in the Wii version - though perhaps we’ll see if that’s the case when it arrives later this year.

Continued

Protecting SVN metadata folders on a web server

I recently changed my WordPress install over to an SVN checkout in order to get rid of the tedious steps required to upgrade every time a new version is released.

Thankfully, following the well-written guide on the WordPress.org Codex was easy and straightforward - both for changing this existing installation over to SVN and for setting up a new blog for RunTrackr. I now look forward to updates, just so I can relish in the ease of upgrading. :)

SVN is a powerful tool (I use it both at work and for personal projects) and is a great SCM tool for small-to-medium sized projects. The command-line tool is easy to use, and for Windows, the great TortoiseSVN tool can’t be beat. (It integrates nicely with the Windows explorer and is compatible with the Eclipse Subclipse SVN integration plugin) Additionally, the integrated Apache HTTP server lends itself nicely to many web-based applications that not only enable browsing but also form the basis for some remote backup/file-sharing/synchronizing services out there.

One thing you’ll probably want to do after switching WordPress (or any web application) to a SVN checkout is to protect the .svn metadata folders from public access. These folders are used by the Subversion client to keep track of changes and determine what files need to be updated when getting the latest versions. They also contain information about what SVN server you are using - in some cases you don’t want to reveal these details, and in any case it’s always best practice to deny access to anything except for that which you explicitly want to make public.

Doing this is fairly straightforward with Apache. All you need to do is edit your .htaccess file in the root of your web directory. Add an entry like this:

# SVN metadata folder protection.
<IfModule mod_rewrite.c>
  RewriteRule ^(.*/)?\.svn/ - [F,L]
</IfModule>

This works for me, though some have used other regular expressions to accomplish the same task.

Announcing RunTrackr: Create and track running route distances easily!

I’ve just launched RunTrackr. It’s a site where you can create a running route in order to track, among other things, distances. It’s designed to be a tool to aid anyone who runs/jogs a lot, either recreationally or for training. A training log is also provided so that you can easily keep track of your running records and record your progress during training or just to watch your personal improvement.

Here’s a quick overview of what’s possible with RunTrackr as well as what we have in store for the future in terms of improvements to the site.

Adding/Creating a route

Creating a route probably the main reason you’d want to use RunTrackr. By creating a running route, you can measure its distance and keep track of it in your training log every time you run it.

RunTrackr Preview

Plotting a route is very easy; all you need to do is enter your location (Eg. “Belleville, ON”) and then click to add points. Existing points can be dragged around to alter the route. When you’re done, just click “Save Route” to finalize! You can also choose to enter a short description, tag your route with descriptive labels or rate your route’s difficulty.

Later on, I plan to add support for uploading automatically-generated routes/plots from GPS devices like those from Garmin, et al. This will make adding routes even easier for those who have access to such devices.

Continued

I’ve been busy

I haven’t been posting updates or writing as many articles here as I’d like to, and it’s mainly because I’ve been busy putting the final touches on a website I’m about to launch. I don’t want to give away too many details or build too much hype, because frankly it’s not that big of a project and was never intended to be.

However, it was a project that I intended to learn from, and in that regard, I think I’ve succeeded - and that’s really what I want to continue doing for the rest of my life. Furthermore, while the project was an exercise in improving my web and software development skills, the end result will also be something that I will actually use myself - not just some pointless academic exercise. Another nice effect was the experience of seeing a self-directed project come to fruition over the last few months - albeit at a slow rate, usually only several hours per week, but nonetheless I’ve improved my self-discipline as a result.

I will say that you can get somewhat of an idea of what this site will be about by browsing through some of my previous posts. But, that’s all I’m going to say at this point.

The Beatles and Rock Band or Guitar Hero?

With the recent rumours that Beatles representatives met with both the makers of Rock Band and Guitar Hero to discuss the possibility of a Beatles-themed game, I’ve been more than a little excited at the prospects of rocking out to these tunes. (See more coverage at Wired and the original FT article)

Whatever the outcome, it could be a deciding factor in what console (if any) I decide to buy. I’m already feeling the pain of no DLC for the Wii version of Rock Band, which is putting doubts into my mind as to whether I should have bought the Wii version.

Continued

Google Static Maps API key issues

I’ve just starting playing around with the Google Static Maps API as a complement to the regular Google Maps API, which as you probably know, is for JavaScript. The Static Maps API, on the other hand, provides a way to display static map images. This is useful in situations where you just need a non-interactive map and don’t want the overhead of an Ajax/JavaScript-based one.

However, I ran into some minor problems related to the API key usage with the Static Maps. Basically, an API key is tied to a certain domain name so that Google can keep track of your site’s usage. This means that the API key is tied to the domain name of the web site where you’re using the Google Maps API.

Continued

Upgrade jQuery for better Opera support (Or just upgrade Opera)

I ran into a weird problem while testing one of my sites that used jQuery with Opera 9.26. (I happened to be using this older version of Opera because I am lazy to upgrade; I’m still using Firefox 2 despite the successful launch of FF3)

The issue was with an Ajax request I was sending. The return value was an array in JSON form. More specifically, the server was returning something like:

{tag:[{id1:'A',id2:'B'}, {id1:'A',id2:'B'}, {id1:'A',id2:'B'}]}

This was perfectly valid and worked fine in both Firefox and Internet Explorer. However, in Opera 9.26, I got a JavaScript error indicating that the JSON was not valid. It was then that I realized I was using an older version of jQuery, v1.2.2. Upgrading to the latest, 1.2.6 fixed the problem. Strangely, I could not find anything on their bug tracker indicating that such a problem (JSON and Opera) had been fixed.

What was even more interesting was that upgrading to Opera 9.50 also solved the problem independently; that is, things worked fine even with the older version of jQuery. This goes to show the importance of keeping your software up to date and highlights the complicated interactions between different browsers and client-side code in a web application.

View all entries by month or by category