Skip to main content


Showing posts from 2007

Google Chart API

From the incredible minds at Google :)

This impressive little library lets you generate PNG chart files from a single URL request string.  Since people typically need to pass lots and lots of data for charting, they came up with a really creative way to compress the values, and provide a javascript snippet for automating the process.

So the nifty chart you see to the right is a "hello world" app using their API.  It ultimately comes down to a simple URL request of:|World

Quite impressive and easy to use!

While this doesn't provide the stellar interactivity and depth of integration that Flex charts do, it certainly provides a way to do nice looking charts with a quick turn-around. 

According to their docs, you can freely use this so long as you don't regularly exceed the 50,000 hits per day limit at which point they may block you.  I think most of u…

Rar7z - Notes after it has been put to use

Not too long ago I posted a coldfusion component to handle compression for rar and 7z.  Here is a report from the first time using it.For reference, here is the important info:Download version 1.0 --

This is of course released as-is no warranty, no support, blah blah, and eventually if people like this, I will officially make it open source.  Its a small piece of code, so who knows how useful it will be.

There are a few sample pieces of code to help figure out how to use is.  It is relatively easy:

Compress a file:

<cfinvoke component="lib.rar7z" method="compressFile" returnvariable="compressFile">

    <cfinvokeargument name="SrcPathAndFile" value="#ExpandPath(".")#\myfile.dat">

    <cfinvokeargument name="ArchivePathAndFile" value="#ExpandPath(".")#\myfile.rar">

    <cfinvokeargument name="VolumeSize" value="3500">


Ghost for Linux ?

I have long been a supporter of using Ghost for imaging disks.  See a previous post on how to use Ghost 2003 with Windows Vista.

I have never, however, been able to find a replacement for Linux... until now.

I just came across this -- and pardon me if this is old news -- which seems very promising!

This is an open-source project based on NetBSD that allows you to boot from a CD, connect to an FTP site, and backup-to-image, or restore-from-image to the local drive, using the FTP site as the image storage location.  This sure sounds like what Ghost should have been!

I intend to try it out very soon.

Why ColdFusion isn't free

No, this isn't an "original" rant...  just spreading the word on an already available, and excellent eye-opening writeup of why CF doesn't fit the "mold" of other "programming languages" and why it isn't a simple process to say "this is free, why isn't CF free?"Anyway, stop reading my blog, and read this instead: to CF Insider!

Speeding up Windows Vista

I have finally put a copy of vista on my machine, and I have a few observations:It is prettyIt is different enough from Windows XP that some things are hard to findThe continual nagging and "are you sure" questions drives me crazyIt is slowI wouldn't call it more efficient, but it is the newest windows, so we all better get confortable with it.Here are some _wonderful_ resources I found online that allowed me to get vista running on my pc at about the same speed as winxp, and I am pleased to say that it is a bit more stable than XP as well.  After all, vista is based on the windows 2003 kernel, which has been very powerful and reliable.Turn off the nagging:The continual popups are from a new service called "UAC" or User Access Control.  Read this article (and google it for more info) and learn what it is, and deceide if you want to turn it off.  It may make your PC more vulnerable, but I will accept that risk.  What you do is up to you.http://www.mydigitallife.…

Using Ghost 2003 with Windows Vista

UPDATE:  This also works with Windows 7

If you do a few google searches for "ghost" and "vista" you will find a ton of posts.  What I have found frustrating is the lack of clarity on one particular issue:

"If you back up a windows vista partition using ghost 2003 (dos based) to another drive or partition, can you restore it and have a bootable vista OS ?"

Answer: YES it works -- see below for how to do this.

There are many people who say if you clone a disk (i.e. you have two hard drives, clone A to B), that ghost 2003 works fine with vista, but nobody has clearly stated how and if it works on a partition to partition basis.
Here is how we setup all our computers:  The primary drive is split into 2 partitions, C: is for the OS, and D: is for files and backups.  In this scenario, the OS drive can be backed up to the D: drive using ghost.
This works great for any windows until Vista came around.  Now all of a sudden, changes to the boot sector make it more di…

Aptana Studio Released!

I am truly impressed with what this group has brought to the development community.  Long ago I loved a code editor called "HomeSite+" which existed in several interesting flavors, ColdFusion Studio (i think?), and JRun Studio were two other flavors I remember.  Then came the Dreamweaver shift...  I never really got on that bandwagon.  I resisted for a LONG time, then I tried it out, and just never really was thrilled with it.  I am a coder at heart.Then came Eclipse.  Great concept, just not for the masses.  Then came Eclipse 3, and then CFEclipse... then came Flex Builder and the RDS plugins, all good still, but not thrilling.HomeSite was great at letting you develop remotely.  Thats a big no-no in the software world now, but for web developers it is a big deal.  You don't always have _everything_ you need running on your laptop!Anyway, I got off track.  After all these tools, finally comes an attempt to bring it all together: Aptana Studio.  In its development stage a…

Designing CFCs for use with Flex

I have a design pattern for CFCs that I like to use, but recently I ran into an annoying problem where I was trying to use some of my already in-use CFC with a client written in flex, consuming the CFCs as web services.By finding a nice tip on Kyle Hayes' blog (see here), I was able to get things to working just the way I had hoped, and this blog entry will show how it all comes together.Here is the basic structure of my standard CFC  template:
<cfset my = StructNew()>

<cfset my.getList = structNew()/>

<cfset my.getList.error = 0/><cftry><cfqueryname="qrsRESULTS"dataSource="MY_DATASOURCE">

SELECT col1,col2,col3


WHEREsomevalue = '#ARGUMENTS.somevalue#'

          <cfset my.getList.result = qrsRESULTS><cfcatchtype="any">

<cfset my.getList.error = 1>

<cfset my.getList.message = CFCATCH.message>

</cfcatch></cftry>     <cfreturn my.getList&g…

pfSense - Router OS

I recently started evaluating load-balancing solutions for our small office.  Verizon seems to never have a clue, and loves to spontaneously shut accounts down for no good reason, and without warning.  For any of your Verizon DSL or FiOS users -- beware!

I have begun evaluating a hardware device called the HotBrick LB-2 which supposedly is designed specifically for taking two WANs and load balancing traffic (with failover).  Exactly what I want. While looking at prices, I came across discussion of an open source project called pfSense.

Now normally I will consider open source for applications I can customize, but I never really considered running something like this in place of our router or firewall.

Documentation is scarce, but I have been discovering some impressive things about pfSense:

It is based on m0n0wall -- an excellent BSD router OS with a web management interfaceIt can be run off a Live CD !!!You can set it up to run in production off the live CD and save your changes to a …

CF United Europe

I've been invited to speak at CF United Europe to be held March 12-13 2008 in London (Novotel London West).The official first list of speakers is posted here: CF United in Washington DC, CFUN Europe will be a fantastic place for CF developers to learn the nuts and bolts about building CF apps as well as learn best practices and new technologies that help us build powerful web apps quickly.As of right now, I will be speaking on two topics: Recursive technique with CF, and Coding with XML.  Both are topics I have spoken on before, but I will be sure to introduce some new tidbits as well.Leave comments if there is anything you would like me to add to these presentations!

rar7z.cfc : RAR and 7-Zip compression for ColdFusion

ColdFusion has built-in support for .zip archives (after all, CF is built on Java, and all those .jar files are actually just .zip files).  This works well for out-of-the box compression for most applications.  Where it doesn't work is when you have to work with much larger files. craps out if you give it files over about 2GB.  In the modern world, many files are larger.

So since I obviously came across this limitation, I explored options and determined that the world relies on rar and more recently on 7-zip for compression of larger files.  The most desired feature I was after was being able to split archives into smaller files.  My specific application was that I have a huge database backup file (9+GB) that I need to archive, but windows doesn't work too well with large files.  So with rar or 7-zip (or just 7z) you can compress large files and split them into smaller files so you can put them on a cd or dvd, etc.

Now that I had a working solution, integrating …

Flex 2 Boot Camp

I decided to attend a one-day bootcamp for Flex 2 in New York City which was piggy backed onto a RealWorld Java Conference.  Our instructors were Yakov Fain and Victor Rasputnis from (they make some cool Flex add-ons you should check out).

It was a day of intensive brain crunching.  It seemed to me that it was definitely aimed at Java developers (how many CF developers know what ant is?) more than anything else.  A lot of the topics covered were already very familiar to me, including a lot of the Flex code itself -- at least until the second part of the day.  What was significant about the second part of the day was the software engineering insight as to how to approach flex apps over the "out of the box" approach Adobe (and formerly Macromedia) used to present. 

We covered topics such as compiling re-usable code into SWC files, logging and optimizing data traffic between your DB and Flex using ADF instead of slower verbose web services.  These were to…

Rant: Why won't technology professionals document their work ???

I find this whole concept perplexing!?!?!?  Unfortunately it seems the growing norm that technology professionals are pushed to the limit so often that when they start to bend under pressure, the first thing to go is their "ability to document."

It would seem perfectly respectable if you were doing an integration job with a new firm that doesn't know your technology, you should give them documentation on how to use it right ?  Why is it such a big deal to get documentation like this ???  It seems that the industry is growing to a point where "well, here is something to get you started, you figure out the rest and call me when you get stuck" is the growing norm.

Shame on us for letting it get this bad.  I've done it to, so I don't excuse myself.  But i've also learned from my mistakes too...  Now I document most of what I do, for the sole reason that I work on so many projects that when I need to pick up an old project, I better have some notes on ho…

Aptana plugin for Eclipse

Hopefully a lot of you ColdFusion developers are using Eclipse now with the CFEclipse plugin.  Many developers dont know about the Aptana plugin however (  This free plugin gives you all the stuff that you miss from DreamWeaver or Homesite+ -- html and css editing, etc.  In addition you get an XML editor, and a fantastic ftp interface, which is sorely needed in Eclipse.  Aptana has a very nice ftp synchronization tool set which allows you to effectively develop locally and synchronize to an ftp site.

For those who are curious about how we have our Eclipse configured, here it is:

Eclipse 3.2.x

CF Eclipse 1.3.x

RDS Plugin (from Flex Builder 2)

Aptana plugins

Violet UML plugin

Windows 2003 and WidComm Bluetooth Drivers

Once a long time ago, in a galaxy far far errr... yeah.  I once had my bluetooth key setup and working great on Windows 2003.  I have since switched to a new laptop and now BT doesn't work again, so I tried to find my documentation on how I did what I did, and was unsuccessful.

To get to the point, I did it again, and I have it documented now.  Now my struggle becomes your asset.

Here we go:

These are my notes to get Bluetooth support working in Windows 2003, using the WidComm family of Bluetooth software (the kind that comes with USB keys, and such, not the built-in windows stuff).  Most people have problems with their built-in stuff because the software bombs with a "license.dat" error.  First:Make sure you find and install drivers for your USB bluetooth device.  For me, the drivers were on the CD that came with the dongle.  If you don't have the CD, then you have bigger problems, and I wish you luck.

Next: Software Installation:You can refer to these sites for…

CFDJ Article on XML

For those who may be interested, CFDJ was kind enough to publish an article I wrote about XML.  Here is the link:ColdFusion Feature — Coding with XML — As a ColdFusion developer, hopefully by now you have heard at least a little about XML (eXtensible Markup Language). Wikipedia defines XML as a 'general-purpose markup language' designed to 'facilitate the sharing of data' and also designed to be 'relatively human-legible.'

XMLValidate and WDDX

A nice CFUN attendee inquired of me: "Can XMLValidate validate wddx packets ?" to which I did not have an authoritative answer.  My intuition told me that yes it can validate that the wddx is well formed, since WDDX is simply XML, but that it probably would not be "valid" since I don't know the DTD to validate against.  So here IS the answer.Exactly as I had thought!wddx strings validate using XMLValidate to be well formed, but not valid.  Here is some sample code to play with:<cfset mystruct = structnew()>

<cfset = "Andrew Schwabe">

<cfset = "">

<cfset mystruct.age = "25"> <!--- yeahh right! haha ---> <cfwddx action="cfml2wddx" input="#mystruct#" output="wddxMyStruct"> <cfdump var="#wddxMyStruct#"> <cfdump var="#XmlValidate(wddxMyStruct)#">

CFUN 07 is Winding Down. Some thoughts...

This year's CF United was great.  Lots of exciting news about CF8 and Flex 3.  I do have to say though, that I really would like to see some hands-on sessions.  At the final session tonite, some people suggested some great ideas for future CFUN events.  The couple that stand out to me (aka, the ones I remember) were: Have a coding contest amongst attendees, allow attendees to nominate products for a best of show type award, and a way for attendees from different geographic areas to connect.  (i.e. I'm from mytown, OH, who else here is from my area ??)This morning I attended a session by John Ashelfelter called "Pragmatic ColdFusion: Build, Test, Deploy."  It was a great session about the necessity of having a completely automated build system.  he spoke about how to do this integrating Subversion (code versioning), and open source QA testing packages so you can have a completely hands-off way to generate builds of your product that go through a standard QA process on…

CF United 2007!

So I'm here at CF United 2007, and the topics this year look very exciting.  Some great news is that Flex 3 (coming soon) appears to be moving toward open source.  This is great news, and means that the platform will get expanded on by the development community.  I'm hoping this also means that Flex Builder (based on Eclipse) will be brought into modern times, and more in line with the eclipse development roadmap.The other great news is the new features in ColdFusion 8, codename scorpio.  Looks like a lot of new capability with PDF integration, and even more exciting is that CF8 will include server analytics tools built in, so developers and sys admins can have a better look at how our apps are running on CF Server.  Good stuff.My talk is scheduled for thursday june 28th at 4:30pm, so around that time you can expect that I will post the powerpoint file and code samples we used in the presentation.

Qmail rcptcheck patch posted

It has come to my attention that the checkrcpt patch for qmail seems to have disappeared from earth.  So here is my copy of the patch, reposted along with some other helpful files.Note: This is for qmail+vpopmail only.  You should be running supervise, and a "run" file is supplied that has the appropriate config for this patch.No warranty expressed, offerred, blah blah blah.  Use it at your own risk.

Cookies empty after <cflocation> (and similar)

I just ran into an interesting issue.  I've actually seen this issue before, and fixed it before, but have never documented it before.Here is the issue:You have a page that initiates a session and maybe sets session variables.  At the end of the page, you <cflocate> somewhere else.On that "somewhere else" page, the session variable will not be set (not even defined).  This only seems to happen in some browsers (it seems [maybe] to be slower or older computers? -- haven't been able to confirm this)In order to really understand this, you need to know that when you set any cookies (and sessions set several -- most notably the CFID and CFTOKEN), the server sends a header to the page to set the cookie value.  That is main way your browser can know to set a cookie.  (you can also set cookies using javascript, however this is not applicable to the current discussion) So, when you have a page that initiates a session or sets a session variable, it needs to send somethi…

CF United 2007

Well i've been invited to come back to CF United again in 2007 to speak.  This year I will be talking about XML and specifically about ColdFusion's built in functions for creating and manipulating XML constructs.If you are a ColdFusion developer, this really is a fantastic conference and no matter what skill level you are, you always learn a ton of new things.I personally am looking forward to learning more about integrating CF and Flex 2.  For more info and registration info, click the nice picture below.

Flex 360: I'm Headed to San Jose in March

In case you haven't picked up on the excitement about Flex 2 yet, its worth checking out.  Go to and see what its all about.  In my efforts for self improvement, I have signed up to go to flex360 in San Jose California March 5-7 2007.Last I checked, it was filling up like crazy, so if you wants it... you better register post haste. - my kick butt script for vpopmail

This script is for those who have build a qmail+vpopmail server (including qmr and some of the other distributions).This script also requires the vchkrcpt patch, which you may need to mangle to work with your config.  It seems that this patch fell through the cracks and didn't get into most of the main distributions.  It is a terrible shame, because almost all default qmail setups have a severe security issue:  they accept all email for a domain, and if an account doesn't exist, they bounce it later.  This is terrible, what with the age of SpamCop and other "spam trap" and realtime black hole lists out there.  Ponder this batman:  Somebody spams you at your domain with a bad recipient address like and forges the sender to be some spamtrap like  If your server accepts all mail for "" and then bounces it later, then it will accept this message.  It will then generate a bounce message, which it se…

Server side HTTP Post using JSP

Ok, so I use a rapid application development technology (ColdFusion or PHP) most of the time because customers demand such quick turnaround.  This time I needed to go back to goold old Java and do some integration.Our email list management service (Sound-Off 3) manages people's email lists and lets them schedule mailings, etc.  I needed to integrate a website build on JRun (using Java Server Pages aka jsp) so that when people register, it relays the info to Sound-Off 3.In ColdFusion, you can easily do this with a CFHTTP tag.  In JSP it is a little more involved.  My struggle is your benefit, b/c here is the code that does it in JSP.This code will do an HTTP POST from the WEB SERVER to the remote site, all behind the scenes on the server.  The "parameters" string contains the form values that will be sent to the remove server.  Note the leading/trailing &'s and that the form values must be URL encoded.try


    String stuff = null;

    String pagecontent = "&q…