[Looking for Charlie's main web site?]

Switching to a new computer? Make a virtual machine to hold the old one. Here's how, free.

Note: This blog post is from 2007. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
If you've ever needed to move from one computer to another, you may know the pain of losing all the work of setting up the old one. Don't wish you could just magically keep the old one around to refer to when needed? And I mean really run it, not just look at backup files. Well, here's a solution you may not have considered: make a virtual machine out of the old computer. Then while you work on the new one, you can always go back to the VM to either see how things were before, or remind yourself of apps or settings you had, etc. You can do it for free (both create the VM and then use it) on Windows, and there are options for Linux and Mac as well. Here's how.

Background, and less satisfactory approaches

What am I getting at? Well, I've had to trade up laptops a couple times in recent years, and each time I've lamented having to lose all the work that went into setting it up.

Now, some will say "take a backup", but that's no good. First, if you mean to restore onto the new machine, if I have an OEM licensed version of Windows that would wipe out the new OS. With some vendors, like Dell, that could be a problem. (If you don't use Windows, again, don't leave yet. I cover Linux and Macs below).

But even if you'd deny the significance of that, the point is that the alternative I'll describe still has many benefits over simply doing a backup/restore (in that you can continue to use both the old and new setup at once, by way of virtual machines).

Some may also point out that there are programs to help move apps to a new computer, and even built-in OS features to move settings. And then there are tools like Ghost. Or at least by taking a backup, I could refer back to the files I had in the old machine.

But again none of these offer the "magic" solution of allowing me to really keep the "old image" of the previous machine available to view and even run with while installing, configuring, and going on to use the new machine.

With the VM approach, you could keep around the old machine's installation for months or years. Just fire it up as a VM whenever you want to recall how things were on the old machine. Sweet! :-)

One Solution: VMWare Converter

VMWare logo So what prompted me to write this? Well, I've known about and occasionally used virtual machine software for years. I last wrote about them several months ago when the two market leaders, VMWare and Microsoft's Virtual PC/Server products, were released for free.

I figured then that creating a VM would be a solution to my challenge, but I never got around to it because I lacked space to hold the "backup". I've since gotten a larger external hard drive, and so could reconsider this.

Then I read today (in a magazine) of VMWare now having a product called VMWare Converter. Well, it turns out to be just the ticket (at least for Windows users. While VMWare runs on Linux, too, support for the Converter on Linux is experimental accoriding to their FAQ, I'll mention a Mac solution below.)

And note that beyond using VMWare Converter to create a VM out of any machine, you can also use it to make a VMWare VM out of a Virtual PC VM, or out of a Ghost image, and much more. Very compelling stuff, and again, all for free.

It seems that this is just the ticket for what I was trying to do, so I have installed it and will see how it goes. But I wanted to let folks know about it rather than wait to write of experiences after the fact.

(Even slicker, I noticed when I installed it that a hint popped up saying that if you wanted to create such a clone of a current machine without Converter being in the footprint, you could instead install Converter and create the clone from a bootable CD.)

Another Solution for Mac: Parallels Transporter

Parallels log For those using Macs, you may already know that the favored tool for using VMs there, Parallels, also offers this feature in a tool called Transporter. It too can create a Parallels VM out of a Windows PC, or out of a VMWare or Virtual PC VM. There's even a youtube video showing the process.

If anyone gets to using any of these, please share your experiences. If and when I do get to using it, if there's anything to report, I'll do so also.

Finding or offering ColdFusion jobs: over a dozen resources

Note: This blog post is from 2007. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
[This is a 2007 post which seems to come up often in google searches for folks. I would point out that I have a more recent recent post with more and updated thoughts on the topic, written in 2017. See Looking for CF people, or CF work? What can you do?]

With the recent uptick in the economy, I hear increasing interest from companies looking to find CF help, or people looking for new opportunities (jobs or contracts). As such, I find myself pointing out where to offer or find such jobs. After a couple, I've decided to make it a blog entry. Of course, this isn't the be-all end-all list. Feel free to recommend alternatives in the comments.

I'm going to focus only on CF-specific resources, so I won't list generic job sits like monster or careerbuilder, not consulting sites like Dice, etc. There are just too many to bother with. Just know those are certainly options.

Let me make one comment: if you're going to post an opportunity, be sure to indicate whether you're open to contract or only full-time, and also whether you're open to remote or only local developers.

Here are a few to start with. Some are places where you can post a job, others are simply aggregators of CF jobs found elsewhere:

Updated entries:

  • Clark Valberg's Developer Circuit - besides being a list, also offers a useful flex-based widget that user group managers or bloggers may want to add to their sites
  • Removed from the list, http://coldfusionjobs.com/, as entry appears to just be a parked domain (all links show the same non-recent info)

Note that I list a few user groups with jobs sections on their site. I mean no slight to any I missed. Just let me know.

Let me also point out that the ColdFusion Weekly Podcast has been making more and more job announcements. That's certainly a very compelling way to reach the CF audience.

Finally, another place for job-seekers to keep an eye on is Ben Forta's blog, in his "jobs" category:

I sense that he takes unsolicited submissions for jobs as well. Again, perhaps other bloggers also have job categories. If so, let me know.

Don't forget, of course, that CF-oriented consulting and product companies also often have job sections on their sites. Here are just a few (certainly not a complete list):

I'm open to any suggestions for more sites. Hope this helps some.

I'll be speaking at WebDU (Sydney) in 2 weeks, and presenting a day-long class as well

Note: This blog post is from 2007. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
For any who may be considering the WebDU conference in Sydney Australia on Mar 22-23, I'll point out that I'll be speaking as well as presenting a day-long class.

The presentation topic will be "Caching-In" on CF Performance, a talk which I plan to start offering in the States soon as well. I plan to explain not only the common form in query, template, and output caching, but several more as well.

The day-long classes will be an update of the "FastTrack Training for FusionReactor & FusionDebug" that I have given most recently in Europe. The price is just AU$175 for a half-day or $299 for the full (that's US$128 or 219, respectively). Details and registration are here.

The FusionDebug portion of the day will, of course, address the latest and greatest version 2, released just a couple of weeks ago. I'll have more to say on that soon.

It's been nearly 7 years since I was last in Oz (for my honeymoon), and nearly 11 years since I lived there. Several other yanks will be speaking, along with dozens of Aussies, a Kiwi, and a Nederlander. With tracks on CF, Flex/RIAs, Flash, and web techniques, there should be something for everyone. I hope any of my readers who attend will please come say hello.

Thanks to Geoff Bowers and the folks at Daemon for putting on this 2nd year of the show. I'll also be speaking at CFObjective and CFUnited, both of which I'll write about later.

Did you know about the NULL attribute of CFQUERYPARAM? I didn't, until today.

Note: This blog post is from 2007. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
When will the riches of CFML ever cease to amaze me? :-) Did you know about the NULL attribute of CFQUERYPARAM? I didn't, until today. Consider if you use CFQUERYPARAM for an insert or update and you point its VALUE attribute to a variable. Perfectly normal, right?

But what would happen if that column in the database was designed to use NULL..but the variable used in the VALUE attribute was an empty string? It would be inappropriate for the insert or update to use an empty string when it should be a NULL.

How would you solve this? Many would just use an IF test to say, in effect, "if it's null, use a null, otherwise use the variable".

But this CFQUERYPARAM NULL attribute is just for this purpose: it accepts a boolean (true/false) to indicate whether and when to use a NULL rather than the VALUE. And rather than a simple yes/no (or true/false, 1/0, on/off, etc) you would more likely use some sort of conditional expression which EVALUATES to a boolean true/false. It could test if the variable used in the VALUE is empty.

An example of when it could make sense

So if an incoming form field like form.department could be empty, you could use:

<cfqueryparam value="#form.department#" null="#form.department is ''#">

which would pass in the form.department value--UNLESS it was an empty string, in which case it would pass in a NULL.

Again, this only makes sense when it's important to be using a NULL, such as on an insert or update.

It would NOT likely make sense in a WHERE clause

That said, note that it would NOT be appropriate if this cfqueryparam was being used in a WHERE clause. In that case, the SQL syntax of a WHERE clause equality test ("=") would NOT be appropriate in most DBs if this resolved to = NULL. Instead, the syntax for most DBs is to use "is" rather than "=". To be clear, this null attribute does NOTHING to help there. In fact, you could get an error that would leave you confused if you DID try to use it with a WHERE clause and the NULL attribute was true.

One last gotcha: the variable in VALUE is evaluated regardless

One last gotcha: while the docs say that if the NULL attribute is true, then the VALUE is "ignored", that's loose wording. It means it's not PASSED to the db as the VALUE, which is true. But it does NOT mean that CF "doesn't even pay attention to the variable named".

This has caused people trouble when they assumed they could name in the VALUE attribute a variable which might NOT exist: they assume that testing for it in the NULL should take precedence. That's just NOT how it works. CF WILL try to evaluate the variable in the VALUE attribute, whether this NULL is true or false. Forewarned is forearmed.

You'll find people using various means to test for the existence (isdefined, structkeyexists, etc.), whether testing and assigning some alternative result BEFORE this line of code, or perhaps trying WITHIN this line of code (using iif, de, and other expressions).

Update as of CF2016:

As of CF2016, one can use the "safe navigation" feature which tells CF to resolve to as an empty string if a variable doesn't exist. So one could write the code above like this:

<cfqueryparam value="#form?.department#" null="#(form?.department is '')#">

The logic there is that if the form.department field does not exist, then the VALUE will literally resolve to an empty string, and then for the NULL attribute, the same empty string WILL match the test of whether it IS an emptystring--which will be true, which means the NULL will be true and CF will pass in a NULL to the database.

It can be a lot to keep straight in your head. Try some code to check things out: but again, beware that if you use this in a WHERE clause, then the NULL being correctly passed in WILL lead to a syntax error if you're passing that to a SQL comparison like = or <>. You often need alternative SQL for dealing with NULLs--and that's NOT what this NULL attribute is for. It's for controlling simply whether CF should SEND A NULL for the VALUE!

The null attribute for cfqueryparam is not new

Finally, it may be worth noting that this NULL attribute for cfqueryparam is not new. It's been around since 4.5 according to the CFML language history file. I'd just never noticed it before. I learned about it today from a couple of folks on the great CFAUSSIE list.

Now, to be honest, the docs (CFML Reference for the tag) just don't make it as clear as it could be, I don't think (otherwise I'd like to think I'd have noticed it before). I don't see any mention of it in the Developer's Guide, for instance.

Anyway, you can read more about it in a blog entry from Michael Sharman, who I see also just happened to blog about it last month, with a lot more detail:

http://www.chapter31.com/2007/02/04/cfqueryparam-and-conditional-handling-of-nulls/

You might also want to read the comments there as well as at the CFMX 7 docs for the tag, both of which have people sharing their experiences using the tag, over time.

Using a range of hex values in a CF regular expression

Note: This blog post is from 2007. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
If you were asked by someone to strip a string of all characters having ASCII codes from some value and higher, how would you do it? If you'd think to use a regular expression, you get 5 points. :-) But how would you get it to take a range? If you're ever stumped, here's how.

Assume you have a str1 variable with the string to be processed, and you want a resulting str2 holding the result. Let's assume as well that you've been asked to strip any codes with ASCII values of 160 or higher. This will do it:

<cfset str2 = rereplace(str1,"[\xa0-\xff]","","all")>

The CF docs do discuss using the \xnn option to search for a hex value, but they don't show how to specify a range. You might, as I did, try a few variations until you stumble upon it. That's the format.

Oh, and as for the xa0, that's the hex equivalent of decimal 160, and ff is the top of the range. I didn't find that it performed any more slowly with ff or some lower number.

Hope all that's helpful to someone. As for why you may do the above, I'd rather take that up in a separate entry which I hope to write today.

Congrats to Kevin Towes, new Adobe Technical Product Manager for Flash Media Server

Note: This blog post is from 2007. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Adobe has announced that Kevin Towes is the new Technical Product manager for Flash Media Server (FMS). Folks who've been in the CF world for a while may recognize him as a frequent contributor to the CF community a few years ago, when he was a certified CF developer, founder of the Toronto CFUG, and a speaker at conferences and user groups.

He was an early and vocal advocate of FMS in its early incarnation (Tin Can and the Flash Communication Server), and has spent recent years in media, continuing to work with FMS in its evolution. It's great to see Kevin directly involved at Adobe, and I can't imagine a better FMS advocate to be named to the post.

CFUnited Express coming to Atlanta, Thursday March 15

Note: This blog post is from 2007. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Get ready for CFUnited Express, coming to Atlanta on March 15. You've probably heard about CFUnited, the annual multi-day conference in DC in June. But if you live in the Atlanta or NYC area, each will host a one-day mini event with several speakers from the main event--and get this: your attendance fee will be credited to your ticket to CFUnited!

I'll be speaking at the Atlanta event, Thursday March 15, along with the following other great speakers (and their topics):

  • Ben Forta: An Introduction To Apollo Application Development
  • Charlie Arehart: "Caching-In" on CF Performance
  • Hal Helms: Architecting Large-Scale Applications
  • Rob Gonda: Robust Ajax Architecture
  • Andrew Powell: Introduction to CFCs as Objects

Note that some of these are NOT the topics that the presenters will be offering at CFUnited, so this is actually a bonus for those attending the Express event! :-)

More details on the topics (and other info) can be found at http://cfunitedexpress.com/go/atlanta/2007/.

Here are the prices:

  • Full price: $249
  • Early Bird: $199 (expires after 3/8)

Includes lunch, coffee and full CFUnited/Express materials for the talks - plus an exclusive CFUnited laptop bag, CFUnited T-Shirt, 355 page CFUnited-06 show guide and other cool items. Come network with your peers and the speakers.

To learn about the other CFUnited Express events, see http://www.cfunitedexpress.com

Remember, there is no risk to trying out CFUnited Express: if you choose to come to CFUnited-07 in Washington DC you can take the amount you paid for CFUnited Express off your CFUnited-07 ticket!

Know anyone seeking CF training? I'm teaching FastTrack to CF again. Next class 3/6-8

Note: This blog post is from 2007. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
After a few year hiatus, I'm back to teaching the "FastTrack to ColdFusion" and soon other Adobe CF classes. I'm doing it on a contract basis with EchoEleven in Atlanta. If you know anyone in the Atlanta area interested in that class, I'll be teaching it March 6-8. For more details on the course (its topics, the location, costs, and more), see their site for the FTCF class. To register, see their schedule.

About EchoEleven Training

Before concluding, I'd like to also point out something special about EchoEleven's Adobe training. Besides an attractive facility and great instructors, they also offer the following commitments:

  • Maximum (8) EIGHT students per class
  • PERSONALIZED attention
  • Classes are NEVER canceled
  • SUPPORT beyond the classroom
  • Satisfaction GUARANTEED

Speaking of instructors, among its many, Echo Eleven has the 2005 Macromedia Instructor of the Year, Holly Quarzo who teaches Flash. If I may say so, when I was teaching the courses in the past a few years ago, I was also one of the top-rated instructors in the country. I feel that my continued growth in CFML experience since then has helped me even better in training newcomers and current developers. So come on out to the classes.

Have you sought a keyboard shortcut to "open table" in SQL Server Management Studio?

Note: This blog post is from 2007. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
I'm a huge fan of keyboard shortcuts, so imagine my dismay when I noticed that the new SQL Server 2005 "open table" option, available in Management Studio when you're viewing the tables in a database, had no keyboard shortcut (or Admin menu equivalent). The feature opens an editable grid of data in the table, which is a great when you need to do a quick fix of the data. But you have to right-click to see the option--I wonder how many never even notice it?

So I asked around and got an answer to my keyboard dilemma which actually is a generic windows solution. Did you know that you can get the equivalent of the right-click by using Shift-f10? Whatever you have the keyboard focus on, it will open its corresponding context menu. Very nice.

So in SQL Mgt Studio, open the database, then its tables, then select the table (all of which can be done with the keyboard), and then use shift-F10. You'll suddenly see that each context menu option shows the standard underline under the key to hit to execute that command (it's the "o" for open table).

Hope that may help others.

Charlie Arehart offers new per-minute phone-based support service

Note: This blog post is from 2007. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Ever felt stumped trying to solve a CF problem? You've tried everything? Searched the web? Asked on forums and lists, and you're still stuck? Or maybe you're just pressed for time.

Maybe you've wished you could hire someone with more experience but can't justify a high hourly rate. Of course, with so many web tools available to share a desktop, travel need no longer be a significant issue. Sometimes, it could help to simply have someone "look over your shoulder" via the web to resolve a problem.

Recognizing all those challenges, I've created a new service that I'm tentatively calling "AskCharlie", to be able to offer just such assistance.

Via buttons on my site or an 888 number you call, you can arrange to speak with me by phone (and optionally join me in a shared desktop session) to solve some knotty problem.

Best of all, it's very low cost and at a per minute rate (first-time callers can use a 10 minutes free option, and everyone gets a money-back guarantee). That and more are explained on my site:

http://www.carehart.org/askcharlie/

There you can learn more about why I did it, how it works, how the remote desktop sharing assistance works (no problem with firewalls, for instance), and more.

I'd welcome your thoughts on what you think of the idea.

More Entries

Copyright ©2025 Charlie Arehart
Carehart Logo
BlogCFC was created by Raymond Camden. This blog is running version 5.005.
(Want to validate the HTML in this page?)

Managed Hosting Services provided by
Managed Dedicated Hosting