Newsletter: Female viagra cream Macular degeneration caused by viagra Phentermine online pharmacy Xanax online without a prescription Buy phentermine tablet Viagra canada prescription Vasotec Natural suppliments work like viagra Generic viagra no perscription needed Xanax master card Ionamin Phentermine success story Which is better cialis or levitra Black market viagra Phentermine free shipping 90 supply no delay Phentermine 15mg What does phentermine look like Pharmacy phentermine affiliate Phentermine prescriptions online physiphen online Effects of long term xanax use Buy viagra online cheap Mobic Invia nasal viagra Phentermine Phentermine hoodia Lodine Free viagra sample Diet pill xanax Mannitol Does phentermine work Does phentermine really work Xanax online without prescription Ethosuximide Cosopt Chlorprothixene Xanax for sale Free try viagra Cialis online sales Compare ionamin phentermine Indapamide Purchase fioricet Cheap viagra in the uk Side effects of xanax xr Xanax libido Efavirenz Klonopin Viagra dosages Singulair Ursodiol Cialis results Buy viagra canada Phentermine adipex Cod delivered phentermine Morphine Phentermine blue About phentermine Effects long side term xanax Desyrel Buy phentermine online same day delivery Buy cod online phentermine Flutamide Phentermine lose weight loss diet pills Leflunomide Lactulose Fenoldopam Viagra in woman Interstitial cystitis+xanax Buy viagra internet Fiorinal Pfizer viagra Viagra uk sales Klonopin xanax Phentermine usa pharmacy Viagra sale uk Viagra pharmacy Potassium Imuran Cefadroxil Viagra xenical Viagra versus levivia Impotence treatment viagra Phentermine fda Atacand Drug test tramadol Maxzide Phentermine 37 5mg and mastercard Akane soma Xanax detoxification Buy viagra on line Tramadol dosage How long does xanax stay in the system Xanax anxiety relief pills order here Phentermine guaranteed overnight shipping Tomorrow Hydrocodone ap ap Montelukast What is viagra Buy cheap soma Information phentermine shortage Phentermine uk suppliers Cheap viagra in uk Keflex Cheapest viagra uk Buy viagra pill online Generic viagra online pharmacy Mirtazapine Xanax zoloft Cheap viagra online prescription Phentermine no doctor Lopid Non prescription phentermine Relafen Prozac soma Tramadol drug interaction Cheap viagra canada Phentermine phendimetrazine Cialis online discount Methixene Tramadol use in dogs Non prescription viagra Trimethadione Generic viagra and generic drug Soma restaurant Viagra pill cutter Free prescription sample viagra Cialis levitra better Phentermine compare prices Chinese viagra dragon power Ordering 30mg phentermine Ambien sleeping pill Epivir Natural supplement for viagra Maximum dosage of phentermine Ambien side effects Generic cialis from india Meridia sibutramine Phentermine buy order Xanax dosage Pulmonary hypertension viagra Tramadol hcl acetaminotran par Generic india viagra Crystal meth and xanax Xanax valium Viagra cialis levitra comparison _cialis et levitra Cheapest phentermine Viagra lawsuit Hydrocodone apap Buy ambien online Clarinex Buy levivia viagra Cialis online discount Phentermine ups shipped Phentermine no prescription required Yohimbe and viagra Hyzaar Vicodin Avapro Buy online prescription viagra Online prescription viagra without Cialis pill Phentermine without doctor's approval Buy tramadol online without a prescription Pravastatin Buy viagra online get prescription 5 pdr Carvedilol Cialis compare levitra viagra Xanax addiction treatment Phentermine low price Buy cheapest online place viagra Buy fioricet Nicoumalone Tussionex Kanamycin Meridia vs phentermine Tramadol online Phentermine testimonials Robaxin Adipex diet phentermine pill 100 phentermine Lasix Xanax withdrawl message boards Albuterol Viagra versand Phentermine in jonesboro arkansas Cialis information Glucophage Effects from side viagra Buy phentermine online Research phentermine tolerance Xanax prescriptions Viagra pill cutter Ibuprofen Lowest phentermine Free viagra samples Phentermine no prescription free shipping Proguanil Fosinopril Congress viagra Cheap generic viagra online Buy discount phentermine Phentermine online stores Cheap phentermine cod Online viagra No perscription viagra Natural viagra alternatives Herbal viagra for women Cheapest fioricet Combivent Cheap 37 5 phentermine Nicotrol Allowed cialis tag viagra xhtml Generic phentermine Zileuton Tramadol online cheap Buy phentermine epharmacist Free viagra prescription Buclizine Female viagra alternative 180 tramadol Cheapest viagra Colon cleanse ambien Herbal viagra Buy locally viagra Natural viagra alternative How long between phentermine and meridia Buy cheap domain online atspace com xanax Cialis comparison levitra Lowest price phentermine Levivia viagra online Dangers of phentermine heart Doxepin Cialis versus viagra Online pharmacies with doctor consultation for viagra Ethopropazine Herbal viagra alternative review Discount generic viagra Drug laws ohio diet phentermine Yohimbe and viagra Phentermine adipex diet pill prescription Fioricet medication Low price viagra Prochlorperazine Hydrocodone prescription online _achetez le viagra de levivia Xanax online pharmacy Cheap viagra generic Accolate Phentermine on line Hyperalimentation Generic viagra cialis Effexor Diphenoxylate Adderall skin allegra skin xanax skin Tramadol 100mg Can i take xanax with zocor and procardia Phendimetrazine versus phentermine Benicar Viagra alternative herbal supplement Cialis doseage Phentermine referring report urls Discount cialis online Viagra generic drug Hetacillin Ciprofloxacin Aprotinin Natural viagra Tramadol cash on delivery Snorting xanax Tramadol sale Compare viagra prices Phentermine pharmacy online consultation Cialis info Xanax withdrawal Generic money order viagra Restoril Ritalin Phentermine cheapest Erectile dysfunction viagra Didrex vs phentermine Thioguanine Xanax and alcohol Belladonna Reserpine Tramadol hcl 50 mg tablet Phentermine ups shipped Santa claus viagra jokes Buy phentermine online payment method cod accepted Cheaper viagra levivia cyalis Isosorbide Online pharmacy phentermine xenical meridia How fast can you loss weight with phentermine Buy soma Phentermine worldwide shipment Phentermine 30 Viagra anxiety _cialis et levitra Canada online pharmacy viagra No perscription generic viagra Prescription for viagra 37 effects phentermine side Flonase Vicodin cod Mark martin viagra photo Addiction tramadol Potassium Comparisons on online viagra suppliers Leflunomide Black market phentermine Dangers of viagra Dangers of viagra Xanax no prescription Etodolac Best generic viagra Chromium Loss phentermine story success weight Phentermine pill Viagra story Pentasa Free ambien Phentermine withdrawal symptoms Buy viagra line Hydrocodone cod only Adipex Nevirapine Reglan Cheap viagra order online Cheap tramadol cod free fedex Clomipramine Buying phentermine without prescription Viagra substitute Drug testing xanax Phentermine 15 mg How long xanax stays in system Viagra overnight Cialis reviews Amoxicillin Phentermine us pharmacy online consultation I need to find cheap phentermine delivered to fl Generic sample viagra Tramadol pharmacy Phentermine pharmacies online Viagra dangers Generic viagra fast shipping Non prescription phentermine Phentermine for sale Xanax drug interactions Purchase xanax Allopurinol Methoxsalen Where to buy viagra online Lowest price phentermine Ordering viagra Buy xanax online Xanax in urine Online pharmacy phentermine xenical meridia Xanax tablet Description of meridia Vicodin picture Budesonide Doxylamine Berman sister female viagra study Sell viagra Rated online pharmacies for phentermine Xanax no prescription overnight delivery Xanax drug tests Xanax description How long does viagra last Phentermine guaranteed overnight shipping Scopolamine Piperazine Ambien Cialis soft Free shipping with phentermine order Generic viagra uk Hydrocodone withdrawal symptom Canada online pharmacy viagra Get viagra Drug interactions tramadol elavil Ups cod phentermine Canada viagra 180 tablet tramadol Phentermine and glucophage Clarithromycin Generic cialis uk Buy viagra now Tramadol online discount cheap Phentermine order Xanax online without a prescription Renova Cheapest free shipping phentermine Buy tramadol online Order tramadol cod Digoxin Female use viagra Blue xanax Ethinamate Diprolene Buy cialis soft tabs Soma gallery Liqued viagra Viagra cream for woman Methylergonovine Cheap pharmacy viagra Xanax side effect Natural over counter just like viagra stores Taking phentermine Herbal phentermine review Ambien coupon cr Diet drug loss phentermine weight Viagra online order guide How do i stop taking phentermine Anxiety disorder xanax 37 effects phentermine side Phentermine canadian pharmacy Acetaminophen fioricet Diet phentermine Klonopin vs xanax dosage Phentermine no prescription required Sulfasalazine Xanax federal express Xanax doseage Get viagra drug online Pain medication tramadol Lortab and xanax without a prescription Xanax alcohol Miconazole Podofilox Phentermine depression Atorvastatin Lisinopril versus viagra Phentermine blogging Buy generic phentermine Cheap hydrocodone Tramadol 180 What is xanax used for Buy xanax without a prescription Viagra prescriptions online Viagra online store Cheap online order viagra Cialis drug impotence Buy cheap soma Levitra vs cialis Phentermine online pay with mastercard Order phentermine cod online Phentermine 15 mgs Xanax uses Phentermine pharmacies Free viagra Low natural resources for the drug phentermine Tramadol hcl 50mg Mesoridazine Methamphetamine Phentermine in stock ready to ship saturday delivery Generic viagra lowest prices Cialis day next Phentermine diet Otc viagra Lithium Lowest price viagra Detection drug in phentermine screen urine Phentermine 37 5 M357 vicodin Viagra alternative and woman Nadolol Klonopin vs xanax dosage Dopamine Viagra canada Generic cialis softtabs Viagra drug interaction Information loss phentermine weight Purchase tramadol online Viagra samples Adipexdrug addiction order phentermine online Online doctors perscriptions xanax steroids Viagra buy viagra Buy cialis generic Botox Nolvadex Cheap price on phentermine Nizatidine 5 no perscription Elidel Levofloxacin Acetaminophen e hydrocodone Order phentermine by for saturday delivery Mephentermine 5mg cheap 30mg phentermine yellow Iodamide Viagra and blindness Buy cialis online Xanax shipped cod Phentermine forums and chats Prozac interact xanax Phentermine shortage Cheap tramadol prescriptions online Order viagra now Cialis vs viagra How to get a xanax prescription Buy phentermine without prescription Ambien cr dosage Cialis mexico Herbal viagra uk Lexapro Lowest price phentermine with free shipping Impotence picture pill viagra Is tramadol a narcotic Phentermine interactions Atrovent Phentermine prescriptions online Buy xanax Stopping xanax Natural viagra free samples Phentermine np with hoodia Cialis drug Adipex diet phentermine pill Letrozole Order fioricet online Viagra cheap Phentermine 180 Viagra pills uk Overnight viagra Vaccine Buy cheap online uk viagra Buying xanax Ambien Permax Buy xanax cod Procyclidine Cod overnight tramadol Glyburide Bromodiphenhydramine Nasonex Buy fioricet Order hydrocodone online Viagra lawsuits Discount xanax Digoxin Effect viagra Amlodipine Hydrocodone bitartrate Viagra cialis Herbal viagra for woman Generic viagra pill Fast delivery phentermine Xanax online no prescription Between difference levivia viagra Antipyrine Prazosin Lowest cost generic viagra Fluconazole Dipyridamole Phentermine sales Phentermine generic Phentermine in stock Blue 30 mg 90 free shipping phentermine pharmacy 180 tablet tramadol Viagra use in women Order xanax no prescription Buying xanax Mail order viagra online Fioricet Cheap fioricet Zyrtec Cheapest phentermine pill Overnight phentermine no prescription Luxury hotel rome xanax description Compare viagra to cialis Crestor Alprazolam Vicodin hp Pfizer xanax information Ordering xanax online Viagra shelf life Order phentermine cod online Atorvastatin Mestranol Phentermine chemical enhancement Viagra cheap prescription Buy viagra pill online Trimethoprim Cheap viagra in uk Tramadol hydrochloride overdose Cialis price compare Clonidine Detox hgh phentermine quit smoking xenical Canadian viagra 1 loss phentermine pill weight Online consultation phentermine Xanax and depression Nalorphine Lodine Pharmacy phentermine sister Order ambien online Xanax versus klonopin for chronic anxiety Viagra testimonials Xanax indications Thiabendazole Buy viagra Generic cialis price Ephedrine Canada generic viagra Felodipine Accutane Propofol Diazepam No prescription phentermine free shipping Xanax mg Praziquantel Phentermine hcl side effects Viagra story Cheap xanax James thompson viagra lawsuit Natural viagra free samples Order cialis Best phentermine pharmacies compare links Epirubicin Warfarin Natural viagra type alternatives

Remove Empty List Items

Today, I discovered that empty list items were causing a query to bomb with the helpful “You have an error in your SQL syntax” message. The SQL attempting to execute was SELECT name, group_id FROM riders WHERE group_id IN (11,,,,,,,,,,,,), where the value 11,,,,,,,,,,,, is generated from a variable called groupidlist.

There are a few ways to deal with this situation. My first instinct was to remove the empty list items from groupidlist. I prefer to clean things up as early as possible, in case this value might be stored or used again somewhere else down the line. I can easily remove the empty items from the list by performing the following:

<cfset groupidlist = arrayToList(listToArray(groupidlist)) />

The listToArray function removes empty list items as a bonus.

The other option, which should be performed as well, is to use cfqueryparam in my SQL statement.

SELECT name, group_id 
FROM riders
WHERE group_id IN (<cfqueryparam cfsqltype="CF_SQL_INTEGER" list="Yes" separator="," value="#groupidlist#" />)

Escaping Characters in JSON

The following characters must be escaped in JSON strings:

  • Quotation mark (”)
  • Reverse solidus (\)
  • Control characters, such as Return and Line feed. (U+0000 through U+001F)

Quotation marks and reverse solidus (backslashes) are easily escaped by inserting a reverse solidus before the offending character. For example:

"I enjoyed the book "American Gods"" -> "I enjoyed the book \"American Gods\""
"The file is located at "c:\documents\mydocument.txt"" -> "The file is located at "c:\\documents\\mydocument.txt"

As for control characters, these can be escaped by following this pattern:

"U+0001" -> "\u0001"

SQL Insert Statements

There are a few different ways of inserting new and existing data into a database table using SQL. Here are a few examples:

INSERT INTO table_name
VALUES (value1, value2, value3, ...)

INSERT INTO table_name (column_1, column_2 ...)
VALUES (value1, value2 ...)

The simplest insert statement, of course, is used when you just want to insert one record and be done with it. If you do not specify a column list as in the second example, you must specify values for all the columns in the table (minus auto-incrementing columns).

SELECT column1, ... [or *]
INTO new_table_name [IN external_database_name]
FROM table_name
[LEFT JOIN join_table_name
ON table_name.column1 = join_table_name.column1
WHERE table_name.col1 = 'value']

Usually, this type of insert is used when making a quick backup table. The structure of the source table, along with the data, is copied into the new table.

INSERT INTO table_name (column1, column2, column3, ...)
SELECT column1, column2, ...
FROM source_table_name
[WHERE column1 = 'value']

A sub-select allows you to insert rows from one table into another already existing table.

XSL: Applying a Dynamically Named Template

I was messing around with XSL templates today in an attempt to clean up my transformations and to make things more modular and maintainable. The apply-templates directive is pretty awesome, but it wasn’t long before I hit my first snag.

I pass a “primarySection” parameter into the XSL that essentially drives the initial order of the sections. I need to display the section that matches this parameter first, followed by the rest of the sections in a specific order.

First, I apply the dynamically named template:

<xsl:apply-templates select="*[name()=$primarySection]" />

Then, I apply all remaining templates in order:

<xsl:apply-templates select="*[name()='Section1' and name()!=$primarySection]" />
<xsl:apply-templates select="*[name()='Section2' and name()!=$primarySection]" />
<xsl:apply-templates select="*[name()='Section3' and name()!=$primarySection]" />
<xsl:apply-templates select="*[name()='Section4' and name()!=$primarySection]" />
<xsl:apply-templates select="*[name()='Section5' and name()!=$primarySection]" />
<xsl:apply-templates select="*[name()='Section6' and name()!=$primarySection]" />

I’m not very happy with the application of the remaining templates. Is there a better way to do this?

ColdFusion, XML, and Special Characters

Sometimes it’s impossible to control the content of incoming XML. We can ask our customers to please leave out the junk, but we can’t expect them to be able to tell what plays nice in HTML and what’s just dirty. When creating and modifying content, a typical process includes pasting text straight from word processing software, such as Microsoft Word.

There are a number of special characters inserted by Microsoft Word that do not translate well to HTML. For example (my favorites) are the grave ( ` ) and acute ( ´ ) accents, the double grave ( ̏ ) and double acute accents ( ˝ ), and the emdash (—).

There are some very handy resources for converting these special characters using ColdFusion. Check out the safetext() UDF for stripping out lots of stuff, not just the characters mentioned above. Raymond Camden “borrows” from the safetext() UDF to make things simple with the following code:

<cfset goodText=replaceList(badText, chr(8216) & "," &
chr(8217) & "," & chr(8220) & "," & chr(8221) & "," & chr(8212) & "," &
chr(8213) & "," & chr(8230),"',',"","",--,--,...")>

First, I’ll use ColdFusion to read in the XML document, protecting these special characters from being converted incorrectly. If I use the XMLParse() function and pass in a file path as the first parameter, ColdFusion will convert special characters to gobbley-gook, and then I won’t be able to use the conversion code described above. So I have to first read in the file, taking advantage of the charset attribute of the cffile tag, and then run XMLParse() on the file content.

<cffile action="read" file="c:/path/to/my/xml/document.xml" variable="myXMLText" charset="utf-8" />
<cfset myXMLDoc = XMLParse(myXMLText) />

Now I can extract my XML text and attribute nodes, making sure to run the result through the cleansing process described above. The last thing I want is dirty HTML.

Ajax Possibilities

Almost anything accomplished on the web with a standard GET or POST request resulting in a web page refresh can be done using Ajax. All links on a page could pull back and display new information on a web page instead of doing a typical web page refresh. Bits of content can be replaced or added extremely quickly. Information can be saved to a database without interrupting the flow of the application.

Examples
  1. Database record pagination: When a web application returns more than 20 records to a web page, it is appropriate to create links to scroll through the data. These links can call an Ajax request to retrieve and display the next or previous records from the database.
  2. Edit in place: Edit in place is a popular Ajax-enabled feature in Web 2.0 sites. Clicking what appears to be just text on a web page immediately shows the text in an input box, ready to edit and save. See this demo for an example.
  3. Ajax tabs: When the user clicks an Ajax powered tab, the content for the tab is retrieved and displayed by Ajax.
  4. Star ratings: Many sites use an Ajax powered star rating feature. Blank stars are provided to the user to rate a book, movie, restaurant, or other item. The user clicks the star that represents their opinion about the item. The result is immediately sent to the server and saved by the database, but the user does not experience any interruption in their browsing experience.

The main objective of using Ajax is to no longer effect the user experience with the request/refresh nature of the web browser. The user does not lose their place on your web site or on your web page. Their experience becomes more smooth, and as a result, more pleasurable.

Handling Data Returned from an Ajax Request

An Ajax request returns text and is called the “response”. The Ajax response takes one of the following formats: plain text, HTML, XML, or JSON and is processed by JavaScript. Each format may be handled in a slightly different way. We’ll explore each type.

Plain Text
Handling plain text may be the easiest of all the types. Mainly, plain text is used for a straight output to the browser.

document.getElementById("myText").innerHTML = myAjaxRequest.responseText;

HTML
Handling HTML is identical to handling plain text. HTML returned from an Ajax request will be set to appear on the web page or replace existing content.

document.getElementById("myHTML").innerHTML = myAjaxRequest.responseText;

XML
The XML format is the original and default output format of an Ajax request. In order to handle this type of data, we will use Javascript to parse the XML. We use some of the same methods to parse XML as we would to read the document object model (DOM) of the web page.

// get an array of player elements from the responseXML
var players = myAjaxRequest.responseXML.getElementsByTagName('player');
// loop over the array
for (var i=0;i<players.length;i++) {
  // create a player container div
  var x = document.createElement('div');
  // create an h2 element 
  var y = document.createElement('h2'); 
  // display the player name in the h2 element
  y.appendChild(document.createTextNode(getNodeValue(players[i],'name')));
  // append the h2 element (name) to the player div
  x.appendChild(y); 
  // display the player div in the myXML identified div on the web page
  document.getElementById('myXML').appendChild(x);
}

JSON
JSON stands for JavaScript Object Notation. The JSON format is a string that can be interpreted as a JavaScript object. In order to process this response, you use JavaScript’s eval() method to convert the string into a real JavaScript object, which you can then read into new or existing elements in the web page. This is similar to the way XML is parsed and displayed, but there are minor differences in the way the text is extracted from the response.

// get an array of player elements from the response
var data = eval('(' + myAjaxRequest.responseText + ')');
// loop over the array
for (var i=0;i<data.mariners.length;i++) {
  // create a player container div
  var x = document.createElement('div');
  // assign a css class to the div
  x.className = 'player';
  // create an h2 element
  var y = document.createElement('h2'); 
  // display the player name in the h2 element
  y.appendChild(document.createTextNode(data.mariners[i].player.name));
  // append the h2 element (name) to the player div
  x.appendChild(y);
  // display the player div in the myJSON identified div on the web page
  document.getElementById('myJSON').appendChild(x);
}

To Know: Document Object Model
Studying the Document Object Model will make parsing incoming XML much easier. See Tellme for a full Document Object Model reference.

Other References
AJAX:Getting Started at the mozilla developer center
The AJAX response: XML, HTML, or JSON? at QuirksBlog

Display a radio button default based on the value in a database

A radio button value can be defaulted as selected by inserting “checked” into the input tag.

<input type="radio" name="btn1" value="yes" checked>

The “checked” property can be inserted into the input tag based on records stored in a database. Here are two examples:

Example 1 (Yes/No):

A database column can store a yes/no, true/false, or 0/1 value. You’ll have to check the value in the database then output the “checked” property accordingly.

<cfif myQuery.yesnofield is "Yes">
	<input type="radio" name="YesOrNo" value="Yes" checked /> Yes
<cfelse>
	<input type="radio" name="YesOrNo" value="No" /> No
</cfif>

Example 2 (Radio buttons as select field):

Instead of using a standard select input field in your form, you may want to use radio buttons. In the same way that you would set the “select” property of a value tag based on database values, you can also set the “checked” property in a list of check boxes.

<cfoutput query="myinformation">
	Name: <input type="name" name="myName" value="myinformation.name" />
	<cfloop query="favoriteColors">
		<cfif myinformation.favoriteColor is favoriteColors.favoriteColor>
			<cfset radioChecked = "checked" />
		<cfelse>
			<cfset radioChecked = "" />
		</cfif>
		<input type="radio" name="favoriteColor" value="#favoriteColors.favoriteColor#" #radioChecked# />
	</cfloop>
</cfoutput>

I am victorious in the ColdFusion Release Date Contest

ColdFusion 8 Release Date Contest Over - Koen Brenner Is Victorious

A huge thanks to Ben Nadel for hosting the ColdFusion 8 Release Date Contest. Amazingly, I was able to stretch my psychic muscles just far enough to walk off with the prize. Congratulations to Adobe for releasing the long-awaited ColdFusion 8. I can’t wait to get my hands dirty.

Plug in to the ColdFusion Community

I spent the last few years as a development manager, barely keeping up with the meetings, documentation, and system research necessary for my team to be successful. I didn’t have a lot of time to be involved or even to pay very close attention to the ColdFusion community. I must say I missed it, to say the least.

I feel real lucky to get to be a developer again. I certainly enjoyed managing an awesome group of programmers, but it feels better to me to be the one in the saddle, rather than the one leading the horse.

My first challenge as a ColdFusion developer was to rediscover the community and plug myself back in. This is a collection of resources I have found to be invaluable for bringing me back up to speed and for staying that way.

Blogs

There are some amazing bloggers out there, constantly sharing a wealth of information with the community. The current blogs I have found are listed in my Blogroll in the sidebar, or you can visit my shared Google Reader ColdFusion tag, or you can download my OPML (Outline Processor Markup Language) file that can be imported into your favorite reader. If you have discovered a ColdFusion blog I do not have listed, please let me know.

Mailing Lists

It seems to me that the most popular of the mailing lists is CF-Talk, hosted by House of Fusion. There is a steady flow of questions and solutions bouncing around on this list. I’ve learned a ton just by browsing the messages.

Magazines

Although it may be practically impossible to hack your way through the barrage of obnoxious advertising on the Sys-con website, I still believe that the ColdFusion Developer’s Journal is worth it.

CFUGs

Mostly I just like to say CFUG out loud. Also for years now, local ColdFusion User Group meetings have brought together isolated pockets of ColdFusion developers to discuss current methodologies and to experience practical and high-level presentations that inspire and grow the community from within. If there is a User Group near you, I would highly encourage you to attend a meeting.

………

This, of course, is only the beginning. There are many forums, framework-specific websites, tutorial/learning sites, open source repositories, and conferences to discover. I wouldn’t want to take all the fun out of it.