<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<!-- End Wayback Rewrite JS Include -->
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
<title>JavaScriptr - A blog about JavaScript and other web development technologies</title>
<link href="https://www.javascriptr.com/feed/" rel="alternate" title="JavaScriptr latest posts" type="application/rss+xml" />
<link href="https://www.javascriptr.com/comments/feed/" rel="alternate" title="JavaScriptr latest comments" type="application/rss+xml" />
<link href="https://www.javascriptr.com/xmlrpc.php" rel="pingback" />
<link href="https://www.javascriptr.com/2009/09/" rel="archives" title="September 2009" />
<link href="https://www.javascriptr.com/2009/07/" rel="archives" title="July 2009" />
<link href="https://www.javascriptr.com/2009/04/" rel="archives" title="April 2009" />
<link href="https://www.javascriptr.com/2008/06/" rel="archives" title="June 2008" />
<link href="https://www.javascriptr.com/2008/05/" rel="archives" title="May 2008" />
<link href="https://www.javascriptr.com/2008/02/" rel="archives" title="February 2008" />
<link href="https://www.javascriptr.com/2008/01/" rel="archives" title="January 2008" />
<link href="https://www.javascriptr.com/2007/12/" rel="archives" title="December 2007" />
<link href="https://www.javascriptr.com/2007/07/" rel="archives" title="July 2007" />
<link href="https://www.javascriptr.com/2007/06/" rel="archives" title="June 2007" />
<link href="https://www.javascriptr.com/2007/05/" rel="archives" title="May 2007" />
<link href="wp-content/themes/carrington-blog/css/css.php" media="screen" rel="stylesheet" type="text/css"/>
<!--[if lte IE 7]>
		<link rel="stylesheet" href="http://www.javascriptr.com/wp-content/themes/carrington-blog/css/ie.css" type="text/css" media="screen" />
	<![endif]-->
<!--[if lte IE 6]>
		<link rel="stylesheet" href="http://www.javascriptr.com/wp-content/themes/carrington-blog/css/ie6.css" type="text/css" media="screen" />

		<script type="text/javascript" src="http://www.javascriptr.com/wp-content/themes/carrington-blog/js/DD_belatedPNG.js"></script>
		<script type="text/javascript">
			DD_belatedPNG.fix('img, #header, #footer, #header .wrapper, #footer .wrapper, #TB_title, #developer-link a');
		</script>
	<![endif]-->
<link href="wp-content/plugins/wp-syntax/wp-syntax.css" id="wp-syntax-css-css" media="all" rel="stylesheet" type="text/css"/>
<script src="wp-includes/js/jquery/jquery.js" type="text/javascript"></script>
<script src="wp-content/themes/carrington-blog/js/carrington.js" type="text/javascript"></script>
<script src="wp-content/themes/carrington-blog/carrington-core/lightbox/thickbox.js" type="text/javascript"></script>
<link href="https://www.javascriptr.com/xmlrpc.php?rsd" rel="EditURI" title="RSD" type="application/rsd+xml" />
<link href="https://www.javascriptr.com/wp-includes/wlwmanifest.xml" rel="wlwmanifest" type="application/wlwmanifest+xml" />
<meta content="WordPress 3.5" name="generator"/>
<!-- Protected by WP-SpamFree v2.1.0.9 :: JS BEGIN -->
<script src="wp-content/plugins/wp-spamfree/js/wpsf-js.php" type="text/javascript"></script>
<!-- Protected by WP-SpamFree v2.1.0.9 :: JS END -->
<link href="wp-content/themes/carrington-blog/carrington-core/lightbox/css/thickbox.css" media="screen" rel="stylesheet" type="text/css"/>
<script type="text/javascript">
var CFCT_URL = "http://www.javascriptr.com";
var CFCT_AJAX_LOAD = false;
</script>
<script type="text/javascript">
tb_pathToImage = "http://www.javascriptr.com/wp-content/themes/carrington-blog/carrington-core/lightbox/img/loadingAnimation.gif";
jQuery(function($) {
	$("a.thickbox").each(function() {
		var url = $(this).attr("rel");
		var post_id = $(this).parents("div.post").attr("id");
		$(this).attr("href", url).attr("rel", post_id);
	});
});
</script>
<style type="text/css">
html,body,div,span,h1,h2,h3,h4,h5,h6,p,blockquote,a,img,ul,li,form,label,strong,abbr {
    margin:0;
    padding:0;
    border:0;
}
body {
    background:#e9e9e9;
    color:#555;
    font:14px/1.6 Arial, Helvetica, sans-serif;
}
a {
    color:#c63b1e;
    text-decoration:none;
}
a:hover {
    color:#a92f17;
    text-decoration:underline;
}
img {
    max-width:100%;
    height:auto;
    display:block;
}
ul {
    list-style:none;
}
#page {
    width:100%;
}
.lofi,
.accessibility {
    position:absolute;
    left:-9999px;
}
.wrapper {
    width:1140px;
    margin:0 auto;
    position:relative;
}
.clear,
.clearfix:after,
.wrapper:after,
#main .wrapper:after,
#sub-header .wrapper:after {
    content:"";
    display:block;
    clear:both;
}
#header {
    background:#4f535d url('wp-content/themes/carrington-blog/img/header.jpg') center top repeat-x;
    border-bottom:1px solid #262a31;
    box-shadow:inset 0 -35px 60px rgba(0,0,0,.45);
}
#header .wrapper {
    height:114px;
}
#blog-title {
    display:block;
    padding:18px 0 0 0;
    font-size:0;
    line-height:1;
}
#blog-title a {
    color:#fff;
    font:bold 56px/1 Georgia, "Times New Roman", serif;
    letter-spacing:-2px;
    text-shadow:0 1px 0 rgba(0,0,0,.65);
}
#blog-description {
    color:#ececec;
    font-size:18px;
    margin-top:6px;
    text-shadow:0 1px 0 rgba(0,0,0,.45);
}
#sub-header {
    background:#d8d8d8;
    border-top:1px solid rgba(255,255,255,.25);
    border-bottom:1px solid #c6c6c6;
}
#sub-header .wrapper {
    min-height:46px;
}
#all-categories {
    float:left;
    padding-top:13px;
}
#all-categories .nav li {
    float:left;
    margin-right:24px;
}
#all-categories .nav a {
    color:#b32117;
    font-size:15px;
}
#cfct-search {
    float:right;
    margin-top:9px;
}
#cfct-search div {
    display:flex;
    align-items:center;
    gap:8px;
}
#cfct-search-input {
    width:165px;
    height:26px;
    padding:0 8px;
    border:1px solid #a7a7a7;
    background:#f7f7f7;
    color:#555;
    font-size:14px;
}
#cfct-search input[type="submit"],
#cfct-search input[name="submit_button"] {
    height:28px;
    padding:0 12px;
    border:1px solid #9d9d9d;
    background:#fff;
    color:#222;
    cursor:pointer;
    font-size:14px;
}
#main {
    padding:32px 0 30px;
}
#content {
    float:left;
    width:690px;
}
#sidebar {
    float:right;
    width:430px;
}
.post {
    margin-bottom:18px;
}
.entry-title,
.entry-title a {
    color:#3f4d60;
    font:700 32px/1.15 Arial, Helvetica, sans-serif;
    letter-spacing:-.5px;
}
.entry-title {
    margin-bottom:18px;
}
.entry-content p {
    margin:0 0 18px;
    font-size:17px;
    line-height:1.45;
    color:#555c66;
}
.entry-content .aligncenter {
    margin:0 0 24px 0;
}
.entry-content img.aligncenter {
    width:601px;
    max-width:100%;
}
.more-link,
.entry-content a.more-link,
.entry-content .more-link {
    color:#c63b1e;
}
.filed,
.by-line,
.comments-link {
    font-size:15px;
    line-height:1.5;
    margin-bottom:10px;
    color:#6f6f6f;
}
.filed a,
.by-line a {
    color:#c63b1e;
}
.comments-link {
    float:right;
    margin-top:-24px;
    margin-bottom:0;
    color:#6f6f6f;
}
.comments-link span,
.comments-link a {
    padding-left:26px;
    background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='19' height='18' viewBox='0 0 19 18'%3E%3Cpath fill='%23999999' d='M9.5 1C4.81 1 1 4.13 1 8c0 1.74.8 3.33 2.14 4.56L2 17l4.01-2.2c1.05.38 2.23.6 3.49.6C14.19 15.4 18 12.27 18 8S14.19 1 9.5 1zm0 12.8c-1.14 0-2.22-.2-3.17-.56l-.71-.27-2.1 1.15.58-2.25-.49-.46C2.56 10.42 2 9.25 2 8c0-3.31 3.36-6 7.5-6S17 4.69 17 8s-3.36 5.8-7.5 5.8z'/%3E%3C/svg%3E") left center no-repeat;
}
.by-line .author,
.by-line .date {
    display:inline;
}
.by-line .alt-font,
.alt-font,
.tight {
    color:#8e8e8e;
}
.rule {
    position:relative;
    margin:24px 0 28px;
    text-align:center;
}
.rule hr {
    border:0;
    border-top:1px solid #ddd;
}
.rule:after {
    content:"❦";
    position:absolute;
    left:50%;
    top:-11px;
    transform:translateX(-50%);
    background:#e9e9e9;
    color:#c5c5c5;
    padding:0 10px;
    font-size:14px;
}
.pagination {
    padding-top:10px;
    font-size:16px;
}
.pagination .next {
    float:right;
}
.widget {
    background:#efefef;
    border:1px solid #d6d6d6;
    padding:18px 18px 10px;
    margin-bottom:20px;
}
#carrington-subscribe {
    padding-bottom:14px;
}
.widget-title {
    color:#4a5565;
    font:700 20px/1.2 Arial, Helvetica, sans-serif;
    margin-bottom:16px;
}
#carrington-subscribe .feed {
    float:right;
    margin-top:-2px;
}
#primary-sidebar,
#secondary-sidebar {
    width:48%;
}
#primary-sidebar {
    float:left;
}
#secondary-sidebar {
    float:right;
}
.widget ul li,
.xoxo li {
    margin:0 0 9px;
    padding-left:14px;
    position:relative;
    font-size:15px;
    line-height:1.45;
}
.widget ul li:before,
.xoxo li:before {
    content:'›';
    position:absolute;
    left:0;
    top:0;
    color:#8b8b8b;
}
.widget ul li a,
.xoxo li a {
    color:#c63b1e;
}
#carrington-sidebar-ad {
    display:none;
}
#footer {
    padding:22px 0 28px;
    color:#7e7e7e;
    font-size:13px;
}
#generator-link a {
    color:#777;
}
blockquote {
    margin:0 0 18px 24px;
    padding-left:16px;
    border-left:4px solid #d3d3d3;
    color:#666;
}
.wp_syntax {
    overflow:auto;
    margin:0 0 18px;
    border:1px solid #ddd;
    background:#fff;
}
.wp_syntax table {
    width:100%;
    border-collapse:collapse;
}
.wp_syntax td {
    vertical-align:top;
}
.wp_syntax .line_numbers {
    width:38px;
    background:#f3f3f3;
    color:#999;
    text-align:right;
    padding:10px 8px;
}
.wp_syntax .code {
    padding:10px 12px;
}
#text-3 .textwidget {
    font-size:15px;
    color:#666;
}
#text-3 [align="right"] {
    margin-top:8px;
}
@media screen and (max-width: 1180px) {
    .wrapper {
        width:94%;
    }
    #content {
        width:60%;
    }
    #sidebar {
        width:36%;
    }
    .entry-content img.aligncenter {
        width:100%;
    }
}
@media screen and (max-width: 820px) {
    #content,
    #sidebar,
    #primary-sidebar,
    #secondary-sidebar,
    #all-categories,
    #cfct-search {
        float:none;
        width:100%;
    }
    #cfct-search {
        margin:0;
        padding:10px 0 14px;
    }
    #sub-header .wrapper {
        padding:6px 0;
    }
    #all-categories {
        padding-top:8px;
    }
    #sidebar {
        margin-top:28px;
    }
    .comments-link {
        float:none;
        margin:0 0 10px;
    }
    #header .wrapper {
        height:auto;
        padding:18px 0 20px;
    }
    #blog-title a {
        font-size:42px;
    }
    #blog-description {
        font-size:16px;
    }
}
</style>
<style type="text/css">
html,body,div,span,h1,h2,h3,h4,h5,h6,p,blockquote,a,img,ul,li,form,label,strong,abbr {
    margin:0;
    padding:0;
    border:0;
}
body {
    background:#e9e9e9;
    color:#555;
    font:14px/1.6 Arial, Helvetica, sans-serif;
}
a {
    color:#c63b1e;
    text-decoration:none;
}
a:hover {
    color:#a92f17;
    text-decoration:underline;
}
img {
    max-width:100%;
    height:auto;
    display:block;
}
ul {
    list-style:none;
}
#page {
    width:100%;
}
.lofi,
.accessibility {
    position:absolute;
    left:-9999px;
}
.wrapper {
    width:1140px;
    margin:0 auto;
    position:relative;
}
.clear,
.clearfix:after,
.wrapper:after,
#main .wrapper:after,
#sub-header .wrapper:after {
    content:"";
    display:block;
    clear:both;
}
#header {
    background:#4f535d url('wp-content/themes/carrington-blog/img/header.jpg') center top repeat-x;
    border-bottom:1px solid #262a31;
    box-shadow:inset 0 -35px 60px rgba(0,0,0,.45);
}
#header .wrapper {
    height:114px;
}
#blog-title {
    display:block;
    padding:18px 0 0 0;
    font-size:0;
    line-height:1;
}
#blog-title a {
    color:#fff;
    font:bold 56px/1 Georgia, "Times New Roman", serif;
    letter-spacing:-2px;
    text-shadow:0 1px 0 rgba(0,0,0,.65);
}
#blog-description {
    color:#ececec;
    font-size:18px;
    margin-top:6px;
    text-shadow:0 1px 0 rgba(0,0,0,.45);
}
#sub-header {
    background:#d8d8d8;
    border-top:1px solid rgba(255,255,255,.25);
    border-bottom:1px solid #c6c6c6;
}
#sub-header .wrapper {
    min-height:46px;
}
#all-categories {
    float:left;
    padding-top:13px;
}
#all-categories .nav li {
    float:left;
    margin-right:24px;
}
#all-categories .nav a {
    color:#b32117;
    font-size:15px;
}
#cfct-search {
    float:right;
    margin-top:9px;
}
#cfct-search div {
    display:flex;
    align-items:center;
    gap:8px;
}
#cfct-search-input {
    width:165px;
    height:26px;
    padding:0 8px;
    border:1px solid #a7a7a7;
    background:#f7f7f7;
    color:#555;
    font-size:14px;
}
#cfct-search input[type="submit"],
#cfct-search input[name="submit_button"] {
    height:28px;
    padding:0 12px;
    border:1px solid #9d9d9d;
    background:#fff;
    color:#222;
    cursor:pointer;
    font-size:14px;
}
#main {
    padding:32px 0 30px;
}
#content {
    float:left;
    width:690px;
}
#sidebar {
    float:right;
    width:430px;
}
.post {
    margin-bottom:18px;
}
.entry-title,
.entry-title a {
    color:#3f4d60;
    font:700 32px/1.15 Arial, Helvetica, sans-serif;
    letter-spacing:-.5px;
}
.entry-title {
    margin-bottom:18px;
}
.entry-content p {
    margin:0 0 18px;
    font-size:17px;
    line-height:1.45;
    color:#555c66;
}
.entry-content .aligncenter {
    margin:0 0 24px 0;
}
.entry-content img.aligncenter {
    width:601px;
    max-width:100%;
}
.more-link,
.entry-content a.more-link,
.entry-content .more-link {
    color:#c63b1e;
}
.filed,
.by-line,
.comments-link {
    font-size:15px;
    line-height:1.5;
    margin-bottom:10px;
    color:#6f6f6f;
}
.filed a,
.by-line a {
    color:#c63b1e;
}
.comments-link {
    float:right;
    margin-top:-24px;
    margin-bottom:0;
    color:#6f6f6f;
}
.comments-link span,
.comments-link a {
    padding-left:26px;
    background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='19' height='18' viewBox='0 0 19 18'%3E%3Cpath fill='%23999999' d='M9.5 1C4.81 1 1 4.13 1 8c0 1.74.8 3.33 2.14 4.56L2 17l4.01-2.2c1.05.38 2.23.6 3.49.6C14.19 15.4 18 12.27 18 8S14.19 1 9.5 1zm0 12.8c-1.14 0-2.22-.2-3.17-.56l-.71-.27-2.1 1.15.58-2.25-.49-.46C2.56 10.42 2 9.25 2 8c0-3.31 3.36-6 7.5-6S17 4.69 17 8s-3.36 5.8-7.5 5.8z'/%3E%3C/svg%3E") left center no-repeat;
}
.by-line .author,
.by-line .date {
    display:inline;
}
.by-line .alt-font,
.alt-font,
.tight {
    color:#8e8e8e;
}
.rule {
    position:relative;
    margin:24px 0 28px;
    text-align:center;
}
.rule hr {
    border:0;
    border-top:1px solid #ddd;
}
.rule:after {
    content:"❦";
    position:absolute;
    left:50%;
    top:-11px;
    transform:translateX(-50%);
    background:#e9e9e9;
    color:#c5c5c5;
    padding:0 10px;
    font-size:14px;
}
.pagination {
    padding-top:10px;
    font-size:16px;
}
.pagination .next {
    float:right;
}
.widget {
    background:#efefef;
    border:1px solid #d6d6d6;
    padding:18px 18px 10px;
    margin-bottom:20px;
}
#carrington-subscribe {
    padding-bottom:14px;
}
.widget-title {
    color:#4a5565;
    font:700 20px/1.2 Arial, Helvetica, sans-serif;
    margin-bottom:16px;
}
#carrington-subscribe .feed {
    float:right;
    margin-top:-2px;
}
#primary-sidebar,
#secondary-sidebar {
    width:48%;
}
#primary-sidebar {
    float:left;
}
#secondary-sidebar {
    float:right;
}
.widget ul li,
.xoxo li {
    margin:0 0 9px;
    padding-left:14px;
    position:relative;
    font-size:15px;
    line-height:1.45;
}
.widget ul li:before,
.xoxo li:before {
    content:'›';
    position:absolute;
    left:0;
    top:0;
    color:#8b8b8b;
}
.widget ul li a,
.xoxo li a {
    color:#c63b1e;
}
#carrington-sidebar-ad {
    display:none;
}
#footer {
    padding:22px 0 28px;
    color:#7e7e7e;
    font-size:13px;
}
#generator-link a {
    color:#777;
}
blockquote {
    margin:0 0 18px 24px;
    padding-left:16px;
    border-left:4px solid #d3d3d3;
    color:#666;
}
.wp_syntax {
    overflow:auto;
    margin:0 0 18px;
    border:1px solid #ddd;
    background:#fff;
}
.wp_syntax table {
    width:100%;
    border-collapse:collapse;
}
.wp_syntax td {
    vertical-align:top;
}
.wp_syntax .line_numbers {
    width:38px;
    background:#f3f3f3;
    color:#999;
    text-align:right;
    padding:10px 8px;
}
.wp_syntax .code {
    padding:10px 12px;
}
#text-3 .textwidget {
    font-size:15px;
    color:#666;
}
#text-3 [align="right"] {
    margin-top:8px;
}
@media screen and (max-width: 1180px) {
    .wrapper {
        width:94%;
    }
    #content {
        width:60%;
    }
    #sidebar {
        width:36%;
    }
    .entry-content img.aligncenter {
        width:100%;
    }
}
@media screen and (max-width: 820px) {
    #content,
    #sidebar,
    #primary-sidebar,
    #secondary-sidebar,
    #all-categories,
    #cfct-search {
        float:none;
        width:100%;
    }
    #cfct-search {
        margin:0;
        padding:10px 0 14px;
    }
    #sub-header .wrapper {
        padding:6px 0;
    }
    #all-categories {
        padding-top:8px;
    }
    #sidebar {
        margin-top:28px;
    }
    .comments-link {
        float:none;
        margin:0 0 10px;
    }
    #header .wrapper {
        height:auto;
        padding:18px 0 20px;
    }
    #blog-title a {
        font-size:42px;
    }
    #blog-description {
        font-size:16px;
    }
}
</style>
</head>
<body>
<div id="page">
<div id="top"><a class="accessibility" href="index.html">Skip to content</a></div>
<hr class="lofi"/>
<div class="section" id="header">
<div class="wrapper">
<strong id="blog-title"><a href="index.html" rel="home">JavaScriptr</a></strong>
<p id="blog-description">A blog about JavaScript and other web development technologies</p>
</div><!-- .wrapper -->
</div><!-- #header -->
<div class="section" id="sub-header">
<div class="wrapper">
<form action="http://www.javascriptr.com/" id="cfct-search" method="get" onsubmit="location.href=this.action+'search/'+encodeURIComponent(this.s.value).replace(/%20/g, '+'); return false;">
<div>
<input id="cfct-search-input" name="s" size="15" type="text" value=""/>
<input name="submit_button" type="submit" value="Search"/>
</div>
</form> <div id="all-categories">
<ul class="nav clearfix">
<li class="page_item page-item-2"><a href="about/index.html">About</a></li>
<li class="page_item page-item-7"><a href="contact/index.html">Contact</a></li>
</ul>
</div><!-- #list-categories -->
</div><!-- .wrapper -->
</div><!--#sub-header-->
<hr class="lofi"/>
<div class="section" id="main">
<div class="wrapper">
<div id="content">
<div class="post-137 post type-post status-publish format-standard hentry category-conferences category-javascript category-jquery category-resources tag-cambridge tag-conference tag-jquery tag-nerd full" id="post-content-137">
<h1 class="entry-title full-title"><a href="2009/09/20/jquery-conference-09/index.html" rel="bookmark" rev="post-137" title="Permanent link to jQuery Conference ’09">jQuery Conference ’09</a></h1>
<div class="entry-content full-content">
<p><img alt="the main room @ jQuery Conference" class="aligncenter size-large wp-image-150" src="wp-content/uploads/2009/09/jquery_conf-1024x330.jpg" title="the main room @ jQuery Conference" width="500"/></p>
<p>Last weekend I went up to Cambridge, MA for the ’09 jQuery Conference. Two days of great jQuery/JavaScript goodness! I gotta say that was the best conference I’ve been to in awhile.</p>
<p>There were a couple presentations I had to skip but the breakout sessions more then made up for them. All in all I took home some great tips &amp; tricks for. Events like jQuery Conference also highlight how much the industry is shifting toward scalable development and collaboration models. Many of the ideas discussed around performance, architecture, and rapid deployment are now being actively implemented through <a href="https://topdevs.org/services/it-outsourcing">it outsourcing company</a> or IT outsourcing services, where teams distribute workloads across specialized experts. Working with an experienced IT outsourcing service provider or IT outsourcing company allows businesses to adopt modern practices faster and more efficiently. Instead of building everything internally, companies increasingly rely on IT outsourcing solutions delivered by a trusted IT outsourcing services company, making outsourcing IT services a practical extension of engineering teams and a key part of delivering reliable and scalable software in today’s ecosystem. </p>
<div class="clear"></div>
</div><!-- .entry-content-->
<p class="filed categories alt-font tight">Posted in Conferences, <a href="category/javascript/index.html" rel="category tag" title="View all posts in JavaScript">JavaScript</a>, <a href="category/jquery/index.html" rel="category tag" title="View all posts in jquery">jquery</a>, <a href="category/resources/index.html" rel="category tag" title="View all posts in Resources">Resources</a>.</p>

<p class="comments-link"><span>Comments Off</span></p>
<p class="by-line">
<span class="author vcard full-author">
<span class="by alt-font">By</span> <a class="url fn" href="author/hbelmont/index.html" title="View all posts by Henry B.">Henry B.</a> </span>
<span class="date full-date"><span class="ndash alt-font">–</span> <abbr class="published" title="2009-09-20T14:34">September 20, 2009</abbr></span>
</p><!--/by-line-->
<div id="post-comments-137-target"></div>
<div class="clear"></div>
</div><!-- .post --><div class="rule"><hr/></div>
<div class="post-36 post type-post status-publish format-standard hentry category-coding-practices category-javascript category-resources tag-ant tag-build tag-build-process tag-bundle tag-yui tag-yui-compressor full" id="post-content-36">
<h1 class="entry-title full-title"><a href="2009/07/21/setting-up-a-javascript-build-process/index.html" rel="bookmark" rev="post-36" title="Permanent link to Setting up a JavaScript Build Process">Setting up a JavaScript Build Process</a></h1>
<div class="entry-content full-content">
<p>It’s important to have a build process for complex JavaScript applications. Probably not something you would setup for an average website. JavaScript builds are better suited for web applications &amp; script libraries. As Julien Lecomte said in his article about building web applications with Ant:</p>
<blockquote><p>Such applications cannot efficiently be developed without relying on a solid build process to do all the dirty and repetitive work of reliably putting all the pieces together.</p></blockquote>
<p>So its about time you setup your own build process. Julien’s blog post is great but I’m gonna start with the basics and try to give you all the info you need to get up and running asap. Everything fromorganizing the directories right down to the commands to run the build. This will help you get going with something you can build on (no pun intended!).<br/>
<</p>
<div class="clear"></div>
</div><!-- .entry-content-->
<p class="filed categories alt-font tight">Posted in <a href="category/coding-practices/index.html" rel="category tag" title="View all posts in Coding Practices">Coding Practices</a>, <a href="category/javascript/index.html" rel="category tag" title="View all posts in JavaScript">JavaScript</a>, <a href="category/resources/index.html" rel="category tag" title="View all posts in Resources">Resources</a>.</p>
<p class="filed tags alt-font tight">Tagged with <a href="tag/ant/index.html" rel="tag">ant</a>, <a href="tag/build/index.html" rel="tag">build</a>, <a href="tag/build-process/index.html" rel="tag">build process</a>, <a href="tag/bundle/index.html" rel="tag">bundle</a>, <a href="tag/yui/index.html" rel="tag">yui</a>, <a href="tag/yui-compressor/index.html" rel="tag">yui compressor</a>.</p>
<p class="comments-link"><span>Comments Off</span></p>
<p class="by-line">
<span class="author vcard full-author">
<span class="by alt-font">By</span> <a class="url fn" href="author/hbelmont/index.html" title="View all posts by Henry B.">Henry B.</a> </span>
<span class="date full-date"><span class="ndash alt-font">–</span> <abbr class="published" title="2009-07-21T23:11">July 21, 2009</abbr></span>
</p><!--/by-line-->
<div id="post-comments-36-target"></div>
<div class="clear"></div>
</div><!-- .post --><div class="rule"><hr/></div>
<div class="post-26 post type-post status-publish format-standard hentry category-site-news tag-design tag-theme tag-wordpress full" id="post-content-26">
<h1 class="entry-title full-title"><a href="2009/04/10/new-design/index.html" rel="bookmark" rev="post-26" title="Permanent link to New design!">New design!</a></h1>
<div class="entry-content full-content">
<p>I finally got around to updating the theme for this blog. The last theme was nice but it had too many bugs and didn’t fit well with the content. I think this design is a nice fit and I like the code behind it.</p>
<p>There were some minor issues and probably more to come but all in all I’m happy with this new design. I plan on adding more features and content to this site so stay tuned.</p>
<div class="clear"></div>
</div><!-- .entry-content-->
<p class="filed categories alt-font tight">Posted in <a href="category/site-news/index.html" rel="category tag" title="View all posts in Site News">Site News</a>.</p>
<p class="filed tags alt-font tight">Tagged with <a href="tag/design/index.html" rel="tag">design</a>, <a href="tag/theme/index.html" rel="tag">theme</a>, <a href="tag/wordpress/index.html" rel="tag">wordpress</a>.</p>
<p class="comments-link"><span>Comments Off</span></p>
<p class="by-line">
<span class="author vcard full-author">
<span class="by alt-font">By</span> <a class="url fn" href="author/hbelmont/index.html" title="View all posts by Henry B.">Henry B.</a> </span>
<span class="date full-date"><span class="ndash alt-font">–</span> <abbr class="published" title="2009-04-10T07:56">April 10, 2009</abbr></span>
</p><!--/by-line-->
<div id="post-comments-26-target"></div>
<div class="clear"></div>
</div><!-- .post --><div class="rule"><hr/></div>
<div class="post-14 post type-post status-publish format-standard hentry category-html-xhtml category-javascript category-jquery tag-jquery tag-purejstemplate tag-templating full" id="post-content-14">
<h1 class="entry-title full-title"><a href="2008/06/05/purejstemplate-a-pure-javascript-templating-engine-for-jquery/index.html" rel="bookmark" rev="post-14" title="Permanent link to PureJSTemplate  – A pure javascript templating engine for jQuery">PureJSTemplate  – A pure javascript templating engine for jQuery</a></h1>
<div class="entry-content full-content">
<p><strong>Most templating languages suck </strong></p>
<p>Ok, if your like me then you hate all templating langauges- they suck, they really suck. I hate them because I hate the rules they enforce upon me, they are slow, and they slow me down. Because of this, usually I end up making code that looks like this:</p>
<p><strong>UGLY: </strong></p>
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">function</span> display<span style="color: #009900;">(</span>data<span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
   <span style="color: #000066; font-weight: bold;">var</span> output <span style="color: #339933;">=</span> <span style="color: #3366CC;">"&lt;div&gt;"</span> <span style="color: #339933;">+</span> data.<span style="color: #660066;">text</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">"&lt;/div&gt;"</span><span style="color: #339933;">;</span>
   element.<span style="color: #660066;">innerHTML</span><span style="color: #339933;">=</span>output<span style="color: #339933;">;</span>
<span style="color: #009900;">}</span></pre></td></tr></table></div>
<p>How horrible is that? That’s probably worse than using a bad templating langauge.</p>
<p>Well, after disappointments with other jQuery templating plugins, I decided to make my own <a class="more-link" href="2008/06/05/purejstemplate-a-pure-javascript-templating-engine-for-jquery/index.html"><span class="more-link">Continued…</span></a></p>
<div class="clear"></div>
</div><!-- .entry-content-->
<p class="filed categories alt-font tight">Posted in <a href="category/html-xhtml/index.html" rel="category tag" title="View all posts in HTML/XHTML">HTML/XHTML</a>, <a href="category/javascript/index.html" rel="category tag" title="View all posts in JavaScript">JavaScript</a>, <a href="category/jquery/index.html" rel="category tag" title="View all posts in jquery">jquery</a>.</p>
<p class="filed tags alt-font tight">Tagged with <a href="tag/jquery/index.html" rel="tag">jquery</a>, <a href="tag/purejstemplate/index.html" rel="tag">PureJSTemplate</a>, <a href="tag/templating/index.html" rel="tag">templating</a>.</p>
<p class="comments-link"><span>Comments Off</span></p>
<p class="by-line">
<span class="author vcard full-author">
<span class="by alt-font">By</span> <a class="url fn" href="author/mo/index.html" title="View all posts by mo rock">mo rock</a> </span>
<span class="date full-date"><span class="ndash alt-font">–</span> <abbr class="published" title="2008-06-05T20:32">June 5, 2008</abbr></span>
</p><!--/by-line-->
<div id="post-comments-14-target"></div>
<div class="clear"></div>
</div><!-- .post --><div class="rule"><hr/></div>
<div class="post-13 post type-post status-publish format-standard hentry category-java category-javascript tag-comet tag-grizzly tag-gwt tag-javascript full" id="post-content-13">
<h1 class="entry-title full-title"><a href="2008/05/28/gwt-grizzly-comet/index.html" rel="bookmark" rev="post-13" title="Permanent link to GWT + Grizzly + Comet">GWT + Grizzly + Comet</a></h1>
<div class="entry-content full-content">
<p>Ok, so you’re probably looking for a simple example of GWT + Grizzly + Comet. Jean Francois and his buddies at JavaOne screwed us with their vague PDF. Bastards! I gotta say this, though, Jean was right, its not too hard to figure out.</p>
<p>This implementation uses XHR long polling, glassfishv2.ur2 and grizzly comet 1.0.9.</p>
<p><strong>The problem: RemoteServiceServlet</strong></p>
<p>GWT loves POST. All RPC calls made back to your subclass of RemoteServiceServlet will hit the doPost method. However, this method is final and cannot be overridden – meaning we cannot create a comet handler for the request in our subclass of RemoteServiceServlet. We want to continue using RPC but we don’t want to use RemoteServiceServlet. WTF?</p>
<p><strong>The solution:  SimpleServiceServlet</strong></p>
<p>Pretty much the RemoteServiceServlet is too secretive. So I  <a class="more-link" href="2008/05/28/gwt-grizzly-comet/index.html"><span class="more-link">Continued…</span></a></p>
<div class="clear"></div>
</div><!-- .entry-content-->
<p class="filed categories alt-font tight">Posted in <a href="category/java/index.html" rel="category tag" title="View all posts in Java">Java</a>, <a href="category/javascript/index.html" rel="category tag" title="View all posts in JavaScript">JavaScript</a>.</p>
<p class="filed tags alt-font tight">Tagged with <a href="tag/comet/index.html" rel="tag">comet</a>, <a href="tag/grizzly/index.html" rel="tag">grizzly</a>, <a href="tag/gwt/index.html" rel="tag">gwt</a>, <a href="tag/javascript/index.html" rel="tag">JavaScript</a>.</p>
<p class="comments-link"><a href="2008/05/28/gwt-grizzly-comet/index.html" rev="post-13" title="Comment on GWT + Grizzly + Comet">3 comments</a></p>
<p class="by-line">
<span class="author vcard full-author">
<span class="by alt-font">By</span> <a class="url fn" href="author/mo/index.html" title="View all posts by mo rock">mo rock</a> </span>
<span class="date full-date"><span class="ndash alt-font">–</span> <abbr class="published" title="2008-05-28T20:51">May 28, 2008</abbr></span>
</p><!--/by-line-->
<div id="post-comments-13-target"></div>
<div class="clear"></div>
</div><!-- .post --><div class="rule"><hr/></div>
<div class="post-12 post type-post status-publish format-standard hentry category-adobe-air category-news tag-10 tag-adobe tag-air tag-beta full" id="post-content-12">
<h1 class="entry-title full-title"><a href="2008/02/25/adobe-air-10-released-today/index.html" rel="bookmark" rev="post-12" title="Permanent link to Adobe Air 1.0 Released today">Adobe Air 1.0 Released today</a></h1>
<div class="entry-content full-content">
<p>Adobe has officially released Air 1.0 today. I must have been under a rock somewhere. I didn’t expect this product to be out of beta anytime soon. Guess I was to busy going crazy about other products (*cough*… Jaxer). </p>
<p>Its a great time to be a Javascript developer (aka a JavaScriptr). So many things going on. </p>
<p>Find out more about Adobe Air here. Happy Scripting!</p>
<div class="clear"></div>
</div><!-- .entry-content-->
<p class="filed categories alt-font tight">Posted in <a href="category/adobe-air/index.html" rel="category tag" title="View all posts in Adobe Air">Adobe Air</a>, <a href="category/news/index.html" rel="category tag" title="View all posts in News">News</a>.</p>
<p class="filed tags alt-font tight">Tagged with <a href="tag/10/index.html" rel="tag">1.0</a>, <a href="tag/adobe/index.html" rel="tag">adobe</a>, <a href="tag/air/index.html" rel="tag">air</a>, <a href="tag/beta/index.html" rel="tag">beta</a>.</p>
<p class="comments-link"><span>Comments Off</span></p>
<p class="by-line">
<span class="author vcard full-author">
<span class="by alt-font">By</span> <a class="url fn" href="author/hbelmont/index.html" title="View all posts by Henry B.">Henry B.</a> </span>
<span class="date full-date"><span class="ndash alt-font">–</span> <abbr class="published" title="2008-02-25T17:08">February 25, 2008</abbr></span>
</p><!--/by-line-->
<div id="post-comments-12-target"></div>
<div class="clear"></div>
</div><!-- .post --><div class="rule"><hr/></div>
<div class="post-11 post type-post status-publish format-standard hentry category-ajax category-aptana category-javascript category-jaxer tag-aptana tag-beta tag-jaxer tag-mozilla tag-server full" id="post-content-11">
<h1 class="entry-title full-title"><a href="2008/02/22/aptana-jaxer-can-change-the-game/index.html" rel="bookmark" rev="post-11" title="Permanent link to Aptana Jaxer can change the game!">Aptana Jaxer can change the game!</a></h1>
<div class="entry-content full-content">
<p>What is Aptana? What is Jaxer? What does this have to do with JavaScript? Let me fill you in if you never heard these two words in the JavaScript community before.</p>
<p><strong>First, what is Aptana?</strong><br/>
Aptana Inc. is a company founded by Paul Colton back in 2005 (Paul created JRun back in the day). The company’s first product  <a class="more-link" href="2008/02/22/aptana-jaxer-can-change-the-game/index.html"><span class="more-link">Continued…</span></a></p>
<div class="clear"></div>
</div><!-- .entry-content-->
<p class="filed categories alt-font tight">Posted in <a href="category/ajax/index.html" rel="category tag" title="View all posts in Ajax">Ajax</a>, <a href="category/aptana/index.html" rel="category tag" title="View all posts in Aptana">Aptana</a>, <a href="https://webdevelopment-service.com/services/react-development" rel="category tag" title="View all posts in JavaScript">JavaScript</a>, <a href="category/jaxer/index.html" rel="category tag" title="View all posts in Jaxer">Jaxer</a>.</p>
<p class="filed tags alt-font tight">Tagged with <a href="tag/aptana/index.html" rel="tag">Aptana</a>, <a href="tag/beta/index.html" rel="tag">beta</a>, <a href="tag/jaxer/index.html" rel="tag">Jaxer</a>, <a href="tag/mozilla/index.html" rel="tag">mozilla</a>, <a href="tag/server/index.html" rel="tag">server</a>.</p>
<p class="comments-link"><span>Comments Off</span></p>
<p class="by-line">
<span class="author vcard full-author">
<span class="by alt-font">By</span> <a class="url fn" href="author/hbelmont/index.html" title="View all posts by Henry B.">Henry B.</a> </span>
<span class="date full-date"><span class="ndash alt-font">–</span> <abbr class="published" title="2008-02-22T10:12">February 22, 2008</abbr></span>
</p><!--/by-line-->
<div id="post-comments-11-target"></div>
<div class="clear"></div>
</div><!-- .post --><div class="rule"><hr/></div>
<div class="pagination">
<span class="previous"></span>
<span class="next"><a href="page/2/index.html">Next »</a></span>
</div></div><!--#content-->
<hr class="lofi"/>
<div id="sidebar">
<div class="widget" id="carrington-subscribe">
<h2 class="widget-title">Subscribe</h2>
<a class="feed alignright" href="feed/index.html" rel="alternate" title="RSS 2.0 feed for posts">
<img alt="JavaScriptr latest posts" src="wp-content/themes/carrington-blog/img/rss-button.gif" title="JavaScriptr latest posts"/>
</a>
</div><!--.widget-->
<div id="primary-sidebar">
<div class="widget widget_categories" id="categories-2"><h2 class="widget-title">Topics</h2> <ul>
<li class="cat-item cat-item-15"><a href="/ux-ui-design-services.html" title="mobile ux design services">ui ux design service</a>
</li>
<li class="cat-item cat-item-5"><a href="category/ajax/index.html" title="View all posts filed under Ajax">Ajax</a> (1)
</li>
<li class="cat-item cat-item-29"><a href="category/aptana/index.html" title="View all posts filed under Aptana">Aptana</a> (1)
</li>
<li class="cat-item cat-item-49"><a href="category/coding-practices/index.html" title="View all posts filed under Coding Practices">Coding Practices</a> (1)
</li>
<li class="cat-item cat-item-57"><a href="category/conferences/index.html" title="View all posts filed under Conferences">Conferences</a> (1)
</li>
<li class="cat-item cat-item-6"><a href="category/html-xhtml/index.html" title="View all posts filed under HTML/XHTML">HTML/XHTML</a> (2)
</li>
<li class="cat-item cat-item-40"><a href="category/java/index.html" title="View all posts filed under Java">Java</a> (1)
</li>
<li class="cat-item cat-item-11"><a href="category/javascript/index.html" title="View all posts filed under JavaScript">JavaScript</a> (7)
</li>
<li class="cat-item cat-item-28"><a href="category/jaxer/index.html" title="View all posts filed under Jaxer">Jaxer</a> (1)
</li>
<li class="cat-item cat-item-22"><a href="category/jquery/index.html" title="View all posts filed under jquery">jquery</a> (2)
</li>
<li class="cat-item cat-item-12"><a href="category/mobile/index.html" title="View all posts filed under Mobile">Mobile</a> (1)
</li>
<li class="cat-item cat-item-33"><a href="category/news/index.html" title="View all posts filed under News">News</a> (1)
</li>
<li class="cat-item cat-item-9"><a href="category/quick_link/index.html" title="View all posts filed under Quick Link">Quick Link</a> (4)
</li>
<li class="cat-item cat-item-20"><a href="category/resources/index.html" title="View all posts filed under Resources">Resources</a> (4)
</li>
<li class="cat-item cat-item-1"><a href="category/site-news/index.html" title="View all posts filed under Site News">Site News</a> (2)
</li>
</ul>
<div class="clear"></div></div> <div class="widget widget_recent_entries" id="recent-posts-2"> <h2 class="widget-title">Recent Posts</h2> <ul>
<li>
<a href="2009/09/20/jquery-conference-09/index.html" title="jQuery Conference ’09">jQuery Conference ’09</a>
</li>
<li>
<a href="2009/07/21/setting-up-a-javascript-build-process/index.html" title="Setting up a JavaScript Build Process">Setting up a JavaScript Build Process</a>
</li>
<li>
<a href="2009/04/10/new-design/index.html" title="New design!">New design!</a>
</li>
<li>
<a href="2008/06/05/purejstemplate-a-pure-javascript-templating-engine-for-jquery/index.html" title="PureJSTemplate  – A pure javascript templating engine for jQuery">PureJSTemplate  – A pure javascript templating engine for jQuery</a>
</li>
<li>
<a href="2008/05/28/gwt-grizzly-comet/index.html" title="GWT + Grizzly + Comet">GWT + Grizzly + Comet</a>
</li>
</ul>
<div class="clear"></div></div> </div><!--#primary-sidebar-->
<div id="secondary-sidebar">
<div class="widget widget_archive" id="archives-3"><h2 class="widget-title">Archives</h2> <ul>
<li><a href="2009/09/index.html" title="September 2009">September 2009</a></li>
<li><a href="2009/07/index.html" title="July 2009">July 2009</a></li>
<li><a href="2009/04/index.html" title="April 2009">April 2009</a></li>
<li><a href="2008/06/index.html" title="June 2008">June 2008</a></li>
<li><a href="2008/05/index.html" title="May 2008">May 2008</a></li>
<li><a href="2008/02/index.html" title="February 2008">February 2008</a></li>
<li><a href="2008/01/index.html" title="January 2008">January 2008</a></li>
<li><a href="2007/12/index.html" title="December 2007">December 2007</a></li>
<li><a href="2007/07/index.html" title="July 2007">July 2007</a></li>
<li><a href="2007/06/index.html" title="June 2007">June 2007</a></li>
<li><a href="2007/05/index.html" title="May 2007">May 2007</a></li>
</ul>
<div class="clear"></div></div><div class="widget widget_links" id="linkcat-56"><h2 class="widget-title">Most Popular</h2>
<ul class="xoxo blogroll">
<li><a href="2008/05/28/gwt-grizzly-comet">GWT + Grizzly + Comet</a></li>
<li><a href="2008/06/05/purejstemplate-a-pure-javascript-templating-engine-for-jquery">PureJSTemplate: A pure javascript templating engine</a></li>
<li><a href="2007/07/12/scripting-for-the-iphone">Scripting for the iPhone</a></li>
<li><a href="2009/07/21/setting-up-a-javascript-build-process">Setting up a JavaScript Build Process</a></li>
</ul>
<div class="clear"></div></div>
<div class="widget widget_text" id="text-3"><h2 class="widget-title">JavaScriptr on Twitter</h2> <div class="textwidget"> <div class="widget" id="carrington-twitter">
<script>document.write(ify.clean("<span>&ldquo;</span>Gonna pass on Ajax Experience Conf...got way too much 2 do. I'll be in Boston the weekend before for jQuery Conf '09 #javascript #jquery<span>&rdquo;</span>"));</script>
<div align="right"><a href="https://www.twitter.com/JavaScriptr" title="Follow us on Twitter">Follow us on Twitter!</a></div></div>
<div class="clear"></div></div> </div><!--#secondary-sidebar-->
<div class="clear"></div>
</div><!--#sidebar-->
<div id="carrington-sidebar-ad" style="text-align:center;margin-bottom:10px"><a href="http://m54.co/codecanyon"><img height="120" src="wp-content/uploads/2012/07/cc_260x120_v1.gif" width="260"/></a></div> <div class="clear"></div>
</div><!-- .wrapper -->
</div><!-- #main -->
<hr class="lofi"/>
<div class="section" id="footer">
<div class="wrapper">
<p id="generator-link">Proudly powered by <a href="http://wordpress.org/" rel="generator">WordPress</a> and <a href="http://carringtontheme.com/" title="Carrington theme for WordPress">Carrington</a>.</p>
</div><!--.wrapper-->
</div><!--#footer -->
</div><!--#page-->
<script type="text/javascript">
	var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
	document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
	var pageTracker = _gat._getTracker("UA-90605-4");
	pageTracker._initData();
	pageTracker._trackPageview();
</script></div></body>
</html>
