![]() |
Fusion Authority The House of Fusion Technical Magazine |
Issue:
165 December 2, 2006 March 30, 2007 |
| This is an opt-in magazine. To join, leave or change subscription mode, please visit the signup page. All content of this magazine is copyright Fusion Authority, Inc. It may not be reproduced without permission. | ||
by Michael Dinowitz
When I bought my current development machine I decided to go all out and get two monitors. The thought was that two would allow me to do more work, have more screen space and basically have higher productivity. Happily, this was the case and I found that I could actually do more with multiple monitors. Taking this logic to the next step, I got myself a third monitor, thinking it could only make me better. My results were not exactly what I expected, but before I go into them, let's examine the issues surrounding multiple monitors.
Let's start off with the monitor size. We're totally discounting CRT monitors as they really can't compete with LCD monitors when it comes to space, size, sound (yes, they hum) and just about everything else. My comic machine (where I download, read and archive comics for one of my jobs) has a 17" monitor, while my main development machine has two 19" monitors and a 20" extra wide. The difference between the 17" and the 19" goes FAR beyond just size. The physical difference between a 17" and a 19" monitor is just 1.5" in width and 1" in height but it feels MUCH larger. This psychological impact is very compelling and you should buy at least a 19" monitor if you have the choice. The price difference between the two sizes will probably be less than $40 and is well worth it. I thought that if the difference between a 17" and 19" was so dramatic, there should be another perceivable difference (though smaller) between a 19" and a 20", especially if the 20" was extra wide. Not only was this not the case, but I felt that the 20" was actually shorter than the 19". I chalked this perception up to the extra width.
One big problem I found with an extra-wide monitor is that it is not representative of what the average person uses. This meant that I had to resize any browser I was using to fit a standard browser size. When resizing the browser, I would have a chunk of unused space on the monitor, which just felt like a waste. Having to continually resize the browser was both an annoyance and a waste of action, which is what I was trying to avoid. Once I made the decision to only open browsers on one of the 19" monitors, I felt much better. The same decision also applied to opening documents like PDFs, because the document would scale to the monitor width and force me to scroll down more screens than I would normally. The bottom line is that the extra wide monitor was more of a hindrance than a help in many aspects, and if I had to make the choice again, I would get a normal 19" monitor (or larger).
I'm seriously thinking about taking my wife's older 19" monitor and giving her the 20" in its place.
This is where you really gain on performance. Everyone uses at least one monitor and it's usually dead center in front of them. The disadvantage of using a single monitor is that you have to flip between screens when working in multiple applications, which is common for web development. When I work I may have an email program, web browser (or two), development environment (HomeSite+), SQL Enterprise Manager and maybe even an IM program running (to say nothing about music). Flipping from one application to another takes more time and physical movement than I'd like. One solution is to either get a radically larger monitor that can show multiple applications at once, or simply get a second monitor.
Two monitors are fantastic! You can have one with your development environment and the other with your testing environment or some other combination. This side-by-side view can really enhance your productivity, and it brought mine to a whole new level. Once the decision to have two monitors is made, the question is then how to set them up. Most people keep a single monitor dead center in front of them and have a second one off to the side. This is a small alteration to their normal development setup, and only requires them to look to one side or the other to see the additional information. This is good for most, but I found that it made me twist a lot when I wanted to focus on the second monitor. This led me to what I feel is a much better configuration, which is to have the monitors side by side (usually at an angle) and the crease between them dead center. This worked VERY well for me, as I could see both monitors at the same time with little to no movement, and made me feel like I was working with both sides of my brain. I had no problem at all having the crease dead center because my eyes never looked dead center.
I worked with someone that had his second monitor on a pedestal off to the side, but this was probably because the monitors were two different sizes. If you're getting a second monitor, you should really try to make sure that both of them are the same height and width, if you can. At minimum, they should be the same height. Anything else will have a discordant feel.
I'm sure some smart-alec will suggest having the second monitor above the first, but logically, this would be more of a detriment than a help. Besides the fact that you would be nodding up and down between one monitor and the other, it's against best practices. It's been shown that you use a monitor most effectively when it is slightly lower than your line of sight. A side-to-side setup keeps to that best practice.
If you're going to use more than one monitor, you need either a video card with a dual output or two cards. My main video card is part of my motherboard, so I had to get a second one to handle the additional monitor. This second card allowed two monitors, which is why I even thought of getting a third monitor. I thought that if two monitors were good, three would be even better. Big mistake on my part. A third monitor moves you back to having a single monitor dead center and one off to either side. This means twisting, which leads to neck and/or back pain. This also means that the distance from the left monitor to the right is not a single mouse movement. When I'm on my browser in the right window and have to get to my mail in the left, I have to move the mouse, pick it up and move it again. This reduces my productivity, and I try not to have applications that I'm using that far apart. To make matters worse, because my center monitor is extra-wide, the distance is even further.
But there are advantages to having three monitors. You can have one with your development environment, one with your test environment and the third with your 'non-work' related stuff like email, IM, music videos, documentation, etc. This is really more of a 'make work' for the third monitor than an actual need. I'm sure people will respond to this post and give good reasons to have a third monitor but for the moment, I'm not impressed. If you have a choice between two or three monitors, I'd suggest getting two larger monitors in place of the third, and if you have to have a third, make sure it's the same size as the other two (and not extra-wide).
Programmers who do not play a lot of graphically-intensive games tend not to think about the video card they're using. If you're going to use more than one monitor, you really have to make sure you have a good video card. Features like the processing speed, RAM and heat sink of the card are of utmost importance. The more video you're putting out, the more your computer is working, so having a video card with an accelerator will take some of the load off your CPU. As with anything, the more RAM the better, and if you're going to be pumping video to two or more monitors, then the video card should have a good heat sink, in addition to the heat sinks on the motherboard. When I got my second video card, I made sure that I put an extra heat sink, both on the motherboard and on the computer case. I've had problems in the past where a computer has overheated and a $10 heat sink is better than a few hundred dollars in repairs.
Even with an accelerated video card with lots of RAM, I find that running some graphically-intensive applications can be an exercise in futility. I thought that turning off all monitors except one would help, but it didn't. There may be a way to turn off one of the video cards, which should solve this problem, but I haven't looked into it. Maybe a higher-quality video card will solve the problem, but the only time I run anything graphically-intensive is when trying to watch a DVD, and it's just easier to put it in the other computer than to fool around with the settings on my main one. If you know you're going to be working with applications that need more graphic power, put your money into a better card. Remember that most video games that are produced nowadays are automatically considered graphically-intensive applications, so go for the best video card you can get, because you never know when you're going to be playing a game rather than working. :)
Talk about video card features can go on for ages and pages, so rather than waste your time, I suggest this Video Card Overview at PCGuide which seems to cover all of the basics.
Windows XP allows for multiple monitors, but it lacks the fine control to say where a window will go, what it will do, etc. For this reason, I use a piece of software called UltraMon, which takes over the control of multiple monitors from the operating system. Besides controlling which screen goes to which monitor, this program gives me such needed features as a mirrored control bar for flipping between applications on a single screen. This saves having to move the mouse to the main screen to select an application on a different one. It also allows me to 'throw' different application windows to different screens without having to drag them. One feature that I rarely use is the ability to stretch a single application across all of my screens at once. Stretching your development environment across three screens is more of a detriment than an enhancement, as it causes you to swing your neck back and forth from the end of one line on your far right screen to the beginning of the next line on your far left. On the other hand, having your code span two screens allows you to view heavily-indented code better while saving yourself from potential pain.
My conclusion is that multiple monitors have definitely enhanced my productivity and should have the same effect for you. The minimum number of monitors you should be using is two and if you want to use a third, try to find a system that already has three and see how it feels for you. You should use a 19" monitor as your minimum size and avoid extra-wide monitors unless you have a specific reason to use one. Unless you're using graphically-intensive programs or games, you should not worry too much about the type of video card you use. As long as it has a good accelerator, ram and heat sink, it should be good enough, but if you have extra cash, it doesn't hurt to get better. And I'd really buy UltraMon if I were you; it's well worth it. The amount of time you save in screen switching alone will make multiple monitors worth it in no time at all. I highly recommend it.
Now if only I had a monitor company as an advertiser, I'd clean up. :)
[Top]

by Doug Boude
Frameworks in the ColdFusion community have clearly made their way from being a buzzword and novelty a couple of years ago to supporting real world applications. Likewise, overcoming the obstacles to learning object-oriented programming and frameworks is also no longer an elective. It's almost becoming a requirement for future employment. Overcoming these obstacles on your own is a long, arduous, sometimes discouraging journey. Events such as this year?s Frameworks conference hosted by Teratech in Washington, DC, however, can catapult your knowledge far ahead in short order. This conference was, without a doubt, the best career investment I?ve made since the last CFUnited.
The information available at this conference was astounding. Highly focused and real-world relevant sessions such as Model Driven Development and Code Generation, Leveraging Coldspring to Make Better Applications, Intro to Model-Glue, Reactor Fundamentals, Mach-II in Action, and many more, were presented by individuals with intimate knowledge of their subject matter. In the course of just two days I don?t believe there was a single area of OO and frameworks that wasn't covered thoroughly.
Of course I couldn't attend all of the sessions in Teratech's three-track agenda (Beginner, Advanced, and Other); There were two, though, that stood out in my mind -- Application Generation: Beyond Scaffolding, by Peter Bell, and Intro to Model-Glue, by Raymond Camden.
Peter Bell has long been an advocate of application generation, and I must say that the man has it down to an impressive science. Because the topic presents many new terms and detailed concepts, I'm just going to share the big picture. It's relatively simple: describe the application you want to create, then let the application generator create it for you based on your definition. What is the application generator, you ask. It is itself an application, but one whose job it is to read the definition (also known as the metadata) of the application you want to create, and to use those rules to write out all of the needed templates and Coldfusion components. Because not all aspects of an application can or should be defined in this manner, the newly created application comes ready-made with places for extending and customizing it.
Peter's session was jam packed with information and vocabulary that for some were brand new. The massive interest in the topic was also quite obvious, as the number of questions far exceeded the time available to answer them. Regardless of how much of this session one did or did not grasp, however, it was very powerful food for thought. For a more in-depth review of the subject of generating applications from metadata, visit Peter?s blog at http://www.pbell.com/index.cfm/application-generation.
Ray Camden's presentation of basic Model-Glue was perfect, for both those who are just starting to explore the framework and those who have been using it for some time. I have been using the framework for about six months now, but sat in to see if I had missed anything by being self-taught. I, and I would venture to say that all of us in that completely packed conference room, walked away with something we didn?t know when we came in. For instance, within the modelglue.xml result tag, whenever the attribute redirect is set to true, the original event is discarded and a new one is instantiated. Ray's humble yet knowledgeable grassroots approach to presenting the topic made it a worthwhile 45 minutes for all who attended.
Another talk worth mentioning, which caused a bit of controversy in the blogging community, was Steve Nelson's talk, "CFCs are the Framework!" For highlights, see http://ray.camdenfamily.com/index.cfm/2007/2/1/Frameworks-Conference-CFCs-ARE-the-Framework-by-Steve-Nelson and http://www.webapper.net/index.cfm/2007/2/5/cfcs-are-the-framework. Steve's point was that whichever framework you choose, you need to choose one and be consistant. Some of his more interesting ideas were that CFCs are powerful enough to manage themselves, and in many cases, XML, which is used for most frameworks, is a duplication of effort (for instance, include and cfinclude). He suggested instantiating objects and putting them into the application scope rather than using an object factory.
Andrew Sanchez, who works for Concord Management, a company that runs apartment complexes, felt that the Frameworks conference was great. He said that there's a push at his work to to get away from the hybrid Fusebox 2 applications they have and standardize on a framework. He chose the Intro to Fusebox 4 talk to get a feel for the framework. I had read about it, but this was my first chance to really take a look under the hood at actual code. I'm also looking into Model-Glue and Mach-II. So far I like what I've seen...it looks like the conversion of existing apps to Fusebox 5 wouldn't be all that difficult.
Doug Sims of Fiserv Health in San Antonio attended Chip Temm's session on Model-Driven Development and Code Generation. He said that it taught him how important it is to solidify the model the first thing. We're being integrated with a Java team. What I learned in this session could help me relate what we're doing in ColdFusion to what they're doing in Java and enable the ColdFusion team to align with our Java counterparts,
he added.
Ryan Arneson told Rob Gonda that he came to the conference because everything at my day job is procedural, but there's a push to start using frameworks for standardization.
Aaron Robertson of White Horse Ministries, a non-profit Christian ministry, said that the biggest impact for him was getting to talk to and meet the mind behind these frameworks and having one-on-one time with them. These guys are really passionate about what they're doing,
he said, not just trying to build shortcuts to produce apps. I now have more working knowledge I can take back with me to evaluate which framework is right for me.
There was as much knowledge shared during the after-hours socializing as there was during the day. Teratech hosted a very well-orchestrated special event on the evening of the first day that was quite impressive, including such team-building novelties as Foosball and Billiards. It was standing room only in the Forest Glen conference hall as attendees took full advantage of the casual atmosphere to solicit opinions on and approaches to application architecture, server configurations, and specific programming issues. I personally received feedback from a peer regarding my database design for an application being architected at my day job. What that man shared with me probably saved my team hours of work down the road. Much appreciated, Joakim!
I said it before, and I'll say it again: This conference totally rocked. To further substantiate my claim, I watched Clark Valberg interview several attendees during breaks. Every one of them, without fail, reiterated the worthiness of this event, unanimously and eagerly attesting to the real world value of the information they were receiving from the sessions. My hat goes off to Teratech (especially Liz and Nafisa who worked tirelessly to ensure everything went just so) for another outstandingly well-hosted event!
[Top]
by Dee Sadler
What a day. Lisa Heselton and I got up before the crack of dawn to get in line for the keynote. It's a good thing she did, or she might have been sent to a overflow room. I, on the other hand, being press, shouldn't have shown up till 7:30. I did go have some breakfast, but went over to the media
line. An interesting bunch. All was nice enough until it was time to get in. When the doors opened, it was like a scene out of a National Geographic documentary. I may have some bite marks to prove it. Actually, they pushed me into something, which fell over and I tripped on it while some guy stomped on my ankle. OUCH!
As you all probably know by now, there were only three announcements. Steve Jobs unveiled the Apple TV product, the new iPhone (finally -- after years in development) and the name change at Apple (Jobs changed the company's name from Apple Computers to "Apple, Inc.").
Jobs did put up some numbers for the iTunes music, tv and movie sales. Basically, more than 2.0 billion songs were sold, and 50 million TV shows. In only 4 short months 1.3 million movies were sold on iTunes. Paramount is their newest partner so instead of 100, there are 250 movies now on itunes.
How did the Zune (Microsoft's MP3 player) do? A two percent market share with iPod at 62% in November. Jobs didn't have December's numbers.
It's a 40Gb media machine, thinner than the Mini, but oh so cool. The Apple TV is designed for a widescreen TV and streams content from up to five machines. Invite your friends over for movie night! It starts at $299 and ships next month.
It slices and dices; it's a widescreen iPod with touch control; it's a mobile phone and a new way to communicate with the Internet. What is it, Steve? It's three, three, three things in one. The iPhone. Cheering, whooping applause....
OK, so even I was impressed. No buttons to push? Scroll with a flick of a finger, and it runs OSX. Amazing!
It syncs like iPod through iTunes and stores tons of data as well via the 4 gigabyte or 8 gigabyte version. The stunning 3.5 inch screen at 160 ppi is a super thin 11.6 mm. There is a 2 megapixel camera built in and a proximity sensor and touch sensor that turns off when when you answer the phone, as well as a ambient light sensor to keep you from burning extra light when you don't need it. One amazing feature is the accelerometer, which switches from portrait to landscape depending on which way you turn it.
There were many quotes that came out of the keynote, like touch your music
and The Internet in your pocket
. My favorite moment was when Jobs was making his first public conference call over the iPhone. He was talking to Jony Ive, designer of the iPod. Jony said It ain't too shabby
when Steve asked him what he thought. The British are so funny.
Here are some more features:
The pinchmakes the pictures bigger or smaller.
There are already accessories in the works, like a new Bluetooth device. It's pencil thin, has sixteen hours of audio and five hours of talk or video time. You also might have heard that the iPhone is exclusively Cingular. This doesn't surprise me, but, hey, I just went back on T-Mobile. Aw, shucks. Yes, Apple has over 200 patents on it. Finally. It will be $499 for the 4Gb version and $599 for the 8, and will start shipping in June.
Jobs' final announcement before John Mayer played was that since the official name for Apple has always been Apple computer, and since they are now much, much more than that, the new name will be just Apple, Inc. A smart move, if you ask me.
John Mayer played two songs since he has been at several recent MacWorlds. I had never heard him play live before, and all I can say is WOW. Amazing voice. I really like his music anyway, but... Wow.
Being an oldie when it comes to MacWorlds (this was my sixth), I did look under my chair when I sat down. I didn't actually think there would be anything there, but I looked anyway. (Old MacWorld veterans remember the days when there were products to touch (and sometimes to keep) stashed under the chairs at MacWorld keynotes. Alas, those days are gone...)
After the keynote and a quick lunch, we headed over to the conference. I wanted to go to the Apple User Group lounge to hear a discussion on newsletters and how we can make them better. I can't say I learned much, except for some resources that I wasn't aware of. A topic came up about users getting the newsletter easier and what we could do to get into the 21st century. HA. One younger guy said we could make sure and blog and provide an RSS feed. I kid you not that the other managers, all older, had not a clue what that was. Maybe it's the fact I am an Adobe User Group manager, and a web manager at that, although I shouldn't be surprised. Mac groups seem to be very far behind in general with technology other than Apple hardware.
One woman wanted to know what software was available to put together the newsletter quickly and easily without having to spend time and money to get it done. I almost fell out of my chair and quickly said, ah.. Pages. I don't think she even knew it was an Apple product, as others told her it was indeed from Apple, and via ASW she could get it for the group for just shipping. Again, amazing, and not the "wow, this is awesome" amazing.
We headed over to the exhibit floor after that and walked around. I should have warned Lisa that I was an impulse buyer and to stop me from buying something before I had seen everything. On the very first row we walked down, I bought a clear red case for my black MacBook. It looks like a Black cherry soda now. I did see a different vendor I know and love who had the same sort of case, with better ventilation, for several dollars less. See, I need to be stopped.
I missed the first Bert Monroy session at Peachpit, but saw him at the Lynda.com booth. He's.... Bert. No other words describe him. OK, so I'm tired and off to the MacBlast party. Maybe I'll take pics there, but then again, maybe not. We'll see.
The pics are all up on my Flickr account at http://www.flickr.com/photos/31866566@N00/
Talk to you tomorrow!
Dee Sadler is an Adobe Certified Instructor in Photoshop, InDesign, Illustrator, Flash and Dreamweaver, and hopes to add Acrobat to the lineup as soon at the newest test comes out. She is also the Adobe User Group Manager of two groups in Kansas City (http://www.kcwebcore.org and http://www.kcdesigncore.org), as well as the Vice President of the ColdFusion and Flex group, KCDevCore at http://www.kcdevcore.org. Fusion Authority readers will recognize her hand as the Creative Director of Fusion Authority Quarterly Update, where she is responsible for the look and feel of the ColdFusion publication that won a CFeMmy for Best ColdFusion Publication of the year.
[Top]
by Dee Sadler
Last night was hysterical. Cheap Trick played the party. I hadn't heard them in about 20 years. We left early though, so I'm not sure what the big drawing was for, but I hope whoever won liked it. I'll find out later, promise.
We, Lisa Heselton and I, were both pretty wiped out after yesterday, so we slept in a little bit before the Adobe User Group breakfast this morning. Lisa started getting sick a few days ago, and this morning has no voice whatsoever.
The first presentation was on Apollo. I think it's a bit of a stretch to say the majority of the room understood anything the presenter was saying. The integration of Apollo between the Internet and a desktop program is something I certainly can appreciate, but it's too bad most people won't get how cool that is.
The second presentation was from the video guy. He showed a nice combination between After Effects, Premiere Pro for the Mac, Sound Booth (free right now) and Encore. If you are a video person, this combination is essential to your work flow. I saw this presentation yesterday and was impressed. I'm sure if I were a video gal I'd be more impressed, but was pretty excited about Sound Booth. For instance, if someone coughs, Sound Booth has an auto-heal effect that gets rid of the annoying sound. This would also help you get rid of ums and ahs in a podcast before publishing.
Terry White started talking about Acrobat. The crowd must have fallen asleep because Terry was having a hard time getting them to respond. He showed how to create a PDF out of multiple files and that you now have the choice in making a regular PDF or a packaged PDF, where other files you import can be a separate PDF within the PDF you made. You can make a PDF from InDesign files, images, text and more.
A lot of us Adobe user group people are used to seeing a Breeze presentation, now named Acrobat Connect, but it's really new to the Mac users here at MacWorld. Terry showed everyone how to work a Connect meeting. Then he showed that Acrobat now auto detects form fields. This is my favorite new feature in Acrobat because I do a ton of forms. There are only a few times you have to tweak the form. Acrobat really does an amazing job, even detecting signature fields. A digital signature is a legally binding signature. Anyone with the free reader can submit the forms.
Lightroom was next in the presentation, and Terry was showing things that aren't in the public beta version. The product is pretty self-explanatory. The Lightroom team was told to not look at any other application and put it together the way it should be done. They did such a good job that a lot of the features from it ended up in Photoshop. In a nutshell, Lightroom is a Digital photo management tool for those photographers who manage a ton of photographs. There are five main environments: Library, Develop, Slideshow, Print and Web. The last three are pretty easy to understand.
Any adjustments you want to make in Quick develop are non destructive. In develop mode you can see the entire image all by itself and darken the rest of the panels by pressing L. If you press L again, the application goes into full screen mode and shows the image only. If you want to get back to the panels, just move your cursor to either side, and the panels reappear. The slideshow uses iTunes playlists for background music. There are other products that create more elaborate slideshows, but that's okay.
The print and web presets do a very nice job. The print preset can do things we only wished Photoshop would do before. It's intuitive and knows to readjust images to be landscape or portrait. Most things just work the way we think they should work. It can even handle GPS info from cameras that can use that attachment. It will launch Google maps and you can see exactly where you were when you took that picture. The web can either be HTML- or Flash-based. Terry made his images Flash-based and I was surprised at how nice the interface was.
Of course Terry had to show the new Beta of Photoshop and Bridge. Bridge (which shows all Adobe files in one place) has a new panel called Filters. This lets you quickly access the image you want using keywords, date, document type and more. I am on the Beta, but I honestly hadn't explored much. I didn't realize it has a loop tool feature that lets me find the right file without having to open Photoshop, Adobe InDesign or Acrobat. If you move one panel, the rest will "self heal" by flowing into place. There's no need to resize any other panel.
I don't know how many readers here have downloaded the public Beta, but Photoshop is getting really cool. There is now a quick select tool, smart filters, image auto alignments and more. The auto align can do perspective and auto blend layers. The panoramic features have been drastically improved. Vanishing point has also been improved so you have more control of the vanishing point's angle and can be more precise.
There was the standard question and answer session and Dave Helmly showed the group how to get pre-recorded sessions to show at their user groups.
At 11 a.m., Adobe was showing Flex. On any other presentation at the Adobe booth, there would be a standing-room-only crowd. Not at the Flex "Building Rich Internet Applications" presentation. The presenter showed the different types of components. As usual, they (the developers they have showing the products) always try to show things in Design view when they aren't comfortable there. He finally just showed the code, thank you. I gotta say, even as a designer, I am more comfortable working in the code. So, for all you developers out there, designers aren't always afraid of the code. Show us. If nothing else, it will help us to understand it better.
I admit that I was getting tired. Lisa can't even talk now and my back hurts from my Adobe bag being too full of junk. Not the "wow, this is cool "junk but the "why did I pick this up" kind. After thinking I was in the right place for the news I was getting from the parallels guy Lisa knows, I was in the wrong place at the right time. Heh... I am pretty sure they got a MacWorld award.
I walked around to the North hall and we talked to a few vendors about sponsoring the user groups. I got the sure we will
from Bare Bones, VISE and Fetch. I am going to pass their info off to the main user group program manager at Adobe so they can benefit all the user groups.
I spent quite awhile today in the Apple user group lounge. I was so tired I don't know if I would have cared who was talking. I did listen to Chuck Joiner of MacVoices talk about getting our groups into the 21st Century. I actually had it out with him about doing a meeting on MySpace. I had the FBI involved with my daughter and a sexual predator, so you won't catch me supporting MySpace. It certainly won't help us get younger kids into the meeting. More on this topic later, maybe. At 4 pm, we went over to see the diggnation guys doing their podcast from MacWorld. One of the guys was a Mac guy, while the other kept talking about Vista. Gutsy at a MacWorld convention. They were useless and talked about goats in trees and drank bear. You'd have to see their site! Now this concerns me. If two stupid beer-drinking guys get this much attention, the youth won't care what we talk about in the meetings unless the topic suits them anyway.
Too, too tired. See you tomorrow (new pictures are up on Flickr).
Dee Sadler is an Adobe Certified Instructor in Photoshop, InDesign, Illustrator, Flash and Dreamweaver, and hopes to add Acrobat to the lineup as soon at the newest test comes out. She is also the Adobe User Group Manager of two groups in Kansas City (http://www.kcwebcore.org and http://www.kcdesigncore.org), as well as the Vice President of the ColdFusion and Flex group, KCDevCore at http://www.kcdevcore.org. Fusion Authority readers will recognize her hand as the Creative Director of Fusion Authority Quarterly Update, where she is responsible for the look and feel of the ColdFusion publication that won a CFeMmy for Best ColdFusion Publication of the year.
[Top]
by Ben Nadel
Like a young boy sent into the forest with nothing but a spear and a dream, I attended my first CFUNITED event and have returned a man.
What I really meant to say was: I just attended my first CFUNITED event and I can finally see what all the hubbub is about. Michael Smith and TeraTech sure do host an amazing conference. Content aside, the registration process, freebies, setup, catering, and printed materials were all top-notch and very professional.
The event involved fifty ColdFusion enthusiasts,which felt like a perfectly sized group. For someone like myself who is not very social, it felt easy to move around and talk to people without being overwhelmed by the sheer size of the conference. And, as one of the other attendees pointed out, with a small crowd, anybody could just walk up to one of the presenters and ask questions. It was an excellent, comfortable, and cozy environment, well-suited for both socializing and educating.
Shlomy Gantz kicked off the presentations, giving us a somewhat nerve-wracking talk about ColdFusion application security. I have always felt quite confident in the way I secure my applications, but I learned several ways in which my applications might be vulnerable. Of course, I am not happy that they might be vulnerable, but I am now much better equipped to find and eliminate such security holes.
While Shlomy did a great job of helping us see where our applications could be improved, I felt the presentation fell a little short when it came to implementing solutions. He did not really provide any code samples or steps that could be taken to prevent the security issues he described so thoroughly. I understand that fitting code explanations into a one hour presentation can be quite difficult, but I think that a few slides discussing CFQueryParam, CFContent, and perhaps even form data validation would have really taken the presentation home.
Ben Forta followed with a presentation of the product code-named "Apollo". The mandatory disclaimer stated that since this product is not yet released, any aspects of it may still change. But his demo of actual Apollo applications showed that the power of this product, once it's released, is going to be unreal. For those of you not familiar with Apollo, it is basically a "FLEX-plus" runtime environment used to run installed desktop applications built in FLEX and HTML. With all the power of FLEX, access to the client's file system, a built-in browser rendering engine, and additional Apollo-specific extensions, Apollo is going to provide a revolutionary way for web developers to create desktop applications (with occasional web connectivity) in an programming environment with which we are all familiar and comfortable.
If you've ever been to a Ben Forta event, you already know that they are always packed. There is good reason for this: Ben Forta is simply a tremendous speaker. He moves and talks with such comfort and confidence that you just get sucked into whatever he is talking about. If you ever have a chance to see him present on FLEX or Apollo or ColdFusion Scorpio, I highly recommend that you make it a top priority to get there. Ben is doing a tour in the spring on Scorpio, and will be appearing at several user groups around the country. He'll be at the New York ColdFusion User Group on May 15th. For a list of all of his user group appearances, check http://www.forta.com/.
Ray Camden gave an excellent presentation on Adobe Spry, an AJAX framework developed for non-programmers. His presentation went quite quickly and with very little audience interaction. I suspect this is due to the fact that we were all sitting there thinking to ourselves, I can't believe how freakin' easy this stuff is!
Using Spry to make AJAX calls and then updating the document object model (DOM) in complex ways took merely a few lines of highly-readable, tag-based code. I can see how the ease of implementation appeals to low level web developers. But at the same time, Spry provides many tag-based and Javascript hooks that give higher level web developers a way to do some really intricate stuff. This was my first introduction to Spry, and I have to say that I was quite impressed.
Ray, like Ben Forta, has excellent presentation skills. There's also something about him that's very easy to connect with. I don't know if it's his use of words like "snob", "sexy", and "jiggle", or if it's some crazy Jedi mind tricks, but it's just fun to listen to him talk. He certainly leaves you wanting to know more, and if you get the opportunity to hear him speak, jump at it.
After Ray, Michael Dinowitz gave a good presentation on User-Defined Functions and ColdFusion Components. As a regular attendee of the New York ColdFusion User Group, hosted by Dinowitz, I had heard most of this before. During his CFUG presentations, Michael has no problem jumping from topic to topic as dictated by the questions and curiosities of the CFUG crowd. It's this shoot-from-the-hip ability and deep passion for ColdFusion that makes Dinowitz such a great source for all-around programming information. At the CFUNITED Express conference, Michael was required to fit a Powerpoint presentation into a set amount of time. I felt like getting him to limit his teachings to a single hour dampened some of the fire behind the delivery. And, while the content of the discussion was great, I felt bad that people were not privy to what I consider the genuine Dinowitz.
Michael Smith closed the conference giving a presentation on Mind Maps. Mind mapping is a neat, iterative way to get all of your ideas down on paper without having to keep track of them or worry about how they interrelate. His presentation was solid but unfortunately, I think he was speaking to a very restless crowd who had been sitting for six hours. The best part of the session was the last 15 minutes, when we all volunteered ideas on how to improve the CFUNITED Express experience. People had some really great suggestions, and I am sure these will make for an even better CFUNITED Express event next time.
Overall, CFUNITED Express NYC proved to be an excellent conference. I want to thank Michael Smith and TeraTech as well as all the speakers who helped to make this possible. I hope that this is something that they continue to have each year, and perhaps even more than once a year.
[Top]
by Judith Dinowitz
Mark Mandel, creator of the Transfer framework, took the time to talk to me about his upcoming visit to the US at the cf.Objective() Conference (http://www.cfobjective.com), May 3-6, 2007, in Minneapolis, and his plans for the next release of Transfer.
| Judith Dinowitz: | Hi, Mark... It's great to talk to you today... I hear you're going to be at cf.Objective()? |
| Mark Mandel: | Yep! I am coming across this year. I figured it was about time that I actually got a chance to meet a lot of the people I talk to online about ColdFusion, and it also gives me a chance to present on Transfer. |
| JD: | So what made you choose cf.Objective() over other conferences? |
| MM: | The quality of the content at cf.Objective() was what drew me over. I tend to develop at an enterprise level, so when spending money to travel across the US, I wanted to make sure that I could get the most out of it. |
| JD: | So you think the quality of the presentations will give someone like you – an advanced developer – an edge that other conferences don't? |
| MM: | cf.Objective() is targeted specifically at enterprise-level development. Generally speaking, other conferences try and reach a broader audience, and rightly so, because there is a huge market for this. However this means that advanced developers that are looking to learn something new may well be forced to listen to a lot of information they already know to find the small part that they didn't. |
| JD: | Good point! And there will be many developers who may want to find out about using Transfer in their application development... I notice that you're doing two sessions on Transfer. Why split it up into two? |
| MM: | The main reason is that Jared asked me to. But in reality, it's mainly because there is SO much information that I can talk about on Transfer that it's impossible to keep it to one session. My introductory presentation is already splitting at the seams, so trying to pack in information for a more 'enterprise' audience was simply out of the question. A second presentation was just a necessity. |
| JD: | Sounds like Transfer has a lot of meat to it. What do you think is the biggest barrier for intermediate and advanced developers who are trying to get into Transfer? Is it the amount of information they need to know, or is it something else? |
| MM: | Honestly, I'm not sure if there is a huge barrier for advanced developers – especially for those developers who already understand the basics of ORMs and the like. They tend to pick it up pretty quickly. The barrier seems to be for beginner and intermediate developers who may not know about ORMs, who often struggle with the 'what does this do for me' part of the equation, and the more conceptual parts of the framework. That being said, the Transfer user base has been extremely helpful in fleshing out that part of the documentation, including a substantial overview and FAQ for the next release, which I think will help out a lot of people. |
| JD: | That's great... When is the next release coming out? |
| MM: | The next release is in its final stages of bug tracking, and I still have some documentation to write, but I'm pushing hard to get a release candidate out before webDU, which is next week. |
| JD: | So the new documentation and FAQ are already live on the Transfer website? |
| MM: | Currently they are only available to those who are on the mailing list, as it has been a corroborative process between myself and the user base on the mailing list. It's been a great process, and much thanks needs to go out to Jaime Metcher, Nando, and Aaron Roberson for being the main contributors. When I release the release candidate, I will make the documents public. |
| JD: | I'm sure the documentation will be much appreciated by developers who are learning Transfer. So the new release of Transfer will have a lot of new features? |
| MM: | The next release of Transfer has several critical bug fixes, as well as two new major features, the first being a new Observable event called 'onNew' which can be Observed by other CFCs. This is primarily a way to enable developers to inject other CFCs into their generated TransferObjects when they are first created.
The second is a feature called Transfer Query Language. This is a really big new feature, and enables you to do several new things. Essentially, it enables the developers to do database queries, but through a language that mimics the object relationships that they have defined in their configuration file. |
| JD: | Wow.. Both features sound like they'll add a lot of new possibilities for Transfer applications... especially Transfer Query Language. |
| MM: | I think TQL is going to be a powerful new feature for Transfer, and while it has yet to be documented properly, those that are already playing with it are enjoying it a lot. |
| JD: | How does TQL work? Is it built on SQL? |
| MM: | TQL works essentially as another layer of abstraction between the database and the Object model that the developer has created. For an example, if I had a Blog system, which had Posts, which had an Author and a series of Categories that is also belonged to, I could do a query to return me all those results like so:
query = getTransfer().createQuery("from post.Post as Post join user.User as Author join
system.Category order by Post.createdDate"); where post.Post, user.User and system.Category are all objects that have been defined in my Transfer configuration file. |
| JD: | So query is a verb in your Transfer Query Language? |
| MM: | There is a TQL Query object that is used in these operations, that also allows for more features of TQL to be used – i.e., being able to set mapped params, telling the query to be distinct, whether or not to tell the query to Alias the column names to the property names defined in the Transfer configuration file, and also whether or not to cache the evaluation of the TQL. |
| JD: | So that query object is createQuery? |
| MM: | That query object is returned form 'createQuery()', yes. |
| JD: | The query object is created in that code example and returned from the createQuery function.. So Transfer is actually creating its own queries using TQL... |
| MM: | Exactly! The TQL gets resolved into the correct SQL, without you having to lift a finger. |
| JD: | Hmm... Can you explain the code example you gave?
query = getTransfer().createQuery("from post.Post as Post join user.User as Author join
system.Category order by Post.createdDate"); What is query here? |
| MM: | Query is an instance of a Query.cfc, which is the holder for information about the TQL script. createQuery("...") returns an instance of a Query.cfc object based on the TQL script provided. Are you with me so far? |
| JD: | Yes. |
| MM: | Okay. There are attributes on the query object I can change. For example:
query.setDistinctMode(true);
This means that when I finally ask Transfer to evaluate the TQL that is held in the Query object, it will be a 'SELECT DISTINCT'. |
| JD: | Yes. |
| MM: | Cool. Now, when I want to evaluate my TQL into an actually ColdFusion query result, I can have:
qResult = getTransfer().listByQuery(query);
This translates the TQL into SQL, and returns the result from the database. Does it all make more sense now? |
| JD: | Yes... So you are trying to make it easier for developers to create queries that will work natively within the OO paradigm? |
| MM: | Yes, that is exactly what it enables you to do. You already have a set piece of knowledge about how your model is built. TQL means that you don't have to concept shift in your head when you go to create queries on your database. And it also means that you can write less actual query code, and Transfer already knows about the relationships in your system. There is still a definite place for good ol' fashioned SQL queries, but this is just another tool in your tool belt. |
| JD: | I assume that your first Transfer presentation will deal with the basics of what an ORM is, for the benefit of those intermediate developers who are still unclear on that... |
| MM: | That is exactly what it does. We do a good deal of covering of the why you would use a ORM, and then we go into some of the basics of how to use Transfer. |
| JD: | And these new features we've been discussing will be part of your advanced talk? |
| MM: | Yes, the advanced talk will cover aspects of the caching mechanism, Decorators, TQL and Transfer Observable Events. |
| JD: | So those who are familiar with Transfer and ORMs but want to get updated on the latest capabilities should attend the Advanced talk... Will intermediate developers who attend the basic talk still get something out of your advanced presentation? |
| MM: | I definitely think so. While the advanced talk will be coming from the perspective that you already are familiar with Transfer, if intermediate developers attend the initial talk, at the very least they will go away with some ideas in the back of their minds that will probably turn on some light bulbs down the road. |
| JD: | Now I wish I were going to cf.Objective() – Your talks sound so fascinating! |
| MM: | Well, I hope so. I've put a fair amount of time and effort into Transfer, and I'm really proud of the project... Strangely enough, that means I can talk about it for hours on end. Hopefully we will get a chance to meet in person next year. |
| JD: | Hopefully! By then, I'm sure I'll be on the conference circuit again. Mark, before we go, is there anything else you'd like to tell our audience? |
| MM: | I'm really looking forward to coming to cf.Objective. It's going to be a great chance to actually chat to a lot of people I only know through text. So if you see me somewhere in the halls, please feel free to pop over and say Hello. Also, make sure you check out the Fusion Authority Quarterly Update article on Transfer that is coming out shortly, in issue 3. It is a really good article, and a great read for anyone who is interested in Transfer, or if they are already using it, and are looking for a refresher. |
| JD: | Thank you, Mark. It was a pleasure speaking to you today! Good luck on the next release of Transfer, and have fun at cf.Objective(). |
| MM: | Mark: Thanks Judith, always a pleasure! |
Those who wish to enjoy Mark's presentations at cf.Objective can register at http://www.cfobjective.com/conference/index.cfm?event=page.register. The early bird price for all three days of the conference, which ends on April 1, 2007, is $395.
[Top]
by Clark Valberg
Hal Helms is regarded by many as the patriarch of the ColdFusion MVC movement. His upcoming CFUNITED 2007 talk, "OO Programming with CFCs", promises to be an exploration of OO techniques and thinking from one of the foremost experts on the subject. Today I sat down with Hal to find out a bit more.
| Clark Valberg: | Hey Hal, thanks for joining me today. |
| Hal Helms: | My pleasure, Clark. |
| CV: | So I want to chat with you a bit about your upcoming talk at CFUNITED 2007, "OO Programming with CFCs". |
| HH: | Ahh, yes.. one of my favorite topics on which to pontificate. What would you like to know? |
| CV: | Well, by the sound of it, it appears to be a beginner's topic. Is that right? |
| HH: | No, I wouldn't say so, Clark. You can use CFCs to wrap some functionality, but that's a long way from doing good OO programming. |
| CV: | So would you say there are "degrees" of OO? |
| HH: | Yes. And from my experience, the more you learn, the richer your designs become and the more robust your code. But there's a long stretch between learning the basics of classes and methods and real OO mastery. |
| CV: | So, should all ColdFusion applications be written in an "OO style"? That seems to be the word on the street. |
| HH: | I wouldn't say that either. For simpler applications, which we all build a fair number of, procedural programming works just fine. OO can really be a hindrance in those cases. |
| CV: | Hindrance? How so? |
| HH: | There's a level of complexity for doing OO apps and if all your client needs is simple "grab stuff from a database and display/massage it", writing a bunch of classes provides little benefit, but significant cost. |
| CV: | Ok, that makes sense. So let's say our company starts developing all new applications in a "strict OO" style. What happens with our procedural developers? Do they become our new parking attendants? |
| HH: | Hopefully not! If your company starts doing OO development, there's still plenty of space for those procedural developers to help out as they acquire OO skills. |
| CV: | So how long do you think it should take for proficient procedural developers to get the hang of OO? |
| HH: | When I was doing Smalltalk, we used to say it took a good six months, sometimes a year, for a procedural programmer to change the mindset and learn the skills. One of the biggest hindrances is the illusion of knowledge. I must be an OO programmer because I'm writing classes and instantiating objects. |
| CV: | What about Design Patterns, Hal? Where do they fit in? |
| HH: | Design patterns show us new ways of thinking about old problems. They can be very useful, not when they're slavishly copied, but rather as inspiration. |
| CV: | I read a book about some "gang of dudes" and in it were tons of design patterns. Should I start cramming those into my apps like crazy, or what? |
| HH: | The more the merrier. Well, OK, not really. Design patterns can help us see new ways of looking at old problems. That can be (a)humbling and (b)inspirational. What you want to do is understand the mindset of the design pattern designers because you're learning the amalgamated wisdom of a lot of expert OO designers. |
| CV: | So something to be internalized, but not just copied? |
| HH: | Yes, very much so. |
| CV: | So, Hal, what do I have to know before coming to your session? |
| HH: | It helps if you have already worked a little with CFCs and know the basics. |
| CV: | How about the bottom line here? Will attending your session and learning OO really advance my career as a ColdFusion developer? |
| HH: | What I would hope for is that it will help you think about writing apps in a different manner. And yes, that means it can good for your career. But it's because really grappling with OO will make you a better thinker, a better problem solver. And that makes you a better programmer. |
| CV: | So if I want to bone up a bit before your session, can you recommend any good books? |
| HH: | Head First OO Analysis and Design would be a great choice. |
| CV: | Right, those Head First books are great.. What if I need something a bit more "hands-on", say for myself, or my team? Your condo is in Sarasota, right – when is a good time to drop in unannounced? |
| HH: | I'm always open. Hey, wait a minute! Actually, I teach classes on this subject. My website, HalHelms.com, has a newsletter sign-up where folks can keep abreast of classes and schedules. |
| CV: | Sounds great... Well, Hal, I'm looking forward to your talk at CFUNITED 2007. Thanks again for chatting with me today. See you there! |
| HH: | Thanks, Clark. |
Those who wish to enjoy Hal's presentation at CFUNITED 2007 can register at https://secure.teratech.com/cfunited07/register.cfm. The conference takes place on June 25th- June 30th, 2007, with options for a four-day, three-day and one-day (Saturday only) conference package.
[Top]
by Clark Valberg
Today I sat down with none other than Mr. Raymond Camden, well-known ColdFusion community figure, serial author, prolific blogger, and Louisiana's state delegate to the national "Lost" fan club (ok, I made that one up). Ray is responsible for some of the most widely used open-source ColdFusion software to date (BlogCFC, anyone?). If you've never perused, installed, or perhaps even profited from, a piece of Ray's code, it's probably just because you don't get Internet access under your rock. So here's my attempt to get the goods on Ray's upcoming cf.Objective() presentation, "Model-Glue, Spry, and You". If you haven't registered for cf.Objective() yet – get to it, man!
| Clark Valberg: | Ray, thanks so much for taking the time to chat with me today. |
| Raymond Camden: | No problem at all, Clark, thanks for having me. |
| CV: | I see you're speaking on a pretty nifty topic at cfObjective(). Now, I was there for your Spry presentation in New York last week and I must say, one would be hard up to find anyone as passionate about Spry as you are. But I have to ask, where does Model-Glue come in? |
| RC: | Model-Glue, as a framework, helps us organize and build our applications. And while I think most folks get that, I think there is some question as to how to integrate AJAX into the equation. |
| CV: | Sounds like we're talking about better "views"? |
| RC: | Well, I'm not quite sure better is the right term per sé. The reasons for using AJAX are well known, and in general, yeah, they are there to improve the experience. I think folks should not think, "AJAX is always better". It will lead to overuse. |
| CV: | Ok, so I'll refrain from saying that Ray Camden is making Model-Glue more "Web2.0" |
| RC: | I think everyone is quite aware of my feelings on that particular phrase. |
| CV: | It sounds like this topic may have been born from personal experience. What can you tell us about your first time developing a Model-Glue / Spry application? |
| RC: | At first, I wasn't sure how to approach it &ndash mainly because I had this mindset of, "Oh, its AJAX. It's special," which is a mistake, really. I then simply treated it as one more request, just one that was serving up XML instead of text. My talks cover the ways I found to make it a bit simpler to handle. |
| CV: | What about other popular AJAX libraries? What is it about Spry that you feel makes it an especially good fit for ColdFusion / Frameworks? |
| RC: | The number one reason, which isn't really framework-related, is how simple Spry makes things. As you saw at the presentation, there is a minimal amount of JavaScript involved which allows you to focus more on presentation. Take a typical example: displaying a grid of products. In other frameworks, I may spend more time on the JavaScript side of it. In Spry, though, I can bypass most of that and get to the display quicker. |
| CV: | So speed of deployment is the big advantage? |
| RC: | [Nods] Many of the same things that apply to ColdFusion. And tied to that, is Model-Glue, which also gives you a guide to setting up your application. So it's all about RAD [Rapid Application Development], really. |
| CV: | I saw a Spry 1.5 announcement on your blog recently. Anything you think might be particularly exciting for us ColdFusion developers? |
| RC: | Everything. Seriously, Spry continues to grow into a strong product. Every new release sees great improvement. So while it is fair to say it isn't Protoype yet, I think it's growing quickly. |
| CV: | So can we expect to see some fancy examples, or what? |
| RC: | Heh, yes. In my spare time. 1.5 is still a preview, so you can't really download it yet, but you can view the source and play. Probably not recommended for production. |
| CV: | Well, Ray, that sounds like a whole truckload of goodness. Think you can fit it all in one session? Darn it, I'll bet you a roast beef sandwich and a bottle of chianti that you can't! |
| RC: | Heh, I'll take the sandwich. |
| CV: | One final thing. I've been experimenting with ColdFire and now I can't stop playing with debug information long enough to get any REAL work done. |
| RC: | Heh. ColdFire was a bit of a surprise hit. We released on Tuesday, I think, and it's #9 at RIAForge already. Within a few hours we found some significant problems. So for a LOT of people it doesn't work at all, which saddens me. But we (we = Myself and Adam) are working on it. I've made changes to the ColdFusion side and Adam is working on the front end. I think we are close, and the next release should at least make it workable for most folks. That is our #1 goal, to make it work right. After that we have some darn good ideas for features to add. |
| CV: | You're in a non-stop release cycle. I guess that's why they call you a machine, eh? |
| RC: | It's easy when you love something. |
| CV: | Well, thanks for the chat, Ray. I'm looking forward to your talk. See you at cf.Objective()! |
| RC: | See you then, Clark! |
Those who wish to enjoy Raymond's presentations at cf.Objective can register at http://www.cfobjective.com/conference/index.cfm?event=page.register. The early bird price for all three days of the conference, which ends on April 1, 2007, is $395.
[Top]
by Clark Valberg
Today I sat down with Simon Horwith (http://www.horwith.com/) to discuss his upcoming talk at CFUNITED. Simon is the CIO of AboutWeb, editor of ColdFusion Developer's Journal, an Adobe Certified Master Instructor, a Flex developer, a consultant to some of the largest ColdFusion-using organizations in the world, and if all that's not enough, he's also quite the globe trotter.
| Clark Valberg: | So I wanted to chat with you a bit about your upcoming CFUNITED presentation, "Success from the Trenches - Building Better Applications". |
| Simon Horwith: | Sure, what would you like to know? |
| CV: | Is it true you've been building ColdFusion applications for 11+ years now? |
| SH: | Yes, sir, since version 1.5! |
| CV: | That's a long time to be in the game, man. You have to have seen quite a bit in your time. |
| SH: | It is true. I began with the old IBM midrange machines (System 36/38 and AS/400s) and got into Java when it came out. From there I began with web development and started using ColdFusion when it was released (it was much nicer than Live Wire). |
| CV: | Tell us a bit about your first "big" project. |
| SH: | My first Big Project... hmm... That's a tough one. "Big" is so relative. I can tell you that historically most of my projects weren't large in terms of team size (usually topping out around 7-10 developers), until about 6 years ago. Since then, I've overseen teams as large as 100+. |
| CV: | So in all this time, you must have had at least a few projects that fell under the "close calls" department. |
| SH: | "Close Call"? Oh sure. Close calls are common, but these days aren't usually a threat to a project's success. When I was starting out, there were so many projects that never would have launched if we didn't work 36 hour shifts at the end to get everything done. A close call for me now is when I don't come in about 15% ahead of schedule unless it's for very good reason. |
| CV: | Spoken like a true expert. |
| SH: | You said it, not me. [Smiles] |
| CV: | So I know you're involved with the architecture of applications, soup to nuts, including interfacing with the client, right? |
| SH: | Definitely. I'm usually very involved in requirements gathering, prototyping, etc. and then I oversee the development team... and I get more involved again at the tail end when load testing, delivery, etc., need to get done. I guess you could call me a very hands-on executive. I suffer from the horrible affliction of perfectionism, so it's tough for me to not get really involved in development. Plus, I'm adamant about making sure the client is happy, so I like getting knee-deep with the clients as well as the development team. I suppose I'm at risk of evolving into a technical project manager, if I'm not careful. |
| CV: | So in your talk, you tackle the question of ColdFusion and scalability. |
| SH: | Yes, that's right. |
| CV: | Why do you think there is a sort of confused conventional wisdom among many business people that ColdFusion applications don't scale? Where does this come from? |
| SH: | Well, those who are properly informed know the truth. It is completely possible to write scalable applications in ColdFusion. Countless organizations, including fortune 500 companies and government agencies, do it all the time. But, in all honesty, there are a few real issues that lend to the popularity of this myth. One is that ColdFusion, as a language, is relatively easy, which means that at some level it's actually easier to write applications that don't scale. And you know how fickle companies can be when it comes to technology. Sometimes all it takes is one bad experience and a client can write off a platform altogether. |
| CV: | So you get called in a lot to conduct high-level code reviews right? |
| SH: | Sometimes not so high-level. Quite often I've got to roll up my sleeves and pour over some code line-by-line. |
| CV: | So when you're doing all this, you must encounter all manner of evil committed in the name ColdFusion. |
| SH: | With the horrors I've confronted, sometimes I just feel lucky to have lived to tell the tale! |
| CV: | So tell me, when you first dive in there, are there any red flags that you keep an eye out for? |
| SH: | Oh, definitely, too many to mention! |
| CV: | Well, give us a nice big one.. |
| SH: | Big one – Hell, I'll give you three huge ones:
|
| CV: | Do tell? |
| SH: | Looping – Bad code is one thing. Bad code inside a loop is disaster. Recursion is very powerful and can also take your server down. Code that wastes ten milliseconds, when inside a loop that may loop thousands of times, will crush your server and/or page load times. Pay attention to what's inside your loops, for goodness sake! |
| CV: | I suspect that at some point, we've all seen some of these ... or even done them! |
| SH: | I'm sure... and I can tell you – I've suffered all four and then some. I am in a unique position in that I've not only written a lot of code (a lot of code) in the past twelve years since ColdFusion 1 came out. I've also performed, most likely, more code reviews than anyone on the planet. So I really know what does and doesn't work, and what to look for. |
| CV: | What about best practices? Do you feel there are enough resources for those in the business of developing enterprise level applications in ColdFusion? |
| SH: | No, I don't think there are enough resources on best practices. But the larger problem is that there is so much dispute over what is and is not a best practice, which makes it very difficult to provide reliable resources for developers. |
| CV: | Do you think frameworks wars contribute to this problem? |
| SH: | I think the debate over which framework is best is a silly one and doesn't really contribute to anything. Each has its strengths and weaknesses. I think the debate over whether or not to use a framework is useful. I should explain, though. The question of whether or not to use a framework is actually quite ridiculous in and of itself. This question has to be answered in the context of what you're trying to achieve, on a project by project basis. Hal Helms, Joe Rinehart, and every other framework advocate would tell you the same thing. That said, many people who use a framework immediately fall victim to the line of thought that "framework x will solve all my problems" and the debate will hopefully force them to think outside the box. It's worth noting that most "anti-framework" people suffer from the same problem; they think all frameworks must be bad. Everything needs to be taken in context. |
| CV: | So are these frameworks debates still meaningful? |
| SH: | They're meaningful because they make people think. There are just as many reasons not to use a framework as there are to use one. There are just as many reasons to use Fusebox as there are to use Model-Glue. There are an equal number of reasons not to use any of the above. When I get into these debates, it's for one reason: to make people think. |
| CV: | So if I'm interested in building really big enterprise ColdFusion applications, what kind of mental changes do I need to be making? |
| SH: | Wow, that's tough. Mental changes, huh? Well, I can tell you there are three things that every developer does need to think about if they're building an enterprise app. I assume an enterprise application is being built by a team, so every developer needs to take into account the fact that what they do must integrate with what others do, hopefully be consistent with what they do stylistically, and be maintainable by them. An enterprise application must scale, so scalability must be at the forefront of every thought when deciding how to code a specific piece. I also assume an enterprise application is more likely to integrate with other applications and/or to evolve over time than, say, a "Mom and Pop" application... so maintainability and flexibility are probably a bit more important and special attention should be paid to these characteristics of the application code base. |
| CV: | And you're going to be covering all this in your talk? |
| SH: | All this – and much, much more! |
| CV: | Well, sounds like a pretty comprehensive talk. Anything you want folks to be thinking about, or reading up on, before they come? |
| SH: | Nothing they need to read up on, but I'd love it if they came with questions. I speak publicly, not so much because I want to speak from slides, as because I like interaction. It's fun seeing what other developers are doing and assisting them, and helping them approach problems from a different angle. In my role at AboutWeb, I've been fortunate to be able to really push the envelope in exploring and experimenting with our processes, team development methodologies, and the technical side of implementing an architectural plan. I'm looking forward to passing on my findings from these experiences. |
| CV: | I know your sessions are usually pretty high-energy.. |
| SH: | I try. |
| CV: | Well, thanks a whole big bunch for joining me today, Simon. I look forward to seeing you at CFUNITED! |
| SH: | Thanks, Clark, I look forward to seeing you there as well. |
Those who wish to enjoy Simon's presentation at CFUNITED 2007 can register at https://secure.teratech.com/cfunited07/register.cfm. The conference takes place on June 25th- June 30th, 2007, with options for a four-day, three-day and one-day (Saturday only) conference package.
Clark Valberg is President of Epicenter Technology Consulting in Albany, NY. Epicenter provides software design and consulting services to organizations of all shapes and sizes. Clark's under-visited and under-authored blog can be found at this cleverly worded URL: http://www.clarkvalberg.com/
[Top]
by Ryan Hartwich
To date Adobe has released 2 point releases to ColdFusion 7. Both of these releases include feature enhancements and bug fixes. This week Adobe has released a cumulative hot fix for the newest 7.0.2 release. Please note, they do not recommend installing this hot fix unless you are experiencing one or more of the 14 items fixed.
ColdFusion MX 7.0.2 Cumulative Hot Fix 1
There are four conferences in the next six months that may appeal to ColdFusion developers. Two, CFUnited-07 and CFObjective are geared almost exclusively towards CF developers.
The Frameworks and 360Flex conferences focus on building framework-heavy and Flex-centric applications and may not appeal to the average CF developer as much.
Fusion Authority publishes 120-page Fusion Authority Quarterly magazine (issue 2) with over a dozen articles. Available for purchase in print with additional PDF version available.
Fusion Authority Quarterly Update
Teratech and the original creators of the Fusebox framework have announced plans to transfer the hosting and major support responsibilities of the Fusebox framework to Teratech.
TeraTech to run Fusebox
Adobe Releases Adobe Reader and Acrobat 8 Family of Products
Acrobat Product Family Page
Download the Adobe Reader 8
Adobe releases Acrobat Connect (formerly Macromedia Breeze)
Offered as both an inexpensive hosted solution and a more complete Professional edition:
Acrobat Connect
New tools on Adobe Labs
Adobe is donating their Actionscript Virtual Machine which will replace the SpiderMonkey Javascript engine (around Firefox 4 release in 2008) with an open source version (Tamarin) of the ECMAscript based engine that Adobe uses inside of Flash Player 9.
Adobe and Mozilla Foundation to Open Source Flash Player Scripting Engine
Tamarin Project
Adobe is now offering "Kollection", composed of MX Kollection Pro, KTML, CSS Menus and XML Import Export. A number products that were previously sold by InterAKT are being integrated into future Adobe upgrades (Dreamweaver, etc.). A few of their tools will no longer be sold, however.
InterAKT: All Our Base is Belong to Adobe (Alexandru's Blog)
[Top]
by Ryan Hartwich
Adobe has publicly released a number of betas in the last few weeks. For the design-centric users, Photoshop CS3 offers a Universal Binary for the Mac, smarter filters, enhanced vanishing point capabilities and a new way to interact with the palettes. Spry 1.4 is an incremental upgrade to an AJAX-based framework and JSEclipse is a Javascript coding tool for the Eclipse IDE (particularly helpful to those who code ColdFusion using CFEclipse or the Flex Builder 2).
Todd Sharp, a ColdFusion blogger recently ran the CFeMmys, a way for users to vote for and award recognition to popular ColdFusion trends and websites for the year. Approximately 250 votes were cast in the last two weeks and the winners have been announced. House of Fusion won for best ColdFusion list (CF-Talk) and Fusion Authority won for Best ColdFusion publication with the Fusion Authority Quarterly Update. Take three minutes to read through his awards to learn about a number of great ColdFusion resources that the community finds important.
CFeMmys--And the Winners Are (CFSilence.com, December 22, 2006)
In fiscal year 2006, Adobe achieved record revenue of $2.575 billion, compared to $1.966 billion in fiscal 2005. On a year-over-year basis, annual revenue grew 31 percent. ColdFusion falls under the Enterprise and Developer Solutions market segment, which earned $189.2 million for the full year (7% of total revenue).
Adobe Reports Record Fourth Quarter and Fiscal Year 2006 Revenue
Adobe Financial Information
3-2-1 Monitor! (Fusion Authority, December 19, 2006)
Monitors and Working Practices (Corfield.org, December 19, 2006)
Ten Myths About Adobe Flex 2 (onFlex.org, December 9, 2006)
Flex Cookbook
[Top]

by Ben Nadel
On Tuesday, March 27, 2007, I traveled down to Skylight in New York's SOHO district to attend Adobe's Creative Suite 3 (CS3) product release. Held at a swanky gallery space with music playing, choreographed light displays, projected graphics, flat screen TVs, and an abundance of computers all proudly displaying the Adobe logo, the CS3 release event proved that Adobe are as always masters of presentation. But, presentation alone will only get my attention; does Adobe's new Creative Suite have what it takes to get me, as a web developer, kneeling down and begging for more?
Before I answer that, let me just say, "Holy Freakin' Wow!" Adobe makes some stunning applications. For the last few decades, they have dominated the publishing world, and the reasons for that are fairly obvious to anyone who has used Acrobat, Photoshop, Illustrator, PageMaker, or any of the many Creative Suite products. CS3 has taken that solid foundation and raised it to the next level; their goal with this new suite is to revolutionize how the world engages with ideas and information.
This goal has been accomplished.
All of the CS3 point products are integrated more seamlessly and more effectively then perhaps any software package in existence. Grouping all the individual applications together is a separate application known as The Bridge. This Bridge, which incidentally loads graphical previews faster than any piece of software I have seen, creates a launch pad and common environment for Creative Suite files across the board. From this Bridge, you can drag and drop seemingly any type of media into any suite product. Adobe has raised the bar in terms of inter-product compatibility. From what I could understand, each of the CS3 products could not only import and export file types of just about any other CS3 product, in some cases, external files could actually be edited during the import process. When one of the presenters imported a PSD file into Fireworks and all Photoshop layers were kept intact, I became giddy with excitement.
So, what does this mean to the average computer user? While each product does comes with its own learning curve, it seems CS3 will do for media development what Google did for internet searching and YouTube did for video sharing. It's going to make it accessible to everyone; imagination, not skill, will be the most limiting factor. Whether it's generating interactive Flash movies, DVDs, or even books, Creative Suite 3 is going to be the answer.
But, what does this mean to a professional web developer like myself? To be honest, I am not exactly sure yet. Adobe is offering three flavors of CS3, targeted to the Web, Design and Production communities, as well as a complete master package containing all the products. The Web and Design packages come in both a Standard and a Premium version, with additional or extended software in the premium package. For an idea of what comes in each package, see our grid below.
| Design Standard | Design Premium | Web Standard | Web Premium | Production Premium | Master Package | |
| InDesign CS3 | X | X | X | |||
| Photoshop CS3 Extended | X | X | X | |||
| Photoshop CS3 | X | X | ||||
| Illustrator CS3 | X | X | X | X | X | |
| Acrobat 8 Professional | X | X | X | X | ||
| Flash CS3 Professional | X | X | X | X | X | |
| Dreamweaver CS3 | X | X | X | X | ||
| Fireworks CS3 | X | X | X | |||
| Contribute CS3 | X | X | X | |||
| After Effects CS3 Professional | X | X | ||||
| Adobe Premiere Pro CS3 | X | X | ||||
| Soundbooth CS3 | X | X | ||||
| Encore CS3 | X | X | ||||
| Adobe Bridge CS3 | X | X | X | X | X | X |
| Version Cue CS3 | X | X | X | X | X | |
| Adobe Device Central CS3 | X | X | X | X | X | X |
| Adobe Stock Photos | X | X | X | X | X | |
| Acrobat Connect | X | X | X | X | X | X |
| Dynamic Link | X | X | ||||
| Adobe OnLocation CS3 | X | X | ||||
| Ultra CS3 | X | X |
Note: Those who were concerned with the future of Fireworks as a product need be no longer. Fireworks is part of the Master Collection, as well as both the Web Standard and Web Premium packages. My one concern was that the presenter kept referring to Fireworks as a tool for "prototyping". As someone who does 100% of his graphics using Fireworks, I think this attitude reflects a lack of understanding of how powerful Fireworks can be. But, seeing as Adobe developed Photoshop and Illustrator, I think that their view of Fireworks has more to do with trying to find a place in the CS3 product line for very similar applications and does not actually reflect the product's functionality.
To be honest, I was not shocked at what the Web packages contain. Not so long ago, Adobe acquired Macromedia. Macromedia made the revolutionary products we use every day (ColdFusion, Fireworks, Flash, Homesite, Dreamweaver), so it does not surprise me that most of the products that are offered in the Web Developer CS3 packages are merely newer versions of what I already use.
That is not to say that I am not excited. While the web developer applications are not revolutionary in and of themselves, they still have the mind-blowing product compatibility that is universal to the entire CS3 product line. No longer will I have to worry about what my designers are using. If they send me Photoshop files, I can import them into Fireworks. If they send me Illustrator files, I can import them into Fireworks. It's this seamless integration of the CS3 products that resonates with me when it comes to revolutionizing how the world engages with ideas and information.
Web developer or not, by the end of the two hour presentation, I wanted to race out and master the entire CS3 product line. Seeing how easy it was to create media across all verticals and horizontals planted the seeds of inspiration. CS3 not only made me excited about expressing myself, it made me feel as though I finally had the tools. Adobe's Creative Suite 3 simply feels empowering.
[Top]
by Ryan Hartwich
Last week, Adobe announced a ColdFusion security fix for Windows IIS machines, as well as two technotes for working with MS SQL Server Express 2005 on Vista and email attachment issues.
Adobe has released a ColdFusion 7 security fix, categorized as 'important', for an exploit that may allow specially crafted URLS to breach server security and allow directory listings. Luckily, this problem is limited to the IIS web server.
http://www.adobe.com/support/security/bulletins/apsb07-02.html
Making MS SQL Server Express 2005 Talk to ColdFusion on Vista
The first Technote gives helpful hints on how to configure Microsoft's SQL Server Express 2005 to work with ColdFusion. This shouldn't be an issue for most people since it focuses on problems with this relatively new, low-end version of SQL Server, and running on Vista (but not Windows 2003 or XP).
http://www.adobe.com/go/kb400255
Sending Long Email Attachments in Bulk
The second technote covers a hot fix for problems some people may be experiencing when sending a large number of emails (around 500) that contain attachments with long filenames.
http://www.adobe.com/go/kb400262
Do you want a simple way to keep track of future ColdFusion security fixes? Steven Erat has released an extension on his blog for the ColdFusion 7 Administrator that checks Adobe's website for ColdFusion hot fixes. This should be useful to those who administer their own servers and want an easy way to find out about hot fixes. Unfortunately, it does not display technotes, just hot fixes.
Never Miss Another ColdFusion Hotfix (TalkingTree.com, January 11, 2007)
If you are a ColdFusion programmer who has expanded into using the Flex 2 framework and Flexbuilder 2, you may be using the ColdFusion Extensions. There is a slight tweak necessary to successfully upgrade your Flexbuilder 2 IDE to version 2.0.1 (released in the last week) to work with these extensions. The Flex development team has carefully explained the problem with compiling your code and what is necessary to work around the error. You can read more about their solution in the following blog:
http://weblogs.macromedia.com/flexteam/archives/2007/01/migrating_to_20.cfm
[Top]
House of Fusion (http://www.houseoffusion.com), one of the oldest and largest ColdFusion community sites around, and Epicenter Consulting (http://www.epicenterconsulting.com), a web technology and strategic business solutions provider, have teamed up to develop a toolbar designed for the productive ColdFusion developer. The ColdFusion Community Toolbar is available at http://www.houseoffusion.com/toolbar.
The toolbar, which gives easy access to a selection of sites, resources, blogs and podcasts in the ColdFusion industry, installs on any Microsoft Windows 2000 or XP system, and is available for Firefox 1.0.1+ or Internet Explorer 5.0+. It comes with a Windows Uninstaller, allowing for an easy opt-in and opt-out. The toolbar is a work in progress, and there will be frequent updates based on user feedback and the evolution of the community.
For more information about the toolbar, or to download it, you can go to http://www.houseoffusion.com/toolbar.
[Top]
by Ryan Hartwich
The official news from Adobe is that the Scorpio beta program is now taking applicants. Complete this link to submit your application. No time frame has been given for when applicants will be approved or when the beta will start.
Flex 2.01 (IDE) and Flash Player 9 for Linux is Released
One Solid Flex Release 2.01 (OnFlex.org, January 1, 2007)
Flex Download Page
Adobe Flash Player 9 for Linux Now Available on Adobe.com
Flash Player Adoption Rates
The Flash Player auto-update function is turned on now and with last week's release of Flash Player 9 for Linux, the installed base should continue its rapid growth. December's survey numbers are expected soon and will probably show a greater than 50% user adoption of Flash Player 9 since last July. If you are using the ColdFusion Extensions for Flexbuilder, you should check out the following blog article. It explains a rather simple fix necessary to get the 2.0 extensions working in the Flex Builder 2.01 release.
http://weblogs.macromedia.com/flexteam/archives/2007/01/migrating_to_20.cfm
Flex Data Management Services Tutorial
Christophe Coenraets has written a 19-page tutorial describing how to set up and use the Flex Data Management Services. FDMS isn't intended for those just starting out with Flex, and hence, this tutorial won't be of much value to beginners.
http://coenraets.org/blog/2007/01/flex-data-management-services-tutorial/
Tools.Flex 2: Enabling Run Mode Trace in Flex Builder 2
The default Flex Builder settings show trace messages only in Debug Mode, but this blog entry will tell you how to make them visible all the time.
Tools.Flex 2: Enabling Run Mode Trace in Flex Builder 2
ColdFusion Debug SQL Explorer Extension
Sick of queryparam problems when debugging your SQL code in ColdFusion?
http://www.mischefamily.com/nathan/index.cfm/2007/1/4/ColdFusion-Debug-SQL-Explorer-Extension
Grouping ColdFusion Query Results on Multiple Columns
http://www.brucephillips.name/blog/index.cfm/2006/12/26/Grouping-ColdFusion-Query-Results-On-Multiple-Columns
Merging ColdFusion SQL Debugging and Query Params with JavaScript
This solution is similar to Bruce Phillips' solution, but it should work in your web browser and doesn't require using CFEclipse.
http://www.bennadel.com/index.cfm?dax=blog:459.view
Text String Searches
New tricks with searching text strings in a database. Ben Forta has 4-5 posts on this over two days (January 4th and 5th).
http://www.forta.com/blog/index.cfm?mode=day&day=4&month=1&year=2007
http://www.forta.com/blog/index.cfm?mode=day&day=5&month=1&year=2007
Daylight Savings Time in ColdFusion
The U.S. Energy Policy Act of 2005 moves Daylight Savings Time observances from the second Sunday in March to the first Sunday in November. This means you need to make some changes in your JVM... Read Damon's blog and find out what you need to do.
ColdFusion and U.S. Daylight Saving Time changes in 2007
Ben Nadel Experiments with the Interface Driven Architecture Methodology
Inspired by a New York ColdFusion User Group meeting, Ben has given us his experiences and the results of his experiments.
http://www.bennadel.com/index.cfm?dax=blog:445.view
Using CFINCLUDE
Does CFINCLUDE need a mapping? How exactly does it work? Jared Rypka-Hauer explains.
CFINCLUDE Works Without Mappings, OK?
Quick ColdFusion Debugging Switcher
Jake Munson has created a little on/off switch for ColdFusion Debugging.
Quick CF Debugging Switcher
Brian Rinaldi's Update on Recent Open-Source Projects
The number of active ColdFusion open-source projects may astonish you. Kudos to Brian Rinaldi for keeping us informed.
ColdFusion Open-Source Update - January 22
The first ColdFusion community toolbar has been released by House of Fusion and Epicenter Consulting. I'm not a fan of browser toolbars for two main reasons, screen real-estate and user tracking/spyware. This is the first toolbar that I willingly downloaded and am considering keeping because of the potential usefulness. However, I have a few minor gripes with it. It always remains visible (a sliding toolbar that self hides would be nice), even when the 'shrink' function is used. During installation, it was unclear what is being tracked when using the toolbar. I was happy to see, however, that this is partially explained by the 'Privacy' webpage linked to through the toolbar. The good news? The toolbar is prepopulated with five major ColdFusion-related podcasts, numerous blogs and the major ColdFusion blog aggregators and websites.
Download it at: http://www.houseoffusion.com/toolbar/
[Top]
By Judith Dinowitz
Some of you may have seen the press release that went out today announcing Adobe's decision to release the full PDF standard through AIIM, the Enterprise Content Management Association, for the purpose of publication by the International Organization for Standardization (ISO). I sat in on a press conference call hosted by Adobe to discuss the announcement.
Holly Campbell, Adobe's Director of Public Relations, started the call by providing a context for the announcement with an overview of Adobe's history. She stressed that Adobe has a history of being open with the PDF specification, though they have never before relinquished control of the full specification to an outside standards organization. In 1993, when Adobe released the PDF version 1 specification, they formally published the first full specification of the PDF. In the course of the intervening years, they have cooperated with the ISO to develop open specifications for specialized PDF formats. Two formats (PDF/A for digital archiving and PDF/X for Graphic Design Exchange) have already been declared formal ISO standards, and several more are in development.
At this point, over 2500 international companies have products or services that depend on the PDF standard. Adobe sees this move as the next logical step in the evolution of PDF from a de facto standard to a formal, de jure standard
(Kevin Lynch, Senior Vice President and Chief Software Architect at Adobe).
Pam Deziel, Director of Product Marketing for the Platform business unit at Adobe, fielded questions on the topic. She was asked how things would work in the future for the development of PDF. Adobe will participate in the working group as a member,
she said. She said that as Adobe had already published the full specification and has been working with ISO on specialized formats, they already understand some of the consequences of having an open specification.
Will Adobe do this for the SWF format as well? Deziel said that while Adobe has published the specification of the SWF format today, at this time, Adobe doesn't have plans to release the Flash file format to a standards body.
One member of the press inquired about the status of the specification for the Adobe Reader. Deziel said that the Reader specification was really based on the connection between the Adobe Reader and the application that produces the PDF it's reading. That's a piece that has not been published by Adobe,
she said.
The conference call ended with this summary by Deziel: We think that this will enhance and preserve the flourishing ecosystem that lives around PDF. We don't have any thoughts of chilling competition at this time.
[Top]
February 14, 2007 -- After much hard work and refinement, House of Fusion is pleased to announce a new, ColdFusion-centric search form available at http://www.houseoffusion.com/search/. This search covers about 200 ColdFusion-specific sites, with more being added on a continuous basis. The search is directly embedded into House of Fusion, and features a drilldown for specific types of sites: House of Fusion, Documentation, Forums, Blogs, Jobs, Frameworks, RIA/Flex and User Groups.
Comments and feedback are welcome. If you'd like to suggest an additional ColdFusion site for our search engine, please email Michael Dinowitz.
[Top]
by Ryan Hartwich
Last month, the open source CFEclipse 1.3 was released and it supports both Eclipse 3.1 (Flex Builder 2.01 is based on this) and 3.21 (the newest release). Unlike the original Flex Builder 2, the new Flex Builder 2.01 is now supported and available for updating your existing 2.0.0 release and should work cleanly with the newest CFEclipse.
CFEclipse 1.3 Released. Be Coldfused No More!Are you active in your local ColdFusion (or other Adobe) User Group (find one at http://www.adobe.com/communities/usergroups/)? Adobe sponsors official user groups around the world that help to bring developers and designers together for networking, learning and fun. Most groups meet monthly and are a great source of technical and professional assistance. One great benefit of the groups is that they are BY and FOR developers/designers. While Adobe dictates some minimum requirements (updated website, frequent meetings), they are very hands off, while still being supportive. They send care packages to the group leader twice a year, assist with software giveaways, t-shirts, and even technical presentations. Ben Forta's upcoming tour around the United States and presumably Europe and Asia is not done alone, but through the careful organization and assistance of the user groups and the on-staff Adobe community relations group.
Here are two recent presentations that may interest you. The second was broadcast live to anyone interested and the recording (using Adobe Connect) is now available for your viewing pleasure. Stay tuned on March 27th for a great user group meeting in your area!
Introduction To AJAX For CFML DevelopersLately, we have seen a proliferation of new search engines targeted to ColdFusion developers, using the Google-based Co-op tool. Among those offering this service are House of Fusion (the ColdFusion-specific search is at the top of every page of the site), Jeff Gladnick, Joshua Cyr, Charlie Arehart and Adam Howitt. Charlie Arehart did a helpful blog entry listing several of these new search engines.
CF-specific Google search engines (yes, that's plural)
If you are looking for a way to easily access ColdFusion blogs, sites, resources and podcasts, check out the newly released ColdFusion Toolbar.
Avid Fusebox developers may already know about the recent update to Fusebox, but if you don't, here are relevant links to learn more about the newest release.
Fusebox Downloads PageAdobe has released their quarterly review of the current player penetration statistics, up to the end of December 2006. All measured markets are now at over 50% penetration, with emerging markets reaching as high as 65%. With the recent release of Flash Player 9 for Linux and these rather high adoption rates in the six months since release, we can expect to see a rather large jump in companies willing to use Flex-type applications in their websites.
Adobe Flash Player Version Penetration
You have probably heard the terms CVS and Subversion before, or at the least source control. Large, well-organized IT shops are probably already using these techniques and technologies to track and store their source code. Those of us who work in smaller, less organized groups (or independently) have probably avoided the issue. Here is a great, very brief synopsis of the technologies to give you a basis to start researching if source control is the right way to go for you. Give yourself three minutes to read through this blog entry.
Dev Chair : Version Control for Beginners (Download Squad, February 28, 2007)
[Top]
According to an article on Law.com, Adobe has adopted a low-key strategy, acquiring nine startups since its acquisition of Macromedia, tightening its hold over the desktop publishing business while seizing new commercial opportunities opened up by the Internet.
It has been fairly quiet about these acquisitions, announcing its latest two with blurbs on the Adobe website, and then only after word got out. (I did a search on Adobe's website for the two companies mentioned in the Law.com article, and couldn't even find them.)
In October, Adobe also announced that it would be making direct investments of up to $100 million over the next three to five years. This was also a change of pace for the company, which prior to the Macromedia acquisition, had been an indirect investor through a series of funds managed by Granite Ventures, LLC. According to the Law.com article, one of the primary goals of Adobe's investments will be to support and nurture companies that are building and delivering Apollo applications. If you've got an application or a business that fits that criteria, you might want to contact Adobe to see if you can get in on some of that funding. You can send your proposals to newventure@adobe.com.
Adobe Walks Quiet Path to Success (Law.com)
[Top]
Adobe has just launched the first public alpha version of Apollo on Adobe Labs. Apollo is the code name for a cross-operating system application runtime that allows web developers to leverage their existing skills in HTML, JavaScript and Ajax, as well as Flash and Flex software, to build and deploy rich Internet applications (RIAs) on the desktop.
Apollo was mentioned briefly in Ben Nadel's review of the CFUNITED Express NYC event, and in other articles... Look for more information on Apollo in future articles on Fusion Authority. Below you'll find some links to Adobe's press release, the Apollo page on Adobe.com, and an interesting TechCrunch article with some comments that reveal a mixed reaction to (and in some cases, perhaps a lack of understanding of) Apollo and what it is meant for.
Public Alpha of Apollo Debuts on Adobe Labs
Adobe Apollo Launches So Go Build Something (Techcrunch.com, March 18, 2007)
Adobe's Apollo Provides New Ground for Entrepeneurs (Techcrunch.com, January 28, 2007)
[Top]
cf.Objective() has released a Manager's Guide in PDF format (http://www.cfobjective.com/conference/pdf/managerguide.pdf) for those managers who are not yet sure that they should send their developers to cf.Objective(). Showing this to your boss may help him or her make that decision, and if you're registering for the conference, you should probably do so in time to catch the early bird discount that ends April 1st, to save you or your manager money.
To add further incentive, cf.Objective() has announced a contest -- a raffle that will be run every week for the next four weeks -- where those who have registered for cf.Objective() will have a chance to win a 4GB iPod Nano! The winners will be announced on the cf.Objective() website and on the ColdFusion Weekly podcast. So that's yet another incentive for those who are still not sure. Take a look at what this conference has to offer...
cf.Objective(): A Manager's Guide
cf.Objective(): Win an Ipod Nano!
cf.Objective() Registration Page
cf.Objective() News Briefs
cf.Objective() Website
[Top]
There are three new lists on House of Fusion:
The ColdFusion Object-Oriented Programming (CF-OOP) list is now live and available for subscription. This list is focused on OOP concepts in ColdFusion, including the use of CFCs, methods and any "new features" that may come up in future versions of the product. This list goes hand in hand with issue 2 of the Fusion Authority Quarterly Update, which is focused on ColdFusion and OOP.
As an addition to the OOP list, there is an upcoming OOP-centric conference: cf.Objective() 2007. For those who are interested in the topic, please look over their schedule, which is now up at http://www.cfobjective.com/conference/index.cfm?event=page.schedule.
The Search Engine Optimization List (SEO) is also live, and addresses issues such as increasing site pageranking, increasing search location, advertising, and more. This list also goes hand in hand with issue 3 of the Fusion Authority Quarterly Update, which is focused on business issues and includes the article, "Making Google Pay" by Michael Dinowitz.
Finally, due to community request, we have created a list focused on Apollo. This list, along with the Adobe Flex 2 list, should provide an open area of communication for all people interested in these technologies. I urge all to join, as Adobe is making a large push for both Flex and Apollo.
[Top]
Earlier in the year I reviewed CFUnited 2006 for both Fusion Authority and the ColdFusion Developer's Journal (CFDJ). I covered my impressions of the conference as a whole and the issues one should consider when thinking about attending a similar conference. I will now extend my review of the conference by focusing entirely on the recording of the sessions offered by Teratech, the conference organizer.
Teratech is making the audio recordings, PowerPoints and code examples available to all attendees free of charge. For the first time, they are also offering video of the sessions, for $200 to attendees and $649 to non-attendees. What does a video recording entail, and should you pay the premium for this feature?
To access the recordings and other conference materials you log in to the conference site, where a simple though not very elegant HTML interface allows access to the files. Recordings are only available online in a streaming format and are not being made available for mass download or DVD. This doesn't bother me since ColdFusion programmers are obviously well connected to the Internet and are used to streaming. Most of the roughly 60 sessions have links to download the PowerPoint presentations, demo code and MP3 audio files, which are 50+ MB. Only about three-quarters of the presentations are available as video, probably due to technical difficulties. Fortunately, all but five presentations have either audio or video/audio available.
Access to the supporting materials is good, the PowerPoints appear to be those used in the actual presentations, rather than early betas, and the supporting code supplied by the presenters will be useful to many.
The videos are actually presented as part of a Captivate-based presentation with the majority of the screen displaying the PowerPoint presentations used by the speakers. The outline of the slides and a relatively small window for the speaker's video are on the left-hand side of the Captivate window. The video is fairly good quality showing the lectern, laptop and speaker.
What becomes eminently clear to the viewer however, is that a large number of the presenters use their laptops to demonstrate code, debugging and browser output. Sadly, the videos do NOT show what is happening on the laptop and being projected to the screen.
Let me repeat that. The videos do NOT show the actual demonstrations that the audience is seeing.
Unless the speaker included quality screen shots of their code in Dreamweaver, the file running in the browser, and the nifty animations of Flex running as screen shots, you won't see it either and few, if any, did this.
The video of the speaker doesn't dramatically benefit the educational aspects of the recording; I'd rather have screen sharing from the laptops. Which is more important, a talking head, or the screen sharing of code, Dreamweaver, CF output and debugging?
Hearing the presenter make statements like, Field 1 is this, field 6 is a multidimensional array... if I click on it...
and not actually seeing anything but a static and unrelated PowerPoint on the screen and the speaker at a lectern doesn't particularly help. It is natural to want to see how dragging an item into a Flex window responds or making a CSS alteration affects the HTML output.
With the increasing focus on ColdFusion's ability to generate user interfaces, connect with Flex 2, and manage a user's interaction with a website, the inclusion of screen sharing in the videos is imperative. Teratech made a concerted effort to augment their CFUnited offerings in 2006 and it shows, in this professionally built video archive. I can only hope that the 2007 conference includes screen sharing/demonstration capabilities. I would be willing to lose the talking head/camera feature to gain screen sharing.
Should you buy the videos for the conference? No. Attendees receive the audio and supporting PowerPoints and code and this is ample for the now six-month old content. Non-attendees can probably garner sufficient materials online to compensate for the lack of video of a talking head, particularly since the most important aspect of the presentation, the demonstrations are not available.
If Teratech offers screen sharing/demo capability in future conference recordings, then this may very well be a worthwhile purchase. I would also like to recommend that a tiered payment offering be made. Many potential purchasers may want to buy five to ten videos, rather than the whole conference, which is more than sixty videos. While the videos are intended as a supplement to attendees, the audio is both sufficient and free.
[Top]
by Brian Rinaldi
Those of you who read my blog know that I've been developing an open-source code generator that uses database metadata to generate ColdFusion components and other code snippets. I wrote about an earlier version of this project in my December blog post ("Create Your Own Code Generator"). This version had a number of limitations, such as limited RDMS support, although its biggest drawback was the quality of the code it generated. In August, I released the Illudium PU-36 Code Generator, a more advanced version of this project that addressed these deficiencies and made it easier to tweak and customize the generated code.
In this article, I hope to demonstrate how the code generator was built. I covers a number of important techniques that can be useful for many other projects. Specifically, I discuss the five items you need to build your own code generator:
The current version of my generator is built with Flex using the Cairngorm Microarchitecture, but that is not central to understanding how it works, so I will limit my discussion to the ColdFusion code.
The Admin API is a documented means of accessing all of the ColdFusion Administrator's internal ColdFusion functions, such as adding a datasource or a mapping. This feature, introduced in ColdFusion MX 7, was previously available through the use of the ServiceFactory Java component which was undocumented and, therefore, unsupported (see http://coldfusion.sys-con.com/read/41652.htm). I chose to use the documented Admin API for my generator, which means it will only work in version 7. If anyone is so inclined, the changes required to make it work with 6.1 using the ServiceFactory should be minimal.
The first step in building this type of code generator is to get a list of the available datasources. The Admin API makes this extremely easy (see Listing 1).
Listing 1: Getting the List of Available DatasourcesLet's look at the code in Listing 1. First, you initialize the administrator component with your CF Admin password. Once you are authenticated, you can access the datasource component and call its getDatasources() method, which returns a structure of all the available DSNs on the CF server. In my component, this is done immediately upon initialization, and the returned datasources are added to an array after being filtered for supported datasource types. For example, my code generator currently supports MS SQL 2000/2005, Oracle (thanks to a contribution by Beth Bowden) and MySQL 5.x. Therefore, I filter out any DSNs that aren't of these three types.
Once the datasource is selected, the user selects whether he wants to generate code against either one, many or all tables. Currently, my project builds code against a single database table at a time. Each supported RDMS has its own component that contains the methods necessary to get metadata, since each database stores this information differently.
If you are not familiar with database metadata, it is information stored by the database about your table, such as column names, data types, primary keys and more. Using a one-to-one relationship between objects within an application and tables within a database, you could assume that a user table, for example, would contain all of the attributes of a user object. This, in many respects, is the fundamental concept behind object relational mapping (ORM) projects like Reactor or ObjectBreeze. We could debate the merits of this approach endlessly – and people have – but I point this relationship out because it is one of the underpinnings of my code generator. However, my generator assumes that you will intervene and modify the generated code as needed after generating.
Since each database system handles metadata differently, I will not cover how to cover how to access it in each one. You can look at the guts of my generator to see how I get metadata using queries with column aliasing to return the data in a consistent format. See Listing 2 for an MS SQL example:
Listing 2:If you are running MS SQL, you can also use one of the many of the built-in stored procedures to access this data. Oracle may have something similar, but if so I am not familiar with it. In my opinion, figuring out how to get metadata from your specific RDMS is the most difficult aspect of building a generator, but you can also look at other open-source ORM projects, which may well already have solved the problem for your particular database.
Assuming you've gotten the proper metadata out of the database, the next step is to turn this into something usable for generating code. You could do this the way some do, in straight CFML based on query results. However, taking a cue from a very early version of Reactor, I chose to build my generator using XML and XSL. I thought XML offered a way to create a consistent format for the metadata, and XSL offered a clean method of allowing people to easily create their own templates.
That being said, the XML format I chose is simple and somewhat arbitrary. (See Listing 3).
Listing 3: Building Generated Code Using XMLThe generated XML has a table with multiple column elements. Each column element has the following attributes:
Now that you have XML to work with, you need to create the XSL templates which will convert that XML into usable code. I took existing code that I knew worked in ColdFusion, and converted it to XSL. This isn't really as difficult as it might seem, as it only requires understanding the basics of XSL. In fact, I had no experience with writing XSL templates prior to doing this. Take a look at http://www.w3schools.com/xsl/. The point is: it is easy.
My generator actually assembles a number of XSL templates together, which I will discuss briefly at the end of this section. If you were building your own, you could take your components or any other code you wish to generate via the table metadata, which could include forms or list pages, make them those components as generic and reusable as possible, and simply replace the necessary data with its corresponding XSL value. See Listing 4 for an example of getters and setters.
Listing 4: Using XSL Templates to Generate Your CodeThe last step I did was just to run a find/replace on the "<" and ">" characters, since they are not allowed in XSL.
My generator builds a template string, by combining a number of templates together, as I mentioned, to make it easy to customize specific methods, since reading and editing the XSL code of an entire component was difficult. This should also make it extremely simple to add in your own custom methods. You simply place the XSL for your custom method into the appropriate folder and modify the xml configuration file and your method will generate within the item you have specified. Lastly, I built in a means to override the templates per request, in case you might want to use a specific set of templates for a different projects. If you would like to examine this code, it is in the /com/cf/model/xsl/xslService.cfc file within my project.
At every level, the glue that holds this application together is CFML, of course. In the end though, nothing more is necessary beyond a simple call to xmlTransform (myMetaDataXML, myXSLTemplate) and a dump of the output to the screen or a file. My code generator actually creates an array of generatedPage objects that contain the generated code as well as other information used to display and save the file. See listing 5 for the method used to get the generated code:
Listing 5: getComponents() Method of xslService.cfcIn fact, while this method may look complicated from a CFML perspective, building a basic code generator is simple - the key line being <cfset content = xmlTransform(arguments.xmlTable,xsl)>. Still, why build something I have already built for you? You can download my code generator at http://code.google.com/p/cfcgenerator/ and, since it is released open-source under the Apache License 2.0, modify it to your heart's content.
If you do create your own XSL templates, please feel free to donate them back to the project so that others may benefit from them. I hope at some point to have a small library of templates available, to download and include or modify as needed.
Brian Rinaldi is a web developer at Sun Life Financial, Inc. He is the manager of the Boston ColdFusion User Group and an Advanced Certified ColdFusion MX Developer, as well as a Microsoft Certified Professional. Brian also serves on the editorial advisory board for the ColdFusion Developer's Journal. Brian is most well known for his efforts promoting open-source projects in ColdFusion, especially for maintaining the ColdFusion open-source list as well as the weekly updates, both of which you can find via his web site at http://www.remotesynthesis.com.
[Top]
| This is an opt-in magazine. To join, leave or change subscription mode, please visit the signup page. All content of this magazine is copyright Fusion Authority, Inc. It may not be reproduced without permission. | ||