April 30, 2003
Managing WhitespaceA useful tip from Christian Cantrell about leveraging CFMX's Java integration to remove unwanted output when generating XML output.
Who am I?I get a lot of email and IM messages from folks around the world because of this blog and I try to answer it all fairly quickly but it occurred to me that the vast majority of folks I talk to really don't know much about me so I feel a little anonymous at times. Yes, folks can always go dig around on corfield.org but I thought I'd post a mini bio just for the record...
I've been into programming since I was a kid and I've been programming commercially for about twenty years now. I started out doing computer language design and working in compilers, then I worked in QA and telecoms before moving into the Internet industry back in '97. I'm a Brit who moved to California in '99 - I was born to be a Californian, particularly a Bay Area Californian. I'm married (to an incredible woman) and we've gotten married four times so far. We breed and show Bengal cats and our club is organizing a cat show in San Jose in June. Computers, weddings, cats. That's me!
Hal Helms on XPI was just browsing around Hal's site and going over old newsletters I'd missed (I only recently signed up for his occasional series). Another Look: Extreme Programming caught my eye and I was very relieved to see that Hal shares some of my concerns about the claims (and goals) of the XP community. Like him, I worry that XP is so focused on agile development that it has forgotten about "process" - unless you have enough documented process that you can repeat your successes, you're doomed to repeat your failures.
April 29, 2003
CFUN-03CFUN-03 is happening in June in Maryland. If you're quick, you can still get the early bird registration ($199 thru 4/30, $249 after that). There's some great speakers, including our very own Christian Cantrell, and Hal Helms and John QT will be talking about Fusebox 4 and sharing code!
Boxing the FuseBig Damn Heroes (Tech) comments on my Fusebox for PHP write-up and thinks I'm missing the point. He agrees that Fusebox provides a lot of machinery and that small sites like mine probably don't get enough benefit from it to warrant the extra complication. He thinks you needs to use Fusebox on a large project to really understand it and notes that the big issue is how to persuade folks to risk a new methodology / framework on a large project.
I've just completed a very large project (that didn't use Fusebox) and we tried some new approaches in the early days to see what worked for us. We tried the methodology that our product development teams use. Some aspects worked well, some did not. We tried variations of XP. Again, some aspects worked well, some did not. We actually used Fusebox on a couple of early prototypes and decided not to use it extensively (for many of the reasons that I've mentioned). In the end, we used a synthesis of various approaches for the overall management of the project and a broad MVC architecture for the software, some of which we've documented in outline on macromedia.com. The development team were mostly seasoned software engineers with a background in OOA/D and OOP.
So, I'll stand by my earlier comments on Fusebox and FLiP (see my review of Jeff and Nat's book) that I don't think they don't scale to really large projects - FLiP is simply too linear and too focused on how a very small team operates and Fusebox as a whole does not really provide the necessary framework to deal with very complex business models. Is my site 'too small' to gain the benefits of Fusebox? Perhaps, but I don't believe it is so small that it can't provide a reasonable evaluation of Fusebox. The pros and cons I see in Fusebox would hold true for small to medium projects but there is a ceiling of complexity beyond which Fusebox does not provide enough assistance - and even some leading lights in the Fusebox community admit this. For those very complex projects, you need software engineering and Fusebox is no substitute for that. For smaller projects, you can get by with framework instead and Fusebox is clearly very good for that.
April 28, 2003
Dream On... Apple & Macromedia Studio MXFor a limited time, you can get Macromedia Studio MX for only $399 with the purchase of a new Macintosh computer! JD's blog had the link to the promo on Macromedia's site so here's the link to the same promo on Apple's site. Save $500! Buy that new Mac you've been promising yourself and get a great deal on Macromedia Studio MX!
ColdFusion FloatsWhat a brilliant idea! A ColdFusion-at-sea conference! Speakers / trainers include Ben Forta, David Vaccaro and Pete Freitag. Avast ye land lubbers!
April 27, 2003
Software Reliability Questioned (Again!)CNN is currently running a story about how software reliability is causing us all problems. It's nothing new. Oakwood Computing has been preaching that gospel for a decade. Dr Les Hatton, founder of Oakwood Computing, used to work with me at Programming Research back in the early 90's where we analyzed software error rates around the world and tried - mostly in vain - to persuade software companies to take quality seriously. I don't know whether legislated liability is the right way to go but it does seem that we need to do something as software finds its way into pretty much every single electrical device in our lives. People joke about having to 'reboot' a car every fifty miles if Ford / GM / whoever built cars the way Microsoft builds software but that might become reality all too soon if we don't start taking quality seriously...
corfield.org & FuseboxBack in November, I rewrote corfield.org using Fusebox for PHP and I promised I would write up the experience. I've finally found the time this weekend so now you can read what I did and what I thought of it.
April 26, 2003
Elastic Satellite, Meet The MakersAbout a month ago I mentioned a Meet The Makers interview with John Lenker and commended his website as an engaging, if somewhat complex, interactive use of Flash. Invioni puts out a period newsletter called "Elastic Satellite" and in the latest issue John writes favorably about the approach Macromedia is taking with Rich Internet Applications. The newsletter also contains a Flash tutorial about animation using ActionScript and a thought-provoking article on the pros and cons of outsourcing offshore.
Meanwhile, Brian Alvey's excellent Meet The Makers website continues it's tradition of thought-provoking articles with it's latest "conversation with..." series, this time examining the "brand gap" between actual market value and brand value.
April 25, 2003
More on Microsoft & XMLI've already commented on Microsoft edging away from supporting XML in an open manner in Office 2003. I just happened across this article on The Register which not only comments on this but provides links to some interesting and provocative pieces by various folks.
Soho Wi-FiNo, not Small-Office, Home-Office... Soho in London, England. The local council has decided to implement blanket Wi-Fi coverage throughout the Soho area, to provide its employees with fast and convenient access to the council computer systems while they are working in the area (e.g., noise inspectors patrolling the streets). The really interesting part is that they are planning to open the network up to the public later on!
April 27, 2003: The Register has posted a follow-up article.
Ted CoddI was saddened to learn of the recent death of Ted Codd, the visionary behind relational database theory who joined IBM back in 1949. His pioneering work laid the foundation for the SQL and QBE technologies that we take for granted today.
April 24, 2003
DRK - Impressive!I was just looking at Mike Chambers' DRK blog category where he shows examples of the various components from the new DRK... sweet! The validating text field and the accordian panel are awesome productivity tools and I'll be using these in a project I'm just starting (to rewrite an internal tool we use for managing URL redirects). I'll post more about my experiences as I build the tool...
BACFUG: Web ServicesI'm presenting at tonight's BACFUG meeting. I'll be going over my Under the Hood report to look at the architecture behind macromedia.com then I'll be showing a little of what would be possible if the website had a public Web Services API.
Why don't you comment on this entry, telling me what you would like to see made available as a Web Service on macromedia.com? The most popular suggestion I've received so far has been to provide Web Service access to the search function.
April 23, 2003
RestyledIn light of some comments that the grey-on-grey blog was hard to read, I decided to change it to dark-grey-on-white for the most part with some color highlights from the ColdFusion MX palette. Hope you like the new look?
macromedia.com Beta 5In this week's report, Al talks about the key drivers behind the ongoing improvements and introduces presentations by Matt Belkin about analyzing customer feedback and Tony Lopez about the new global navigation system as well as an "under the hood" report by Brandon Purcell on how we load tested macromedia.com.
April 22, 2003
DRK3 & FireflySome very exciting announcements on Macromedia DevNet today about the latest DevNet Resource Kit (Volume 3) and the Macromedia Firefly Components behind the forthcoming Flash MX Data Connection Kit.
DRK3 speaks for itself with a lot of ColdFusion content this time around as well as some great sample applications.
You can get a sense of just how exciting the Data Connection Kit will be by reading Aral Balkan's article Building an RSS Aggregator with Macromedia Firefly Components.
April 21, 2003
Jesse Fights Back?I'll consider myself flattered that Jesse Ezell responded so quickly to my recent post about his criticism of Flash Remoting! He has posted a long, explanatory post on his blog which goes into much more detail about .NET vs Flash & Flash Remoting.
Of course, I'm still not entirely happy with his comments but, hey, how would we have a healthy discussion otherwise?
1. Jesse says "Flash Remoting isn't bad." - in response to my puzzlement as to why he raised network latency as an issue and seemed to lay the blame at Flash Remoting. I'm still puzzled by his comments about network latency but his follow-up doesn't clarify his comments so I'll let that go for now. He makes a perfectly reasonable observation that .NET doesn't require him to use remoting. Well, no, of course it doesn't. Nor are any web developers required to use Flash Remoting, not even Flash developers. It's a pretty convenient way of communicating between Flash and the server (be it ColdFusion, Java or even .NET). No one is forcing you to use Flash and, yes, HTML is a perfectly acceptable user interface for many web applications. So we probably aren't disagreeing about anything here (but I'd sure love to hear more about the network latency problems that Jesse is so concerned about).
2. I questioned Jesse's logic in building an application façade in ActionScript as opposed to using a server-side façade. He's responded to this at length but I'm even more puzzled by his response than I was by his initial suggestion. First off, he criticizes the CFC-based façade for requiring you to "pass around name value pairs throughout your UI layer"... since you can pass complex data objects back and forth between Flash and ColdFusion, I don't see where the "name value pairs" come from. One of the benefits of Flash Remoting is the automatic translation of complex Flash objects to complex ColdFusion objects and back again, for example passing a query object natively from ColdFusion to Flash. He talks about many things you might want to do in ActionScript (including caching, security, error handling etc), none of which are precluded by having an application façade on the server. In fact, if you look at MVP (Model-View-Presenter) you'll see how the responsibilities of the Controller can be expanded and split logically between client and server in a way that both client and server can benefit from the use of design patterns like Façade. Design patterns are intended to be used to help us produce better solutions, where 'better' can be measured in a number of ways. No one is saying you can only apply design patterns to part of your application.
4. Back to IDEs. Since I already conceded that building a dynamic Flash application requires you to use Flash MX as well as "something else" for the other application pieces, I won't beat this dead horse too much. Jesse makes an interesting point in his response tho': "[Studio MX] is a heck of a lot more like the integration in Visual Studio 6". Since Studio MX is only the first step toward a more integrated set of developer tools, perhaps we should be encouraged by that comparison? Microsoft quotes Visual Studio .NET as $1,079 against Studio MX's price tag of $899 - the latter includes Fireworks MX and Freehand MX for developing the graphical elements of your user interface, as well as Dreamweaver MX (your code / HTML IDE), Flash MX, Contribute and ColdFusion MX Developer Edition. Oh, and Jesse asks about extensibility in the MX suite - I'd just point him at the thousands of extensions developed by the community and available from the Macromedia Exchange.
5. Spaghetti? Jesse blames
#include. That's it. Easy enough to keep that under control with a few simple coding guidelines. It doesn't sound as bad as the ASP and COM+ spaghetti he compared it to originally. Mind you, everyone knows that you can write bad code in any language (the Obfuscated C Competition even made a virtue of it!).
6. "code behind requires you to be multi-lingual" - I didn't say that. Jesse recommended using C# for parts of an application (that is written in ASP.NET as well). We're both agreeing that using the best language for the job at hand is reasonable practice - see point 3. above.
7. Limitations of Flash - thanx for the specific list! I'll leave it to others to argue the pros and cons of each point now that we have a list (others more qualified to talk about the specifics of Flash). No technology is perfect and I'd expect to see similar lists of criticisms for every language or tool we use today. Am I ignoring valid points? No, I think that's a somewhat unfair criticism, especially since the article that started this discussion tackles some of these sorts of points head-on and offers constructive solutions. That should be true of most articles on technology, working from the stance that nothing is perfect we should all be working to get the best from our tools and technology.
What I really want to know is: where's my copy of Visual Studio .NET for Mac OS X?
Pink PantherMac OS X 10.3?. I'm easily amused.
Virtual Education with Flash Communication ServerAlthough SARS has closed down schools in Hong Kong, Macromedia's Flash Communication Server is being used to provide virtual classes over the Internet.
April 19, 2003
.NET does it all?It's always interesting to read an evangelist for one particularly technology talk about other technologies (and why theirs is better, of course). In this instance, Jesse Ezell talks about why he thinks pure .NET is better than a Flash / .NET hybrid.
Jesse makes several points, some of which I just don't get at all, and seems to totally miss some other points that I would've expected to see. He talks about "network latency" making it sound like a problem specific to Flash Remoting. I don't get it - any client / server model (and your web browser is the client, regardless of whether you're using Flash or not) is going to suffer from some network latency... that's kind of a given when using a network. He doesn't say how .NET avoids this. He does however give my facades article a plug and suggests writing the facade in the client in ActionScript which would negate any benefit that Value Objects might have as well as forcing you to completely expose the layer that the Façade is intended to hide. Strange.
Next, he turns his attention to the IDE. VS.NET is a single IDE that lets you create everything whereas to use Flash (and anything else) you need two IDEs (Flash MX and something else). There's some validity in that point. I'd counter it by saying Studio MX is a well-integrated suite whose components just happen to be available separately. Even in VS.NET, you effectively have two IDEs - the visual UI creation piece and the code-centric piece. However, Jesse then undoes himself a little by criticizing Flash for simply not allowing folks to read the source code without Flash installed. Our developers use Dreamweaver MX for pretty much all our code - both client and server - using Flash MX as the visual UI creation IDE and compiler. To me, that doesn't seem like "two entirely different IDEs" (since they share a look and feel and are well-integrated). Our back end engineers can and do read the front end ActionScript .as files and our front end engineers can and do read the back end ColdFusion .cfm / .cfc files. All with a single IDE, Dreamweaver MX.
Then he apparently criticizes ActionScript by comparing it to ASP and COM+, saying that these all create "spagetti code all over the place". ActionScript allows you to create very well-structured, OO code. There's no need (nor excuse) for spaghetti code in ActionScript. Oh, and remember how he criticized the Flash + X model for requiring you to be multi-lingual? He recommends writing business logic in C# behind ASP.NET's front end. How or why is that better than writing business logic in ColdFusion behind Flash's ActionScript front end?
His closing comment is that there are "Limitations of Flash" (which he does not specify) and feels "No nead to go over these again" because he is "spoiled with all the power that the .NET framework gives [us]". I'm sorry but even as a 'single-technology evangelist' I would have expected a more coherent and reasonable argument than this... or is he just preaching to the choir?
April 18, 2003
CFMX & XML-RPCBig Damn Heroes' blog has a post about XML-RPC that provides a CFC to convert between ColdFusion data structures and XML-RPC format. This allows you to easily create XML-RPC services in CFMX as well as consume them.
Fusebox 4Hal Helms and John Quarto-vonTivadar will be unveiling Fusebox 4 at the Atlanta ColdFusion User Group meeting on May 7th. I believe it may be broadcast using Flash Communication Server but have no further details at present.
April 17, 2003
macromedia.com Updated!Another update has been made to macromedia.com this evening which introduces a new, two-tier navigation system to allow faster access to many commonly used areas such as the Macromedia Exchange and, under the Downloads tab, a page containing links to all of the product updaters - a much requested addition!
In addition to the new navigation, the update contains a host of fixes and enhances as usual and a warm welcome on the homepage for Safari users, now that Apple have released Safarai Beta 2!
CFMX / IIS Startup DependenciesAn excellent post in Dan Switzer's blog explains the startup dependencies between IIS and ColdFusion MX, and how to update the registry to ensure those services startup in the correct order.
SourceForge.Net & RSSI was pleased to see that SourceForge now provides a variety of RSS feeds for each project. This makes it much easier to keep track of your favorites!
You can now track Fire and Modus this way. But a black mark to iTerm for not having any news in their feed!
April 16, 2003
DevNet: ColdFusion & DatabasesDebbie Dickerson's Logged In column focuses on resources to get you up to speed with using databases in ColdFusion.
Debbie provides a lot of links including a new article by Sue Hove about Advanced Queries in ColdFusion that is worth reading.
Beyond Object-Oriented Programming?There's an interesting article called The Post-OOP Paradigm by Brian Hayes in the current issue of American Scientist. It's a concise history of our drive to solve the software crisis but with a healthy dose of cynicism.
April 15, 2003
cfform & /CFIDEA commonly asked question by folks trying to use
cfformand its ilk in a hosted ColdFusion MX environment is "Why won't my CF5 code work on CFMX?"
First of all, why should it break? In CF5,
According to the documentation,
scriptSrc- optional, Default:
/cfide/scripts/cfform.js- Lets the user control the URL of the script file; useful if you do not keep the file in the /cfide directory.
Useful if you don't have a
/CFIDEdirectory too! Just push your local copy of
cfform.jsup onto your hosted server and use
scriptSrcto point to it:
<cfform scriptSrc="/myscripts/cfform.js" ...>
ColdFusion is not Java, part 97: this scopeColdFusion's "this" scope seems to cause endless confusion because people keep thinking it is something like "this" in Java. I posted the following to cf-talk today in yet another attempt to highlight that CF is scope-based whereas "this" in Java is an alias for the current object, i.e., it's more like a variable.
Here's some code to show just how radically unlike Java's "this" it is:
<cfcomponent> <cffunction name="hidden" access="private"> <cfreturn "I'm a private method"> </cffunction> <cffunction name="changeable" access="public"> <cfset this.changeable = hidden> <cfreturn "I'm public - call me again!"> </cffunction> </cfcomponent>Now, call "changeable()" twice on the same instance:
<cfset obj = createObject("component","sly")> #obj.changeable()# #obj.changeable()#You'll get:
I'm public - call me again! I'm a private method
This is meant to show that ColdFusion's "this" is a scope in which you can manipulate variables with abandon, adding and changing anything you want.
April 14, 2003
Safari Beta 2Well, it's finally here - Safari Beta 2 - which has "tabbed browsing, autofill forms & passwords, privacy 'reset', import of Netscape and Mozilla bookmarks, increased standards compatibility, improved AppleScript support" and Flash Remoting support so you can now use it to browse macromedia.com!
Hopefully, folks will consider that a minor nuisance in the context of the much improved user interface on Safari. Tabbed browsing is, of course, the big news for most folks but what I missed most when I switched to Safari originally was the autofill for forms & passwords so I'm very pleased to see that in the latest beta!
Hydra - Collaborative Text EditingAfter seeing it mentioned in a few places, I've decided to download Hydra, the collaborative text editor that uses Apple's Rendezvous technology to allow more than one person to edit a document at the same time. More on that later.
Design PatternsCheck out the data & object factory's design patterns section for diagrams, descriptions and information about patterns. The code is C# but it should be easy enough to understand for anyone with a little Java knowledge. Now, who's going to rise to the challenge of creating an equivalent site for ColdFusion?
April 13, 2003
Microsoft & XMLI was disappointed but not entirely surprised to read that Microsoft's Office 2003 suite will not support XML in all versions. The earlier news that Office 2003 would support XML for data interchange seemed to me too good to be true and, of course it was.
The contrast with IBM is dramatic. IBM is enhancing its WebSphere Portal products to "deliver basic presentation, word processing, and spreadsheet capabilities". Although IBM is quick to point out that this is not intended to compete with Microsoft Office, the message is clear: Open Standards, like so many other commercial vendors - and like so much of the wonderful Open Source software that is now freely available.
I think it's interesting to see Microsoft remaining resolutely proprietary while pretty much all of the other vendors are lining up with the Open Source / Open Standards crowd.
April 10, 2003
Design Patterns & ColdFusionAs most folks know by now, I'm a big fan of design patterns and they feature heavily in the ColdFusion code that underpins macromedia.com.
Brendan O'Hara has started what promises to be an awesome series in the ColdFusion Developers' Journal which looks at classic design patterns implemented in ColdFusion MX. So far, he has covered the Template Method Pattern and the Iterator Pattern.
April 08, 2003
Safari, Opera & macromedia.comIf you are an Opera or Safari user and you're still frustrated that you have to use another browser to visit macromedia.com, rest assured that we are working on it! As Al says, we've made a few changes at our end and both Apple and Opera are making changes at their end. Keep watching this space.
MAX 2003Macromedia MAX 2003 - the event formerly known as DevCon 2003 - will take place in Salt Lake City, Utah in November (18-21). Last year's DevCon - my first Macromedia DevCon - was an extraordinary event so this year's should also be a "must-attend" conference. You can start contributing today by completing the survey - you could win some cool Bose headphones!
April 07, 2003
Under the Hood : Performance TuningBeta 4 of macromedia.com went live on Friday evening and the associated report went up this morning, along with an Under the Hood report from my colleague Jonathan Snyder who heads up our Flash development team in the Web Technology Group. There's some interesting hints and tips in there for creating higher performance Flash applications.
April 05, 2003
macromedia.com online forumsIn response to requests from forums users, the login process is now pure HTML. The previous user experience - hitting an HTML application, redirecting into a full Flash application to login and then redirecting back to the HTML application - was considered less than ideal. Because our membership machinery is implemented with CFCs, it was relatively straightforward to create a single CF page to allow users to login for the forums. Note that if you choose to create a new membership at that point, you will still be taken into the full Flash membership application as before where the single screen interactivity of Flash makes it much easier to work with the many 'views' that make up your Macromedia membership profile.
Vacation!For the first time in what feels like ages, I'm taking a few days off. Now that the website has launched, work is calming down a little so I'm having three days off to relax and hang out with my wife and our cats. I might not be posting much for a few days (and I didn't post much last week because I was very busy working on another revision of the website).
Mac Mozilla 1.3 & Camino 0.7Why has macromedia.com deemed Mozilla 1.3 an "unsupported browser" on the Mac? Mozilla 1.2.1 is supported - that's what I use - but a bug has been introduced in Mozilla 1.3 that breaks Flash Remoting. Go to DevMX.com to convince yourself it's not just the Macromedia website that is affected - we just do more browser detection and tell users that their browser won't work at the moment. Unfortunately, that same problem affects Camino too.
Macromedia continues to work with Apple and Opera to ensure that future versions of their browsers will work correctly with Flash Remoting. Then we'll be able to put them back on the "supported browser" list.
April 04, 2003
Mac OS X in Production?If you - or anyone you know - is using OS X in production, or thinking about it, then Christian Cantrell wants to hear from you!
April 01, 2003
cfargument & argumentsA curiosity about the interaction between the
cfargumentand the actual
argumentsstructure / array was posted to the CFCDev mailing list today. It seems that if you use
required="false"then such arguments appear in the
argumentsscope even if no value is passed... sort of...
<cfcomponent> <cffunction name="foo" returntype="numeric"> <cfargument name="a" required="false"> <cfreturn arrayLen(arguments)> </cffunction> </cfcomponent>If you call
fooit will return 1 even if you don't pass an argument. If you pass an argument called
b, it will return 2 - 1 for
adeclared and 1 for
You need to use
structKeyExists(arguments,"name")to detect whether an actual argument is passed - don't rely on the 'length' of the