Blog

The worse purchase form ever

Anger!

Okay, so maybe I’m being a bit melodramatic or maybe I’m just a bit stressed out. I had previously talked about how website purchase forms that require you to enter a credit card number in a specific format (e.g., no spaces) were poorly designed since most people don’t deal with large groups of numbers very well. Furthermore, it’s trivial to format the number server-side, so why require the user to? Well, today, I ran into a form that not only required you to enter all of the numbers without spaces, but also punished you if you did not.

A bit of background

I am a member of the IEEE. They’re a great organization, and I find some of their publications such as IEEE Spectrum to be fairly interesting. You also sort of need to be a member if you want to publish anything in the field (I did two summers of research while in university), and since I’m an Electrical Engineer, I feel that I need to be part of the largest organization dealing with the field.

So, when a renewal notice arrived in my mail recently, I didn’t hesitate to pay my dues to remain a member. (Well, actually, it sat on my desk for a week before I did anything, but my procrastination is another topic) I thought that renewal would be painless process; it started out great, because as soon as I logged into the site, there was a big button/link for renewing. Clicking it added a “Renewal” item to my cart.

Checkout, or, things take a turn for the worse

Clicking “Checkout”, I thought I’d just have to enter my CC number and a few details, and things would be done. After all, I’ve ordered a ton of stuff online and have never really had a problem. That was, until I encountered the payment form from hell. Just how bad was it? Well…

Continued

Using Assembla’s Trac with Eclipse Mylyn XML-RPC access

I recently found out about Assembla, an awesome service for managing software development projects. It provides free SVN hosting (like other sites such as SourceForge and Google Code) but also provides tools like Trac, a Wiki, Scrum reporting, public or private access and up to 500 MB of disk space. (Additional features/space are available for a cost) For many, setting up services like Trac can be notoriously difficult, so with free services like this, it’s hard to find any nits to pick.

I won’t go into too much detail about the features since I wanted to talk about integrating the Eclipse plugin Mylyn with a Trac setup on Assembla. There can be some issues getting things to work so I’ve outlined what I did to get everything running nicely.

Assembla has come out with what appears to be their own Mylyn connector for Eclipse, which simplifies a lot of the configuration required. It’s available at their site along with a great tutorial on how to use it.

Continued

Sun acquires MySQL for $1 billion USD

There was some unexpected news this morning when Sun announced plans to acquire MySQL. (Offhand remark: What is up with that handshake?!?) Though rumours of a MySQL IPO had surfaced and re-surfaced throughout last year, this was quite a shock to me, and apparently many others. The price – $1 billion USD – had no small part in this surprise. Indeed, when you consider that their main software product is open source, some may question the valuation.

Software is only a piece of the puzzle Continued

Passing the 100,000 mark

This week, Akismet reported that it had blocked its 100,000th spam comment on my site/blog. While that’s not a remarkable number, in light of how little traffic my site gets that figure becomes somewhat more significant. Since this site has only been around for just over one and a half years (19 months), that works out to roughly 5200 spam comments every month, or a little over 1300 every week. Note that the current averages are actually much higher since in the beginning I got a lot less spam before the bots discovered my site.

Props definitely go out to Automattic for creating such a reliable and accurate service. When I first wrote about it over a year ago, I was very impressed with its precise filtering of spam and non-spam (aka ham) comments along with its unobtrusiveness. Akismet truly makes spam filtering transparent to the end user, unlike other methods such as CAPTCHAs. Continued

Using the “call” and “apply” methods to change the context of a function in JavaScript

In JavaScript, the context that function is executing in is very important. What is context? Basically, the context of a function is what object it is “attached” to – this object will be the reference of the “this” keyword within that function. Every function has a context -that is to say, every function is attached to an object. By default it is the window object.

You may have run into this particular aspect of JavaScript when working with event handlers. For example:

function alertId()
{
  alert (this.id);
}

document.getElementById('someId').onclick = alertId;

This will return the “id” attribute of the element that the function has been attached to. You could attach the same function to multiple objects and each time you called it on a different object, it would return a different value, since the context is different. (Minor note: using element.attachEvent(), as part of the Microsoft event handler model, does not change the context of the function so “this” will still refer to the window object)

However, there may be times when you want to change the meaning of this without actually having to attach that a function to an object. Using the call() and apply() methods of the Function object can allow you to do this.

Continued

The “Canadian” DMCA bill

antidmca.jpg

There’s been lots of news lately about the Federal Government’s plan to table new copyright legislation. Though current information about the proposed bill appears to be hearsay and quoted from unnamed sources, all signs point towards the new laws being akin to the DMCA in the US. The DMCA, widely seen to be benefiting corporations in lieu of protecting consumers, is relatively unpopular and it has also been argued that it’s being used to stifle innovation.

Copyright reform in Canada is coming – that much was no surprise. What does surprise me is how the bill was rumoured to have been written – under pressure from both Canadian and US-based industry advocacy groups, both pushing for DMCA-style reforms that will undoubtedly benefit the companies associated with them. I have always been wary of excessive corporate influence in governmental affairs, but am especially disturbed by some of the provisions supposedly in the bill.

Continued

The Sansa Express MP3 player decision

Shiny

I recently bought a Sansa Express 2 GB MP3 player as a replacement for my old but trusty Creative MuVo TX FM, which I got back in January 2005. Back then, 512 MB was enough, but fast forward to 2007 and 512 MB is now paltry and unacceptable – I have more storage in my mobile phone by way of a microSD card. So, it was clear that I needed a replacement player. But with the market even more saturated now with MP3 players than it was back in 2005, making a choice was difficult, especially for me since I have a habit of researching everything to death. Here are some of the considerations I took into account in my search for something that would fit my needs.

Continued

Super Mario Galaxy!

Super Mario Galaxy!

Aside from Wii Sports, the first “killer title” for Wii may be Super Mario Galaxy – it’s definitely the title to have for Wii this holiday season, and is sold out at many stores. I managed to snag a copy off eBay, and it finally arrived today! Continued

Exception handling in JavaScript

Exception handling is a topic that may not be well-understood by some web developers, depending on what languages they have the most experience in. In particular, PHP, one of the most common server-side languages for web development, did not have support for exception handling until version 5. In the four years between the release of PHP4 and PHP5, the language became increasingly popular among developers, and as a result, a lot of code was written without exception handling in mind. The situation did not even improve much with the release of PHP5, since PHP5 was meant to be backwards-compatible with code developed for PHP4. Three years later, there are still movements to get developers to transition to a purely-PHP5 model.

Some of this may have transferred over to JavaScript, a language that is already poorly understood and often implemented even worse. It is often hard to find well-written, maintainable JavaScript code, as it is often left as an afterthought in a project or otherwise not given much consideration, having been delegated to the realm of popup scripts and mouse-overs. While exception handling may be overkill for a lot of JavaScript applications, many do not even know of JavaScript’s exception-handling capabilities. In this article, I’ll give a brief overview of exception handling and some recommendations on how to use it in JavaScript to improve the readability of code.

Continued

Going mobile

Connected!

I finally caved and got a mobile/cellphone after years of seeing pretty much everyone around me, from grandmas to infants, use the devilish things. What prompted my conversion? Well, the main reason I never bought into one before was my fear of contracts – it seems that to get a decent price on a cellphone, you have to sign into a three-year contract, with the threat of huge cancellation fees should you decide that the service isn’t for you. I never really liked that and more importantly, didn’t really need a mobile phone in the first place, so paying all this extra cash just didn’t make sense.

Continued

View all entries by month or by category