An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

Entries for month: February 2006

cf.Objective() - Booked my hotel room!

February 28, 2006 ·

I finally got around to booking my hotel room for cf.Objective(). I arrive Friday evening (around 6pm) and leave Monday lunchtime. See you there? The early bird rate for the conference has expired but the general admission price of $375 is still good value.

Tags: coldfusion · cfobjective

Stupid Comments?

February 28, 2006 ·

I was just reading Kay Smoljak's rant about stupid comments (via a link on Todd Sharp's blog - where he posts a priceless comment found in Ray Camden's code!). Kay rails against people who put "obvious" comments in their code that don't add any value. A few people point out that they sometimes sketch out code by writing pseudo-code in comments and then writing the real code, which can leave the code in the situation that Kay describes. I've done that too sometimes so I sympathize - but I generally replace a pseudo-code comment by real code, not write the code below the comment. Anyway, it made me go back over some of my code to see what sort of comments I put in real code. The answer is: "very few". I was actually surprised at how sparse my commenting style is. The code is readable (in my opinion!) because it uses carefully named variables and methods so the code mostly reads like English phrases and sentences. I also generally keep each line of code pretty simple, breaking complex operations into multiple lines where possible. We all have different styles, of course, but bear in mind that the main audience of your code is probably not going to be you in the future. And here's an example of some real code I wrote with what I consider a good comment:
<!---
   some validation on formats:
      - should be at least 3 characters
      - should be at least two alphabetic
      - optionally followed by - and two or three alphabetic
      - optionally followed by _ and at least 3 alphabetic
--->
<cfif len(outputSalesOrg) gte 3 and
    REFind("^[A-Z]{2,}(-[A-Z]{2,3})?(_[A-Z]{3,})?$",outputSalesOrg) eq 1>

   <!--- it's probably valid --->
<cfelse>
   <cfset raiseException("INVALID","Unknown sales organization (#arguments.inputSalesOrg#) encountered",arguments.filename) />
</cfif>
The comment adds value because the code is compact and non-obvious (but this is a classic use of regex). I wrote the comment first and then wrote the code. However, since the code in this case is non-obvious, I left the comment in place. Feel free to comment here or over on Kay's blog (to keep the thread in one place, if you want).

Tags: programming

Do Not Think Too Much

February 28, 2006 ·

Basement.org's Rich Ziade has a nice observation about overthinking problems and the differences between short-term and long-term memory. The inspiration for his article? The U.S. Snowboarding Team listening to their iPods while competing at the Winter Olympics. They're blocking out distractions - and the noise of the short-term memory - to allow their long-term memory to drive their actions "automatically", drawing on their learned expertise. Rich draws a parallel with designers and the designs they create - and how easy they are to learn. I want to draw a parallel with object-oriented design / programming. All the time you have to actively focus on it and think hard about the problems, it's difficult. Over time, you gain expertise and a comfort level - as the lessons learned move into long-term memory and things become more natural. In other words, you know you've reached a level of expertise with certain concepts when you find yourself applying them almost subsconciously, without thinking too much about it. That doesn't make it any easier to learn OO, but it should give you a way to measure when you become effective at applying OO. Mind you, you might find it easier to learn if you try not to over-think how to design your solution - let it flow. If it's "wrong", you'll figure it out later and will have learned a practical lesson but more likely you'll just refactor your solution to be a better fit for your problem space over time. And listening to an iPod while you program? Yeah, works for me...

Tags: programming

Reactor Framework - Lots of activity

February 27, 2006 ·

Doug Hughes has posted a summary of changes and enhancements to the Reactor ORM framework. He's working toward a 1.0 release and, as you can see, he's certainly very busy working on the framework to create a stable, full-featured release. He credits me with donating MySQL 4.x support but I should point out it was only partial support and several other Reactor community members have since contributed bug fixes and enhancements for that. Oracle support is also in the works from the Reactor community (but is trickier due to how it handles auto-incrementing primary keys - or rather how it doesn't handle them but relies on sequences etc).

Tags: coldfusion · orm

Helms and Peters - New Web Site

February 27, 2006 ·

Hal Helms and Jeff Peters have a new web site that showcases their "Out Loud" podcast series. If you haven't added their podcast to your list yet, you should! Very engaging discussions about software development.

Tags: coldfusion

Breeze Presenter Tips

February 24, 2006 ·

As part of the preparation for CFUNITED 2006, Michael Smith is planning to run a series of "CFLive" events (like last year) where speakers give a short overview of their conference presentations, as a teaser to encourage more attendees and to help folks decide which talks to go to. I responded to the speakers' mailing list with some tips for using Breeze effectively and figured that it would be good to share them more broadly in a somewhat more generic form. Tip #1: Use a dual monitor setup - put the Breeze meeting up on the second screen with preview mode enabled so you can see what your audience sees (and the chat pod!) and share your primary screen. This allows you to watch the chat so you know instantly if your audience are having problems and you can also take questions during your presentation. Tip #2: Make sure you run through the audio configuration wizard in Breeze with the exact audio setup you plan to use in advance of the meeting. This will figure out the background silence levels and the sensitivity of your microphone. Go to Meeting > Audio Setup Wizard... once you're in Breeze. Keep your head/mouth at a consistent distance from microphone during the configuration and during your talk! Some folks have a tendency to rock back and forth in their chairs while they present - this creates a bad audio experience for your listeners as you move closer and further from the mic! Update: Dave Watts suggested using a headset microphone and recommended USB headsets from Logitech and Plantronics. Also make sure you have a quiet, private environment to broadcast from (cube farms are not a good environment for this, nor are most homes with kids and pets running loose!). Tip #3: Create an effective presentation slide deck. Well, duh! This isn't just about Breeze but it's worth repeating anyway. Most presenters speak for 1-2 minutes per slide so bear that in mind when you're creating a presentation. If you have more than about 35 slides, you probably won't get through them all in a 50 minute presentation and you won't leave any time for Q&A! Think about the structure. Most (effective) presentations typically have this sort of structure:
  • Title slide (presentation title, your name, company, maybe email address).
  • Goals of the talk - "what is this talk about?" - tell your audience why they are here and what they will (hopefully) learn
  • Introduce yourself - "who am I and why should I be talking about this topic?" - establish your credentials but don't brag!
  • Agenda - explain the structure of the talk - it's often a good idea to drop the agenda slide in between each major section of the talk so the audience know where they are and highlight the relevant part of the agenda slide each time.
  • The meat of your talk... blah, blah, blah!
  • Summary slide(s) - recap your main points and remind your audience of what they (should have) learned during the talk and this should probably mirror the earlier goals slide.
  • Resources slide(s) - pull together all the books / links that your talk references and list them here so your audience can find them easily in the handouts or online later.
  • Repeat title slide with full contact information - this is often easier with a regular slide layout than the graphical "title" layout used for the first slide.
I hope that is useful. Feel free to share your presenting tips in comments - or offer up things not to do when presenting!

Tags: personal · connect · saas

Learn By Heart - New Practice Exams

February 23, 2006 ·

Back in 2003 I talked about certification and the Learn By Heart practice exams. Nat Dunn (of Learn By Heart) just sent me this announcement:
LearnByHeart, which offers practice web-based Macromedia certification exams is now out of beta. The site offers three full ColdFusion MX 7 exams and 3 full Dreamweaver 8 exams. Flash 8 exams are expected by the end of May. Each exam category costs $99.96, but corfield.org visitors can get a $40 discount by using the promo code "corfield".
I think it's great that my readers will get such a discount on these great practice exams! Huge thanks to Learn By Heart for this!

Tags: coldfusion

ColdFusion Position in Cambridge, MA

February 23, 2006 ·

Another job posting:
TECHNICAL SPECIALIST - (WEB DEVELOPER) Position available in our Fashionworld Business Unit in our Cambridge, MA office. Posting # 00732 KEY RESPONSIBILITIES : Primary ColdFusion developer. Responsible for architecting web applications, ensuring web applications are functioning properly and any issues are resolved promptly. Also maintains development and production environments. COMPETENCIES :
  • Expert Web architecture and coding skills.
  • Expert ColdFusion programming skills.
  • Expert database manipulation skills.
  • Eye for detail.
  • Over 5 years of web programming using, but not limited to: HTML, JavaScript, DHTML, XML and CSS.
  • Positions ideally held: Senior Web Developer experienced in mission-critical, high traffic web applications.
  • Project Management: Must be able to set and adhere to schedules and deadlines.
Education: Prefer college degree or equivalent years of experience. Contact: e-Placers.com - Your Technical Recruiters - see our web page
patrick@e-placers.com http:// www.e-Placers.com
103 Union Street - Watertown MA 02472-2524
617-710-0471
Recruiter: Patrick Mertens

Tags: coldfusion

Tom Jordahl at cf.Objective()

February 22, 2006 ·

The ColdFusion product team's own Tom Jordahl will be speaking about Mystic and Flex 2 in the keynote session as well as a detailed session on ColdFusion, Web Services and Java showing how things work under the hood with Axis. Sure to be good talks so hurry along and register for cf.Objective() before the early bird prices ends this weekend!

Tags: coldfusion · cfobjective

OO Glossary for CFers

February 22, 2006 ·

Daniel Short has created a wiki-based site that he hopes will become a valueable resource for ColdFusion developers: a glossary of object-oriented terminology, explained in ColdFusion terms.

Tags: coldfusion