tag:blogger.com,1999:blog-265956932009-06-02T11:52:19.819-04:00The Wandering FishbowlThoughts on web technologies and coding techniques, mostly revolving around ColdFusion.Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.comBlogger42125tag:blogger.com,1999:blog-26595693.post-43671752616470380712009-06-02T10:27:00.003-04:002009-06-02T10:50:13.296-04:00Hating Online Only Help in Creative SuitePerhaps I'm just getting old and crusty, or perhaps it's just lack of sleep, but I'm really not liking the way the current Creative Suite 4 products go online for help. Seriously, does this content really change so much that having offline help isn't useful? Last time I checked the Dreamweaver documentation hasn't changed all that much since Mx2004.<br />First of all, fat lot of good it does me when I'm on a laptop on the train. Even if I had a cellular card in my machine, which I don't, would I really want to be wasting my monthly bandwidth allotment, looking up a tag or function that I don't use frequently. Not to mention, that much of my ride is underground and out of cellular range.<br />My second beef is that Dreamweaver CS 4 help (F1) defaults to the Dreamweaver Support Center rather than the Dreamweaver Documentation. Sure, the link for documentation is there on the right, but it is quite hard to spot. I realize that you can change the default behavior back to point to the documentation, but again, it's not easy to find.<br />Most likely I'll just download the PDF versions and think very carefully before upgrading in the future. It seems to me that this is yet another case of just because you can do something, doesn't mean you should.<br />In any event, that's my rant for the day.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-4367175261647038071?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com3tag:blogger.com,1999:blog-26595693.post-33730044491643853132009-04-01T10:42:00.004-04:002009-04-01T11:43:22.057-04:00Microsoft.com to use CFML?Sources within Microsoft's web division revealed late last night that Microsoft is seriously considering microsoft.com to ColdFusion. Said our source, "Let's face it, if we switch to ColdFusion we can get by on 3/4 of our current staff. These days, that's a big consideration." While politics is often blamed for making strange bedfellows, it appears that adversity can sometimes do the trick as well. Should this decision come to pass, expect the announcement within days.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-3373004449164385313?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com1tag:blogger.com,1999:blog-26595693.post-18218423232835480322009-03-10T10:05:00.002-04:002009-03-10T10:55:01.151-04:00Broom DevelopmentI was listening to January's <a href="http://www.willowcreek.com/definingmoments/" target="_blank">Defining Moments</a> on my way to work this morning and was introduced to the concept of <span style="font-weight: bold;">broom theology</span> by <a href="http://www.xpastor.org/bio/simone_michael.html" target="_blank">Dr. Michael Simone</a>. The concept comes from a job at a small trucking company that Dr. Simone once worked for.<blockquote>On days when work was slow, the old guy in the warehouse would say, "If you have nothing to do, pick up a broom and start sweeping the warehouse."</blockquote> In churches, similar situations arise, and broom theology says, "Look around for someone who needs help or somewhere you can help." In many ways the web development world is quite different than the church world, but I think we can borrow this concept of broom theology and refactor it to become broom development.<br /><br />Broom development states:<br />When you hit those lull times that occur even in the busiest of development shops, use the time productively.<br /><ul><li>See if anyone on your team could use some help.</li><li>Pay down some of your team's <a href="http://www.codinghorror.com/blog/archives/001230.html">technical debt</a>.</li><li>If all else fails, there's always documentation or learning new skills.</li></ul>So, the next time you find yourself in that lull and are tempted to find out how "The Woz" did on this weeks <span style="font-style: italic;">Dancing with the Stars</span>, I encourage you to consider practicing some broom development. You might just learn something about yourself, a co-worker, or your craft.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-1821842323283548032?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-52523499517846053582008-11-06T10:51:00.002-05:002008-11-06T11:07:41.013-05:00Welcome Back From the Dark SideI'd like to take this, slightly belated<sup>1</sup>, opportunity both to welcome David Patricola to Jefferson, as well as welcome him back from the dark side<sup>2</sup>. David has a <a href="http://tutorial163.easycfm.com/index.cfm?tutorial_author=David%20Patricola">history of working with ColdFusion</a>, however, in recent years he's been working in the PHP world. Fortunately now we have him back in the CF community.<br /><br /><sup>1</sup> David began with us sometime in October, though I'm just starting to get my head back above water now.<br /><br /><sup>2</sup> Calling PHP the dark side is not intended as an attack on PHP developers. We in the ColdFusion community mourn for our PHP brethren who must toil endlessly with tasks that we perform in minutes.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-5252349951784605358?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-51440834980319346052008-06-27T09:04:00.005-04:002008-06-27T09:18:49.543-04:00CF Developer needed in Philadelphia, PA<a href="http://www.jefferson.edu/careers">Thomas Jefferson University</a><sup>*</sup> is currently looking for an Intermediate to Advanced level ColdFusion developer with strong design and layout skills. Flash/Flex skills and knowledge of Contribute a plus.<br /><br />We are a small team that maintains TJU's internet and intranet web presence. In addition we do small to medium sized ColdFusion applications for various departments. For many of our projects we utilize Model-Glue. We provide complete service from design to database work. We are currently in the middle of a re-branding effort, our new look can be seen on our <a href="http://www.jefferson.edu/emr">Electronic Medical Records</a> site.<br /><br /><sup>*</sup>Note: Our employment page is due to be upgraded in the very near future. As such I'm providing a basic link that will be valid before and after the upgrade.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-5144083498031934605?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-7319734479719501022008-06-06T14:33:00.003-04:002008-06-16T16:08:50.575-04:00Odd LDAP Calls from Contribute Publishing Services<p>We've recently updated our LDAP and noticed a slowdown on authenticating through Contribute Publishing services. Upon looking into the issue, we determined that Contribute Publishing Server was sending what to us appears to be a malformed LDAP filter. Before I call Adobe support, I thought I'd check to see if anybody else has encountered this issues. Our setup looks something like this. (I've changed the actual data for security reasons.)</p><p><img src="http://mysite.verizon.net/luis.matthews/images/sampleConfig1.gif" alt="sample config 1" /></p><p>Our user search tab has CN, Mail and UID Defined along with a basic filter. <span class="black">(!(status=I))</span> Our Group tab is blank as our LDAP does not contain groups. With this setup, when attempting to authenticate user lm1000, CPS send the following filter to the LDAP.</p><p><span class="black">(&(!(status=I))(|(uid=lm1000)</span><span class="red"><strong>(=lm1000)</strong></span><span class="black">))</span></p><p>When I run this filter in an LDAP browser I see the same slow behavior, however when I remove <span class="red">(=lm1000)</span> the LDAP responds immediately. Has anyone seen this behavior before? Am I not configuring something properly, because to the best of my knoledge, an LDAP filter must contain an attribute name to look for a value in.</p><p><strong>Update:</strong> It turns out that adding the UID field in the group tab resolves this issue.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-731973447971950102?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-2982588117707458062008-04-01T14:36:00.004-04:002008-12-11T07:33:59.657-05:00Future ColdFusion Features<p>During the recent <a href="http://www.adobe.com/communities/developerweek/">Adobe Developer Week</a>, I somehow found myself in a private session showing off some high end features that are being worked on for ColdFusion 9. Now, I'm sure that those invited all agreed not to disclose any information that was being presented, but since I ended up there uninvited, I thought I'd share what I saw. They began the session by explaining that what with all of the great new features released in ColdFusion 7 & 8, ColdFusion is in danger of losing one of it's sets of core users. They call this group the Common Laymen and Office Dwellers or CLODs for short. In order to address the concerns of their CLOD constituency that ColdFusion is getting too complex, they've decided to add a new tag.</p><p><span class="red"><cfsite type="</span><span class="blue">brewpub</span><span class="red">" skin="</span><span class="blue">blue</span><span class="red">" name="</span><span class="blue">Nodding Head</span><span class="red">" location="</span><span class="blue">Philadelphia, PA</span><span class="red">"</span> <span class="blue">/</span><span class="red">></span></p><p>That simple tag produced the following site...</p><p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7PLz3lRAeJI/R_KA5KivI3I/AAAAAAAAAAk/KEPPKpRc3VI/s1600-h/nodding.gif"><img style="cursor: pointer;" src="http://4.bp.blogspot.com/_7PLz3lRAeJI/R_KA5KivI3I/AAAAAAAAAAk/KEPPKpRc3VI/s400/nodding.gif" alt="" id="BLOGGER_PHOTO_ID_5184347840627811186" border="0" /></a></p><p>From what I can tell, the tag does a yellow pages search on the name and location to find specific address, phone and hours, then goes out and finds appropriate graphics, before finally generating the site. My assumption is that the site is then cached somewhere, since I would assume that those searches would run a bit slow under load.</p><p>I for one am very exited about the efforts Adobe is going to in order to make the life of the average CLOD better. Oh, and if anyone asks, you didn't hear this from me.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-298258811770745806?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-15643792069088929662008-02-15T16:03:00.000-05:002008-02-15T16:04:37.802-05:00Testing is hard work!<p>I recently found myself in the beta test group for <a href="http://www.dreamcodex.com/todr.php">Tunnels of Doom Reboot</a>. My initial thought was that this would be easy. After all, I do write code for a living. I regularly test my code as well as my colleagues' code. I've spent countless hours of my life playing the original; I know it inside and out. How hard could this be?</p><blockquote>Enter a world of fantasy where your instincts and imagination determine your chances of survival. Your journey is about to begin—Prepare yourself. <br />–Tunnels of Doom Manual</blockquote><p>When the beta became available to the testers, I downloaded it, fired it up, and quite frankly had a ball. That day I submitted my first 'bug report' which consisted of a 'bug' that I could not reproduce as well as a handful of usability suggestions. Shortly after that the first status report came out, with a number of reported bugs list, most of which I had seen, but not thought to mention. </p><p>My big problem was that I was approaching it like a gamer and not like a tester. While I did not have access to the design spec to confirm behavior against like I normally do, several of the bugs that I failed to report, were pretty obvious. For my part, once I realized my mistake, I fired the application back up and have since delivered the type of bug reports that I want to see when folks are testing my code.</p><p>The thing is as web developers we are all very aware of the limitations of web-based applications, and it is easy for us to ignore things that are not easy to fix. We cannot, however, let ourselves become complacent. With the help of newer technologies such as Flex, we are in a position to overcome many of the historical limitations of web-based applications. The challenge is <a href="http://www.smashingmagazine.com/2008/01/16/evolve-your-user-interface-to-educate-your-users/">weilding these new technologies appropriately</a>, and freeing ourselves from the <a href="http://www.codinghorror.com/blog/archives/001059.html">limitations and thinking</a> of the past.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-1564379206908892966?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-4358904938244755982008-01-31T13:06:00.000-05:002008-01-31T13:10:50.817-05:00Should we extend CF Objects with java APIs?<p>There have been a couple of <a href="http://www.angry-fly.com/index.cfm/2008/1/29/Coldfusion-Strings-Java-Objects-In-Disguise">recent</a> <a href="http://coldfused.blogspot.com/2007/01/extend-cf-native-objects-harnessing.html">posts</a> regarding extending ColdFusion data types using the underlying java APIs.</p><blockquote>ColdFusion array is actually an implementation of java list (java.util.List). So all the list methods are actually available for Array. CF provides most of the list functionality using Array functions but there are few things possible with java list which you can not do directly with CF functions.</blockquote><p>For example, you can use java API to search an array to determine the position of a given search criteria.</p><p><span class="red"><cfset</span> <span class="black">myArray</span> <span class="blue">= listToArray</span><span class="green">('vanilla,chocolate,strawberry')</span> <span class="blue">/</span><span class="red">><br /><cfif</span> <span class="black">myArray.</span><span class="blue">contains</span><span class="green">('strawberry')</span><span class="red">><br /> <cfset</span> <span class="black">strawberryIndex = myArray.indexof<span class="green">('strawberry')</span><span class="black"> +</span><span class="red"> 1</span> <span class="blue">/<span class="red">><br /></cfif><br /><cfoutput></span><span class="black">#myArray[strawberryIndex]#</span><span class="red"></cfoutput></span></span></span></p><p>Note the adjustment that I've made to account for java arrays starting at 0. <a href="http://www.angry-fly.com/index.cfm/2008/1/29/Coldfusion-Strings-Java-Objects-In-Disguise">Russ Johnson</a>, <a href="http://coldfused.blogspot.com/2007/01/extend-cf-native-objects-harnessing.html">Rupesh Kumar</a> and <a href="http://www.iknowkungfoo.com/blog/index.cfm/2007/11/11/Under-the-Hood--ColdFusion-Array">Adrian Moreno</a> go into how to do this in more detail.</p><p>It's really quite cool that we can do this sort of thing, but should we? One of the great strengths of ColdFusion is its backwards compatibility. I have code, written for ColdFusion 4.5, that's been running untouched for 6 or 7 years. For those keeping count that's about 5 major releases ago. Adobe/Macromedia/Allaire has been great over the years about letting us know what's changed with various versions of ColdFusion. What happens if a future version of ColdFusion ends up breaking this functionality? We certainly can't expect Adobe to keep us informed when one of their changes breaks undocumented features of the product.</p><p>Perhaps it's because I'm in the middle of planning a ColdFusion 8 migration, but for my money maintainability nine times out of ten outweighs the short term gain of using these features. That's not to say that I'll never use this knowledge, but that I'll think very carefully about the possible consequences and benefits before doing so.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-435890493824475598?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com1tag:blogger.com,1999:blog-26595693.post-80494213288569729392008-01-17T16:00:00.000-05:002008-01-17T16:36:45.598-05:00Coping with ChangeWe interrupt our (semi) regular blog entry to bring you some thoughts on change. I mentioned that I was <a href="http://wanderingfishbowl.blogspot.com/2007/08/gettin-reorganized.html">dealing with a reorganization</a> a few months back. Before that I had the good fortune of being in a totally stable environment for 6 years, which if you've been at this professionally for any length of time, you know is practically unheard of in business. As a result some of our younger staff members are having a bit of trouble coping with the changes that a reorganization invariably brings.<br /><blockquote>Ch-ch-changes<br />Just gonna have to be a different man<br />Time may change me<br />But I can't trace time<br />- David Bowie</blockquote>For me the change has meant watching new folks move in while most of my co-workers moved out, then moving down to be with most of my old co-workers, knowing that the changes are not complete and that I may find myself moving back or someplace completely different at any given time. For those of you who are fairly new to the business world, change is to be expected. Keep your head down, watch your back, work hard, don't take it personally, and you'll come through it fine. For those of us who've seen change before, don't forget to encourage and comfort your co-workers who have not been through it before. (at least the one's you want to keep.)<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-8049421328856972939?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-72025086884985031762008-01-07T14:16:00.000-05:002008-01-07T15:46:00.418-05:00IDE Survey Relevance<p>As I'm sure you are already aware, there is a <a href="http://www.cfinsider.com/index.cfm/2008/1/7/Adobe-ColdFusion-IDE-Survey">ColdFusion IDE survey</a> out right now.</p><blockquote>Tired of Dreamweaver/CFEclipse/Homesite/CFStudio/Notepad? Do you wish they did more or there was something better out there altogether? Do you want Adobe to provide it? Help us help you! We want to hear your thoughts about how we can best support you and your development in ColdFusion!</blockquote><p>Of course I want better tools! Who doesn't? The fact of the matter is that there never will be the perfect IDE for all situations. We each pick the tool that best fits us, but let's face it, the right IDE for me may not be the right IDE for you. If I'm not careful, this could degrade into a full fledged rant.<br /></p><p>The point I'm trying to make here is that I question how useful a 7 question (26 if you consider the parts of question 5 individually) really going to be to the ColdFusion team. It seems to me that it would make sense to start with a simple survey to determine if the ColdFusion community is interested in a new ColdFusion IDE from Adobe, and what the community thinks it should cost (not that people will necessarily pay what they say they think something should be worth, but that's besides the point). Once they decide to proceed, then a second, much more detailed survey could be conducted as part of a larger requirements analysis. From there they could then narrow down the features that they intend to implement, and proceed with a standard development cycle.<br /></p><p>Of course, I did fill the survey out, but I do have to question it's relevance. Oops, guess I did end up with a full fledged rant.<br /></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-7202508688498503176?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-81936374166950708492007-12-28T11:08:00.000-05:002008-12-11T07:33:59.876-05:00FCKeditor can meet your rich text needs.I realize that <a href="http://www.fckeditor.net/">FCKeditor</a> is <a href="http://www.rakshith.net/blog/?p=41">bundled with ColdFusion 8</a>, but those of us running ColdFusion 7, or PHP, or any number of other languages, can also take advantage of this <a href="http://www.fckeditor.net/license">flexibly licensed</a>, powerful, and thanks to included hooks and samples, easy to integrate rich text editor. I should say up front, that I am in no way affiliated with the FCKeditor project, but am simply a satisfied user.<br /><br />For users of ColdFusion 6 and above it can be as simple as <a href="http://www.fckeditor.net/download">downloading</a> and unzipping the editor, and then calling the included fckeditor.cfc like this:<br /><pre><br /><span class="red"><cfset</span> <span class="black">editorInstance</span> <span class="blue">= createObject(</span><span class="green">'component', 'path.to.fckeditorcfc'</span><span class="blue">) /</span><span class="red">><br /><cfset</span> <span class="black">editorInstance.instanceName</span> <span class="blue">=</span> <span class="green">"formFieldName"</span><span class="blue"> /</span><span class="red">><br /><cfset</span> <span class="black">editorInstance.basePath</span> <span class="blue">=</span> <span class="green">"/path/to/fckeditor/"</span> <span class="blue">/</span><span class="red">><br /><cfset</span> <span class="black">editorInstance.Create</span><span class="blue">() /</span><span class="red">></span><br /></pre><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7PLz3lRAeJI/R3UpRNTw7JI/AAAAAAAAAAc/AYrIF9G4ZVw/s1600-h/fcksample.gif"><img style="cursor: pointer;" src="http://4.bp.blogspot.com/_7PLz3lRAeJI/R3UpRNTw7JI/AAAAAAAAAAc/AYrIF9G4ZVw/s320/fcksample.gif" alt="" id="BLOGGER_PHOTO_ID_5149067124575104146" border="0" /></a><br />Note: This screenshot does not represent the default button set.<br /><br />On the back end, the HTML generated by the editor simply comes through as a form field value using the instanceName that you set, making it dead simple to enhance existing forms.<br /><br />If you've been unsure how to implement rich text editors, or have been struggling with one that doesn't quite meet your needs, I urge you to give FCKeditor a try.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-8193637416695070849?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-48421383688648632772007-11-12T11:55:00.000-05:002007-11-12T12:00:24.918-05:00Think More, Code Less<p>This is the first in what I hope will become a series of posts aimed at beginner and intermediate level web developers. I see it as a venue to share some of the lessons I've learned, and what's worked for me, rather than a definitive development guide.<br /> </p><p>I've had a quote taped to my door for a few years now, that struck me when I first read it, but didn't really take on any serious meaning until recently.<br /> </p><blockquote>Code that only you can understand does not make you an advanced coder; code that your grandmother can understand does!<br /> <a href="http://www.j3r.com/">Jeremy Brown</a> - Macromedia Flash MX 2004 ActionScript 2.0 Dictionary<br /></blockquote> <p>When I initially saw this quote, I took it to mean that I needed to make sure that I wrote clearly and comment things accurately, so that in the future it would be easy to figure out what I had done. Since that time I have slowly come to realize that it means that I need to take the time to think strategically about the code I'm going to write, so that I can keep it as simple and small as possible. All other things being equal, a small amount of code is inherently easier to understand than a large amount of code.</p> <p>Successfully keeping your codebase as small as possible requires planning up front. Don't get me wrong here, I'm in no way suggesting that one shouldn't prototype. What I'm suggesting is that the prototype should not become the beginning of your codebase. At first glance this might appear to increase your development time, and while this may or may not be true, if done right you will more than make up for this time with ease of maintenance. The key here is doing enough planning to help you steer away from major pitfalls, without boxing yourself in. Your plans, along with any prototypes, should be treated like an artists sketches. They help guide you and prepare you for the final work.</p> <p>Finally, keep in mind that common sense can be your best asset. I tend to work with <a href="http://www.model-glue.com/">Model-Glue</a> for my medium to large scale projects, but I will really think it out before I use it for a small project. It's a question of whether or not the added complexity of a framework will make it easier or more difficult to maintain my project. The answer typically depends on how much I foresee the project growing/changing, and the difficulty of migrating into a framework later if needed. I've even been known to forego CFCs in favor of old school ColdFusion 4 style programming on real simple projects (Typically only if we're talking 1-2 hours of effort and 75 lines of code or less). The point is that you shouldn't be afraid to deviate from "best practices" when the situation warrants, however, when you do it is vitally important to make good notes of what you've done and why you've done it so that the next person that comes along to touch that code, understands what's been done and why.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-4842138368864863277?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-81265347613449872742007-10-17T16:11:00.000-04:002007-10-17T16:15:15.547-04:00Coding with the Stars<p class="MsoNormal">Bear with me for a bit, this post is actually on topic. Ok, I'll admit it; my wife has me watching <a href="http://abc.go.com/primetime/dancingwiththestars/index">Dancing with the Stars</a>. We've watched for a few seasons now, and I must say that this season's stars are improving much faster than in previous seasons. While a lot of the credit goes to the hard work that the stars themselves are putting in, I think a good deal of the credit goes to their professional partners who are all really taking advantage of their star's strengths, while minimizing their weaknesses.</p> <p class="MsoNormal">I've noticed that I've received a similar benefit in the two or so years that I've been actively reading blog entries, participating in comments, and ultimately blogging myself. I haven't blogged much lately, and shockingly enough it has little to do with the standard lame excuses. The fact of the matter is that I've composed several blog entries recently only to read what's out there before I post and discover that it's the hot topic of the day around the ColdFusion community. Unfortunately each of these times, I've had nothing significant to add to the discussion, so I've ended up shelving those posts.</p> <p class="MsoNormal">My initial thought was, "Wow, I'm dialed into the communal brain. That means I've made it." Upon further review, I realize that it's probably more that by reading posts from people in the community, I've be shamelessly sponging as much knowledge from some of the world's best CF developers as I can. The fact that I'm starting to think about the same things as they do, means that I've finally digested much of what I've read, much like the stars and their professional dance partners. While I don't know that I actually want to dance with any of you, I'll save the dancing for my wife, I look forward to continuing to learn and share what I learn.</p> <p class="MsoNormal">For any ColdFusion newbie who might happen on by, I implore you to take full advantage of the CF community. Read blogs, ask questions, and look through code samples. You'll become a much better developer because of it.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-8126534761344987274?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-8967444111343981132007-10-03T13:58:00.000-04:002007-10-03T14:40:56.448-04:00Laughing at ourselves<p>It's not as funny as many of their other "commercials", but they guys at <a href="http://www.railsenvy.com/">Rails Envy</a> have taken on ColdFusion</p><br /><br /><object height="350" width="425"><param name="movie" value="http://www.youtube.com/v/kU-4D51FY98"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/kU-4D51FY98" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"></embed></object><br /><br /><p>Good thing we ColdFusion developers have thick skins. They did forgot to mention, .NET, <a href="http://scripting.riaforge.org/">PHP, and Ruby</a> when discussing languages. Who's your dad anyway?</p><br /><br /><p>Late breaking addition: It appears that <a href="http://cfblog.griefer.com/">Charlie Griefer</a> has leaked some <a href="http://cfblog.griefer.com/index.cfm/id/cf9_centaur_artwork_leaked">ColdFusion 9 concept art</a>.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-896744411134398113?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-57639510534137907182007-09-19T16:19:00.000-04:002007-09-19T16:24:32.571-04:00ColdFusion makes Worse than FailureToday's <a href="http://worsethanfailure.com/Articles/Ph33r-my-5k1llz%21.aspx">Worse Than Failure entry</a> looks at some ColdFusion code. I'm not sure whether this is a good thing or a bad thing. On the positive side, the WTF was more about the code itself than the language. On the negative side, it was some pretty inept code.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-5763951053413790718?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com2tag:blogger.com,1999:blog-26595693.post-5870849639275139042007-09-04T15:58:00.000-04:002007-09-04T16:00:33.051-04:00Documenting ColdFusion custom tags in Dreamweaver (4/4)<h3>Part 4: Creating the Dreamweaver Extension</h3><p>In <a href="http://wanderingfishbowl.blogspot.com/2007/09/documenting-coldfusion-custom-tags-in_04.html">part 2</a> we created our tag editor; in <a href="http://wanderingfishbowl.blogspot.com/2007/09/documenting-coldfusion-custom-tags-in_2693.html">Part 3</a> we created our documentation. In this part we package these files up as a Dreamweaver extension. To create the extension we start with a .mxi file. Editing .mxi files can be tricky in Dreamweaver. I usually create the file as .xml, then rename it when I'm ready to create my extension. We begin by defining the name, version, Dreamweaver version required, author and description of our extension.</p><p></p><pre><span class="blue"><macromedia-extension name="</span><span class="green">Our Template Extension</span><span class="blue">" version="</span><span class="green">1.0</span><span class="blue">"<br />type="</span><span class="green">Suite</span><span class="blue">" requires-restart="</span><span class="green">True</span><span class="blue">"><br /><products><br /> <product name="</span><span class="green">Dreamweaver</span><span class="blue">" version="</span><span class="green">6</span><span class="blue">" primary="</span><span class="green">true</span><span class="blue">" /><br /></products><br /><br /><author name="</span><span class="green">Luis Matthews</span><span class="blue">" /><br /><br /><description><br /> <![CDATA[A custom tag definition for CF_ourtemplate]]><br /></description></span><br /></pre><p></p><p>Next we tell Dreamweaver where to place the files we created. Some of our files go into the Taglibraries directory, others go into the Reference directory.</p><p></p><pre><span class="blue"><files><br /> <file source="</span><span class="green">cf_ourtemplate.htm</span><span class="blue">"<br /> destination="</span><span class="green">$dreamweaver/configuration/Taglibraries/ourTags</span><span class="blue">" /><br /> <file source="</span><span class="green">cf_ourtemplate.vtm</span><span class="blue">"<br /> destination="</span><span class="green">$dreamweaver/configuration/Taglibraries/ourTags</span><span class="blue">" /><br /> <file source="</span><span class="green">TagChooser.xml</span><span class="blue">"<br /> destination="</span><span class="green">$dreamweaver/configuration/Taglibraries/ourTags</span><span class="blue">" /><br /> <file source="</span><span class="green">Reference.xml</span><span class="blue">"<br /> destination="</span><span class="green">$dreamweaver/Configuration/Content/Reference/our/</span><span class="blue">" /><br /> <file source="</span><span class="green">default.htm</span><span class="blue">"<br /> destination="</span><span class="green">$dreamweaver/Configuration/Content/Reference/our/</span><span class="blue">" /><br /> <file source="</span><span class="green">ourtemplate.htm</span><span class="blue">"<br /> destination="</span><span class="green">$dreamweaver/Configuration/Content/Reference/our/</span><span class="blue">" /><br /></files></span></pre><p></p><p>Finally, we tell Dreamweaver what type of files our tag is used for, and what .vtm files to use.</p><p></p><pre><span class="blue"><configuration-changes><br /> <taglibrary-changes><br /> <taglibrary-insert><br /> <taglibrary doctypes="</span><span class="green">ColdFusion,CFC,DWTemplate_CF</span><span class="blue">" id="</span><span class="green">ourTags</span><span class="blue">"<br /> name="</span><span class="green">Our Tags</span><span class="blue">" servermodel="</span><span class="green">Cold Fusion</span><span class="blue">"<br /> tagchooser="</span><span class="green">ourTags/TagChooser.xml</span><span class="blue">"><br /> <tagref file="</span><span class="green">ourTags/cf_ourtemplate.vtm</span><span class="blue">" name="</span><span class="green">cf_ourtemplate</span><span class="blue">" /><br /> </taglibrary><br /> </taglibrary-insert><br /> </taglibrary-changes><br /></configuration-changes><br /><br /></macromedia-extension></span></pre><p></p><p>Once our .mxi is created, we simply open the Macromedia Extension Manager, Choose File->Package Extension, Select our .mxi file and let the extension manager create the extension. Once this is complete, you can double-click your .mxp file to install your extension.</p><p>I hope that you found this series useful. There is a lot more that can be done with Dreamweaver Extensions and ColdFusion Custom Tags. Custom Tags have had a bit of a bum rap in recent years, but I believe that they still can be quite useful in the right situation.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-587084963927513904?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-4154376015198108732007-09-04T15:50:00.000-04:002008-12-11T07:34:00.146-05:00Documenting ColdFusion custom tags in Dreamweaver (3/4)<h3>Part 3: Documentation</h3><p>In <a href="http://wanderingfishbowl.blogspot.com/2007/09/documenting-coldfusion-custom-tags-in_04.html">part 2</a>, I talked about creating the tag editor for our custom tag. In this part we document our tag within Dreamweaver's reference and tie that reference into the tag editor. We'll start by creating a Reference.xml file, since this is the first tag we're documenting. For future tags, we'll simple edit our existing Reference.xml. We could use one of Dreamweaver's existing ones, but we'll create our own reference book in our own directory in order to prevent problems when upgrading Dreamweaver. This will also keep our tags together. Our Reference.xml looks like this.</p><pre><span class="blue"><?xml version="</span><span class="green">0.81</span><span class="blue">" encoding="</span><span class="green">iso-8859-1</span><span class="blue">" standalone="</span><span class="green">yes</span><span class="blue">" ?><br /><book name="</span><span class="green">Our Custom Tag Reference</span><span class="blue">" language="</span><span class="green">our</span><span class="blue">"><br /><topic_title name="</span><span class="green">Tag</span><span class="blue">"/></span><br /><span class="blue"> <subtopic_title name="</span><span class="green">Description</span><span class="blue">"/><br /><default location="</span><span class="green">default.htm</span><span class="blue">"/><br /><br /><topic name="</span><span class="green">cf_ourtemplate</span><span class="blue">" location="</span><span class="green">ourtemplate.htm</span><span class="blue">"<br /> id="</span><span class="green">Description</span><span class="blue">"><br /> <subtopic name="</span><span class="green">Attributes</span><span class="blue">" id="</span><span class="green">Attributes</span><span class="blue">"/><br /> <subtopic name="</span><span class="green">Example</span><span class="blue">" id="</span><span class="green">Example</span><span class="blue">"/><br /></topic><br /><br /></book></span></pre><p>The main things that concern us here are the book name, book language, default location and our topics. We've set the book name to "Our Custom Tag Reference". The Language is set to "our" since this is our custom reference rather than say an HTML reference. The default location specifies an HTML file to be loaded by default when the book is opened. Our default.html simply has a description of what the reference exists for.</p><blockquote>Our custom Tag Reference<br />Select the tag that you wish more information on. The second select box allows you to navigate the sections of the documentation.</blockquote><p>The Topics and subtopics defin</p><p>e what sections will show up within each topic/subtopic dropdown in Dreamweaver's reference. You are not constrained to the same subtopics within each topic. In this case I've defined three subtopics for the topic of cf_ourtemplate</p><ul><li>Description</li><li>Attributes</li><li>Example</li></ul><p>Finally we get to the file on</p> <p> this topic. ourtemplate.htm needs to contain a div with an id for each of the subtopics. The subtopics themselves and the content are up to you. I've included an example in the source. Once we have this installed in Dreamweaver we'll see a new entry in the References tab.</p><pre><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7PLz3lRAeJI/Rt23gZC3vwI/AAAAAAAAAAU/tEobvuIjmRI/s1600-h/ourtemplatedictionary.gif"><img style="cursor: pointer;" src="http://4.bp.blogspot.com/_7PLz3lRAeJI/Rt23gZC3vwI/AAAAAAAAAAU/tEobvuIjmRI/s320/ourtemplatedictionary.gif" alt="" id="BLOGGER_PHOTO_ID_5106439319614635778" border="0" /></a></pre> <p>In the <a href="http://wanderingfishbowl.blogspot.com/2007/09/documenting-coldfusion-custom-tags-in_515.html">final part</a> I'll explain how to package these files up and distribute them within Dreamweaver.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-415437601519810873?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-90523637697196906202007-09-04T15:31:00.000-04:002007-09-04T15:54:45.314-04:00Documenting ColdFusion custom tags in Dreamweaver (2/4)<h3>Part 2: Basic tag editor</h3><p>In <a href="http://wanderingfishbowl.blogspot.com/2007/09/documenting-coldfusion-custom-tags-in.html">part 1</a>, I explained that we'll need to create two files for basic tag editing. In this part we'll begin by creating a file called cf_ourtemplate.vtm. The contents will look like this.</p><p></p><pre><br /><span class="blue"><TAG NAME="</span><span class="green">cf_ourtemplate</span><span class="blue">" endtag="</span><span class="green">yes</span><span class="blue">"><br /><TAGFORMAT NLBEFORETAG="</span><span class="green">1</span><span class="blue">" NLAFTERTAG="</span><span class="green">1</span><span class="blue">"/><br /><TAGDIALOG FILE="</span><span class="green">cf_ourtemplate.htm</span><span class="blue">"/><br /><br /><ATTRIBUTES><br /> <ATTRIB NAME="</span><span class="green">title</span><span class="blue">" TYPE="</span><span class="green">TEXT</span><span class="blue">"/><br /> <ATTRIB NAME="</span><span class="green">theme</span><span class="blue">" TYPE="</span><span class="green">ENUMERATED</span><span class="blue">"><br /> <ATTRIBOPTION VALUE="</span><span class="green">basic</span><span class="blue">"/><br /> <ATTRIBOPTION VALUE="</span><span class="green">full</span><span class="blue">"/><br /> </ATTRIB><br /></ATTRIBUTES><br /></TAG></span></pre><p></p><p>Our opening <TAG> defines the name of our tag, and whether or not the tag requires and end tag. <TAGFORMAT> can be left alone. <TAGDIALOG> defines where our tag editor .htm file resides. We next move down to the <ATTRIBUTES SECTION>. For our purposes there are two types of <ATTRIB> that we're concerned with. The first type is "TEXT" which will simply define an attribute with a space to fill in the value. The second type is "ENUMERATED", which will give you a dropdown list of choices. You define those choices using <ATTRIBOPTION>. At this point our .vtm file is complete. </p><p>Our tag editor is probably the most complex part of this process. Fortunately there are a lot of examples already built into Dreamweaver. Simple find a tag that has an editor that functions like what you are trying to do, and use that tag editor file as a template. Fortunately our tag editor for this example is fairly simple. The <a href="http://mysite.verizon.net/luis.matthews/ourtemplate.zip">source code</a> will be very helpful here. I'm not going to replicate the entire file since it's quite long. This is basically a standard HTML file with some custom javascript.</p><p></p><pre><span class="red"><script src="</span><span class="blue">../../Shared/Common/Scripts/dwscripts.js</span><span class="red">"></script><br /><script src="</span><span class="blue">../../Shared/Common/Scripts/ListControlClass.js</span><span class="red">"></script><br /><script src="</span><span class="blue">../../Shared/Common/Scripts/tagDialogsCmn.js</span><span class="red">"></script><br /><script></span><span class="black"><br />var THEMELIST;<br />var theUIObjects;<br />var applyType = </span><span class="blue">"dynamic"</span><span class="black">;<br /><br />function inspectTag(tagNodeObj)<br />function applyTag(tagNodeObj)<br /><br />function initializeUI()<br />{<br />var theThemeScaleCap = new </span><span class="green">Array</span><span class="blue">("basic","full")</span><span class="black">;<br />var theThemeScaleVal = new </span><span class="green">Array</span><span class="blue">("basic","full")</span><span class="black">;<br />THEMELIST = new ListControl(</span><span class="blue">"thethemescale"</span><span class="black">);<br />theUIObjects = new </span><span class="green">Array</span><span class="black">(THEMELIST);<br />tagDialog.populateDropDownList(THEMELIST, theThemeScaleCap,<br /> theThemeScaleVal, 1);<br />}</span><br /><span class="red"></script></span></pre><p></p><p>We start by including some .js files and defining some variables. Next comes the inspectTag and applyTag functions which I've truncated since they are identical each time. Finally we have the initializeUI function where we define the values for our theme list and populate the drop-down box. next we'll include the required stylesheet.</p><p></p><pre><span class="blue"><link href="../../fields.css" rel="stylesheet" type="text/css"></span></pre><p></p><p>finally we'll add our text field and our dropdown.</p><p></p><pre><br /><span class="orange"><input name=</span><span class="blue">"thetitle"</span><span class="orange"> type=</span><span class="blue">"text"</span><span class="orange"> class=</span><span class="blue">"basicTextField"</span><span class="orange"><br />id=</span><span class="blue">"attr:cf_ourtemplate:title"</span><span class="orange"> attname=</span><span class="blue">"title"</span><span class="orange"> required=</span><span class="blue">"true"</span><span class="orange"> /><br /><select name=</span><span class="blue">"thethemescale"</span><span class="orange"> class=</span><span class="blue">"oneWordOptionList"</span><span class="orange"><br />id=</span><span class="blue">"attr:ccf_ourtemplate:themescale"</span><span class="orange"> attname=</span><span class="blue">"theme"</span><span class="orange"> editable=</span><span class="blue">"false"</span><span class="orange">><br /></select></span></pre><p></p><p>That's basically it. For further reference on this topic, see Extending Dreamweaver -> Extension APIs -> Tag Libraries and Editors under Dreamweaver's help menu. In <a href="http://wanderingfishbowl.blogspot.com/2007/09/documenting-coldfusion-custom-tags-in_2693.html">Part 3</a>, l'll explain how to create custom documentation for our tag within Dreamweaver.<br /></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-9052363769719690620?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-64768346802955752442007-09-04T15:24:00.000-04:002008-12-11T07:34:00.663-05:00Documenting ColdFusion custom tags in Dreamweaver (1/4)<h3>Part 1: Introduction</h3><p>I've been meaning to post on this topic for a bit, and after reading Ray Camden's <a href="http://www.coldfusionjedi.com/index.cfm/2007/9/3/ColdFusion-custom-tag-for-layout-example">post on custom tags</a>, I thought now would be a good time. I realize that a lot of developers use <a href="http://www.cfeclipse.org/">CFEclipse</a> these days, but for those who use Dreamweaver or have others sharing a server that use Dreamweaver, documenting custom tags within Dreamweaver can be quite helpful. In our case, we have application developers and editors/designers that share templates and other UI elements. We've also used this technique to encapsulate complex capabilities into simple tags for our editors/designers.</p><p>During these articles we're going to look at a fictional tag called <cf_ourtemplate> that contains attributes of "title" and "theme". Our tag has two themes called "basic" and "full". How the tag functions and what those themes are is irrelevant to this exercise, so I'll leave that to your imagination. When we're done we should have something that looks like the following.<br /></p><p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7PLz3lRAeJI/Rt2xm5C3vvI/AAAAAAAAAAM/6dEtJIkeG1A/s1600-h/ourtemplate.gif"><img style="cursor: pointer;" src="http://2.bp.blogspot.com/_7PLz3lRAeJI/Rt2xm5C3vvI/AAAAAAAAAAM/6dEtJIkeG1A/s320/ourtemplate.gif" alt="" id="BLOGGER_PHOTO_ID_5106432834214018802" border="0" /></a></p><p>In order to bring this to life, we're going to need to create<br /></p><ul><li>a cf_ourtemplate.vtm, cf_ourtemplate.htm, and TagChooser.xmlile to define the inline hints and the tag editor<br /></li><li>a Reference.xml, default.htm, and a ourtemplate.htm file for documentation<br /></li><li>a .mxi file to make installing into Dreamweaver easier</li><br /></ul>It is not my intention for this series to be an exhaustive reference. To that end, in instances where a more detailed reference is available, or where the reference code is self-explanatory, I'll keep my explanations to a minimum. In the <a href="http://wanderingfishbowl.blogspot.com/2007/09/documenting-coldfusion-custom-tags-in_04.html">second part</a>, I'll discuss creating the vtm and htm files for basic tag editing. Before moving on, you may wish to download the <a href="http://mysite.verizon.net/luis.matthews/files/ourtemplate.zip">source code</a>.<br /><p></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-6476834680295575244?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-70651767231145270162007-08-28T14:16:00.000-04:002007-08-30T13:07:30.222-04:00A legitimate complaint about ColdFusion 8I spotted this <a href="http://www.richarddavies.us/archives/2007/08/coldfusion_is_the_next_frontpage.php">post</a> on <a href="http://weblogs.macromedia.com/mxna/">MXNA</a> last night that at first appeared to be yet another <a href="http://wanderingfishbowl.blogspot.com/2007/07/rumors-of-coldfusions-death-are-greatly.html">CF is Dead </a>type post. I'm not sure why I read it, but once I reached the second paragraph, I realized that it contained a legitimate complaint about ColdFusion 8's AJAX implementation. I suspect a good number of folks ignored it due to the title, so I thought I'd give you all a second chance. I don't necessarily agree with all of the complaints, but I do hope that Adobe does address some of this in future versions. Note: I've disabled comments on this post since it's really just a pointer.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-7065176723114527016?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.comtag:blogger.com,1999:blog-26595693.post-6371763384689096582007-08-20T12:39:00.000-04:002007-08-29T16:53:05.781-04:00Putting Object Oriented CF in Perspective<p>After reading <a href="http://www.bennadel.com/blog/914-I-Just-Can-t-Understand-Object-Oriented-Programming-OOP-And-Join-Tables.htm">this post</a> from Ben Nadel last week, I got to thinking about an OO reality check. I'm doing an intro to OO in ColdFusion tomorrow for our staff, and one of the things I plan to emphasize is that these techniques are another tool for their toolbox. While there are times that OO will be the best tool for their project, there may be times where it makes little sense. I'm not going to pull out a nail gun, when a hammer is all I need. On the other hand, when I do really need the nail gun, sticking with a hammer is kinda silly. (not to mention slow)</p> <p>The thing about OO is that it takes time to learn (I'm two years into the process, and still have a long way to go.) That doesn't, however, mean that I haven't been taking advantage of OO during that time. I see this as a <a href="http://www.codinghorror.com/blog/archives/000932.html">Yahoo's problems are not your problems type situation</a>.</p><p></p><blockquote> But also <strong>realize that Yahoo's problems aren't necessarily your problems</strong>. There is no such thing as one-size-fits-all guidance. Strive to <i>understand</i> the advice first, then implement the advice that makes sense for your specific situation.</blockquote><p></p><p> I code things the best way that I currently know, until I get into a situation where I say, "There's got to be a better way!", then I go out and figure out what that better way is. This not only grows my skills when I need it, but also means my applications use these techniques when they are required. I've read about this idea of development several times when dealing with design patterns. The idea is that design patterns were meant to be used to solve problems when they are needed. Using the most design patterns doesn't mean you win. I believe the same holds true for OO concepts. I've been recently dealing with an application written by a couple of developers who are no longer working with us. They were so focused on OO purity that they ignored many of CF's native features. In the right situation each of these decisions might make sense, but in this case, they combined for an application that is harder to maintain than it would've been if they had been focused on writing simple and maintainable code.</p> <p>Perhaps Ben's difficulty in understanding a specific OO concept is that he's not yet really needed it. I'm not in any way suggesting that we don't spend time on learning things that we don't yet need to know. I've bookmarked some of the links from the comments to that post, and will read them as time permits; however, most of the code that I'm writing these days will continue to use <a href="http://transfer.riaforge.org/">Transfer</a>, <a href="http://www.reactorframework.com/">Reactor</a>, or simple gateways and DAOs, which has been meeting my needs quite nicely. When I need something more, it's nice to know it's there, though. And please, keep up with the great posts and discussions on advanced topics.<br /></p> <p>The bottom line here is that effective development means using the right tool at the right time. There have been a number of times where I've started sections of code with comments explaining that if this section is expanded, it should be refactored to be more OO first (usually with a detailed explanation of what to do), but for the sake of simplicity and expediency, I’ve written it in a more procedural fashion. Occasionally, I go back and refactor those bits of code as the situation warrants. Other times, I just let them run as they are. It may not be the most textbook code, but I find it effective.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-637176338468909658?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-70667766343333050942007-08-15T11:28:00.000-04:002007-08-17T11:23:05.073-04:00We need a new UI paradigmIn my mind, one of the most exiting web 2.0 innovations for businesses (sometimes called Business 2.0) is mashups. The Summer edition of <a href="http://innovations.ziffdavis.com/">Innovations</a> listed mashups and making data more available as <a href="http://innovations.ziffdavis.com/2007/07/editors_note_finding_the_sweet_1.html">trends in the business world</a>. Working for a medical college, I can foresee the day when faculty members could use current medical trends to determine what areas to emphasize, or even analyze areas where the student body is weak in order to focus on those areas more. (Perhaps even both) The point is that in order to take full advantage of the increases in data accessibility, users will need to be able to create their own mashups. Of course I'm not advocating a <a href="http://www.coghead.com/">Coghead</a> type approach (I<a href="http://weblogs.asp.net/alex_papadimoulis/default.aspx"> agree with Alex </a>from <a href="http://worsethanfailure.com/">Worse than Failure</a> on this subject). I expect that developers will probably continue to build reusable mashups and reports, but for basic ad-hoc mashups to be effective, users will need to be able to do it themselves. The key to this, I think, will be the creation of a new UI paradigm.<br />If you think about it, most applications have general UI paradigms. If you are familiar with one Word Processor, you can perform basic operations on pretty much any word processor on the market. For advanced features, you've still got to learn the specific product. The same is true for everything from Email to mapping software (<a href="http://maps.google.com/">Google maps</a>, or even something like <a href="http://www.zillow.com/">Zillow</a> don't work much differently than old standards like <a href="http://www.mapquest.com/">Mapquest</a>.) The only questions left is "Who will introduce the new paradigm?", and "How long will it take to become Standardized?".<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-7066776634333305094?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com2tag:blogger.com,1999:blog-26595693.post-77675604643807966892007-08-14T14:36:00.000-04:002007-08-14T15:02:13.098-04:00Gettin' ReorganizedI came back from Vacation a few weeks ago to find out that my department is reorganizing. It's taken a few weeks to find out what exactly that means, but essentially I (and my colleagues) are in the process of deciding to either be full time web developers or move into <a href="http://en.wikipedia.org/wiki/Middleware">middleware</a>. It's an interesting decision to make. In my case, most of what I currently work on, falls under the middleware umbrella, but moving over there means probably less coding (at the very least less, ColdFusion coding, probably no Actionscript work, and most certainly no Flex). It would mean, however moving into other interesting things like identity management, and data integration, that would give the reconstituted web development group broader access to interrelated data from various systems. At the moment I'm trying to figure out whether it'll be more interesting enabling this access, or building the <a href="http://en.wikipedia.org/wiki/Mashup_%28web_application_hybrid%29">mashups</a> that will hopefully be and end result. Decisions, decisions... In any event, I'll either keep this blog Adobe/Web related, or have it removed from MXNA.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-7767560464380796689?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com0tag:blogger.com,1999:blog-26595693.post-80792697009875200542007-07-18T11:42:00.000-04:002007-07-18T11:49:08.227-04:00Some thoughts on ColdFusion Evangelism<p>In one of the <a href="http://www.blogger.com/comment.g?blogID=26595693&postID=8278585048452351868">comments</a> to my <a href="http://wanderingfishbowl.blogspot.com/2007/07/rumors-of-coldfusions-death-are-greatly.html">Friday post</a>, Barry B asked for my thoughts on ColdFusion's Strengths, and how they could be leveraged to get more companies on board with CF development. In my mind that called for more than a simple comment response. Below is the last of a series of posts exploring the topic.<br /></p><p>In my <a href="http://wanderingfishbowl.blogspot.com/2007/07/why-im-coldfusion-developer.html">last post</a>, I talked a little bit about why I am a ColdFusion Developer. In my final post for this series, I thought I'd throw out some ideas on how Adobe can better evangelize ColdFusion. Bear in mind that these are just thoughts, and as such may or may not truly be viable ideas. I hold no claim to ownership on these ideas, so Adobe, or whomever can feel free to use them as they see fit. Mainly this is meant as a jump off point for discussion, rather than fully realized ideas.<br /></p><p>The first thing Adobe can do is to better advertise. I receive regular mailings from Microsoft advertising .NET, as well as seeing their ads regularly in publications like eWeek, Baseline, etc... More importantly, my boss (who ultimately decides what we buy) sees those same ads. Sure, I receive emails from Adobe when new products come out, but my boss does not. Beyond that, the fact of the matter is that when I do receive one of those emails, I tend to file it away to look at later, and move on to the more time sensitive emails. Two guesses as to how often I get back to the Adobe mailings. As a direct result, while we would be good candidates for using Flex, I don't see that happening anytime in the near future. I've mentioned it a few times, but it's been difficult to put together a compelling business case for a product that my boss has barely heard of. (Reminds me of the old catalog service "Everything you've never heard of but can't live without".)<br /></p><p>The second thing Adobe can do is put Livedocs out of it's misery, and replace it with something better. One would think that between Flex and ColdFusion, Livedocs would be a showcase of how to build a compelling rich internet application. Livedocs was great back in the day, but it's getting more than a little long in the tooth at this point.<br /></p><p>My third suggestion would be to recreate the CF Pet Market application in competing languages (PHP, .NET, Ruby, etc..) using best practices in those various languages, then posting a series of articles highlighting specific areas where CF shines.<br /></p><p>My final, and probably most controversial suggestion is for Adobe to release a free version of CF server that can be used in a production environment. I'm thinking something that sits say below Standard edition, with support for maybe 95% of the tags (i.e. no reporting, no pdf work, no image work, etc..), and reducing the number of built-in database drivers (perhaps keeping only mysql and access). The idea here would be to put CF on an equal footing price-wise with the PHPs of the world at least for getting in the door. Once users have an investment of time in CF, I suspect the cost of upgrading for the more robust pay version would be less of a concern than it is today. It might also mean more developers learning CF in the first place.<br /></p><p>Well, there you have it, during this series of posts, I've discussed <a href="http://wanderingfishbowl.blogspot.com/2007/07/why-coldfusion-is-not-dead-language.html">Why CF is not dead</a>, <a href="http://wanderingfishbowl.blogspot.com/2007/07/why-im-coldfusion-developer.html">why I use CF</a>, and finally with this post, added some thoughts on how Adobe can better evangelize CF. Hopefully you found some of these ideas interesting.<br /></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/26595693-8079269700987520054?l=wanderingfishbowl.blogspot.com'/></div>Luishttp://www.blogger.com/profile/02715399333524485250noreply@blogger.com5