RIAForge Updates

Tonight I released a major new update to RIAForge. The change allows project owners to specify other RIAForge users as admins. Right now these admins can't do much. They can only edit project details (the text attributes). But the idea was for me to add the basic low level support, have folks give it a try, and then I'll gradually extend other capabilities to these admins as well. So for example, you can have someone help with managing project issues.

Oh, and speaking of project issues - I applied Spry's Paged Data Set to the page. So now projects with a long list of issues will be a bit easier to browse.

Death is a giant, brightly-covered slug heading your way....

A picture is worth a thousand words...

Death or cake?

This is from NOAA's hurricane strength prediction chart for Gustav. I've got a feeling it will continue to pull to the right. I was pretty impressed by the data services at NOAA, especially the use of RSS feeds. I just wish there was a feed/API to get the long/lat of Gustav currently. In theory you could look for:

THE CENTER OF TROPICAL STORM GUSTAV WAS LOCATED NEAR LATITUDE 19.1 NORTH...LONGITUDE 74.4 WEST OR 90 MILES...150 KM...SOUTHEAST OF GUANTANAMO CUBA

in the most recent RSS item and parse it out there. I think I may whip up a quick howcloseisraytodeath() method tonight to see how accurately it can track the distance. Of course, I've got a nice Flip video recorder now so I have no excuse to avoid filming the fun this time.

Minor updates

Just a few minutes and a RIAForge update. First off, ScopeCache was updated to support file based caching. That just means you can now cache to the file system and have it persist even more server restarts. The next change was to GoogleCal. A user submitted a nice update to the addEntry code to better support all day events.

Tonight I took a look at RIAForge and wondered how hard it would be to add support for multiple admins in a project. I got it about 90% done. The system is rather simple. A project owner has the right to add any RIAForge user as an admin. She has to know the username, but that shouldn't be a problem since these are people you (hopefully) trust. The owner can add and delete these users at any time. The owner is the only one who can do this, so adding an admin to your project doesn't mean that you can be removed.

The next thing to build then is support to let these admins do stuff with your project. I'm going to launch with just being able to edit the project details and screen shots. Then I'll move on to blogging, issue management, and wiki editing.

Using a CFC to drive content to cftooltip

An AJAX quickie for you this morning. A user asked if it was possible to use a CFC to drive content to cftooltip. He had noticed that unlike other AJAX UI items, the cftooltip doesn't let you use a bind to point to a CFC/JavaScript/URL source. It only provides one argument - sourceForTooltip.

This does not mean, however, that you can't use a CFC. Do no forget CFCs under web root can still be accessed via URL. Here is a very simple example:

<cftooltip sourceForTooltip="test.cfc?method=getsource&returnFormat=plain">
The content to be wrapped. The content to be wrapped.<br />
The content to be wrapped. The content to be wrapped.
</cftooltip>

All I've done here is point to a CFC in my URL. The method argument just tells the server which CFC method to run. The returnFormat is important. If you leave this off, the result will be a WDDX string. Now this actually rendered ok in my browser, but you really want to use the returnFormat=plain to ensure a non-encoded response.

Bug with Ajax HTML Grid and File Upload Forms

Dave sent me an interesting bug this weekend. Turns out if you use an HTML grid, and if you use enctype="multipart/form-data" in your form (required for file upload forms), you get a bug when posting to the server. If you want to try this right now, skip to the end of this post and run the CFM there. (By the way, a huge thank you to David for sending me a question along with a script I could just save and run. That makes it a thousand times easier to help!) David's script simply has a grid and a submit button. If you select a row in the grid and submit the form, you get:

Review: Clone Wars - It didn't suck!

Yesterday I took my three kids to see the new Clone Wars movie. I knew it was coming to TV eventually, but I couldn't pass up the chance to see more Star Wars on the big screen. My boys are pretty big Star Wars fans themselves (gee, I wonder where they get that from) and my daughter, well, she loves her daddy so that was enough for her. The title of this blog entry is a bit of a joke. I am not one of those Star Wars fan who hate Lucas or thinks he is raping the franchise. I do think some parts of the prequels suck. But at the same time - I don't see Jar Jar being any more worse than the Ewoks. (Although we do get to see an Ewok die though...) I read quite a few negative reviews of the movie, but I went with an open mind and figured - at worse - my boys would absolutely love it.

Turns out the movie really doesn't suck! I had been extremely pleased, surprised even, by the first Clone Wars series that came out a year or so ago. Some of the scenes in that series were easily as cool as any of the stuff in the both the prequel and classic series. (Especially the giant foot ship!) In my mind, this new series is even better. The pacing is a lot more intense, and I felt that the story comes off better then the first series. (To be honest though, seeing everything at once does tend to reinforce the storyline more than seeing a series by watching a few minutes at a time.) I found it kind of cool to see the Jedi bending over backwards to help Jabba. It was also nice to get a bit more detail about the war in general. I think this movie opens the door to a lot more material in the period.

The animation style is... well interesting. It's definitely different from the first series, and it's a bit artsy, but I thought it was ok. The only character design I didn't care for was Dooku. I just couldn't take my eyes off his super deformed nose. On the flip side, Ventress was awesome. Easily as cool as Darth Maul, she is a welcome addition to the Universe and I hope we can see more of her.

If there was one thing I really didn't care for - it was the Mardi Gras Hutt. I don't remember his real name, but if you see the movie you will know what I'm talking about. His part in the story - fine. But his voice, design, etc, just annoyed the heck out of me.


Ask a Jedi: Making use of ColdSpring/Model-Glue and Remote Proxies

Dean asks:

I know your big on both Model-Glue and cfajaxproxy, so I thought I would ask for your help using them together. If I have a Model-Glue app that has all of my objects defined and managed using ColdSpring, how would I call one of my service objects using the cfajaxproxy tag? All of the examples I have seen show calling the CFC's directly, but since my service object requires the injection of my DAO and Gateway objects, the direct call would fail. So I am a little stumped as to what to pass to the cfajaxproxy tag.

There are two answers to this (well I'm sure there are more, but two I'll focus on) problem. The simpler way, and the way I've done it in the past, is to not use the CFCs at all. Instead, my AJAX based actions will use normal Model-Glue events. So for example, I may have an event call getBlogEntriesJSON. This event handles broadcasting a message to get the blog entries, and then another method to handle converting the value to JSON. However, I've known for a while that ColdSpring had some support for automatically exposing itself to remote calls so I thought this would be a great opportunity to give it a try.

Code, slide, and recordings from yesterday's presentations

All my code/slides/etc for yesterday's presentations are now available via SlideSix:

Enjoy. Note - I don't see a way to get to the presentation page on slidesix from the embeds above. If you follow these links, note that on the abstracts, I link to the recorded presentation for both.

CFC 201
Error Handling in ColdFusion

Reminder - BFusion and BFlex

Do not forget that registration is open for BFusion & BFlex, a two day conference being held in Bloomington, Indiana on September 6th and 7th. The first day focuses on ColdFusion and the second on Flex. Best of all - you can't beat the price. Free.

But just for my readers I have a special surprise. If you register with the code "JEDI", you get 20% off the registration price. That's right. 20% off. You pay 0.00 instead of 0. That's a great savings and I want to thank Bob Flynn for extending this to my readers!

Eclipse trick

I'm writing some quick code samples for my presentation tonight and accidentally discovered a neat trick in Eclipse. I went to add a new folder for try/catch demos. I named the folder, literally, try/catch. I had meant to do trycatch of course. So what did Eclipse do? It nicely made a try folder with a catch folder underneath:

I wasn't expecting that! While on the topic of file navigation and Eclipse, I also didn't know (until a few months ago) that the Del key works in the Navigator as well. It's a quicker way to delete files.

Now if I could only get it to run my Groovy files with one click instead of two...

More Entries