<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">

    <title type="text">David Ortinau</title>
    <subtitle type="text">David Ortinau:</subtitle>
    <link rel="alternate" type="text/html" href="http://www.davidortinau.com/blog/index/" />
    <link rel="self" type="application/atom+xml" href="http://www.davidortinau.com/blog/atom/" />
    <updated>2009-12-10T05:33:50Z</updated>
    <rights>Copyright (c) 2009, David Ortinau</rights>
    <generator uri="http://expressionengine.com/" version="1.6.6">ExpressionEngine</generator>
    <id>tag:davidortinau.com,2009:12:10</id>


    <entry>
      <title>White Paper Bible iPhone App NOW AVAILABLE</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/white_paper_bible_iphone_app_now_available/" />
      <id>tag:davidortinau.com,2009:blog/index/1.57</id>
      <published>2009-12-10T05:20:49Z</published>
      <updated>2009-12-10T05:33:50Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="iPhone"
        scheme="http://www.davidortinau.com/site/category/iphone/"
        label="iPhone" />
      <content type="html"><![CDATA[
        <p>I&#8217;m thrilled to announce<a href="http://itunes.apple.com/us/app/white-paper-bible/id339473540?mt=8"><img src="http://www.whitepaperbible.org/images/iPhoneAppStoreBanner.png" style="float:left;margin-right:8px;" /></a> my iPhone app is now available on the App Store. This personal project has been a huge learning experience full of ups and downs, but mostly of flat, long, patient waiting. </p>

<p>There are a great many fantastic Bible applications in the App Store today. What makes WPB unique is the manner in which it allows you to distill and consume your A-List scriptures that are powerful for the exact moment you are in, not matter where you are. It is at once your Topical Bible and God&#8217;s Promises scriptures on the go.</p>

<p>With WPB you choose from an ever growing collection of topical scripture lists, or you make your own. As you discover new verses that speak directly to you, then add them to your paper no matter wherever you are.</p>

<p>If this sounds like something you&#8217;re interested in, or if you just want to do me a solid and spread the word, please check it out. I&#8217;m very satisfied to have come this far, and look forward to many future releases of this product.</p>

<h2>White Paper Bible</h2><p>
<a href="http://www.whitepaperbible.org" onclick="window.open(this.href); return false;" >http://www.whitepaperbible.org</a></p>

<h2>White Paper Bible iPhone App</h2><p>
<a href="http://app.whitepaperbible.org" title="White Paper Bible iPhone App">app.whitepaperbible.org</a></p>

<h2>White Paper Bible on Twitter</h2><p>
<a href="http://twitter.com/whitepaperbible" title="twitter.com/whitepaperbible">twitter.com/whitepaperbible</a></p>

<h2>White Paper Bible on Facebook</h2><p>
<a href="http://www.facebook.com/pages/White-Paper-Bible/128636440822" onclick="window.open(this.href); return false;" >http://www.facebook.com/pages/White-Paper-Bible/128636440822</a></p>

<p>
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>2009 Advent Calendar for White Paper Bible</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/2009_advent_calendar_for_white_paper_bible/" />
      <id>tag:davidortinau.com,2009:blog/index/1.56</id>
      <published>2009-11-30T16:29:19Z</published>
      <updated>2009-11-30T17:10:20Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="General"
        scheme="http://www.davidortinau.com/site/category/general/"
        label="General" />
      <category term="jQuery"
        scheme="http://www.davidortinau.com/site/category/jquery/"
        label="jQuery" />
      <category term="Ruby on Rails"
        scheme="http://www.davidortinau.com/site/category/ruby_on_rails/"
        label="Ruby on Rails" />
      <content type="html"><![CDATA[
        <p>To extend the White Paper Bible site, I asked Kerry Layton to design a calendar for the Advent season. You can view it here: <a href="http://www.whitepaperbible.org/advent" onclick="window.open(this.href); return false;" >http://www.whitepaperbible.org/advent</a>.</p>

<p>Initially I was thinking Advent Sausage (<a href="http://lovelypackage.com/konecke-advent-sausage/" onclick="window.open(this.href); return false;" >http://lovelypackage.com/konecke-advent-sausage/</a>), but I&#8217;m glad Kerry designed a beautiful, clean calendar. Kerry, btw, loves to design calendars and you can see some of his work over at Design Audit (<a href="http://www.designaudit.net" onclick="window.open(this.href); return false;" >http://www.designaudit.net</a>).</p>

<p>I only had a few days to pull it together. Like everything else, it was a last minute idea. I wanted simple, feature Bible passages relevant to Advent, and a cool reveal animation.</p>

<p>So, I went on the hunt. First up, what in the world is Advent and what does that have to do with an Advent Calendar?! I&#8217;m not overly religious in the liturgical sense, so Wikipedia to the rescue. </p>

<p>Advent: <a href="http://en.wikipedia.org/wiki/Advent" onclick="window.open(this.href); return false;" >http://en.wikipedia.org/wiki/Advent</a><br />
Advent Calendar: <a href="http://en.wikipedia.org/wiki/Advent_calendar" onclick="window.open(this.href); return false;" >http://en.wikipedia.org/wiki/Advent_calendar</a></p>

<p>To do the flip animation I new I wanted jQuery. I needed to both flip and resize the tile to display the passage. I found a bunch of stuff out there, but the one that really did the trick is the Flip! jQuery plugin found here: <a href="http://lab.smashup.it/flip/" onclick="window.open(this.href); return false;" >http://lab.smashup.it/flip/</a>.</p>

<p>The recipe for the flip plus the scale I found over on the Work [at] Play blog: <a href="http://think.workatplay.com/content/workatplaycom-how-it-was-made-flip-and-scale-effect" onclick="window.open(this.href); return false;" >http://think.workatplay.com/content/workatplaycom-how-it-was-made-flip-and-scale-effect</a>. Great stuff!</p>

<p>As I added the content, I either needed to add a scrollbar or let the content run. The scrollbar proved to be the best solution, so I went with my favorite, the jScrollPane plugin (<a href="http://www.kelvinluck.com/assets/jquery/jScrollPane/jScrollPane.html" onclick="window.open(this.href); return false;" >http://www.kelvinluck.com/assets/jquery/jScrollPane/jScrollPane.html</a>). Make sure to use the source on Google code (<a href="http://code.google.com/p/jscrollpane/" onclick="window.open(this.href); return false;" >http://code.google.com/p/jscrollpane/</a>) or the examples. The ZIP file is somewhat outdated. For adding mousescroll functionality, I use the same plugin posted with the jScrollPane examples, but the updated version at <a href="http://plugins.jquery.com/project/mousewheel" onclick="window.open(this.href); return false;" >http://plugins.jquery.com/project/mousewheel</a>. </p>

<p>I should also mention that this site is Ruby on Rails, and the advent calendar is really just a static html. The way I implemented this is using my Pages controller which serves up the less dynamic content on the site (like the About page). I added a route for /advent and then put all my advent specific assets (js, css, images) into public/advent to keep things a bit cleaner. I could probably keep the js all together with my core js files. Then in my view/advent.html I updated all the asset references to pull from the /advent sub dir. Merging static content into a Rails app isn&#8217;t really hard, it&#8217;s just that Rails developers like do know the right or approved way, and there doesn&#8217;t seem to be much consensus on that for static content. If you have a better way, let me know.</p>

<p>And that&#8217;s about it. Checkout the final result (well&#8230;final until I think of something to enhance it). <a href="http://www.whitepaperbible.org/advent" onclick="window.open(this.href); return false;" >http://www.whitepaperbible.org/advent</a>.</p>

<p>Enjoy.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>White Paper Bible Online and iPhone App</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/white_paper_bible_online_and_iphone_app/" />
      <id>tag:davidortinau.com,2009:blog/index/1.55</id>
      <published>2009-11-19T14:45:43Z</published>
      <updated>2009-11-19T16:10:44Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="Ruby on Rails"
        scheme="http://www.davidortinau.com/site/category/ruby_on_rails/"
        label="Ruby on Rails" />
      <content type="html"><![CDATA[
        <p>For the past year I&#8217;ve been working during my free time on a personal project called White Paper Bible (<a href="http://www.whitepaperbible.org" onclick="window.open(this.href); return false;" >http://www.whitepaperbible.org</a>) under the umbrella of my development company, Simply Profound (<a href="http://www.simplyprofound.com" onclick="window.open(this.href); return false;" >http://www.simplyprofound.com</a>). Just launched is a micro-site promoting White Paper Bible and the companion iPhone app (<a href="http://app.whitepaperbible.org" onclick="window.open(this.href); return false;" >http://app.whitepaperbible.org</a>).</p>

<p><a href="http://app.whitepaperbible.org" title="iPhone app - White Paper Bible"><img src="http://www.davidortinau.com/images/uploads/screen_app.png" style="border: 0;" alt="image" width="450" height="384" /></a></p>

<p>White Paper Bible is a personal Bible study tool that can be used as a daily devotional, a topical Bible, a Bible promises reference, and pretty much whatever a user can think to do with it. Users collect verses by whatever grouping is meaningful to them. One of my favorite features is the ability to stream a professional recording playlist of the entire user-created paper.</p>

<p>What&#8217;s with the name? A &#8220;white paper&#8221; is commonly defined as &#8220;an authoritative report or guide that often addresses problems and how to solve them; used to educate and help make decisions&#8221;. Well, that sums of the Bible for most Christians. And it works on other levels too, but I&#8217;ll leave that for you to discover.</p>

<p>For a quick overview of the tech bits, the site is built with Ruby on Rails and some jQuery love. I use Shadowbox.js for the paper &#8220;focus&#8221; feature that displays inline divs. The iPhone app is native Obj-C and talks to the site via JSON calls facilitated by HTTPRiot (<a href="http://labratrevenge.com/httpriot/" onclick="window.open(this.href); return false;" >http://labratrevenge.com/httpriot/</a>). The site talks to the ESV Bible web service (<a href="http://www.esvapi.org" onclick="window.open(this.href); return false;" >http://www.esvapi.org</a>) using a forked version of Geoffrey Dagley&#8217;s great ESV Bible gem (<a href="http://github.com/gdagley/esv_bible" onclick="window.open(this.href); return false;" >http://github.com/gdagley/esv_bible</a>).</p>

<p>The iPhone app is not currently available in the App Store, but as soon as it is I&#8217;ll post a link here.</p>

<p><a href="http://www.whitepaperbible.org"><img src="http://www.davidortinau.com/images/uploads/screen_wpb.png" style="border: 0;" alt="image" width="450" height="384" /></a></p>

 
      ]]></content>
    </entry>

    <entry>
      <title>Simple Webcam Capture Demo for Flex</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/simple_webcam_capture_demo_for_flex/" />
      <id>tag:davidortinau.com,2009:blog/index/1.54</id>
      <published>2009-11-09T05:47:42Z</published>
      <updated>2009-11-09T06:00:43Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="Flash"
        scheme="http://www.davidortinau.com/site/category/flash/"
        label="Flash" />
      <category term="Flex"
        scheme="http://www.davidortinau.com/site/category/flex/"
        label="Flex" />
      <content type="html"><![CDATA[
        <p>I put together a simple demo of how you can capture an image from the webcam in Flex. Nothing super complex going on here once you see it.</p>

<p>Basically we use the Camera, VideoDisplay, and the Bitmap classes. The Camera allows us to do just what you expect prompting the user to connect to their camera. The Camera is then attached to the VideoDisplay component and we can see what the camera sees. </p>

<p><pre class="actionscript"><ol><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">camera</span>:<span style="color: #0066CC;">Camera</span> = <span style="color: #0066CC;">Camera</span>.<span style="color: #006600;">getCamera</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">                </div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">camera</span><span style="color: #66cc66;">&#41;</span> </div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">    videoDisplay.<span style="color: #006600;">attachCamera</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">camera</span><span style="color: #66cc66;">&#41;</span>;                    </div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #b1b100;">else</span> </div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">    Alert.<span style="color: #0066CC;">show</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Oops, we can't find your camera.&quot;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li></ol></pre></p>

<p><br />
When we want to capture an image we create a new, empty Bitmap at the same size as the VideoDisplay, and we draw the output of the VideoDisplay to the image. We then write that image back to the stage so we can see it.</p>

<p><pre class="actionscript"><ol><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">var</span> snap:BitmapData = <span style="color: #000000; font-weight: bold;">new</span> BitmapData<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">320</span>, <span style="color: #cc66cc;">240</span>, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">var</span> snapBmp:Bitmap = <span style="color: #000000; font-weight: bold;">new</span> Bitmap<span style="color: #66cc66;">&#40;</span>snap<span style="color: #66cc66;">&#41;</span>;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">snapBmp.<span style="color: #0066CC;">width</span> = <span style="color: #cc66cc;">320</span>;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">snapBmp.<span style="color: #0066CC;">height</span> = <span style="color: #cc66cc;">240</span>;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>snapshotHolder.<span style="color: #006600;">numChildren</span> &gt; <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">    snapshotHolder.<span style="color: #006600;">removeChildAt</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">snapshotHolder.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>snapBmp<span style="color: #66cc66;">&#41;</span>;                </div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">snap.<span style="color: #006600;">draw</span><span style="color: #66cc66;">&#40;</span>videoDisplay<span style="color: #66cc66;">&#41;</span>;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li></ol></pre></p>

<p><br />
Demo: <a href="http://www.davidortinau.com/flash/WebcamCaptureDemo/WebcamCaptureDemo.html" onclick="window.open(this.href); return false;" >http://www.davidortinau.com/flash/WebcamCaptureDemo/WebcamCaptureDemo.html</a></p>

<p>Source: <a href="http://www.davidortinau.com/flash/WebcamCaptureDemo/srcview/index.html" onclick="window.open(this.href); return false;" >http://www.davidortinau.com/flash/WebcamCaptureDemo/srcview/index.html</a>
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>ColorTransform with GTween</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/colortransform_with_gtween/" />
      <id>tag:davidortinau.com,2009:blog/index/1.53</id>
      <published>2009-09-02T17:44:12Z</published>
      <updated>2009-09-02T17:57:13Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="General"
        scheme="http://www.davidortinau.com/site/category/general/"
        label="General" />
      <content type="html"><![CDATA[
        <p><embed width="400" height="400" pluginspage="http://www.adobe.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptaccess="always" quality="high" loop="false" play="true" name="colorTransform" bgcolor="#28292B" src="/exhibits/gtween_color/colorTransform.swf"/>

<p><pre class="actionscript"><ol><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0066CC;">import</span> fl.<span style="color: #006600;">motion</span>.<span style="color: #006600;">easing</span>.<span style="color: #006600;">*</span>;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0066CC;">import</span> com.<span style="color: #006600;">gskinner</span>.<span style="color: #006600;">motion</span>.<span style="color: #006600;">GTweenFilter</span>;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0066CC;">import</span> com.<span style="color: #006600;">gskinner</span>.<span style="color: #006600;">motion</span>.<span style="color: #006600;">GTween</span>;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">var</span> coltw:GTween = <span style="color: #000000; font-weight: bold;">new</span> GTween<span style="color: #66cc66;">&#40;</span>foo.<span style="color: #006600;">transform</span>.<span style="color: #006600;">colorTransform</span>, <span style="color: #cc66cc;">4</span>, <span style="color: #66cc66;">&#123;</span> redOffset:<span style="color: #cc66cc;">255</span>, greenOffset:<span style="color: #cc66cc;">0</span>, blueOffset:<span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#125;</span>, <span style="color: #66cc66;">&#123;</span> ease:Circular.<span style="color: #006600;">easeOut</span> <span style="color: #66cc66;">&#125;</span> <span style="color: #66cc66;">&#41;</span>;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">coltw.<span style="color: #006600;">setAssignment</span><span style="color: #66cc66;">&#40;</span>foo.<span style="color: #006600;">transform</span>, <span style="color: #ff0000;">&quot;colorTransform&quot;</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li></ol></pre></p>

<p><br />
GTween: <a href="http://gskinner.com/libraries/gtween/" onclick="window.open(this.href); return false;" >http://gskinner.com/libraries/gtween/</a><br />
FLA: <a href="http://www.davidortinau.com/exhibits/gtween_color/colorTransform.fla" onclick="window.open(this.href); return false;" >http://www.davidortinau.com/exhibits/gtween_color/colorTransform.fla</a></p> 
      ]]></content>
    </entry>

    <entry>
      <title>How to Resize the Flex Stage and Use the Browser Scrollbar</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/how_to_resize_the_flex_stage_and_use_the_browser_scrollbar/" />
      <id>tag:davidortinau.com,2009:blog/index/1.52</id>
      <published>2009-07-13T23:25:09Z</published>
      <updated>2009-07-16T14:58:10Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="Flash"
        scheme="http://www.davidortinau.com/site/category/flash/"
        label="Flash" />
      <category term="Flex"
        scheme="http://www.davidortinau.com/site/category/flex/"
        label="Flex" />
      <content type="html"><![CDATA[
        <p>I have a Flex application that will shrink and grow vertically, but I do NOT want to ever, ever, ever see the Flex scroll bar. Ever! It has its place, but not for the entire app. That&#8217;s what the browser has a scroll bar for. And people are intimately familiar with that scroll bar, so I would much rather use that.</p>

<p>My Flex application makes use of the mx:ViewStack and each view will be the same width, but vary in height and even change interactively. At a minimum I want Flash to span the available browser window top to bottom. At a maximum I want the user to scroll with the browser scroll bar.</p>

<p><b>How I Did It</b><br />
I disable the Flex scroll bars by modifying the policy value. Depending on how nested your application is (Canvas > VBox > Canvas > HBox > etc) you may have to do this at many levels. If there is a way to disable this by default, please have mercy on a brother and tell me now.</p>

<p><pre class="html4strict"><ol><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;">&lt;mx:Application </div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">layout=<span style="color: #ff0000;">&quot;absolute&quot;</span> </div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;680&quot;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">horizontalScrollPolicy=<span style="color: #ff0000;">&quot;off&quot;</span> </div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">verticalScrollPolicy=<span style="color: #ff0000;">&quot;off&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li></ol></pre></p>

<p>Next I set the ViewStack to resizeToContent.</p>

<p><pre class="html4strict"><ol><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;">&lt;mx:ViewStack <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;mainStack&quot;</span> resizeToContent=<span style="color: #ff0000;">&quot;true&quot;</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">     &lt;views:WelcomeView <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;welcomeView&quot;</span> /<span style="color: #000000; font-weight: bold;">&gt;</span></span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">     <span style="color: #009900;">&lt;views:OrderFormView <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;orderFormView&quot;</span> /<span style="color: #000000; font-weight: bold;">&gt;</span></span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>/mx:ViewStack&gt;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li></ol></pre></p>

<p>Now I create a listener to handle any resize of the views. In my case this will always come up through the OrderFormView which is itself an mx:ViewStack. </p>

<p><pre class="actionscript"><ol><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">events</span>.<span style="color: #006600;">ResizeEvent</span>;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> setupResize<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">void</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">     orderFormView.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>ResizeEvent.<span style="color: #006600;">RESIZE</span>, formResize<span style="color: #66cc66;">&#41;</span>;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li></ol></pre></p>

<p>And then on formResize I use the ExternalInterface to issue the appropriate javascript to resize my DIV container to the height of my ViewStack plus a buffer of 30 pixels cuz I want a little play at the bottom.</p>

<p><pre class="actionscript"><ol><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> formResize<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span> : ResizeEvent<span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">void</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">     ExternalInterface.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;setFlashHeight&quot;</span>, mainStack.<span style="color: #0066CC;">height</span> + <span style="color: #cc66cc;">30</span><span style="color: #66cc66;">&#41;</span>;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li></ol></pre></p>

<p>ExternalInterface.objectID is the ID of the DIV made available by Flex. Then in the page I have a javascript function to perform the actual resize.</p>

<p><pre class="javascript"><ol><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">function</span> setFlashHeight<span style="color: #66cc66;">&#40;</span>newHeight<span style="color: #66cc66;">&#41;</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> viewportwidth;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> viewportheight;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span> window.<span style="color: #006600;">innerWidth</span> != <span style="color: #3366CC;">'undefined'</span><span style="color: #66cc66;">&#41;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">viewportwidth = window.<span style="color: #006600;">innerWidth</span>,</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">viewportheight = window.<span style="color: #006600;">innerHeight</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document) </span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span> document.<span style="color: #006600;">documentElement</span> != <span style="color: #3366CC;">'undefined'</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&amp;&amp; <span style="color: #000066; font-weight: bold;">typeof</span> document.<span style="color: #006600;">documentElement</span>.<span style="color: #006600;">clientWidth</span> !=</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #3366CC;">'undefined'</span> &amp;&amp; document.<span style="color: #006600;">documentElement</span>.<span style="color: #006600;">clientWidth</span> != <span style="color: #CC0000;">0</span><span style="color: #66cc66;">&#41;</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">viewportwidth = document.<span style="color: #006600;">documentElement</span>.<span style="color: #006600;">clientWidth</span>,</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">viewportheight = document.<span style="color: #006600;">documentElement</span>.<span style="color: #006600;">clientHeight</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// older versions of IE </span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066; font-weight: bold;">else</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">viewportwidth = document.<span style="color: #006600;">getElementsByTagName</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'body'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">clientWidth</span>,</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">viewportheight = document.<span style="color: #006600;">getElementsByTagName</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'body'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">clientHeight</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">document.<span style="color: #006600;">getElementById</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'consumer'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">style</span>.<span style="color: #006600;">height</span> = <span style="color: #66cc66;">&#40;</span>viewportheight &gt; newHeight<span style="color: #66cc66;">&#41;</span> ? viewportheight + <span style="color: #3366CC;">'px'</span> : newHeight + <span style="color: #3366CC;">'px'</span>; </div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li></ol></pre></p>

<p><br />
Something else you&#8217;ll likely want to do is scroll back to the top of the page after the resize. </p>

<p><pre class="actionscript"><ol><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">ExternalInterface.<span style="color: #0066CC;">call</span><span style="color: #66cc66;">&#40;</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">    <span style="color: #ff0000;">&quot;function() { scroll(0,0); }&quot;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#41;</span>;</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li></ol></pre></p>

<p>That&#8217;s it. The next thing to do is implement something like <a href="http://swffit.millermedeiros.com/" title="SWFFIT">SWFFIT</a> or write a little function that appropriately resizes the DIV upon a browser resize event (if the user resizes or removes a status bar or finder bar, etc.).</p> 
      ]]></content>
    </entry>

    <entry>
      <title>A Simple Form Field Comparison Validator for Flex</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/a_simple_form_field_comparison_validator_for_flex/" />
      <id>tag:davidortinau.com,2009:blog/index/1.51</id>
      <published>2009-05-27T23:44:04Z</published>
      <updated>2009-07-17T13:38:05Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="General"
        scheme="http://www.davidortinau.com/site/category/general/"
        label="General" />
      <category term="Flex"
        scheme="http://www.davidortinau.com/site/category/flex/"
        label="Flex" />
      <content type="html"><![CDATA[
        <p>In addition to a <a href="http://www.davidortinau.com/blog/how_to_validate_a_date_range_in_flex/" title="Date Range Validator control">Date Range Validator control</a> for a recent project, I also need to compare to user input fields for confirm email address and confirm password. Since I&#8217;d just extended the DateValidator, I figured the same approach would work for comparing two controls. </p>

<p>Class: <a href="http://s3.davidortinau.com/downloads/FieldComparisonValidator.as" title="FieldComparisonValidator.as">FieldComparisonValidator.as</a></p>

<p><b>Disclosure:</b> this was evidently something Adobe Consulting had in their bag of tricks for Flex 2, but namespaces had changes and the code I found burried in a mailing list didn&#8217;t work. I made some quick updates to what I saw there, and this works fine for comparing mx:TextInput.</p>

<p>To see how the entire form validation plays out in my forms, check out the previous post <a href="http://www.davidortinau.com/blog/how_to_validate_a_date_range_in_flex/" title="How to Validate a Date Range in Flex">How to Validate a Date Range in Flex</a>.</p>

<p>To validator implemntation is:</p>

<p><pre class="html4strict"><ol><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;">&lt;validators:FieldComparisonValidator <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;valConfirmEmail&quot;</span> source=<span style="color: #ff0000;">&quot;{txtEmailAddressConfirm}&quot;</span> property=<span style="color: #ff0000;">&quot;text&quot;</span> destination=<span style="color: #ff0000;">&quot;{txtEmailAddress}&quot;</span> destinationProperty=<span style="color: #ff0000;">&quot;text&quot;</span> required=<span style="color: #ff0000;">&quot;true&quot;</span> /<span style="color: #000000; font-weight: bold;">&gt;</span></span></div></li></ol></pre></p>

<p>I&#8217;ll be using this thing aplenty, so if it breaks down I&#8217;ll be sure to update it. If you have a better validator for this scenario, or an improvement, please let me know.</p>

 
      ]]></content>
    </entry>

    <entry>
      <title>How to Validate a Date Range in Flex</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/how_to_validate_a_date_range_in_flex/" />
      <id>tag:davidortinau.com,2009:blog/index/1.50</id>
      <published>2009-05-27T23:27:25Z</published>
      <updated>2009-07-17T13:39:26Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="General"
        scheme="http://www.davidortinau.com/site/category/general/"
        label="General" />
      <category term="Flex"
        scheme="http://www.davidortinau.com/site/category/flex/"
        label="Flex" />
      <content type="html"><![CDATA[
        <p>I had the need to validate a date based on a range of allowed dates, and I couldn&#8217;t find this validation control anywhere for Flex. The reason is probably because it&#8217;s just so easy to write. </p>

<p>The solution is to write a custom validator that extends DateValidator, pass in the start and end dates, and then perform the validation. This way I can benefit from the nice inline validation Flex gives us.</p>

<p>The actual validation code to compare dates is based on the Date.parse() which you can see in the class code.</p>

<p>The class: <a href="http://s3.davidortinau.com/downloads/DateRangeValidator.as" title="DateRangeValidator.as">DateRangeValidator.as</a></p>

<p>In my form I&#8217;ve been using a form validator that checks all the validation controls in the array and when it&#8217;s all good enables the form button. The Flex code for my form looks basically like this:</p>

<p><pre class="html4strict"><ol><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;">&lt;mx:Form&gt;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">... other fields ...</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">            <span style="color: #009900;">&lt;mx:FormItem <span style="color: #000066;">label</span>=<span style="color: #ff0000;">&quot;Date of Birth&quot;</span> required=<span style="color: #ff0000;">&quot;true&quot;</span> labelStyleName=<span style="color: #ff0000;">&quot;fieldLabel&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">	    	<span style="color: #009900;">&lt;mx:DateField disabledRanges=<span style="color: #ff0000;">&quot;{[ {rangeStart: new Date(1988,0,1), rangeEnd: new Date(2025,11,30)} ]}&quot;</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;dateOfBirth&quot;</span> yearNavigationEnabled=<span style="color: #ff0000;">&quot;true&quot;</span> editable=<span style="color: #ff0000;">&quot;true&quot;</span> formatString=<span style="color: #ff0000;">&quot;MM/DD/YYYY&quot;</span> minYear=<span style="color: #ff0000;">&quot;1900&quot;</span> maxYear=<span style="color: #ff0000;">&quot;1988&quot;</span> change=<span style="color: #ff0000;">&quot;this.formValidator.validateForm(event);&quot;</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">	    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>/mx:FormItem&gt;</span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">... other fields ...</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">            <span style="color: #009900;">&lt;mx:FormItem horizontalAlign=<span style="color: #ff0000;">&quot;right&quot;</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;349&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">	    	<span style="color: #009900;">&lt;mx:Button <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;btnSubmit&quot;</span> click=<span style="color: #ff0000;">&quot;submit()&quot;</span> <span style="color: #000066;">label</span>=<span style="color: #ff0000;">&quot;NEXT&quot;</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">				enabled=<span style="color: #ff0000;">&quot;{this.formValidator.formIsValid}&quot;</span> /<span style="color: #000000; font-weight: bold;">&gt;</span></span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">	    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>/mx:FormItem&gt;</span></div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>/mx:Form&gt;</span></div></li></ol></pre></p>

<p>Then I have my array of validators:</p>

<p><pre class="html4strict"><ol><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;">&lt;mx:Array <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;validators&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">... some validators ...</div></li><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">	<span style="color: #009900;">&lt;validators:DateRangeValidator <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;valDateRange&quot;</span> source=<span style="color: #ff0000;">&quot;{dateOfBirth}&quot;</span> property=<span style="color: #ff0000;">&quot;text&quot;</span> StartDate=<span style="color: #ff0000;">&quot;{new Date(1900,0,1)}&quot;</span> EndDate=<span style="color: #ff0000;">&quot;{new Date(1988,0,1)}&quot;</span> required=<span style="color: #ff0000;">&quot;true&quot;</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></span></div></li><li style="background: #f0f0f0;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>/mx:Array&gt;</span></div></li></ol></pre></p>

<p>And the custom form validator that checks all fields to make sure it&#8217;s all valid before enabling the button. For more info on this, <a href="http://joelhooks.com/2009/02/01/form-validation-for-the-lazy-programmer-in-flex/" title="check out this article and code">check out this article and code</a> from Joel Hooks.</p>

<p><pre class="html4strict"><ol><li style="background: #fcfcfc;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;">&lt;validators:FormValidator <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;formValidator&quot;</span> validators=<span style="color: #ff0000;">&quot;{this.validators}&quot;</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></span></div></li></ol></pre></p>

<p>And that&#8217;s it. I hope this saves someone a little time. If you have any comments or improvements, please let me know.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>360|Flex Conference Wrapup</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/360flex_conference_wrapup/" />
      <id>tag:davidortinau.com,2009:blog/index/1.49</id>
      <published>2009-05-24T17:29:48Z</published>
      <updated>2009-05-24T22:00:49Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="General"
        scheme="http://www.davidortinau.com/site/category/general/"
        label="General" />
      <category term="Flex"
        scheme="http://www.davidortinau.com/site/category/flex/"
        label="Flex" />
      <content type="html"><![CDATA[
        <p>My first <a href="http://www.360flex.com/" title="360|Flex">360|Flex</a> experience began Monday morning with Mike Labriola (<a href="http://twitter.com/mlabriola" title="@mlabriola">@mlabriola</a>, <a href="http://www.slideshare.net/michael.labriola/assertyourself-breaking-the-theories-and-assumptions-of-unit-testing-in-flex" title="slides">slides</a>) stalking back and forth in front of a standing room only crowd. Shirt un-tucked, one hand thrust into a pocket he held a goblet of water in the other from which he alternately took sips and gestured to his listeners. Delivering his best Sean Astin, Mike transformed the room into his private cigar study. We were all in audience to savor his cognac and digest the divine merits of unit testing Flex applications. </p>

<p>&#8220;Welcome to 360|Flex,&#8221; I thought. The session was fantastic and Mike was entertaining all the way through the final &#8220;ok, get out of here&#8221; as he waved his empty goblet and turned his back. </p>

<p>Bookend that session with my final session Wednesday afternoon on Design Patterns delivered by Yakov Fain (<a href="http://twitter.com/yfain" title="@yfain">@yfain</a>). I whispered to <a href="http://twitter.com/dmatchack" title="@dmatchack">@dmatchack</a> sitting in front of me, &#8220;I hope we finally talk about something over than MVC&#8221;. He said, &#8220;no kidding&#8221; and chuckled. </p>

<p>What we received in the next 1 hr and 20 minutes was a much more than that. </p>

<p>Though likely not the whole story on Yakov, I left with the distinct impression that Yakov HATES Cairngorm and PureMVC (mate didn&#8217;t garner a sneer) in favor of implementing good design patterns in a more appropriate manner. Yakov gave away a book to an attendee, &#8220;though I&#8217;m not really satisfied with that answer&#8221;. Halfway through the session we were treated to a gratuitous (though clean) slide of Angelina Jolie. The half filled room erupted in laughter and applause.</p>

<p>I attended as many non-developer related sessions as were of interest to me. This strategy yielded my favorite sessions from the conference: 
</p><blockquote><p>
Joe Johnston (<a href="http://twitter.com/merhl" title="@merhl">@merhl</a>)<br />
FLEXperience - Putting the Flex in UX<br />
<a href="http://www.slideshare.net/merhl/flexperience" onclick="window.open(this.href); return false;" >http://www.slideshare.net/merhl/flexperience</a>
</p></blockquote>

<blockquote><p>Francisco Inchauste (<a href="http://twitter.com/iamfinch" title="@iamfinch">@iamfinch</a>) <br />
RIA Mojo - Making Your Flex Application Stand Out with a Great UX<br />
<a href="http://www.davidortinau.com/presos/RIA_Mojo.pdf" onclick="window.open(this.href); return false;" >http://www.davidortinau.com/presos/RIA_Mojo.pdf</a>
</p></blockquote>

<blockquote><p>Joe Olsen (<a href="http://twitter.com/joeolsen" title="@joeolsen">@joeolsen</a>, <a href="http://twitter.com/phenomblue" title="@phenomblue">@phenomblue</a>) <br />
Creativity is the Fuel, Process is the Engine: Building a Scalable Interactive Production Environment</p></blockquote>

<p>All said, it was a great 3 days of meeting or at least experiencing great people (<a href="http://twitter.com/jprevel" title="@jprevel">@jprevel</a>, <a href="http://twitter.com/randytroppmann" title="@randytroppmann">@randytroppmann</a>, <a href="http://twitter.com/lordb8r" title="@lordb8r">@lordb8r</a>, <a href="http://twitter.com/kremdela" title="@kremdela">@kremdela</a>, <a href="http://twitter.com/visualrinse" title="@visualrinse">@visualrinse</a>, <a href="http://coenraets.org/" onclick="window.open(this.href); return false;" >http://coenraets.org/</a>), learning a new tip here and there, and overall being reminded why I do what I do building interactive experiences.</p>

<p>Thanks to <a href="http://twitter.com/lordbron" title="@lordbron">@lordbron</a> and <a href="http://twitter.com/jwilker" title="@jwilker">@jwilker</a> and everyone else that made this a great conference. </p> 
      ]]></content>
    </entry>

    <entry>
      <title>Church and Technology: Is Someone&#8217;s Advertising Working On You?</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/church_and_technology_is_someones_advertising_working_on_you/" />
      <id>tag:davidortinau.com,2009:blog/index/1.48</id>
      <published>2009-05-13T23:43:46Z</published>
      <updated>2009-05-14T00:29:47Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="General"
        scheme="http://www.davidortinau.com/site/category/general/"
        label="General" />
      <content type="html"><![CDATA[
        <p>I&#8217;ve been seeing quite a few blogs and tweets lately about the church&#8217;s struggle between relevance and message. This topic is at the forefront of many minds perhaps in response to the recent national chatter about churches experimenting with Twitter and other social technologies. </p>

<p>That&#8217;s the connection I see anyway, but I&#8217;m sure it runs deeper to a larger discussion of the emerging and emergent church movements.</p>

<p>Whether it&#8217;s maintaining cultural relevance or implementing some crazy new social media technology, the question needs to first be &#8220;why?&#8221; If you don&#8217;t know why you&#8217;re attempting to be relevant (some people just don&#8217;t give a hoot), and you don&#8217;t know why you&#8217;re evangelizing your church for Twitter, then you&#8217;re operating at the behest of an agenda not your own. Someone&#8217;s advertising is working on you.</p>

<blockquote><p><a href="http://www.gnpcb.org/esv/search/?q=rom+12%3A2&amp;src=esv.org" title="Romans 12:2 ESV">Romans 12:2 ESV</a><br />
Do not be conformed to this world, but be transformed by the renewal of your mind, that by testing you may discern what is the will of God, what is good and acceptable and perfect.
</p></blockquote>

<p>Brad Abare of <a href="http://www.churchmarketingsucks.com" title="churchmarketingsucks.com">churchmarketingsucks.com</a> has some good comments in a recent Advertising Age article &#8220;<a href="http://adage.com/article?article_id=136541" title="Churches Get Religion on Marketing">Churches Get Religion on Marketing</a>&#8221;. The winning quote for me, though, goes to United Methodist Church General Secretary Rev. Larry Hollon: &#8220;Advertising makes a promise, and if you live up to that promise with integrity, that&#8217;s as much as you can do.&#8221;</p>

<p><a href="http://swerve.lifechurch.tv/authors/#craig" title="Craig Groeschel">Craig Groeschel</a><br />
Cool is No Longer Cool<br />
<a href="http://swerve.lifechurch.tv/2009/05/13/cool-is-no-longer-cool/" onclick="window.open(this.href); return false;" >http://swerve.lifechurch.tv/2009/05/13/cool-is-no-longer-cool/</a></p>

<p><a href="http://theproblemwithreligion.com/" title="Jonathan Foster">Jonathan Foster</a><br />
Medium is the Message <br />
<a href="http://discoverj.blogspot.com/2009/04/medium-is-message.html" onclick="window.open(this.href); return false;" >http://discoverj.blogspot.com/2009/04/medium-is-message.html</a></p>

<p>the same blog post got a new title (The Failure of Church Marketing) and re-posted here:<br />
<a href="http://church.wrecked.org/?filename=the-failure-of-church-marketing" onclick="window.open(this.href); return false;" >http://church.wrecked.org/?filename=the-failure-of-church-marketing</a></p>

<p>And that article was picked up here and there with some commentary:</p>

<p>Catalyst - The Failure of Church Marketing<br />
<a href="http://www.catalystspace.com/catablog/full/the_failure_of_church_marketing/" onclick="window.open(this.href); return false;" >http://www.catalystspace.com/catablog/full/the_failure_of_church_marketing/</a></p>

<p>Church Marketing Sucks<br />
<a href="http://www.churchmarketingsucks.com/archives/2009/05/the_failure_of.html" onclick="window.open(this.href); return false;" >http://www.churchmarketingsucks.com/archives/2009/05/the_failure_of.html</a></p>

<p>Mark Driscoll<br />
Vintage Church: How Can a Church Utilize Technology<br />
<a href="http://theresurgence.com/Vintage-Church-How-Can-a-Church-Utilize-Technology" onclick="window.open(this.href); return false;" >http://theresurgence.com/Vintage-Church-How-Can-a-Church-Utilize-Technology</a></p>

<p>A recent Twitter exchange between <a href="http://www.twitter.com/DavidAndGoliath" title="@DavidAndGoliath">@DavidAndGoliath</a> and <a href="http://www.twitter.com/tonymorganlive" title="@TonyMorganLive">@tonymorganlive</a>:</p>

<p><b>DavidAndGoliath says:</b><br />
@tonymorganlive Faith isn&#8217;t a product. Stop trying to sell it like it&#8217;s McDs. 5:02 PM May 10th</p>

<p><b>tonymorganlive says:</b><br />
@DavidAndGoliath so do you think we should keep our faith to ourselves? (just trying to understand your perspective.) 5:04 PM May 10th</p>

<p><b>DavidAndGoliath says:</b><br />
@TonyMorganLive No, of course not. But orgs. are increasing the box size and reducing the content in order to market2masses. 5:12 PM May 10th </p>

<p><b>tonymorganlive says:</b><br />
@DavidAndGoliath maybe some are. but the Gospel leads to life change which leads to people spreading that good news. that&#8217;s &#8220;marketing.&#8221; 5:31 PM May 10th </p> 
      ]]></content>
    </entry>

    <entry>
      <title>Links: Technology and Behavior Research</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/links_technology_and_behavior_research/" />
      <id>tag:davidortinau.com,2009:blog/index/1.47</id>
      <published>2009-05-09T15:12:26Z</published>
      <updated>2009-05-09T15:37:27Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="General"
        scheme="http://www.davidortinau.com/site/category/general/"
        label="General" />
      <content type="html"><![CDATA[
        <p>In my recent article &#8220;<a href="http://www.davidortinau.com/blog/the_distraction_of_technology_working_the_problem/" title="The Distraction of Technology: Working the Problem">The Distraction of Technology: Working the Problem</a>&#8221; I explored some initial thoughts on why we are using our mobile devices in any and every environment (especially church), what this means with respect to what we want, and how it&#8217;s modifying our behavior. The conversations sparked in the comments as well as on twitter and IM have been great.</p>

<p>I&#8217;ve been looking for research into the psychology and technology at work here, and have come up with some starters to share. If you know of other resources, please post them in the comments.</p>

<p>Phrases that seem google worthy to get at this information:<br />
Persuasive Technology<br />
Cognitive Science<br />
Captology</p>

<p>Links are categorized into:<br />
<a href="#books">Books</a><br />
<a href="#websites">Blogs and Websites</a><br />
<a href="#universities">Universities</a><br />
<a href="#others">Others</a></p>

<p><a name="books"/></p><h2>Books</h2><p>
Rapt: Attention and the Focused Life by Winifred Gallagher<br />
<a href="http://www.amazon.com/Rapt-Attention-Focused-Winifred-Gallagher/dp/1594202109/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1241875912&amp;sr=8-1" onclick="window.open(this.href); return false;" >http://www.amazon.com/Rapt-Attention-Focused-Winifred-Gallagher/dp/1594202109/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1241875912&amp;sr=8-1</a></p>

<p>The Design of Everyday Things by Donald Norman<br />
<a href="http://www.amazon.com/Design-Everyday-Things-Donald-Norman/dp/0465067107/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1241875973&amp;sr=1-1" onclick="window.open(this.href); return false;" >http://www.amazon.com/Design-Everyday-Things-Donald-Norman/dp/0465067107/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1241875973&amp;sr=1-1</a></p>

<p>Emotional Design: Why We Love (or Hate) Everyday Things by Donald Norman<br />
<a href="http://www.amazon.com/Emotional-Design-Love-Everyday-Things/dp/0465051367/ref=pd_bxgy_b_text_b" onclick="window.open(this.href); return false;" >http://www.amazon.com/Emotional-Design-Love-Everyday-Things/dp/0465051367/ref=pd_bxgy_b_text_b</a></p>

<p>Blink: The Power of Thinking Without Thinking by Malcolm Gladwell<br />
<a href="http://www.amazon.com/Blink-Power-Thinking-Without/dp/0316010669/ref=wl_it_dp?ie=UTF8&amp;coliid=I2OGLJR4NFGHUQ&amp;colid=2XL88QALLKOF8" onclick="window.open(this.href); return false;" >http://www.amazon.com/Blink-Power-Thinking-Without/dp/0316010669/ref=wl_it_dp?ie=UTF8&amp;coliid=I2OGLJR4NFGHUQ&amp;colid=2XL88QALLKOF8</a></p>

<p>Mobile Persuasion: 20 Perspectives of the Future of Behavior Change by B.J. Fogg<br />
<a href="http://www.amazon.com/Mobile-Persuasion-Perspectives-Future-Behavior/dp/0979502527/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1241876436&amp;sr=8-1" onclick="window.open(this.href); return false;" >http://www.amazon.com/Mobile-Persuasion-Perspectives-Future-Behavior/dp/0979502527/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1241876436&amp;sr=8-1</a></p>

<p>Persuasive Technology: Using Computers to Change What We Think and Do by BJ Fogg<br />
<a href="http://www.amazon.com/Persuasive-Technology-Computers-Interactive-Technologies/dp/1558606432/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1241876436&amp;sr=8-2" onclick="window.open(this.href); return false;" >http://www.amazon.com/Persuasive-Technology-Computers-Interactive-Technologies/dp/1558606432/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1241876436&amp;sr=8-2</a></p>

<p>The Ubiquitous Persuaders<br />
<a href="http://www.amazon.com/The-Ubiquitous-Persuaders/dp/B001T4XTOK/ref=sr_1_1?ie=UTF8&amp;s=digital-text&amp;qid=1241791298&amp;sr=1-1" onclick="window.open(this.href); return false;" >http://www.amazon.com/The-Ubiquitous-Persuaders/dp/B001T4XTOK/ref=sr_1_1?ie=UTF8&amp;s=digital-text&amp;qid=1241791298&amp;sr=1-1</a></p>

<p>The Hidden Persuaders by Vance Packard<br />
<a href="http://www.amazon.com/Hidden-Persuaders-Vance-Packard/dp/097884310X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1241878000&amp;sr=8-1" onclick="window.open(this.href); return false;" >http://www.amazon.com/Hidden-Persuaders-Vance-Packard/dp/097884310X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1241878000&amp;sr=8-1</a></p>

<p>Why We Make Mistakes: How We Look Without Seeing, Forget Things in Seconds, and Are All Pretty Sure We are Way Above Average by Joseph T. Hallinan<br />
<a href="http://www.amazon.com/gp/product/B001S59CNC/ref=kinw_tu_sims_2" onclick="window.open(this.href); return false;" >http://www.amazon.com/gp/product/B001S59CNC/ref=kinw_tu_sims_2</a></p>

<p>How We Decide by Jonah Lehrer<br />
<a href="http://www.amazon.com/How-We-Decide/dp/B001OI2ZIC/ref=pd_sim_kinc_1" onclick="window.open(this.href); return false;" >http://www.amazon.com/How-We-Decide/dp/B001OI2ZIC/ref=pd_sim_kinc_1</a></p>

<p><a name="websites"/></p><h2>Blogs and Websites</h2><p>
Pew Internet &amp; American Life Project<br />
<a href="http://www.pewinternet.org/" onclick="window.open(this.href); return false;" >http://www.pewinternet.org/</a></p>

<p>Tierney Lab - John Tierney at The New York Times<br />
<a href="http://tierneylab.blogs.nytimes.com/" onclick="window.open(this.href); return false;" >http://tierneylab.blogs.nytimes.com/</a></p>

<p>Don Norman <br />
<a href="http://www.jnd.org/" onclick="window.open(this.href); return false;" >http://www.jnd.org/</a></p>

<p>Nielsen Norman Group <br />
<a href="http://www.nngroup.com/" onclick="window.open(this.href); return false;" >http://www.nngroup.com/</a></p>

<p>BJ Fogg<br />
<a href="http://bjfogg.com/" onclick="window.open(this.href); return false;" >http://bjfogg.com/</a></p>

<p>Enrique Allen<br />
<a href="http://enriqueallen.com/" onclick="window.open(this.href); return false;" >http://enriqueallen.com/</a></p>

<p>Captology Notebook<br />
<a href="http://captology.stanford.edu/notebook/" onclick="window.open(this.href); return false;" >http://captology.stanford.edu/notebook/</a></p>

<p><a name="universities"/></p><h2>Universities</h2><p>
Stanford Persuasive Technology Lab<br />
<a href="http://captology.stanford.edu/" onclick="window.open(this.href); return false;" >http://captology.stanford.edu/</a></p>

<p>Northwestern University Collabolab<br />
<a href="http://collabolab.northwestern.edu" onclick="window.open(this.href); return false;" >http://collabolab.northwestern.edu</a></p>

<p>University of Colorado at Boulder - Institute of Cognitive Science<br />
<a href="http://ics.colorado.edu" onclick="window.open(this.href); return false;" >http://ics.colorado.edu</a></p>

<p>Cognitive Science Society<br />
<a href="http://cognitivesciencesociety.org/index.html" onclick="window.open(this.href); return false;" >http://cognitivesciencesociety.org/index.html</a></p>

<p><br />
<a name="others"/></p><h2>Others</h2><p>
William James<br />
<a href="http://en.wikipedia.org/wiki/William_James" onclick="window.open(this.href); return false;" >http://en.wikipedia.org/wiki/William_James</a></p>

<p>Sigmund Freud<br />
<a href="http://en.wikipedia.org/wiki/Freud" onclick="window.open(this.href); return false;" >http://en.wikipedia.org/wiki/Freud</a></p>

 
      ]]></content>
    </entry>

    <entry>
      <title>The Distraction of Technology: Working the Problem</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/the_distraction_of_technology_working_the_problem/" />
      <id>tag:davidortinau.com,2009:blog/index/1.45</id>
      <published>2009-05-02T19:24:31Z</published>
      <updated>2009-05-05T14:32:32Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="General"
        scheme="http://www.davidortinau.com/site/category/general/"
        label="General" />
      <content type="html"><![CDATA[
        <p><a href="http://www.catalystspace.com/catablog/full/distraction/" title="This">This</a> came across in my Google Reader and got my attention. Shane Hipps, pastor of a church in Arizona, recently spoke at <a href="http://www.qideas.org/" title="a conference">a conference</a> about how technology pulls us from being in the present &#8220;now&#8221; moment. According to the article &#8220;Shane argued last night that this is not healthy, nor is it Biblical.&#8221;</p>

<p>I don&#8217;t know Shane, but that takeaway summary of his message gets me to thinking. It&#8217;s fair to say that he is struggling to address a very real issue shared by many pastors and churches. It&#8217;s an issue that has been unraveling before our eyes for many years. Technology has become so ubiquitous that no longer is the internet just in our homes and office, but the internet is sitting in nearly every seat and every pew of every service. </p>

<p>Pastors, who are driven to care for and protect their congregation from negative influences, are seeing the effects of this and reaching to find appropriate responses. For years they have been left to perform damage control for families devastated by the darker influences of the web. I also think it&#8217;s fair to say that many are arriving at the same conclusions that Shane expressed that &#8220;its not healthy, nor is it Biblical.&#8221;</p>

<p>When I hear this perspective I completely understand it. And <i>left at that point</i>, that &#8220;shut it down&#8221; reaction, I believe couldn&#8217;t be more wrong. While well intentioned, I venture to say it&#8217;s based on fear and a lack of understanding of <i>what&#8217;s really going on</i>. I have a lot of compassion for these leaders who have seen a lot of the negative influence of technology on the families they care for, and who feel ill-equipped to provide a viable response.</p>

<p>Can technology distract and exert a negative influence over our lives? Absolutely, and we should do everything we can personally to own responsibility for that and battle against it. It&#8217;s just that I&#8217;m deeply persuaded that this is not the only thing going on here.</p>

<p>A new Time.com article &#8220;<a href="http://www.time.com/time/business/article/0,8599,1895463,00.html?cnn=yes" title="Twittering in Church, With the Pastor's Encouragement">Twittering in Church, With the Pastor&#8217;s Encouragement</a>&#8221; just went up today. Here are some pastors eagerly embracing technology in their churches and I applaud that. </p>

<p>I do often wonder though if we understand the why of technology, or if we rush too quickly to adopt something because it&#8217;s &#8220;cool&#8221; and gives us buzz credibility.</p>

<p>There is a tremendous opportunity here if we are willing to ask ourselves some hard questions and be open to some new answers. But before we dive into stabbing at ways to use technology, I want to &#8220;work the problem&#8221; and gain a better understanding of the situation. Working from that place of understanding what&#8217;s really going on I believe will steer us clear of technology as a problem and ignite the potential of technology as a powerful advantage. I have some thoughts.</p>

<h2>Remember the MP3</h2><p>
Whenever I see new technology breaking into our lives, I think back to the dawn of the MP3 and Napster. Remember how the recording industry was freaking out, lawsuits started raining down, and 14 yr old kids were dragged from their homes in handcuffs? (Did that last part happen&#8230;.maybe that was a movie)</p>

<p>Didn&#8217;t the industry see the tremendous opportunity right in front of their eyes? People wanted their music, and were willing to go to simple, easily, and totally illegal lengths to obtain it. Unfortunately, because we know what came eventually from Apple, the music industry&#8217;s response was a completely negative response to their consumer.</p>

<p>Finally Apple showed the way with the introduction of the iTunes store AND the iPod, never the two shall part. But that awakening took way too long.</p>

<p>Did (does) piracy need to be attacked? Yes, no question. For that to be the first and for a long time only response was a huge misstep that likely cost the industry major coin and certainly major face.</p>

<h2>Let&#8217;s Work the Problem</h2><p>
I&#8217;ve been working in technology for 14 years both creating software and interactive experiences for marketing, advertising and promotions. I&#8217;ve been working in and around ministries for nearly 20 years. Early in my career I managed the customer support team at a software company. I learned what it meant to &#8220;work the problem&#8221;, to ask the necessary and sometimes inane questions peeling back layer by layer until you have a more full understanding of what&#8217;s really going on.</p>

<p>And you know what you came to expect? The problem you thought you had is not really the problem. The actual issue you arrive at is almost never the originally reported issue. And if you stop short and fix only the reported issue, you&#8217;ll have that same or an eerily similar issue back on your desk very soon.</p>

<p>Until we really understand this issue of technology in our churches, or at least pause to gain a more foundational understanding of it, we cannot hope to have an effective response. </p>

<p>I&#8217;ve been searching high and low for some really good discussion of that, and what I&#8217;m mostly finding is <i>how</i> churches are using technology (lately it&#8217;s all twitter related). I&#8217;m not seeing much discussion into the <i>why</i>, and since this mobile technology is being driven mostly off the platform, it seems that we can learn a lot that can guide our chosen <i>how</i> by better understanding the <i>why</i> from those seats. </p>

<p>Here are the questions I&#8217;ve been asking myself for the past year about this issue and some of my initial thoughts. Please chime in. What are some of the questions this raises for you? What are some of your reactions to these issues?</p>

<blockquote>
<h4>Are distractions only unhealthy? Is there such a thing as a healthy distraction?</h4><p>
Some of my most life changing moments have come during church, during a distraction when the pastor said something that led me down a personal rabbit hole. How about you?
</p></blockquote>

<blockquote>
<h4>Why are people checking their Facebook, Twitter, MySpace, email, blogs during a church service? </h4><p>
I&#8217;m reminded of Malcolm Gladwell&#8217;s &#8220;The Tipping Point&#8221; where he discusses the extensive studies Sesame Street performed. When children looked away from the television and removed their focus, it was  determined that it wasn&#8217;t because the content wasn&#8217;t interesting, but that the children didn&#8217;t understand or feel the content was relevant to them. 
</p></blockquote>

<blockquote>
<h4>What does this tell us about what people want and how they want it?</h4>
</blockquote>

<blockquote>
<h4>Does technology pull us out of the &#8220;now&#8221; moment, or just your &#8220;now&#8221; moment?</h4><p>
Just as technology can distract us toward unhealthy interests, I see a massive potentiality to absolutely immerse us in a moment. As a speaker, I want people fully engaged not in me but in the content I&#8217;m presenting. I have a specific outcome in mind that steers and guides the presentations content and method of delivery. What do I care if your mind wandered off to explore a detail of the presentation so long as it was healthy and productive towards the desired end result. As a matter of fact, isn&#8217;t that kind of personal exploration and discovery a much more potent experience that just taking the speakers word for it?
</p></blockquote>

<blockquote>
<h4>Is the message or presentation not interesting enough to hold their attention?</h4><p>
Maybe. But not at my church, <a href="http://www.slfc.org" title="St. Louis Family Church">St. Louis Family Church</a>. <a href="http://www.pastorjeffperry.com/" title="Pastor Jeff Perry">Pastor Jeff Perry</a> is a dynamic speaker, highly engaging and often entertaining. In 20 years at this church one thing I&#8217;ve never been is bored.
</p></blockquote>

<blockquote>
<h4>Is technology really to blame, or is it just a visible and thus convenient target?</h4><p>
I&#8217;m gonna say convenient. 
</p></blockquote>

<blockquote>
<h4>Were people&#8217;s attention wandering long before their had a mobile device in their hands to tip you off?</h4><p>
Ouch. _sting_
</p></blockquote>

<blockquote>
<h4>What does this open, blatant disinterest during a service reveal about the speaker and the service format and content?</h4><p>
I don&#8217;t think it necessarily means the service isn&#8217;t engaging and interesting, but I think it tells us a lot about how we are beginning to prefer to interact with content. <br />
- we want control, not just a passive experience<br />
- we want a two way conversation and a voice
</p></blockquote>

<h2>Final Thoughts&#8230;.For Now</h2><p>
It occurs to me that I&#8217;ve used &#8220;we&#8221; on both sides of this deal, both as the content provider and the content receiver. I have a vested interest in seeing both sides succeed, and I think that technology isn&#8217;t the problem. Technology is the answer. </p>

<p>How can technology be used, how is it currently being used, what does the future look like? I&#8217;ve stopped short of delving into possible answers here in this article. This is about understanding the issue.</p>

<p>I feel for Shane and I understand why that is a hot conference topic. I don&#8217;t begrudge anyone for coming to those very same conclusions. While many see danger here, and while danger is present, I can&#8217;t help but get very excited at a monumental opportunity to turn this thing on its head and see what unimaginable things God can accomplish.</p>

<p>What are your thoughts? What problems have you seen arise here? How are your churches fielding these issues? </p>

<p>Let&#8217;s talk.</p>

<p>[ the opinions expressed in this article are my opinions alone and do not necessarily reflect the views of my clients or my church ]</p> 
      ]]></content>
    </entry>

    <entry>
      <title>New Site Launched with Boxing Clever</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/new_site_launched_with_boxing_clever/" />
      <id>tag:davidortinau.com,2009:blog/index/1.44</id>
      <published>2009-05-02T19:18:03Z</published>
      <updated>2009-05-02T19:24:04Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="General"
        scheme="http://www.davidortinau.com/site/category/general/"
        label="General" />
      <content type="html"><![CDATA[
        <p><a href="http://www.meetthenewx.org" title="Meet the new X"><img src="http://www.davidortinau.com/images/uploads/meetthenewx.jpg" style="border: 6px solid #1d1d1d;" alt="image" width="450" height="305" /></a></p>

<p><b>Client:</b> Boxing Clever / Windsor Crossing<br />
<b>Website:</b> <a href="http://www.meetthenewx.org" onclick="window.open(this.href); return false;" >http://www.meetthenewx.org</a><br />
<b>Design:</b> <a href="http://www.boxing-clever.com">Boxing Clever</a><br />
<b>Platform:</b> <a href="http://www.expressionengine.com" title="Expression Engine">Expression Engine</a><br />
<b>Notes:</b> used <a href="http://www.shadowbox-js.com/" title="Shadowbox">Shadowbox</a> for content overlays, and Google maps for, um, map</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Join Flex SDK BugQuash THIS Saturday</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/join_flex_sdk_bugquash_this_saturday/" />
      <id>tag:davidortinau.com,2009:blog/index/1.43</id>
      <published>2009-03-24T00:12:56Z</published>
      <updated>2009-03-24T00:23:57Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="General"
        scheme="http://www.davidortinau.com/site/category/general/"
        label="General" />
      <content type="html"><![CDATA[
        <p style="visibility:visible" height="89"><embed src="http://bugquash.com/includes/flash/countdown/countdown_v1.swf" type="application/x-shockwave-flash" quality="high" scale="noscale" salign="l" height="170" width="300" name="countdown" align="middle" wmode="transparent"></embed><br /><a href="http://www.bugquash.com/promos/" target="_blank">Want this for your site?</a></p>

<p>Marty Mickelson (<a href="http://www.theflexguy.com" onclick="window.open(this.href); return false;" >http://www.theflexguy.com</a>, <a href="http://twitter.com/mmickelson" title="@mmickelson">@mmickelson</a>) and Nate Beck (<a href="http://blog.natebeck.net" onclick="window.open(this.href); return false;" >http://blog.natebeck.net</a>, <a href="http://twitter.com/jnbeck" title="@jnbeck">@jnbeck</a>) have organized a live event to gather together Flex developers of all levels, teach us how to contribute bug fixes to the SDK, and then set us loose doing just that. If you&#8217;re in Seattle you can attend the event in person, but if you&#8217;re like me you&#8217;ll be attending remotely via <a href="http://www.adobe.com/products/acrobatconnect/" title="Acrobat Connect">Acrobat Connect</a>.</p>

<p>I&#8217;m jazzed to learn and see how this thing goes down.</p>

<p>More info:<br />
<a href="http://blog.natebeck.net/2009/03/are-you-attending-the-flex-sdk-bugquash-you-should-be/" onclick="window.open(this.href); return false;" >http://blog.natebeck.net/2009/03/are-you-attending-the-flex-sdk-bugquash-you-should-be/</a><br />
<a href="http://bugquash.com" onclick="window.open(this.href); return false;" >http://bugquash.com</a></p>

<p>&nbsp;</p> 
      ]]></content>
    </entry>

    <entry>
      <title>News Sites Launched This Weekend for DAWC and Blaine Bartel</title>
      <link rel="alternate" type="text/html" href="http://www.davidortinau.com/site/news_sites_launched_this_weekend_for_dawc_and_blaine_bartel/" />
      <id>tag:davidortinau.com,2009:blog/index/1.41</id>
      <published>2009-02-22T06:37:11Z</published>
      <updated>2009-02-22T13:50:12Z</updated>
      <author>
            <name>David Ortinau</name>
            <email>dave@davidortinau.com</email>
                  </author>

      <category term="Case Studies"
        scheme="http://www.davidortinau.com/site/category/case_studies/"
        label="Case Studies" />
      <category term="Expression Engine"
        scheme="http://www.davidortinau.com/site/category/expression_engine/"
        label="Expression Engine" />
      <category term="General"
        scheme="http://www.davidortinau.com/site/category/general/"
        label="General" />
      <content type="html"><![CDATA[
        <p><a href="http://www.dawcstl.com" title="Dental Assisting of West County"><img src="http://www.davidortinau.com/images/uploads/dawcstl.jpg" alt="image" width="450" height="374" style="border: 6px solid #1d1d1d;" /></a></p>

<p><b>Client:</b> Dental Assisting of West County<br />
<b>Website:</b> <a href="http://www.dentalassistingwestcounty.com" onclick="window.open(this.href); return false;" >http://www.dentalassistingwestcounty.com</a><br />
<b>Design:</b> <a href="http://www.designaudit.net">Kerry Layton</a><br />
<b>Platform:</b> <a href="http://www.expressionengine.com" title="Expression Engine">Expression Engine</a><br />
<b>Notes:</b> used the Freeform module from <a href="http://www.solspace.com" title="Solspace">Solspace</a> to handle info request, registration, and contact forms</p>

<p><br />
<a href="http://www.blainebartel.com" title="Blaine Bartel Blog"><img src="http://www.davidortinau.com/images/uploads/blainebartel.jpg" alt="image" width="450" height="334" style="border: 6px solid #1d1d1d;"/></a></p>

<p><b>Client:</b> Blaine Bartel, Pastor of <a href="http://www.northstarchurch.cc" title="Northstar Church">Northstar Church</a><br />
<b>Website:</b> <a href="http://www.blainebartel.com" onclick="window.open(this.href); return false;" >http://www.blainebartel.com</a><br />
<b>Design: </b> <a href="http://www.c1design.com/" title="C1Design">C1Design</a><br />
<b>Platform:</b> <a href="http://www.expressionengine.com" title="Expression Engine">Expression Engine</a><br />
<b>Notes:</b> used Better Meta and Social Bookmarks from <a href="http://leevigraham.com/" title="Leevi Graham">Leevi Graham</a>, Tags from <a href="http://www.solspace.com" title="Solspace">Solspace</a>, and the Twitter plugin.</p> 
      ]]></content>
    </entry>


</feed>