<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <channel>
    
    <title>David Ortinau</title>
    <link>http://www.davidortinau.com/blog/index/</link>
    <description></description>
    <dc:language>en</dc:language>
    <dc:creator>dave@davidortinau.com</dc:creator>
    <dc:rights>Copyright 2009</dc:rights>
    <dc:date>2009-12-10T05:20:49+00:00</dc:date>
    <admin:generatorAgent rdf:resource="http://expressionengine.com/" />
    

    <item>
      <title>White Paper Bible iPhone App NOW AVAILABLE</title>
      <link>http://www.davidortinau.com/site/white_paper_bible_iphone_app_now_available/</link>
      <guid>http://www.davidortinau.com/site/white_paper_bible_iphone_app_now_available/#When:05:20:49Z</guid>
      <description>I&#8217;m thrilled to announce 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. 

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&#45;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.

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.

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.

White Paper Bible
http://www.whitepaperbible.org

White Paper Bible iPhone App
app.whitepaperbible.org

White Paper Bible on Twitter
twitter.com/whitepaperbible

White Paper Bible on Facebook
http://www.facebook.com/pages/White&#45;Paper&#45;Bible/128636440822



&amp;nbsp;I&#8217;m thrilled to announce 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. 

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&#45;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.

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.

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.

White Paper Bible
http://www.whitepaperbible.org

White Paper Bible iPhone App
app.whitepaperbible.org

White Paper Bible on Twitter
twitter.com/whitepaperbible

White Paper Bible on Facebook
http://www.facebook.com/pages/White&#45;Paper&#45;Bible/128636440822</description>
      <dc:subject>iPhone</dc:subject>
      <dc:date>2009-12-10T05:20:49+00:00</dc:date>
    </item>

    <item>
      <title>2009 Advent Calendar for White Paper Bible</title>
      <link>http://www.davidortinau.com/site/2009_advent_calendar_for_white_paper_bible/</link>
      <guid>http://www.davidortinau.com/site/2009_advent_calendar_for_white_paper_bible/#When:16:29:19Z</guid>
      <description>To extend the White Paper Bible site, I asked Kerry Layton to design a calendar for the Advent season. You can view it here: http://www.whitepaperbible.org/advent.

Initially I was thinking Advent Sausage (http://lovelypackage.com/konecke&#45;advent&#45;sausage/), 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 (http://www.designaudit.net).

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.

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. 

Advent: http://en.wikipedia.org/wiki/Advent
Advent Calendar: http://en.wikipedia.org/wiki/Advent_calendar

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: http://lab.smashup.it/flip/.

The recipe for the flip plus the scale I found over on the Work [at] Play blog: http://think.workatplay.com/content/workatplaycom&#45;how&#45;it&#45;was&#45;made&#45;flip&#45;and&#45;scale&#45;effect. Great stuff!

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 (http://www.kelvinluck.com/assets/jquery/jScrollPane/jScrollPane.html). Make sure to use the source on Google code (http://code.google.com/p/jscrollpane/) 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 http://plugins.jquery.com/project/mousewheel. 

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.

And that&#8217;s about it. Checkout the final result (well&#8230;final until I think of something to enhance it). http://www.whitepaperbible.org/advent.

Enjoy.
To extend the White Paper Bible site, I asked Kerry Layton to design a calendar for the Advent season. You can view it here: http://www.whitepaperbible.org/advent.

Initially I was thinking Advent Sausage (http://lovelypackage.com/konecke&#45;advent&#45;sausage/), 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 (http://www.designaudit.net).

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.

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. 

Advent: http://en.wikipedia.org/wiki/Advent
Advent Calendar: http://en.wikipedia.org/wiki/Advent_calendar

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: http://lab.smashup.it/flip/.

The recipe for the flip plus the scale I found over on the Work [at] Play blog: http://think.workatplay.com/content/workatplaycom&#45;how&#45;it&#45;was&#45;made&#45;flip&#45;and&#45;scale&#45;effect. Great stuff!

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 (http://www.kelvinluck.com/assets/jquery/jScrollPane/jScrollPane.html). Make sure to use the source on Google code (http://code.google.com/p/jscrollpane/) 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 http://plugins.jquery.com/project/mousewheel. 

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.

And that&#8217;s about it. Checkout the final result (well&#8230;final until I think of something to enhance it). http://www.whitepaperbible.org/advent.

Enjoy.</description>
      <dc:subject>General, jQuery, Ruby on Rails</dc:subject>
      <dc:date>2009-11-30T16:29:19+00:00</dc:date>
    </item>

    <item>
      <title>White Paper Bible Online and iPhone App</title>
      <link>http://www.davidortinau.com/site/white_paper_bible_online_and_iphone_app/</link>
      <guid>http://www.davidortinau.com/site/white_paper_bible_online_and_iphone_app/#When:14:45:43Z</guid>
      <description>For the past year I&#8217;ve been working during my free time on a personal project called White Paper Bible (http://www.whitepaperbible.org) under the umbrella of my development company, Simply Profound (http://www.simplyprofound.com). Just launched is a micro&#45;site promoting White Paper Bible and the companion iPhone app (http://app.whitepaperbible.org).



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&#45;created paper.

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.

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&#45;C and talks to the site via JSON calls facilitated by HTTPRiot (http://labratrevenge.com/httpriot/). The site talks to the ESV Bible web service (http://www.esvapi.org) using a forked version of Geoffrey Dagley&#8217;s great ESV Bible gem (http://github.com/gdagley/esv_bible).

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


For the past year I&#8217;ve been working during my free time on a personal project called White Paper Bible (http://www.whitepaperbible.org) under the umbrella of my development company, Simply Profound (http://www.simplyprofound.com). Just launched is a micro&#45;site promoting White Paper Bible and the companion iPhone app (http://app.whitepaperbible.org).



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&#45;created paper.

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.

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&#45;C and talks to the site via JSON calls facilitated by HTTPRiot (http://labratrevenge.com/httpriot/). The site talks to the ESV Bible web service (http://www.esvapi.org) using a forked version of Geoffrey Dagley&#8217;s great ESV Bible gem (http://github.com/gdagley/esv_bible).

The iPhone app is not currently available in the App Store, but as soon as it is I&#8217;ll post a link here.</description>
      <dc:subject>Ruby on Rails</dc:subject>
      <dc:date>2009-11-19T14:45:43+00:00</dc:date>
    </item>

    <item>
      <title>Simple Webcam Capture Demo for Flex</title>
      <link>http://www.davidortinau.com/site/simple_webcam_capture_demo_for_flex/</link>
      <guid>http://www.davidortinau.com/site/simple_webcam_capture_demo_for_flex/#When:05:47:42Z</guid>
      <description>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.

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. 

&amp;nbsp;&amp;nbsp;var camera:Camera = Camera.getCamera&#40;&#41;;                if &#40;camera&#41; &#123;    videoDisplay.attachCamera&#40;camera&#41;;                    &#125; else &#123;    Alert.show&#40;&amp;quot;Oops, we can&#39;t find your camera.&amp;quot;&#41;;&#125;&amp;nbsp;&amp;nbsp;


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.

&amp;nbsp;&amp;nbsp;var snap:BitmapData = new BitmapData&#40;320, 240, true&#41;;var snapBmp:Bitmap = new Bitmap&#40;snap&#41;;&amp;nbsp;snapBmp.width = 320;snapBmp.height = 240;&amp;nbsp;if&#40;snapshotHolder.numChildren &amp;gt; 0&#41;    snapshotHolder.removeChildAt&#40;0&#41;;&amp;nbsp;snapshotHolder.addChild&#40;snapBmp&#41;;                snap.draw&#40;videoDisplay&#41;;&amp;nbsp;&amp;nbsp;


Demo: http://www.davidortinau.com/flash/WebcamCaptureDemo/WebcamCaptureDemo.html

Source: http://www.davidortinau.com/flash/WebcamCaptureDemo/srcview/index.html
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.

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. 

&amp;nbsp;&amp;nbsp;var camera:Camera = Camera.getCamera&#40;&#41;;                if &#40;camera&#41; &#123;    videoDisplay.attachCamera&#40;camera&#41;;                    &#125; else &#123;    Alert.show&#40;&amp;quot;Oops, we can&#39;t find your camera.&amp;quot;&#41;;&#125;&amp;nbsp;&amp;nbsp;


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.

&amp;nbsp;&amp;nbsp;var snap:BitmapData = new BitmapData&#40;320, 240, true&#41;;var snapBmp:Bitmap = new Bitmap&#40;snap&#41;;&amp;nbsp;snapBmp.width = 320;snapBmp.height = 240;&amp;nbsp;if&#40;snapshotHolder.numChildren &amp;gt; 0&#41;    snapshotHolder.removeChildAt&#40;0&#41;;&amp;nbsp;snapshotHolder.addChild&#40;snapBmp&#41;;                snap.draw&#40;videoDisplay&#41;;&amp;nbsp;&amp;nbsp;


Demo: http://www.davidortinau.com/flash/WebcamCaptureDemo/WebcamCaptureDemo.html

Source: http://www.davidortinau.com/flash/WebcamCaptureDemo/srcview/index.html</description>
      <dc:subject>Flash, Flex</dc:subject>
      <dc:date>2009-11-09T05:47:42+00:00</dc:date>
    </item>

    <item>
      <title>ColorTransform with GTween</title>
      <link>http://www.davidortinau.com/site/colortransform_with_gtween/</link>
      <guid>http://www.davidortinau.com/site/colortransform_with_gtween/#When:17:44:12Z</guid>
      <description>import fl.motion.easing.*;import com.gskinner.motion.GTweenFilter;import com.gskinner.motion.GTween;&amp;nbsp;var coltw:GTween = new GTween&#40;foo.transform.colorTransform, 4, &#123; redOffset:255, greenOffset:0, blueOffset:0 &#125;, &#123; ease:Circular.easeOut &#125; &#41;;coltw.setAssignment&#40;foo.transform, &amp;quot;colorTransform&amp;quot;&#41;;&amp;nbsp;


GTween: http://gskinner.com/libraries/gtween/
FLA: http://www.davidortinau.com/exhibits/gtween_color/colorTransform.fla

import fl.motion.easing.*;import com.gskinner.motion.GTweenFilter;import com.gskinner.motion.GTween;&amp;nbsp;var coltw:GTween = new GTween&#40;foo.transform.colorTransform, 4, &#123; redOffset:255, greenOffset:0, blueOffset:0 &#125;, &#123; ease:Circular.easeOut &#125; &#41;;coltw.setAssignment&#40;foo.transform, &amp;quot;colorTransform&amp;quot;&#41;;&amp;nbsp;


GTween: http://gskinner.com/libraries/gtween/
FLA: http://www.davidortinau.com/exhibits/gtween_color/colorTransform.fla</description>
      <dc:subject>General</dc:subject>
      <dc:date>2009-09-02T17:44:12+00:00</dc:date>
    </item>

    <item>
      <title>How to Resize the Flex Stage and Use the Browser Scrollbar</title>
      <link>http://www.davidortinau.com/site/how_to_resize_the_flex_stage_and_use_the_browser_scrollbar/</link>
      <guid>http://www.davidortinau.com/site/how_to_resize_the_flex_stage_and_use_the_browser_scrollbar/#When:23:25:09Z</guid>
      <description>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.

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.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.

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.

How I Did It
I disable the Flex scroll bars by modifying the policy value. Depending on how nested your application is (Canvas &gt; VBox &gt; Canvas &gt; HBox &gt; 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.

&amp;nbsp;&amp;lt;mx:Application xmlns:mx=&amp;quot;http://www.adobe.com/2006/mxml&amp;quot;layout=&amp;quot;absolute&amp;quot; width=&amp;quot;680&amp;quot;horizontalScrollPolicy=&amp;quot;off&amp;quot; verticalScrollPolicy=&amp;quot;off&amp;quot;&amp;gt;&amp;nbsp;

Next I set the ViewStack to resizeToContent.

&amp;nbsp;&amp;lt;mx:ViewStack id=&amp;quot;mainStack&amp;quot; resizeToContent=&amp;quot;true&amp;quot;     &amp;lt;views:WelcomeView id=&amp;quot;welcomeView&amp;quot; /&amp;gt;     &amp;lt;views:OrderFormView id=&amp;quot;orderFormView&amp;quot; /&amp;gt;&amp;lt;/mx:ViewStack&amp;gt;&amp;nbsp;

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. 

&amp;nbsp;import mx.events.ResizeEvent;&amp;nbsp;private function setupResize&#40;&#41; : void&#123;     orderFormView.addEventListener&#40;ResizeEvent.RESIZE, formResize&#41;;&#125;&amp;nbsp;

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.

&amp;nbsp;private function formResize&#40;e : ResizeEvent&#41; : void&#123;     ExternalInterface.call&#40;&amp;quot;setFlashHeight&amp;quot;, mainStack.height + 30&#41;;&#125;&amp;nbsp;

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.

&amp;nbsp;function setFlashHeight&#40;newHeight&#41;&#123;var viewportwidth;var viewportheight;&amp;nbsp;// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight&amp;nbsp;if &#40;typeof window.innerWidth != &#39;undefined&#39;&#41;&#123;viewportwidth = window.innerWidth,viewportheight = window.innerHeight&#125;&amp;nbsp;// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document) else if &#40;typeof document.documentElement != &#39;undefined&#39;&amp;amp;&amp;amp; typeof document.documentElement.clientWidth !=&#39;undefined&#39; &amp;amp;&amp;amp; document.documentElement.clientWidth != 0&#41;&#123;viewportwidth = document.documentElement.clientWidth,viewportheight = document.documentElement.clientHeight&#125;&amp;nbsp;// older versions of IE else&#123;viewportwidth = document.getElementsByTagName&#40;&#39;body&#39;&#41;&#91;0&#93;.clientWidth,viewportheight = document.getElementsByTagName&#40;&#39;body&#39;&#41;&#91;0&#93;.clientHeight&#125;&amp;nbsp;document.getElementById&#40;&#39;consumer&#39;&#41;.style.height = &#40;viewportheight &amp;gt; newHeight&#41; ? viewportheight + &#39;px&#39; : newHeight + &#39;px&#39;; &#125;&amp;nbsp;


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

&amp;nbsp;ExternalInterface.call&#40;    &amp;quot;function() { scroll(0,0); }&amp;quot;&#41;;&amp;nbsp;

That&#8217;s it. The next thing to do is implement something like SWFFIT 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.).</description>
      <dc:subject>Flash, Flex</dc:subject>
      <dc:date>2009-07-13T23:25:09+00:00</dc:date>
    </item>

    <item>
      <title>A Simple Form Field Comparison Validator for Flex</title>
      <link>http://www.davidortinau.com/site/a_simple_form_field_comparison_validator_for_flex/</link>
      <guid>http://www.davidortinau.com/site/a_simple_form_field_comparison_validator_for_flex/#When:23:44:04Z</guid>
      <description>In addition to a Date Range Validator control 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. 

Class: FieldComparisonValidator.asIn addition to a Date Range Validator control 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. 

Class: FieldComparisonValidator.as

Disclosure: 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.

To see how the entire form validation plays out in my forms, check out the previous post How to Validate a Date Range in Flex.

To validator implemntation is:

&amp;lt;validators:FieldComparisonValidator id=&amp;quot;valConfirmEmail&amp;quot; source=&amp;quot;{txtEmailAddressConfirm}&amp;quot; property=&amp;quot;text&amp;quot; destination=&amp;quot;{txtEmailAddress}&amp;quot; destinationProperty=&amp;quot;text&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;

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.</description>
      <dc:subject>General, Flex</dc:subject>
      <dc:date>2009-05-27T23:44:04+00:00</dc:date>
    </item>

    <item>
      <title>How to Validate a Date Range in Flex</title>
      <link>http://www.davidortinau.com/site/how_to_validate_a_date_range_in_flex/</link>
      <guid>http://www.davidortinau.com/site/how_to_validate_a_date_range_in_flex/#When:23:27:25Z</guid>
      <description>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. 

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.

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

The class: DateRangeValidator.asI 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. 

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.

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

The class: DateRangeValidator.as

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:

&amp;lt;mx:Form&amp;gt;... other fields ...            &amp;lt;mx:FormItem label=&amp;quot;Date of Birth&amp;quot; required=&amp;quot;true&amp;quot; labelStyleName=&amp;quot;fieldLabel&amp;quot;&amp;gt;	    	&amp;lt;mx:DateField disabledRanges=&amp;quot;{[ {rangeStart: new Date(1988,0,1), rangeEnd: new Date(2025,11,30)} ]}&amp;quot; id=&amp;quot;dateOfBirth&amp;quot; yearNavigationEnabled=&amp;quot;true&amp;quot; editable=&amp;quot;true&amp;quot; formatString=&amp;quot;MM/DD/YYYY&amp;quot; minYear=&amp;quot;1900&amp;quot; maxYear=&amp;quot;1988&amp;quot; change=&amp;quot;this.formValidator.validateForm(event);&amp;quot;/&amp;gt;	    &amp;lt;/mx:FormItem&amp;gt;... other fields ...            &amp;lt;mx:FormItem horizontalAlign=&amp;quot;right&amp;quot; width=&amp;quot;349&amp;quot;&amp;gt;	    	&amp;lt;mx:Button id=&amp;quot;btnSubmit&amp;quot; click=&amp;quot;submit()&amp;quot; label=&amp;quot;NEXT&amp;quot;				enabled=&amp;quot;{this.formValidator.formIsValid}&amp;quot; /&amp;gt;	    &amp;lt;/mx:FormItem&amp;gt;&amp;lt;/mx:Form&amp;gt;

Then I have my array of validators:

&amp;lt;mx:Array id=&amp;quot;validators&amp;quot;&amp;gt;... some validators ...	&amp;lt;validators:DateRangeValidator id=&amp;quot;valDateRange&amp;quot; source=&amp;quot;{dateOfBirth}&amp;quot; property=&amp;quot;text&amp;quot; StartDate=&amp;quot;{new Date(1900,0,1)}&amp;quot; EndDate=&amp;quot;{new Date(1988,0,1)}&amp;quot; required=&amp;quot;true&amp;quot;/&amp;gt;&amp;lt;/mx:Array&amp;gt;

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, check out this article and code from Joel Hooks.

&amp;lt;validators:FormValidator id=&amp;quot;formValidator&amp;quot; validators=&amp;quot;{this.validators}&amp;quot;/&amp;gt;

And that&#8217;s it. I hope this saves someone a little time. If you have any comments or improvements, please let me know.</description>
      <dc:subject>General, Flex</dc:subject>
      <dc:date>2009-05-27T23:27:25+00:00</dc:date>
    </item>

    <item>
      <title>360|Flex Conference Wrapup</title>
      <link>http://www.davidortinau.com/site/360flex_conference_wrapup/</link>
      <guid>http://www.davidortinau.com/site/360flex_conference_wrapup/#When:17:29:48Z</guid>
      <description>My first 360|Flex experience began Monday morning with Mike Labriola (@mlabriola, slides) stalking back and forth in front of a standing room only crowd. Shirt un&#45;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. 

&#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. 

Bookend that session with my final session Wednesday afternoon on Design Patterns delivered by Yakov Fain (@yfain). I whispered to @dmatchack 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. 

What we received in the next 1 hr and 20 minutes was a much more than that. My first 360|Flex experience began Monday morning with Mike Labriola (@mlabriola, slides) stalking back and forth in front of a standing room only crowd. Shirt un&#45;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. 

&#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. 

Bookend that session with my final session Wednesday afternoon on Design Patterns delivered by Yakov Fain (@yfain). I whispered to @dmatchack 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. 

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

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.

I attended as many non&#45;developer related sessions as were of interest to me. This strategy yielded my favorite sessions from the conference: 

Joe Johnston (@merhl)
FLEXperience &#45; Putting the Flex in UX
http://www.slideshare.net/merhl/flexperience


Francisco Inchauste (@iamfinch) 
RIA Mojo &#45; Making Your Flex Application Stand Out with a Great UX
http://www.davidortinau.com/presos/RIA_Mojo.pdf


Joe Olsen (@joeolsen, @phenomblue) 
Creativity is the Fuel, Process is the Engine: Building a Scalable Interactive Production Environment

All said, it was a great 3 days of meeting or at least experiencing great people (@jprevel, @randytroppmann, @lordb8r, @kremdela, @visualrinse, http://coenraets.org/), learning a new tip here and there, and overall being reminded why I do what I do building interactive experiences.

Thanks to @lordbron and @jwilker and everyone else that made this a great conference.</description>
      <dc:subject>General, Flex</dc:subject>
      <dc:date>2009-05-24T17:29:48+00:00</dc:date>
    </item>

    <item>
      <title>Church and Technology: Is Someone&#8217;s Advertising Working On You?</title>
      <link>http://www.davidortinau.com/site/church_and_technology_is_someones_advertising_working_on_you/</link>
      <guid>http://www.davidortinau.com/site/church_and_technology_is_someones_advertising_working_on_you/#When:23:43:46Z</guid>
      <description>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. 

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.

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.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. 

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.

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.

Romans 12:2 ESV
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.


Brad Abare of churchmarketingsucks.com has some good comments in a recent Advertising Age article &#8220;Churches Get Religion on Marketing&#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;

Craig Groeschel
Cool is No Longer Cool
http://swerve.lifechurch.tv/2009/05/13/cool&#45;is&#45;no&#45;longer&#45;cool/

Jonathan Foster
Medium is the Message 
http://discoverj.blogspot.com/2009/04/medium&#45;is&#45;message.html

the same blog post got a new title (The Failure of Church Marketing) and re&#45;posted here:
http://church.wrecked.org/?filename=the&#45;failure&#45;of&#45;church&#45;marketing

And that article was picked up here and there with some commentary:

Catalyst &#45; The Failure of Church Marketing
http://www.catalystspace.com/catablog/full/the_failure_of_church_marketing/

Church Marketing Sucks
http://www.churchmarketingsucks.com/archives/2009/05/the_failure_of.html

Mark Driscoll
Vintage Church: How Can a Church Utilize Technology
http://theresurgence.com/Vintage&#45;Church&#45;How&#45;Can&#45;a&#45;Church&#45;Utilize&#45;Technology

A recent Twitter exchange between @DavidAndGoliath and @tonymorganlive:

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

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

DavidAndGoliath says:
@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 

tonymorganlive says:
@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</description>
      <dc:subject>General</dc:subject>
      <dc:date>2009-05-13T23:43:46+00:00</dc:date>
    </item>

    
    </channel>
</rss>