<?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:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>dambalah</title>
	<atom:link href="http://dambalah.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dambalah.com</link>
	<description>thoughts of a haitian hacker...</description>
	<pubDate>Wed, 07 May 2008 00:58:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
			<item>
		<title>Five Rails Tips</title>
		<link>http://dambalah.com/2008/05/06/five-rails-tips/</link>
		<comments>http://dambalah.com/2008/05/06/five-rails-tips/#comments</comments>
		<pubDate>Tue, 06 May 2008 01:32:19 +0000</pubDate>
		<dc:creator>Luc Castera</dc:creator>
		
		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby rails railscasts]]></category>

		<guid isPermaLink="false">http://dambalah.wordpress.com/?p=70</guid>
		<description><![CDATA[I&#8217;m a big fan of Ryan Bates&#8217; Railscasts. He is holding a contest and I thought I would participate and share 5 Rails tips with the community.
Without further ado, here are my five tips.
Tip 1: Rake task to remove tildes (~) added by text editors
My favorite text editors (emacs or gedit) create files that end [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;m a big fan of Ryan Bates&#8217; <a>Railscasts</a>. He is holding a <a href="http://railscasts.com/contest">contest</a> and I thought I would participate and share 5 Rails tips with the community.</p>
<p>Without further ado, here are my five tips.</p>
<h3>Tip 1: Rake task to remove tildes (~) added by text editors</h3>
<p>My favorite text editors (emacs or gedit) create files that end with a tilde character (~) as backup copies when I modify a file. Thus, after working on my rails project for a while, I have a bunch of files ending with ~ that are hanging around. At times, it can be annoying to have my directories filled with these files so I use a rake tasks to get rid of them all.</p>
<p>Put the following in a file called <em>&#8217;tilde.rake&#8217;</em> and save this file in your rails project under the <em>lib/tasks/</em> directory.</p>
<p><code><br />
desc &#8216;Deletes all files that end with tilde (~)&#8217;<br />
task &#8217;tilde&#8217; do<br />
files = []<br />
Dir.glob(&#8217;**/*~&#8217;).each do |file|<br />
File.delete(file)<br />
files &lt;&lt; file<br />
end<br />
puts &#8220;Deleted the following files: #{files.join(&#8217;, &#8216;)}&#8221;<br />
end<br />
</code></p>
<p>To run the task, simply run the following rake tasks from your shell:</p>
<p><code>rake tilde</code></p>
<p><strong>Update: </strong>See Dominic&#8217;s comment. Rake already includes a task to clean-up files. Just need to include &#8216;rake/clean&#8217;. Thanks Dominic.</p>
<h3>Tip 2: Small Erb Tip</h3>
<p>Did you ever need to display <em>&lt;%</em> or <em>%&gt;</em> in an erb template but didn&#8217;t know how to do it? I&#8217;ve been there!</p>
<p>It&#8217;s quite easy actually, all you have to do is use <em>&lt;%%</em> and <em>%%&gt;</em> instead and the erb templating engine will replace them with the appropriate <em>&lt;%</em> and <em>%&gt;</em>.</p>
<h3>Tip 3: Detect Cross-Script Scripting (XSS) Attacks &#8216;Holes&#8217;</h3>
<p>If you do not know about XSS attacks, panic and go read <a href="http://manuals.rubyonrails.com/read/chapter/44">this chapter</a> of the Rails manual to learn about them.</p>
<p>Rails provide the h() helper method for HTML meta-character conversion in views. It&#8217;s important to use it whenever you are inserting dynamic data in your erb templates.</p>
<p>Sometimes, I want to double check that I&#8217;ve been using the h() helper methods everywhere so I want a list of everywhere I&#8217;ve used <em>&lt;%=</em> in my views. I use the following command to scan through all the <em>&lt;%=</em> where I&#8217;m missing the helper method:</p>
<p><code>grep -R '&lt;%=' app/views/* | grep -v '&lt;%=h' | grep -v '.svn' | more</code></p>
<p>Rather than typing that command everytime, I simply created an alias for it by saving the following in my <em>.bash_aliases</em> file:</p>
<p><code>alias xss_erb_scan="grep -R '&lt;%=' app/views/* | grep -v '&lt;%=h' | grep -v '.svn' | more"</code></p>
<h3>Tip 4: gEdit on Rails</h3>
<p>My laptop runs Ubuntu so I use gedit for doing Rails development. gedit is highly configurable and you can turn it into a bad-ass Rails-IDE with a few tweaks.</p>
<p>First follow the steps on <a href="http://grigio.org/pimp_my_gedit_was_textmate_linux">this tutorial</a>. This will make your gedit environment pretty much ready for rails development.</p>
<p>Then, you can add the ability for gedit to execute Ruby code that you have in your currently open document by just using a keyboard shortcut. To do this, first install the &#8216;External Tools&#8217; plugin. Go to &#8216;Edit&#8217;, then &#8216;Preferences&#8217;, and select the &#8216;Plugins&#8217; tab. Find and select the &#8216;External Tool&#8217; plugin and click on &#8216;Configure this plugin&#8217;. The following window should popup.</p>
<p><a href="http://dambalah.files.wordpress.com/2008/05/gedit1.png"><img class="alignnone size-medium wp-image-71" src="http://dambalah.files.wordpress.com/2008/05/gedit1.png?w=300&h=190" alt="" width="300" height="190" /></a></p>
<p>Click on the &#8216;New&#8217; button and create an &#8216;Execute Ruby&#8217; tool by filling in the information as shown below:</p>
<p><a href="http://dambalah.files.wordpress.com/2008/05/gedit2.png"><img class="alignnone size-medium wp-image-72" src="http://dambalah.files.wordpress.com/2008/05/gedit2.png?w=300&h=190" alt="" width="300" height="190" /></a></p>
<p>That&#8217;s it. You can close the window and test by writing some ruby code in a new document and pressing F5. The code will execute and the output will be shown at the bottom of the editor.</p>
<p><a href="http://dambalah.files.wordpress.com/2008/05/gedit3.png"><img class="alignnone size-medium wp-image-73" src="http://dambalah.files.wordpress.com/2008/05/gedit3.png?w=300&h=175" alt="" width="300" height="175" /></a></p>
<h3>Tip 5: Explore Other Ruby Web Frameworks</h3>
<p>My last tip is to explore other ruby web frameworks. There are a lot of other web frameworks written in Ruby and you can learn a lot by just exploring them. Even if you do not plan to use them for a production site, try using them for a small project, look inside their codebase and try to understand the code. Since Rails is a more mature and more complex framework, it can be scary to look inside the Rails code but the same can&#8217;t be said for some of the newer, lighter frameworks out there. Furthermore, exploring these other frameworks can give you new ideas when working on Rails projects. So just like the <a href="http://www.pragprog.com">pragmatic programmers</a> advocate learning one new language a year, I recommend learning a few web frameworks in that language during that year to expand your knowledge of the language and avoid tunnel vision. So go start exploring <a href="http://www.merbivore.com">Merb</a>, <a href="http://ramaze.net">Ramaze</a>, <a href="http://code.whytheluckystiff.net/camping">Camping</a>, <a href="http://sinatrarb.com/Welcome">Sinatra</a>, etc&#8230; Check <a href="http://ramaze.net/#other-frameworks">here</a> for a full list of Ruby web frameworks.</p>
<p>I hope you will find some of these tips useful. I look forward to read the tips submitted by the other <a href="//railscasts.com">railscast</a> readers.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dambalah.wordpress.com/70/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dambalah.wordpress.com/70/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dambalah.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dambalah.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dambalah.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dambalah.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dambalah.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dambalah.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dambalah.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dambalah.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dambalah.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dambalah.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dambalah.com&blog=779357&post=70&subd=dambalah&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dambalah.com/2008/05/06/five-rails-tips/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dambalah-128.jpg" medium="image">
			<media:title type="html">dambalah</media:title>
		</media:content>

		<media:content url="http://dambalah.files.wordpress.com/2008/05/gedit1.png?w=300" medium="image" />

		<media:content url="http://dambalah.files.wordpress.com/2008/05/gedit2.png?w=300" medium="image" />

		<media:content url="http://dambalah.files.wordpress.com/2008/05/gedit3.png?w=300" medium="image" />
	</item>
		<item>
		<title>becamp slides - Ramaze</title>
		<link>http://dambalah.com/2008/05/03/becamp-slides-ramaze/</link>
		<comments>http://dambalah.com/2008/05/03/becamp-slides-ramaze/#comments</comments>
		<pubDate>Sat, 03 May 2008 19:49:01 +0000</pubDate>
		<dc:creator>Luc Castera</dc:creator>
		
		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[barcamp]]></category>

		<category><![CDATA[becamp]]></category>

		<category><![CDATA[becamp2008]]></category>

		<category><![CDATA[ramaze]]></category>

		<guid isPermaLink="false">http://dambalah.wordpress.com/?p=69</guid>
		<description><![CDATA[I am in Charlottesville attending becamp and I just talked about Ramaze, a lightweight web application framework written in Ruby.
My slides are below. They are also on scribd.

We had a very good group here and some interesting talks. I particularly enjoyed the talk on High Performance MySQL by Baron Schwartz. Ahson started a good discussion [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I am in Charlottesville attending <a title="becamp" href="http://barcamp.org/beCamp2008">becamp</a> and I just talked about <a title="Ramaze" href="http://ramaze.net">Ramaze</a>, a lightweight web application framework written in Ruby.</p>
<p>My slides are below. They are also on <a title="scribd" href="http://www.scribd.com/doc/2869199/Ramaze">scribd</a>.</p>
<p><object type='application/x-shockwave-flash' wmode='transparent' data='https://s3.amazonaws.com:443/slideshare/ssplayer.swf?id=386192&#038;doc=ramazeslideshare-1209842621709445-8' width='425' height='348'><param name='movie' value='https://s3.amazonaws.com:443/slideshare/ssplayer.swf?id=386192&#038;doc=ramazeslideshare-1209842621709445-8' /></object></p>
<p>We had a very good group here and some interesting talks. I particularly enjoyed the talk on High Performance MySQL by <a title="Baron Schwartz" href="http://www.xaprb.com/blog/">Baron Schwartz</a>. <a title="Ahson" href="http://www.linkedin.com/in/ahsonwardak">Ahson</a> started a good discussion on <a title="Web 3.0" href="http://www.slideshare.net/uvahson/ahson-wardak-web-30-be-camp-2008">Web 3.0</a>. The other sessions I attended were on &#8216;Javascript Design Patterns&#8217;, &#8216;High Availibility Linux&#8217;, and &#8216;Google App Engine.&#8217;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dambalah.wordpress.com/69/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dambalah.wordpress.com/69/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dambalah.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dambalah.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dambalah.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dambalah.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dambalah.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dambalah.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dambalah.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dambalah.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dambalah.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dambalah.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dambalah.com&blog=779357&post=69&subd=dambalah&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dambalah.com/2008/05/03/becamp-slides-ramaze/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dambalah-128.jpg" medium="image">
			<media:title type="html">dambalah</media:title>
		</media:content>
	</item>
		<item>
		<title>History Meme</title>
		<link>http://dambalah.com/2008/04/18/history-meme/</link>
		<comments>http://dambalah.com/2008/04/18/history-meme/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 01:52:34 +0000</pubDate>
		<dc:creator>Luc Castera</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://dambalah.wordpress.com/?p=67</guid>
		<description><![CDATA[This meme has been going around so I&#8217;m just following along&#8230;
$ history &#124; awk &#8216;{a[$2]++}END{for(i in a){print a[i] &#8221; &#8221; i}}&#8217; &#124; sort -rn &#124; head
106 c
100 l
61 cd
42 ls
28 b
26 sudo
24 cat
15 xrandr
11 ./dual_monitor.sh
9 e
A lot of these are aliases. c is my alias for clear, l for &#8216;ls -ltr&#8217;, b (as in back) [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This <a title="meme" href="http://en.wikipedia.org/wiki/Meme">meme</a> has been going around so I&#8217;m just following along&#8230;</p>
<p>$ history | awk &#8216;{a[$2]++}END{for(i in a){print a[i] &#8221; &#8221; i}}&#8217; | sort -rn | head</p>
<p>106 c<br />
100 l<br />
61 cd<br />
42 ls<br />
28 b<br />
26 sudo<br />
24 cat<br />
15 xrandr<br />
11 ./dual_monitor.sh<br />
9 e</p>
<p>A lot of these are aliases. c is my alias for clear, l for &#8216;ls -ltr&#8217;, b (as in back) for &#8216;cd ..&#8217;, e for &#8216;emacs&#8217;&#8230;</p>
<p>I spent some time recently setting up dual-monitors on my Ubuntu laptop which is why xrandr is there along with the dual_monitor.sh script. It works like a charm now. I&#8217;ll blog about my setup soon.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dambalah.wordpress.com/67/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dambalah.wordpress.com/67/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dambalah.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dambalah.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dambalah.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dambalah.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dambalah.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dambalah.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dambalah.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dambalah.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dambalah.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dambalah.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dambalah.com&blog=779357&post=67&subd=dambalah&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dambalah.com/2008/04/18/history-meme/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dambalah-128.jpg" medium="image">
			<media:title type="html">dambalah</media:title>
		</media:content>
	</item>
		<item>
		<title>Ajax World Conference - Day 3</title>
		<link>http://dambalah.com/2008/04/13/ajax-world-conference-day-3/</link>
		<comments>http://dambalah.com/2008/04/13/ajax-world-conference-day-3/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 14:34:28 +0000</pubDate>
		<dc:creator>Luc Castera</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://dambalah.wordpress.com/?p=66</guid>
		<description><![CDATA[Finally, my notes on the third day of Ajax World East 2008 in New York City.
Opening Keynote: RIA Adoption in 2008
Anthony Franco from effectiveui started the day with a very engaging keynote. He was easily the best speaker of the conference: great delivery, engaging, interesting&#8230;
I liked the way he described his company: &#8220;we make cool [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Finally, my notes on the third day of Ajax World East 2008 in New York City.</p>
<h2>Opening Keynote: RIA Adoption in 2008</h2>
<p><a href="http://anthonyfranco.wordpress.com/">Anthony Franco</a> from <a href="http://www.effectiveui.com/">effectiveui</a> started the day with a very engaging keynote. He was easily the best speaker of the conference: great delivery, engaging, interesting&#8230;</p>
<p>I liked the way he described his company: &#8220;we make cool useful stuff for companies who pay us&#8221;. They are the ones behind the famous eBay desktop client which has gotten so much press and is always referred to as a good example of a Rich Internet Application (RIA) built on Adobe AIR.</p>
<p>He started by questioning the value of RIAs and the tunnel vision of the developer community, with the following statements:</p>
<ul>
<li>The Value of RIAs: Why would my mom care?</li>
<li>You are talented web designers: my mom is not impressed.</li>
</ul>
<p>Why should you care about his mom? Well, she could spending thousands online but nobody takes the time to talk to her.</p>
<p>He used <a href="http://www.starbucks.com/">Starbucks</a> and <a href="http://www.target.com/">Target</a> as two examples of companies that manage to create great in-store user experiences but failed to re-create that same user-experience quality online. On the other hand, he used <a href="http://37signals.com/">37Signals</a> as an example of a company that is seen as the gold standard of the Web 2.0 era and pointed that one of the reasons they are so succesful is because they own their product. They dictate the how, the where, the why. They are the audience since they use their own products. However, a lot of us are not the audience for the stuff we build. A development firm cannot dictate to a car insurance company how their customers must be buying car insurance because they have to worry about issues such as compliance, etc&#8230;</p>
<p>Anthony believes that Web 2.0 should be about Utility + Community + Engaging Experiences. However, he doesn&#8217;t believe we have achieved that very well. He used a quote from Chris Bernard to illustrate what he believes is happening currently in Web 2.0: &#8220;Web 1.0 = Bad Photoshop, Web 2.0 = Good Photoshop&#8221;. Anthony&#8217;s address was like a wake-up call to the IT &amp; Web communities: &#8220;We are not talking to the audience, not talking to our customers. Shame on us.&#8221;</p>
<p>He then went on to address every player in that community and tell them that they are responsible for this. We all are. &#8220;It is your responsibility. Stop pointing the finger&#8221;:</p>
<ul>
<li><strong>Designers:</strong>Lose the ego and listen to your customers</li>
<li><strong>Developers:</strong>You are not the smartest person in the room. Drop the religion and listen to your customers. Putting it in front of users even if the code is ugly means you will get more user feedback early.</li>
<li><strong>Product Managers:</strong>Stop Talking and Start Doing. Most great products are figured out along the way.</li>
<li><strong>Marketers:</strong> Scream Louder! your customers are counting on you to be their voice.</li>
<li><strong>CIOs and CTOs:</strong>The Technology does not matter to your customers. If they can&#8217;t use the applications you build.</li>
<li><strong>Customer Support:</strong>Don&#8217;t worry, your job is secure for a while.</li>
<li></li>
<li><strong>CFOs:</strong> Find the money</li>
<li><strong>CEOs:</strong> Watch your back. Give your team the latitude to fail in incremental ways. As long as they are failing in the right direction, you are doing the right job.</li>
</ul>
<p>For each category of players, he used quotes that he has heard in the field that reflects the problem with this folks:</p>
<ul>
<li>Designer: &#8220;Good design intuition is more important than user interviews&#8221;</li>
<li>Developer: &#8220;Flash is bad&#8221;, &#8220;Microsoft sucks&#8221;</li>
<li>Marketers: &#8220;I don&#8217;t want to have to argue with my IT deparment&#8221;</li>
<li>CIOs and CTOs: &#8220;We do not have the internal skills to build and maintain that&#8221;</li>
<li>Customer Support: &#8220;Our site is a Frankeinstein&#8221;</li>
<li>CEO: &#8220;We need to keep pace with our competitors&#8221;</li>
</ul>
<p>He pointed out that 500 Large enterprises were asked in a recent survey: Are RIAs more important for you in 2008? Nearly 70% answered yes.</p>
<p>Wow! That was a great presentation. It was engaging. He made 30 minutes fly by like it was 5 minutes. He urged the audience to challenge him on <a href="http://anthonyfranco.wordpress.com/2008/03/20/ria-discussion-ajax-world/">his blog</a>, so go join the discussion if you are interested.</p>
<h2>Session 2: The Social Aggregator - Widgets Reshape the Social Web</h2>
<p>I was surprised to see that <a href="http://drinkingoatmealstout.com/">Justin Thorp</a> was the speaker since he wasn&#8217;t the listed speaker. Justin is someone I consider to be a leader of the DC Web community, for his involvment in putting together <a href="http://barcampdc.org/">barcampDC</a> and the <a href="http://dctechnology.ning.com/">Ning DC Technology Network</a>. I had met him during <a href="http://dc.startupweekend.com/">Startup Weekend in DC</a> so it was good to see a fellow DCist was there.</p>
<p>Justing started with a brief description of where the web has been, where we are now, and where he believes it will go. Back in the day, we had big portals such as Yahoo that were editor driven. It was costly to put together a site so only professionals did it. In a way, browsing the web was like reading a newspaper or magazine, where an editor selected what you should read about.</p>
<p>With Web 2.0, we have better publishing tools, offline apps are going online, more storage has helped user-generated content, websites are more community oriented, etc&#8230; <a href="http://www.micropersuasion.com/2008/03/the-future-is-w.html">At the end of the day, it&#8217;s really not about your web site. It&#8217;s about your content and functionality.</a> How is your application going to bring pleasure to users?</p>
<p>He then went on to describe web widgets and how the <a href="http://www.clearspring.com/">ClearSpring</a> platform can help you deploy a widget. The big problem with widgets is that there are no standards yet, so if you want to develop a widget, you will have to code one for iGoogle, one for NetVibes, one for Hi5, etc&#8230; The social aggregator market is fragmented and that makes widget development more difficult. With the Clearspring platform, you only have to write the widget once, embed it in a ClearSpring container, and deploy it on a long list of sites.</p>
<p>Justin used an interesting metaphor between a website being your movie theatre and widgets being DVDs. You can carry them everywhere you go. They adapt to your situation and therefore makes your product more suitable to the user&#8217;s lifestyle.</p>
<p>Why should a company build widgets?</p>
<ul>
<li>extend</li>
<li>promote</li>
<li>express</li>
<li>share</li>
<li>innovate</li>
</ul>
<p>Some stats: 81% of all web users saw a widget in nov. 2007&#8211;&gt; 148 million people</p>
<p>Someone from the audience made an interesting comment. She asked what happens to the person that brings in value by putting together a set of widgets on a page like iGoogle and sharing it. In a way, that person is a &#8220;Widget DJ&#8221;. How can that person be rewarded for this work? Should he/she be rewarded for doing it?</p>
<h2>Session 3: Now Playing: Desktop Apps in the Browser!</h2>
<p>This presentation was a sales pitch for <a href="http://www.nexaweb.com/home/us/index.html">nexaweb</a>. They made it very interesting to listen to by role-playing. <a href="http://coachwei.com/">Coach Wei</a> played the role of the CIO of a company that is defining their IT strategy while <a href="http://rockstarapps.com/">Bob Buffone</a> was his chief architect, trying to go through the whole pletoria of tools, frameworks, languages to find the best solution. Bob finally arrived at the conclusion that NexaWeb made it so much easier to do plenty of things while keeping a consistent development environment. Their development environment seems compelling and I&#8217;m sure they will sell some products after this presentation since the audience seemed to enjoy it.</p>
<h2>Session 4: DreamFace: The ultimate Framework for creating Personalized Web 2.0 Mashups</h2>
<p>Olivier Poupeney, CEO of <a href="http://dreamface-interactive.com/">DreamFace Interactive</a>, gave us a demo of his company&#8217;s product. DreamFace is a very cool application. My best description would be: a highly-configurable iGoogle on steroid for the enterprise with the ability to create your own workflows and enable widget interactions. An example of widget interaction (which you can&#8217;t currently do on iGoogle) that he demoed is clicking on a note widget automatically launches a YouTube search for the keyword in that note. Very cool stuff.</p>
<p>The interesting part is that during the widget session earlier, we briefly discussed the idea of using a widget aggregation portal as the main intranet portal for a company&#8230; and in the next session, Olivier demoed DreamFace, which is just that (and more).</p>
<h2>Session 5: Digital Black Belt&#8217;s Gide to ASP.NET AJAX Security</h2>
<p><a href="http://joeon.net/">Joe Stagner</a> from Microsoft was the speaker for this great presentation on Ajax security. Even though the title pointed to ASP.NET but the talk could be applied to any other platform.</p>
<p>Joe does not agree with Douglas Crockford theme on yesterday&#8217;s keynote. He doesn&#8217;t think that the web is broken. He believes that JavaScript and AJAX is a fine set of tool, but that developers are the ones to blame for not being more careful about AJAX Security.</p>
<p>Joe started his talk with the main points that we should get out of his presentation:</p>
<ul>
<li>&#8220;To catch a bad guy, you have to start to think like a bad guy&#8221;</li>
<li>Consider ALL input evil until proven otherwise</li>
<li>Accept the power of JavaScript an HTML</li>
<li>Understand the combinatorial attack</li>
<li>completely buy into &#8220;Defense in Depth&#8221;</li>
</ul>
<p>Security is crucial because in today&#8217;s web, we are not only defending our infrastructure (servers, databases) but also our customers. If our web application gets hacked, our customers gets hurt also.</p>
<p>Joe showed us a few tool that he uses that can help us in the quest to &#8220;think like a bad guy&#8221;: fiddler, webscarab, ViewStateDecoder, his own Password Cracker, etc&#8230; I&#8217;ve used fiddler before and it helps a lot when doing web development. Every developer should used a similar tool to monitor HTTP traffic. At work, I used HTTPWatch in IE and FireBug in Firefox. I highly recommend downloading both. HTTPWatch is not free but if you can afford a license, it&#8217;s definitely worth it. Joe was using IE8 and it ships with a DOM Browser and a debugger. That&#8217;s awesome! Debugging on IE was more difficult because they lacked a good alternative to FireBug, but it will now be included in the main distribution.</p>
<p>Here are few tips from Joe&#8217;s talk:</p>
<ul>
<li>If you are taking user input and adding it to the page, use Server.HTMLEncode (if you use .NET) on the server side to ensure your get rid of malicious input</li>
<li>When you filter evil code, always use a <a href="http://en.wikipedia.org/wiki/White_list">white list</a>, not a <a href="http://en.wikipedia.org/wiki/Blacklist">black list</a></li>
<li>When you detect that a user was trying to launch an SQL Injection, record that user ID and IP Address</li>
<li>There is no such thing as security through obscurity. However, it doesn&#8217;t hurt to make it more difficult for the bad guy. For example, give your password db column another name</li>
<li>Just because you hash your password doesn&#8217;t mean a hacker who obtains the hash version can&#8217;t recover the password from it. With a brute force attach or a dictionary attack it can be trivial to obtain the password. Joe wrote a tool that does just that and promised to post the code for the tool on his blog.</li>
<li>Book Recommendation: &#8220;Ajax Security&#8221; by Billy Hoffman</li>
<li>To avoid SQL Injection attacks, use stored procedures or parametrized queries (all devs should know this by now, right?)</li>
</ul>
<p>Joe also showed us a few attacks that are common. Some of them a quite clever:</p>
<ul>
<li>To embed a script on a page, crackers use &#8220;&lt;script&lt;script&gt;&gt;&#8221; instead of &#8220;&lt;script&#8221;&gt;. This way, if you are using a black list and replace &#8220;&lt;script&gt;&#8221; with &#8220;&#8221;, the resulting string is &#8220;&lt;script&gt;&#8221;.</li>
<li>He showed us how damaging SQL injections can be</li>
<li>A cracker can add an image to a web page with a height of 1px and a width of 100% with onMouseOver event caller, this way the user does not even see the image but keeps launching the events as his mouse goes over the image</li>
<li>Evil javascript inserted on the page can read data from a user&#8217;s clipboard. Think about all the time people copy and paste their passwords!</li>
<li>Javascript key loggers that sends all the keys you touch to a malicious server. Sometimes the cracker opens a new browser window which he places outside of the viewable screen area, so even if you close your browser, this new instance of the browser stays open and you don&#8217;t see it</li>
<li>With javascript, a user can get your browser history by comparing the color of your links with a list of known urls. Pretty simple code to write but imagine how vulnerable you are if a cracker knows what websites you visit. He can now launch a phishing attack on you since he knows what emails you are likely to open</li>
</ul>
<p>All this stuff is scary because as a big web user, I visit a lot of sites everyday and I don&#8217;t know if any of them have been attacked. Joe got me paranoid. I think I might start to leave fiddler running at all times on my machine so I can be sure no one is collecting info from my PC.</p>
<h2>Session 6: Data And Syndicated Oriented Architecture</h2>
<p>This talk was by <a href="http://www.oreillynet.com/pub/au/203">Kurt Cagle</a> from <a href="http://www.burtongroup.com/">Burton Group</a>. Kurt is a managing editor for <a href="http://xml.com/">xml.com</a>.</p>
<p>This session was like attending a philosophy class where the topic of the day was XML and REST :-). A lot of acronyms and buzz words were thrown at us. The speaker obviously knows a whole lot about the subject but I feel like he could have made the talk more accessible and engaging.</p>
<p>In essence, Kurt talked about the emergence of <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a>. To quote him, &#8220;REST is XML++. It&#8217;s where XML is going&#8221;. If you have never heard of REST, I urge you to learn more about it as it will play a bigger role on the web in the near future.</p>
<h2>Session 7: Using the DOJO toolkit to create AJAX powered forms</h2>
<p><a href="http://www.informit.com/authors/author_bio.aspx?ISBN=9780132358040">James Harmon</a> from <a href="http://www.objecttraininggroup.com">Object Training Group</a> showed us how we can make HTML forms more user-friendly using <a href="http://dojotoolkit.org/">the Dojo toolkit</a>. It was a very focused talk. He didn&#8217;t cover too much but covered it slowly and in depth. It was a good introduction for people, like me, who have never used Dojo.</p>
<p>Dojo makes it really easy to create great HTML forms with validations, cool tool tips, better elements/widgets. They recently passed the 1.0 mark and the framework is quite stable now. Dojo has a partnership with AOL CDN so you can point your javascript include statement to the AOL CDN servers and leverage that infrastructure. Dojo is server-side agnostic but James think that Dojo is a good fit for Java shops.</p>
<p>James spent most of the presentation showing us code and demo-ing the form he enhanced with Dojo. You can download the powerpoint slides of his presentation <a href="http://objecttraininggroup.com/dojo">here</a>, as well as the source code.</p>
<h2>Session 8: Open-Source AJAX Test Automation</h2>
<p><a href="http://ptt.qutang.net/About/bio.html">Frank Cohen</a> of <a href="http://ptt.qutang.net/">PushToTest</a> was the speaker for the last talk of the day. His talk was focused on the importance of testing and how one can automate AJAX testing.</p>
<p>Quote: &#8220;Testers don&#8217;t get all the cool tools that developers get.&#8221;</p>
<p>3 Steps for testing AJAX Apps:</p>
<ol>
<li>Observe: understand what the business flows are that are occuring within an application, what protocols/data are being used.</li>
<li>Test:
<ul>
<li>a. Load Testing: do I have enough hardware? At what point will my system fail?</li>
<li>b. Functional Testing: combination of regression testing (it used to work and now it doesn&#8217;t) and integration testing (are all components working together correctly)</li>
<li>c. Monitoring</li>
</ul>
</li>
<li>Correlate what is happening on the front end with what&#8217;s happening on the back-end.</li>
</ol>
<p>We need to automate this process. It&#8217;s important to have a Quality Engineering Process (QEP). It&#8217;s no longer possible for companies that are using Ajax to do manual testing and expect to achieve certain level of SLA. You can&#8217;t achieve a QEP without developers, testers, and IT working together.</p>
<p>Frank then went on to introduce his Test Automation Platform.</p>
<p>Client Side:</p>
<ul>
<li><a href="http://www.timdown.co.uk/log4javascript">JavaScript Logging</a></li>
<li><a href="http://www.getfirebug.com">Firebug</a></li>
<li><a href="http://xpath.alephzarro.com/">XPather</a></li>
<li><a href="http://mozilla.org/projects/inspector">DOM Inspector</a></li>
<li><a href="http://selenium-ide.openqa.org/">Selenium IDE</a></li>
</ul>
<p>Server-Side:</p>
<ul>
<li><a href="http://www.glassbox.com">Glassbox</a></li>
<li>PushToTest TestMaker</li>
<li>PushToTest TestNode</li>
<li>PushToTest Monitor (pttmonitor)</li>
</ul>
<h2>Summary</h2>
<p>Another great day at AjaxWorld. Overall, it was a good conference. I really enjoyed the sessions and learned a lot. Now I have a lot of homework to do to try to learn more about all these cool technologies.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dambalah.wordpress.com/66/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dambalah.wordpress.com/66/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dambalah.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dambalah.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dambalah.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dambalah.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dambalah.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dambalah.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dambalah.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dambalah.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dambalah.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dambalah.wordpress.com/66/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dambalah.com&blog=779357&post=66&subd=dambalah&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dambalah.com/2008/04/13/ajax-world-conference-day-3/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dambalah-128.jpg" medium="image">
			<media:title type="html">dambalah</media:title>
		</media:content>
	</item>
		<item>
		<title>Ajax World Conference - Day 2</title>
		<link>http://dambalah.com/2008/04/13/ajax-world-conference-day-2/</link>
		<comments>http://dambalah.com/2008/04/13/ajax-world-conference-day-2/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 14:33:39 +0000</pubDate>
		<dc:creator>Luc Castera</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://dambalah.wordpress.com/?p=64</guid>
		<description><![CDATA[The conference was a a few weeks back and I never had a chance to post my review/notes on day 2 and 3 of the conference. I finally got to clean-up my notes so here they are. Better late than never!
Opening Keynote: Can we fix the Web?
Douglas Crockford was the opening keynote today. He is [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The conference was a a few weeks back and I never had a chance to post my review/notes on day 2 and 3 of the conference. I finally got to clean-up my notes so here they are. Better late than never!</p>
<h2>Opening Keynote: Can we fix the Web?</h2>
<p><a href="http://www.crockford.com/">Douglas Crockford</a> was the opening keynote today. He is the creator of <a href="http://www.json.org">JSON</a>. If you&#8217;ve never heard of him and you do AJAX development, I urge you to visit <a href="http://javascript.crockford.com/">his site</a>. In my opinion, it&#8217;s one of the best JavaScript resource on the Internet. In many ways, Douglas has made my life as a developer easier, in particular with JSON and JSMin. For these reasons, I was excited about his keynote and he did not dissapoint me.</p>
<p>Douglas believes that the number one problem of the web is security:</p>
<ul>
<li>an attacker that is able to run scripts on your page can request more scripts</li>
<li>an attacker can make requests to your server</li>
<li>an attacker can read the document and obtain sensitive information</li>
<li>an attacker has control of the display so they can request more info from the user</li>
<li>an attacker can send data anywhere in the world</li>
</ul>
<p>Web applications are built using a set of languages such as JavaScript, HTML, CSS, etc.. This makes it more difficult to enforce security because text that is benign on one langague can be dangerous on another one.</p>
<p>The web standards require these vulnerabilities to be present. What are the causes of insecurity?</p>
<ol>
<li>Javascript
<ul>
<li>All code run with the same authority</li>
<li>JavaScript is an insecure language and the ECMAScript4 proposal is even worse.</li>
</ul>
</li>
<li>DOM
<ul>
<li>All nodes are linked to all other nodes on the network.</li>
</ul>
</li>
<li>Cookies
<ul>
<li>Ambient authority leads to confusion and impersonation</li>
</ul>
</li>
</ol>
<p>Quote: &#8220;If there is a script from 2 or more sources, the application is not secure. Period.&#8221; This means that mashups are insecure by nature. The big problem is that advertising, the bread and butter of the web, is a mashup.</p>
<p>After showing the audience why the web is broken and insecure. Douglas started answering the question set in the title of his presentation: How can we fix the web? His strategy for fixing the web revolves around three points:</p>
<ol>
<li>Safe JavaScript subsets
<ul>
<li><a href="http://www.adsafe.org/">ADSafe</a> defines a safe HTML/JavaScript subset. From their website:<br />
<blockquote><p>ADsafe makes it safe to put guest code (such as third party scripted advertising or widgets) on any web page. ADsafe  defines a subset of JavaScript that is powerful enough to allow guest code to perform valuable interactions, while at the same time preventing malicious or accidental damage or intrusion. The ADsafe subset can be verified mechanically by tools like <a href="http://jslint.com/">JSLint</a> so that no human inspection is necessary to review guest code for safety. The ADsafe subset also enforces good coding practices, increasing the likelihood that guest code will run correctly.</p>
<p>The ADsafe subset blocks a script from accessing any global variables or from directly accessing the Document Object Model or any of its elements. Instead, ADsafe gives the script access to an ADSAFE object that is provided by the page&#8217;s server, giving indirect access to the guest code&#8217;s DOM elements and other page services.</p></blockquote>
</li>
<li>Google&#8217;s <a href="http://code.google.com/p/google-caja/">Caja</a> is also a safe JavaScript subset, but use transformation rather than validation. Using Caja, web apps can safely allow third-party scripts on their pages.</li>
</ul>
</li>
<li>Small browser improvements
<ul>
<li><a href="http://www.json.org/JSONRequest.html">JSONRequest</a> should be built into the browsers for safe data interchange .</li>
<li>HTML provides no modules</li>
</ul>
</li>
<li>Massive browser improvements: we need to replace JavaScript and the DOM. We could start with a subset of JavaScript such as ADSafe and add useful and secure features.</li>
</ol>
<p>Douglas concluded by saying that if we don&#8217;t fix the web, the competition (SilverLight, Flash, JavaFX) will displace it. They are all superior technologies.</p>
<p>For more coverage of Crockford&#8217;s Keynote address, check out these articles: <a href="http://yuiblog.com/blog/2008/03/24/crockford-ajaxworld-ch9/">1</a>, <a href="http://www.internetnews.com/dev-news/article.php/3735341">2</a></p>
<h2>Session 2: Accelerate AJAX development with Appcelerator</h2>
<p>Jeff Haynie from <a href="http://www.appcelerator.com">appcelerator</a> started his talk with a long history of web development. In my opinion, I think he spent too long on this portion of his talk and I felt like he lost the audience after a while. We were all waiting for the punch-line but it took too long to come.</p>
<p>Jeff gave us a brief overview of appcelerator&#8217;s platform. Appcelerator is an open source software company that develops products and services for rapid rich Internet application (RIA) development on a service-oriented architecture (SOA). You can find out more about their product on their website at <a href="http://www.appcelerator.com">www.appcelerator.com</a> or you can join their developer community at <a href="http://www.appcelerator.org/">www.appcelerator.org</a>.</p>
<h2>Session 3: Introduction to YUI</h2>
<p><a href="http://360.yahoo.com/ericmiraglia">Eric Miraglia</a> from Yahoo gave us a great introduction to the <a href="http://developer.yahoo.com/yui/">YUI Library</a>.</p>
<p>The main components of YUI are:</p>
<ul>
<li>YUI Core JavaScript</li>
<li>YUI JavaScript Utilities</li>
<li>YUI Controls/Widgets</li>
<li>YII CSS Core</li>
<li>YUI Tools</li>
<li>YUI Theater</li>
</ul>
<p>YUI Core javascript is very similar to <a href="http://prototypejs.org/">Prototype</a> or <a href="http://jquery.com/">JQuery</a>. It is broken down into three parts:</p>
<ul>
<li><a href="http://developer.yahoo.com/yui/yahoo/">The YAHOO Global Object</a>: It provides a single global namespace within which all YUI Library code resides and must be included everywhere you use the YUI Library. It provides a set of functions that is used throughout the library.</li>
<li><a href="http://developer.yahoo.com/yui/dom/">The Dom Collection</a> comprises a family of convenience methods that simplify common DOM-scripting tasks, including element positioning and CSS style management, while normalizing for cross-browser inconsistencies. With the DOM Collection, you can:
<ul>
<li>Position elements on the page</li>
<li>Manipulate styles: add and remove styles</li>
<li>Change viewport size</li>
<li>Add and remove clasnames</li>
</ul>
</li>
<li><a href="http://developer.yahoo.com/yui/event/">The YUI Event Utility</a> facilitates the creation of event-driven applications in the browser by giving you a simplified interface for subscribing to DOM events and for examining properties of the browser&#8217;s Event object.</li>
</ul>
<p>The YUI Core Javascript is only 31K Minified.</p>
<p>The YUI Javascript Utilities contains a set of libraries for <a href="http://developer.yahoo.com/yui/animation/">animation</a> (You can animate everything in the styles that have a value. That&#8217;s awesome!), <a href="http://developer.yahoo.com/yui/history/">browser history management</a> (to deal with back button), <a href="http://developer.yahoo.com/yui/connection/">connection management</a> (for doing AJAX), <a href="http://developer.yahoo.com/yui/cookie/">cookies manipulation</a>, <a href="http://developer.yahoo.com/yui/json/">JSON</a>, <a href="http://developer.yahoo.com/yui/">etc&#8230;</a> YUI uses a modular design. You only need to load what you need.</p>
<p>YUI Controls/Widgets is a set of controls or widgets that one can use on a web page. It includes controls for <a href="http://developer.yahoo.com/yui/calendar/">calendars</a>, <a href="http://developer.yahoo.com/yui/charts/">charts</a>, <a href="http://developer.yahoo.com/yui/colorpicker/">color picker</a>, <a href="http://developer.yahoo.com/yui/slider/">Slider</a>, <a href="http://developer.yahoo.com/yui/">etc&#8230;</a> YUI contains one of the best collections of controls among JavaScript frameworks.</p>
<p>The YUI library also provides a set of CSS tools. It is less than 7K of CSS when you pack all of the files together. It it composed of four elements:</p>
<ul>
<li><a href="http://developer.yahoo.com/yui/reset/">Reset CSS</a>: Neutralize differences in the browsers&#8217; default stylesheets and provides a normalized fuoundation on which to build. Takes away all of the default presentation from the different browser implementations.</li>
<li><a href="http://developer.yahoo.com/yui/base/">Base CSS</a>: provides baseline browser-neutral styling treatments for common HTML.</li>
<li><a href="http://developer.yahoo.com/yui/fonts/">Fonts CSS</a>: foundation for typography and font-sizing.</li>
<li><a href="http://developer.yahoo.com/yui/grids/">Grids CSS</a>: for page layout. This is similar to the <a href="http://code.google.com/p/blueprintcss/">Blueprint CSS framework</a>.</li>
</ul>
<p>While the competition between JavaScript frameworks is intense, YUI has a lot to offer:</p>
<ul>
<li>Great documentation</li>
<li>Yahoo will host the YUI files for you, on their CDN.</li>
<li>Dedicated team working on YUI full time. Used by more than 400+ million users.</li>
<li>One of the most comprehensive suite of controls/widgets</li>
<li>CSS libraries to go with the JavaScrit libraries</li>
<li></li>
<li><a href="http://developer.yahoo.com/yui/theater/">YUI Theater</a></li>
<li>A great set of tools such a <a href="http://developer.yahoo.com/yui/profiler/">profiler</a>, a <a href="http://developer.yahoo.com/yui/compressor/">Javascript Compressor</a>, <a href="http://developer.yahoo.com/yui/yuitest/">a testing framework</a>&#8230;</li>
</ul>
<p>Though I&#8217;ve never used the YUI library, it looks great and I would definitely consider using it on my next project.</p>
<h2>Session 4: Enterprise Comet: Real-Time, or Real-Time Web 2.0?</h2>
<p><a href="http://www.jroller.com/jonasjacobi/">Jonas Jacobi</a>, co-founder of <a href="http://www.kaazing.com">Kaazing</a>, started by defining the term &#8220;real-time&#8221;. His web search brought up the following definitions of real-time:</p>
<ul>
<li>A system that responds to an external event within a short and predictable time frame</li>
<li>&#8230;so rapidly that the interaction appears instantaneous</li>
<li>An activity which occurs &#8220;while you wait&#8221;, rather than being delayd for processing at a later time.</li>
</ul>
<p>He then proceeded to define the &#8216;real-time web&#8217; and came up with the following:</p>
<ul>
<li>Web Clients instanteneously updated</li>
<li>End-users receive updates simultaneously.</li>
</ul>
<p>Finally, he came to the conclusion that what matters is when you notify the user.</p>
<p>Comet is a technique to establish a permanent connection from server to client over HTTP. Comet allows you to send messages from server to client. It&#8217;s a pushing mechanism, rather than the traditional pulling mechanism that we are used to on the web. It is client agnostic. It supports browser clients or desktop applications.</p>
<p>HTTP 1.1 uses 2 connections per domain. So if you tie one connection to Comet, then there is only one connection left for your application to work with. The solution is to use sub-domains to work around this limitation. This sub-domain technique is recommended by Steve Souders in <a href="http://www.amazon.com/High-Performance-Web-Sites-Essential/dp/0596529309/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1207011786&amp;sr=8-1">&#8220;High Performance Web Sites&#8221;</a> and Rails 2.0 makes it very easy to configure.</p>
<p>Some Comet use-cases:</p>
<ul>
<li>External Data Model Changes
<ul>
<li>Web stock ticker</li>
<li>Web chat and mail - new messages received</li>
<li>Web online games - multi-player poker</li>
</ul>
</li>
<li>Shared Data Model Changes: issue tracker updates</li>
<li>Sports - a goal is scored</li>
</ul>
<p>Jonas then went on to discuss scability issues with Comet. In particular, how do you send all these messages at the same time? The problem is that the server must copy messages across multiple-connections, possibly thousands.</p>
<p>Comet seems like an interesting technology and I look forward to see what will happen in that space.</p>
<h2>Session 5: jMaki Webtop: an AJAX Mashup Framework</h2>
<p><a href="http://blogs.sun.com/arungupta">Arun Gupta</a> who presented the day before on <a href="http://jmaki.com/">jMaki</a> used this session to introduce us to the <a href="http://jmaki.com/webtop/">jMaki Webtop</a>. He started with a short introduction of jMaki for those who did not attend his longer presentation on the subject the day before. Then, he proceeded to explain what jMaki Webtop is and showed us a demo.</p>
<p>jMaki webtop is a Mashup Framework that is:</p>
<ul>
<li>Simple and easy to use</li>
<li>Runs in browser</li>
<li>Evolution</li>
<li>Extensible</li>
<li>Manageable</li>
<li>Persistent: with Google Gears</li>
<li>Shared</li>
</ul>
<p>In a few words, it&#8217;s kinda like a configurable iGoogle page. You can play with the demo that he showed us <a href="http://jmaki.com/webtop/">here</a>.</p>
<p>Arun posted <a href="http://blogs.sun.com/arungupta/resource/confs/glassfish-jmaki-webtop-awe08.pdf">his slides on his blog</a>, along with great reports of <a href="http://blogs.sun.com/arungupta/entry/ajax_world_east_2008_day">day 1</a> and <a href="http://blogs.sun.com/arungupta/entry/ajax_world_east_2008_day1">day 2</a> of Ajax World.</p>
<h2>Session 6: Real-World Enterprise Rails and AJAX: Top 10 lessons learned</h2>
<p><a href="http://www.openlogic.com/company/team.php#rod">Rode Cope</a> is the CTO and Founder of <a href="http://www.openlogic.com/index.php">OpenLogic, Inc</a>. He used Rails to build <a href="http://osscensus.org/">osscensus.org</a>, a global community effort to catalog the use of open-source software.</p>
<p>Rode Cope went through the 10 lessons that he learned while developing an enterprise Rails application with AJAX.</p>
<p><strong>1) Use AJAX, but make it seamless</strong></p>
<p>Good uses:</p>
<ul>
<li>Table Sorting</li>
<li>Ordering rows in lists</li>
<li>Data filtering: checkboxes, radio-button, dropdowns&#8230;</li>
<li>Dynamic data loading: populate dropdowns, templates, flash-based graph data loading</li>
<li>Modal dialog: &#8220;Don&#8217;t show this again&#8221;, Load content, update cookie via AJAX</li>
<li>Adding elements to the page</li>
<li>Edit in place</li>
</ul>
<p><strong>2) Don&#8217;t use AJAX if you don&#8217;t need it.</strong></p>
<ul>
<li>Don&#8217;t shock the user</li>
<li>AJAX is just another tool</li>
<li>No drag and drop just because it&#8217;s cool</li>
<li>Use client-side javascript when it makes sense: avoid server roundtrips if they don&#8217;t add value</li>
</ul>
<p><strong>3) Use just enough tools</strong></p>
<ul>
<li>Don&#8217;t need a giant framework</li>
<li>Firebug is your best friend with YSlow</li>
<li>Tail the development log</li>
</ul>
<p><strong>4) Use Open Source</strong></p>
<ul>
<li>Prototype,scriptaculous, jQuery</li>
<li>Live Validation (for client side validation)</li>
<li>TinyMCE</li>
<li>Watir, FireWatir, Selenium</li>
<li>Netbeans, Radrails</li>
</ul>
<p><strong>5) Don&#8217;t be afraid of JavaScript</strong></p>
<ul>
<li>View Helpers: wrap AjaxRequest fo convenience, link_to_remote</li>
<li>RJS</li>
<li>Don&#8217;t be afraid of writing JavaScript by hand: avoid roundtrips to server</li>
</ul>
<p><strong>6) Watch out for JavaScript Conflicts</strong></p>
<ul>
<li>run jQuery in no-conflict mode</li>
<li>Live Validation wants to take over onSubmit, making it hard to implement your own custom submission logic</li>
<li>Javascript Libraries are still Wild Wild West</li>
</ul>
<p><strong>7) Client-side validation is hard, but worth it</strong></p>
<ul>
<li>Show/hide/populate fields dynamically</li>
<li>Count characters remaining</li>
<li>Default values in certain fields</li>
<li>Live validation works well with Rails by supporting ActiveRecord validations</li>
</ul>
<p><strong>8 ) Cross-browser issues: not too bad</strong></p>
<ul>
<li>Tooltips: some browsers truncate tooltips, some wrap them. Use library, custom javascript, or AJAX to enforce consistency</li>
<li>CSS: may need special browser checks if you really care about width details, margin and padding defined differently in IE and FF</li>
</ul>
<p><strong>9) Security must be implemented in all layers</strong></p>
<ul>
<li>Never ever trust any input: URL&#8217;s, hidden fields, form values, cookies, POST data, etc..</li>
<li>No soft, chewy center: client-side validation is only there for user convenience, not for security.</li>
<li>Check all roles in your controllers</li>
<li>Implement all data security in your models</li>
<li>View helpers simplify things: button_display_for_downloads(user)</li>
<li>Consider promoting helpers to application level</li>
</ul>
<p><strong>10) Testing is crucial</strong></p>
<ul>
<li>Typical Rails testing (unit,functional,integration) is not enough.</li>
<li>AJAX tests: sleep then check for CSS class change</li>
<li>Test events and scripts interations since libraries don&#8217;t always play nice</li>
<li>Watir,FireWatir,Selenium: run tests in actual browser (IE/FF). Downside: not easy to integrate with Continuous Integration system</li>
<li>Interactive testing with irb and FireWatir:</li>
<p>- Run tests interactively ot make sure XPath is correct<br />
- Huge improvement in code-test-debug cycle</p>
<li>Unit Testing javascript: jsUnit, jsTest</li>
</ul>
<h2>Session 7: Spice up User Experience with Silverlight RIA</h2>
<p><a href="http://edream.net">Sue Googe</a> is a big fan of Silverlight. She spent her 50 minutes praising the benefits of SilverLight and trying to convince the audience that we should all be using Silverlight. So much that I thought she worked for Microsoft <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Why Silverlight?</p>
<ul>
<li>very rich UI framework built-in</li>
<li>provide AJAX++ experience with little code</li>
<li>deliver super quality media on the web</li>
<li>Cross-browser / cross-platform</li>
<li>Rapid development</li>
<li>It&#8217;s free and open-souce</li>
<li>Flash learning curve is high</li>
<li>Has own media streaming, up to 720p</li>
</ul>
<p>Sue showed <a href="http://joestegman.members.winisp.net/DeepZoom/">a cool demo</a> of the Silverlight <a href="http://labs.live.com/Silverlight+2+Deep+Zoom.aspx">Deep Zoom feature</a>. She posted <a href="http://www.edream.org/BlogArticle.aspx?RecordID=142">her slides on her blog</a>.</p>
<h2>Session 8: AJAX and Social Computing for the Enterprise</h2>
<p>I&#8217;m still trying to find out whether I attended this session or not. I must be getting old <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h2>Session 9: Seam Remoting</h2>
<p><a href="http://shane.bryzak.com/blog/home.seam">Shane Bryzak</a>&#8217;s talk was about Seam Remoting, which is an AJAX framework for JBoss Seam. I wasn&#8217;t planning to attend this talk at first but the OpenAjax Gadgets &amp; Widgets talk was full by the time I got there. Since I heard good things about Seam in the past, I figured it wouldn&#8217;t hurt to learn what it is all about.</p>
<p><a href="http://www.seamframework.org">JBoss Seam</a> is an Enterprise Java Framework:</p>
<ul>
<li>Provides a rich, contextual component model</li>
<li>Simplified integration with various useful technologies such as BPM, drools, security, GWT, etc&#8230;</li>
<li>Runs in many different environments: JBoss, Weblogic, Websphere, Tomcat</li>
<li>Standards based, submitted as JSR-299 (Web Beans)</li>
<li>Supports biection (inversion of control) for wiring components</li>
<li>Seam components can be session beans, entity beans or POJOs</li>
<li>JBOSS Tool plugin for Eclipse</li>
</ul>
<p>How does it work?</p>
<p>Seam lets you make calls in JavaScript as if the class was defined in JavaScript. In your JavaScript, you will never make explicit ajax calls, you simply make a call to a function such as getStatus, as if you were on the server. Seam Remoting takes care of the plumbing and sends the request. The messages are sent using XML.</p>
<p>To define the Java classes and functions that you want accessible remotely, you simply have to annotate the calss with @Name(&#8217;nameofclass&#8217;) and annotate the functions that you want accessible remotely with @WebRemote.</p>
<p>Communication Protocol:</p>
<ul>
<li>is an XML-based protocol</li>
<li>Loosely inspired by XML-RPC</li>
<li>Supports object graph recursion</li>
<li>Allows requests to be batched so you can queue up a number of requests and send them all at once.</li>
<li>Support all the usual data types</li>
</ul>
<p>Seam makes working with JMS easy. Shane went on to demo a Chat Room application using Seam with JMS. I was quite impressed. I like Seam&#8217;s approach to Ajax and I would be curious to know if there are other frameworks doing something similar.</p>
<p>Shane&#8217;s slide were really good and you do not need to be at the talk to benefit from them. Shane was nice enough to email me his slides and authorized me to post them here. You can <a href="http://dambalah.files.wordpress.com/2008/04/seam-remoting.pdf">download</a> them here.</p>
<h2>SYS-CON.TV Power Panel: The Business Value of RIAs</h2>
<p>The day concluded with a panel of CTOs talking about who their biggest clients are, what kind of RIA applications they are building, what they believe to be the future of RIA, and other topics related to the business value of RIAs.</p>
<h2>Summary</h2>
<p>In summary, the second day of the conference was very good. My favorite talks were Douglas Crockford&#8217;s opening keynote, the introduction to YUI, the real-world Rails talk, and the presentation on Seam Remoting.</p>
<p>Technologies that I plan to learn a bit more about after this day are: SilverLight, YUI, Seam Framework, Watir, FireWatir, and jMaki.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dambalah.wordpress.com/64/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dambalah.wordpress.com/64/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dambalah.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dambalah.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dambalah.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dambalah.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dambalah.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dambalah.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dambalah.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dambalah.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dambalah.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dambalah.wordpress.com/64/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dambalah.com&blog=779357&post=64&subd=dambalah&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dambalah.com/2008/04/13/ajax-world-conference-day-2/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dambalah-128.jpg" medium="image">
			<media:title type="html">dambalah</media:title>
		</media:content>
	</item>
		<item>
		<title>Ajax World Conference - Day 1</title>
		<link>http://dambalah.com/2008/03/19/ajax-world-conference-day-1/</link>
		<comments>http://dambalah.com/2008/03/19/ajax-world-conference-day-1/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 02:52:54 +0000</pubDate>
		<dc:creator>Luc Castera</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://dambalah.com/?p=63</guid>
		<description><![CDATA[ I&#8217;m in New York City attending the Ajax World conference. It feels so great to be in New York. I love coming here.
Today was the first day of the conference and it only lasted half a day, with four  45 minutes sessions. There are a total of 6 tracks so there were a [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p> I&#8217;m in New York City attending the <a href="http://ajaxworld.com/">Ajax World</a> conference. It feels so great to be in New York. I love coming here.</p>
<p>Today was the first day of the conference and it only lasted half a day, with four  45 minutes sessions. There are a total of 6 tracks so there were a 24 sessions to choose from today. It&#8217;s not easy to make a selection since many of them sound very interesting. Nevertheless, I picked my sessions carefully and really enjoyed the ones I attended.</p>
<h3>Session 1: Picking the Right Technology for Enterprise Rich Internet Applications</h3>
<p>The first talk that I attended was from <a href="http://flexblog.faratasystems.com/?author=3">Yakov Fain</a>, entitled <a href="http://www.ajaxworld.com/general/sessiondetail0308.htm?id=75">&#8220;Picking the Right Technology for Enterprise Rich Internet Applications (RIA)&#8221;</a>. Yakov&#8217;s talk was a survey of the top technologies to build <a href="http://en.wikipedia.org/wiki/Rich_Internet_application">RIAs</a>. The main contenders in this area are:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29">Ajax</a></li>
<li>Microsoft <a href="http://silverlight.net/default.aspx">Silverlight</a></li>
<li>Adobe <a href="http://www.adobe.com/products/flex/">Flex</a>/<a href="http://www.adobe.com/products/flash/?ogn=EN_US-gntray_prod_flash_home">Flash</a></li>
<li>Sun&#8217;s <a href="http://www.sun.com/software/javafx/index.jsp">JavaFX</a></li>
</ul>
<p>Yakov started by identifying the qualities that an RIA technology should share to be successful:</p>
<ul>
<li>seamless deployment on the client</li>
<li>high penetration rate of the runtime environment</li>
<li>web browser independence</li>
<li>fast client-server communication protocols</li>
<li>robust security</li>
</ul>
<p>I found it rather ironic that during the first five minutes of the first session I am attending at Ajax World, the speaker said &#8220;Ajax is no good.&#8221; What Yakov meant when he said that Ajax is no good is that it is difficult to build Ajax applications due to cross-browser compatibilities. Javascript developers have to spend a lot of time writing code to deal with these issues (or use a framework such as <a href="http://prototypejs.org/">Prototype</a> or <a href="http://jquery.com/">jQuery</a>). Ajax&#8217;s communication protocol (HTTP) is also not the most efficient.</p>
<p>On the other hand, Silverlight/Flex/JavaFX all run in a Virtual Machine (VM) so the environment will be the same wherever the code is deployed, which makes it easier for the developers. Yakov believes that this is where the future lies: to have a small VM deployed on the client. The availability of the runtime is crucial for user adoption and this is why Adobe has the edge currently since Flash Player 9 is installed on <a href="http://www.adobe.com/products/player_census/flashplayer/version_penetration.html">more than 90% of PCs in the world.</a></p>
<p>The current trend is to have a declarative GUI programming language backed by another language, such as the following combinations: <a href="http://en.wikipedia.org/wiki/MXML">MXML</a>/ActionScript, JavaFX/Java, <a href="http://en.wikipedia.org/wiki/XAML">XAML</a>/C#. Yakov believes that Flex is the better technology today, that Microsoft will catch up next year with Silverlight and that Sun still has some work to do before JavaFX becomes stable and competitive.</p>
<p>There is an interesting competition between Microsoft and Adobe. Adobe already has a crowd of loyal designers that are used to their product and they are trying to get the developers to join them. On the other hand, Microsoft has a stable base of developers as customers, and needs to get designers to buy their products. They&#8217;ve released <a href="http://www.microsoft.com/expression/">Microsoft Expression</a> with that in mind.</p>
<p>Here is a rundown of the characteristics, pros and cons of each technology, as discussed by the speaker.</p>
<h4>Ajax:</h4>
<ul>
<li>Pros:
<ul>
<li>No deployment</li>
<li>100+ frameworks</li>
<li>Free, open-source</li>
</ul>
</li>
<li>Cons:
<ul>
<li>Web browser dependency</li>
<li>100+ frameworks (how do you choose one?)</li>
<li>Expensive and long development life cycle</li>
</ul>
</li>
</ul>
<h4>JavaFX:</h4>
<ul>
<li>Script and mobile</li>
<li>uses Java Swing 2D APIs</li>
<li>plugins for Netbeans and Eclipse exists</li>
<li>Java 6 Update N will be released soon. It is a small VM to deploy in the browser.</li>
</ul>
<h4>Silverlight:</h4>
<ul>
<li>Pros:
<ul>
<li>supports up to 720p-HD video through the web browser</li>
<li>Silverlight 2.0 runtime is 4.3 MB: fast installation</li>
</ul>
</li>
<li>Cons:
<ul>
<li>no protocols faster than HTTP</li>
</ul>
</li>
</ul>
<h4>Adobe Flex:</h4>
<ul>
<li>MXML: an XML-based declarative programming language for creating GUIs</li>
<li>ActionScript 3.0: object oriented language similar to Java</li>
<li>Flash Player 9: VM that runs swf files</li>
<li><a href="http://www.themidnightcoders.com/weborb/">WebOrb</a>: lets you serialize C# objects to send to Flex UI (so one can use Flex with .NET).</li>
</ul>
<p>Yakov demonstrated a couple of RIAs that he developped with Flex and they were very impressive, particularly a financial analysis application.</p>
<h3>Session 2: Performance tuning Ajax applications</h3>
<p><a href="http://rockstarapps.com/">Bob Buffone</a> presented on improving the performance of your Ajax applications. The first half of his talk was very familiar to me, having read <a href="http://www.amazon.com/High-Performance-Web-Sites-Essential/dp/0596529309/ref=pd_bbs_1?ie=UTF8&amp;s=books&amp;qid=1205889280&amp;sr=8-1">&#8216;High Performance Websites&#8217;</a> from Steve Souders. I highly recommend reading it if you are building web applications. Bob went over a few of <a href="http://stevesouders.com/hpws/rules.php">the 14 rules for performance improvements</a> mentioned in the book, in particular:</p>
<ul>
<li>Tips to reduce the number of HTTP requests</li>
<li>Tips to reduce the size of HTTP responses (JS and CSS files)
<ul>
<li>minification with tools such as YUI ycompressor, dojo toolkit, jsmin, etc&#8230;</li>
<li>gzip can drastically reduce the file size.</li>
<li>coding style: he advocates changing the coding standards when writing Javascript to produce smaller files. For example, write single line if/for statements without {} since they are optional.</li>
</ul>
</li>
</ul>
<p>After that, Bob went on to cover lower-level optimizations in Javascript:</p>
<ul>
<li><b>DOM Parsing:</b> do not write your own parser. Use the native parsers and use JSON over XML if you can because it is faster to parse.</li>
<li><b>DOM Searching:</b> be careful how you search the DOM. Most frameworks, such as prototype, have optimized code for DOM Searching so use them.</li>
<li><b>DOM Creation:</b>
<ul>
<li>the innerHTML way: it&#8217;s fast and the code stays small but it can get very messy. Also, javascript string concatenation is slow. That&#8217;s why in the YUI framework, instead of using JS concatenation, they create an Array of string which they later join. Bob said he benchmarked this and that the Array join technique is only faster in IE 6. In newer browsers, it no longer makes a difference.</li>
<li>Tail recursion: using createElement to create the DOM objects.</li>
</ul>
</li>
</ul>
<p>Bob then started covering other types of optimization and showed benchmarks for some of those. They can be found <a href="http://www.rockstarapps.com/samples/performance/">here</a>.</p>
<p>Some members of the audience were not agreeing with him on these micro-optimizations and it started a discussion on premature optimization versus code readibility and maintainability. I agree with some of the members in the audience. While it is great to know some of these low-level optimizations, I do not think that one needs to apply them for every single line of code, before even knowing whether or not this will be a bottleneck or performance hog. If you are gonna call that line only once, why go through the trouble of optimizing it. If it happens that you will call it thousands of time, then you can always go back and make it faster.</p>
<h3>Session 3: RIA Approach for Web 2.0 Development Using jMaki</h3>
<p>I&#8217;ve been subscribing to <a href="http://weblogs.java.net/blog/arungupta/">Arun Gupta&#8217;s blog</a> for a while now. I started following it because of his posts on Rails and JRuby but started learning more about <a href="http://www.netbeans.org/">NetBeans</a>, <a href="https://glassfish.dev.java.net/">Glassfish</a> and <a href="http://jmaki.com/">Jmaki</a> thanks to him. jMaki is a very cool idea and I hope that it keeps growing. The j in jMaki stands for javascript and the Maki from <a href="http://en.wikipedia.org/wiki/Makizushi#Maki-zushi_.28roll.29">Makisushi</a>. Essentially, jMaki is a set of wrappers around javascript libraries such as YUI, Dojo, EXT JS, Scripaculous, Google Maps, etc&#8230;It makes it really easy to use components from these libraries if you are using Netbeans or Eclipse. All it takes is a drag-and-drop to have a widget on your page such as a Google Map, a YUI table, an accordion, etc&#8230;</p>
<p>Everytime I see someone use NetBeans 6, I&#8217;m reminded of how cool this IDE is and I tell myself that it is about time I start using it. With jMaki plugin, Netbeans is even more powerful and you can create great mashups in an instant.</p>
<p>Arun&#8217;s presentation had a lot of demos. One of them was demonstrating how to use jMaki with Rails while others showed how to use jMaki with JSP pages.</p>
<p>You can learn more about jMaki by going to <a href="http://jmaki.com">jMaki.com</a> and by reading <a href="http://weblogs.java.net/blog/arungupta/">Arun&#8217;s blog</a>. He has some good screencasts showing how to get started with jMaki.</p>
<h3>Session 4: RIA Development on the Microsoft Stack using Flex.</h3>
<p>For the last session of the day, I went to see <a href="http://blog.grushin.com/">Mike Grushin</a> talk about his experience using Flex with a Microsoft .NET stack on the server. Mike decided to use Flex with Microsoft because he came from Microsoft and was familiar with their technologies.</p>
<p>Mike started by describing what he calls a rich experience:</p>
<ul>
<li>responsive, friendly, interactive</li>
<li>asynchronous communication with server: less full page reloads</li>
<li>synchronous (text, audio, video)</li>
<li>attractive UI</li>
</ul>
<p>Mike&#8217;s talk was similar to my first talk of the day. He had a comparison of the four main contenders in the space: Silverlight , JavaFX, Ajax, and Flex. He came to some of the same conclusions as Yakov. Today, the Flex world is the place to be. JavaFX doesn&#8217;t have enough momentum and is not ready yet. Pay attention to Microsoft Silverlight.</p>
<p>After this overview, Mike focused his talk on using Flex with .NET. First he compared the different ways that the UI can access server-side data with Flex:</p>
<ul>
<li>HTTPService for XML/Text
<ul>
<li>Plus:
<ul>
<li>   No extra server components</li>
<li>   Ability to monitor download progress</li>
<li>   Asynchronous</li>
</ul>
</li>
<li>Cons:
<ul>
<li>   HTTP Overhead</li>
<li>   XML Overhead</li>
<li>   Serialization/Deserialization of objects</li>
<li>   Duplicate model object on server and client</li>
</ul>
</li>
</ul>
</li>
<li>WebService for SOAP messages
<ul>
<li>pretty much same pros and cons as HTTPService</li>
</ul>
</li>
<li>RemoteObject: AMF
<ul>
<li>faster. <a href="http://www.adobe.com/devnet/flex/articles/communicating_flex_dotnet_07.html">See comparison here</a></li>
<li><a href="http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00001168.html">Flex Messaging</a></li>
<li><a href="http://www.adobe.com/devnet/flex/articles/intro_fms.html">Flex Data Services</a></li>
</ul>
</li>
</ul>
<p>Mike blogs at <a href="http://blog.grushin.com">blog.grushin.com</a> and is a founder of <a href="http://feedbackfx.com/">feedbackfx.com</a>.</p>
<p>Since Mike finished his talk a little early, I caught the end of the Silverlight presentation that a Microsoft employee was giving next door. It looked interesting and I look forward to learning more about Silverlight during the remainder of the conference.</p>
<p>The main lesson learned during the first day of the conference is that I really need to start looking at Flex and Silverlight. I&#8217;ve been focusing on learning and improving my Ajax skills but have paid very little attention to these other technologies. I will spend some time on them from now on. I particularly want to take a deeper look at <a href="http://www.themidnightcoders.com/weborb/">WebORB</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dambalah.wordpress.com/63/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dambalah.wordpress.com/63/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dambalah.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dambalah.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dambalah.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dambalah.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dambalah.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dambalah.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dambalah.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dambalah.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dambalah.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dambalah.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dambalah.com&blog=779357&post=63&subd=dambalah&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dambalah.com/2008/03/19/ajax-world-conference-day-1/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dambalah-128.jpg" medium="image">
			<media:title type="html">dambalah</media:title>
		</media:content>
	</item>
		<item>
		<title>Only in Haiti</title>
		<link>http://dambalah.com/2008/01/24/only-in-haiti/</link>
		<comments>http://dambalah.com/2008/01/24/only-in-haiti/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 03:04:37 +0000</pubDate>
		<dc:creator>Luc Castera</dc:creator>
		
		<category><![CDATA[Haiti]]></category>

		<guid isPermaLink="false">http://dambalah.com/2008/01/24/only-in-haiti/</guid>
		<description><![CDATA[A friend sent me this picture today of a technician at work in Haiti. It looks like they were missing the proper equipment to get him up there, but they found a creative solution.

       ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A friend sent me this picture today of a technician at work in Haiti. It looks like they were missing the proper equipment to get him up there, but they found a creative solution.</p>
<p><a href="http://dambalah.files.wordpress.com/2008/01/onlyinhaiti.jpg" title="Only In Haiti"><img src="http://dambalah.files.wordpress.com/2008/01/onlyinhaiti.jpg" alt="Only In Haiti" /></a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dambalah.wordpress.com/59/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dambalah.wordpress.com/59/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dambalah.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dambalah.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dambalah.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dambalah.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dambalah.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dambalah.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dambalah.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dambalah.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dambalah.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dambalah.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dambalah.com&blog=779357&post=59&subd=dambalah&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dambalah.com/2008/01/24/only-in-haiti/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dambalah-128.jpg" medium="image">
			<media:title type="html">dambalah</media:title>
		</media:content>

		<media:content url="http://dambalah.files.wordpress.com/2008/01/onlyinhaiti.jpg" medium="image">
			<media:title type="html">Only In Haiti</media:title>
		</media:content>
	</item>
		<item>
		<title>Interesting Linux Trends</title>
		<link>http://dambalah.com/2008/01/01/interesting-linux-trends/</link>
		<comments>http://dambalah.com/2008/01/01/interesting-linux-trends/#comments</comments>
		<pubDate>Tue, 01 Jan 2008 22:41:51 +0000</pubDate>
		<dc:creator>Luc Castera</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://dambalah.com/2008/01/01/interesting-linux-trends/</guid>
		<description><![CDATA[ Just out of curiosity, I checked out Google Trends to compare some of the most popular Linux distributions, based on distrowatch.com. My findings were rather interesting: a stagnant or slightly downward slope for most popular distributions except for Ubuntu which has a very fast growth.

Then I decided to compare Ubuntu to the other popular [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p> Just out of curiosity, I checked out <a href="http://google.com/trends">Google Trends</a> to compare some of the most popular Linux distributions, based on <a href="http://distrowatch.com">distrowatch.com</a>. <a href="http://tinyurl.com/2qnbxf">My findings</a> were rather interesting: a stagnant or slightly downward slope for most popular distributions except for Ubuntu which has a very fast growth.</p>
<p><a href="http://dambalah.files.wordpress.com/2007/12/linux_trends.png" title="Linux Trends"><img src="http://dambalah.files.wordpress.com/2007/12/linux_trends.png" alt="Linux Trends" /></a></p>
<p>Then I decided to compare Ubuntu to the other popular operating systems: Windows and Mac OS X.</p>
<p><a href="http://dambalah.files.wordpress.com/2007/12/linux_windows_trends.png" title="Linux vs Windows vs Mac"><img src="http://dambalah.files.wordpress.com/2007/12/linux_windows_trends.png" alt="Linux vs Windows vs Mac" /></a></p>
<p>Some interesting observations:</p>
<p>1) Linux popularity seems to be decreasing, based on the distros downward trends and the fact that the term linux itself is going down. However, Ubuntu is gaining popularity really fast.</p>
<p>2) Windows is by far the most popular operating systems, but it&#8217;s popularity is decreasing while Mac OS X and Ubuntu are gaining steam.</p>
<p>Of course, this should be taken with a grain of salt because this is far from a scientific study, but like we say back <a href="http://en.wikipedia.org/wiki/Haiti" title="Haiti">home</a>, there is never smoke without a fire.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dambalah.wordpress.com/53/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dambalah.wordpress.com/53/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dambalah.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dambalah.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dambalah.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dambalah.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dambalah.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dambalah.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dambalah.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dambalah.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dambalah.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dambalah.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dambalah.com&blog=779357&post=53&subd=dambalah&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dambalah.com/2008/01/01/interesting-linux-trends/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dambalah-128.jpg" medium="image">
			<media:title type="html">dambalah</media:title>
		</media:content>

		<media:content url="http://dambalah.files.wordpress.com/2007/12/linux_trends.png" medium="image">
			<media:title type="html">Linux Trends</media:title>
		</media:content>

		<media:content url="http://dambalah.files.wordpress.com/2007/12/linux_windows_trends.png" medium="image">
			<media:title type="html">Linux vs Windows vs Mac</media:title>
		</media:content>
	</item>
		<item>
		<title>ASP.NET Rails clone?</title>
		<link>http://dambalah.com/2007/11/19/aspnet-rails-clone/</link>
		<comments>http://dambalah.com/2007/11/19/aspnet-rails-clone/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 23:32:51 +0000</pubDate>
		<dc:creator>Luc Castera</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://dambalah.com/2007/11/19/aspnet-rails-clone/</guid>
		<description><![CDATA[The folks at Microsoft are working on a MVC Framework for  ASP.NET. It looks like they borrowed a lot of ideas from Rails.
It looks interesting and I can&#8217;t wait until it gets released to start playing with it. According to Scott Guthrie&#8217;s blog post, it should be released soon.

      [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The folks at Microsoft are working on a <a href="http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx">MVC Framework for  ASP.NET</a>. It looks like they borrowed a lot of ideas from <a href="http://www.rubyonrails.com/">Rails</a>.</p>
<p>It looks interesting and I can&#8217;t wait until it gets released to start playing with it. According to <a href="http://http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx">Scott Guthrie&#8217;s blog post</a>, it should be released soon.</p>
<p><a href="http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx" title="ASP.NET MVC Framework"><img src="http://dambalah.files.wordpress.com/2007/11/msmvc.jpg?w=484&h=275" alt="ASP.NET MVC Framework" height="275" width="484" /></a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dambalah.wordpress.com/51/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dambalah.wordpress.com/51/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dambalah.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dambalah.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dambalah.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dambalah.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dambalah.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dambalah.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dambalah.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dambalah.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dambalah.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dambalah.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dambalah.com&blog=779357&post=51&subd=dambalah&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dambalah.com/2007/11/19/aspnet-rails-clone/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dambalah-128.jpg" medium="image">
			<media:title type="html">dambalah</media:title>
		</media:content>

		<media:content url="http://dambalah.files.wordpress.com/2007/11/msmvc.jpg" medium="image">
			<media:title type="html">ASP.NET MVC Framework</media:title>
		</media:content>
	</item>
		<item>
		<title>DC Startup Weekend - Update</title>
		<link>http://dambalah.com/2007/10/29/dc-startup-weekend-update/</link>
		<comments>http://dambalah.com/2007/10/29/dc-startup-weekend-update/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 01:37:09 +0000</pubDate>
		<dc:creator>Luc Castera</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[HolaNeighbor]]></category>

		<category><![CDATA[startupweekend]]></category>

		<category><![CDATA[startupweekenddc]]></category>

		<guid isPermaLink="false">http://dambalah.com/2007/10/29/dc-startup-weekend-update/</guid>
		<description><![CDATA[A few updates regarding DC Startup Weekend and HolaNeighbor. We are having a launch party next Saturday at Buffalo Billards in DC. Everyone is invited so please join us.
We have a flickr group, facebook group, and myspace group.
And we also have some great viral marketing videos:


The dev team is working hard to have the product [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A few updates regarding <a href="http://dc.startupweekend.com">DC Startup Weekend</a> and <a href="http://holaneighbor.com">HolaNeighbor</a>. We are having a launch party <a href="http://holaneighbor.eventbrite.com/">next Saturday</a> at Buffalo Billards in DC. Everyone is invited so please join us.</p>
<p>We have a <a href="http://www.flickr.com/groups/511605@N25/">flickr group</a>, <a href="http://www.facebook.com/group.php?gid=7884642109">facebook group</a>, and <a href="http://groups.myspace.com/index.cfm?fuseaction=groups.groupProfile&amp;groupID=106744902">myspace group</a>.</p>
<p>And we also have some great viral marketing videos:</p>
<p><span style="text-align:center; display: block;"><a href="http://dambalah.com/2007/10/29/dc-startup-weekend-update/"><img src="http://img.youtube.com/vi/3j0YwPkJMyY/2.jpg" alt="" /></a></span></p>
<p><span style="text-align:center; display: block;"><a href="http://dambalah.com/2007/10/29/dc-startup-weekend-update/"><img src="http://img.youtube.com/vi/JNASFNdamts/2.jpg" alt="" /></a></span></p>
<p>The dev team is working hard to have the product launched tonight. We&#8217;ll stay late to reach that goal but we are all having a great time.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/dambalah.wordpress.com/50/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/dambalah.wordpress.com/50/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dambalah.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dambalah.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dambalah.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dambalah.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dambalah.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dambalah.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dambalah.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dambalah.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dambalah.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dambalah.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dambalah.com&blog=779357&post=50&subd=dambalah&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://dambalah.com/2007/10/29/dc-startup-weekend-update/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/dambalah-128.jpg" medium="image">
			<media:title type="html">dambalah</media:title>
		</media:content>

		<media:content url="http://img.youtube.com/vi/3j0YwPkJMyY/2.jpg" medium="image" />

		<media:content url="http://img.youtube.com/vi/JNASFNdamts/2.jpg" medium="image" />
	</item>
	</channel>
</rss>