Saturday, May 17, 2008    
Home My Books Blog ColdFusion About Me Back    

Calendar
<< Jun 2007 >>
S M T W T F S
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
             

Search

Categories
 • Adobe (61) [RSS]
 • AdobeMAX06 (45) [RSS]
 • AdobeMAX07 (59) [RSS]
 • AdobeMAX08 (6) [RSS]
 • AIR (96) [RSS]
 • Appearances (105) [RSS]
 • Books (66) [RSS]
 • CFEclipse (14) [RSS]
 • ColdFusion (1081) [RSS]
 • Flash (91) [RSS]
 • Flex (319) [RSS]
 • Jobs (81) [RSS]
 • JRun (12) [RSS]
 • Labs (27) [RSS]
 • LiveCycle (12) [RSS]
 • MAX (141) [RSS]
 • Regular Expressions (12) [RSS]
 • SQL (36) [RSS]
 • Stuff (492) [RSS]
 • Tips (CF Studio) (80) [RSS]
 • Tips (CF) (795) [RSS]
 • Tips (Dreamweaver) (91) [RSS]
 • Tips (Flex Builder) (2) [RSS]
 • Using CF (131) [RSS]
 • Wireless (96) [RSS]

Other BLOGs
 • Ray Camden
 • Tim Buntel
 • Sean Corfield
 • John Dowdell
 • Steven Erat
 • Brandon Purcell
 • Charlie Arehart
 • Full As A Goog

RSS Feeds
 • Feed
 • Subscribe

Join my mailing list and find out about new books and other topics of interest.

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.

Viewing By Month : June 2007 / Main
June 30, 2007

ColdFusion Positions In VA And NC

Two positions to post this week:
  • Council for Logistics Research, Inc (Arlington, VA) is looking for an experienced web developer with 3-5 years of ColdFusion experience, 1-2 years of experience with an MVC framework, and 3-5 years experience working with SQL as the back-end for web applications. Requirements also include BA/BS with 3-5 years of relevant experience, AA with 6 years of relevant experience, or 8 years of relevant experience. Contact HR@clrexec.com with the phrase "Web Developer" in the subject line.
  • The Department of Housing and Residence Life at the University of North Carolina (Charlotte, NC) is looking for a junior Microsoft SQL 2000 database administrator with 2-3 years of experience to join our team. Candidate must also have experience with ColdFusion. This is a state government position (#10554) and you must apply online by July 6, 2007. Please contact Peter Thorsett for details and the link to the University's online job system.

June 29, 2007

Rahul Posts More On CF And JMS

Yesterday I mentioned Rahul Narula's post on ColdFusion and JMS. Rahul has now posted a follow-up entry with a well explained example showing how to use ColdFusion to send messages to JMS queue.

June 28, 2007

No iPhone For Me

Lots of folks will be trying to lay their hands on an iPhone tomorrow. And as impressive as the phone looks (and there really seems to be lots to like about it), I am not getting one. What killed it for me was the decision to tie it to the older slower speed data networks instead of Cingular's 3G network. I use my phone extensively for web browsing and other forms of data transfer, and now that Cingular has rolled out their 3G network to the point that I am really appreciating the benefits of it, I am not going back to a slow speed data network, no way. I assume that Apple/Cingular made the decision because of battery life concerns, 3G network access really drains battery power. But still, A) make that a user choice then (allow users to turn 3G on and off as needed), B) allow users to carry spare batteries. So, nope, no 3G means no iPhone for me.


Hot Banana On ColdFusion 8

Hot Banana has announced that their CMS has been tested and is "100 percent compliant with Adobe ColdFusion 8, which means it can take full advantage of all the features and functional benefits of the new, soon-to-be-released ColdFusion 8 server platform".


Rahul Narula On ColdFusion's JMS Gateway

June 27, 2007

ColdFusion 8 Performance Numbers

ColdFusion 8 is fast, really fast, and in the CFUnited keynote this morning I presented some actual numbers (all reported as requests per second, the higher the number the more load the server can handle):

  • Structure manipulation: CF6.1=99, CF7=101, CF8=200. In other words, CF8 manipulated structures twice as fast as CF6 and 7.
  • List manipulation: CF6.1=33.6, CF7=34.4, CF8=103.4. CF8 list manipulation is over three times faster than that of CF6 and 7.
  • CFSWITCH/CFCASE: CF6.1=66.2, CF7=88.9, CF8=244.4. CF8 is three times faster than CF7.
  • CFPARAM: CF6.1=8.9, CF7=9.6, CF8=341.4. Yep, thirty five times as fast!
  • Date functions: CF6.1=230, CF7=251, CF8=1423. About six times faster in CF8.
  • RegEx functions: CF6.1=390, CF7=392, CF8=987. Over double the speed in CF8.
  • IsDefined(): CF6.1=136, CF7=611, CF8=1243. Double as fast as CF7, and nearly ten times the speed of CF6.
  • CFC creation: CF6.1=9.7, CF7=3, CF8=69.4. Yep, performance here took a hit in CF7, but it's more than made up for in CF8.
Of course, in the real world you need to test whole applications, and not just specific language elements. So:
  • BlogCFC: CF6.1=271, CF7=255, CF8=355. About a 30% performance gain.
  • Adobe.com store: CF6.1=275, CF7=290, CF8=435. 30% performance gain there too.

In general we are expecting an average of 30%-40% performance gain across all application. And we have seen some apps where the gain is double and even triple performance.

Oh, and all of these tests were performed using CF6 and CF7 CFML, no new CF8 stuff. When those are added to the mix CF8 apps will run even quicker.

June 26, 2007

At CFUnited

I just arrived at the CFUnited conference venue. It's hard to believe it's been a year sine we were last here, amazing. OK, so let's see ... a keynote for tomorrow morning, that's what we need ... hummm, what to talk about ... ;-)


MAX Session List Posted

The complete MAX session list has been posted. There are 27 sessions on ColdFusion this year, including a 3.5 hour boot camp event.

June 25, 2007

The Dreamweaver Team Is Blogging

Title says it all, the Dreamweaver team blog is online.


CFQuickDocs Updated For CF8

Jake Munson has updated his CFQuickDocs to include ColdFusion 8 tags and functions (and even the new CF8 Ajax JavaScript objects).


ColdFusion Ajax Tutorial 6: Editable Data Grids

Previously we looked at the new ColdFusion 8 data grid and how to populate that control using asynchronous calls back to a ColdFusion Component. In that example the CFC contained a single method that returned a page of data as requested by the data grid.

Like the previous incarnations of <CFGRID>, the new Ajax enabled HTML grid allows data to be updated right within the grid. When the <CFGRID> is used in edit mode, column values may be edited as needed, and rows may be deleted. Unfortunately, the current implementation of the HTML <CFGRID> does not support inserting new rows. This is a pretty serious limitation, and one that we'll hopefully address in the future - for now you'll need to use another form to add new rows.

You will recall that <CFGRID> requests data as needed by making calls to a CFC method specified in the bind attribute. To process edits a second CFC method is needed, and it must be passed to the onchange attribute. Here is a modified <CFGRID> that supports data editing:

<cfwindow initshow="true" center="true"
         width="430" height="340" title="Artists">


<cfform>
   <cfgrid name="artists"
         format="html"
         pagesize="10"
         striperows="yes"
         selectmode="edit"
         delete="yes"
         bind="cfc:artists.getArtists({cfgridpage},
                              {cfgridpagesize},
                              {cfgridsortcolumn},
                              {cfgridsortdirection})"

         onchange="cfc:artists.editArtist({cfgridaction},
                                 {cfgridrow},
                                 {cfgridchanged})"
>

      <cfgridcolumn name="is" display="false" />
      <cfgridcolumn name="lastname" header="Last Name" width="100"/>
      <cfgridcolumn name="firstname" header="First Name" width="100"/>
      <cfgridcolumn name="email" header="E-Mail" width="200"/>
   </cfgrid>
</cfform>

</cfwindow>

There are three changes in this <CFGRID> (compared to the grid created previously). First of all, selectmode="edit" puts the data grid in edit mode. This allows editing, but not deleting. To allow rows to be deleted, delete="yes" is also specified. And finally, a CFC method is specified in the onchange attribute. When invoked (upon an edit or a delete) three arguments will be passed, the action (U for update or D for delete), the row being changed, and the changes (only populated for updates, and not for deletes).

The specified CFC has to accept these three arguments, and returns no data. Within the CFC you can use <CFQUERY> tags (or perform any other operations) to actually perform the updates. Here's an example:

<!--- Edit an artist --->
   <cffunction name="editArtist" access="remote">
      <cfargument name="gridaction" type="string" required="yes">
      <cfargument name="gridrow" type="struct" required="yes">
      <cfargument name="gridchanged" type="struct" required="yes">

      <!--- Local variables --->
      <cfset var colname="">
      <cfset var value="">

      <!--- Process gridaction --->
      <cfswitch expression="#ARGUMENTS.gridaction#">
         <!--- Process updates --->
         <cfcase value="U">
            <!--- Get column name and value --->
            <cfset colname=StructKeyList(ARGUMENTS.gridchanged)>
            <cfset value=ARGUMENTS.gridchanged[colname]>
            <!--- Perform actual update --->
            <cfquery datasource="#THIS.dsn#">
            UPDATE artists
            SET #colname# = '#value#'
            WHERE artistid = #ARGUMENTS.gridrow.artistid#
            </cfquery>
         </cfcase>
         <!--- Process deletes --->
         <cfcase value="D">
            <!--- Perform actual delete --->
            <cfquery datasource="#THIS.dsn#">
            DELETE FROM artists
            where artistid = #ARGUMENTS.gridrow.artistid#
            </cfquery>
         </cfcase>
      </cfswitch>
   </cffunction>

The code uses a <CFSWITCH> to process a gridaction of U (update) or D (delete). For updates, argument gridchanged will be a structure containing an element for each column changed, the element name is the column name and the element value is the new value. Each column is updated individually, if a user makes three edits to the same row in the data grid the this method will be called three times, once for each row. As such, for updates, gridchanged only ever contains a single element, and so the code extracts the column name and value and saves them to local variables. These variables are then used in a <CFQUERY> to perform the actual update, using the primary key in the passed row (ARGUMENTS.gridrow) for the SQL WHERE clause. Deletes are processed similarly, with only the primary key needed.

Here is the complete artists.cfc, with both the bind and onchange methods:

<cfcomponent output="false">


   <cfset THIS.dsn="cfartgallery">


   <!--- Get artists --->
   <cffunction name="getArtists" access="remote" returntype="struct">
      <cfargument name="page" type="numeric" required="yes">
      <cfargument name="pageSize" type="numeric" required="yes">
      <cfargument name="gridsortcolumn" type="string" required="no" default="">
      <cfargument name="gridsortdir" type="string" required="no" default="">

      <!--- Local variables --->
      <cfset var artists="">

      <!--- Get data --->
      <cfquery name="artists" datasource="#THIS.dsn#">
      SELECT artistid, lastname, firstname, email
      FROM artists
      <cfif ARGUMENTS.gridsortcolumn NEQ ""
         and ARGUMENTS.gridsortdir NEQ "">

         ORDER BY #ARGUMENTS.gridsortcolumn# #ARGUMENTS.gridsortdir#
      </cfif>
      </cfquery>

      <!--- And return it as a grid structure --->
      <cfreturn QueryConvertForGrid(artists,
                     ARGUMENTS.page,
                     ARGUMENTS.pageSize)>

   </cffunction>


   <!--- Edit an artist --->
   <cffunction name="editArtist" access="remote">
      <cfargument name="gridaction" type="string" required="yes">
      <cfargument name="gridrow" type="struct" required="yes">
      <cfargument name="gridchanged" type="struct" required="yes">

      <!--- Local variables --->
      <cfset var colname="">
      <cfset var value="">

      <!--- Process gridaction --->
      <cfswitch expression="#ARGUMENTS.gridaction#">
         <!--- Process updates --->
         <cfcase value="U">
            <!--- Get column name and value --->
            <cfset colname=StructKeyList(ARGUMENTS.gridchanged)>
            <cfset value=ARGUMENTS.gridchanged[colname]>
            <!--- Perform actual update --->
            <cfquery datasource="#THIS.dsn#">
            UPDATE artists
            SET #colname# = '#value#'
            WHERE artistid = #ARGUMENTS.gridrow.artistid#
            </cfquery>
         </cfcase>
         <!--- Process deletes --->
         <cfcase value="D">
            <!--- Perform actual delete --->
            <cfquery datasource="#THIS.dsn#">
            DELETE FROM artists
            WHERE artistid = #ARGUMENTS.gridrow.artistid#
            </cfquery>
         </cfcase>
      </cfswitch>
   </cffunction>


</cfcomponent>

We'll look at additional <CFGRID> examples in the future.

June 24, 2007

In NYC For CS3

I just arrived in New York for CS3: Creative License Conference. Just like at the same event in Los Angeles last week, I am presenting a pre-conference session on building Rich Internet Applications, and will be concentrating on ColdFusion, Flex, and AIR. About 200 attendees joined my session last week, and I am looking forward to a similarly successful event tomorrow morning.

June 23, 2007

Positions In CA And GA

Several positions in California, and one in Georgia:
  • Clear Capital (Truckee, CA) is looking for an Applications Development Manager to lead a team in the development, enhancement and maintenance of web-based ColdFusion and Java business applications for both internal and external use. This role requires 5+ years of ColdFusion application development experience, 2+ years of Java/J2EE application development experience, and 5+ years of experience managing teams of 10 or more direct reports in a dynamic fast-paced, growing environment. Relocation assistance provided. Contact Greg Ferro.
  • VisionTree Software, Inc. (San Diego, CA) is looking for a ColdFusion developer with at least 3 years experience. Experience with PostgreSQL preferred, Linux/Unix skills a plus. Contact Adam Hawkins.
  • APEX Systems, Inc. (Atlanta, GA) is looking for a ColdFusion developer with experience using SQL Server 2005 and JavaScript. VB.NET experience preferred. The project involves developing call center and/or sales performance reporting applications, and so prior experience with this type of development is required. Contact Jessica Packer.
  • City Of Davis (Davis, CA) is looking for a ColdFusion developer. Requirements include 3-5 years of ColdFusion experience, as well as ColdFusion administration experience. Familiarity with Model-Glue, Verity, Java, and ESRI ArcIMS preferred. Details posted online.

June 20, 2007

I'll Be On The AIR Bus

As just announced by Mike Chambers, I'll be taking part in the upcoming AIR bus tour, demonstrating building ColdFusion powered AIR applications.

June 19, 2007

MAX Pre-Conference Training Sessions Posted

MAX pre-conference sessions are full day hands-on events the day before MAX. There are over a dozen session this year, several of them on ColdFusion, and some on Flex and AIR, too. These are always popular, last year they all sold out in less than a month! MAX registration is now open.

June 18, 2007

On My Way To Los Angeles

I am on my way to Los Angeles to take part in CS3: The Creative License Conference. I know what you are thinking, Ben at a design event?!?! Well, as it so happens, I am presenting a 1/2 day session on building Rich Internet Applications, and my session covers ColdFusion, Flex, and Apollo (oops, I mean AIR). Oh, and we do it again next week in New York.


Rob Christensen Highlights AIR Apps

Rob Christensen (Senior Product Manager for Adobe AIR, nee Apollo) has written an article highlighting six must-see AIR applications.


Matt Chotin On Flex 3

Flex Product Manager Matt Chotin has written an article entitled What's new in Flex 3 on Adobe.com.

June 17, 2007

My Son's Winning Speech

My 12 year old son has been taking public speaking classes all year. This is a school program offered to students in 7th grade. Throughout the year students prepare speeches on a variety of topics of their choosing, and present them in front of their class. They are given pointers and assistance on speaking clearly, pacing and timing, making eye contact with listeners, hand gestures and body language, and more. And at the end of the year, those who are brave enough to do so can take part in a competition, a speech competition, in front of a much larger audience, with tougher rules, and an outside panel of judges (individuals with varied public speaking experiences). My son took part in the competition, and won second place (with a single point difference between him and the 1st place winner). We are really proud of him, it takes guts and determination to get up at a lectern in front of a full auditorium to deliver a speech, especially when you are 12 years old and the audience is mostly grownups. Here is his winning speech:

The Useless Nothing

Good evening.

I have an idea for an organization that could change the world, an organization dedicated to preventing war and safeguarding human rights. And I'd like to share this idea with you this evening.

My organization will be massive, on a very grand scale, known the world over, and with membership from countries all over the planet. The member nations would all be required to send delegates to become part of this organization. In this way, they would be representing their countries in all sorts of very important meetings and discussions.

This organization will, of course, need a huge budget, spending billions of dollars each year. The majority of the money, over five billion annually, would be used for international peacekeeping and security purposes. Member nations will be required to contribute funds to cover this enormous budget. As expected, The United States will be obligated to be the single biggest contributor. And in recognition of these contributions, we will be careful to ensure that our policies and views rarely support those of The United States.

With so much money at its disposal, the organization will have corporations the world over seeking to sign contracts with us, hoping and vying for a slice of the massive budget pie. It is very likely, then, that bribery could become the norm. Organization officials could be tempted to pocket large amounts of money hoping to direct contracts to specific vendors and companies. To prevent this from happening we will create a Budget Oversight Committee, which will be made up organization officials. Incidentally, they will be the very same officials who would be suspected of taking bribes.

We'd headquarter my organization right here in The United States, perhaps right in the heart of New York City. 16 acres of prime real estate ought to do the trick. Technically speaking, the headquarters, and the land that it sits on, will not be a part of The United States and will therefore, obviously, not be subject to U.S. rules and law. The members of the organization will not be required to respect Federal or State law, immigration law, or even customs requirements or inspections. In fact, let's let the delegates and representatives do whatever they wish, breaking any laws they see fit, and however they'd like.

As far as real work goes, my organization would create councils to solve specific world problems. Perhaps one of the most important and key committees will be the Security Council where member nations will discuss vital world security issues. All countries will be invited to be a part of this council, even known terrorist states, like Libya and Iran. The only country in the world that we will explicitly exclude will be Israel.

My organization will have no army, no real might, and no way to enforce ideas and policies. Instead, we will issue resolutions. And if by chance these resolutions are not adhered to, we will denounce the non-compliance quickly and efficiently by issuing additional resolutions!

The organization will be able to impose sanctions. Or rather, it will be able to recommend that sanctions be imposed. For example, to punish brutal dictators like Saddam Hussein we might encourage member nations to not buy oil from Iraq.

On second thought, that might not work. Sanctions like these would actually hurt everyday Iraqis more than they'd hurt Saddam Hussein. So we would have to create a special program where we actually would buy oil from Iraq, but only give them money clearly designated to buy food and medicine for the Iraqi population. Of course, monitoring such a program would be impossible, and so organization members and their families could abuse the program to their advantage, bypassing the sanctions, feeding money to Saddam Hussein, and scamming billions of dollars in what may become the biggest financial scandal of all time.

Since we will have no army, we will ask member nations to lend us soldiers to be part of Peacekeeping Forces. These elite groups will be posted in strategic locations around the world, for example, along the border between Israel and Lebanon. The Peacekeeping Forces will not use force, and will not get involved in any fighting. Rather, they will observe. And if they were to see, let's say for arguments sake, Hezbollah stockpiling weapons over a long period of time, they would not get involved, and they would not report this back to the Security Council. In fact, they will immediately do absolutely nothing at all.

The head of my organization will be known as the Secretary General. This individual will need to be a prominent statesman and a seasoned politician, someone well known and trusted, someone who could even be awarded a Nobel Peace Prize. We'd find someone known for his love of all humanity, someone with a clear and untarnished past, a man of peace - someone, perhaps, like former Nazi Kurt Waldheim.

So, all that is left for me to do now is to find an appropriate name for such a significant and essential organization. After all, the world will be looking to us for impartial help and support. Let me think. ... Aha! Considering what the organization will accomplish and the role it will play in world politics and human rights, we will call it "The Useless Nothing". And the world over it will be known by its abbreviation - The UN.

June 16, 2007

CF8 Blog Posts In Portuguese

June 15, 2007

ColdFusion Positions In OR, MO, AL, And DC

Five positions this week:

  • Mentor Graphics (Wilsonville, OR) is looking for a ColdFusion / Flex application developer. Requirements include a bachelors degree in related field, 4 years experience in ColdFusion application development including use of Object Oriented design practices, and 1 year producing web sites with advanced technologies including Flex and Action Script. Details posted online.
  • MegaForce (Kansas City, MO) is looking for a ColdFusion developer. Requirements include 2 years of ColdFusion experience with ColdFusion MX, as well as high proficiency in HTML, XHTML, JavaScript, and CSS. Flash and Flex experience desired. Contact Ryan Mac Donald.
  • Planned Systems International (Montgomery, AL) is looking for a ColdFusion developer. Requirements include a BS in a related field and 3+ years of software engineering including significant experience with ColdFusion, as well as experience with HTML and Java. U.S. Citizenship required. Contact Jamil R. Luckett.
  • Georgetown University (Washington, DC) is looking for a junior web developer. 1-3 years work experience in ColdFusion web development is required. Details posted online.
  • Unnamed real estate company (Portland, OR) is looking for a ColdFusion developer. Details posted online.

June 14, 2007

MAX 2007 Registration Now Open

MAX 2007 North America starts September 30th, and registration is now open! Quick, sign up NOW!


Some More CF8 Download Stats

Last week I mentioned that CF8 public beta downloads had already exceeded our expectations. I was looking at updated stats yesterday, and the downloads numbers are now significantly higher than when I made that post. That's phenomenal! But I also noticed something else of interest - of the versions downloaded thus far, here is the platform breakdown: Windows 76%, Mac 16%, Linux 7%. That Windows number is pretty consistent with ColdFusion use in general, but the Mac number is far greater than what we've seen before, and is great to see.

June 13, 2007

ComputerWeekly Explains ColdFusion

ComputerWeekly is running a story Coldfusion offers a short curve to web development. Aside from some minor technical inaccuracies, the author seems to have gotten the core value proposition right, as in "Champions of ColdFusion say that the cost is quickly defrayed by the boost it gives to productivity". Thanks to Barry Beattie for bringing this one to my attention.


ColdFusion 8 System Requirements

Damon Cooper has posted info and links on ColdFusion 8 supported platforms and system requirements.

More Entries

  © Copyright 1997-2008 Ben Forta, All Rights Reserved