[Looking for Charlie's main web site?]

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.

CF-specific Google search engines (yes, that's plural)

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.
Well, I was tickled to learn about the nifty feature Google's added to let people create "Custom Search Engines" (or CSEs), which can limit searches to a given set of sites, with the intention that this could produce a better topic-specific search. Wouldn't it be nice to search for Ajax and only get sites related to CF implementations and discussions of Ajax (versus other implementations, or the cleaning product?)

So I set off this weekend to create just such a CSE. You can find it here:

Charlie Arehart's CFSearch. It searches over 1,300 CF-related sites.

Update: Here's an update: if you're interested in adding this search to your Firefox search bar (in the top right corner of the browser), you can, via a simple Firefox add-on. I've blogged about it here. Now, back to the original blog entry content...

And then there were two...

But just as I was about to excitedly announce it to the world yesterday, I happened upon an entry in the google Co-op forums related to CSEs when I saw a post from good ol' Joshua Cyr . He was announcing (in October) to a forum there that he'd created one (http://www.cfhunt.com) and would they consider listing it on the featured sites page.

Imagine my dismay. He'd beaten me to the punch. Now, I was about to let it go, and just concede that really only one needed to exist, so I didn't even announce mine yesterday.

And then there were three...

But then today on a CFML list someone else (Jeff Gladnick) announced that he had created one (http://www.cfsearchengine.com). While it was ironic that yet another person had the bright idea just this weekend (it seems), it also struck me as tragic.

Each of us has spent the time gathering over 100 URLs to be searched in our CF-specific CSEs. I know it took me a few hours. I poured through about 300 of the top URLs coming back from a Google search for "ColdFusion". I have docs pages, blog pages, user group pages, CF product pages, and more. And I even went so far as to use a special feature in the CSE setup called contexts, where you can subset URLs such as by those topics (docs, blogs, etc.) Of course, then I saw so had Joshua! :-)

Turns out there are several...

So I'm here to serve several purposes. I want to point out all the CF-related CSEs I've found or been told about (yes, there are more), and hope to warn off any who would create another. We've got enough. They are listed below in descending order of their current count of sites indexed (viewable on their respective CSE home page). A couple have those other domain names by which you can find them:

Michael and Judith Dinowitz's (2544 sites):

http://google.com/coop/cse?cx=007073765987311344167:ci0-oyljemw

Charlie Arehart's (1338 sites)

http://www.google.com/coop/cse?cx=012970358153442150397%3Aekun5bf_8-m

Jeff Gladnick's (829 sites):

http://www.google.com/coop/cse?cx=016470950001878139406:ttj6oz4dukc

or via

http://www.cfsearchengine.com

Joshua Cyr's (236 sites)

http://www.google.com/coop/cse?cx=011762892154798364121:8ekkxumnm6g

or via

http://www.cfhunt.com

Adam Howitt's (38 sites):

http://www.google.com/coop/cse?cx=007221746090449490499%3Aliubjduev9o

or via

http://www.webdevref.com/

Pete Freitag's (29 sites):

http://www.google.com/coop/cse?cx=014001148856677045459%3Aih4w5ipkl6c

Mark Gaulin's (11 sites):

http://www.google.com/coop/cse?cx=011257526413916725596:ayerfqdweyg

Ray Camden's (3 sites):

http://www.google.com/coop/cse?cx=002988318612745418124%3Ae5ryuhjfoyq

And anonymous (2 sites):

http://www.google.com/coop/cse?cx=003208873850437307260%3Adbdsbawqu68

If you know of any others, drop me a comment below.

And if you're thinking of creating another...

But let me say that if you find for some reason that one of the CSEs doesn't search one or more sites you think it should, you don't need to go create another one (I don't think that was the case with any of us). Instead, you can choose to volunteer to contribute to any of the existing ones.

Who's should be crowned the ultimate one? Well, I think Joshua's the oldest, and it has the most sites indexed (for now). There's no real harm in the others remaining. Heck, like so many things on the web, sometimes dupes just mean better chances of someone finding a thing.

Why isn't it easier to find all existing ones?

I will say that I've complained to the folks at Google to have them add a means to search for existing ones. That would help both those looking for one, and those thinking of creating a new one. I looked on that featured examples page, and seeing none for CF, thought I'd do the CF community a favor. Now, instead, I see that others are reaching the same conclusions.

I will also add that the folks at Google told me (on the forum, in reply to my question) that s short-term solution is for one to use a particular set of google keywords that might help find CSEs on a specific topic:

site:google.com inurl:coop/cse topic

Sadly, that's imperfect, as it found only 3 of the CF CSEs, and not even the 3 with the most sites (I know mine's new, and perhaps Jeff's is, but Joshua's has been around since October, so this failure to find them using the search feature is dismaying, and I told Google that).

Based on a few comments below, I have added a couple more (Adam's and the HouseofFusion CSE), as well as updated Jeff's site count. I don't want to keep this up to date. As I say above, you can see the site count via the "real cse home page" link for each CSE.

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