<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>blog.zuerchtech.com</title>
	
	<link>http://blog.zuerchtech.com</link>
	<description>zuercher technologies blog</description>
	<lastBuildDate>Mon, 15 Feb 2010 15:34:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/zuerchtech" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="zuerchtech" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Scoutmob and Gmail Insights</title>
		<link>http://blog.zuerchtech.com/2010/01/21/scoutmob-and-gmail-insights/</link>
		<comments>http://blog.zuerchtech.com/2010/01/21/scoutmob-and-gmail-insights/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 19:21:38 +0000</pubDate>
		<dc:creator>Ali Faiz</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[scoutmob]]></category>
		<category><![CDATA[SMSFu]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://blog.zuerchtech.com/?p=169</guid>
		<description><![CDATA[I hate to follow up Andrew&#8217;s post with another &#8220;problem&#8221; post but I hope this helps some other developers out there who are trying to implement something similar.
Problem Definition
About midway into the first day of scoutmob.com&#8217;s going public, we came upon a huge brick wall in the form of Google&#8217;s gmail restrictions on emails sent [...]]]></description>
			<content:encoded><![CDATA[<p>I hate to follow up Andrew&#8217;s post with another &#8220;problem&#8221; post but I hope this helps some other developers out there who are trying to implement something similar.</p>
<h2>Problem Definition</h2>
<p>About midway into the first day of scoutmob.com&#8217;s going public, we came upon a huge brick wall in the form of Google&#8217;s gmail restrictions on emails sent through smtp. Google has a policy (unbeknown to us at the time) that it effectively shuts down emails sent through their smtp server after a user hits 500 emails in one day. We hit this hurdle and subsequently saw error messages to the effect that a quota had been met and our account was no longer valid.</p>
<h2>Context</h2>
<p>For Scoutmob we implemented a system for them to have users send themselves an email or an sms form of a deal posted on their website. Since we used Ruby/Rails on the backend we simply used the smtp plugin to be able to send emails through their gmail corporate email account.</p>
<p>The smtp plugin used was the ambethia-smtp plugin &#8211; for those interested in obtaining it <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5ydWJ5ZWUuY29tL3J1YnlfZ2Vtcy82MDU2LWFtYmV0aGlhLXNtdHAtdGxz">this</a> site was helpful in setting it up. This seemed like the most appropriate option for our purposes, especially since the <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5yYWlsc2xvZGdlLmNvbS9wbHVnaW5zLzk2Mi1zbXMtZnU=">SMSFu plugin</a> we used for sending sms messages requires an smtp server in order to send sms messages to phone numbers.</p>
<h2>Solution</h2>
<p><b>1. Gmail Premium</b><br />
Our first thought was to buy into Gmail&#8217;s premium plan.<br />
<strong>Benefits:</strong> Quick solution. Gmail&#8217;s great product and support for issues.<br />
<strong>Drawbacks:</strong> Increased costs and the limit for emails sent out of a premium plan account is 2,000. Although this was significantly more than the 500 limit it still was too small for us.</p>
<p><b>2. Sendmail</b><br />
Setup sendmail on our servers and use localhost as the smtp server.<br />
<strong>Benefits:</strong> No limit on number of emails sent. Greater control and less restrictions.<br />
<strong>Drawbacks:</strong> The onus lies on us to tackle issues when things go wrong. Another possible issue is that since we aren&#8217;t a trusted gateway, spam filters, ISP and more importantly, telecoms used for the sms messaging might flag us as malicious emailers.</p>
<p>We decided to use the 2nd option and setup sendmail on our servers. We no longer have to worry about getting shut down by the smtp provider but now there is one more aspect of the site that we must support.</p>
<h2>Possible Next Steps</h2>
<p>Use Mailchimp&#8217;s gem to take care of sending these messages&#8230; More to come on that later.</p>
 <img src="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?view=1&post_id=169" width="1" height="1" style="display: none;" />
<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/gmail' rel='tag' target='_self'>gmail</a>, <a class='technorati-link' href='http://technorati.com/tag/Rails' rel='tag' target='_self'>Rails</a>, <a class='technorati-link' href='http://technorati.com/tag/Ruby' rel='tag' target='_self'>Ruby</a>, <a class='technorati-link' href='http://technorati.com/tag/scoutmob' rel='tag' target='_self'>scoutmob</a>, <a class='technorati-link' href='http://technorati.com/tag/SMSFu' rel='tag' target='_self'>SMSFu</a>, <a class='technorati-link' href='http://technorati.com/tag/smtp' rel='tag' target='_self'>smtp</a></p>

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/zuerchtech/~4/rf2yyYQgGCU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.zuerchtech.com/2010/01/21/scoutmob-and-gmail-insights/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Understanding Views and Windows in Titanium Mobile</title>
		<link>http://blog.zuerchtech.com/2009/12/17/understanding-views-and-windows-in-titanium-mobile/</link>
		<comments>http://blog.zuerchtech.com/2009/12/17/understanding-views-and-windows-in-titanium-mobile/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 21:12:39 +0000</pubDate>
		<dc:creator>Andrew Zuercher</dc:creator>
				<category><![CDATA[Titanium]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://blog.zuerchtech.com/?p=144</guid>
		<description><![CDATA[Problem Definition
When I&#8217;m implementing items in titanium I have an option to create a new view or create a window.  It would be good to know what the consequences are for using one vs the other and how an application collaborates across views/windows.
Context
When you implement views or windows in Titanium, you can do so [...]]]></description>
			<content:encoded><![CDATA[<h2>Problem Definition</h2>
<p>When I&#8217;m implementing items in titanium I have an option to create a new view or create a window.  It would be good to know what the consequences are for using one vs the other and how an application collaborates across views/windows.</p>
<h2>Context</h2>
<p>When you implement views or windows in Titanium, you can do so by providing a HTML resource as the parameter to create the corresponding view or window.  Titanium in turn creates either:</p>
<ul>
<li><span style="font-weight:bold">window</span> &#8211; a new window with a single webview in it</li>
<li><span style="font-weight:bold">view</span> &#8211; adds the view to the window parameter&#8217;s stack of views</li>
</ul>
<p>If you call the titanium window&#8217;s open() method with {modal:true}, the new window will be presented modally, IE, coming up from the bottom. This is mostly a behavioral difference, however, as unlike the horizontal push, there is no back button, and it hides the tab bar. This is due to what Apple&#8217;s SDK has.</p>
<p>In the beginning, a webView and a window were a single class. As of 0.5 or so, when TableView came about, Window and webView split ways. For backwards compatibility reasons, when you supply an url to a window on creation (Or, technically, all the way up till opening) a nameless webView is created and added. You can even see it or grab it when you use a window&#8217;s getViews() method. It&#8217;s done on the Objective-C side, but the javascript is the effect of:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">url</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> webView <span style="color: #339933;">=</span> Ti.<span style="color: #660066;">UI</span>.<span style="color: #660066;">createWebView</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>url<span style="color: #339933;">:</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">url</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">addView</span><span style="color: #009900;">&#40;</span>webView<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Technically speaking, as of 0.8, the only thing that has a context is the web views. Windows may contain web views that have contexts, but windows, tableViews, groupedViews, scrollableViews, imageViews, Buttons, sliders, etc, do not have any javascript context, but instead are controllable by the web views, and thus, that&#8217;s why they can see each other is that they&#8217;re all in the same web view context.</p>
<p>One thing that does improve performance and flexibility is to move more creation into one context. For example:</p>
<p>file1.html:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> newWin <span style="color: #339933;">=</span> Ti.<span style="color: #660066;">UI</span>.<span style="color: #660066;">createWindow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>url<span style="color: #339933;">:</span><span style="color: #3366CC;">'file2.html'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
newWin.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>file2.html:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> table <span style="color: #339933;">=</span> Ti.<span style="color: #660066;">UI</span>.<span style="color: #660066;">createTableView</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>...<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Ti.<span style="color: #660066;">UI</span>.<span style="color: #660066;">currentWindow</span>.<span style="color: #660066;">addView</span><span style="color: #009900;">&#40;</span>table<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Ti.<span style="color: #660066;">UI</span>.<span style="color: #660066;">currentWindow</span>.<span style="color: #660066;">showView</span><span style="color: #009900;">&#40;</span>table<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>singleFile.html:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> newWin <span style="color: #339933;">=</span> Ti.<span style="color: #660066;">UI</span>.<span style="color: #660066;">createWindow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> table <span style="color: #339933;">=</span> Ti.<span style="color: #660066;">UI</span>.<span style="color: #660066;">createTableView</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>...<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
newWin.<span style="color: #660066;">addView</span><span style="color: #009900;">&#40;</span>table<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
newWin.<span style="color: #660066;">showView</span><span style="color: #009900;">&#40;</span>table<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
newWin.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Using file1.html, you have to generate a new web view (implicitly), wait for it to load, including the rather hefty JS injection, then load in all of data and such before the table shows. Using singleFile, the table is immediately there, even as the animation takes place revealing the new window. The only drawback is that focused events don&#8217;t fire on newWin when it should, and a few other bugs that should be addressed.</p>
<p>Going into 0.9, moving more and more code into fewer, more concentrated contexts is the way to get speed, but even now, it can offer some boosts.</p>
<h2>Trade offs</h2>
<p>It&#8217;s important to understand what the trade offs are from one to another</p>
<table>
<tr>
<th>function</th>
<th>windows</th>
<th>views</th>
</tr>
<tr>
<td>multiple animation styles when showing</td>
<td>
      nope (only allow from left or none and from bottom when modal).
    </td>
<td>yip (all sorts of animation styles and parameters provided)</td>
</tr>
<tr>
<td>visibility to binded objects in javascript environment</td>
<td>nope, objects are not shared across windows</td>
<td>yip &#8211; depending on the type of view.  for example a tableview will have access to the parent window&#8217;s javascript objects as explained above</td>
</tr>
<tr>
<td>consume/publish to same event manager</td>
<td>nope</td>
<td>yip events are delivered in the same eventing domain</td>
</tr>
<tr>
<td>automatic navigation bar integration</td>
<td>yip &#8211; you can define the traits for a window when you create it (title, back button title, etc) of course navigation is not shown if the window is opened modally</td>
<td>nope, the views share the same fixed navigation for the window they belong to, you can manipulate the nav bar, but this isn&#8217;t really the same</td>
</tr>
<tr>
<td>coordinate with tabs</td>
<td>yip</td>
<td>nope</td>
</tr>
</table>
<h2>Storing state</h2>
<p>If you want to exchange state between 2 windows, then you cannot bind them into a transient javascript object because they are out of scope and do not have visibility to each other&#8217;s environment.  However, you can make use of Application properties or use a database to persist your state for visibility across windows.  When you serialize to/from a string property you can use the JSON representation of the object you are persisting to enable complex objects (this is what we do a lot).</p>
<h2>Transitioning between views/windows</h2>
<p>In the case where you have 2 views and you want to define interactions you can either:</p>
<ul>
<li>call a method in the javascript environment</li>
<li>fire a custom event and consume it in a listener</li>
</ul>
<p>The above implementations demonstrate a powerful advantage views have over windows, however you can still get around this with window-2-window communication.  In either a webview or a window, you can add a listener to the current windows focus event, for example:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">Titanium.<span style="color: #660066;">UI</span>.<span style="color: #660066;">currentWindow</span>.<span style="color: #660066;">addEventListener</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'focused'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  ...
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Then in the listener you could look for a object stored in the state identified above.  In this scenario, one window would store a persistent object when something happens and then when the other window recieves the focus, it would look up this object, notice the state change and perform some behavior.  </p>
<h2>Wrap up</h2>
<p>Understanding the differences between when to use views and when to use windows is important as well as some of the creative work arounds needed to facilitate interactions in your application.  We hope you&#8217;ve found this useful and encourage you to reach out to us via <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=bWFpbHRvOmNvbnRhY3RAenVlcmNodGVjaC5jb20=">email</a> if you are in need of any services while building titanium applications.</p>
 <img src="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?view=1&post_id=144" width="1" height="1" style="display: none;" />
<!-- start wp-tags-to-technorati 1.01 -->

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/zuerchtech/~4/zcpGQRySTcs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.zuerchtech.com/2009/12/17/understanding-views-and-windows-in-titanium-mobile/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DATA pt. 4 – Running from Command Line and Logging</title>
		<link>http://blog.zuerchtech.com/2009/08/31/data-pt-4-running-from-command-line-and-logging/</link>
		<comments>http://blog.zuerchtech.com/2009/08/31/data-pt-4-running-from-command-line-and-logging/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 20:19:14 +0000</pubDate>
		<dc:creator>Ali Faiz</dc:creator>
				<category><![CDATA[Titanium]]></category>
		<category><![CDATA[DATA series]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[PushToTest]]></category>
		<category><![CDATA[titanium]]></category>

		<guid isPermaLink="false">http://blog.zuerchtech.com/?p=135</guid>
		<description><![CDATA[This is part of the continuing series of articles on Developing Appcelerator Titanium Applications (DATA)
Running Titanium Apps from the Command Line
To run a Titanium app using a command line script as opposed to starting it up through the Titanium Developer App, we placed the following in a file named run.sh inside our app&#8217;s directory.

export PATH=$PATH:/Library/Application\ [...]]]></description>
			<content:encoded><![CDATA[<p>This is part of the continuing series of articles on Developing Appcelerator Titanium Applications (DATA)</p>
<h3>Running Titanium Apps from the Command Line</h3>
<p>To run a Titanium app using a command line script as opposed to starting it up through the Titanium Developer App, we placed the following in a file named run.sh inside our app&#8217;s directory.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">export PATH=$PATH:/Library/Application\ Support/Titanium/sdk/osx/0.6.0/
tibuild.py -d . -s /Library/Application\ Support/Titanium -r -a /Library/Application\ Support/Titanium/sdk/osx/0.6.0 ./</pre></div></div>

<p>The tibuild.py does our work for us and running ./run.sh from the command line starts our app up without having to open the Titanium Developer App.</p>
<h3>Logging</h3>
<p>This is a short blurb on the difference between Titanium logging and Firebug&#8217;s logging. At the top of our Javascript file we have the following try/catch statement  to setup our log var.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">try {
    var log = Titanium.App.stdout; // Titanium's logging to the command line
} catch (squash) {
    var log = console.log; // console logging for Webkit/Firebug
}</pre></div></div>

<p>The try/catch is an easy way to ensure we have the right logging for the right environment. We want TItanium logging when running Titanium and console.log as the default.<br />
Calling logging is simple from this point:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;"> log('HELLO!');</pre></div></div>

 <img src="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?view=1&post_id=135" width="1" height="1" style="display: none;" />
<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/DATA+series' rel='tag' target='_self'>DATA series</a>, <a class='technorati-link' href='http://technorati.com/tag/logging' rel='tag' target='_self'>logging</a>, <a class='technorati-link' href='http://technorati.com/tag/PushToTest' rel='tag' target='_self'>PushToTest</a>, <a class='technorati-link' href='http://technorati.com/tag/titanium' rel='tag' target='_self'>titanium</a></p>

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/zuerchtech/~4/jY-cjwLsubA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.zuerchtech.com/2009/08/31/data-pt-4-running-from-command-line-and-logging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DATA pt. 3 – File I/O with jQuery and Titanium</title>
		<link>http://blog.zuerchtech.com/2009/08/25/data-pt-3-file-io-with-jquery-and-titanium/</link>
		<comments>http://blog.zuerchtech.com/2009/08/25/data-pt-3-file-io-with-jquery-and-titanium/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 16:04:47 +0000</pubDate>
		<dc:creator>Ali Faiz</dc:creator>
				<category><![CDATA[Titanium]]></category>
		<category><![CDATA[DATA series]]></category>
		<category><![CDATA[File I/O]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PushToTest]]></category>
		<category><![CDATA[titanium]]></category>

		<guid isPermaLink="false">http://blog.zuerchtech.com/?p=132</guid>
		<description><![CDATA[This is part of the continuing series of articles on Developing Appcelerator Titanium Applications (DATA)
Opening an XML file dialog in Titanium
The props variable specifies that only xml files will be highlighted and accepted in the file dialog. In order to highlight and accept all file types, just make props and empty array: var props = [...]]]></description>
			<content:encoded><![CDATA[<p>This is part of the continuing series of articles on Developing Appcelerator Titanium Applications (DATA)</p>
<h3>Opening an XML file dialog in Titanium</h3>
<p>The props variable specifies that only xml files will be highlighted and accepted in the file dialog. In order to highlight and accept all file types, just make props and empty array: var props = {};</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">var props = {multiple:false,types:['xml']};
Titanium.UI.openFileChooserDialog(function(filenames) {
	if (filenames[0]){
		Editor.load_file(filenames[0]);
	}
},props);</pre></div></div>

<h3>Reading an XML file</h3>
<p>Here are the ways to read an xml (or any) file using both jQuery and Titanium. In both examples, lambda represents a function pointer.</p>
<p>jQuery</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">	$.get(filename,lambda);</pre></div></div>

<p>Titanium</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">	var f = Titanium.Filesystem.getFile(filename);
	var xml = &quot;&quot;+f.read();
	lambda(xml);</pre></div></div>

<h3>Writing an XML file</h3>
<p>This of course can only be done with Titanium. Below is how we formatted the xml to pretty print the xml string before writing out to the file. The raw xml string doesn&#8217;t lay out nicely so we have to add some spacing.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">formatXml: function(xml, lambda) {
    var formatted = '';
    var reg = /(&gt;)(&lt;)(\/*)/g;
    xml = xml.replace(reg, '$1\r\n$2$3');
    var pad = 0;
    jQuery.each(xml.split('\r\n'), function(index, node) {
        var indent = 0;
        if (node.match( /.+&lt;\/\w[^&gt;]*&gt;$/ )) {
            indent = 0;
        } else if (node.match( /^&lt;\/\w/ )) {
            if (pad != 0) {
                pad -= 1;
            }
        } else if (node.match( /^&lt;\w[^&gt;]*[^\/]&gt;.*$/ )) {
            indent = 1;
		} else {
            indent = 0;
		}
&nbsp;
        var padding = '';
        for (var i = 0; i &lt; pad; i++) {
            padding += '  ';
		}
&nbsp;
        formatted += padding + node + '\r\n';
        pad += indent;
	});
    lambda(formatted);
},</pre></div></div>

<p>Below is the code that actually writes out to the filesystem. If the file represented by the filename already exists, the write simply overwrites it. If the file doesn&#8217;t exist, a new one with that filename is created. Because of the way we had to parse the xml read in, it was necessary to tack on the the xml header.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">try {
	var TFS = Titanium.Filesystem;
	var file = TFS.getFile(filename);
	Editor.formatXml(Editor.currentopenfile.filexml, function(xml) {
		header = '&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;';
		file.write(header+xml);
		var contents = file.read();
	});
} catch (squash) {
	alert(&quot;Failed to write to File&quot;);
}</pre></div></div>

 <img src="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?view=1&post_id=132" width="1" height="1" style="display: none;" />
<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/DATA+series' rel='tag' target='_self'>DATA series</a>, <a class='technorati-link' href='http://technorati.com/tag/File+I%2FO' rel='tag' target='_self'>File I/O</a>, <a class='technorati-link' href='http://technorati.com/tag/jQuery' rel='tag' target='_self'>jQuery</a>, <a class='technorati-link' href='http://technorati.com/tag/PushToTest' rel='tag' target='_self'>PushToTest</a>, <a class='technorati-link' href='http://technorati.com/tag/titanium' rel='tag' target='_self'>titanium</a></p>

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/zuerchtech/~4/sUBsodkIv0A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.zuerchtech.com/2009/08/25/data-pt-3-file-io-with-jquery-and-titanium/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DATA pt. 2 – Accessing the DOM with jQuery</title>
		<link>http://blog.zuerchtech.com/2009/08/20/data-pt-2-accessing-the-dom-with-jquery/</link>
		<comments>http://blog.zuerchtech.com/2009/08/20/data-pt-2-accessing-the-dom-with-jquery/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 20:37:11 +0000</pubDate>
		<dc:creator>Ali Faiz</dc:creator>
				<category><![CDATA[Titanium]]></category>
		<category><![CDATA[DATA series]]></category>
		<category><![CDATA[DOM manipulation]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PushToTest]]></category>
		<category><![CDATA[titanium]]></category>

		<guid isPermaLink="false">http://blog.zuerchtech.com/?p=126</guid>
		<description><![CDATA[This is part of the continuing series of articles on Developing Appcelerator Titanium Applications (DATA)
The many ways to access the DOM with jQuery
In part 1 of this series, I ended the post with stating that I would follow up with how we accessed the DOM with jQuery and why we weren&#8217;t always using the best [...]]]></description>
			<content:encoded><![CDATA[<p>This is part of the continuing series of articles on Developing Appcelerator Titanium Applications (DATA)</p>
<h3>The many ways to access the DOM with jQuery</h3>
<p>In part 1 of this series, I ended the post with stating that I would follow up with how we accessed the DOM with jQuery and why we weren&#8217;t always using the best way to do it. Given more time, we would likely have gone back and changed all methods of accessing the DOM to be consistent.<br />
Below are 3 ways that we used to access the DOM. It is almost a chronological journey through how we figured out the different methods.<br />
For this part, as I did in my last post, I&#8217;ll be using the PushToTest datasource as an example.</p>
<p>Here again is the html used to render a datasource.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;div id=&quot;datasources_iterator${id}&quot; class=&quot;datasource_container&quot;&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;id&quot; value=&quot;${id}&quot; fieldset=&quot;datasource&quot;/&gt;
	&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; border=&quot;0&quot;&gt;
		&lt;tr&gt;
			&lt;td&gt;Name&lt;/td&gt;
			&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;name&quot; value=&quot;${name}&quot; fieldset=&quot;datasource&quot; class=&quot;name&quot;/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;input type=&quot;image&quot; name=&quot;delete&quot; value=&quot;${id}&quot; src=&quot;images/cross.png&quot; fieldset=&quot;datasource&quot;/&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Type&lt;/td&gt;
			&lt;td&gt;
				&lt;select id=&quot;datatypeselect${id}&quot; name=&quot;datatypeselect&quot; fieldset=&quot;datasource&quot;&gt;
				  	&lt;option value=&quot;HashDPL&quot;&gt;HashDPL&lt;/option&gt;
				  	&lt;option value=&quot;CSVDPL&quot;&gt;CSVDPL&lt;/option&gt;
				  	&lt;option value=&quot;RDBMSDPL&quot;&gt;RDBMSDPL&lt;/option&gt;
				  	&lt;option value=&quot;TheLocker&quot;&gt;TheLocker&lt;/option&gt;
				&lt;/select&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Resource Name&lt;/td&gt;
			&lt;td&gt;&lt;select id=&quot;rscname${id}&quot; datasourceid=&quot;${id}&quot; name=&quot;rscname&quot; fieldset=&quot;datasource&quot;&gt;&lt;/select&gt; (From Resources)&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
&lt;/div&gt;</pre></div></div>

<h3>The Unique ID Approach</h3>
<p>The simplest way to manipulate the DOM with jQuery is using the id based method.<br />
In the html we have datatypeselect drop down menus.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;select id=&quot;datatypeselect${id}&quot; name=&quot;datatypeselect&quot; fieldset=&quot;datasource&quot;&gt;
  	&lt;option value=&quot;HashDPL&quot;&gt;HashDPL&lt;/option&gt;
  	&lt;option value=&quot;CSVDPL&quot;&gt;CSVDPL&lt;/option&gt;
  	&lt;option value=&quot;RDBMSDPL&quot;&gt;RDBMSDPL&lt;/option&gt;
  	&lt;option value=&quot;TheLocker&quot;&gt;TheLocker&lt;/option&gt;
&lt;/select&gt;</pre></div></div>

<p>For each individual datasource displayed, there is a datatypeselect drop down with a unique id associated with that element.<br />
Here is the javascript to set the  value of the datatypeselect for a given datasource object. This follows the method for populating the html we covered in part 1 of this series.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">$(&quot;#datatypeselect&quot;+datasource.id).val(datasource.datatypeselect);</pre></div></div>

<p>The &#8216;#&#8217; at the beginning of the selector signifies that we&#8217;re selecting based on the id attribute of the html element. The value is being set to the datasource object&#8217;s datatypeselect field.</p>
<h3>The div ID Approach</h3>
<p>This approach is similar to the Unique ID Approach, but instead of using the id for the particular element, we can use the id for a parent of this element. This forces us to only have a unique id at the parent level instead of a unique id for each individual html element.</p>
<p>The parent of the datatypeselect element in the html:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;div id=&quot;datasources_iterator${id}&quot; class=&quot;datasource_container&quot;&gt;</pre></div></div>

<p>Here&#8217;s the javascript for this approach to accessing the datatypeselect element:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">var divid = '#datasources_iterator'+datasource.id;
$(divid+ ' select[name=datatypeselect]').val(datasource.datatypeselect);</pre></div></div>

<h3>The Parent Selector Approach</h3>
<p>This approach uses the same divid as the div ID Approach above but we pass the selector as an argument. Here we also use the fieldset attribute to give greater specificity to the jQuery selector.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">$('select[name=datatypeselect][fieldset=datasource]', $(divid)).val(datasource.datatypeselect);</pre></div></div>

<p>Ultimately we want to strip our html elements to the bare minimum of what we really need to access and manipulate their values and get away from using unique ids for each element.</p>
 <img src="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?view=1&post_id=126" width="1" height="1" style="display: none;" />
<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/DATA+series' rel='tag' target='_self'>DATA series</a>, <a class='technorati-link' href='http://technorati.com/tag/DOM+manipulation' rel='tag' target='_self'>DOM manipulation</a>, <a class='technorati-link' href='http://technorati.com/tag/jQuery' rel='tag' target='_self'>jQuery</a>, <a class='technorati-link' href='http://technorati.com/tag/PushToTest' rel='tag' target='_self'>PushToTest</a>, <a class='technorati-link' href='http://technorati.com/tag/titanium' rel='tag' target='_self'>titanium</a></p>

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/zuerchtech/~4/M6dNd5IyIEs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.zuerchtech.com/2009/08/20/data-pt-2-accessing-the-dom-with-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developing Appcelerator Titanium Application (DATA) pt. 1 – A series of articles on lessons learned…</title>
		<link>http://blog.zuerchtech.com/2009/08/20/developing-appcelerator-titanium-application-pt-1-a-series-of-articles-on-lessons-learned/</link>
		<comments>http://blog.zuerchtech.com/2009/08/20/developing-appcelerator-titanium-application-pt-1-a-series-of-articles-on-lessons-learned/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 19:10:02 +0000</pubDate>
		<dc:creator>Ali Faiz</dc:creator>
				<category><![CDATA[Titanium]]></category>
		<category><![CDATA[DATA series]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PushToTest]]></category>
		<category><![CDATA[templating]]></category>
		<category><![CDATA[titanium]]></category>

		<guid isPermaLink="false">http://blog.zuerchtech.com/?p=120</guid>
		<description><![CDATA[The Application: PushToTest TestMaker
As part of our work on the PushToTest TestMaker open source project, we ran into numerous issues and resolutions that we felt should be shared.
Some background on what we used:
- Appcelerator Titanium Developer
- Javascript
- jQuery 1.3.2
- jQuery template plugin
- jQuery scrollTo plugin
- ExtJS 3.0 rc 3
First Issue To Address
One of the key [...]]]></description>
			<content:encoded><![CDATA[<h3>The Application: PushToTest TestMaker</h3>
<p>As part of our work on the PushToTest TestMaker open source project, we ran into numerous issues and resolutions that we felt should be shared.</p>
<p>Some background on what we used:<br />
- Appcelerator Titanium Developer<br />
- Javascript<br />
- jQuery 1.3.2<br />
- jQuery template plugin<br />
- jQuery scrollTo plugin<br />
- ExtJS 3.0 rc 3</p>
<h3>First Issue To Address</h3>
<p>One of the key first issues we ran into was how to render the html using jQuery on the client side for the Titanium application without doing too much manual DOM manipulation. Also, since most of the information being rendered would be in arrays, it would preferably make displaying arrays easier.</p>
<h3>The Solution</h3>
<p>Our solution came in the form of the <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3BsdWdpbnMuanF1ZXJ5LmNvbS9wcm9qZWN0L2pxdWVyeXRlbXBsYXRl">jQuery template plugin</a>.<br />
For our implementation, we created html code snippets that we placed in individual html files. Each html file would be loaded and be passed into the $.template method which would then be passed into a .append method along with an object whose values would be injected into the html.</p>
<p>The reason why templating and more specifically why breaking the html into snippets was necessary is almost entirely because we wanted to be able to iterate through multiple objects and display them the cleanest and most efficient way possible.</p>
<h3>Example with the PushToTest Datasource</h3>
<p>For an example I&#8217;ve lain out how we rendered the information for datasources. Datasources are objects that have names, types, and resource names.<br />
First we created a datasources.hmtl page that will be a container for all the datasources rendered:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;div class=&quot;panelmessage&quot;&gt;
Make this a data-driven test.
&lt;/div&gt;
&nbsp;
&lt;div class=&quot;form&quot;&gt;
	&lt;div class=&quot;title&quot;&gt;
		Data Production Libraries (DPLs) provide operational test data to the tests as they operate. For example, a DPL reads data from a relational database, comma-separated-value (CSV) file, or data generating object and injects it into a test script. &lt;a id=&quot;ShowTutorials&quot; name=&quot;ShowTutorials&quot; class=&quot;link&quot;&gt;Read more about it.&lt;/a&gt;
	&lt;/div&gt;
	&lt;div id=&quot;datasources_iterator&quot; style=&quot;display:none&quot; class=&quot;&quot;&gt;
	&lt;/div&gt;
	&lt;div class=&quot;adddatasource&quot;&gt;
		&lt;a id=&quot;adddatasource&quot; name=&quot;adddatasource&quot; class=&quot;link&quot; dirty=&quot;true&quot;&gt;Add DPL&lt;/a&gt;
	&lt;/div&gt;
&lt;/div&gt;</pre></div></div>

<p>Then, we created a _datasourcestemplate.html file with all the attributes for a datasource specified:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;div id=&quot;datasources_iterator${id}&quot; class=&quot;datasource_container&quot;&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;id&quot; value=&quot;${id}&quot; fieldset=&quot;datasource&quot;/&gt;
	&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; border=&quot;0&quot;&gt;
		&lt;tr&gt;
			&lt;td&gt;Name&lt;/td&gt;
			&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;name&quot; value=&quot;${name}&quot; fieldset=&quot;datasource&quot; class=&quot;name&quot;/&gt;&lt;/td&gt;
			&lt;td&gt;&lt;input type=&quot;image&quot; name=&quot;delete&quot; value=&quot;${id}&quot; src=&quot;images/cross.png&quot; fieldset=&quot;datasource&quot;/&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Type&lt;/td&gt;
			&lt;td&gt;
				&lt;select id=&quot;datatypeselect${id}&quot; name=&quot;datatypeselect&quot; fieldset=&quot;datasource&quot;&gt;
				  	&lt;option value=&quot;HashDPL&quot;&gt;HashDPL&lt;/option&gt;
				  	&lt;option value=&quot;CSVDPL&quot;&gt;CSVDPL&lt;/option&gt;
				  	&lt;option value=&quot;RDBMSDPL&quot;&gt;RDBMSDPL&lt;/option&gt;
				  	&lt;option value=&quot;TheLocker&quot;&gt;TheLocker&lt;/option&gt;
				&lt;/select&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;Resource Name&lt;/td&gt;
			&lt;td&gt;&lt;select id=&quot;rscname${id}&quot; datasourceid=&quot;${id}&quot; name=&quot;rscname&quot; fieldset=&quot;datasource&quot;&gt;&lt;/select&gt; (From Resources)&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
&lt;/div&gt;</pre></div></div>

<p>Then in the javascript we use this code to get that content and template it:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">	$.get('content/_datasourcestemplate.html', function(html) {
        Editor.datasourcesTemplate = $.template(html);
    });
&nbsp;
	for (var i=0;i&lt;Editor.currentopenfile.datasources.length;i++) {
		var datasource = Editor.currentopenfile.datasources[i];
		$('#datasources_iterator').append(Editor.datasourcesTemplate, datasource);
	}</pre></div></div>

<p>Using this method we were able to iterate through the datasource objects and inject them into the template, then append it to the datasources.html page.</p>
<h3>Post implementation lessons</h3>
<p>As you can see in the _datasourcestemplate.html code, we placed the datasource object&#8217;s id all over the place. Originally this was needed because of the way we were using jQuery to get values from the DOM. After doing some more research we found out better ways to gain access to the DOM which is what I will cover in the next post.</p>
 <img src="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?view=1&post_id=120" width="1" height="1" style="display: none;" />
<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/DATA+series' rel='tag' target='_self'>DATA series</a>, <a class='technorati-link' href='http://technorati.com/tag/jQuery' rel='tag' target='_self'>jQuery</a>, <a class='technorati-link' href='http://technorati.com/tag/PushToTest' rel='tag' target='_self'>PushToTest</a>, <a class='technorati-link' href='http://technorati.com/tag/templating' rel='tag' target='_self'>templating</a>, <a class='technorati-link' href='http://technorati.com/tag/titanium' rel='tag' target='_self'>titanium</a></p>

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/zuerchtech/~4/HlCwsXyh8aY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.zuerchtech.com/2009/08/20/developing-appcelerator-titanium-application-pt-1-a-series-of-articles-on-lessons-learned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>andrewzuercher.com – personal blog site migrated</title>
		<link>http://blog.zuerchtech.com/2009/07/06/andrewzuerchercom-personal-blog-site-migrated/</link>
		<comments>http://blog.zuerchtech.com/2009/07/06/andrewzuerchercom-personal-blog-site-migrated/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 04:57:51 +0000</pubDate>
		<dc:creator>Andrew Zuercher</dc:creator>
				<category><![CDATA[announcements]]></category>

		<guid isPermaLink="false">http://blog.zuerchtech.com/?p=114</guid>
		<description><![CDATA[Greetings,

We&#8217;ve migrated off andrew zuercher&#8217;s personal blog site to http://andrewzuercher.com.  Going forward, this site (http://blog.zuerchtech.com) will only include posts that are company specific and not of a personal nature.

 



]]></description>
			<content:encoded><![CDATA[<p>Greetings,</p>
<div>
We&#8217;ve migrated off andrew zuercher&#8217;s personal blog site to <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2FuZHJld3p1ZXJjaGVyLmNvbQ==">http://andrewzuercher.com</a>.  Going forward, this site (<a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2Jsb2cuenVlcmNodGVjaC5jb20=">http://blog.zuerchtech.com</a>) will only include posts that are company specific and not of a personal nature.
</div>
 <img src="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?view=1&post_id=114" width="1" height="1" style="display: none;" />
<!-- start wp-tags-to-technorati 1.01 -->

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/zuerchtech/~4/acvBYJ-9Bao" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.zuerchtech.com/2009/07/06/andrewzuerchercom-personal-blog-site-migrated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Barcamp 2008</title>
		<link>http://blog.zuerchtech.com/2008/10/29/barcamp-2008/</link>
		<comments>http://blog.zuerchtech.com/2008/10/29/barcamp-2008/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 01:31:42 +0000</pubDate>
		<dc:creator>Andrew Zuercher</dc:creator>
				<category><![CDATA[barcamp]]></category>

		<guid isPermaLink="false">http://blog.zuerchtech.com/?p=86</guid>
		<description><![CDATA[Finally a week after barcamp altanta 2008 I have a second to write about the weekend &#8211; its been a crazy past few weeks for me.  Barcamp was great, same as last year, but this time i knew a few more of the attendees (its a small world).  Some of the highlights for [...]]]></description>
			<content:encoded><![CDATA[<p>Finally a week after <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2JhcmNhbXBhdGxhbnRhLmNvbS8=">barcamp altanta 2008</a> I have a second to write about the weekend &#8211; its been a crazy past few weeks for me.  Barcamp was great, same as last year, but this time i knew a few more of the attendees (its a small world).  Some of the highlights for me</p>
<ul>
<li>jedi mind tricks  &#8211; reciprocity, commitment &#038; consistency, social proof, authority, scarcity, reactities, liking, contacts, and co-operation.  Dont you think that those are some very keen tactics?  answer &#8220;those are some very keen tactics.  </li>
<li>an open source talk</li>
<li>a political discussion &#8211; i caught the end of it</li>
<li>a preso on fluid</li>
<li>iphone sdk 101</li>
<li>and my favorite poker till 4am &#8211; honed up my skills in omaha and texas hold-em</li>
</ul>
<p>While there i presented a session on <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5hcHBjZWxlcmFudC5jb20vaW50cm9kdWNpbmctdGVzdG1vbmtleS5odG1s">Appcelerator and TestMonkey</a>.  It was a great weekend and I really like our atlanta community and glad to see it unite for a weekend.  Looking forward to <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2F0bGFudGEyLnN0YXJ0dXB3ZWVrZW5kLmNvbS8=">atlanta startup weekend 2</a> here in a few weeks.</p>
 <img src="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?view=1&post_id=86" width="1" height="1" style="display: none;" />
<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/barcamp' rel='tag' target='_self'>barcamp</a></p>

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/zuerchtech/~4/KZ3VQN1u4Q8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.zuerchtech.com/2008/10/29/barcamp-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No Fluff Just Stuff Atlanta Fall 2008</title>
		<link>http://blog.zuerchtech.com/2008/10/29/no-fluff-just-stuff-atlanta-fall-2008/</link>
		<comments>http://blog.zuerchtech.com/2008/10/29/no-fluff-just-stuff-atlanta-fall-2008/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 01:20:18 +0000</pubDate>
		<dc:creator>Andrew Zuercher</dc:creator>
				<category><![CDATA[nfjs]]></category>

		<guid isPermaLink="false">http://blog.zuerchtech.com/?p=79</guid>
		<description><![CDATA[Friday through Sunday this week I attended no fluff just stuff in atlanta.  Some of you may have seen some of my tweets.  Some of the key sessions that I attended and really enjoyed:

Groovy by Scott Davis.  Scott has a tremendous amount of energy and did a very good job of covering [...]]]></description>
			<content:encoded><![CDATA[<p>Friday through Sunday this week I attended <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5ub2ZsdWZmanVzdHN0dWZmLmNvbS9ob21lLmpzcA==">no fluff just stuff</a> in atlanta.  Some of you may have seen some of my tweets.  Some of the key sessions that I attended and really enjoyed:</p>
<ul>
<li>Groovy by <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5ub2ZsdWZmanVzdHN0dWZmLmNvbS9jb25mZXJlbmNlL3NwZWFrZXIvc2NvdHRfZGF2aXMuaHRtbA==">Scott Davis</a>.  Scott has a tremendous amount of energy and did a very good job of covering some of the lesser known aspects of groovy as well as grails</li>
<li>GWT by <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5ub2ZsdWZmanVzdHN0dWZmLmNvbS9zcGVha2VyX3ZpZXcuanNwP3NwZWFrZXJJZD00">David Geary</a>.  David is local to Atlanta and provided some humor while explaining the internals of GWT</li>
<li>Agile and Architecture by <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5ub2ZsdWZmanVzdHN0dWZmLmNvbS9jb25mZXJlbmNlL3NwZWFrZXIvZGF2aWRfaHVzc21hbi5odG1s">David Hussman</a>.  David is an agile coach and had a very open and interactive session that was very enjoyable</li>
<li>Cloud Computing by <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5ub2ZsdWZmanVzdHN0dWZmLmNvbS9jb25mZXJlbmNlL3NwZWFrZXIvbWljaGFlbF9ueWdhcmQuaHRtbA==">Michael Nygard</a> &#8211; helped answer a lot of my questions with practical examples.  He knows his stuff and I cant wait to start using AWS on some of my upcoming projects.</li>
</ul>
<p>While at the conference I ended up tweeting with some of the other attendees.  That was pretty cool.  It was a very long weekend and made for a tiring Monday, but I&#8217;m glad that I had the opportunity to attend the sessions.  </p>
 <img src="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?view=1&post_id=79" width="1" height="1" style="display: none;" />
<!-- start wp-tags-to-technorati 1.01 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/nfjs' rel='tag' target='_self'>nfjs</a></p>

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/zuerchtech/~4/oL-F-BbB79o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.zuerchtech.com/2008/10/29/no-fluff-just-stuff-atlanta-fall-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zuercher Technologies Re-born</title>
		<link>http://blog.zuerchtech.com/2008/10/29/zuercher-technologies-re-born/</link>
		<comments>http://blog.zuerchtech.com/2008/10/29/zuercher-technologies-re-born/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 01:01:46 +0000</pubDate>
		<dc:creator>Andrew Zuercher</dc:creator>
				<category><![CDATA[announcements]]></category>

		<guid isPermaLink="false">http://blog.zuerchtech.com/?p=74</guid>
		<description><![CDATA[Zuercher Technologies is making a comeback.  As many of you probably already know the Appcelerator Atlanta Office closed down.  Some have asked me what is on the horizon and I&#8217;ve held back a little to make a formal announcement.  Over the next couple of weeks I&#8217;ll be putting up a new web [...]]]></description>
			<content:encoded><![CDATA[<p>Zuercher Technologies is making a comeback.  As many of you probably already know the <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2Jsb2cuamVmZmhheW5pZS51cy90b3VnaC10aW1lcy10b3VnaC1kZWNpc2lvbnMuaHRtbA==">Appcelerator Atlanta Office closed down</a>.  Some have asked me what is on the horizon and I&#8217;ve held back a little to make a formal announcement.  Over the next couple of weeks I&#8217;ll be putting up a new web front for zuerchtech, but the premise is that I will be starting a services delivery company aimed at helping companies create RIA based web solutions as an <a href="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2FwcGNlbGVyYXRvci5jb20=">Appcelerator</a> partner.  I&#8217;d like to thank all those who have offered their support over the past couple of weeks and am very excited with the opportunities to come in the near future!</p>
 <img src="http://blog.zuerchtech.com/wp-content/plugins/feed-statistics.php?view=1&post_id=74" width="1" height="1" style="display: none;" />
<!-- start wp-tags-to-technorati 1.01 -->

<!-- end wp-tags-to-technorati -->
<img src="http://feeds.feedburner.com/~r/zuerchtech/~4/sImi9yqOH0g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.zuerchtech.com/2008/10/29/zuercher-technologies-re-born/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
