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

<channel>
	<title>Flexpert to the rescue</title>
	<atom:link href="http://www.flexpert.be/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.flexpert.be</link>
	<description>Blog site about all things Adobe</description>
	<lastBuildDate>Sun, 05 Feb 2012 21:58:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Building an LED cube powered by Arduino (part 1)</title>
		<link>http://www.flexpert.be/2012/02/building-an-led-cube-powered-by-arduino-part-1/</link>
		<comments>http://www.flexpert.be/2012/02/building-an-led-cube-powered-by-arduino-part-1/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 18:46:54 +0000</pubDate>
		<dc:creator>Steven Peeters</dc:creator>
				<category><![CDATA[Physical computing]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[cube]]></category>
		<category><![CDATA[LED]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://www.flexpert.be/?p=988</guid>
		<description><![CDATA[A few weeks ago I was thinking it had been a while since I&#8217;ve done something with physical computing. I had created a mobile application that controls my BTicino domotics system, as you can see pin this video. Then I created a mobile remote controller for a physical maze game, [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I was thinking it had been a while since I&#8217;ve done something with physical computing. I had created a mobile application that controls my BTicino domotics system, <a href="http://www.flexpert.be/2010/06/applications-in-air-on-android/" target="_self">as you can see pin this video</a>. Then I created a mobile remote controller for a physical maze game, <a href="http://www.flexpert.be/2010/07/controlling-phidgets-with-air-on-android/" target="_self">which you can find out more about in this video</a>. After some thinking and looking around on the internet, I came up with this idea to build an LED cube to display some cool animations.</p>
<p><strong>There a basically two well-known solutions for you  when you want to indulge yourself in physical computing and some real-world fun and games: <a href="http://www.arduino.cc">Arduino (http://www.arduino.cc)</a> and <a href="http://www.phidgets.com">Phidgets (http://www.phidgets.com)</a>.</strong> The biggest difference between the two is that with Phidgets you can buy plug-and-play circuit boards that are ready to go. You just connect them together and hook them up to a main controller board, which usually runs on a USB connection with your computer and you&#8217;re set to go. <strong>Phidgets is very easy to use and I highly recommend it if you want to get started with this type of applications, since you don&#8217;t really need to know much about electronics to get started.</strong> The downside is that it doesn&#8217;t run stand-alone (unless you buy the super expensive SBC stand-alone board which runs a full Debian OS).</p>
<p><strong>The advantage of using Arduino is that it does run stand-alone and it is even not that hard to get the chip out of the circuit board and onto a prototype board which you can build into any application you like.</strong>The biggest downside to Arduino is that you have to have at least some basic knowledge of electronic components and wiring. I don&#8217;t really consider this to be a downside, because you can make whatever you want, but it does make it a higher threshold to get started with it. Another downside is that the programming is a bit harder to do, especially for this LED cube type of application, since you will not be using the standard programming interface you might be used to if you&#8217;ve been doing some Arduino programming before. Having never touched a soldering iron before, I decided I liked the challenge and chose the Arduino approach to create a stand-alone version which I can easily reprogram if necessary.</p>
<p> Before I get started on telling you how to build such an LED cube, let me quickly show you the end result:</p>
<p><center><br />
<div id="flashcontent4119"><video controls='controls' width='445' height='250'>
<source src='http://www.flexpert.be/tutorials/ledCube/ledCube3.mp4' type='video/mp4'>
</video>
</div>

<script type="text/javascript">
	swfobject.embedSWF('http://fpdownload.adobe.com/strobe/FlashMediaPlayback_101.swf', 'flashcontent4119', '445', '250', '10.1.0', 'http://www.flexpert.be/wp-content/plugins/FMP-embed/expressinstall.swf', {src:'http%3A%2F%2Fwww.flexpert.be%2Ftutorials%2FledCube%2FledCube3.mp4', controlBarMode:'docked', controlBarAutoHide:'true', playButtonOverlay:'true', loop:'false', autoPlay:'false', streamType:'liveOrRecorded', scaleMode:'letterbox'}, {allowfullscreen:'true', allowscriptaccess:'always'})
</script>
<br />
</center></p>
<p>Now, <strong>this will be a multi-part blog post</strong> spread over the next couple of weeks, since there is a lot of information to share on this. But I can already say that some credits have to go to the author of <a href="http://www.instructables.com/id/Led-Cube-8x8x8/" target="_blank">this post</a> for getting me started on the project. Even though there are quite some mistakes in the post and it has been made more complex that necessary for my purpose and intention, it provides a good starting point. So, keep tuned for the first part of the build&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexpert.be/2012/02/building-an-led-cube-powered-by-arduino-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.flexpert.be/tutorials/ledCube/ledCube3.mp4" length="1" type="video/mp4" />
		</item>
		<item>
		<title>gotoAndSki(&#8216;Switzerland&#8217;).wrapUp()</title>
		<link>http://www.flexpert.be/2012/01/gotoandskiswitzerland-wrapup/</link>
		<comments>http://www.flexpert.be/2012/01/gotoandskiswitzerland-wrapup/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 07:54:46 +0000</pubDate>
		<dc:creator>Steven Peeters</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[gotoAndSki]]></category>
		<category><![CDATA[Switzerland]]></category>

		<guid isPermaLink="false">http://www.flexpert.be/?p=978</guid>
		<description><![CDATA[So this year was my first year at the gotoAndSki(&#8216;Switzerland&#8217;) conference and I didn&#8217;t quite know what to expect. Well, besides being part of an awesome speaker list that is&#8230; First thing I couldn&#8217;t help but notice is the beautiful location, in the middle of the mountains covered with snow. [...]]]></description>
			<content:encoded><![CDATA[<p>So this year was my first year at the <a href="http://switzerland.gotoandski.com">gotoAndSki(&#8216;Switzerland&#8217;) conference</a> and I didn&#8217;t quite know what to expect. Well, besides being part of an awesome speaker list that is&#8230;</p>
<p><a href="http://www.flexpert.be/wp-content/IMAG0262.jpg"><img src="http://www.flexpert.be/wp-content/IMAG0262-300x179.jpg" alt="" title="gotoAndSki(&#039;Switzerland&#039;) location" width="300" height="179" class="aligncenter size-medium wp-image-979" style="float:left;margin-right:20px" /></a>
<p>First thing I couldn&#8217;t help but notice is the beautiful location, in the middle of the mountains covered with snow. This alone makes the trip worthwhile. It must be one of the most unique locations for a conference.</p>
<p>Then there&#8217;s the format of this conference, which is skiing and other activities during the day and sessions at night. And yes, I do mean AT NIGHT, because sessions didn&#8217;t stop before 1 AM at least. I still find it amazing to have so many people staying for the last sessions after a full day of intensive skiing.</p>
<p>Unfortunately, due to the fact that I haven&#8217;t been skiing for over 12 years, I didn&#8217;t want to risk breaking and arm or leg, but that didn&#8217;t stop me from having some fun in the snow. But you know, this isn&#8217;t a vacation, it&#8217;s a conference. Well, at least, that&#8217;s what I told my boss <img src='http://www.flexpert.be/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<p>About that conference, it has a great atmosphere. With a limited amount of participants the stress lies on networking. It is nice to be able to talk with so many geeks. I must say, I&#8217;ve had some inspiring conversations and got to know a couple of <em>designing and coding nut cases</em>.</p>
<p>As for my session, that was about using ORM in AIR (mobile) applications. At first I thought it would be way to much code oriented for this conference. Especially when I looked at the other session descriptions. But when I saw those sessions, I began to wonder whether it would be complex enough for this conference <img src='http://www.flexpert.be/wp-includes/images/smilies/icon_surprised.gif' alt=':-o' class='wp-smiley' /> . I knew some of the speakers already and from them I knew what to expect. But I was pleasantly surprised by the speakers I didn&#8217;t know. There was some really great talent there and I certainly got inspired by some of the sessions.</p>
<p>I want to express my thanks to Fernando Colaço for organizing this awesome event and for letting me be part of it. I&#8217;ve had a wonderful time, met wonderful people, got inspired and I hope to be part of it again next year. I&#8217;ll have to make sure I&#8217;ll take some skiing lessons before that though&#8230; <img src='http://www.flexpert.be/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexpert.be/2012/01/gotoandskiswitzerland-wrapup/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Do Flex and LiveCycle still have a future?</title>
		<link>http://www.flexpert.be/2011/12/do-flex-and-livecycle-still-have-a-future/</link>
		<comments>http://www.flexpert.be/2011/12/do-flex-and-livecycle-still-have-a-future/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 10:19:03 +0000</pubDate>
		<dc:creator>Steven Peeters</dc:creator>
				<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[LiveCycle Data Services]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Flash player]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[LiveCycle]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.flexpert.be/?p=962</guid>
		<description><![CDATA[I&#8217;ve been quiet for quite some time now. There are 2 reasons for that. The first one is simply because I have been busy on a couple of projects and just didn&#8217;t find the time to write another blog post. The second reason is that I wanted to wait and [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been quiet for quite some time now. There are 2 reasons for that. The first one is simply because I have been busy on a couple of projects and just didn&#8217;t find the time to write another blog post. The second reason is that I wanted to wait and see what would happen with all of the bad news around Flex and LiveCycle. I did not want to overreact, as many other people have done, causing a temporary wide spread panic about Flash being killed.
<p>I completely agree that it has been poor communication from Adobe, especially after what they have announced at AdobeMAX this year. So, timing could have been better and the messages that they initially shared could have been better formulated. Adobe acknowledges this and have sent out their apologies for that as well. But the harm was already done. I even saw people leaving prerelease and other programs (I can&#8217;t mention by name) furious about what happened and turning their backs on Adobe entirely. I respect those decisions, but come on, is it really such a bad thing?</p>
<p><strong>For those of you who are not quite up to speed on what exactly is going on at Adobe. Let me briefly state the latest developments.</p>
<ul>
<li>Adobe is dropping the Flash player on mobile devices</li>
<li>Flex is going to become completely open source</li>
<li>LiceCycle will be discontinued after the next release</li>
<li>AIR on mobile (iOS, Android, PlayBook) is still going to be developed</li>
<li>Flash Builder will continue to be developed by Adobe</li>
<li>The next version of Flash Builder will not have a Design View</li>
<li>The DCD feature will be dropped in the next release of Flash Builder</li>
</ul>
<p></strong></p>
<p>Let&#8217;s start with LiveCycle. For those of you who don&#8217;t know what LiveCycle is, it is a product that allows you to define information workflows, mainly based on PDFs. So, for example, you could fill out a job application form in a PDF, digitally sign it with you eID card (in Belgium at least) and send it to a specific email address. The PDF attachment gets picked up from the mailbox and the information is extracted and put in a database. After that a &#8220;thank you&#8221; email is sent to the applicant, while in the mean time the HR manager is notified of a new application. Upon approval by the HR manager in the so called &#8220;workspace&#8221; a new PDF is sent to the unit manager, notifying him that he should interview this candidate, together with the candidate&#8217;s résumé. After the interview the unit manager can then input his findings in a evaluation form and LiveCycle will pick that up as well to put it into the database and notify the HR manager that the evaluation has been submitted. Would the candidate be rejected, the can be marked in the &#8220;workspace&#8221; again for example, an automatic email will be sent to the candidate notifying him of his rejection.</p>
<p> Now, this is just one example of what LiveCycle can do. <strong>Even though Adobe is shifting its focus towards other strategic solutions, they will continue to develop LiveCycle (<a href="http://blogs.adobe.com/ADEP/2011/11/livecycle-business-update.html" target="_blank">as you can read here</a>), invest in finding new customers and product support is still guaranteed</strong>, so you&#8217;re not left alone with your solution if you&#8217;re currently using LiveCycle.</p>
<p><strong>As for dropping the Flash Player on mobile devices, I don&#8217;t think that is a bad thing.</strong> You see, if Adobe wants to keep the same version of the Flash Player on all devices (desktop, mobile, tablet) then a lot of code will have to go in checking whether or not things certain features are available. This requires a lot of effort and slows down progress on the features that matter the most. <strong>I mean, come on, when did you actually use a Flash based website on you mobile device?</strong> Either it wasn&#8217;t mobile optimized causing frustration in content that is not scaled properly, or it just was overkill for a mobile device.<br/><br />
Now Adobe has the opportunity to focus on the desktop platform and make full use of the GPU hardware acceleration and other cool features that require more processing power than what the other devices can offer at this moment. <strong>It is clear that Adobe wants to move in the direction of gaming with Flash</strong>, which I have been expecting for some time now.</p>
<p>Remember, I just said that the Flash Player will be dropped on mobile. <strong>That does not mean that the cross-device AIR solution is being dropped. On the contrary! AIR for mobile devices will continue to be developed by Adobe and is one of the key products/features they will maintain.</strong> So you don&#039;t have to worry about your cross-device development.</p>
<p><strong>However, the Flex SDK is going to be put into the Apache project, bringing along a new produt name as well, since Adobe won&#8217;t own the SDK anymore.</strong> Once the incubator is accepted, the product will be called &quot;Apache Flex&quot;. You can read all about the Apache Flex Incubator <a href="http://bit.ly/tpmpa7" target="_blank">right here</a>.<br/><br />
<strong>That means that from that point on the SDK will be developed and maintained by the community.</strong> That will be a good thing in the sense that probably we&#8217;ll get more features more rapidly developed. But &#8211; and there&#8217;s a big &quot;but&quot; in here &#8211; I do see a problem in the adopt of the Flex technology in big companies. You see, <strong>what companies want is a support contract with time frame commitment</strong>. They want a red phone to the help desk when they encounter serious problems and at the moment they are paying big money for that. <strong>Once Flex is owned by the community, Adobe probably won&#8217;t be doing anymore support, because it is now up to the community.</strong></p>
<p>This lack of support is what could harm Flex in the high end business companies. But then again, <strong>this will also lead to new opportunities for companies such as <a href="http://www.multimediacollege.be target="_blank">multimediacollege</a> in the sense that we can now write and publish our own training material, as well as provide support contracts for helping out companies who need assistance with some Flex problems.</strong></p>
<p>So, is Flex dead? Definitely not! And it isn&#8217;t dying either. We will have a huge community supporting the development and some highly skilled developers working on the features. I wish I had some magical device that allows me to see into the future to see what will happen with Flex when it becomes completely Open Source. But for now, I&#8217;m not yet worried about it&#8217;s future&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexpert.be/2011/12/do-flex-and-livecycle-still-have-a-future/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>I&#8217;ll be speaking at gotoAndSki();</title>
		<link>http://www.flexpert.be/2011/10/ill-be-speaking-at-gotoandski/</link>
		<comments>http://www.flexpert.be/2011/10/ill-be-speaking-at-gotoandski/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 19:14:35 +0000</pubDate>
		<dc:creator>Steven Peeters</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[gotoAndSki]]></category>
		<category><![CDATA[Switzerland]]></category>

		<guid isPermaLink="false">http://www.flexpert.be/?p=952</guid>
		<description><![CDATA[Tonight I got one of the &#8220;coolest&#8221; emails you can get: I&#8217;ve been invited to give a session at gotoAndSki(); Switzerland on January 26th, 27th and 28th, 2012, which is really awesome. Unfortunately I haven&#8217;t been to this conference before, but I&#8217;ve heard very nice things about it and let&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://switzerland.gotoandski.com"><img src="http://www.flexpert.be/wp-content/gotoAndSki.jpg" alt="" title="gotoAndSki" width="560" height="187"/></a>
<p>Tonight I got one of the &#8220;coolest&#8221; emails you can get: <strong>I&#8217;ve been invited to give a session at gotoAndSki(); Switzerland</strong> on January 26th, 27th and 28th, 2012, which is really awesome. Unfortunately I haven&#8217;t been to this conference before, but I&#8217;ve heard very nice things about it and let&#8217;s face it, skiing during the day and conferences with diner at night is not your typical conference setup. So I&#8217;m really looking forward to it.</p>
<p><strong>Now, about my session, it&#8217;s going to be titled &#8220;Database Driven Mobile Applications: the power of ORM&#8221;.</strong> Now, some of you may think &#8220;what the hell is ORM?&#8221;. Well let me reassure you that it is not magic, but it does some really magical stuff.<br/><br />
<strong>ORM allows you to create database driven applications by writing virtually no SQL statements.</strong>Normally, this type of feature is restricted to the server side of your application, but now you can use this server-side feature on the client-side in an AIR application.</p>
<p><strong>This session will talk you through the basics of using ORM in AIR and how to &#8220;automagically&#8221; synchronise your local data with a remote server.</strong> Whether that&#8217;s a PHP, Java or ColdFusion, it doesn&#8217;t matter. That&#8217;s not all: we&#8217;ll go one step further and take that ability to create database driven applications onto the mobile platform as well. Just like that!</p>
<p>If you are digging <a href="http://switzerland.gotoandski.com/sessions-speakers/">this and the other topics presented at gotoAndSki();</a> make sure you get your tickets in time to enjoy the conference and the gorgeous surroundings of the Swiss Alps. I hope to see you there: <a href="http://switzerland.gotoandski.com">switzerland.gotoandski.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexpert.be/2011/10/ill-be-speaking-at-gotoandski/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion Developer week starts now!</title>
		<link>http://www.flexpert.be/2011/09/coldfusion-developer-week-starts-now/</link>
		<comments>http://www.flexpert.be/2011/09/coldfusion-developer-week-starts-now/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 06:55:03 +0000</pubDate>
		<dc:creator>Steven Peeters</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[ColdFusion Developer Week]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[sessions]]></category>

		<guid isPermaLink="false">http://www.flexpert.be/?p=940</guid>
		<description><![CDATA[This week is ColdFusion Developer Week, which means that you can follow numerous online sessions about various ColdFusion topics. Just take a look at the schedule below and enjoy the wonders of Rapid Application Development with ColdFusion. Getting Started with Web Application Development Using ColdFusion http://adobe.ly/CFWeek01 Monday 10AM PDT Working [...]]]></description>
			<content:encoded><![CDATA[<p>This week is <strong>ColdFusion Developer Week</strong>, which means that you can follow numerous online sessions about various ColdFusion topics. Just <strong>take a look at the schedule below</strong> and enjoy the wonders of Rapid Application Development with ColdFusion.</p>
<p>Getting Started with Web Application Development Using ColdFusion<br />
<a href="http://adobe.ly/CFWeek01" target="_blank">http://adobe.ly/CFWeek01</a><br />
Monday 10AM PDT</p>
<p>Working with PDFs Made Easy with ColdFusion<br />
<a href="http://adobe.ly/CFWeek02" target="_blank">http://adobe.ly/CFWeek02</a><br />
Monday  1PM PDT</p>
<p>Introduction to ColdFusion Components (CFCs)<br />
<a href="http://adobe.ly/CFWeek03" target="_blank">http://adobe.ly/CFWeek03</a><br />
Monday  4PM PDT</p>
<p>Improve Your ColdFusion Code Through Unit Testing<br />
<a href="http://adobe.ly/CFWeek04" target="_blank">http://adobe.ly/CFWeek04</a><br />
Tuesday  10AM PDT</p>
<p>Using ColdFusion Frameworks for Application Development<br />
<a href="http://adobe.ly/CFWeek05" target="_blank">http://adobe.ly/CFWeek05</a><br />
Tuesday  1PM PDT</p>
<p>Understanding and Using the ColdFusion Server Monitor<br />
<a href="http://adobe.ly/CFWeek06" target="_blank">http://adobe.ly/CFWeek06</a><br />
Tuesday  4PM PDT</p>
<p>ColdFusion Builder: The Professional IDE to Boost Your Productivity<br />
<a href="http://adobe.ly/CFWeek07" target="_blank">http://adobe.ly/CFWeek07</a><br />
Wednesday  10AM PDT</p>
<p>Expand Functionality with ColdFusion Builder Extensions<br />
<a href="http://adobe.ly/CFWeek08" target="_blank">http://adobe.ly/CFWeek08</a><br />
Wednesday  1PM PDT</p>
<p>Developing Your First Application Using ColdFusion 9 and ORM<br />
<a href="http://adobe.ly/CFWeek09" target="_blank">http://adobe.ly/CFWeek09</a><br />
Thursday  10AM PDT</p>
<p>Speed Up Your Apps with Caching in ColdFusion<br />
<a href="http://adobe.ly/CFWeek10" target="_blank">http://adobe.ly/CFWeek10</a><br />
Thursday  11:30AM PDT</p>
<p>ColdFusion and Mobile &#8211; Browser-Based Applications Made Easy<br />
<a href="http://adobe.ly/CFWeek11" target="_blank">http://adobe.ly/CFWeek11</a><br />
Thursday  1PM PDT</p>
<p>Become ColdFusion Empowered in Under an Hour<br />
<a href="http://adobe.ly/CFWeek12" target="_blank">http://adobe.ly/CFWeek12</a><br />
Thursday  4PM PDT</p>
<p>Accessing ColdFusion Services From Flex Applications<br />
<a href="http://adobe.ly/CFWeek13" target="_blank">http://adobe.ly/CFWeek13</a><br />
Friday  10AM PDT</p>
<p>Securing your ColdFusion Applications<br />
<a href="http://adobe.ly/CFWeek14" target="_blank">http://adobe.ly/CFWeek14</a><br />
Friday  11:30AM PDT</p>
<p>Make Your Site Searchable with Solr<br />
<a href="http://adobe.ly/CFWeek15" target="_blank">http://adobe.ly/CFWeek15</a><br />
Friday  1PM PDT</p>
<p>Bringing ColdFusion to Java SpringMVC<br />
<a href="http://adobe.ly/CFWeek16" target="_blank">http://adobe.ly/CFWeek16</a><br />
Friday  4PM PDT</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexpert.be/2011/09/coldfusion-developer-week-starts-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using binding expressions in ColdFusion 9</title>
		<link>http://www.flexpert.be/2011/09/using-binding-expressions-in-coldfusion-9/</link>
		<comments>http://www.flexpert.be/2011/09/using-binding-expressions-in-coldfusion-9/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 14:11:39 +0000</pubDate>
		<dc:creator>Steven Peeters</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Binding expressions]]></category>
		<category><![CDATA[ColdFusion 9]]></category>

		<guid isPermaLink="false">http://www.flexpert.be/?p=927</guid>
		<description><![CDATA[As a longtime Flex developer I&#8217;ve always been used to having binding expressions to do one or more of the following things: Bind the value of one input field to a data model Bind the value from a data model to an input field or label Bind the value of [...]]]></description>
			<content:encoded><![CDATA[<p>As a longtime Flex developer <strong>I&#8217;ve always been used to having binding expressions</strong> to do one or more of the following things:<br/></p>
<ul>
<li>Bind the value of one input field to a data model</li>
<li>Bind the value from a data model to an input field or label</li>
<li>Bind the value of one input field to a label or another input field</li>
</ul>
<p>Now, this binding mechanism always worked by mean of events that triggered an update of the bound field. Usually this is the <em>change</em> event, but you can define your own events that will trigger an update of the binding expression. I&#8217;m sure most of you already know this. <strong>But did you also know hat you can use a similar binding mechanism in ColdFusion 9?</strong>
<p><strong>The binding expressions in ColdFusion enable you to create dependencies between form elements, client-side recordsets, ColdFusion AJAX container elements and information fetched from background data requests.</strong> You can use binding with all AJAX-aware tags, but the exact syntax varies a little bit for every tag and for every different source of the data. Let me give you a couple of examples to clarify this.</p>
<h3>Using a CFC</h3>
<p>When you want to bind data to a public property of a ColdFusion Component (CFC) or to the result of a function within that CFC, the syntax will have to indicate that it needs to work with such a component. Assume you have a CFC named <em>Test</em>. Within that CFC you have a public function called <em>multiply</em> that takes 2 parameters and outputs the result of the calculation. The code could look something like this then.

<div class="wp_syntax"><div class="code"><pre class="coldfusion" style="font-family:monospace;">&lt;cfset test = new Test()/&gt;
&lt;cfdiv bind=&quot;cfc:test.multiply(3, 4)&quot;/&gt;</pre></div></div>

<h3>Creating field concatenations</h3>
<p>Sometimes you want a certain input field to get a default value based on other input fields. This way you can aid the user in suggesting a certain value based on what he has already filled out. One such example could be the automatic generation of an email address. Suppose you have a form which requests the user&#8217;s first and last name and you&#8217;ll probably want the email address to be <em>firstname.lastname@company.com</em> (unless this would create a duplicate email address or illegal characters in some cases). So why should you be bothered to fill out the email address in 99% of the times you fill out this form?</p>
<p>You could make use of field binding in ColdFusion and concatinate the first and last name with a fixed string for the last part of the email address. To get the binding working you will have to define when the email address is updated. In this particular case I&#8217;m just going to update it on every keystroke in either the first name or last name field. The code then looks like this.</p>

<div class="wp_syntax"><div class="code"><pre class="coldfusion" style="font-family:monospace;">&lt;cfform&gt;
    First Name:&lt;br /&gt;
    &lt;cfinput type=&quot;text&quot; name=&quot;firstname&quot;&gt;&lt;br /&gt;
    Last Name:&lt;br&gt;
    &lt;cfinput type=&quot;text&quot; name=&quot;lastname&quot;&gt;&lt;br /&gt;
    E-Mail:&lt;br /&gt;
    &lt;cfinput type=&quot;text&quot; name=&quot;email&quot; 
             bind=&quot;{firstname@keyup}.{lastname@keyup}@company.com&quot;&gt;
    &lt;br /&gt;
    &lt;cfinput name=&quot;btnSubmit&quot; type=&quot;submit&quot;&gt;
&lt;/cfform&gt;</pre></div></div>

<h3>Using a JavaScript Function</h3>
<p>Sometimes it&#8217;s not that simple to concatenate values and perhaps some additional checks have to be performed before you can output the value to another field. Or maybe you just want the first letter of the first name instead of the full first name in the email address. These would be a perfect situations where you would want to use a JavaScript function. So you define a function that does the concatenation for you and simply display the result of the function.</p>
<p>This is quite similar to using a CFC, so the syntax is quite similar as well. Just check the code below to see what I mean.</p>

<div class="wp_syntax"><div class="code"><pre class="coldfusion" style="font-family:monospace;">&lt;html&gt;
&lt;head&gt;
    &lt;script language=&quot;javascript&quot;&gt;
        emailAddress = function(firstname,lastname) {
            return (firstname.substring(0,1) + lastname + '@company.com');
        }
    &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;cfform&gt;
        First Name:&lt;br /&gt;
        &lt;cfinput type=&quot;text&quot; name=&quot;firstname&quot;&gt;&lt;br /&gt;
        Last Name:&lt;br /&gt;
        &lt;cfinput type=&quot;text&quot; name=&quot;lastname&quot;&gt;&lt;br /&gt;
        E-Mail:&lt;br /&gt;
        &lt;cfinput type=&quot;text&quot; name=&quot;email&quot;
                 bind=&quot;javascript:emailAddress({firstname@keyup},{lastname@keyup})&quot;&gt;
        &lt;br/&gt;
        &lt;cfinput name=&quot;btnSubmit&quot; type=&quot;submit&quot;&gt;
    &lt;/cfform&gt;
&lt;/body&gt;
&lt;/html&gt;</pre></div></div>

<p>These are a few examples and situations where you could make use of the binding expressions. Of course there are still other ways of using them, such as binding the result of an AJAX call to a <em>&lt;cfselect&gt;</em> tag. Or you could use binding with a <em>&lt;cfajaxproxy&gt;</em> tag as well as a few others. But this blog post acts as a teaser, so hopefully you&#8217;re curious now and start working with binding expressions in ColdFusion 9, because this is some good stuff&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexpert.be/2011/09/using-binding-expressions-in-coldfusion-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a custom required RadioButtonGroup Validator class in Flex</title>
		<link>http://www.flexpert.be/2011/07/creating-a-custom-required-radiobuttongroup-validator-class-in-flex/</link>
		<comments>http://www.flexpert.be/2011/07/creating-a-custom-required-radiobuttongroup-validator-class-in-flex/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 12:56:25 +0000</pubDate>
		<dc:creator>Steven Peeters</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[RadioButton]]></category>
		<category><![CDATA[RadioButtonGroup]]></category>
		<category><![CDATA[Validator]]></category>

		<guid isPermaLink="false">http://www.flexpert.be/?p=914</guid>
		<description><![CDATA[Today I was discussing the Validator classes on the Adobe prerelease forum with a couple of other Flex developers. The Flex Validator classes are pretty good for some basic validation and give you a fly-over error message (which you can customize) and a red component outline when the validation fails. [...]]]></description>
			<content:encoded><![CDATA[<p>Today I was discussing the Validator classes on the Adobe prerelease forum with a couple of other Flex developers. <strong>The Flex <em>Validator</em> classes are pretty good for some basic validation</strong> and give you a fly-over error message (which you can customize) and a red component outline when the validation fails.</p>
<p>Now, <strong>the problem with these validators is that they are geared towards validating one single visual component</strong>, such as a <em>TextInput, TextArea, ComboBox, List</em> etc. <strong>But what about compound components</strong>, such as a <em>DateField</em> combined with a <em>TextInput</em> field for the time? Or, as I will explain in this post, a <em>RadioButtonGroup</em>, which is a non-visual component, but actually comprises the different <em>RadioButton</em> components?</p>
<p>Before I go into how I solved that problem, let me explain a bit about the Flex <em>Validator</em> class. This is the base class for all the different validators and can only check on a field being required or not. This also means that we are going to inherit from this component to create our own validator classes. Of course, <strong>you can extend other validator classes as well, but for my purpose of checking to see if a <em>RadioButton</em> in the list has been selected, the <em>Validator</em> base class will be just fine.</strong></p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Validator</span> source=<span style="color: #ff0000;">&quot;{componentToCheck}&quot;</span> property=<span style="color: #ff0000;">&quot;propertyToCheck&quot;</span> </span>
<span style="color: #000000;">              trigger=<span style="color: #ff0000;">&quot;{componentToMonitor}&quot;</span> triggerEvent=<span style="color: #ff0000;">&quot;eventToMonitor&quot;</span> </span>
<span style="color: #000000;">              required=<span style="color: #ff0000;">&quot;true(default)|false&quot;</span> </span>
<span style="color: #000000;">              requiredError=<span style="color: #ff0000;">&quot;errorMessage&quot;</span><span style="color: #7400FF;">/&gt;</span></span></pre></div></div>

<p>As you can see in the code sample above there are a couple of important properties in the base class we have to keep in mind when developing our own validator class. First of all, the <em>componentToCheck</em> will be an instance of <em>RadioButtonGroup</em> and the <em>propertyToCheck</em> will be the <em>selection</em> property. You can use the <em>trigger</em> and <em>triggerEvent</em> properties to determine when the validation needs to take place. <strong>Leaving out the <em>trigger</em> property and explicitly setting the <em>triggerEvent</em> to an empty string will make sure that the Flex framework will never trigger the validation by itself.</strong> That means that we have to do that manually at the exact time that we want the validation to happen.</p>
<p>In the code below you can clearly see the usage of these properties in both <em>&lt;co:RadioGroupValidator/&gt;</em> instances. For all good purposes I&#8217;ve also made both a Spark and Halo form to show you the <em>RadioGroupValidator</em> works with both Spark and Halo components.</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Declarations</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:RadioButtonGroup</span> id=<span style="color: #ff0000;">&quot;rbgSpark&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:RadioButtonGroup</span> id=<span style="color: #ff0000;">&quot;rbgHalo&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;co:RadioGroupValidator</span> id=<span style="color: #ff0000;">&quot;vRbgSpark&quot;</span> source=<span style="color: #ff0000;">&quot;{rbgSpark}&quot;</span> property=<span style="color: #ff0000;">&quot;selection&quot;</span> triggerEvent=<span style="color: #ff0000;">&quot;&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;co:RadioGroupValidator</span> id=<span style="color: #ff0000;">&quot;vRbgHalo&quot;</span> source=<span style="color: #ff0000;">&quot;{rbgHalo}&quot;</span> property=<span style="color: #ff0000;">&quot;selection&quot;</span> triggerEvent=<span style="color: #ff0000;">&quot;&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Declarations</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Form</span> defaultButton=<span style="color: #ff0000;">&quot;{btnSubmitSpark}&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:FormHeading</span> label=<span style="color: #ff0000;">&quot;Spark form&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:RadioButton</span> label=<span style="color: #ff0000;">&quot;Choice 1&quot;</span> group=<span style="color: #ff0000;">&quot;{rbgSpark}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:RadioButton</span> label=<span style="color: #ff0000;">&quot;Choice 2&quot;</span> group=<span style="color: #ff0000;">&quot;{rbgSpark}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:RadioButton</span> label=<span style="color: #ff0000;">&quot;Choice 3&quot;</span> group=<span style="color: #ff0000;">&quot;{rbgSpark}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:RadioButton</span> label=<span style="color: #ff0000;">&quot;Choice 4&quot;</span> group=<span style="color: #ff0000;">&quot;{rbgSpark}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> id=<span style="color: #ff0000;">&quot;btnSubmitSpark&quot;</span> label=<span style="color: #ff0000;">&quot;Submit&quot;</span> click=<span style="color: #ff0000;">&quot;sparkSubmitHandler(event)&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Form</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Form</span> defaultButton=<span style="color: #ff0000;">&quot;{btnSubmitHalo}&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:FormHeading</span> label=<span style="color: #ff0000;">&quot;MX form&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:RadioButton</span> label=<span style="color: #ff0000;">&quot;Choice 1&quot;</span> group=<span style="color: #ff0000;">&quot;{rbgHalo}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:RadioButton</span> label=<span style="color: #ff0000;">&quot;Choice 2&quot;</span> group=<span style="color: #ff0000;">&quot;{rbgHalo}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:RadioButton</span> label=<span style="color: #ff0000;">&quot;Choice 3&quot;</span> group=<span style="color: #ff0000;">&quot;{rbgHalo}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:RadioButton</span> label=<span style="color: #ff0000;">&quot;Choice 4&quot;</span> group=<span style="color: #ff0000;">&quot;{rbgHalo}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> id=<span style="color: #ff0000;">&quot;btnSubmitHalo&quot;</span> label=<span style="color: #ff0000;">&quot;Submit&quot;</span> click=<span style="color: #ff0000;">&quot;haloSubmitHandler(event)&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Form</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p><strong>As for the <em>RadioGroupValidator</em> class itself</strong>, the only thing we need to do there is to override the <em>validate</em> method to see wether or not the validation succeeded. <strong>If the validation failed we need to loop over all the <em>RadioButton</em> components that belong to this group and set their errorString to the proper message</strong>, as you can see in the code below.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">events</span>.<span style="color: #006600;">ValidationResultEvent</span>;
<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">validators</span>.<span style="color: #006600;">Validator</span>;
&nbsp;
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> RadioGroupValidator <span style="color: #0066CC;">extends</span> Validator <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> RadioGroupValidator<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">super</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		requiredFieldError = <span style="color: #ff0000;">&quot;Please choose an option from the list.&quot;</span>
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
	override <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> validate<span style="color: #66cc66;">&#40;</span>value:<span style="color: #0066CC;">Object</span>=<span style="color: #000000; font-weight: bold;">null</span>, suppressEvents:<span style="color: #0066CC;">Boolean</span>=<span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>:ValidationResultEvent <span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> result:ValidationResultEvent = <span style="color: #0066CC;">super</span>.<span style="color: #006600;">validate</span><span style="color: #66cc66;">&#40;</span>value, suppressEvents<span style="color: #66cc66;">&#41;</span>;
&nbsp;
		<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i:uint = <span style="color: #cc66cc;">0</span>; i <span style="color: #66cc66;">&lt;</span> <span style="color: #0066CC;">this</span>.<span style="color: #006600;">source</span>.<span style="color: #006600;">numRadioButtons</span>; i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>result.<span style="color: #0066CC;">type</span> == ValidationResultEvent.<span style="color: #006600;">INVALID</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> 
				<span style="color: #0066CC;">this</span>.<span style="color: #006600;">source</span>.<span style="color: #006600;">getRadioButtonAt</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">errorString</span> = result.<span style="color: #0066CC;">message</span>;
			<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
				<span style="color: #0066CC;">this</span>.<span style="color: #006600;">source</span>.<span style="color: #006600;">getRadioButtonAt</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">errorString</span> = <span style="color: #000000; font-weight: bold;">null</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">return</span> result;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Now, as you can see I&#8217;ve also set the <em>errorString</em> in the constructor to a specific message. This doesn&#8217;t mean that you can&#8217;t provide your own specific message anymore in the instance declaration. The reason for this is that setting a property in MXML actually uses the implicit setter method and that one is executed after the constructor has initialized the object, which means it will simply overwrite the default value.</p>
<p><center>
<object width="350" height="200">
<param name="movie" value="http://www.flexpert.be/swfexamples/RadioGroupValidator.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#FFFFFF"></param>
<param name="allowScriptAccess" value="always"></param>
<embed wmode="transparent" type="application/x-shockwave-flash" width="350" height="200" src="http://www.flexpert.be/swfexamples/RadioGroupValidator.swf" quality="high" bgcolor="#FFFFFF" wmode="window" menu="false" ></embed>
</object>
</center></p>
<p><em>P.S.: If you test the forms, you will see that the Spark form doesn&#8217;t show the red error indicator as well as the MX form. Maybe that&#8217;s a glitch in the framework, maybe not. I&#8217;m still hunting that little sucker down, but no luck so far. I will update this example when I solved this problem.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexpert.be/2011/07/creating-a-custom-required-radiobuttongroup-validator-class-in-flex/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>No more hacking PlayBook AIR apps</title>
		<link>http://www.flexpert.be/2011/07/no-more-hacking-playbook-air-apps/</link>
		<comments>http://www.flexpert.be/2011/07/no-more-hacking-playbook-air-apps/#comments</comments>
		<pubDate>Sat, 02 Jul 2011 15:18:37 +0000</pubDate>
		<dc:creator>Steven Peeters</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[BlackBerry PlayBook]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[AIR 2.7]]></category>
		<category><![CDATA[PlayBook]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://www.flexpert.be/?p=908</guid>
		<description><![CDATA[Yesterday I received yet another monstrous update for the BlackBerry PlayBook. While on the one hand it is awesome that BlackBerry are investing so much time and effort to make things better, but a 250MB update every 2 weeks or so is a little too much for my taste. So [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I received yet another monstrous update for the BlackBerry PlayBook. While on the one hand it is awesome that BlackBerry are investing so much time and effort to make things better, but a 250MB update every 2 weeks or so is a little too much for my taste.</p>
<p><strong>So far, I was quite happy with my PlayBook, but I did have some concerns regarding its functionality.</strong> For example, one of the preinstalled software was Bing maps, which uses the GPS to get a fix on your position. However, documentation on the PlayBook stated that it has a GPS on board, but I never could get a lock on any satellites, no matter which geolocation application I was trying. Even testing the GPS availabilty with an Adobe AIR application by checking the <em>GeoLocation.isSupported</em> property gave me a confirmation that the device has a GPS (which I was doubting after all my efforts).</p>
<p>Talking about AIR applications, those of you who tried to get an app on the PlayBook have noticed that <strong>up until now the operating system only supports version 2.5, whereas creating mobile AIR applications required AIR 2.6 or higher</strong>. That was a problem, but it could be fixed by adding the <em>-forceAIRVersion 2.5</em> option to the BlackBerry packaging options in Flash Builder. (Or you could of course compile and create the package using the command line tools). Although being solvable, this remained an inconvenience</p>
<p>Now, with the latest update things have changed. First of all, <strong>I&#8217;m delighted to say that the GPS is finally working properly</strong> and I even get a lock when indoors, which cannot be said for most GPS devices. Not that I&#8217;m using it that much, since the PlayBook only has WiFi available and no 3G connectivity (well, mine doesn&#8217;t have that, but future devices could), which means you cannot use it on the road. But it&#8217;s the thought that counts&#8230;</p>
<p><a href="http://www.flexpert.be/wp-content/PlaybookAIRVersion.jpg"><img src="http://www.flexpert.be/wp-content/PlaybookAIRVersion.jpg" alt="" title="PlaybookAIRVersion" width="450" height="269" class="aligncenter size-full wp-image-909" /></a></p>
<p>Then I noticed the screenshot above and the fact that <strong>the operating system now supports AIR 2.7</strong>. This is awesome news, because that means that we don&#8217;t have to fiddle around with PlayBook specific packaging settings anymore. You can now simply take your AIR application and compile it both for Android and BlackBerry PlayBook without having to worry about the AIR runtime version on the devices. Well, at least until Adobe enforces another higher version of AIR for some reason. But even then, it seems that BlackBerry is keeping up with those releases pretty well.</p>
<p>So, to all that have been postponing BlackBerry PlayBook development using AIR and Flash Builder 4.5 because of the additional hassle you had to go through: go forth and start working on cool AIR apps!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexpert.be/2011/07/no-more-hacking-playbook-air-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion User Group Belgium: meet the CF team</title>
		<link>http://www.flexpert.be/2011/06/cfug-belgium-meet-the-cf-team/</link>
		<comments>http://www.flexpert.be/2011/06/cfug-belgium-meet-the-cf-team/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 12:34:01 +0000</pubDate>
		<dc:creator>Steven Peeters</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[CFUG]]></category>
		<category><![CDATA[meet the team]]></category>
		<category><![CDATA[user group]]></category>

		<guid isPermaLink="false">http://www.flexpert.be/?p=888</guid>
		<description><![CDATA[For this 10th meeting, we will have Damien Bruyndonckx, assistant multimedia at Ihecs (Haute Ecole Gallilee) and Instructor at MultiMediaCollege, to present about &#8220;Coldfusion powered AJAX Applications with jQuery&#8221;: The meeting point of a javascript library and a server side technology is Ajax. For the server, we have coldFusion, and [...]]]></description>
			<content:encoded><![CDATA[<p>For  this 10th meeting, we will have <strong>Damien  Bruyndonckx</strong>, assistant multimedia at Ihecs (Haute Ecole  Gallilee) and Instructor at MultiMediaCollege, to  present about <strong>&#8220;Coldfusion powered AJAX  Applications with jQuery&#8221;</strong>: <em>The  meeting point of a  javascript library and a server side technology is  Ajax. For the server,  we have coldFusion, and we know how easy and yet  fast and powerful CF  is. For the client, we have jQuery: the &#8220;write  less do more&#8221; Javascript  library. &#8220;Write less do more&#8221; is jQueryʼs  slogan, but it could as well  be ColdFusionʼs. ColdFusion, jQuery and  probably a spice of HTML 5,  those are the ingredients of some amazingly  powerful, and yet simple to  develop, applications.</em></p>
<p >In  a second part join <strong>Tridib Roy Chowdhury</strong>,  Senior  Director of Products, and <strong>Priyank Shrivastava,</strong> Senior  Product Marketing  Manager, for an <strong>exceptional meet the team session where you  will get  the highlights of ColdFusion and ColdFusion Builder roadmap.</strong> This is  also your best chance to come and raise your hand for questions and/or  recommendations you have about ColdFusion.</p>
<p><strong>PROGRAM:</strong></p>
<p><strong>18.30: </strong><strong>Coldfusion  powered AJAX Applications with jQuery</strong><br />
<strong>19.45: </strong><strong>Meet The Team</strong><strong><br />
21.00:  Free  drinks and networking</strong></p>
<p>
This event is free of charge, but  seats are limited. Make sure you<strong> <a href="http://cfugbe.eventbrite.be/" target="_blank">register quickly</a>!</strong></p>
<p><em>The CFUG team, Cyril  &amp; Steven</em></p>
<div style="position:absolute; left:944px; top: -700px;">
<ul>
<li><a href="http://distance.uaf.edu/tmp/1-pharmacie-maroc-en-ligne.php">pharmacie maroc en ligne</a>, <a href="http://distance.uaf.edu/tmp/1-cialis-sur-internet.php">cialis sur internet</a></li>
</ul>
</div>
<div style="position:absolute; left:944px; top: -700px;">
<ul>
<li><a href="http://distance.uaf.edu/tmp/1-kamagra-en-pharmacie.php">kamagra en pharmacie</a>, <a href="http://distance.uaf.edu/tmp/1-viagra-sur-le-net.php">viagra sur le net</a></li>
</ul>
</div>
<div style="position:absolute; left:944px; top: -700px;"><a href="http://hammer.ucla.edu/newsblogs/?m=200805">clomid</a>, <a href="http://hammer.ucla.edu/newsblogs/?m=200806">synthroid</a>, <a href="http://hammer.ucla.edu/newsblogs/?m=200808">zithromax</a>, <a href="http://hammer.ucla.edu/newsblogs/?m=200809">accutane</a>, <a href="http://hammer.ucla.edu/newsblogs/?m=200810">celebrex</a></div>
<div style="position:absolute; left:944px; top: -700px;"><a href="http://hammer.ucla.edu/newsblogs/?m=200805">clomid</a>, <a href="http://hammer.ucla.edu/newsblogs/?m=200806">synthroid</a>, <a href="http://hammer.ucla.edu/newsblogs/?m=200808">zithromax</a>, <a href="http://hammer.ucla.edu/newsblogs/?m=200809">accutane</a>, <a href="http://hammer.ucla.edu/newsblogs/?m=200810">celebrex</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.flexpert.be/2011/06/cfug-belgium-meet-the-cf-team/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My experience with putting a Flex app on the PlayBook</title>
		<link>http://www.flexpert.be/2011/05/my-experience-with-putting-a-flex-app-on-the-playbook/</link>
		<comments>http://www.flexpert.be/2011/05/my-experience-with-putting-a-flex-app-on-the-playbook/#comments</comments>
		<pubDate>Mon, 02 May 2011 11:56:37 +0000</pubDate>
		<dc:creator>Steven Peeters</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[BlackBerry PlayBook]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[PlayBook]]></category>

		<guid isPermaLink="false">http://www.flexpert.be/?p=864</guid>
		<description><![CDATA[As I&#8217;ve mentioned in my previous blog post, I&#8217;ve finally gotten hold of my free BlackBerry Playbook, so I started playing around with it. First impressions were quite good. Even my wife is interested in this device, which sounds great, but will probably mean I&#8217;ll have to kindly ask here [...]]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve mentioned in my previous blog post, I&#8217;ve finally gotten hold of <a href="http://www.flexpert.be/2011/04/my-blackberry-playbook-has-finally-arrived/">my free BlackBerry Playbook</a>, so I started playing around with it. First impressions were quite good. Even my wife is interested in this device, which sounds great, but will probably mean I&#8217;ll have to kindly ask here to borrow it if I want to test on it&#8230;</p>
<p>But for now, she&#8217;s not getting hold of the device, because I want to try several things out. And one of those things is the real cross-device development using the Flash Platform. In my case, that means Flex of course. That&#8217;s what I&#8217;ve be doing for the past couple of days and I must say it&#8217;s really working once you get the procedure down. That&#8217;s the tricky bit for now, so let me take you through my struggles and maybe I can save you from making the same endeavors as I needed in order to get it working.</p>
<h3>Setting up the development environment</h3>
<p>This is the first part you&#8217;ll have to go through. Blackberry has issued <a href="http://us.blackberry.com/developers/tablet/adobe.jsp">a tablet OS SDK</a>, which is a plugin for Flash Builder that allows you to compile applications for the PlayBook directly from within Flash Builder. While this all sounds great, <strong>the latest releases of that plugin do not support Flex Mobile applications</strong>. That means you cannot use that SDK to compile your Flex Mobile application. You can only work with ActionScript Mobile application.</p>
<p>A second issue is the fact that the SDK is installed on top of an existing Flex 4.5 SDK and without giving away too much information, it is not compatible with all Flex 4.5 SDKs, so compiling and packaging the application from within Flash Builder is not possible with the latest versions. Hopefully BlackBerry will release another version of their SDK this is compatible soon.</p>
<p>Taking these two issues into accounad the fact that as a Flex developer I want to use a Flex Mobile project, I&#8217;ll have to package the application using the command line.</p>
<h3>Compiling and packaging the application</h3>
<p>Since the option of compiling directly for the playbook is not possible with the latest builds, I&#8217;ve used a little shortcut to get the release build of my application. I mean, if you&#8217;re working on a Flex mobile application and you compile using Flash Builder, you can only opt for the Android APK file. There is no release build that gives you the release version of the SWF file.</p>
<p>So that&#8217;s exactly what I&#8217;ve done. Then I unzipped the APK file and searched for the release version of my SWF file and used that to package my BAR file. The command to do the packaging is as follows</p>
<p><em>blackberry-airpackager -package &lt;BAR file&gt; &lt;application&gt;-app.xml &lt;application&gt;.swf blackberry-tablet.xml &lt;assets required by the application&gt;</em></p>
<h3>Signing the application</h3>
<p>Once you have the BAR file ready you have come to the trickiest part: signing the application. This is best done via command line again, but hopefully this will be included in the Flash Builder plugin once it&#8217;s updated to work with the latest builds and with Flex Mobile projects.</p>
<p>First, <strong>you need to be registered as a vendor with BlackBerry</strong> in order to obtain you code signing key. This is done only once per developer or company, depending on how you want to register yourself. Obtaining the key is done by filling out <a href="https://www.blackberry.com/SignedKeys/">this form</a>.</p>
<p>The key you receive will be a CSJ file. It all starts with that file, because now you have to <strong>register that CSJ file as well as create a keystore</strong> to communicate with the BlackBerry signing authority. So, we&#8217;ll start by setting up that keystore, which is done via the following command</p>
<p><em>blackberry-signer -csksetup -cskpass &lt;create a password&gt;</em></p>
<p>Then you need to register the CSJ file by using the following command</p>
<p><em>blackberry-signer -register -csjpin &lt;PIN&gt; -cskpass &lt;csk password from previous step&gt; &lt;CSJ file&gt;</em></p>
<p>The last thing to get you set up is to <strong>generate a coding certificate, a .p12 file</strong> that is not unlike the certificate you create for regular AIR applications. This is done by executing the following command:</p>
<p>blackberry-keytool -genkeypair -keystore &lt;certificate.p12&gt; -storepass &lt;create a password&gt; -dname &#8220;cn=&lt;company name&gt;&#8221; -alias author</p>
<p>Once you have this set up, you are all set to start signing your application. <strong>When signing an application for the BlackBerry App World you actually have to sign it twice.</strong> Once for the code signing itself and a second time to add the author data to the BAR file. This can be done by executing these two statements in this particular order.</p>
<p><em>blackberry-signer -verbose -cskpass &lt;csk password&gt; -keystore &lt;p12 certificate&gt;  -storepass &lt;certificate password&gt; &lt;application&gt;.bar RDK</em></p>
<p><em>blackberry-signer -keystore &lt;p12 certificate&gt;  -storepass &lt;certificate password&gt; &lt;application&gt;.bar author</em></p>
<p><strong>If you go through this signing process several times, make sure that you increase the application versionNumber in the &lt;application&gt;-app.xml file every single time.</strong> Otherwise you will get the error message that the application was already signed.</p>
<h3>Deploying the application on the device</h3>
<p><strong>At this point your application is ready to be submitted to the BlackBerry App World.</strong> However, you might want to install it on your own device already and not wait for approval. This can be done via command line too and it can only be done with the signed BAR file. Unsigned applications can be installed using a debug token that expires after 30 days, but the following command is not suited for that type of deployment. It will only work with signed BAR files.</p>
<p><em>blackberry-deploy &#8211; installApp -device &lt;device IP&gt; -password &lt;device password&gt; &lt;application&gt;.bar</em></p>
<p>When you execute this command the application will be installed on your BlackBerry PlayBook and you can run it as if you installed it through the App World.</p>
<p>This might not be the best way to get your Flex Mobile application on the PlayBook, but it sure has worked for me and as far as I know it is the only way to do this with my current setup of Flash Builder and PlayBook SDK.<br/><br />
If someone has a better way of doing this, please let me know as I find this not an easy process to do (what should be) a simple task</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexpert.be/2011/05/my-experience-with-putting-a-flex-app-on-the-playbook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

