Viewing by month: May 2007

May 31 2007

Model-Glue 2.0 (Unity): Release at CFUnited!

Well, I guess this sort of binds me to finishing it. As part of his new role as Community Manager for Model-Glue, Ray's asked me to commit to a release date for Model-Glue 2.0, a.k.a., "Unity".

So, here goes: the .zip of Model-Glue 2.0 will be available when CFUnited starts.

I can't guarantee all the open tickets will be closed, or that the documentation will be 100%, but I've set aside a large amount of time (which I won't be getting paid for!) in June to get this done.

3 comments - Posted by Joe Rinehart at 4:26 PM - Categories: Model-Glue

May 31 2007

ColdFusion 8 + Hibernate: Woot.

I've been toying for a while with writing business models in Java with Hibernate providing ORM capability, and using ColdFusion as enterprise "glue" to create a service tier that deals in transfer / value objects consumed by Flex, Model-Glue apps, and, well, whatever else understands basic data structures and. Largely, my reason for using Java for the model has a lot to do with Hibernate: while Transfer and Reactor both work well, neither has the backing of Hibernate.

I also think this lets ColdFusion shine at what it's meant to do: provide a great language for "glueing" together everything from service tiers to chart generation.

With ColdFusion 8, this just got a lot easier. If you're up on using Hibernate, this is all it takes to get rolling in ColdFusion 8:

<!---
Load Hibernate with a given configuration file, add JARs contains classes and mappings, and list everything all Event instances.
--->


<cfset cfgFile = createObject("java", "java.io.File").init(expandPath("hibernate.cfg.xml")) />
<cfset hibConfig = createObject("java", "org.hibernate.cfg.Configuration").init() />
<cfset mappingFile = createObject("java", "java.io.File").init("relax-contact-manager.jar") />

<cfset hibConfig.configure(cfgFile) />
<cfset hibConfig.addJar(mappingFile) />

<cfset sessionFactory = hibConfig.buildSessionFactory() />

<cfset hibSession = sessionFactory.getCurrentSession() />

<cfset hibSession.beginTransaction() />

<cfset result = hibSession.createQuery("from Event").list() />

<cfoutput>
   <cfloop array="#result#" index="i">
      #i.getId()# - #i.getTitle()# - #i.getDate()#<br />
   </cfloop>
</cfoutput>

<cfset hibSession.getTransaction().commit() />

<cfset sessionFactory.close() />

If you're not up to speed with Hibernate, it's not hard to learn. One thing I'll be looking at doing over the next few months is writing a framework that'll automarshall graphs of POJOs to generated transfer object CFCs (and probably generate the AS3 classes to boot!).

11 comments - Posted by Joe Rinehart at 3:54 PM - Categories: ColdFusion MX

May 22 2007

Firemoss - Now hiring! (Sort of.)

We're winding down a five-month project, and I'm entering negotiations for more work. It looks like expansion is on the horizon, but we're not quite ready for fulltime employees. I see subcontracting as win-win: we don't need to manage fulltime employees, and we can pay you more as a subcontractor!

To that end, I'm looking to begin ongoing, contract-based relationships with other developers. If you're:

  • A ColdFusion developer able to spend 10-40 hours a week of time working on freelance gigs
  • At least familiar with ColdSpring, Model-Glue, Mach-ii, Reactor, and/or Transfer
  • Experienced or interested in Flex 2 development
  • Always looking for smarter ways to get a job done
  • Okay with working 100% remotely (who isn't?)
  • Interested in making a pretty sweet hourly rate

...please send your resume, contact information, and what sort of hourly rate you'd need to jobs@firemoss.com.

If you have any questions you'd like publicly answered, feel free to leave a comment. If you've got private questions, please e-mail jobs@firemoss.com.

2 comments - Posted by Joe Rinehart at 10:38 AM - Categories: Firemoss

May 21 2007

Brian Kotek on ColdSpring Best Practices

It might be too broad of a title, but I couldn't think of anything better. If you're a fan of dependency injection / inversion of control, Brian's put up a good (and short, to boot) post on using its full potential to eliminate dependencies on concrete types, favoring interfaces.

His example points out the difference between using ColdSpring to compose a service object with another factory (such as Reactor) instead of using ColdSpring's factory-bean to compose your service object with an interface that would be implemented by a Reactor-generated object.

0 comments - Posted by Joe Rinehart at 3:26 PM - Categories: Best Practices

May 17 2007

Great Stock Market Day: The Good Guys Win!

Not that I'm completely biased or anything, but I looked at my stock ticker today, and the good guys were all winning! Had to take a screenshot:

Note: I do _not_ own any Microsoft stock.

4 comments - Posted by Joe Rinehart at 2:02 PM - Categories: Off Topic

May 14 2007

Model-Glue List: No more Topica!

The Model-Glue e-mail list is finally off of the dreaded Topica engine. Thanks to Ray, it's been moved over to Google Groups a http://groups.google.com/group/model-glue, and the Model-Glue homepage now links to it.

I guess our next task is a real Model-Glue.com!

2 comments - Posted by Joe Rinehart at 3:54 PM - Categories: Model-Glue

May 11 2007

A "Miraculous" Apollo App

Whenever I think about retirement, etc., I wind up in Excel to do simple compound interest calculations because I love visualizing the "miracle" of compound interest.

Today, during lunch, I whipped up an Apollo app that lets me keep track of investments. I can enter an investment, rate of return, and annual contribution, and it shows value over time for each on a chart along with a total portfolio value. All data is saved to the filesystem, so it's right where I left it when I come back.

If you want to play with it, it's available for download at http://www.firemoss.com/demos/apollo/compoundInterest/compoundInterest.zip.

Obligatory Screenshot:

4 comments - Posted by Joe Rinehart at 2:51 PM - Categories: