Flex 4 ColdFusion Developers Fest

I think a few people have picked this up already, but I figured I would add my voice to the fray to make sure everyone is completely inundated with this deal.

Adobe is running free Flex 4 training events for ColdFusion developers from November 13th to November 20th in various cities throughout the US:

Friday, November 13

Marriott at Legacy Town Center, 7120 Dallas Parkway, Plano, TX 75024

Saturday, November 14

Sheraton Imperial Hotel & Convention Center, 4700 Emperor Boulevard, Durham, NC 27703

Monday, November 16

The Curtis Hotel, 1405 Curtis Street, Denver, CO 80202

Tuesday, November 17

Radisson Hotel Newport Beach, 4545 MacArthur Boulevard, Newport Beach, CA 92660

Wednesday, November 18

The Georgian Terrace Hotel, 659 Peachtree Street NE, Atlanta, GA 30308

Thursday, November 19

Hyatt Regency Chicago on the River Walk, 151 East Wacker Drive, Chicago, IL 60601

Friday, November 20

Fig Leaf Software Training Center, 1400 16th Street NW, Washington, D.C. 20036

Friday, November 20

Adobe, 601 Townsend Street, San Francisco, CA 94103

Each event is free. Free… FRRRREEEEEEEEEE… Free. So go register already:

http://www.adobe.com/go/flextrainingforcfdevelopers,

By the way, see what I did there in the title? It’s Flex 4 and it’s Flex for ColdFusion Developers. Pretty witty, no? No.

Multiple Databases in ColdFusion 9 ORM

I had a comment on my blog yesterday about ORM’s restrictions on multiple datasources.  Yes, ORM in ColdFusion 9 is restricted to one datasource per application. However this does not mean you are restricted to one database, schema or tablespace.

A datasource is just an abstraction for database connection details. It takes a server, a port, user credentials, a default database and other information.  On the database side, just because a database is defaulted doesn’t mean that you are limited to just that database.  In SQL you can append schema namespaces to the front of a table:

SELECT *
FROM NotMyDefaultApplication..users

This can also be accomplished in ORM components by specifying the schema attribute on the component. This will allow you to access a table outside the default database.

So if you have the need to access multiple databases/tablespaces/schema on one database server you absolutely can with the proper credentials and the schema attribute.

Getting ColdFusion 9

Okay, so ColdFusion 9 is out, and you want to get a copy. How do you go about it?

First, the developer and trial editions are free and available.

Second if you want to buy ColdFusion 9, your method will vary depending on where you are in the world..

You can just buy it from our online store.

For corporate customers:

In the US, east of the Mississippi, contact Dominick Conte dconte@adobe.com
In the US, west of the Mississippi, contact Tim Pontier tpontier@adobe.com
In the US and purchasing for a Governmental organization, contact Matt Troedson
In the US and purchasing for an Education organization, contact your Adobe Rep

In Europe, Africa or the Middle East the answer will vary from country to country, contact Claude Englebert cenglebe@adobe.com to get in touch with the appropriate partner.

Worldwide we have local resellers.

ColdFusion 9 Testing, Staging and Development Changes to EULA

A commenter on my last post asked about the portion of the EULA that addressed testing and development servers.

When you read the EULA you’ll see:

3.1.3 If Licensee purchases one or more Production Software licenses, then Adobe also grants Licensee the
right to install and use the Software as Development Software for internal development, testing and staging.

It’s important to note that this means that you can install additional copies of your production server in Standard or Enterprise (whichever license you bought) to take one of these roles.  The Developer Edition of ColdFusion is still limited to 3 IPs but your shared development server with Standard or Enterprise will not be limited.

Happy developing, testing, and staging.

ColdFusion 9 EULA changes

The EULA for ColdFusion 9 has several exciting changes. (Yes, excitement from a EULA!)

  • Usage with cloud computing is now supported. Each license of ColdFusion will limit you to a number of instances.
    • Standard 1 instance
    • Enterprise 10 instances
  • ColdFusion 9 boxes dedicated to testing or group development no longer require their own licenses. A license of ColdFusion 9 you buy for production will allow you to create the rest of your environment. This is in addition to the change in the EULA we made in ColdFusion 8 to cover passive backup servers. We made both of these changes because it was important to us that developers not be penalized for following best practices.

It’s important to note that these changes are not retroactive to previous versions of ColdFusion, only to ColdFusion 9.

ColdFusion 9 Released

It makes me very happy to join with everyone else here at Adobe in announcing ColdFusion 9 is now available.

It’s been about 2 years in the making. Having seen it from the other side, I am in awe of the hard work and dedication the development team puts in. They put in crazy hours, and put out a product that is unbelievable. Here’s what they added:

  • ORM
  • Advanced Caching
  • SharePoint Integration
  • Office Integration
    • Word
    • PowerPoint
    • Excel
  • Java Portal Integration
  • Major reworking of Components
    • Performance Boost
    • Automatic Getters and Setters
    • Local Scope
  • Cfscript Enhancement
  • CFML Enhancements
  • New Search Engine
  • ColdFusion as a Service
  • Supercharged Flash Remoting

Oh yeah, and while they did that, they also created ColdFusion Builder a 1.0 product. Which reminds me, ColdFusion Builder Public Beta 2 is now out too.

On top of our developers, the beta testers have been amazing. Perhaps that was why our developers worked so hard, but they need to be acknowledged. The beta testers were banging away on Centaur pretty much from day one 24 hours a day. Their input heavily shaped the final outcome. It could not be done without them.

ColdFusion 9 is impressive, and it’s out. I’m excited. Our customers are excited. Our community is excited. Our developers are exhausted, but excited.

Now get out there and start using it, and don’t be quiet about it.

 

ColdFusion Position – Denver

There’s an open position for a ColdFusion Developer at the University of Denver. Details:

The Educational Web Developer reports directly to the Director of the Center for Teaching & Learning (CTL). The Educational Web Developer helps in the development of Coldfusion applications used for instruction, works with other team members to plan changes in technology, writes documentation, provides support for educational technologies, and provides customer service and support to faculty members of the University of Denver community.

For more details go to: https://www.dujobs.org/applicants/jsp/shared/position/JobDetails_css.jsp?postingId=180023

It comes in from Joseph Labrecque who is part of the Adobe Higher Education Leaders program. I get the feeling he’s a pretty good guy to work for.

ColdFusion 9 ORM: Data Mapper versus Active Record

I got a question today:

I was wondering if you could blog on the advantages with CF9 ORM using Hibernate versus something like the Active Record pattern Rails uses? I am not too familiar with Hibernate but go through Rails Envy once in awhile 🙂

This is an awesome question, and I’m going to tackle it, but I’m going to break it into a few sub questions. Before I do that, this is comparing apples to oranges. Active Record is a pattern and Hibernate is an ORM solution that uses a pattern named Data Mapper. I can’t speak to the entire reason for choosing Hibernate, as I’m not one of the engineers, but a quick survey shows it is the leading ORM solution in Java right now, which pushed us that way.

What are the differences between Data Mapper and Active Record?

The underlying one seems to be a philosophical one:

  • Data Mapper looks to the objects to be the definition of the data; the database is just a place to store it.
  • Active Record looks to the database to be the definition of the data; the object is just a way to access it.

     

That’s an oversimplification I’m sure. Data Mapper requires you to map out each table and each column. Active Record by and large will detect things like tables and columns for you and expose them. Implementations of both patterns include the ability to tweak the configuration, but it looks like most Data Mapper implementations need to be configured. (As opposed to Active Record implementations like Rails that prefer convention over configuration.)

A practical consideration that occurs is that Active Record objects handle talking to the database with load, save, and delete methods; while Data Mapper objects get passed back to another object or function to translation back to the database.

There are also issues about performance and mapping. I won’t bother going into these as they are issues with implementation of the pattern and not the pattern itself.

Why did you go with Data Mapper over Active Record?

Two major reasons here:

  1. Hibernate uses the Data Mapper pattern
  2. Because the community (represented on the prerelease site) by and large asked for it.

I don’t remember the entire rationale behind this preference, but I will push responsibility on to the prerelease testers. 🙂 I think it is related to the two next issues.

Is ColdFusion ORM pure Data Mapper?

Not necessarily. Sure you create CFCs with properties. You then use the Entity functions to save them back to the database. You can have those properties actually create and update your database structure. That is clearly Data Mapper in action.

However, you can leave all of the properties in your CFCs blank, and ColdFusion will just populate it from the database. You can leave some of the details of your properties blank and ColdFusion will make assumptions about how they’re typed. These are philosophically Active Record features.

It comes down to ColdFusion making stuff easier, regardless of underlying philosophy. ColdFusion does both, to facilitate both database-focused and object-focused ORM implementations.

Can you create Active Record CFCs with ColdFusion 9’s ORM?

Yes. You can wrap the Entity functions in a CFC like this:

<cffunction name="save" access="public" returntype="void">
 <cfset EntitySave(This) />
</cffunction>

 

Once you do that you can call your objects using the active record pattern of object.save(). In fact Bob Silverberg has started work on an Active Record CFC that you can just have all of your CFCs inherit from called Base Persistent ORM Object (Active.)

So hopefully this answered some of the questions around Hibernate, the Data Mapper pattern and the Active Record pattern in ColdFusion 9.

ColdFusion 9, Mango Blog, and git

I made a few major changes to my site in one fell swoop.

A few people asked me questions about the changes so I figured I would explain.

Why a VPS?

I really like my hosting company, YoHost, but it was still shared hosting. That meant I couldn’t experiment with administrative settings and whatnot. Also I was constrained to my hosting provider’s upgrade schedule. Changing to a VPS meant that I can do whatever I want whenever I want. I like that freedom.

Why ColdFusion 9?

You mean other than that I am an evangelist for it? Well I actually used a few pieces of it. I built an admin piece for my events page using ORM and ColdFusion Builder’s code generation. I also added a page that pulls in my presentations from SlideSix. To not tax their servers too much, I used the new caching features of ColdFusion. So I’m not just using ColdFusion 9 to use it, I’m leveraging some of the features.

Why Mango Blog?

First off let me just say, I love Ray Camden. I’d go so far as to say I have a non-sexual man-crush on him. That being said, I went to Mango Blog. I’ve been using it in our internal blog that Ben talked about a while back. There are a few things that I completely love. I love the rich text editor. I love the plugin architecture. I love the caching. I love the skinning. It’s fantastic. Those were my big motivators. I felt that even with the changes I made to the default Mango Blog install I could easily keep it up to date, whereas I felt extreme apprehension about updating BlogCFC because of all of the changes I made to code to make it work the way I wanted. To be clear, I had to tweak both, it’s just that my Mango tweaks were mostly in a skin, which won’t get changed by future updates.

Why git?

Because I want to be one of the cool kids who’s all like “Subversion, oh yeah I did that like 8 years ago, I feel so bad for you for using a mature technology that you can rely on.”

Okay maybe not. The big motivator for me for git was online/offline changes. I often work without a good network connection. Being able to work properly, with multiple check ins even without connectivity was killer. I also appreciate the fact that the metadata is in one place. This makes copying the project during a build feasible instead of a network intensive svn export. This reduced my build process for my site from 3 or so minutes to 30 seconds. This means I’m more likely to update more often.

So there you go. This was a very practical upgrade for me, I got a lot out of it, and I have a few reports that the site is even faster then it was before. So except for a little blog barfing on the aggregators it seemingly went well.