 |
Thoughts, ideas, tips, musings, and pontifications (not necessarily in that order) by Ben Forta ...
NOTE: This is my personal blog, and the opinions and statements voiced here are my own.
November 30, 2007
Posted At : 5:09 PM
Related Categories:
Jobs
Two positions this week: - eBay (San Jose, CA) is looking for a ColdFusion developer. Requirements include at least 2-3 years of experience with ColdFusion, at least 2-3 years of SQL experience (Oracle, MySQL), and familiarity with frameworks and related technologies (Model-Glue, Fusebox, ColdBox). Flex experience is a big plus. Details posted online.
- Duty Free Americas (Hollywood, FL) is looking for a mid-senior level web developer. Requirements include at least 2 years ColdFusion experience, as well as experience using ColdFusion Components, and SQL Server T-SQL. Experience with Flash CS3, Flex, ActionScript is preferred. Contact DFAJobs@DutyFreeAmericas.com.
November 29, 2007
Posted At : 10:21 AM
Related Categories:
ColdFusion
Rey Bango has posted a great Ajaxian entry on Scott Bennett's demonstrations of extending the ColdFusion 8 Ajax data grid.
Amazon.com has created a feature page highlighting the 3 new ColdFusion Web Application Construction Kit books (as well as SQL books that may be of interest to ColdFusion developers).
November 28, 2007
Posted At : 6:09 PM
Related Categories:
Wireless
I couldn't help myself. I kept calling the local AT&T stores until I found the Samsung BlackJack II that I mentioned the other day, and then I asked them to hold it for me, and dashed over to buy it. And the verdict? Well, first some pros and cons:
Pros: - Samsung has been touting the new bigger screen. And the screen is indeed larger than the BlackJack screen, but only marginally so. And at first glance the glass is indeed bigger, but then you turn the device on to discover that the actual display area is only few millimeters bigger in each direction. So, yes, bigger screen is a pro, but barely.
- Having said that, the screen is much brighter and clearer.
- The device edges are a little rounder than before, making the device more comfortable to hold for extended periods.
- The keyboard is definitely improved. The shape and size of the keys is better, as is their angle and placement./li>
- The phone buttons (including the soft keys) are better shaped, easier to press, and harder to press accidentally.
- Battery life is good, although not great. Basically, Samsung replaced the battery with a slightly bigger one (it was an optional add-on purchase before), and so the battery lasts longer.
- The device is fast, much faster than the original BlackJack. Not that the speed of that other device ever bothered me, but this one is noticeably quicker.
- The new device has added an external LED that flashes to notify you of events, a welcome addition.
- Audio quality is great.
- The new Office client apps are a welcome addition.
- The GPS is pretty slick. AT&T opted to tie the service to a specific paid provider, but a 3rd party has disclosed how to unlock the GPS so that it works with other clients, like Google Maps. And it works really well.
- The device runs a newer version of Windows mobile, and the apps are cleaner and crisper. While not truly a BlackJack II pro, it is an improvement nonetheless.
- I did not get to try the phone in Japan today (that's a tad out of the way), but the fact that the phone will work there is a big plus.
Cons: - Ok, first the biggie. Don't trust the hype! Sure, this device runs Windows Mobile instead of Windows Smartphone, but it's actually Windows Mobile Standard which IS Windows Smartphone (they changed the name going from version 5 to version 6). I'd not have considered this a con if this were blatantly clear, but it's not, and so con it is.
- And even worse, the device has the same lousy Bluetooth restriction of one active paired device at a time. You can still pair as many devices as you want, but to switch from one to the other (as in from car to headset) you need to go through menus and activate the other! Considering how many users complained about this, it is unbelievable that Samsung did not fix this major flaw.
- Bluetooth works, and works well. But the device still does not publish signal strength and battery life (something my Sony Ericsson device did 5 years ago). Basically, it's the same okay-but-not-great Bluetooth functionality as in the original BlackJack.
- The device has a slick glossy surface. It looks cool, but after holding the phone for a few minutes it is completely smudged and looks filthy. I found myself wiping it clean constantly - very annoying.
- In addition, the new surface is actually far less comfortable than the old rubberized feel back.
- The new jog wheel is ok, but not great. It replaces the side scroll wheel, and while cool, it is not as convenient for one handed use as the scroll wheel.
- While Windows Mobile 6 looks better, and the apps are cleaner, they are still the same apps. The scheduling app is a bit better, but the SMS client is just as pathetic.
- Windows Mobile devices are unlocked using an unlock button and then the * key. So the * key needs to be prominently placed, and indeed it is on BlackJack. But BlackJack II uses the 5 key as the *, making it just that more fidgety to unlock the phone.
- Ah here's a doozey for you. Samsung uses a proprietary adapter to charge and synch the BlackJack. And the BlackJack II also uses a proprietary adapter, but not the same one! It looks similar, but the size is slightly different. Which means that if you bought any adapters or chargers for the BlackJack you'll need to throw them out and buy new ones for the BlackJack II. Outrageous!
The BlackJack II is an incremental improvement over the original BlackJack. This new device has retained some of what made the BlackJack so popular, but it has also retained some of the biggest flaws and limitations of that device. The biggest new benefits are the better international support and the integrated GPS, but do those justify the upgrade? I don't think so. I can see BlackJack II appealing to users who don't already own a similar device, but if you are a current BlackJack user then the BlackJack II is really not that compelling an upgrade.
So, the verdict? I do like the BlackJack, but it does have known flaws and limitations, none of which BlackJack II address. I am disappointed with this new device, and will be returning it tomorrow.
Posted At : 4:14 PM
Related Categories:
Books,
SQL
The Microsoft bookstore (on the Microsoft campus in Redmond, WA) has only sold Microsoft Press books to date. But, starting next week they will be selling select books published by other publishers. And apparently my Sams Teach Yourself Microsoft SQL Server T-SQL in 10 Minutes is one that they have selected to sell. So, any of you working for (or visiting) Microsoft, feel free to pick up a copy! :-)
Posted At : 2:17 PM
Related Categories:
ColdFusion
Macworld (in the UK) has posted a review of ColdFusion 8. And, the site (as well as the review page itself) is powered by ColdFusion. Cool!
Last night I said that CFWACK 8 Volume 2 - Application Development would be shipping soon. Well, Volume 2 is now shipping, I received my copies this morning. Some of the new content includes coverage of working with images, PDF manipulation and processing, thread management, and Flex integration. More details on the book page.
November 27, 2007
We ran into some delays with the final volume of the updated ColdFusion Web Application Construction Kit. But, the good news is that Volume 3 is done, and should be available before the end of the year. (Volume 2 before that). Links to the new 3 volume series are online.
Oh, and I am not supposed to discuss this publicly yet, but ... I've just started work on a Flex 3 book. ;-) More details to follow.
November 26, 2007
Posted At : 4:22 PM
Related Categories:
Wireless
I've been carrying a Samsung BlackJack around with me for a year now, and posted extensive comments on the device back then (actually, it was a year ago to the day!). All in all, I have been very pleased with the phone, and have even been willing to overlook its shortcomings.
But, I am always on the lookout for something better. And so the announcement this weekend of the Samsung BlackJack II caught my attention. Based on the published specs, this one looks very interesting:
- The biggest change is that the BlackJack II runs Windows Mobile instead of Windows SmartPhone, that will resolve some important limitations. It'll also mean that far more add-on software is available (including a Windows Remote Desktop client).
- The biggest difference between Windows Mobile and Windows SmartPhone is that the former is designed for point-and-click or point-and-touch, whereas the latter is not. Of course, this means that the BlackJack II (which, like its predecessor, has no touch screen) needs a way to point-and-click. To address this, the BlackJack II replaces the old circular direction button with a jog wheel (kind of like an iPod control). And in doing so, it looks like they removed the side scroll wheel (which I use constantly). I'll have to try this for myself.
- Battery life has supposedly been improved, that's a biggie.
- In addition to quad-band GSM (an absolute minimum requirement), the BlackJack II supports HSPDA, which means it'll work in Japan and elsewhere. That's a big plus.
- GPS is included, and it appears that it'll work with Google Maps. Nice!
- Bluetooth 2 is supported, but no word yet if they removed the ridiculous one active paired device at a time restriction. Some have noted that this may be a Windows SmartPhone issue, in which case in may indeed not be a problem with the BlackJack II. We can hope.
- It's slimmer and lighter, although the width and weight have never been an issue for me.
- The device is supposedly faster, has more memory, and a higher resolution camera, but those have never been issues for me, either.
Of course, I dropped by the AT&T store today to look at it, but was unable to do so. Although they received a shipment over the weekend, none had been unpacked yet. And while they were willing to sell me one, they did not have a unit on display for me to play with. I'm going to have to drop by later in the week, and will post more comments then. My gut feel is that I am going to have to upgrade, but ...
In the meantime, if you've had a chance to tinker with the BlackJack II, please share your thoughts.
November 23, 2007
Posted At : 3:24 PM
Related Categories:
Jobs
Two postings this week, both for non-U.S. positions:
- APCO Worldwide (Brussels, Belgium and/or London, England) is looking for a ColdFusion developer. Requirements include relevant ColdFusion experience (MX or later), as well as 1-2 years of hands-on experience coding websites and developing web applications. Details posted online.
- Straker (Auckland, New Zealand or Sydney, Australia) is looking for two ColdFusion / Flex developers. Details posted online.
November 21, 2007
Posted At : 9:03 AM
Related Categories:
ColdFusion
A user sent me some code he was having trouble with, and in the code I saw a rather verbose and complex block of CFML being used to generate random strings for use with CAPTCHA verifications. So, while replying to his e-mail, I also sent him the RandString() function I use myself. And, as it may be of use others, here it is:
<!--- Generate random strings of specified length ---> <cffunction name="RandString" output="no" returntype="string"> <cfargument name="length" type="numeric" required="yes"> <!--- Local vars ---> <cfset var result=""> <cfset var i=0> <!--- Create string ---> <cfloop index="i" from="1" to="#ARGUMENTS.length#"> <!--- Random character in range A-Z ---> <cfset result=result&Chr(RandRange(65, 90))> </cfloop> <!--- Return it ---> <cfreturn result> </cffunction>
November 20, 2007
Posted At : 9:33 PM
Related Categories:
Stuff
Here's a new one for you, new as in "it's a new rule since last week" (exact quote from a TSA agent in Detroit this morning). When you show your ID at the security checkpoint you must now take it out of any holder. So, if your Drivers License is in your wallet, even if fully visible and legible, you have to actually remove it. The TSA agent won't necessarily take it from you to look at it, they won't scan the magnetic strip on it, they won't do anything different at all - they'll look at it just as they did before. They'll just wait while you take it out and put it back - it's the new rule I was told (even though there is no update posted about it on the TSA web site). And so, after I put my Drivers License away, I stood for a few minutes and watched lots of people fumble with their wallets.
I feel safer already!
Posted At : 6:44 AM
Related Categories:
ColdFusion
I recently mentioned that we were working on a ColdFusion update that would add Mac OSX Leopard support, as well as support for 64bit OSs (beyond the current Solaris support). ColdFusion Product Marketing Manager Kristen Schofield has just announced that the beta for this update has begun.
November 19, 2007
Posted At : 10:02 AM
Related Categories:
ColdFusion
I mentioned Fusion Authority Quarterly (FAQU) when the inaugural issue was published back in mid-2006. Since then I have glanced at each issue as I have received them, but have not really given them as much attention as I probably should have. Until now, that is. I recently had a short flight (well, two of them actually, there and back on the same day) - short as in too short to power up my laptop to get any real work done. And so, as I was dashing out of my office, I grabbed FAQU Volume 2 Issue 2 that had been sitting on my desk since MAX in Chicago. And honestly, I am more than impressed. The articles are well written - real content without feeling dumbed down. The scope of coverage is impressive - this particular issue features extensive Flex and AIR coverage, but with an essential ColdFusion twist and bias. Content that is much needed and generally lacking is included here - Nick Kwiatkowski's excellent article on using Data Services with ColdFusion and Flex is a perfect example of this. The presentation and production is truly professional. And the form factor is ideal - a size and thickness that makes issues easy to keep at hand and with you. At $50/year, Fusion Authority Quarterly is a bargain, and well worth your attention.
Steve Drucker of Figleaf Software recently presented an online Acrobat Connect session on AIR, concentrating on getting started and building HTML/JS/Ajax AIR apps (and of course he uses ColdFusion as the back-end). And, very considerately, he recorded the entire session - it runs about an hour, and it is now posted online for your viewing.
November 18, 2007
This is the least favorite post I've had to make in a long time. I was scheduled to begin a week and a half of ColdFusion events in Australia this week. But, due to a personal issue that has come up, I have had to cancel at the last minute. I am really upset about this - it's been several years since I was last down under, and I was really looking forward to this trip. The good news, however, is that ColdFusion Specialist Adam Lehman is on his way to Australia right now, as is Nick Watson from Adobe U.K. So, the CFCAMP events will go on, but without me this time.
November 17, 2007
Posted At : 11:41 PM
Related Categories:
Stuff
 I've admitted this before, I am a big Lego fan (for the kids, of course!). I just saw this Eiffel Tower in the latest catalog. 3428 pieces, almost 4' in height, built to scale from the real tower's original blueprints ... I so need (yes, need) this one!
November 15, 2007
A year or so ago I posted an entry explaining why, as a rule, managing session state on the server (as ColdFusion does) was not ideal in Flex applications. I still stand by that assertion. But, many have pointed out that it is sometimes necessary to access ColdFusion session data from within Flex applications. Indeed, I was asked about this several times in the past week alone. And so, time to update the topic.
ColdFusion stores session variables on the server. In order to know which subset of session data belongs to a specific client, ColdFusion creates an identifier that is sent to the client (usually as cookies, but it could also be a URL parameter). The identifier must be sent back to ColdFusion on each and every subsequent request so that ColdFusion may make the correct server-side session data available. Without the identifier, ColdFusion will assume that there is no active session, and will the create a new session and attempt to send a new identifier to the client.
Flex applications run within the Flash Player, not within ColdFusion. As such, Flex applications have no direct access to ColdFusion session data. But, if you were to create a Flex application with a ColdFusion back-end, that Flex application could indeed gain access to ColdFusion session data as needed. Here's how it works.
The preferred way for Flex to connect to ColdFusion is via Flash Remoting - using AMF to connect to a ColdFusion Component. AMF actually communicates back to ColdFusion via HTTP and the web browser. As such, if ColdFusion's session identifier exists in the browser, it will be sent back with Flash Remoting requests. Similarly, if the browser receives identifier cookies along with AMF results, those cookies will be saved. In other words, when you use to connect to a ColdFusion Component, ColdFusion is fully aware of session state management, and the CFC being invoked automatically has access to the correct session data.
But, how can Flex get to that data? The answer is it can't, but you can create a CFC that exposes session variables.
Caution: Before you go further I will point out the obvious. If you create a public facing CFC that exposes methods that allow session data to be directly manipulated, well, you've now allowed public access to session data. Of course, callers will only have access to their own session data, but still, proceed with caution, and make sure you fully understand what you are doing.
Ok, here is the session.cfc file:
<cfcomponent> <!--- Set a CF session variable ---> <cffunction name="set" access="remote"> <cfargument name="name" type="string" required="yes"> <cfargument name="value" type="string" required="yes"> <!--- Set SESSION var ---> <cfset SESSION[ARGUMENTS.name]=Trim(ARGUMENTS.value)> </cffunction> <!--- Get a CF session variable ---> <cffunction name="get" access="remote" returntype="any"> <cfargument name="name" type="string" required="yes"> <!--- Init local var ---> <cfset var result=""> <!--- Get SESSION var if it exists ---> <cfif StructKeyExists(SESSION, ARGUMENTS.name)> <cfset result=SESSION[ARGUMENTS.name]> </cfif> <!--- Return it ---> <cfreturn result> </cffunction> <!--- List session variable names ---> <cffunction name="list" access="remote" returntype="array"> <!--- Return it ---> <cfreturn ListToArray(ListSort(StructKeyList(SESSION), "text"))> </cffunction> <!--- Keep alive ---> <cffunction name="keepAlive" access="remote"> <!--- Nothing to do here ---> </cffunction> </cfcomponent>
As you can see, the code is pretty simple. SESSION is actually a ColdFusion structure, and so direct session access is possible using CFML structure functions. The "list" method returns an array of session variables (their names). The "get" method gets the contents of a specific session variable. And the "set" method sets a session variable, creating or updating as needed (this example only creates simple variables). The final method, named "keepAlive" does nothing, and it can be called as needed to keep the session alive (ensuring that it does not time out).
To help test the app (and to populate it with data) you can use a simple test page like this:
<!--- Init vars ---> <cfparam name="FORM.varName" default=""> <cfparam name="FORM.varValue" default=""> <!--- Process form if submitted ---> <cfif Trim(FORM.varName) NEQ "" AND Trim(FORM.varValue) NEQ ""> <cfinvoke component="session" method="set" name="#Trim(FORM.varName)#" value="#Trim(FORM.varValue)#"> </cfif> <!--- Dump SESSION scope ---> <cfdump var="#SESSION#"> <!--- Form ---> <hr> <cfform action="#CGI.SCRIPT_NAME#"> Variable: <cfinput type="text" name="varName" required="yes"> Value: <cfinput type="text" name="varValue" required="yes"> <br /> <cfinput type="submit" name="sbmt" value="Save SESSION variable"> </cfform>
How to use session.cfc from within Flex? Here is a simple example application:
<?xml version= "1.0" encoding= "utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="100%" height="100%" creationComplete="initApp()"> <mx:Script> <![CDATA[ import flash.events.TimerEvent; import mx.utils.ObjectUtil; // Timer thread handle private var timer:Timer; // Initialize app private function initApp():void { // "Keep alive" interval var pingSeconds:int=60; // Get session list session.list(); // Create "keep alive" timer timer=new Timer(pingSeconds*1000); timer.addEventListener( "timer", timerHandler); timer.start(); } // Timer handler private function timerHandler(event:TimerEvent):void { // Ping CF session to keep alive session.keepAlive(); } // Get a CF session variable private function sessionGet(varName:String):void { // Get it session.get(varName); } // Set a CF session variable private function sessionSet(varName:String, varValue:String):void { // Save it session.set(varName, varValue); // Update list session.list(); } ]]> </mx:Script> <!-- Define CFC --> <mx:RemoteObject id="session" destination="ColdFusion" source="CFFlex.session" showBusyCursor="true" /> <!-- GET panel --> <mx:Panel width="100%" height="100%" title="ColdFusion SESSION Variables"> <mx:HBox width="100%" height="100%"> <!-- List fo session variables --> <mx:List id="sessionList" dataProvider="{session.list.lastResult}" click="session.get(sessionList.selectedItem)" height="100%" width="200"/> <!-- Display value --> <mx:TextArea text="{ObjectUtil.toString(session.get.lastResult)}" editable="false" width="100%" height="100%" /> </mx:HBox> </mx:Panel> <!-- SET panel --> <mx:Panel width="100%" height="150" title="Set ColdFusion SESSION Variable"> <!-- Variable create form --> <mx:Form width="100%" height="100%"> <mx:FormItem label="Variable:" width="100%"> <mx:TextInput id="varName" width="100%"/> </mx:FormItem> <mx:FormItem label="Value:" width="100%"> <mx:TextInput id="varValue" width="100%"/> </mx:FormItem> <mx:FormItem> <mx:Button label="Save" click="sessionSet(varName.text, varValue.text)"/> </mx:FormItem> </mx:Form> </mx:Panel> </mx:Application>
The application features two panels. The first displays a list of ColdFusion session variables (by calling the session.list() method), allowing them to be selected to display their contents (by calling the session.get() method). The second contains a form that can be used to create new session variables (by calling the session.list() method). To ensure that the ColdFusion session does not time out, a Flash timer is defined, and it pings the keepAlive() method (once a minute in this example).
Now, I would still caution you by saying that, as a rule, if data needs to persist it should persist on the client, within the Flex application. But, when you do need access to ColdFusion session data, this technique will do the trick.
Updated 11/16/2007 to add timer and keepAlive logic.
Posted At : 1:02 PM
Related Categories:
ColdFusion
Scott Stroz has written a really useful article for the ColdFusion Developer Center entitled Using ColdFusion 8 with Microsoft Exchange Server.
Posted At : 12:48 PM
Related Categories:
AIR
As per Mike Chambers, this is the official AIR logo:
November 14, 2007
Posted At : 10:12 PM
Related Categories:
ColdFusion
The second ColdFusion 8 cumulative hot fix pack has been released. This hot fix contains the 7 fixes from hot fix 1, plus 14 additional fixes.
November 13, 2007
Posted At : 3:53 PM
Related Categories:
Flex
MapQuest has opened up their AS3 APIs for developer use. You need to register to gain access. Our pals at Universal Mind were instrumental in creating the APIs. Check out this demo.
November 12, 2007
Posted At : 11:56 AM
Related Categories:
Stuff
 I have finally gotten around to updating the On The Road list and pictures. Lots of new pictures have been posted, including this one taken last week while climbing The Great Wall of China. Hey, this evangelism gig is a sacrifice, but I am willing to do it. ;-)
November 11, 2007
Posted At : 1:09 PM
Related Categories:
ColdFusion
ColdFusion 7 and 8 includes an XMPP gateway, used for IM communication (to Jabber, Google Talk, and more). An update to the XMPP gateway is now available (for both ColdFusion 7 and 8), as explained in TechNote: Replacement file for XMPP Gateway.
November 10, 2007
Posted At : 10:35 PM
Related Categories:
Jobs
Three positions to post this week, two development positions and one management position:
- APC (Providence, RI) is looking for a web development team leader to manage teams and projects doing ColdFusion development. BS in Computer Science and at least 4+ year experience in a senior level web development position is required. In depth knowledge of internet technologies, including experience with SQL Server, ColdFusion MX, .NET, JavaScript/DHTML, XML, RIA, Web Services, and CSS, are required. Previous management experience is a strong plus. Details posted online.
- APC (Providence, RI) is looking for a senior web developer. Requirements include a BS in Computer Science and at least 5+ year experience, experience using ColdFusion MX, MS SQL Server, UML, JavaScript, and CSS. Knowledge in XML, Java, ASP, OOP concepts, RIA, and Web Services a plus. Details posted online.
- The University of North Carolina at Chapel Hill (Chapel Hill, NC) is looking for a web applications programmer. Requirements include at least 2 years of ColdFusion programming, database experience with both Oracle and MySQL, and more. Experience with XML, CSS, RSS, Ajax, mapping, and open source frameworks are a plus. Details posted online.
More Entries
|
|