Sunday, December 25, 2005

Merry Christmas

Just a quick note to wish all those who celebrate the holiday - Merry Christmas!

I am spending time in Portland Oregon with my family - eating and opening presents. Coolest present I gave this year was a Palm Tx to my wife with built-in Bluetooth and WiFi. She is still trying to get used to it as I am 'force' upgrading her from a Palm M5 - I can't seem to convince her that having WiFi on her Palm will be cool. :-)

Best present I got this year was a neato atomic travel clock from my sister that can set it self in North America (which most can) but can also read the clock signals in Europe, Japan and other places. I also received lots of good stuff from my Amazon wish list.

Happy New Year too, as my bloging frequency is low enough that I should be proactive!

Monday, December 05, 2005

Macromedia is now Adobe


More info at http://www.adobe.com/aboutadobe/acquisition.html

I am not to "attempt to act as a company spokesperson" about it, but I will say that we are all excited on the CF team for the opportunities that being part Adobe will offer us.

Adobe sells servers too you know.

Friday, December 02, 2005

Changing the target endpoint on a web service object

Just answered a question for a customer that I should probably get out into the googlesphere for others to know.

When you create a web service object in ColdFusion MX, what you are really creating is a Java object that acts as a proxy to the web service. This object derives from an Apache Axis type, org.apache.axis.client.Stub, which in turn implements the standard JAX-RPC type javax.xml.rpc.Stub. Why is this important? Well, these object have an API that you can use to affect the operation of the proxy.

Specifically, you can change the endpoint that the stub will send the HTTP POST that contains the SOAP request. Here is a code snippet that invokes a CFC web service named service.cfc that has an operation "echo" which takes a string and returns it.

ws = CreateObject("webservice", "http://localhost:8500/service.cfc?WSDL");
ret = ws.echo("hello world");


Now lets say we want to watch the request with tcpmon, the TCP/HTTP sniffer that is bundled in with Axis, JRun and ColdFusion. First we start up tcpmon (called 'sniffer' by JRun), on Windows you run c:/CFusionMX7/runtime/bin/sniffer.exe.

Fill in a listener port (try 8501) and then a target hostname (localhost) and port (8500 if CF is running its internal webserver, or port 80 if you are running a standard web server). Click the "Add" button and then switch to the "Port 8501" tab. Just to make the output look nice, check the "XML Format" check box at the bottom so tcpmon will make the SOAP more readable.

Now we can run this CFML cfscript snippet:


ws._setProperty("javax.xml.rpc.service.endpoint.address", "http://localhost:8501/service.cfc");
ret = ws.echo("Through the tunnel");


You will see the SOAP request in the to pane, and the response in the bottom pane.

How does this work? Well JAX-RPC defines a standard property name, "javax.xml.rpc.service.endpoint.address", that will change the URL the stub will send to request to.
Note that we do NOT use "?WSDL" on this URL as this is the endpoint that gets the request, not the URL of the WSDL document.

What else can you do to the Stub? Well, you can read the Javadocs for Stub class in Axis at http://ws.apache.org/axis/java/apiDocs/org/apache/axis/client/Stub.html
and you will see a few interesting APIs. With the addition of the get/set SOAP Header functions in CFMX7 however, ColdFusion already provides access to almost everything via those functions or tag attributes to cfobject or cfinvoke.

Thursday, November 17, 2005

ColdFusion MX 7.0.1 Hotfix

Hotfix 1 for ColdFusion MX 7.0.1 is now available. We spent some time on this making sure it corrected any issues introduced by the updater, so it is worth pretty much everyone running. I know that Macromedia officially says you only need a hotfix if you encounter an issue, but better to have this install so you wont encounter any of the 14 issues we fixed.

This is really old news as it was posted around November 4th, but I figured I needed to update my blog with something so that my 3 readers out there know that I am alive. :-)

Tuesday, October 04, 2005

ColdFusion cffile hotfix

We just released an updater for ColdFusion MX 7 last week and this week brings our first hotfix for it. :-)

If you use cffile action="upload" in any of your applications, you will want this hotfix which fixes a change in behavior that snuck out in the updater. Starting with ColdFusion MX, the documentation omitted the fact that you could specify a filename in the DESTINATION attribute when uploading a file. We fixed the code to match the docs, which was bad. This hotfix fixes that fix.

Wednesday, September 28, 2005

ColdFusion MX 7 updater is available

We've been working hard on Merrimack, the updater for ColdFusion MX 7, for a while and it is now available for download from Macromedia.com.

The updater has much goodness in it, including lots of bug fixes, an update to Axis 1.2.1 for web services, an updated Verity (patch level 22) and a full Mac OS X installer. Read the FAQ tech note and download the full kit from the CF downloads page. You can also find out detailed info from the release notes.

Also read "Welcome to Merrimack: An Even Better ColdFusion MX 7", a devnet article written by Damon Cooper about Merrimack.

It is free for all ColdFusion MX 7 customers, and really adds some good polish to what has proven to be an enourmously successful release.

Monday, September 26, 2005

WSJ.com - Text Messages Sent by Cellphone Finally Catch On in U.S.

Read the Wall Street Journal article here.

One of my pet peeves is when people say "The US is so behind in cell phone technology". This is garbage. One of the things they point to is our slow to non-existent embracing of SMS text messages. Now don't get me wrong, I think the SMS Gateway in ColdFusion MX 7 is one sweet feature. But text messaging has always left me cold (ha-ha). Why work 10 minutes on sending a text message when you can just make the call?

Here is a quote from the article that echo's my argument:


Text messaging usage is much higher in Europe and Asia largely because most cell phone users there pay per call or per message. Since text messages generally cost less than voice calls, customers have an economic incentive to go that route. In Britain, depending on calling plans, customers of wireless operator Orange may pay as much as 63 cents a minute to call customers of other U.K. mobile networks, while a text message costs only 18 cents, according to prices listed on Orange's Web site.

By contrast, there's little economic incentive to text-message in the U.S. because most cell phone users are on calling plans that include large bundles of voice minutes, plus unlimited off-peak and weekend minutes. Often there's no cost to make an additional phone call but for most it costs an additional charge to send a text message. Wireless company executives acknowledge that it's not easy to persuade ordinary Americans to add a new category to their cell phone bills.


So the cell phone companies are slowly convincing adults to add $10 to their bill for the privilege of 'catching up' to the Europeans and Japanese. It is worth noting that Sprint has only recently had useful SMS support in their phones. People (and you know who you are) criticized them for this. But wait, you could send Email to and from a Sprint PCS phone from day one. Why doesn't everyone do that? That way I can forward mail to/from my desktop or phone, similar to what the IM protocols also allow. They had the real thing, why support the 160 character limited thing? You got me.

It also pretty unfair to compare the wireless technologies in the US with other (physically smaller) places. We have wires already. Wires work better in almost all cases. But they are expensive. Of course countries without wires already will focus on wireless infrastructure. But does that make us "behind". I don't think so.

Ok, back to more ColdFusion related things...

Wednesday, September 21, 2005

Upgrading ColdFusion MX 7 to Axis 1.3

The Axis team is poised to create a 1.3 release of Axis shortly. Before we do that, I run the ColdFusion regression tests on the bits to make sure our customers can upgrade without problems.

Well, there is a problem, but it is due to some changes in Axis and wsdl4j, a jar file that Axis uses to process WSDL. Specifically the QName class used to live in wsdl4j.jar and now it lives in jaxrpc.jar. So this isn't a big deal except that the class changed recently to support prefixes. You don't have to care about what that means, but just know that Axis 1.3 calls a prefix API which if the wrong QName class is already loaded you get this error:

500 javax.xml.namespace.QName.getPrefix()Ljava/lang/String;
javax.xml.namespace.QName.getPrefix()Ljava/lang/String

The problem is that we are picking up the wsdl4j classes from runtime/lib/webservices.jar, the JRun supplied copy of Axis and all of its jar files (including wsdl4j.jar). This hasn't been a problem up until now, because the class moved and changed.

Here is how you fix this. It gets pretty messy so make sure you back up cfmx_bootstrap.jar.

  1. Shut down ColdFusion.
  2. Find the file wwwroot/WEB-INF/lib/cfmx_bootstrap.jar, Make a backup copy of it.
  3. Open the file with WinZip
  4. Edit the file jrun.properties. On the last line add the following package names to the end of the "exceptions line: "javax.xml.namespace.,javax.wsdl." Don't forget the comma and the trailing dots. The line will look like this.

    exceptions=javax.xml.messaging.,javax.xml.namespace.,javax.xml.rpc.,javax.xml.soap.,javax.wsdl.

  5. Save this change back in to cfmx_bootstrap.jar
  6. Start ColdFusion

The Gory Details

What this is doing is configuring CF to load the javax.xml.namespace and javax.wsdl packages using the CF classloader, which looks in cfusion/lib first, which is where we want to get the wsdl4j classes from.

Why does it get these classes from werbservices.jar? If you look at the first setting in jrun.properties, you will see that all the classes starting with "javax." are loaded by the Application Servers classloader. Hence JRun goes and loads its QName class (which is in the javax.xml.namespace package).

Whew.

Monday, September 19, 2005

ColdFusion MX 7: Replacement file for XMPP Gateway

ColdFusion MX 7 Event Gateways allow you to communicate with almost anything that you can hook Java up to. One of the best uses for it is with Instant Messaging systems. Now that Google is running a (soon to be?) major public IM network that is based on the XMPP standard (AOL, Yahoo and MSN are all proprietary), you can use the XMPP gateway included in CFMX 7 to connect your CFML code up.

First you should get the update to our XMPP protocol implementation from this
Macromedia - ColdFusion TechNote : ColdFusion MX 7: Replacement file for XMPP Gateway.

Then you should go on over to Ben Forta's blog and read this 3 part posting. Part 2 is here and part 3 is here.

What if you want to hook up to Yahoo, AIM or MSN? You can get the right software to do that from Zion Software, which sells a JBuddy-CF Plugin for ColdFusion MX 7.

ColdFusion : Vendor Support Survey

Help us in our research for Scorpio by filling out a quick survey about what platforms and application servers you use ColdFusion with.

Thursday, September 15, 2005

From PVRBlog: TiVo 7.2 OS adds content protection, blocks transfers, and auto-deletes some shows

I know the description of my blog mentions Tivo, but I really don't blog much about it. But this story is a bit scary. Apparently content can now be marked by various providers (producers, TV stations, etc) with a fairly intrusive copy protection.

Here is a follow up with more info and lots of good links.

I love my TiVo, but every since I went HD, I almost never use it as my first preference for recording shows. Everything new and lots of old stuff is now in HD, and since I purchased my Samsung 56" DLP TV the picture quality on Tivo'd SDTV is just not good enough when an HD signal is available.

I am instead using the Comcast/Motorola DVR built in to my cable box, which records exactly what comes across the cable (no loss). The interface is lame, but functional. I will be watching the HD capable Tivos that are expected to be released next year very closely. If TiVo wants to maintain me as a customer/fan, they are going to have to move faster toward HDTV.

Saturday, September 10, 2005

RSS, CFHTTP, UTF-8, and CFMX

This interesting problem with CFHTTP and RSS feeds encountered by Roger Benningfield a while back is going to be fixed in the Merrimack updater for ColdFusion 7.

He was having a subtle issue with CFHTTP and RSS feeds, where the XML coming back was being treated as a string sometimes and other times as binary data. CFHTTP examines to content-type to decide how to treat the result. If it's text/*, message/* or application/octet-stream, it is treated like a string. Otherwise it is treat as binary data.

cfhttp has a GetAsBinary attribute, which in CFMX7 can be yes, no, or "auto". In the updater I added a new value, "never", which will always treat the content as text. In addition I added the application/*+xml types as text as well.

I don't like the heard coded list much, but since we have the "never" mode, this puts the control back in the hands of the CFML developer, which is where we want it.

Thursday, September 08, 2005

I want of these..

Damon Cooper, my boss, and Director of Engineering for ColdFusion recently installed a new Sprinkler controller at his house. It is fully net enabled, and is controlled via the Web!

I just recently got a new house, which needed a new lawn, so I put in a sprinkler system. While I haven't received a water bill yet, I am getting hives just thinking about how much water is wasted by my twice a day (new lawn remember) watering schedule.

If it works out for Damon, I suspect it wont be long before I spring for this system too.

Interesting rant on MSNBC

Warning: Political posting ahead.
I find I am agreeing with almost all of the points raised here.

Image! (take 2)


I am going to try again to add an image to my blog.

This is my car, right after I bought it. It has a few more miles and scratches on it these days.

Hey, worked pretty slick.

Tuesday, September 06, 2005

Feedburner problems - fixed

I recently noticed that my feed address via feedburner was not getting updated with new postings. For some reason I had the wrong XML file configured to feedburner. I fixed that up and so those of you reading this via feedburner should now see postings again. Not that I am so very proactive in adding new entries. :-)

SOAP over XMPP

This is a fun specification: http://www.jabber.org/jeps/jep-0072.html

Most people think web services are all about HTTP, but it has always been the case that there are people who want to send their SOAP via other transports.

Wednesday, August 03, 2005

A new company in town..

Congratulations to Sanjiva and Dims on the founding of their new company WSO2. Looks like exciting things are ahead for them. This is also a great thing for Apache Axis, as now there is a company that will provide Enterprise class support for users.

Thursday, July 14, 2005

Speed up Verity DB indexing

I recently made a change that will be in the ColdFusion MX 7 updater that seems to give use a pretty nice improvement in the speed of indexing custom data using cfindex. I was trying to resolve a bug where records in our bug database that had XML in the description of the bug were not getting indexed.

Turns out that we were applying the "universal" filter to the content that we were indexing. This meant that Verity would examine the content (or the first few K) to see if it could ID the document type. This takes time and in our case was doing the wrong thing as it would see free form text with the XML declaration in it, pass it off the to XML parser, which would choke and the record would not get indexed. You can see this result by using the new STATUS attribute to assign the indexing status to a variable and dumping that after indexing.

Anyway, here is the fix. Find the file verity/Data/stylesets/ColdFusionK2/style.dft and comment out the /filter = universal line as follows:
  field: CF_BODY
# VDK will attempt to autorecognize BODY content if we use this
# /filter="universal"

You can either recreate your collections after making this change, or you can shut down the CFMX Search Service and edit the style.dft file directly in your collections that you use to index custom data.

Enjoy!

Take a tour of the Newton R&D office

Damon has posted a cool photo tour of our offices here at Macromedia in Newton.

ColdFusion Turns 10!

So we celebrated ColdFusion's 10th birthday yesterday here at the Newton office and around the world at 20 or so user group celebrations. It is hard to believe that I have been involved with CF for 8+ or those 10 years. Well, I took a 18 months break to go work on JRun 4 and Apache Axis with Glen Daniels, but around here I am the 'old timer' as I am the only engineering team member still around from the early days (before CF 3.0). See the timeline right around when the Simpsons surpassed the FlintStones.

By the way, I think it is brilliant that the event that I call "The Great Space Removal" is listed on the timeline too (November 1998). Running through all the code and changing the name of the product from Cold Fusion to ColdFusion sure was fun!

It was great seeing JJ Allaire, Jeremy Allaire and a whole bunch of other guys (yes they were all guys) including Charles Teague (Allaire employee #1), Simeon Simeonov, and others. These were the people I had spent so much time working with, changing the face of the web.

Monday, July 11, 2005

utf-7 character set support for cfmail and cfpop

Check out Paul Hastings blog entry about how to adding utf-7 support to the ColdFusion mail tags. Using Java with ColdFusion is a wonderful thing, it lets you the user take advantage of stuff like this in the open source community.

Friday, July 08, 2005

ColdFusion MX does have printed documentation!

Recently at the CFUnited conference several users expressed surprise that ColdFusion has printed documentation. Since we don't include it in the box, and apparently we don't even include a card that says where you can go to order it, there are those who think that Ben Forta's books are the only thing available.

This is most definitely not the case! Since CF 5, the ColdFusion documentation has been updated and rewritten quite a bit. The current documentation is really very good. Certainly if you need to read up on Event Gateways or ColdFusion components, those chapters will take you from 0 to 60 in no time.

So, you you need to have a printed book by your side (like I do) whenever you are coding, you can order the complete CF doc set from Macromedia at cost ($150). Start at the documentation page or go direct to the US online store.

Of course the entire content is available online at LiveDocs.

Wednesday, July 06, 2005

Change to my feed URL

According to the blogger front page, I can now include images in my posts. Blogger just keeps adding cool new stuff, but yet still doesn't support RSS (which I think you can get for a fee). Huh. Anyway, I am running my feed through FeedBurner now at the following URL: http://feeds.feedburner.com/TomJordahlsMusings. FeedBurner gather some interesting stats (like how many people are reading my blog) so if you can switch your reader to point to this feed, that would be great.

Update: Apparently I can't add an image - doesn't seem to work today, oh well.

Tuesday, July 05, 2005

Another Gateway and IM article

Here is another article from WebMonkey on how to use IM and the Event Gateway in CFMX 7: Rule Your Site with Instant Messaging. It was written by Robert Capili.

It is very similar to the one on the Developers Center I logged earlier today. Check it out.

Still more proof

I have been telling everyone that the Event Gateways we ship in ColdFusion MX 7 are great. Here is more proof on the Macromedia Developer Center: Chatting Through IM Gateways in ColdFusion MX 7 written by Matt Woodward. He writes a detailed description on how you can use Instant Messaging and the new Admin API to remotely manage your ColdFusion server! Sweet.

Friday, June 24, 2005

New ColdFusion TechNote : Problems downloading and installing ColdFusion MX 7

People may remember the firestorm when we first released CFMX7 to the web as users with (from what we could tell) a 28K modem line that traveled through northern Siberia before getting to their ISP tried almost 5 times to download the release and it was corrupted - why couldn't we get them the bits? Suggestions to wait for a CD didn't go over too well.

The ColdFusion support team is very proactive in trying to stop customers from calling them :-). They noticed that we still have a large number of support calls were coming in where the user was unable to get a clean download of the (350MB!) coldfusion install.

To try and address these problems, the have published a new tech note:
Problems downloading and installing ColdFusion MX 7.

Hopefully this will help customers upgrade to ColdFusion MX 7!

Thursday, June 23, 2005

Which English do you want?

Talking with Ray today about some Verity things, I was sharing some tidbits about the english locale and performance that I realized should be published more widely.

First, some history. The Verity 5.5 version in CFMX7 is very different that the verity 2.5 version we shipped in CF5/6/6.1. In particular we (and verity) defaulted to the "english" locale. Since then, Verity has acquired the linguistiX technology, which is the company that used to provide their international locales, but I believe they have since bought the company and/or technology and now they default to using "englishx". Where the "x" stands for linguistiX.

But ColdFusion MX 7 still defaults to english. Why? Two reasons.
1. To ensure compatibility with previous CF releases. Users expect to get the same results from indexing and searching when they upgrade to CFMX7.
2. Performance. The englishx locale is "better". According to Verity it is much better than the old english locale. Better means better search results. In order to get these results, it takes more time in the indexing of the data. Since we were trying to maintain indexing performance, we used the english locale as it means indexing will be faster.

Bottom line: If you want better search results, and indexing performance is not critical, create your collections using English (advanced) in the CF administrator or "englishx" when using the cfcollection tag.

Axis 1.2.1 released

In the better late than never category, Apache Axis 1.2.1 was released last week. With the loooong time between 1.1 and 1.2, we are trying to get back to the 'release early, release often' philosophy that is one of the strength of open source.

Update: This version of Axis by the way will be included in the ColdFuison MX 7 updater. "Comming soon".

See you at CFUnited

As a reminder, I will see you at the CFUnited conference next week. Tons of great sessions, including mine on advanced Event Gateways.

Looking for help with CFCHART?

Prayank, one of the ColdFusion developers, has created a great blog to help answer questions about the features and fixes for cfchart in CodFusion MX 7.Check it out. Charting can get very complex, and he does a great job of showing how to solve various problems you may run in to with CFMX 7 charting.

Thursday, April 28, 2005

Speaking at CF United

I am going to be speaking at the CF United (http://www.cfunited.com/) conference at the end of June in Washington DC. This is the conference that used to be called "CFUN" and it is turning in to the largest ColdFusion-only conference in the US.

I will be giving a (new!) Advanced Event Gateway talk, detailing lots more of the 'how it works' information that people have asked for and also going in to more detail on how to write a Java Event Gateway. I tried to keep the required Java knowledge to a minimum, but this is an advanced session...

Here is my session blurb: http://www.cfunited.com/topics#193

I was going to do the (old) Event Gateway session that I have at MAX last year, but that has been turned in to both an article and will soon be published as a Breeze "Macrochat" on DevNet on Monday May 2, 2005. So I was forced to write some new stuff, which should be interesting to the event gateway fans out there (you know who you are).

CF United should be a great time, a good chunk of the team is going, everyone is presenting, and the turnout looks to be almost as good as when Allaire did its ColdFusion DevCons years ago. The CF team has always been a bit disappointed with how MAX doesn't emphasize CF enough, since we feel it has the CF DevCon as its roots, so we are very excited to focus lots of attention on this conference as a platinum sponsor.

See you there!

Event Gateways article

I think I forgot to post my other article on event gateways that can be found on DevNet:

http://www.macromedia.com/devnet/mx/coldfusion/articles/gateway.html

In this article Jim Schley and I talk about the the new ColdFusion MX 7 Event Gateway system and describe how you can take advantage of in in your CFMX7 CFML applications.

Yes, I have been writing a lot of articles lately. :-)

Verity article published

I wrote an article about some of the new Verity features in ColdFusion MX 7 and it has been published on the ColdFusion DevNet site:
http://www.macromedia.com/devnet/mx/coldfusion/articles/search_cf7.html

I think that there is a lot of good stuff in the current release. I am not sure if enyone really gets the categories idea yet, but I know that pretty soon people will catch on.

Monday, April 04, 2005

I am alive

I know that I haven't posted in a while (4 months!) but things have been busy with the ColdFusion MX 7 (Blackstone) release, travel and vacation.

The CFMX 7 release is going really great. We have been working to identify the critical issues that users are having and to resolve them as quickly as possible. We have said from the start that this is the most user-driven release of CF ever, and we are trying to back that up with as much follow through from the team on the Macromedia forums and CF mailing lists as we possibly can.

We expect to release our first "Cumulative Hotfix" (which is actually #2) in a short while that will address all of the critical bugs that users have discovered in the past 6 weeks or so.

Consuming complex Types with ColdFusion

Doug James and Larry Afrin have posted a great set of notes on how to use ColdFusion MX to consume Web Services that contain complex types as arguments to their operations. This is information that should have been in the documentation from the start, but Doug and Larry went the extra mile to pull it all together.

We plan on publishing this information as a tech note and I have passed it along to our documentation folks to incorporate in to future CF docs as well.

Wednesday, January 19, 2005

Delicious Library

Delicious Library is a super sweet library catalogging application that I think I will have to buy. I can use my iSight camera to scan the barcodes of all my books, videos and video games and it will keep track of them, including tracking things I have lent to people. I am tempted to buy the Bluetooth barcode scanner ($175) to go with it, since my bookshelf is not near my computer.

Man, this software looks neat!

Tuesday, January 04, 2005

Tusnami

Sanjiva is posting reports from Sri Lanka on the effects of the tsunami over there. It is amazing to see the Software community in Sri Lanka coming together to help coordinate the relief efforts. Our thoughts are with Sanjiva and all the guys from the Lanka Software Foundation.

My wife tried to contribute to the Red Cross last night, but their site seemed to be down, which I can only hope was the result of the outpouring of donations.

Why Dataset is a bad idea

Stuart Celarier has a good post on why the Macrosoft Dataset type is not good for web services. As I have posted before, I get asked about this a lot when talking Web Services with ColdFusion MX customers. I always recommend that if you are trying to interoperate, avoid these non-standard data types like the plague.

Happy New Year!

Things have been pretty quiet on my blog for the past little while as I have been working like crazy to ship some 100% Grade A product. Things are winding down now and very shortly the bits will be frozen (no, really frozen!) and I will be off to the W3C WSDL working group meeting in Melbourne Australia. Here is praying that I will get that 60,000 mile business class upgrade I put in for, as Macromedia never pays for anything other than economy.

The holidays were great for me and the family, we went to visit my relatives who live in Portland, Oregon where I grew up. It is always nice to spend time with everyone out there. My kids especially get the royal treatment from their Aunts and Grandparents.

Here is hoping that 2005 is a healthy and happy one for you and yours.