Subscribe: Jeff Coughlin's ColdFusion Blog
Added By: Feedage Forager Feedage Grade B rated
Language: English
bit  coldfusion  data  demo  download  farcry  file  great  new  presentation  script  session  solr  time  website  year 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: Jeff Coughlin's ColdFusion Blog

Jeff Coughlin's ColdFusion Blog

inside the mind of a CF developer

Published: Mon, 11 Dec 2017 20:58:09 -0600

Last Build Date: Sun, 04 Nov 2012 10:03:00 -0600


Amazon Security Policies Lax?

Sun, 04 Nov 2012 10:03:00 -0600

This may be nothing, but I thought it was worth blogging in case anyone thought otherwise. I read a lot of books. A few months ago some stuff changed at work where I thought it would be easier to listen to audio books. So I re-enabled my old Audible account. Audible was recently purchased by Amazon, so after I logged in they wanted to merge my Audible account with my Amazon account. The process was pretty painless and I was on my way listening to some audio books. A few months pass and I realize I'm just not listening to enough books to justify the account type I purchased (I now had way too many credits built up). So I logged into their site and learned that I could put my account on hiatus for a few months (meaning, I won't get billed, nor will I receive any new credits. But I'll be able to use my account and existing credits to purchase audio books). There was no option to do it in the settings screen though. After starting up a chat session with a representative I learned that only a representative could do it for me. Okay, works for me. All they need to do is verify some security settings. What were those? My Amazon login (email address), my name, and my billing address. Yes, sir. That was it. That's all the info you need to start modifying someone's Amazon account info. At this point I was very upset with the representative (sorry, Jessica. I know it's not your fault. I should have been nicer) and let her know how upsetting this was. I then asked her if she could update my credit card info, billing, or password. After a short pause she assured me that she could only update my Audible membership plan. Was she just telling me what I wanted to hear, or covering up a very large issue... I don't know (yet). I'm tempted to try again tomorrow with another representative and see if they can update any of those other fields of data. But here's my question to anyone who cares: Even if they can only update my Audible membership data, is that not a valid reason to complain? I mean, this is Amazon. I get that they purchased this company and that it takes time to change policies, code, and [unfortunately] staff when you do a takeover, but hasn't it been long enough that Amazon would have taken care of any account security concerns before merging Audible's accounts with Amazon's accounts? Perhaps I'm just getting upset over nothing and this is all just a moot learning experience.

CF Dev Week 2012 Videos

Wed, 13 Jun 2012 13:14:00 -0600

Last week Adobe ran the ColdFusion Developer Week 2012. I was honored to be asked to give my presentation on Scheduling Services in ColdFusion 10 (which I had made some slight improvements from my previous talk on it at cf.objective() based on audience feedback). You can now see the video as well as all the videos from last week on their website at Update: You can download the sample files from GitHub: For my own convenience, I have made a copy of the recording and cleaned up the audio a little and posted it on Vimeo. Enjoy :) src="" width="510" height="287" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen>

Preso: Scheduling Services in ColdFusion 10 from Jeff Coughlin on Vimeo.

cfObjective 2012 Presentation: Scheduling Services in ColdFusion 10

Tue, 29 May 2012 10:11:00 -0600

About a week ago I gave my presentation at cf.Objective() 2012 on the scheduling services in ColdFusion 10 (details). As promised here are my presentation slides and code samples. A special thanks to Guust Nieuwenhuis for giving me a couple tips to consolidate some ideas into simpler demos (he had done a similar presentation and deserves credit for some concepts used here) and also Sean Coyne for some jQuery assistance when I thought I'd run into a brick wall :). Thank you to all who attended my session on Saturday morning (especially after two days of intense sessions). I'll be giving this presentation again next Friday at the Adobe ColdFusion Developer Week 2012 ( This is a remote session that you can watch for free and ask questions. If interested, please signup on that page (I believe registration is required).

FarCry Solr Pro Plugin

Thu, 05 Apr 2012 16:03:00 -0600

We've launched a new FarCry plugin called FarCry Solr Pro. It's got a ton of features (too many to list here). Go checkout the plugin's website for more info and download links: Special thanks to the private beta testers over the past month. Dev team includes:
Sean Coyne and Jeff Coughlin Minimum requirements are:
  • ColdFusion 9, Railo 3.3
  • FarCry 6.2, 6.1.4, 6.0.19
  • Solr 3.5 (optionally included)

Adobe MAX 2011 CF Unconference Presenation: Advanced Solr - Going Beyond the Basics of cfsearch

Mon, 03 Oct 2011 16:15:51 -0600

For those who attended my session on Monday and wanted to download the sample code, you can download it here (2.4MB zip file). The code is ready to go (requires CF9 or better if you want to run it out of the box without having to download Solr on your own). Make sure to glance at the readme.txt file before you start. It also has some troubleshooting tips in case you can't get the code running right away. I've separated each of the samples into include files (demo1.cfm, demo2.cfm, etc) to make it easy to follow. And I've also included a ton of really helpful notes at the top of each demo file that walks you through exactly what I discussed in my session. I gave this same session at CF.Objective() 2011 earlier this year. So for those who already downloaded that code there isn't anything new for you (sorry). But I did update the live session with more helpful specifics based on feedback from CF.Objective(). Download and enjoy!

How I Got Started in ColdFusion

Mon, 01 Aug 2011 00:42:00 -0600

Before I was developing in ColdFusion I was a senior network engineer. Before that I started out as a computer repair technician in the very early 1990's. Then in college (around 1994-95) I was a student worker working in the IT department repairing computers. I was training other people while at the same time studying for a bunch of different certifications. First A+ certification (when it was actually difficult and stood for something), then later a ton of Microsoft certifications so that I could quickly get myself to MCSE status. In 1997 I quit college as a full time student (still taking night classes and finishing my degree years later) and became a senior network engineer for a company that I really enjoyed. During those years I continued to study for more certifications which seemed to become my only goal for some reason. I was studying to become a Novell Engineer (NCE), Cisco Engineer (CCNE), and a plethora of others (as well as renewing existing certs that were expiring). By 1999 I was a senior network engineer, but I wasn't having any fun anymore. I felt like I just needed "one more cert" all the time. I know, weird. However, in late 1998 I started playing around with ColdFusion after a friend's suggestion who loved working in it. It was to solve a need (I was making a gaming news website for a friend). During 1999 I wrote tons of code in ColdFusion and was working on several websites. I even wrote my own framework (not a very exciting one, but a framework nonetheless). I didn't realize I was writing one (not having any previous programming experience). I just knew that I needed to simplify things. The networking company I was working at wanted to get into web development, so they had me write a few websites for some of their clients (mostly brochure websites with a few dynamic features and administration areas). Although I loved writing in ColdFusion, these specific sites weren't exactly very challenging and I found myself in a slump. Now I wasn't happy doing networking or my new found love ColdFusion development. I reluctantly left that place and took another networking job elsewhere (I felt bad because I really did like the people there (a very small company) and I was good friends with my boss too, but I just wasn't happy). After job hopping a little bit in 1999 and 2000 my wife (girlfriend at the time) suggested I throw my name out there for web development (in ColdFusion). Although I was a novice at the time, it was the height of the DOT.COM bubble. I received phone calls almost immediately. I had an offer the next day and it paid a lot more as a novice CF developer than an experienced senior network engineer. How could I say no? And thus my journey began. I started work at my first CF job (Moore Medical) in late 2000. When I took the job at Moore Medical it turned out that all of us were part of a new web department they'd created: 3 CF developers, 1 manager, 2 DBAs familiar with their system, and an existing employee who was very familiar with the company overall and helped us mold together. Their previous site was outsourced and they wanted to bring it in-house. What I didn't know at the time was they were planning to fire all of us shortly after the new website was launched =\ (it was far cheaper than hiring contractors for one year). Regardless, it was the best year I'd had in a long time (granted, Sept 11 that year was a sad time). I got to work with two very smart CF developers that helped me learn a lot. I soon surpassed them, but I am grateful for their experience, knowledge, and patience with me. We launched the site in mid October 2001. By Feb 2002 They were doing massive company layoffs due to bad quarter earnings (or so we were told. It turned out that our department was the only one that was in the black (and quite a lot too. We were averaging $18m/yr by that point for just web sales). A couple of the guys we[...]

cfObjective 2011 Presentation: Advanced Solr - Going Beyond the Basics of cfsearch

Mon, 06 Jun 2011 14:17:00 -0600

Last month I gave my presentation on some advanced solr use with ColdFusion at cf.objective() 2011. Sorry for posting my files so late. I always like to post detailed comments in each demo file (explaining what's going on and how I walked through my demonstrations). I just needed to find the time to sit down for a couple hours and write them up. I also cleaned up the code a little better (based on feedback from the audience afterward) and I also styled the pagination used in the last demo (as well as a few other minor styling touches here and there). Make sure to view the readme.txt file in order to set it up correctly for use. Basically you just need to edit your solr.xml file and tell it where your collection files are (takes 2 min). Then after restarting solr the demo will start working. I explain this in more detail with troubleshooting tips as well in the readme.txt file. Also please note that I purposefully used bad coding practices and tried to keep the code needed to review inside of each demo file so that it's easy to follow for all audiences (sorry, no frameworks here :). Download the presentation demo files here (2.4MB zip file). I didn't bother with the slides since they pretty much just jump right into the demos.

Running ColdFusion Solr on a 64-bit JVM

Wed, 13 Oct 2010 14:39:00 -0600

One of my clients had the need for a lot of search collections and even more data to put in them (especially with massive archives of PDF files, xls, word docs, etc) for a very large intranet. So I tried to plan ahead by installing Solr on a separate server (Windows 2008 R2 64-bit with a decent chunk of RAM). You can find the separate installer on Adobe's website. For our initial tests it worked out great, but when we starting throwing more data at it, it quickly ran out of memory. The first thing I did before I even created the first collection was to increase the memory for the JVM (to do this, edit the solr.lax file and change the default setting of -Xmx256m to your preferred max memory setting. I also prefer to set the min setting as well to the same value (see below)). What I quickly found was the the default version of the Solr install comes with a 32-bit version of Jetty. The 32-bit JVM maxes out at 1.5GB of RAM use. So even though we had enough RAM to use and were running on a 64-bit OS, the JVM wasn't being allowed to use the extra memory. The solution ended up being very simple (even for a non-java person like myself). I downloaded a 64-bit JVM (in my case I just downloaded Sun's 64-bit JDK to test. I suggest the JRE though) and installed it on the box. I edited the solr.lax file and commented out the single line where Jetty calls javaw.exe (for Windows its that file, for other OS's it will be sloght different with a different path format) and instead pointed it to the new 64-bit JVM's javaw.exe file. I then set the min and max memory settings to 3GB (-Xms3072m -Xmx3072m) and started Solr up. No more out of memory errors (no more java heap errors). --- I didn't figure it out all on my own though. Several people helped me come to the final result that I'd like to thank (in order of me bugging them): Mark Mandel, Matt Woodward, and Sean Coyne

Convert VirtualBox (vdi) to VMWare (vmdk)

Fri, 27 Aug 2010 17:49:00 -0600

Recently I decided to switch from VMWare desktop to VirtualBox desktop VM software. I've heard great things about VirtualBox (speed and less-overhead being two very nice features). I did not need to migrate a VM because I wanted a fresh install of Win2008 R2 Enterprise and MSSQL 2008 R2 64-bit. I've been using VirtualBox for a few months now and for the most part it's worked out great, but there were certain things I missed from VMWare desktop. The reasons aren't really that important (I have nothing against VirtualBox and still think it's pretty awesome), but I thought I'd just share how I converted it. I did a lot of research on the web and found many tutorials and walkthroughs for earlier versions of VirtualBox, but when I went to use those lengthy methods, I found that they weren't possible anymore (at least not the same way). The old way (which is still possible, but with a different utility) also required another program called qemu-img. You actually can still use the old method of converting the VM to raw format and then convert it again to VMWare's vmdk format using Quem-img (each conversion can take a while depending on the size of the VM). However, as of VirtualBox 3.1+ you can now do it all in one command line (and only have to do one conversion). I'm on a Mac, so the example below is for Mac (using VMWare Fusion). But the same command line should work for Windows (you just need to substitute the paths and point to the vboxmanage.exe file instead of the contents in the app file as seen below). Also, the source and destination paths are custom in this case (I'm currently storing mine on an external storage device). In the following example I'm calling my virtual machine filename windows.vdi for simplicity (most likely your filename is long and has spaces like mine. Thus I suggest wrapping your file locations in quotes). /Applications/ clonehd "/Volumes/Drobo/Virtual Machines/windows.vdi" "/Volumes/Drobo/Virtual Machines/windows.vmdk" -format VMDK -variant standard -type normal -remember Note: It is VERY important to have the full paths to the source and destination files otherwise you'll get an ambiguous error message as I found out the hard way (with some google searching I was able to figure it out though). I believe this effects Windows users as well (not positive on that). I wish I could give credit to the forum post that I dug most of this up in (I believe it was somewhere in the VirtualBox forums). Sorry to whomever I'm not giving proper credit. After the conversion is complete, open VMWare and create a new virtual machine. Choose the option to open an existing VM. I converted the VM with VirtualBox v3.2.8 and then opened the new file in VMWare Fusion 3.1.1. VMWare said the vmdk file was an older format and needed to be updated (I agreed of course). A few seconds later the VM opened successfully. As expected, new drivers were auto-detected and added (I believe I had to reboot the VM OS twice) and then I installed the latest VMWare Tools (followed by another reboot - all expected). In all the process took about 30-40 minutes on a 50GB VM (about 10 minutes was the auto-update for drivers and the VMWare Tools install and reboot).

Hospital ER Wait Times

Sat, 03 Jul 2010 08:19:00 -0600

Last fall I helped a client of mine (Middlesex Hospital) release a new website to display their ER wait times for their three locations. It received national news. At the time they were one of only three hospitals (that we knew of) that were doing it in the nation. Since then many other hospitals have followed suit, but MHS still gets critical acclaim for it. Two weeks ago we launched a new main hospital website for them ( and placed the ER wait times on the homepage (as well a few key places on the website). I've been getting a lot of questions lately asking how we did it. So I thought I'd walk through the process for those who might be interested. First the data itself comes from the hospital's clinical systems (specifically a system called Cerner). I don't know the process they use to get the actual numbers. Unfortunately Cerner isn't designed to distribute data (ie. web service, XML, or any other type of data feed), so we had to find a loop hole. One of the guys at MHS figured out a way to do it using Cerner's custom query system where he runs a custom query and outputs it to an ASCII-based file (text file) which is sort-of like a CSV format. It's very messy, but with a little Regex I'm able to clean it up to be pretty decent (but I'm getting ahead of myself :) ). Next they FTP the file every 5 minutes to the web server through the DMZ. Now it's in my domain and I get to use ColdFusion to do the rest. Once on the server I have a ColdFusion directory watcher that detects the file and triggers a script to run. The script runs the regex to cleanup the data and allow the CSV file to be easily consumable. Then it consumes the data from that file into a DB. From there it queries the DB and outputs the data to a static XML file for which I have an API (Thanks to my friend Simon Free for the lessons on proper API coding and documentation). Why an API you ask? Because it allows us to use the data for other devices, systems, and apps (and an iPhone app that I believe is in development). The final piece is to display the data. To do that I do it in two parts. Let's take the MHS homepage for example. Since we know the data gets updated every five minutes they wanted the data on the homepage to auto-update every five minutes. So, since we use jQuery quite heavily on that website I made a jQuery script (using jQuery's get() function to consume XML data) to grab and display the data every five minutes. But what if the user doesn't have javascript enabled? No problem. I have a separate ColdFusion script that runs before jQuery has access to the DOM where it runs against a CFC to grab the data and display it in HTML with no help from javascript. That CFC script gets a little trickier since the client wanted the items returned in a different order than they appear in the XML. Sure I could have hit the XML three separate times per page load, but since this is the homepage (which gets more hits than any other page on the site) that would just be poor programming on my part. So I figured out a way to hit the XML feed once and sort the data in a desired fashion (and allow the client to change the order easily at any time). What about the font? Did I use Flash? Nope :). At first I wrote the whole thing to work in sIFR which allows you to display custom fonts on a website using Flash. It worked great, but I wasn't really happy with it. For one, we don't use Flash anywhere else on the homepage, so why load it for just this one item? (note: we do use Flash elsewhere on the site for things like videos. Don't think I have anything against Flash like Mr. Jobs. In fact, I love Flash.). Okay, so how did I get a custom font on the website and get it to still work in things like the iPhone that doesn't support Flash? I used a featu[...]

cfObjective 2010 Presenation: ColdFusion & jQuery - Two Great Tastes That Go Great Together

Sat, 24 Apr 2010 11:19:00 -0600

Yesterday I gave my presentation on ColdFusion 9 and jQuery integration. It was more of an intro approach to some of the topics and I'm glad that it was well received. The presentation originally housed content about a mock company I made called Widgets Inc. I decided instead to swap out most of the media content with some content from the conference (a few photos and videos). It was done simply to make it a little more fun while hopefully learning something new. Sorry for the large file size on the zip (~30MB). The reason is because of the final video at the end of demo 8 which was nothing more than just something for fun where I included pictures of many attendees at the conference (many of whom were in the audience). I kept it for the end and only showed it once Q/A was completed and we still had a minute to spare. I had planned to pull it from the final downloadable presentation zip file, but several people have asked me to keep in in there (sorry for the extra 19MB :). I purposely have very little slides (mostly just the topic title and a slide about the presenter). I prefer to have the "meat & potatoes" be in the live demos of my presentations when possible. The attached zip does have a PDF for slides though in case you're interested. I did spend a little time yesterday and today adding notes to the top of each demo file before I uploaded the presentation to my blog. Definitely read those as well as the readme.txt file in the root. they help explain a little what I was talking about during my presentation (without having to bloat slides). To deploy the demo, you don't need a database. You just need access to CF9. I've attached the zip file as an enclosure. If you're browsing my blog, there should be a "Download" link associated with the blog entry to get the file. Enjoy. Side note: As I sometimes like to do, I have subtle jabs/jokes I take at Simon Free (someone I knew would be in the audience). Although we may have funny banter and jokes back and forth at conferences (and sometimes in our sessions) I still make sure that it doesn't overshadow the content or spoil the presentation. The subtle jokes are merely there for our amusement (and the amusement of others). But I'll be honest, we tend to "one-up" each other each time, so I fear how he will retaliate in his session at the next conference :). Oh, and if you ever run into Simon, ask him if he's French (he likes that ;)

Media Files:

Speaking at cf.Objective() 2010

Wed, 06 Jan 2010 18:46:00 -0600

(image) I'm happy to announce that I'll be speaking at cf.Objective() 2010 this year. I have been fortunate enough to speak at the conference in the past (every year since it opened in 2006) and am excited to present once again. This year my topic will be ColdFusion & jQuery: Two Great Tastes That Go Great Together. The early bird price ends on January 29, 2010, so make sure you register early in order to get a good discount (and before they sell out).

FarCry: Bulk Image Resize Script

Thu, 01 Oct 2009 01:40:00 -0600

Last week I finished writing a bulk image re-size script for a client of mine. It went through several revisions before finalizing on the version you can now download. Because I found it so useful I decided to release it to the public. The script can be used for several reasons, but here are a few examples:
  • You've added new image fields (and sizes) to an existing content type with existing images.
  • You've decided to resize an existing image field.
  • You want to use a new image compiler on all existing images.
Although I've only tested the script in FarCry 5.1+, it should work in FarCry 4.x (but no promises :) ). To download the script, please use the download link associated with this blog post (for RSS readers, refer to the enclosure file) use the download links below. Here is a quick video tutorial where I show a couple examples of the script in use. (object) (embed)

FarCry: Bulk Image Upload Script from Jeff Coughlin on Vimeo.

Update: I updated the script to better support FarCry 6. See download links below.
Download v1.0.1 (for FarCry 6.x)
Download v1.0.0 (for FarCry 4.x and FarCry 5.x)

New Site Released. Pretty Sweet

Tue, 18 Aug 2009 15:58:00 -0600

The guys at Articulate (who make E-Learning tools) today released a new product called Screenr which not only allow you to create video screencasts for their product line, but also allow you to post them right to Twitter. Better yet, the videos even play back on the iPhone. But don't take my word for it. Go checkout Screenr's website and watch the 1-minute tour video.

CFUnited 2009 - What an Amazing Event This Year

Sun, 16 Aug 2009 14:34:00 -0600

Oh my. This has to have been the best CFUnited I've been to - Bar None. Liz, Nafisa, Cara, and the rest of the Stellr team did a phenomenal job. The sessions completely blew my mind. And the speakers, awe-inspiring. Every attendee and speaker I conversed with were not only friendly and talkative, but they were all just as happy about the overall event as I was. And the location... one word, unparalleled. I mean, this place was a gem waiting to be discovered. I'm going to reserve the majority of this blog post just to talk about the conference center / hotel. Not that the sessions don't deserve more attention (they were beyond my expectations), but after all the previous CFUnited conferences I've been to (which were great), I never realized how much better an event can be just with subtle improvements at an event location. What can I say? The amazing staff, delicious foods, the atmosphere... look, Ive been to many conferences over the past few years. This has to have been the best experience I've had so far (very good choice Stellr team!). Let's roll back the clock to day 1 of the conference. I was about to give a session and they were still working out a few kinks. I was having a couple audio issues and within seconds staff members were on-hand hooking me up to the P.A. system and making sure my audio and internet connection were all set. They really knew their stuff and were extremely friendly. They made sure I was up-and-rolling in time before my session began. In my head I was giving them their first rating star (1 out of 5), so far so good. Now we move a bit later in the evening to 11:30pm. Okay, this wasn't exactly "event-related", but bare with me. Many of us were outside at the fit pit. We were celebrating a great first day and having a few drinks (okay more than a few) and we were being quite boisterous. There had to have been more than 30 people outside (probably 50+, I wasn't counting). Everyone was having a good time and rehashing the knowledge gain from day 1. Around 11:30-ish these two burly security-looking guys come out from the back of the hotel and made a B-Line for our group. Uh oh, party's over. I gave one of the guys a sheepish look and said, "Are we being too loud?" (implying, "Time to pack it up?"). The guy smiled and said "Nope, we just wanted to see if guys were having a good time. Is there anything you need?" I couldn't believe it. Really? Aren't we being too loud? Liz talked to some of the staff and mentioned that the bar had closed. Can you believe this, they hooked her up with more beer and smores for the fire pit. *bing* (now 2 out of 5 stars). The food.... where do I begin on the food? Let's start with the hallways outside the sessions. The hotel staff made sure that we were always stocked with plenty of drinks and snacks... from soda pop, to coffee, juice (orange, apple, grapefruit, etc), milk, coffee, bottled water, and on and on. And LOTS of it. This is not something we've been accustomed to in the past. Heck, even in the mornings I could come down and grab a bowl of cereal, bagel, yogurt, or fresh pastry. Other snacks included granola bars, healthier snack bars, cookies, brownies (keep in mind that this was throughout the entire day, not just designated 15 minute breaks). The list goes on, but the point is they made sure we were always fully stocked. *bing* (3 out of 5 stars). At previous conferences it was a challenge to grab a quick snack or drink between sessions before the quantity ran out or the timer ran out (and the staff would pull the items as you were reaching for them (this actually happened last year)). However, this year we were always stocked.[...]