[Looking for Charlie's main web site?]

Tools and Resources for CFers, Part 3: Blogging Tools

Note: This blog post is from 2008. 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.
As some may know, I keep a list of over 700 tools and resources of interest to CFers, broken into more than 100 categories. I've decided to start offering each category here as a blog entry. Again, to see the list of all categories, see Part 1 of this series.

Today I'll jump from the resources section of the list to the tools section. It's just coincidental (well, alphabetical) that the first items in each list is about blogging (Part 2 was on CF-oriented blog aggregators.)

This entry is about CFML-based blogging tools, both downloadable and hosted.

Blogging Tools

The following are blogging tools (tools for creating a blog) that are written in CFML. Of course, you can find blogging tools written in many other languages that you may choose to use on your site (as well as hosted solutions, where the code platform doesn't matter to you). I don't want to try to keep here a list of all such CMSes, so this focuses on those that are written in CFML and that you can download. I list, after that, hosted solutions written in CFML.

  • 1ssBlog, open source, from Ed Tabara
  • AVBlog, open source, from Andrea Veggiani
  • BlogCFC, open source, from Ray Camden
  • BlogCFM, open source, from Rick Root
  • CFBloggy, open source, from John Ramon (see also his blog)
  • Fuseblog, open source, from James Husum (not updated in some time)
  • KoldKast, free for download, and also available as a fee-based hosted solution, from Rick Smith
  • MachBlog, a blogging package from Matt Woodward and Peter Farrell, and based on Mach-ii
  • Mango, "a sweet ColdFusion blog engine" from Laura Arguello of asfusion
  • See also Brian Rinaldi's Open Source CF list of blog tools
  • I welcome additions/corrections/feedback.

There are also a few blogging solutions that, while written in CFML, are not available for download but instead are available as hosted solutions:

  • Blog-City, fee-based hosted solution
  • BlogFusion, free and fee-based hosted solutions, from Jake McKee
  • CFBlog, free hosted solution for the CF community, powered by BlogFusion
  • InstantSpot, free hosted solution, from Aaron Lynch and Dave Shuck
  • KoldKast, free for download, and also available as a fee-based hosted solution, from Rick Smith
  • I welcome additions/corrections/feedback.
Besides the tools above used to create blogs, here are some that can help with creating blog entries:
  • Amazoner, a tool to help a blogger easily recommend books that they like, using their Amazon associate ID
  • LiveWriter, a desktop application from Microsoft that makes it easy to publish rich content to your blog
  • Post2Blog, an alternative to LiveWriter
  • I welcome additions/corrections/feedback.

Additions/Corrections

This is a perpetual work in progress. I definitely welcome additions or corrections to this list. If you have any to offer, you can leave them here as a comment on this blog entry and I'll move them to the list on the site.

BTW, before you offer an update here, please do check the category on the real list. I won't be coming back here to update these blog entries to sync them if I add new items to the real list.

About this series

This entry is part of an ongoing series, sharing each of the 100+ categories and the tools and resources I (and others) have identified. They're designed to answer the questions we hear, like , "does anyone know of tools or resources to help with ...?"

Someone may ask why I'm blogging each of these categories, when they're available online anyway. It's just that, through aggregation and feeds, blogs present a way to reach a wider (and new) audience who may not otherwise come across the list of tools and resources. This also widens the pool of eyes for possible updates to the list. I want it to be as accurate and up to date as possible. I may in the future offer an RSS feed of any updates made to the list.

Otherwise, I hope people will get great value out of the lists, here or on the tools and resources page.

Tools and Resources for CFers, Part 2: CFML Blog Aggregators (and bloggers)

Note: This blog post is from 2008. 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.
As some may know, I keep a list of over 700 tools and resources of interest to CFers, broken into more than 100 categories. I've decided to start offering each category here as a blog entry. Again, to see the list of all categories, see Part 1 of this series.

Tools and Resources for CFers, Part 2: CFML Blog Aggregators (and bloggers)

There are literally hundreds of CFML blogs. Some are popular and known by most, while some less popular ones may well offer some hidden gem. Rather than try to list them all here, and indeed rather than you having to read them all, the following aggregators focus on CF-oriented blogs.

Some blogs are in all the aggregators, but it's worth keeping an eye on more than one. I provide as well a link to the list of all CFML blogs that each aggregator follows. This way, you can find out all the folks who blog about CF.

You can always find the latest version of the list above at the official site, in the category CFML Blog Aggregators (and bloggers)

Again, if you're looking for a list of all CF bloggers, note that there is no one list, but again each of the aggregators above offers a list of the blogs that they aggregate, and I've offered the links to those lists above.

Additions/Corrections

This is a perpetual work in progress. I definitely welcome additions or corrections to this list. If you have any to offer, you can leave them here as a comment on this blog entry and I'll move them to the list on the site.

BTW, before you offer an update here, please do check the category on the real list. I won't be coming back here to update these blog entries to sync them if I add new items to the real list.

About this series

This entry is part of an ongoing series, sharing each of the 100+ categories and the tools and resources I (and others) have identified. They're designed to answer the questions we hear, like , "does anyone know of tools or resources to help with ...?"

Someone may ask why I'm blogging each of these categories, when they're available online anyway. It's just that, through aggregation and feeds, blogs present a way to reach a wider (and new) audience who may not otherwise come across the list of tools and resources. This also widens the pool of eyes for possible updates to the list. I want it to be as accurate and up to date as possible. I may in the future offer an RSS feed of any updates made to the list.

Otherwise, I hope people will get great value out of the lists, here or on the tools and resources page.

Want to create simple installers for Windows, for free (built-in to Windows)?

Note: This blog post is from 2008. 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 have need to create a simplified installer (on Windows, for Windows), it turns out there's a built-in feature in Windows, called IEXPRESS, that does this for you.

It lets you package a set of files into an EXE which when run will show customized text prompts at the start and end, let the user pick the directory into which to extract, run a selected command at the start or end, and even optionally show a license they must agree to.

It turns out it's a feature that was implemented as part of the IE 6 Administration Kit (thus the IE part of the IExpress name), but I just tried it on Vista (with only IE 7 installed) and it worked just fine. Pretty nifty.

For more, see this blog entry at the awesome "Confessions of a Freeware Junkie" site. He also links there to a MS page that discusses the tool in more detail.

Tools and Resources for CFers, Part 1: Now over 100 categories

Note: This blog post is from 2008. 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.
As some may know, I keep a list of tools and resources of interest to CFers, to help you answer the questions, "what tools/resources exist to help with ...?" I started it several years ago but update it constantly, and it now has over 700 tools and resources in over 100 categories. I've decided to start offering each category as a blog entry. Below, first, are the 100+categories, to give you a heads up of what's coming.

The Categories

I've split the list into Resources and Tools. Sometimes it's not clear how best to categories some subjects, such as CFML Frameworks, CFML Engine Alternatives, Monitoring Tools/Services, Testing Tools/Services, Time Tracking/Invoicing Tools/Services, and Web Site Design Repositories, to name a few.

Again, I'll be offering here a blog entry on each of the lists as part of this series.

I definitely want to hear of any possible editions or changes. Otherwise, I hope people will get great value out of the lists.

PS Of course, don't miss Brian Rinaldi's excellent list of open source CFML products and projects. I don't limit mine to just things written in CFML (nor indeed just open source), and of course I show more than just tools but also resources. For those interested, I discuss the differences, and indeed how I link to his list often from within mine, in a section of my list. They complement, rather than compete with, each other.

Revisiting CF/Java integration

Note: This blog post is from 2008. 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.
On a mailing list, someone asked about running/integrating Servlets, JSPs, Struts, and EJBs in CF. This is one of those topics that was discussed a lot when CFMX came out, but those who didn't switch at the time may have missed out.

I thought I'd share here my answer to his question (pointing out several resources for him to learn more), in the hope that it may help others also who may only now be considering such integration.

Since he was already familiar with running JSPs on CF, but some readers here may not be, I'll start with just a quick point about that, then I'll offer what I replied to him.

CF and Java Integration

It may be important to clarify that technically, it was CF 4.51 that first afforded the option to integrate with Java (including EJBs). Though CF then wasn't built upon Java, you could point to a JVM in the CF Admin and various CF tags and functions afforded some Java integration.

CFMX 6, however, was not only only built upon Java but the Enterprise (and Developer) edition specifically added the ability to run JSPs and servlets directly within CF. More than that, there's some significant integration possible.

In the case of JSPs, you could just drop them into the same code directory with your CFML templates. Servlets take a little more work, as explained in my reply to the gent's email, below. He had been reading a JSP/servlet book and wanted to know how to run the latter, especially, on CF, as well as how to integrate with the Struts framework:

I hope I can help and I think you'll find I have good news.

You mention looking at a book on JSPs and servlets, and you ask how to implement them (and JSPs) in CF. Of course, that book won't help with that--but neither really will the CFML Reference (or a site like CFQuickdocs), if you may have looked that. You need to look at the ColdFusion Developers Guide in the CF docs (http://livedocs.adobe.com/coldfusion/8/htmldocs/Part_4_CF_DevGuide_1.html), or any CF books out there. The CF manual has a chapter specifically on this topic: Integrating J2EE and Java Elements in CFML Applications.

For instance, that chapter clarifies that to run a servlet called HelloWorldServlet, you put the servlet .java or .class file in the [CFserver]/WEB-INF/classes directory and refer to the servlet with the URL /servlet/HelloWorldServlet. It also discusses sharing data between CFML and such JSPs/servlets. You can even use JSP custom tag libraries directly within CFML, and lots more. And yes, the docs show (briefly) how to enable EJBs and call them from CFML.

That said, the coverage in the docs may leave one wanting more, so you may want to consider other resources that discuss it more. There was at least one book focused on that, Reality Macromedia ColdFusion MX: J2EE Integration. There were also lots of talks and articles back in the 2002 timeframe, when this stuff really took off with CFMX (though Java integration was added back in CF 4.51, which added a means in the CF Admin to point to a JVM that CF would work with.)

For instance, I did lots of presentations on CF/Java integration (as did others, of course). If you visit http://carehart.org/presentations/, and search for java, jsp, or servlet filters.

Doing Struts is not discussed in the CF docs, but there was at least one DevCenter article that discussed it specifically: Streamlining Application Development Using Struts in ColdFusion MX.

It's interesting to see these recent questions about things that came out with CF 6--many shops either didn't move from 4/5 right away, or did but didn't take advantage of the new features. Folks in that position will then not have necessarily followed all the resources (books, technotes, blog entries, user group talks) that came out back then.

This is one of the reasons I keep saying that any topic on the CF Meetup is welcomed. Not everyone needs only to learn new stuff, many need to learn what may seem "old" stuff. It's also the reason why I keep pointing to articles and talks I did in the way past. :-)

Though he didn't ask about it, of course also since CF 6 you 've been able to deploy CFML as a J2EE (or Java EE) web application/WAR or enterprise application EAR. That feature has improved from 6, to 6.1, to 7 (and of course is still possible in 8).

Certainly, if you're a shop that has any Java folks--and especially if there's some strong desire to lean that way, and CF is still seen mistakenly as a proprietary island--it's important to be able to convey to them that your CFML app can be deployed as a pure J2EE web app (WAR/EAR), which is a form they'd expect.

I think all this would be a topic worth my packing together for an upcoming CF meetup session. Until then, again, anyone interested in the topics can see the resources mentioned above that I and others have written.

Some of my FusionAuthority Quarterly Update Tip Columns now available online

Note: This blog post is from 2008. 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.
Some may know that I'm a regular contributor to the FusionAuthority Quarterly Update. Besides occasionally writing feature pieces, I have a tips column on the back page(s) of every issue. I'd like to point out here that the fine folks behind the magazine (Michael and Judith Dinowitz) have released the first couple of tips as PDFs, available online for free:

http://www.fusionauthority.com/tipical-charlie/

And that's not a typo. I called it "*Tip*ical Charlie" as a play on words. The titles of the articles in those first two issues were:

  • Text File Processing (PDF)
  • How Can I Call Thee (CFC)? Let Me Count the Ways! (PDF)

Enjoy, and do keep in mind that this tips column is intended to benefit newcomers as well as more experienced folks. The rest of the FAQU articles do tend to be more intermediate/advanced.

You can also find the titles for all my other FAQU articles (indeed all I've contributed to any magazine) on my articles page, and you can find the titles of other FAQU articles by other authors on the FAQU site.

Want the whole FAQU issue(s) in PDF form?

But some will want more than just my tips articles in PDF form. Here's good news: if you've not noticed, you can also get complete back issues (also in PDF form) for 7.95 per issue, and in fact the first issue is offered for free.

I suspect that as time passes, we'll see more of my tips and indeed complete issues released for free. Thanks to all the folks behind the FAQU.

Bug with Query of Query: using LIKE incorrectly finds records with null values

Note: This blog post is from 2008. 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.
Someone reported on a mailing list that they'd noticed a mistake in the results of a Query or Query operation when using a LIKE. It finds a record whose value for the column is null, which is of course wrong (that doesn't match the LIKE pattern--indeed a null never equals or doesn't equal anything).

The problem can be worked around by adding "and column is not null", but it really surprised me (and him, obviously) to discover the bug. Maybe someone else has written of it before.

But I tested it in 8.01 and can confirm it's still an issue. While I've recommended that he file it as a bug, I wanted to share it here until it's resolved. Hope this may help someone. (If we're missing something, feel free to comment.)

Here's some code you can run which uses the example app database that comes with CF. See the comments for what's wrong:

<CFQUERY NAME="demoq" DATASOURCE="cfdocexamples">
   select * from employees
</CFQUERY>

<!--- note that by default, all records in the example employees table have values in all columns --->

<cfdump var="#demoq#" label="before insert">

<!--- insert a record with only one column (causing the others to be null)
--->

<CFQUERY NAME="insert" DATASOURCE="cfdocexamples" >
   insert into employees (firstname) values ('charlie') </CFQUERY>

<CFQUERY NAME="test2" DATASOURCE="cfdocexamples">
   select * from employees
</CFQUERY>

<cfdump var="#test2#" label="after insert">

<!--- do a Q of Q of that query, for a column which would have a null for that last added records, so you'd expect it not to find it --->

<cfquery dbtype="query" name="test3">
   select * from test2
   where department like 'Sales%'
</cfquery>

<!--- that record with the null value still shows up! --->
<cfdump var="#test3#" label="dump of Q of Q">

Again, the problem is that the record with the null value still shows up in the Q of Q result, and it definitely should not. A solution for now is that if you change the Where clause to "department is not null and department like 'Sales%'", then it properly does not show the null-valued record(s) anymore.

(If anyone plays with this on their own code, note as well that Q of Q is case-sensitive, so no records would be found at all if you mistakenly used 'sales%' rather than 'Sales%', above.)

Anyone know where I can find a recorded presentation about ...?

Note: This blog post is from 2008. 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 saw a question on a CF list today, where someone was asking whether anyone knew of a recorded presentation about a particular topic. That made me think it might be time to remind the community of my UGTV site:

http://www.carehart.org/ugtv/

There you can find over 200 recorded presentations from nearly 150 presenters, totaling 220+ hours of video, all for free, and searchable, with RSS feeds, including RSS feeds based on your search criteria.

New recordings are being added all the time. Indeed, I've been thinking also of starting to publish a weekly summary of submissions here on my blog, for those who don't think to get the RSS feed.

Bloggers: validate your feed on new entries, or you and your readers could suffer. Here's how

Note: This blog post is from 2008. 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.
Have you ever found (as a blogger or as a reader of a blog's feed) that sometimes it seems the feed just seems to stop working? It could be that it's become invalid. Here's a tip.

Bloggers: you really should validate your feed on every new submission. You never know when some special character you used (or copy/pasted from elsewhere) might make your feed invalid.

In this entry, I propose a couple of possible solutions, either that you may find or that you can easily add to your own blog.

Validating your feed. Does your blogging tool do it?

I imagine some blogging tools may even offer this as a feature. It's easy enough to validate one's feed with a tool like http://feedvalidator.org/. You can easily validate your own by adding your URL with http://feedvalidator.org/check.cgi?url=yoururl. (Technically, the value of yoururl should be URLEncoded.)

Validating it yourself on each new entry

If your blogging tool doesn't do that validation for you, here's another thought: you could easily do it yourself. Here's code I use to check the feed whenever a new entry is made. It looks at the validation result and sends me an email if it fails, which has saved my bacon a couple of times:

<cfhttp url="http://feedvalidator.org/check.cgi?url=#urlencodedformat("http://carehart.org/blog/client/rss.cfm?mode=full")#" resolveurl="Yes">

<div id="content">

<cfif cfhttp.filecontent does not contain "congratulations">
   <cfmail to="myemailaddress" from="myemailaddress" subject="Your Blog's RSS feed has failed" type="HTML">
      <p><a href="http://feedvalidator.org/check.cgi?url=#urlencodedformat("http://carehart.org/blog/client/rss.cfm?mode=full")#">http://feedvalidator.org/check.cgi?url=#urlencodedformat("http://carehart.org/blog/client/rss.cfm?mode=full")#</a></p>
#cfhttp.filecontent#
   </cfmail>
   <cfoutput>
      <h4>Validation Failed</h4>
      For http://carehart.org/blog/client/rss.cfm?mode=full. Email sent to myemailaddress.
      <p><a href="http://feedvalidator.org/check.cgi?url=#urlencodedformat("http://carehart.org/blog/client/rss.cfm?mode=full")#">http://feedvalidator.org/check.cgi?url=#urlencodedformat("http://carehart.org/blog/client/rss.cfm?mode=full")#</a></p>
   </cfoutput>
<cfelse>
   <cfoutput>
      <h4>Validation passed.</h4>
      For http://carehart.org/blog/client/rss.cfm?mode=full passed.
   </cfoutput>
</cfif>
</div>

Of course, you could just drop that code into your blogging code if you're comfortable doing that.

Using your blog tool's Ping feature

But if you don't want to edit your blogging code, you could do this just as easily with your blogging tool's ping feature, if it offers one. These are more typically used to provide one or more URLs which the blogging tool will call when you offer a new entry, such as to notify blog aggregators of your new entry (rather than waiting for them to come back to find your entry eventually).

You could use that same feature have it go to a URL on your own site that runs the code above. That's what I do.

Is there a service doing this already?

I suppose someone could set up a service to do this, letting you pass in the URL and email addresses. For now, I'm not in a position to do that on my own server for others. One would need to be careful not to let this be abused in any way. I also imagine it could get used by a lot of folks.

I kind of wonder why some free service hasn't yet been created to do this. Surely someone could find a way to monetize it. :-)

Anyone know of such a tool?

Anyway, there's the idea and the code above, if it may help.

PS: This is more than just for bloggers

BTW, this applies to more than just blogs. Anything where you add items that offer an RSS feed to read them, this would make sense, such as podcasts, news items, and more.

In fact, I've been meaning to write this entry for a long time, and was actually motivated when I came across some failing OPML for one of the CF blog aggregators today. I dropped a note to the owner, letting him know that someone had slipped in a bad character when they'd entered a new feed to him. I suggested he could benefit from this idea (as would others), and that I'd blog about it. There you have it.

CF 8.01 includes licensed technology. Things that make you go hmm.

Note: This blog post is from 2008. 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 happened to notice today that the 8.01 release notes end with this reference: "Portions include technology used under license from Autonomy", and later it lists "TVirtualStringTree". These made me wonder: who/what were Autonomy and TVirtualStringTree?

I did a little digging, and hadn't seen anyone else write about these (it seems) in the CF blogopshere, so I'll share what I found. They're nothing dramatic.

Autonomy=Verity

In the first case, I guess I just missed the news, but back in 2005, Autonomy acquired Verity. (Seems like the acquisition last month of MySQL by Sun. Doesn't appear to have been too significant in the grand scheme. The tools continue to be known by their former company names.) Also, more digging found that this had been mentioned in the 8.0 release notes as well, but I just hadn't noticed it. FWIW, there was no mention in the CF7 notes/docs that I could see.

TVirtualStringTree in Report Builder?

What about TVirtualStringTree? Well, that isn't as obvious. It appears to be a Delphi component, and the only thing I can think of that's written in Delphi that might have been updated for 8.01 would be the CF Report Builder. Perhaps Dean Harmon or someone else from Adobe can confirm that guess. It's not important, of course.

Just one of those "things that make you go hmm" (to the younger folks out there, that's a reference to a bit from the old Arsenio Hall show of the early 90s. Gosh, now I know how my parents must have felt when they'd talk to me about the the Jack Parr show, when I was a teen in the 70's!)

PS: Searching the CF blogs

BTW, I said I hadn't seen any mention of this in the CF blogosphere. Was I going only on my memory? Heavens, no. I don't at all claim to have read most (or even 10%) of all many, MANY blogs out there on CF. It's great that there are so many, and that we have so many CF blog aggregators. But even then, none let you search all the past blog entries (at least it seems to me, as I searched for some text on that entry in all the aggregators and none found it).

So how does one do a quick search of most CF blogs? Well, last year I created a Google Custom Search Engine I call CFSearch. It lets me (and you)search only CF-related blogs and other resources. There are other CF CSEs out there, and I wrote about them back when I created mine.

I make a bookmark link for my CSE so that I can do such a search easily. Hope you'll consider doing the same.

More Entries

Copyright ©2020 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