<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blue Sky On Mars &#187; JavaScript</title>
	<atom:link href="http://www.blueskyonmars.com/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blueskyonmars.com</link>
	<description>The Nuts and Bolts of Creating Great Software Products</description>
	<lastBuildDate>Wed, 24 Feb 2010 01:44:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CommonJS: the First Year</title>
		<link>http://www.blueskyonmars.com/2010/01/29/commonjs-the-first-year/</link>
		<comments>http://www.blueskyonmars.com/2010/01/29/commonjs-the-first-year/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 14:53:34 +0000</pubDate>
		<dc:creator>Kevin Dangoor</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[CommonJS]]></category>

		<guid isPermaLink="false">http://www.blueskyonmars.com/?p=2702</guid>
		<description><![CDATA[A year ago today, I posted &#8220;What Server Side JavaScript Needs&#8221;, inviting people to come and turn JavaScript into a competitive platform for applications on the server. Quite a few people answered the call. While the focus of the group has been on JavaScript in non-browser contexts, we&#8217;re ultimately shooting for as much of a [...]]]></description>
			<content:encoded><![CDATA[<p>A year ago today, I posted <a href="http://www.blueskyonmars.com/2009/01/29/what-server-side-javascript-needs/">&#8220;What Server Side JavaScript Needs&#8221;</a>, inviting people to come and turn JavaScript into a competitive platform for applications on the server. Quite a few people answered the call. While the focus of the group has been on JavaScript in non-browser contexts, we&#8217;re ultimately shooting for as much of a standard that can cross between server, browser, GUI and command line applications as possible. That&#8217;s why we changed the name to <a href="http://commonjs.org/">CommonJS</a> in the second half of the year. Ironically, most of my own personal use of CommonJS so far has been in the browser. I&#8217;ll come back to the personal perspective, though.</p>
<h2>The Original Goals</h2>
<p>As laid out in my original blog post, we were seeking to create:</p>
<ul>
<li>A module system,</li>
<li>A cross-interpreter standard library,</li>
<li>A few standard interfaces,</li>
<li>A package system, and</li>
<li>A package repository</li>
</ul>
<p>Note that the idea here is that this group creates specs, which will have multiple implementations.</p>
<p>The goal is to have these things working across as many operating systems and interpreters as possible. There are three major operating systems (Windows, Mac, Linux) and four major interpreters (SpiderMonkey, Rhino, v8, JavaScriptCore). Plus there&#8217;s &#8220;the browser&#8221;, which is a unique environment unto itself. That&#8217;s a fair bit of surface area to cover.</p>
<p>Oddly, I think the one of those eight &#8220;platforms&#8221; with the poorest implementation support is Windows. Most of the CommonJS developers are using Macs or Linux machines, so I&#8217;m not sure how much time has really been spent on Windows. I would imagine that JavaScriptCore on Windows is probably the least supported combination.</p>
<p>The good news, however, is that there are projects using <em>all</em> of those JavaScript interpreters and platform compatibility issues will ultimately be ironed out.</p>
<h2>CommonJS and the ECMAScript Standard</h2>
<p>The CommonJS group is a grassroots effort, and not some formal standards body. In some ways, however, it works like a standards body in that the people working on the standard are also implementing the standard-in-progress and using it to build real applications.</p>
<p>We have no control over the ECMAScript language, which is managed by the TC39 working group. However, there are a few people involved in CommonJS who are part of TC39, and I have firsthand knowledge of others who are keeping an eye on how things are going with CommonJS.</p>
<p>The CommonJS standard-in-progress is designed to work on a subset of ECMAScript 5 that can be made to work on today&#8217;s ECMAScript 3 interpreters. ECMAScript 3 is the standard that is running in all of the browsers. In other words, in a CommonJS application you can count on Array.prototype.forEach to be implemented. Obviously, applications can do whatever they want (array destructuring? knock yourself out, but your app will only work on SpiderMonkey and Rhino).</p>
<p>One certainty about CommonJS is that inventing new language syntax is out of scope.</p>
<h2>The Module System</h2>
<p>The CommonJS group has been remarkably good at avoiding bikeshedding. While there is discussion about names of things, there isn&#8217;t <em>heated</em> discussion about it. People are far more interested in issues of functionality and ease-of-use. This is a very good thing, and it allowed us to get <a href="http://wiki.commonjs.org/wiki/Modules/1.1">modules</a> out of the way early on.</p>
<p>Of course, the lack of bikeshedding doesn&#8217;t mean that everyone agrees on things. The CommonJS module system has its controversial aspects, but I think it does well given the constraints:</p>
<ol>
<li>must work with ES3 syntax (destructuring could actually be useful, but we&#8217;re not going to do it)</li>
<li>modules should have self-contained namespaces and be explicit about data the want to export</li>
<li>it should be possible to make modules tamper-proof, though this is not a requirement</li>
<li>using a module should be competitive with using modules in languages like Python and Ruby</li>
</ol>
<p>TC39 had considered adding modules to ECMAScript 4 and there are module proposals on the table for ECMAScript Harmony that would add some syntax to JavaScript that would look similar to CommonJS modules. Here&#8217;s a short module to give you an idea of what CommonJS modules look like:</p>
<pre>var sillymath = require("extramath/silly");

exports.addTwo = function(num) {
    return sillymath.add(num, 2);
};
</pre>
<p>Personally, I find this to be reasonably concise with a nice level of explicitness. Some syntax sugar would be good, and I hope we get that in ES-Harmony. But, this syntax works fine today.</p>
<p>Of course, this syntax is not without controversy. The biggest controversy has been that require() is synchronous – the &#8220;extramath/silly&#8221; module has to be available as the module above is loaded. However, there are a couple of reasonable ways to deal with this problem and I am happily working with CommonJS modules in the browser which is the environment that is least tolerant to synchronous loading.</p>
<p>Controversy or not, this basic module system was ratified last winter and has been implemented on all target environments of CommonJS.</p>
<p>Discussion is ongoing for a tie-in to the module standard: the <a href="http://wiki.commonjs.org/wiki/Modules/Transport">module transport</a> standard. Without additional help from the browser or some additional scaffolding running in the page, the module syntax above doesn&#8217;t work via a &lt;script&gt; tag. By standardizing what that scaffolding would look like, it is possible for a variety of build tools, servers and client side libraries to come into existence to provide many options for loading modules in the browser. There have already been several implementations of CommonJS module loading in the browser, but a standard will make it much easier to mix-and-match client and server.</p>
<h2>The Standard Library</h2>
<p>I had hoped we&#8217;d get farther on the standard library than we have, but it can indeed be a long process. <a href="http://wiki.commonjs.org/wiki/System/1.0">system</a> and <a href="http://wiki.commonjs.org/wiki/Unit_Testing/1.0">unit testing</a> are the only ones that have been ratified at this point. We have come a long way on file access.</p>
<p>&#8220;What!?!?&#8221;, I hear you say, &#8220;there&#8217;s no standard for accessing files yet?&#8221; That&#8217;s right. And there are a couple of reasons that it&#8217;s been challenging to get there.</p>
<p>Consider that JavaScript does not even have a standard object to deal with <em>binary data</em>. That is a basic prerequisite to working with files. JavaScript strings are not the same as a binary data container. So, there&#8217;s binary data to handle, streams to figure out and then file functionality built on top of that. There&#8217;s also the consideration of whether file access is synchronous or asynchronous. We&#8217;ve made tons of headway on this, and there are certainly implementations of some of the specs. It&#8217;s just a matter of finishing them.</p>
<p>I&#8217;m hoping to see <a href="http://wiki.commonjs.org/wiki/Promises">promises</a> become a part of the standard, because some form of that interface is very convenient to use for asynchronous operations.</p>
<h2>Standard Interfaces</h2>
<p>We do have a very useful interface with implementations and people actively using it: the <a href="http://wiki.commonjs.org/wiki/JSGI/Level0/A/Draft2">JavaScript Gateway Interface (JSGI)</a>. That spec has not yet been ratified, but it is getting closer and there are apps being built against it today.</p>
<p>Database access has not yet been standardized. It will be interesting to see if we can come up with a good interface that can usefully target SQL and NoSQL databases alike.</p>
<h2>Package System</h2>
<p>We have a recently ratified spec for <a href="http://wiki.commonjs.org/wiki/Packages/1.0">packages of CommonJS code</a>. I hope this will bring about a collection of good package managers with different focuses and targeting different environments. There have already been a couple of attempts to create package management systems, and the most fleshed out one that I&#8217;ve seen is Tusk, which is bundled with <a href="http://narwhaljs.org/">Narwhal</a>. Once a few more specs are ratified, Tusk should be able to run on other CommonJS implementations.</p>
<h2>Package Repository</h2>
<p>Tusk is using <a href="http://github.com/">GitHub</a> as a package repository, and that is working okay for the time being. A couple weeks back, we got word that the <a href="http://groups.google.com/group/commonjs/browse_thread/thread/39dcdede35edcddd">jQuery plugin repository is going to provide a CommonJS package.json file</a> for the ~5000 plugins in their database. This is exciting, because this infrastructure could prove to be very useful to us going forward.</p>
<h2>JavaScript: Bubbling Up</h2>
<p>2009 was a terrific year for JavaScript. In the browser, we&#8217;ve obviously seen tons of growth in increasingly sophisticated applications. I think the interest is steadily building to use JavaScript more and more outside of the browser. The two JSConf conferences (in <a href="http://jsconf.us/">Washington DC</a> and <a href="http://jsconf.eu/">Berlin</a>) were great successes by all accounts I&#8217;ve seen. <a href="http://phonegap.com/">PhoneGap</a>, <a href="http://www.appcelerator.com/">Titanium</a> and Palm&#8217;s <a href="http://developer.palm.com/">WebOS</a> have created ways for people to use web tech to create installable apps for mobile phones. <a href="http://nodejs.org/">node.js</a> has been a huge driver for people to check out building scalable, asynchronous JavaScript apps on the server. And, of course, CommonJS is finding its way into more and more applications.</p>
<h2>My Personal View</h2>
<p>I had hoped to personally have more time to devote to CommonJS in 2009, but I am delighted at how a great collection of people have stepped in and carried the specifications and implementations forward through a lot of hard work and force of will. More than 5,100 messages have gone across the mailing list, and more than 10% of those have been from <a href="http://askawizard.blogspot.com/">Kris Kowal</a>. Kris has done a ton of work in ironing out many of the specs and deserves a good deal of credit for where CommonJS is today. He and <a href="http://tlrobinson.net/">Tom Robinson</a> even stood in for me when I had to cancel my trip to JSConf.eu (thanks, guys!).</p>
<p>Taking a look at the <a href="http://groups.google.com/group/commonjs/about">top posters on the googlegroup</a>, you can see how many people have put so much into CommonJS. More than 10 people have contributed more than 100 messages a piece and, for many of those people, there was a lot of time spent in the email discussions, IRC chats, spec writing and implementation of those specs. Plus, as early adopters, they have the joy of tweaking things as the specs have changed over time. Thanks to all of you for the dedication and the will to get it done.</p>
<p><a href="http://mozillalabs.com/bespin/">Bespin</a>&#8217;s client side JavaScript code is all CommonJS modules now, partly thanks to the efforts of <a href="http://www.okito.net/">Charles Jolley</a> to migrate the <a href="http://sproutcore.com/">SproutCore</a> framework to CommonJS and creating the Tiki module loader. From that standpoint, I&#8217;m already using more CommonJS now than I did in 2009. I&#8217;m also hoping that 2010 will bring a Bespin server &#8220;reboot&#8221;, where we start migrating server functionality to CommonJS.</p>
<p>On the whole, I think that 2009 was a great year for JavaScript and CommonJS and I think 2010 is going to be even bigger. I hope to meet more enthusiastic JavaScript hackers at JSConf.us in April!</p>
<h3>Comments?</h3>
<p>You can direct them to the <a href="http://groups.google.com/group/commonjs/browse_thread/thread/53c59828899ffcd9">thread on the CommonJS googlegroup</a> or email to <a href="mailto:editor@blueskyonmars.com">editor@blueskyonmars.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueskyonmars.com/2010/01/29/commonjs-the-first-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exploring Google Closure: a2div, GTUG joint meeting</title>
		<link>http://www.blueskyonmars.com/2009/11/11/exploring-google-closure-a2div-gtug-joint-meeting/</link>
		<comments>http://www.blueskyonmars.com/2009/11/11/exploring-google-closure-a2div-gtug-joint-meeting/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 14:40:23 +0000</pubDate>
		<dc:creator>Kevin Dangoor</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[a2div]]></category>

		<guid isPermaLink="false">http://www.blueskyonmars.com/?p=2644</guid>
		<description><![CDATA[Due to Thanksgiving falling on the same day as the normally scheduled date for a2 &#60;div&#62;&#8217;s monthly meeting, we decided to find a different date and possibly join up with another group for a complementary topic. And, indeed, that&#8217;s what we&#8217;ve done!
a2 &#60;div&#62; and the Google Technology User Group will have a joint meeting on [...]]]></description>
			<content:encoded><![CDATA[<p>Due to Thanksgiving falling on the same day as the normally scheduled date for <a href="http://a2div.com">a2 &lt;div&gt;</a>&#8217;s monthly meeting, we decided to find a different date and possibly join up with another group for a complementary topic. And, indeed, that&#8217;s what we&#8217;ve done!</p>
<p>a2 &lt;div&gt; and the Google Technology User Group will have a joint meeting on <strong>Tuesday, November 17th</strong>. The meeting will be at the SRT Solutions office at 7PM. I realize that there are conflicts that day, but there is so much going on during the month that it&#8217;s hard to find a date without conflicts!</p>
<p>We have a hot topic: <a title="Google Closure" href="http://code.google.com/closure/">Google Closure</a>. Sure, new JavaScript libraries appear every day, but not like this one. Closure has a maturity that comes from years of use within Google, on some of Google&#8217;s busiest properties. It has an amazing toolset (Firebug plugins, super squishy compiler), great docs and a nice collection of features. Of course, not many people outside of Google know much about Closure right now, so this meeting is a group exploration of Closure. Read more in the RSVP form below to see how it works.</p>
<p>I hope to see you there!</p>
<p><iframe src="http://spreadsheets.google.com/embeddedform?key=tPq9TPPUuEXS4uXpHQ9SPMg" width="500" height="1100" frameborder="0" marginheight="0" marginwidth="0">Loading&#8230;</iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueskyonmars.com/2009/11/11/exploring-google-closure-a2div-gtug-joint-meeting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>a2div meeting #1: SproutCore with Majd Taby</title>
		<link>http://www.blueskyonmars.com/2009/09/14/a2div-meeting-1-sproutcore-with-majd-taby/</link>
		<comments>http://www.blueskyonmars.com/2009/09/14/a2div-meeting-1-sproutcore-with-majd-taby/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 13:30:11 +0000</pubDate>
		<dc:creator>Kevin Dangoor</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[a2div]]></category>

		<guid isPermaLink="false">http://www.blueskyonmars.com/?p=2630</guid>
		<description><![CDATA[A few days back, I announced the creation of the a2 &#60;div&#62; group: devoted to learning new tools and techniques for building the best webapps. Meetings will be on the 4th Thursday of each month, so the first meeting is on September 24th at 7PM at the SRT Solutions office in downtown Ann Arbor. Meetings [...]]]></description>
			<content:encoded><![CDATA[<p>A few days back, I announced the creation of the a2 &lt;div&gt; group: devoted to learning new tools and techniques for building the best webapps. Meetings will be on the <strong>4th Thursday</strong> of each month, so the first meeting is on <strong>September 24th at 7PM at the SRT Solutions office</strong> in downtown Ann Arbor. Meetings are free, so join us (<strong>please let us know that you&#8217;re coming using the form below</strong> &#8212; reason for that in a minute).</p>
<p>The general meeting flow that we&#8217;re going to start off with is:</p>
<ol>
<li>A presentation/demo of something awesome (for about an hour with questions interspersed plus maybe a few extra minutes for questions afterward)</li>
<li>5 minute lightning talks (proposed beforehand using the form below)</li>
<li>General discussion (either collectively or in groups. Individuals having discussions with themselves is not encouraged.)</li>
</ol>
<p>This is a rough outline, and I expect a lot of <strong>flexing</strong> based on the topics du jour.</p>
<p>I&#8217;m asking for RSVPs because I&#8217;d like to encourage folks to give lightning talks and the form gives a space devoted to that. Lightning talks, for those unfamiliar with the term, are simply 5 minute or shorter talks to introduce people to a topic or to give a quick demo of something new and useful. They can also be a good way to spur new discussion. RSVPs are also good to ensure that a really hot topic doesn&#8217;t overwhelm the space we have.</p>
<p>For the first meeting, the main event will be <strong>Majd Taby showing off SproutCore</strong>. <a href="http://www.sproutcore.com/">SproutCore</a>, for those who have never seen it, is an amazing open source JavaScript UI toolkit that is highly optimized for speed and reduction of the amount of code you need to write. It borrows liberally from concepts in Apple&#8217;s Cocoa framework, and Apple themselves use it for their MobileMe service. If you&#8217;re building a &#8220;website&#8221;, you probably want to <a href="http://jquery.com/">use</a> <a href="http://dojotoolkit.org/">something</a> <a href="http://prototypejs.org/">else</a>. If you&#8217;re building something that is an honest-to-goodness app, you owe it to yourself to check out SproutCore.</p>
<p>There aren&#8217;t any lightning talks lined up yet, so be sure to toss your name into the hat if you want to give one.  Also, there&#8217;s a form online if you want to <a href="http://spreadsheets.google.com/viewform?formkey=dGxsdldwUUdkb1pnV20zQVhGT0JOS0E6MA..">give a talk at a2div</a> and another if <a href="http://spreadsheets.google.com/viewform?formkey=dDJ4dWJOWi1Rek1ZV1JZNEN5UTBMVHc6MA..">you have a topic you&#8217;d like to hear about</a>.</p>
<div><iframe src="http://spreadsheets.google.com/embeddedform?key=0AsexK1zFxKTBdHJlUmx1cy1uZlJ2cjNLUWxYUEI0N0E" width="500" height="587" frameborder="0" marginheight="0" marginwidth="0">Loading&#8230;</iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://www.blueskyonmars.com/2009/09/14/a2div-meeting-1-sproutcore-with-majd-taby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing a2div web development user group</title>
		<link>http://www.blueskyonmars.com/2009/09/04/introducing-a2div-web-development-user-group/</link>
		<comments>http://www.blueskyonmars.com/2009/09/04/introducing-a2div-web-development-user-group/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 19:46:54 +0000</pubDate>
		<dc:creator>Kevin Dangoor</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[a2div]]></category>

		<guid isPermaLink="false">http://www.blueskyonmars.com/2009/09/04/introducing-a2-web-development-user-group/</guid>
		<description><![CDATA[I&#8217;ve been interested in doing cool stuff with web technology for a long time. I still think that web development is harder than it should be, but new tools, processes and ideas come along all the time to make it easier and more fun.
Many people probably view me as a &#8220;Python guy&#8221;. Sure, I&#8217;ve done [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been interested in doing cool stuff with web technology for a long time. I still think that web development is harder than it should be, but new tools, processes and ideas come along all the time to make it easier and more fun.</p>
<p>Many people probably view me as a &#8220;Python guy&#8221;. Sure, I&#8217;ve done a good deal of work with Python over the past few years. But, there are many, many good ideas on the server side that come from places other than Python.</p>
<p>And, the browser as a platform is an entirely different thing than it was a few years ago, particularly when you restrict yourself to &#8220;modern browsers&#8221;, as we do on <a href="https://bespin.mozilla.com/">Bespin</a>. The performance difference between today&#8217;s browsers and those from a couple years back is huge, and that new performance opens the door for all kinds of new applications and toolkits to help us build those apps.</p>
<p>I want to learn firsthand from people using modern tools to make development faster and more fun. I haven&#8217;t seen a group here in Ann Arbor that is devoted to the broad range of web development topics, so I decided to get one going. It turns out that <a href="http://twitter.com/jtaby">Majd Taby</a> sent a message to the a2geeks mailing list in April about starting a web dev group, but I somehow missed that. Majd and I exchanged some email this week and worked out the details of the new group.</p>
<p>The new group is called <strong><a href="http://a2div.com/">a2 &lt;div&gt;</a></strong> (or just <a href="http://a2div.com/">a2div</a>) because it has the same topic focus as <a href="http://cudiv.com/">cu &lt;div&gt;</a> and I liked the idea of joining forces in some sense with a similarly minded group. cu &lt;div&gt; has a bit of a student focus that a2 &lt;div&gt; does not (it&#8217;s been a long time since I was a student). Thanks to Cameron from cu &lt;div&gt; for giving us the go-ahead to start an Ann Arbor offshoot. Thanks also to <a href="http://monkey.org/~dugsong/">Dug Song</a> for passing along the link to cu &lt;div&gt; and connecting me with Majd.</p>
<p>a2 &lt;div&gt; will be a loosely organized group as MichiPUG is&#8230; bringing the right people together for good discussion is far more important than creating a formal organization. <strong>Meetings are free</strong>. Our meeting format will likely be something along the lines of 1 hour presentation/demo followed by lightning talks and discussion.</p>
<p>An important aspect of a2 &lt;div&gt; is that&#8217;s non-denominational. Are you doing client and server in Java (for example, with <a href="http://code.google.com/webtoolkit/">GWT</a>)? Neat. How about in Python (with <a href="http://pyjs.org/">Pyjamas</a>)? <a href="http://groovy.codehaus.org/">Groovy</a>. Doing the server in <a href="http://liftweb.net/">Lift</a> and the client side with <a href="http://cappuccino.org/">Cappuccino</a>? How about <a href="http://framework.zend.com/manual/en/zend.dojo.html">PHP+Dojo</a>? <a href="http://www.sproutcore.com/">SproutCore</a>+<a href="http://developer.apple.com/tools/webobjects/">WebObjects</a>? Using <a href="http://www.asp.net/mvc/">ASP.NET MVC</a> with <a href="http://jquery.com/">jQuery</a>? Do you use <a href="http://cukes.info/">Cucumber</a> to test your apps? All are welcome, all are interesting.</p>
<p>Our <strong>meetings will be at the <a href="http://www.srtsolutions.com/">SRT Solutions</a></strong> <a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=srt+solutions,+ann+arbor,+mi&amp;sll=42.233465,-83.76328&amp;sspn=0.009437,0.013282&amp;ie=UTF8&amp;ll=42.283342,-83.74629&amp;spn=0,359.946871&amp;z=14&amp;iwloc=A&amp;layer=c&amp;cbll=42.280209,-83.746073&amp;panoid=7nZ9IQ3Poiw7j1uGWbArlg&amp;cbp=13,268.64,,0,5">office in downtown Ann Arbor</a>. This is a great space to meet at (projector, whiteboards, flexible table arrangement), and the location is nice because it&#8217;s easy to walk out for drinks and food afterwards. Thanks to <a href="http://srtsolutions.com/blogs/diannemarsh/">Dianne Marsh</a> for letting us use their office!</p>
<p>Meetings will be on the <strong><span style="text-decoration: line-through;">3rd Wednesday</span> 4th Thursday of each month at 7pm</strong>. That means our first meeting will be on September <span style="text-decoration: line-through;">16th</span> 24th (less than two weeks away). You can subscribe to <a href="http://www.google.com/calendar/hosted/a2div.com/embed?src=a2div.com_p2lsljqvnsejncoetpl2sqrt6o%40group.calendar.google.com&amp;ctz=America/New_York">our calendar</a> in <a href="http://www.google.com/calendar/feeds/a2div.com_p2lsljqvnsejncoetpl2sqrt6o%40group.calendar.google.com/public/basic">XML</a> or <a href="http://www.google.com/calendar/ical/a2div.com_p2lsljqvnsejncoetpl2sqrt6o%40group.calendar.google.com/public/basic.ics">ical</a> formats.</p>
<p>The first meeting topic is not fully decided yet. Please join the <strong><a href="http://groups.google.com/group/a2div">a2div googlegroup</a></strong> and let us know what you might want to hear about or talk about!</p>
<p>If you&#8217;re near Ann Arbor on September 16th, join us at SRT Solutions for engaging discussion on all webdev-related topics! See you there!</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=8f614d65-a50e-8ee6-8070-21b4f161a5d8" alt="" /></div>
<div class="zemanta-pixie"><strong>Update:</strong> Date tentatively changed to the 4th Thursday based on conflicts on the 3rd Wednesday.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.blueskyonmars.com/2009/09/04/introducing-a2div-web-development-user-group/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Project Bespin needs *you*</title>
		<link>http://www.blueskyonmars.com/2009/08/27/project-bespin-needs-you/</link>
		<comments>http://www.blueskyonmars.com/2009/08/27/project-bespin-needs-you/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 02:46:56 +0000</pubDate>
		<dc:creator>Kevin Dangoor</dc:creator>
				<category><![CDATA[Bespin]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.blueskyonmars.com/?p=2602</guid>
		<description><![CDATA[I work in Mozilla&#8217;s Developer Tools Lab, where we&#8217;re working to make things easier for web developers and to explore what is possible using open web tools. It turns out there&#8217;s quite a bit that&#8217;s possible, and we&#8217;ve just scratched the surface with what we&#8217;ve done with Bespin so far.
I&#8217;m really happy with the team [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="Collaboration screen shot" src="http://bengalbraith.files.wordpress.com/2009/08/collab.png?w=500" alt="" width="499" height="405" />I work in Mozilla&#8217;s Developer Tools Lab, where we&#8217;re working to make things easier for web developers and to explore what is possible using open web tools. It turns out there&#8217;s quite a bit that&#8217;s possible, and we&#8217;ve just scratched the surface with what we&#8217;ve done with <a href="https://bespin.mozilla.com/">Bespin</a> so far.</p>
<p>I&#8217;m really happy with the team that I&#8217;m working with, both within Mozilla Labs and in the Bespin community. I&#8217;m also really happy to report that we&#8217;ve got an opening on our team! We&#8217;re looking for fantastic software engineer that will own the Canvas-based editor component that is at the heart of Bespin.</p>
<p><a href="http://www.jobvite.com/j/?cj=o5fdVfwc&amp;s=Kevin_Dangoor"><img class="alignleft" style="padding-right: 1em;" title="Join Mozilla!" src="http://www.mozilla.com/en-US/about/buttons/MoCo_180x150.png" alt="" width="180" height="150" /></a>If being at the forefront of JavaScript technology (Canvas, local storage, web workers) sounds fun and exciting to you, <a href="http://www.jobvite.com/j/?cj=o5fdVfwc&amp;s=Kevin_Dangoor">drop us a line</a>! We&#8217;d love to talk to you!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueskyonmars.com/2009/08/27/project-bespin-needs-you/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>JSConf 2009: the best conference you couldn&#8217;t attend!</title>
		<link>http://www.blueskyonmars.com/2009/04/27/jsconf-2009-the-best-conference-you-couldnt-attend/</link>
		<comments>http://www.blueskyonmars.com/2009/04/27/jsconf-2009-the-best-conference-you-couldnt-attend/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 18:17:06 +0000</pubDate>
		<dc:creator>Kevin Dangoor</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jsconf]]></category>

		<guid isPermaLink="false">http://www.blueskyonmars.com/?p=2576</guid>
		<description><![CDATA[(sorry for the lack of links in here. I wrote this on a plane and haven&#8217;t had a chance to do anything else to it&#8230;)
I just returned from JSConf 2009, the first JSConf conference. It was possibly even the first conference to feature JavaScript as a general scripting language in the same vein as Python [...]]]></description>
			<content:encoded><![CDATA[<p>(sorry for the lack of links in here. I wrote this on a plane and haven&#8217;t had a chance to do anything else to it&#8230;)</p>
<p>I just returned from JSConf 2009, the first JSConf conference. It was possibly even the first conference to feature JavaScript as a general scripting language in the same vein as Python or Ruby.</p>
<p>Overall, it was a very good conference. The organizers did a terrific job and paid great attention to detail. The sponsored evening events were an awesome idea and well-executed. (At least, Friday night&#8217;s was, I flew home Saturday evening). It was a relatively small conference at 130 people. I think they can easily have double that number next year, if they want to. But, that would require a change of venue, because the Hotel Palomar&#8217;s meeting rooms were filled almost to overflowing. From talking with Chris Williams on Friday evening, it doesn&#8217;t sound like they&#8217;re interested in changing venues next year, which is a shame because a lot of people will have to miss out on a great conference.</p>
<p>Francisco Tolmasky from 280 North gave the perfect kind of talk to kick things off. I&#8217;ve been following Cappucino&#8217;s development, so I was not surprised in the least with what I saw. But, Francisco is a polished speaker and many people had not seen Apple&#8217;s Interface Builder used to create webapps (via Cappucino&#8217;s nib2cib tool). We didn&#8217;t get a demo of Atlas, which would certainly have wowed this audience.</p>
<p>One thing that pleased a great many people in the audience, myself included, was word that Safari&#8217;s debugger would start looking at a &#8220;displayName&#8221; on functions to determine what name to show in the debugger/profiler. JavaScript has many places where it&#8217;s impossible to guess a reasonable name, and it&#8217;s nice to have a way to give the debugger a hint like this. Let&#8217;s hope we get this in Firebug soon.</p>
<p>Toward the end of the second day, there was a talk about SproutCore, so we had a chance to two different ways to apply the style of Apple&#8217;s Cocoa to building webapps. As with anything, there are tradeoffs. Cappucino builds on Objective-J, which gives you a more concise syntax than straight JavaScript for things like Key Value Observing. If JavaScript today had getters and setters, then this particular benefit of Objective J would go away. For now, though, using SproutCore effectively means calling get* and set* methods to get variable values rather than just looking up the value directly.</p>
<p>There were two presentations on server side JavaScript, a topic that people who know me know that I am currently very into. Nick Campbell showed off the Axiom Stack, which builds on Helma. Axiom is presently AGPL-licensed, which means I won&#8217;t go anywhere near it. But, that&#8217;s just me. On the plus side, Nick has been peripherally following the activity on ServerJS and is quite in tune with our goals. Nick&#8217;s company, by the way, has a unique and useful sounding web marketing-related product coming out soon, so keep an eye on those folks if you&#8217;re a marketer.</p>
<p>The second Track A presentation about server side JS was James Duncan&#8217;s presentation about Joyent&#8217;s Smart platform. I must say that this looks like an excellent offering, and I&#8217;m looking forward to seeing a lot more of it as it hits general availability. The best parallel I can draw is &#8220;App Engine on JavaScript&#8221;, but that doesn&#8217;t really do it justice. They have a key-value store that they will scale transparently for you. No more manual sharding! Just start tossing data in. Of course, that&#8217;s the promise&#8230; and the devil&#8217;s in the details with such things. I came in a bit late to James&#8217; presentation and I forgot to ask him afterwards about their data store&#8217;s indexing capabilities and whether it is eventual-consistency based or more immediate than that.</p>
<p>The Smart platform is SpiderMonkey-based, and they pull some interesting tricks to overcome the lack of a decent stack of libraries for SpiderMonkey. Their web server interface looked very much like Jack, which is a bonus. It would be nice if we can harmonize it with Jack in some fashion. Intriguingly, their web framework, which is apparently based on Sinatra, looks an awful lot like the home grown one that I made for Bespin in Python and then duplicated in JavaScript.</p>
<p>I didn&#8217;t lump my former SitePen colleague Kris Zyp&#8217;s talk in with the other server side JS talks, because Kris was talking a lot more about JS that spans from client to server and using standards such as JSON Path, JSON Query, Persistent JS, and JSON object referencing to move data around seamlessly. Of course, he used Dojo and Persevere as his demo platform, but the ideas he presented can be applied anywhere.</p>
<p>Brian LaRoux&#8217;s talk on PhoneGap was quite interesting and entertaining. Brian&#8217;s talk had a refreshing lack of gravity, while still providing useful content. For one, he mentioned that Dashcode actually offers good tools for making iPhone web apps. He talked about a variety of iPhone-related JS toolkits, and gave a demo of Nitobi&#8217;s iPhone &#8220;stimulator&#8221; which does a better job of representing how an iPhone app will behave than Apple&#8217;s own simulator.</p>
<p>I should note that there were probably 50% fewer bullet points than what I have seen at some other tech conferences I&#8217;ve been to. I think the message is sinking in that bullet points suck (except for actual lists of things).</p>
<p>My Mozilla colleague, John Resig gave a wide-ranging talk about JavaScript performance testing, games and his project of the moment, TestSwarm. TestSwarm looks fantastic and fills a gap: it will provide a way to do cross-browser continuous integration tests. People join the test swarm by opening their browser up to the TestSwarm page, and the server will send them test jobs as they come in. So, for example, a revision gets checked into jQuery, and the TestSwarm server will pull out the tests and send them down the wire to a collection of testers who are using different browsers. The results from all of the browsers will come back and get logged. This tool will be useful for a lot more than just jQuery, and John offered help connecting it up with, say, DOH for Dojo&#8217;s tests.</p>
<p>Another former SitePen colleague, Pete Higgins gave a Dojo roundup at the very end of the conference. I saw half of his talk before I had to go to the airport. There are lots of good things afoot in Dojo-land. The new conditional compilation stuff seems useful for a variety of things. For example, Dojo can be built in a super-slim variety (6K) that loads everything dynamically. Or you can dump all of the IE compatibility stuff. With the Bespin project, we have a plan to ship a variety of packagings, and I can see this being useful for that as well.</p>
<p>Pete&#8217;s Plugd (which he pronounces &#8220;plug-dee&#8221; as opposed to &#8220;plugged&#8221;) project provides a bunch of extra convenient ways to use Dojo and I do hope to see that stuff included in 1.4. Pete says that Plugd will likely add 4K to Dojo&#8217;s gzipped size, but I think it&#8217;s likely worth it.</p>
<p>Malte Ubi likely takes the prize for JSConf attendee who came the longest distance to attend, having flown in all the way from Hamburg, Germany. Malte has been doing some fantastic work on Bespin. Actually, the things he&#8217;s been doing go beyond the realm of fantastic and into &#8220;crazy&#8221;: using Narcissus (JavaScript parser in JavaScript) to read your JavaScript file in a web worker to provide completely client-based outline views and code completion. Awesome.</p>
<p>Malte did a Track B talk on Joose, his JS object system that is built on ideas from Perl&#8217;s Moose. It looks like a very powerful system that provides things like type coercion and traits (called roles here) that you don&#8217;t find in the type systems that typically come with JS toolkits. If I recall correctly, Joose weighs in at about 16K gzipped, so it&#8217;s not a small package.</p>
<p>Nick Carter gave a Track B talk on his JS ORM, JazzRecord It&#8217;s a direct descendant of Rails&#8217; ActiveRecord. It looks like a nice enough package, but seeing his samples made me that much more convinced that Atul is right: SQL does not belong in the browser. The sqlite storage engine may very well, but SQL itself does not. TaffyDB, dojo.data, CouchDB, whatever&#8230; just as long as the principal form of expression, persistence and querying is JS. The needs of a typical web client are very different from the kinds of things to which we apply SQL on the server. And, even then, people are starting to realize that SQL is not the best tool for every job.</p>
<p>I spoke on Track B about ServerJS. I called the session &#8220;a standard library for JavaScript in non-browser contexts&#8221;, or something catchy like that, because it is clear that what we&#8217;re building applies just as much to command line tools and other kinds of non-browser programs as it does to the server side of web apps.</p>
<p>My talk came immediately after James Duncan spoke about dynamic loading of C code into a SpiderMonkey environment. I lamely brought up ctypes as one approach, but dynamic loading of binaries is not my strength. I suggested that James would get useful feedback for his idea on the ServerJS list, given the number of people who are linking C/C++ libraries up with SpiderMonkey and v8.</p>
<p>As for ServerJS itself, I spoke about the project in general and our biggest milestone to date: the &#8220;SecurableModule&#8221;. I had a simple &#8220;math.js&#8221; module with a fibonacci function in it. I picked a lovely O(n^2) function to show the performance difference between Rhino and v8 which is considerable. Since math.js is a &#8220;pure JavaScript&#8221; module, I was able to demo that module being loaded into: Narwhal on Rhino, Narwhal on k7, Persevere, Helma NG (as a Jack app, no less) and GPSEE. I also demonstrated how with Narwhal/Rhino, I could &#8220;forget&#8221; to put a &#8220;var&#8221; in and my variable would not suddenly leak into the global namespace.</p>
<p>I also mentioned that we&#8217;re working on binary objects and files and that Jack (the interface) has good prospects given how proven the technique is in Python and Ruby.</p>
<p>I hope that at JSConf 2010, we&#8217;ll be able to see some significant apps built on a fairly complete platform.</p>
<p>Conference co-organizer Chris Williams thanked me for my endorsement of the conference, saying that I pushed Mozilla over the edge on sponsoring the conference. I had no idea I had such pull <img src='http://www.blueskyonmars.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Anyhow, Mozilla&#8217;s sponsorship apparently had a direct impact on the conference food, which was quite beyond typical conference fare. Thanks to whomever it was at Mozilla who gave the a-ok on this.</p>
<p>As with any conference, the hallway track is among the most important, and I had a good time meeting new people and talking about a range of things. Community-driven conferences do bring in a good collection of people to meet.</p>
<p>I am doubtless leaving people out of this roundup, and I apologize for that. I am sure there are some other JSConf roundups that will provide additional insight. Also, the videos will be showing up online over time, so keep an eye out for that.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueskyonmars.com/2009/04/27/jsconf-2009-the-best-conference-you-couldnt-attend/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Speaking at JSConf on Saturday at 1:45PM</title>
		<link>http://www.blueskyonmars.com/2009/04/21/speaking-at-jsconf-on-saturday-at-145pm/</link>
		<comments>http://www.blueskyonmars.com/2009/04/21/speaking-at-jsconf-on-saturday-at-145pm/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 13:01:58 +0000</pubDate>
		<dc:creator>Kevin Dangoor</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.blueskyonmars.com/?p=2574</guid>
		<description><![CDATA[JSConf is coming up on Friday, and I&#8217;ll be there. I was too late to get a normal &#8220;track A&#8221; talk in, but I am scheduled in the &#8220;track B&#8221; room for Saturday at 1:45PM to talk about a standard library for JavaScript development outside of the browser. It&#8217;ll be a 30 minute session, and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jsconf2009.com/">JSConf</a> is coming up on Friday, and I&#8217;ll be there. I was too late to get a normal &#8220;track A&#8221; talk in, but I am scheduled in the &#8220;track B&#8221; room for Saturday at 1:45PM to talk about a standard library for JavaScript development outside of the browser. It&#8217;ll be a 30 minute session, and I&#8217;m hoping to have some cool stuff to show!</p>
<p>I hope to see you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueskyonmars.com/2009/04/21/speaking-at-jsconf-on-saturday-at-145pm/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>This Week in Bespin March 2, 2009</title>
		<link>http://www.blueskyonmars.com/2009/03/02/this-week-in-bespin-march-2-2009/</link>
		<comments>http://www.blueskyonmars.com/2009/03/02/this-week-in-bespin-march-2-2009/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 14:32:51 +0000</pubDate>
		<dc:creator>Kevin Dangoor</dc:creator>
				<category><![CDATA[Bespin]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.blueskyonmars.com/2009/03/02/this-week-in-bespin-march-2-2009/</guid>
		<description><![CDATA[For the week of February 23rd:


Roberto Saccon ported Bespin to Dojo! Dojo leader Peter Higgins helped to clean things up a bit. This has significantly changed (and improved) the use of namespaces in the frontend code, which will make Bespin much easier to drop into other pages.
For people keeping score at home, there is now [...]]]></description>
			<content:encoded><![CDATA[<p>For the week of February 23rd:
<div></div>
<ul>
<li>Roberto Saccon <b>ported Bespin to Dojo</b>! Dojo leader Peter Higgins helped to clean things up a bit. This has significantly changed (and improved) the use of namespaces in the frontend code, which will make Bespin much easier to drop into other pages.</li>
<li>For people keeping score at home, there is now a <b>0.1 branch</b> in the Bespin repository that we will be using to update the server. The default branch has the Dojo work and all of the other forward-looking work going on. Until the trunk work stabilizes a bit, <a href="http://bespin.mozilla.com/" target="_blank">bespin.mozilla.com</a> will be running a bit behind on the changes here.</li>
<li><b>autoindent</b>&nbsp;setting. When you hit return/enter you&#8217;re placed at the same indentation point on the next line.</li>
<li>Select an area and hit TAB and it all indents. SHIFT+TAB and it unindents. Thanks to Jay Bird!</li>
<li>Special support for certain keys so German keyboards etc can get in &#8216;{&#8216; and the like. Thanks to Julian Viereck&nbsp;&nbsp;</li>
<li>For people following the trunk/tip, the project build script has changed a bit. Be sure to follow the instructions in the top-level README file to get the Bespin server running.</li>
<li>PHP, Java and Aduino syntax highlighting, thanks to Sean Burke and&nbsp;Olle Jonsson, respectively. The Arduino support is optional. Use&nbsp;include(&#8220;bespin.syntax.<wbr />arduino&#8221;); in your config.js to load.</li>
<li>Multithreaded development server, which speeds up page loads a bit now that there are more modules loading.</li>
<li>Config work has short cuts now so you can simply use: include(file), execute(cmd), publish(), subscribe()&nbsp;</li>
</ul>
<div>Coming up the week of March 2nd:</div>
<div>
<ul>
<li>I&#8217;ll be working on backend changes to make VCS integration possible (and to allow us to start using Bespin as our primary editor when working on Bespin itself)</li>
<li>Joe will be working on collaboration implementation</li>
<li>Ben and Dion will likely have their hands full just keeping up with your patches! (I&#8217;m sure they will sneak some time in to improve the editor and Thunderhead as well <img src='http://www.blueskyonmars.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p>By the way, &#8220;This Week in Bespin&#8221; is not just for those of us at Mozilla. If you have anything you want to see show up in these summaries, just send me an email message!</p></div>
<div></div>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=41bf0053-c2bb-41b3-bab7-59256a1cb4af" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.blueskyonmars.com/2009/03/02/this-week-in-bespin-march-2-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Embarrassment Driven Development</title>
		<link>http://www.blueskyonmars.com/2009/03/02/embarrassment-driven-development/</link>
		<comments>http://www.blueskyonmars.com/2009/03/02/embarrassment-driven-development/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 14:03:09 +0000</pubDate>
		<dc:creator>Kevin Dangoor</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.blueskyonmars.com/2009/03/02/embarrassment-driven-development/</guid>
		<description><![CDATA[Googling &#8220;embarrassment driven development&#8221; (EDD) does not return as many hits as it should. I think it&#8217;s a very powerful development technique. I first heard the expression from the Plone guys at PyCon 2006, and Google did turn up this match:
[ArchipelagoSprint] Time to get cracking on Plone 3.0!
Wrt. timelines, I was hoping that we could [...]]]></description>
			<content:encoded><![CDATA[<p>Googling &#8220;embarrassment driven development&#8221; (EDD) does not return as many hits as it should. I think it&#8217;s a very powerful development technique. I first heard the expression from the Plone guys at PyCon 2006, and Google did turn up this match:</p>
<p><a href="https://lists.jarn.com/pipermail/archipelagosprint/2006-July/000384.html">[ArchipelagoSprint] Time to get cracking on Plone 3.0!</a><br />
<blockquote>Wrt. timelines, I was hoping that we could try to have a &#8220;Tech preview&#8221; release before the Plone Conference 2006 in Seattle (October 25-27) &#8211; I&#8217;m going to be on-stage there talking about the exciting new features of Plone 3.0 &#8211; and I&#8217;d like to not be booed off stage. Yes, this is embarrassment-driven development &#8211; as usual. <img src='http://www.blueskyonmars.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </p></blockquote>
<p>That&#8217;s Alexander Limi illustrating the prime motivator for EDD.</p>
<p>The idea behind EDD is simple: <b>if you have to demo something in front of an audience, and that something sucks, you will move hell or high water to make sure you don&#8217;t look like an idiot</b>.</p>
<p>Every product has rough edges and warts, but no one wants a demo to be all warty and to have to say &#8220;yeah, I know you shouldn&#8217;t have to click to the left of the button, but we just haven&#8217;t gotten to that yet&#8221;. EDD ensures that, at least for the parts you have to get up and show, the rough edges will be smoothed <em>in time for the show</em>.</p>
<p>I&#8217;m going to be practicing EDD leading up to <a href="http://jsconf2009.com/">JSConf</a>. I want to be able to show some useful, non-trivial bits of <a href="http://groups.google.com/group/serverjs">ServerJS</a> work by then.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=4ecd36b9-9dd0-44f5-b30a-dc884e2dc9e5" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.blueskyonmars.com/2009/03/02/embarrassment-driven-development/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>280Atlas looks amazing</title>
		<link>http://www.blueskyonmars.com/2009/02/24/280atlas-looks-amazing/</link>
		<comments>http://www.blueskyonmars.com/2009/02/24/280atlas-looks-amazing/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 02:48:39 +0000</pubDate>
		<dc:creator>Kevin Dangoor</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[280atlas]]></category>
		<category><![CDATA[280north]]></category>
		<category><![CDATA[cappuccino]]></category>
		<category><![CDATA[objective-j]]></category>

		<guid isPermaLink="false">http://www.blueskyonmars.com/?p=2548</guid>
		<description><![CDATA[If you haven&#8217;t seen it yet, you really should watch the demo of 280Atlas. It&#8217;s basically Interface Builder written for the browser. Just watch their demo and tell me that that doesn&#8217;t look like a great way to build webapps (and I do mean apps and not sites).
A lot of work goes into designing good [...]]]></description>
			<content:encoded><![CDATA[<p>If you haven&#8217;t seen it yet, you really should watch the demo of <a href="http://280atlas.com/">280Atlas</a>. It&#8217;s basically <a href="http://en.wikipedia.org/wiki/Interface_Builder">Interface Builder</a> written for the browser. Just watch their demo and tell me that that doesn&#8217;t look like a great way to build webapps (and I do mean <em>apps</em> and not sites).</p>
<p>A lot of work goes into <em>designing</em> good software. <a href="http://280north.com/">280North</a> are taking the great design work put in on Apple&#8217;s developer tools and making it available to people building browser-based apps. They&#8217;ve saved themselves the work of inventing every little piece of the model, instead focusing on the work of making it work well in JavaScript.</p>
<p>Awesome work, guys!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueskyonmars.com/2009/02/24/280atlas-looks-amazing/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.726 seconds -->
