Blog

    Happenings and acts of geekery.

Migrating from Farcry 3x to Farcry 4

There is no automated updater to take you from Farcry 3 to Farcry 4. No problem!

Ok. so that was a bit of an overconfident assertion. but in our case (5 Farcry sites to consider. 3 of which we're moving) it really was simple. None of these sites contained any custom objects which undoubtedly would have made things more difficult.

So far I have migrated one over and it's running great. I like the revised admin - it's cleaner and feels much faster too.

All I needed to know was contained in this comment by Michael Sammut. Basically. run the 4.0 installer. migrate your data over. merge your templates with the 4.0 deployment code (shout out to BeyondCompare for that step). tweak the display templates (bunch of annoying path changes. but they do make sense). then make sure the COAPI checks out completely. I really didn't run in to trouble anywhere. Start to finish was probably just over an hour for one site.

Next one to move is countermarch.com. That'll be a treat. I'm sure. Haven't been as diligent as I should have been about keeping our www directory clean and orderly :-/

Anyway. just wanted to share. Didn't see a need to reinvent the wheel by retyping step-by-step directions that worked perfectly. Thanks. Michael!

CounterMarch Site Redesign

Have I mentioned before how easy it is to re-skin a Farcry CMS website?

Really simple. Here was the process:

  • Design template in plain old HTML
  • Create new files in dmHTML for each of your display methods (we have a Home and Inner page layout)
  • Take chunks out of your new template and drop them in the two new templates (feel free to create new header and footer include files too)
  • Run a batch update on your dmHTML table to use the new templates instead of the old ones
  • If you use any dmInclude objects. repeat the last 3 steps for the dmIncludes folder/table too
  • Just for good measure run an ?updateApp=1 request to refresh the site. If you're doing a lot of caching. go in to the Farcry admin and flush the cache too.

That's it! I'm still working my way through a complete content rewrite and homepage spotlight. All of the supporting pages including the blog have been moved over to the new layout.

I'll post more on the building of the site and the impending move to Farcry 4 once it's all done. Had to clean up first!

XStandard RTE for FarCry

Great news from the Daemonites regarding FarCry tonight.

The announcement regarding the availability of XStandard for FarCry was posted on their blog this evening. XStandard is quite possibly the best standards-compliant rich text editor control available right now. Most webpros know that there are lots of RTE controls that generate. shall we say. "less than optimal" code which can cause your carefully crafted compliant website design to suddenly fail validation.

XStandard is great...highly recommend you take a look at it next chance you get.

Farcry 3: Two sites, one domain

Worked on an interesting little project last night with Farcry. It's been a while since I've written about it at all. so I figured I was overdue.

Lehigh's alumni association runs two major reunion events each year. There's a "traditional" reunion in the springtime that is for anyone who graduated more than 10 years ago. In the fall. there's an event called Young Alumni Reunion that I have blogged about many times before as the site we use for marketing is powered by Farcry.

This year. we rebuilt the traditional reunion site in Farcry and strapped it to a homegrown reservation system (Ajaxy goodness. Mach-ii badness...so nice) replacing a system that another consulting company had built about 6 years ago in ASP. The plan was to get both reunions running off of a common system for both marketing and reservations so the staff could easily work both events without relearning the tech systems. Made a lot of sense!

The thing is - both events have a very different look. feel. message. tone. approach...all that stuff. Also. much of the content doesn't change terribly much from year to year for each event. The greatest part of this is that the reunions don't overlap at all. so we can get away with using one domain for the entire thing. I have a little hangup about clean URLs that I can't seem to shake. so putting each event in a separate "folder" wasn't going to be acceptable.

I needed to use one domain for two separate sites (and therefore Farcry applications) that would transition seamlessly and without intervention twice a year. Seems simple enough - tweak a couple of files and it should work. right? Yep!

The two separate Farcry sites (farcry_reunion and farcry_yar) have their own independent databases. I mapped the site root in IIS to the www folder under farcry_reunion and moved any graphical/js/css assets from the www folder of farcry_yar to the reunion www folder. Cool - so now everything web-accessible is in one place. Not really ideal for ripping things apart. but since a) I kept a backup and b) the assets are very. very different it's not a major concern. Now to get the sites to switch over without manual intervention. we tweak a few files:

In apps.cfm. we define July 1 as the transition date. On January 1. the traditional reunion site will kick in again.

<cfscript>
stApps = structNew();
if(datepart('m'. now()) lt 7) {
stApps['***site domain name***'] = 'farcry_reunion';
} else {
stApps['***site domain name***'] = 'farcry_yar';
}
</cfscript>

In the Application.cfm file under farcry_reunion (since that's the "primary" www folder now) we have to set the application name to the right farcry app name depending on the time of year:

<cfif datepart('m'. now()) lt 7>
<cfset appname = "farcry_reunion">
<cfelse>
<cfset appname = "farcry_yar">
</cfif>
<cfapplication name="#appname#" sessionmanagement="Yes" sessiontimeout="#createTimeSpan(0.1.0.0)#">

In that same file you have to make sure the right app init file is loaded. I replaced ".." with "/farcry/#appname#" in the following line of code:

<!--- Project Specific Initialisation --->
<cfinclude template="/farcry/#appname#/config/_applicationInit.cfm">

That should be sufficient to get the site up and running (after a quick ?updateApp=1). To get the administrator running. I had to comment out the guts of the farcry_yar/www/Application.cfm file and replace it with a cfinclude of farcry_reunion/www/Application.cfm.

Most people will never need to do something this loony. I did it because I wanted to create a hands-off transition from one reunion to the next (basically removing some busy-work from my plate). Ping me if there's anything you'd like to know or have any comments on - remember. if you have a better way. it has to be a hands-off transition!

Come to think of it...we could have written some code to make IIS remap the domain's home folder to farcry_yar/www at the right time of year too...that might have been much simpler!

New Farcry Site: North East Alumni Relations

The NEAR group is an informal consortium of alumni relations directors from 13 small colleges in the northeast United States. To better facilitate communications among the member institutions. we've launched a suite of services for their use on their new website. http://www.nearweb.org/

ARAMP

Our Alumni Relations Assessment and Metrics Program platform was the driver for the whole project. Created for our friends in PCUAD. ARAMP is a survey and data analysis toolkit used to assess the performance of an alumni association within the context of a community of practice. In essence. comparing you to your peers (in this case NEAR) on a set of agreed-upon data points and evaluating your progress based on a scoring/weighting schema. Helpful features include the ability to send email to any peer within the system. view commentary on successful programs. run customized reports and build a custom dashboards of selected data points.

The system was implemented using a healthy combination of Flex and ColdFusion (word to the geeks: Remote Objects rock!). Performance is greatly improved over PCUAD's version of ARAMP (10x...no lie) as is the user experience. The decision to re-implement ARAMP in Flex really was a no-brainer. We have the ability to do better data validation. richer charts and graphs and build a cleaner UI using Flex than with CF/Ajax/CSS/JS. We'll be rolling this new version out to PCUAD later this spring and other communities of practice as the opportunity arises.

Farcry

No organization seems to be truly complete without a functional web presence. We implemented one for them powered by the popular. open-source Farcry CMS. They are in the process of dressing up the site content following a brief web conference/training session. Uptake has been swift. and it's hoped that the CMS will minimize the amount of time required to update the site.

Galleon Forums

Naturally. not all conversation is structured or belongs within ARAMP. so we rolled out the web forum software that Ray Camden has released for community use. We've worked with Galleon before and like it an awful lot. so thanks. Ray! Now you can count "advancing the profession of alumni relations" among your lifetime accomplishments.

One neat feature of note: Dayne devised a nice bit of code that implements a single sign-on (single session) between ARAMP and Galleon. reducing an irritating possible double login effect that could have happened in the transition from the Flex to the CF environment. The users of the system will never know it's there. which was exactly our intent!

We were able to implement a LOT of functionality using open source software. leaving most of our time to work on the Flex/ARAMP implementation. The combination is very powerful and I hope to see us use it more over time.

So if you're curious or want to know more. drop me a note on our site contact form or AIM:scrittler. I'll be happy to demo the system(s) to you!

New Farcry Site: Lehigh Reunion

We launched a new Farcry site this week!

Lehigh Reunion - Linked by Tradition

All of the front end content is managed by Farcry. Once again. we were able to train the content editors in about 15 minutes and they've been happily tweaking and changing stuff ever since. The "News" item is a big help to them - using the categorization features of Farcry. they are able to target specific news articles to an individual class page. the home page. or dump it in the general pool of news items. It's working great...now if only we had more content! One more shout out to the guys at Daemon for building a simple. powerful CMS with GREAT reporting tools!!

The registration system (go ahead..take a few steps in to it) is a separate Mach-ii application with a friendly dose of cfAjax baked in for user-friendliness. There are simply too many events involved in reunion weekend to present just one big list (even broken down by day). so we decided to apply tags to the individual events. The tags are created to classify the event's nature as well as the reunion class(es) it applies to. Naturally. we default the selection of events to correspond to the class year(s) of the registrant and any guests.

The back end management is done through our intranet infrastructure (also all Mach-ii) using another hefty dose of cfAJAX. I might have mentioned our event management system before. but this is the third generation of that codebase and it supports more options than ever before - discounts (apparently nobody pays face value anymore). more flexible activity options (so everybody gets the right size t-shirt). and multiple payment options. We also bulked up the reporting interface quite a bit.

We're happy with it - the client is now hosting ALL of their reunion and event websites in-house. Our traditional sample Farcry site (the Young Alumni Reunion one) will move into this new reunion framework in time for a July launch as well. Training cost drops just about as close to zero as it can be! Score one for the programmers.

CFUNITED call for speakers

One week left to post your requests for topics at CFUNITED 2007!

I put my name in the hat to talk about Farcry 4 - if there are other topics you want to hear about (or preferably speak on). go sign up now.

FC4 will be a great demo - I'm already thinking of doing the entire thing as an install -> configure -> deploy show. Much less emphasis on the Powerpoint (not that there was a ton last year). People always like to see the actual process instead of something canned or dissimilar to the experience they'll have using it.

Of course. all of that is dependent on Michael accepting my proposal to speak!

Farcry 4.0 Beta Released

Jeff Coughlin posted this morning about the release of the latest beta of Farcry 4 (codename Gonzalez).

As soon as I get my latest production Farcry sites up and deployed I'll get the beta bits and start playing around with them. Read Jeff's post to see more about the great features the Farcry community team has developed for this release! It's a great one!

YAR is done - another Farcry success

Not that the site was terribly heavily loaded. but Farcry worked out really. really well again. Our first Farcry site (http://www.celebratelehigh.com) is now on it's third design and it's likely to get a 4th new look next year. It's the information and registration site for Lehigh University's Young Alumni Reunion. Anyone who's seen my posts about Farcry before have undoubtedly clicked through many times already...thanks for your visits ;-)

Unique daily sessions never exceeded about 700. but the bigger win was that the event organizers had simple. easy control over site content whenever they wanted to make updates. Several times a week they went in there to update stuff and I never got a single phone call. It just works! The stats are fairly basic but just enough so that the folks who want to know those sorts of things can get their questions answered.

As for the reunion itself. it ended around 2AM today. Had a bit of sleeping to catch up on :-) We had a GREAT time! BTW. if you ever need to find a great party band I can't recommend "Lost in Paris" enough. They brought the house down last night with a closing set that was beyond belief. EVERYBODY came in to the main room from the side events to get in on the dancing and singing. Rocked big time.

Word of advice: the last two years we've sent out an e-newsletter to all attendees on Thursday before the reunion informing them of the weekend's weather forecast. bus schedule. phone numbers for a cab (just in case!) and a recap of the "lesser known" events. Friends were telling me that they printed out the email and kept it with them all weekend - they found it very convenient. but liked the weather forecast the best. Little things. I suppose. do count for a lot so i'll have to drop that on the homepage as well. Could do something really nice in the swf...hmmm....

Scope sync in a cluster

Perennial problem...trying to solve it here without doing TOO much funky work.

Here's the deal:

We're working on a Farcry project. It's going to be deployed to a cluster. Two servers with 2 instances of CF on each. They are cross-paired.

Server1-instance1 is paired with server2-instance4. Server1-instance2 is paired with server2-instance3.

Farcry uses the application scope to cache up a lot of goodies to make the system run faster. This is perfectly acceptable and desirable. Problem is. when the content of the site is updated...how do we force a refresh of the cache in each instance?

First thought was to use an event gateway. Use an extended stored procedure in the database (we're using SQL Server 2005) to make a call to an event gateway that would "do stuff".

Our next move was to look at each other and say "we've never tried that before" followed shortly thereafter by "does that make any sense to push that logic down into the database?"

The next thought was to put a hook in to the fourq database interface code to watch for updates to certain content types. The ones we were most concerned about were refFriendlyURL and config tables. When we detect a change. we'll fire off a cfc method to update a new table in the database with one row per instance containing a bit field ("dirtyFlag").

We'll make a change to Application.cfm in the root of the Farcry site to always do a quick check of that table. Grab the instance running the current request. check the table row for that instance. If the flag is set. update application scope. set the flag back to 0. and then continue on.

Just re-read all that and realized a database trigger on those tables could just as easily set the dirty flags too. Hmph.

Anyone see any issues with this approach? The application scope. if dirty. is updated by each instance as each instance is hit with a request immediately after being set as dirty. Seems efficient enough to me!

More Entries

About the blog