Skip to content
Follow chrisiona on Twitter

Recent Articles

26
Oct

Latest build of BigCommerce, now available

The team at BigCommerce have released the newest version of their e-commerce software, with almost 100 new features, bug fixes and enhancements.

You can catch their blog post which has release notes here:

http://www.bigcommerce.com/ecommerce-blog/newest-build-of-bigcommerce-released/

22
Sep

Keeping it Agile at BigCommerce

Today see’s the release of an article I wrote about why, and how we use Agile methodologies at BigCommerce, to keep on top of the challenges of being a SaaS company. I think it’s worth the read.

http://www.bigcommerce.com/ecommerce-blog/keeping-it-agile-at-bigcommerce/

11
Aug

Creative Work Cultures

ReadWriteStart have an interesting article (with 6 key points) on “Developing a Creative Work Culture“, worth the read.

11
Jun

Installing Zend Server 5.3 on Ubuntu 10.04

Zend Server is the commercial platform for PHP web applications. It’s an Apache/PHP stack that can be installed on Linux and Windows, with a free Community Edition also available for OSX. There are many many good reasons for running the commercial stack over the open source packages (also developed by Zend), but I won’t go into that detail here.

Today, I’m installing the Zend Server package to evaluate the Code Tracing and Replay functionality between the Zend Server and the Zend Studio IDE – a very powerful feature set if it does what the marketing material promotes.

So here’s the process that I went through:-

1/ Download Ubuntu 10.04, and create a new empty VMWare image
2/ Install Ubuntu into the new VMWare image
3/ Upon successful installation of Ubuntu, ran update manager
4/ Restarted Ubuntu
5/ Download Zend Server (Login to zend.com required)

6/ Follow the installation guide, which essentially states to run install_zs.sh, which yielded dependency issues

The following packages have unmet dependencies:
  php-5.3-mysqli-zend-server: Depends: libmysqlclient15off (>= 5.0.27-1) which is a virtual package.
  php-5.3-pdo-mysql-zend-server: Depends: libmysqlclient15off (>= 5.0.27-1) which is a virtual package.
  php-5.3-mysql-zend-server: Depends: libmysqlclient15off (>= 5.0.27-1) which is a virtual package.

7/ Install the libmysqlclient15off package ( http://packages.ubuntu.com/karmic/libmysqlclient15off )
8/ Re-ran the Zend Server Install Script “./install_zs.sh 5.3″

That’s it – aside from the libmysqlclient15off gotchya with Ubuntu 10.04, it was very simple to install and configure. One of the great advantages of a stack solution. I’m off to evaluate Code Tracing from the IDE!

References:

22
May

Upgrade your jQuery install to 1.4.x

Just a quick reminder to upgrade your jQuery install to the latest build (currently 1.4.2). There are significant gains in both feature set and the framework’s performance.

http://jquery.com/

http://chrisiona.com/2010/01/16/jquery-1-4-released-benchmarked/

25
Jan

HTML5 in All Browsers

Back in 2009, Remy Sharp blogged about HTML5 shiv, and his JavaScript project to “enable” HTML5 elements in Internet Explorer.

Bill Peña (@billpena) has released a great blog post and screencast on NetTuts+.

Make sure you check it out.

17
Jan

Progressive Enhancement + CSS3

The folk at Perishable Press have put together a great guide to Progressive Enhancement and CSS3.

Check it out: http://perishablepress.com/press/2010/01/11/css3-progressive-enhancement-smart-design/

17
Jan

JavaScript: The Singleton Design Pattern

I’m in the process of developing a “Learning Modern JavaScript” section.

The first in the series is the Singleton Pattern.

You can real the full article at:

http://chrisiona.com/learning-modern-javascript/the-singleton-pattern/

16
Jan

jQuery 1.4 released, benchmarked

Introduction

jQuery 1.4 has now been released through the  great work of John Resig and the jQuery Team. This build saw some great new features, and 207 bug fixes. The team spent a log of time refactoring the internals of jQuery itself, resulting in some significant performance gains (always a good thing).

Performance Tests

Interacting with the DOM can be the slowest part of your Web Application, so I’m targeting selectors and lots of DOM manipulations here. Each of these Performance Tests were run under the following conditions:-

  1. The jQuery builds used in these tests were 1.2.6 (“1.2″), 1.3.0 (“1.3″) and 1.4.0 (“1.4″)
  2. Tests were run on a 2.4GHz MacBook Pro with 4GB RAM on 10.5.6 using Safari 4.0.4
  3. Each test was run 5 times, and averaged for the charts

First Test

Firstly, let’s compare a simple recursive call to append() a div to the document body.

$(document).ready( function(){
   for( var i = 0; i<1000; i++ ) {
      $("body").append("<div>" + i + "</div>");
   }
});

As you can see, there are some slight improvements between each of the major releases. Probably not enough to make a notable difference on their own.

jQuery Benchmark 1

Second Test

Secondly, let’s compare a recursive nested call to append() method. This iteration will find the last div in the DOM, and append another div to it 1000 times over! (uses the :last attribute).

$(document).ready( function(){
    for( var i = 0; i<1000; i++ ) {
       $("div:last").append("<div>" + i + "</div>");
    }
});

Interestingly enough, 1.3 takes longer to complete than the 1.2 build. The notable result is that 1.4 blows the previous builds out of the water.

jQuery Benchmark 2

Third Test

In this test, we have a HTML page with 3,000 nested div’s. The purpose of this test is to set the font colour of all divs to red, but then set the first to blue and the last to green.

$(document).ready( function(){
    $("div").css({color: "red"});
    $("div:first").css({color: "blue"});
    $("div:last").css({color: "green"});
});

As you can see, significant speed gains in 1.4 over the older versions.

jQuery Benchmark 3

Final Test

The final test iterates 3000 times, over code which creates a div, applies some properties, and prepends it to the document body.

for( var i = 0; i<3000; i++ ) {
    $('<div/>').attr("id", "testdiv")
    .css({
        fontSize: "14px",
        border: "1px solid red",
        backgroundColor: "orange"
    })
    .html("This is test content")
    .click( function(){
        alert('Test Div has been clicked!');
    })
    .prependTo("body");
}

1.4 is certainly the fastest of the three, clearly showing off.

jQuery Benchmark 4

However, there is a new capability in 1.4. It now allows you to pass attributes to the jQuery() object

for( var i = 0; i<3000; i++ ) {
    $('<div/>', {
            id: "testdiv",
            css: {
            fontSize: "14px",
            border: "1px solid red",
            backgroundColor: "orange"
        },
        html: "This is test content",
        click: function(){ alert('Test Div has been clicked!'); }
    }).prependTo("body");
}

The result of the new capability is represented as the orange bar. It’s marginally more expensive to complete, but certainly improves code maintainability.

jQuery Benchmark 5

Using Google’s (quick) Edge Cache Servers

<!-- Include jQuery 1.4 -->

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>

1.4 Gotchyas

  • When calling jQuery() with no arguments, it no longer converts it to jQuery(document).
  • The add() method now merges and sorts the results
  • Incoming JSON data must be correct. jQuery now throws an exception if it receives malformed JSON data.
  • For the full list of changes in 1.4, visit the jQuery API site

Related Links

10
Jan
At Dodgers Stadium, LA

I'm a user experience junkie

I was reading an article on news.com.au and it got me thinking. Why do I enjoy Apple products as much as I do?

Well I think it comes down to delivering an exceptional user experience, and you can’t do that unless you control as many aspects of the product as possible. In Apple’s case, that means iTunes, their App Store, the operating system and building their own hardware.

Yes, it can be annoying and get expensive, but for those with an appreciation for exceptional user experiences it is worth it. It seems that Google have come to the same conclusion and delivered the Nexus One, a product that IMHO is the closest thing to an iPhone competitor.

Calling me a “sheep” because I have an iPhone and would consider an Apple Tablet annoys me, a lot – I want an exceptional product & experience, and I trust Apple can deliver it. That doesn’t make me a fan boy – it makes me a “User experience junkie”.

Now, I quite like Windows 7 and thank the stars that Microsoft has been able to deliver a great OS once again. But the issue as I see it is that Microsoft have to many hardware partners, and cannot tightly couple their software to any of them. That means Win7 (albeit good) is more ‘generic’ than the fruit company’s operating system. It also means that one bad product from a hardware partner can be detrimental to the future experience and overall opinion of its software.

I work in software, and use a mac everyday – it’s my OS of choice. But even with a pretty & stable Windows 7, I think I will still stay with my mac. It’s earnt my trust.

The xbox 360 is Microsoft’s flag ship, and when Natal comes out it will set the tone for the gaming industry. It is an exceptional product, with an exceptional user experience.

Working to my point just nicely, Microsoft control every core aspect of this exceptional xbox product.

Q.E.D :)