Tuesday, August 18, 2009

CFUnited 2009 - Day Four

I'm a bit late with my last day post - the lack of sleep caught up with me and I have a bit of work backlog to deal with.

I didn't get a lot of sleep the last night of the conference, so I struggled to get up and checkout of the hotel. I decided when I got to the conference that I would try to attend the sessions that were put on by the major speakers.

I snuck into Ben Nadel's "Extending Custom Tags" function, and was pleasantly surprised. He's a great presenter, and I love that he talks about solutions that are practical. There aren't many other developers that would base a whole session on Custom Tags, since they are sometimes seen as one of the older features of ColdFusion, but Ben showed reminded us of how much we can actually do with them.

He touched on:
  • Recursion
  • Looping and workflow logic
  • The GetBaseTagData() function
Ben also showed us how we could use Custom Tags to call CFCs, allowing us a little more portability in our code and even how to execute components as Custom Tags. A really interesting presentation.

I also attended Peter Bell's "Estimating Requirements" session. He is also a great presenter, and I was again surprised at the amount of new tips that I took away from his speech.

He focused on three types of projects:
  • Configuration - small, common projects where the price can include the spec
  • Customization - medium sized projects
  • Exploration - larger projects that require some research and often require fairly open specs
Peter suggested that in order to get a handle on projects, we should look at these elements:
  • Business intent - WHY is the project being done
  • Audiences and functional roles
  • Objectives - what does the audience want
  • User stories - "as an X, I want X, so that X"
  • Use cases - screens, actions, steps, and alternate and error paths
Some other highlights of the session:
  • For small projects, sometimes the writing of the spec can be part of the development
  • Capturing requirements using Intent Driven Design
  • Focussing on "why" a project is being done, breaking too many intentions into separate projects
  • Use cases are especially important for "fixed bid" projects
  • How to handle "dark matter" - the unexpected things that come up
  • Ways in which you can ensure that if it is not in the spec it is NOT included
  • Agile approaches like Scrum, Lean, Emergent Design, etc
  • The importance of minimizing 'work in progress' - there is no such thing as 90% done
It was a good session.

No better way to end the morning than with another jQuery session by Ray Camden. I thought I had heard all he had to say about Ajax and JavaScript, but at least I knew it would be interesting. Considering I don't know jQuery that well, it was really quite informative. It was nice starting with the basics (selectors) and moving quicking into chaining, matching and filtering. I enjoyed hearing more about the $(document).ready function and a summary of his favourite jQuery plugins.


In between sessions it was also nice running into Jose in the morning, and getting to thank him again for helping me get to downtown DC. I had lunch with him at a table with a bunch of great presenters (Lisa, Dee, Jason, Ben, Simon and more) so it was nice to be able to say thanks and goodbye to these funny and hardworking folks as I headed off to the airport.

I left a lot of time to get to the airport, and just took the trip home slowly, enjoying as much as I could the downtime. The flights were long, but it was great to get home. It was certainly a great conference and wonderful experience.

(Image from afagen on Flickr)

Saturday, August 15, 2009

CFUnited 2009 - Day Three

... And the conference only gets better.

It was another day of free coffee, a great lunch and better company. The vibe at day three of CFUnited was a bit different today, since quite a few people seemed be headed out while a new batch of people were arriving for the weekend session.

Paul and I managed to bump into Sam Farmer and Ben Nadel and a whole bunch of other exciting members of the community. I'm really struck by how some people come to the conference and DON'T network - this community is so exciting, but would be even more so if people took a moment and the risk (it's really no risk) to introduce themselves!!

My first session was with Simon Free listening to him talk about Facebook apps in ColdFusion. There wasn't much here that I didn't know, but his talk certainly demystified FBML for me. He had good tips about:
  • How to handle the bug with the FORM field name fb_sig in CF8 (due to auto form validation)
  • How Facebook processes the pages you create
  • How some features (CFFORM, CFDUMP) won't work within FB pages
  • What "proxied_email" is and why it's there
  • How the new extended privacy policy affects app developers
He was very positive about Facebook without being a fanboy - the platform has it's problems but it is a very valuable tool for reaching many people. His code examples were clean and realistic.

I attended his session on Developing APIs later in the day (man, this guy is busy!), which was another really good one. He described RESTful concepts well, and talked about the problems in creating an API:
  • It takes a lot of planning
  • They might be used/consumed by people in many different languages and environments
  • You have to be careful about scopes (esp cookies and sessions)
  • APIs require good documentation
  • Security is an immediate issue
Simon gave good examples using Apache rewrite and mentioned the code snipped 'GetPageContext().GetOut().ClearBuffer()' as a tool in handling excess whitespace. I loved how he made a template for API method documentation available - good stuff!

I attended Terry and Dip's session about the new Microsoft tools available in CF9. Although I wasn't blown away, there were a couple good things about the session. It was really easy to use the CFEXCHANGE tag, the Sharepoint integration was interesting, and Terry made a great point about how the ability to convert stuff to PDF opens up a whole new world to CF developers due to the amazing PDF functions - extracting text, images, thumbnails, etc.

Mr Ray Camden was hilarious as always in his Ajax CF/911 session. He sold the audience on Firebug and ColdFire (which we already use) and pointed out a few "gotchas" that trip up developers using Ajax:
  • Whitespace
  • How debugging works in Adobe ColdFusion
  • Cross domain concerns and JSONP
  • onRequest in Application.cfc blocking Ajax requests

I attended a session by Selene at RiteTech. It wasn't really for me, but it's interesting hearing someone's thoughts about "build vs. buy" when it comes to e-commerce. I've built many different types of e-commerce applications and I agree with her that the "build" option is not very compelling. Unfortunately, I thought she missed a whole type of solutions - hosted solutions that are developer friendly, like GoodBarry and Shopify. Some hosted options have gotten much more advanced than Miva. I would have also LOVED to see a mention of FoxyCart, one of my new best friends.

My last session of the day was INTENSE - Marc Esher took us on a crazy ride through his development techniques where he avoids "monkeywork", makes the computer the slave and works more productively. He introduced snippets, Launchy, Ant and JMeter and talked about how developers need to avoid the noise - best quote of the session:

Developers accept noise graciously, thus Twitter

Good point Marc.

Man this guy was excited and passionate. Whoever he works for is LUCKY - based on how fast the guy talks and works, he probably gets more done in his 9-5 than some do in a week. A very inspiring session.

The day ended (other than my DC adventure) with a round of great demos by the CF community and a hilarious video. There are some awesome projects out there. Thanks to the CFUnited team and the entire community for bringing us a THIRD day of inspiration. One more day left.

Friday, August 14, 2009

CFUnited 2009 - Day Three, DC edition

I haven't written out my CFUnited Day three notes yet, but I thought I'd quickly write some notes about my evening trip to Washington DC.

After the demos, I walked to the front of the Lansdowne resort. No other CFUnited attendees had responded to my tweet about heading into the city, so I was a bit torn. I'm not a traveller, and I feel so lost - I would be kicking myself if I didn't at least try to see the sights. The shuttle to the "Metro" (like a train or subway to DC) pulled up, and I hesitantly got on. I had no camera or anything from my hotel room, but this was my best chance to get there.

One other conference person got on and introduced himself as Jose. I mentioned my plan to head to the Smithsonian area by myself, and he gave me some tips. I was a bit worried, but he helped me figure it out. We chatted about DC, the US economy, health care, web development, all the light topics.

Just over 90 minutes later I reached my stop. I climbed the escalator to "The Mall". Wow.

It was a really warm night, and even as the sun set there were tourists and excited visitors everywhere. I had NO idea where I was, but I saw the familiar Washington Monument and so I started walking. It is a very strange feeling being in a strange place with no idea of direction or location - but it was a very cool place to be stranded.

An hour and a half later I managed to see the monument, World War II memorial and fountain, Lincoln's Memorial and the White House. The buzz from the tourists, even so late in the evening, was almost tangible, and staring up at some of the historic monuments I could almost feel where some of the Americans get their pride of their country. The sights at night were pretty much breathtaking.

I grabbed a quick sandwich from a souvenir shop and hustled back to the train. I didn't make it to the train station in time (it closed early for repairs or something), but some tourists helped me find my way to the next station.

I got settled for the long ride back - after a train ride, a shuttle ride and a taxi ride, I managed to make it back after almost three hours. What a memorable adventure, even if the actual DC visit was short. Thanks to Jose, wherever you are, for being such a great help!

Photo by ehpien on Flickr

Thursday, August 13, 2009

CFUnited 2009 - Day Two

Another really full day - composing this as I sit in the resort lounge waiting for the "pool party" to start. I'm not a pool party type of guy, but I'm really enjoying talking to some of the people at this conference. So much excitement, so much information to absorb.

Today started nice and early with a CFBuilder lab. Other than the fact that the audience was woefully unprepared and a bit rude to the ladies that were hosting the lab, it was pretty awesome. The help system in CFBuilder works quite well, and you can pull it up at anytime with Crtl-space. The code introspective worked nicely too and the ability to map and manage your servers was impressive.

I hit the Model Glue session after, just to hear Mark Drew speak. He's a great presenter, and since I'm not very familiar with Model Glue it was quite interesting. He took a lot of time to explain design patterns - I found it interesting to hear that he breaks the classic MVC (model view controller) pattern into three smaller patterns:
  • Strategy pattern - detaching your business logic
  • Observer pattern - decoupling parts and having events broadcast to listeners
  • Composite pattern - not always applicable for web apps, but having a code made up of other subparts that can be rearranged but still separate

The keynote for the second day featured Joe Reinhart talking about whether ColdFusion was dead or alive. His conclusion - ColdFusion is obviously very much alive, but not in the form we think. Selling ColdFusion as a scripting language that can connect databases to the web is EXACTLY why the world thinks CF is dying. This aspect of the language is many years old. However, selling CF as an "Enterprise hub" really highlights how far ahead it is of many other web languages. He said that the CF community needs to get excited and start pushing the boundaries of the newer aspect of the language.

His demos of modern CF applications like SlideSix really showed us how far we can push it.

Next Paul and I attended the two ORM session - Introduction to ORM and Advanced ORM. Terry Ryan's intro session was perfect, and it set the tone for Hemant's later session. I loved his frank comparison of the different methods of coding and their resulting number of lines of code and ease of use. The ORM version was less code, and extremely simple and maintainable.

Hemant (I hope I got that name right) dug us deeper, and crammed an amazing amount of information into a single hour. He showed us really meaningful examples of Hibernate in action - relationships, inheritance, mapping and transactions. There was no falling asleep in this session!

I ended up in Barney Boisvert's CFGroovy session. Great presenter too - he didn't lay the groundwork well, but the session ended up being pretty much self explanatory. Groovy is a JVM based language that shares it syntax very much with Java. CFGroovy is a tag that allows CF developers to use scriptlets and embed Groovy code right in their CF files!

At one point, he showed us a CF file that took a CF variable, and embeded:
  • Groovy code
  • PHP code
  • Python code
  • Ruby code
  • More CFML code
At the end of the file, it dumped out the variable and sure enough, each language acted on the variable as expected. Wow. The best part was that it was ridiculously simple and easy to read, and didn't appear slow in any ways.

Anyways, off to the pool party. I'm so tired, but it's worth it. Thanks CFUnited!

Wednesday, August 12, 2009

CFUnited 2009 - Day One


Wow. What a day. In the opening keynote, organizer Liz mentioned that despite a few small issues, this conference was setup exactly as she imagined. I haven't attended CFUnited before, but I can believe it.

The snacks, coffee and refreshments were everywhere, the people friendly and the venue fantastic. The sponsors were excited and talkative, and the food that was served was top notch. If the next few days are like this one this was a VERY worthwhile conference.

So a quick summary of some of the stuff I encountered today. First, some highlights from the keynote:
  • Formation of a non-profit called 4CFF to support Open Source CF projects. I saw Jason Delmore at their booth later.
  • Official rule - all attendees must call Ben Forta "sir" or "master" (WWBD)
  • Terry Ryan as new ColdFusion and higher education evangelist
  • Quick code demo using entityLoad() function and outputting to spreadsheet in a couple lines of CFSCRIPT
  • Announcement of new Adobe licenses for the cloud and creation of official Amazon EC2 AMI

I then attended a session about SQL Server reporting. It seems like a powerful tool, but the session was a bit introductory for me. The ability to allow power users to create Ad-hoc reports based on report models was interesting.

My next session was about Design Patterns. The speaker, Dan Blackman didn't stop to take a breath; he hit us with a continuous stream of useful theory on how to create general, reusable solutions to recurring problems. The session was also very interactive and he encouraged questions and dialog.

The flex stuff was above my head, but there were some great tips on the "ideal" process:
  • Build databases using ERDs
  • Generate class diagrams from ERDs
  • Create CFCs from the class diagram
  • Generate Business Delegates to expose services
  • Build Gateways to package into typed data
  • Create services for CRUD
  • Use mediators and commands to take requests from views
  • Discussed the concept of 'facades' that map out commands in the controller
  • Set up proxies to grab and store data

I then sat in on a "Subversion for Smarties". The presenter, Cameron Childress was fantastic and consistent. Some notes:
  • He spent too much time talking about Git (distributed source control), which was actually quite appreciated
  • Introduced us to the concept of "changelists" in the newer versions of Subversion. These sound like a great way to organize code in your working copy.
  • We heard about the Perforce concept of "ClientSpecs" to allow metadata to be stored in the repository
  • Learned a bit about svn:keywords and keyword substitution, a topic that always confused me a bit
  • We didn't get enough time spend on "hooks" - the thought of pre-commit and post-commit hooks is amazingly powerful

I attended a quick session about building and deploying applications. Pretty standard stuff, but the presenter did a great job. The third-party RIAForge tool 'datamgr' sounds quite impressive, although it might not be as important with the upcoming ORM features in CF9. We also had some amusing conversation about CFENCODE.

My last official session was renamed to "Fusebox - Past, Present and Future". Adam Haskell worked to dispell some old myths about Fusebox and then announced that due to differences with the owners of Fusebox he was resigning as lead developer. He announced that the code was immediately forked as "FuseNG" (next generation). There are already some great features being added. It was a bit of an awkward session, and Adam is a pretty blunt guy, but it was good to hear that the world of Fuse* might get a bit of a refresher.

Closed the evening with an open bar and great conversation with Jim at Grape Stack. That guy KNOWS his stuff. Actually, he knows EVERYONE's stuff. The Railo guys rock too. I'm super excited about things like ORM, ColdBox, and Railo. Paul and I sat in on the CFML Language Advisory meeting before leaving for the night.

Wow, a full first day. Looking forward to tomorrow.
Ready for the CFUnited keynote. Forta speaking. Great conf so far, it sure is warm here!

Tuesday, August 11, 2009

Made it to Vegas for the first flight, got lost. Big airport, had to take monorail. Now waiting for my flight to DC.

Saturday, August 08, 2009

Big family gathering for father's 60th. Couple unexpected guests, good times.

Friday, August 07, 2009

What started as a disappointing BC Lions game has become pretty sweet. BC up 22-14.
Walking down Hornby from work, headed to BC Lions football game with MikeI and the boys. My son's excited.

Thursday, August 06, 2009

There is a restaurant in Berkley called Dig's Bistro that watches and feeds your kids while you dine with spouse. Awesome idea.
Got to watch the Snowbirds and a fighter jet fly in formation over Lions Gate bridge and our office building. Crazy tight together. Cool.