Friday focused on company vision - both business and technical - kicking off with a keynote from our CTO, and then Saturday and Sunday were deep dives into architecture, system integration, user interface design and process & communication.
As a company that has a number of remote engineers, we feel this is an important way to help everyone get on the same page and to encourage intense interactions and information sharing. We're going to try to do this twice a year from now on.
As a result of these sessions, we're also going to be making some changes to how we manage communication internally to help remote folks stay connected (e.g., more video conferencing, more screen sharing when working on projects, regular but brief cross-company conference calls to share business and technical news, increased use of internal blogs).
Does your company do anything like this? How do you work with your remote team members?
We're working on a number of things.
- We're drafting a document that will outline what cfscript features, tags and functions we believe to be "core CFML language".
- We're also going to draft a document that gives guidance on adding new features in a consistent manner - attempting to define the essence of "CFML-ness".
- We're in the process of setting up a website that will have a wiki where we publish our documents and discussions as well as a blog where we make announcements and, more importantly, ask the community for feedback on issues we are considering.
There are also ongoing discussions with the Open BlueDragon team to see if we can bring them to the table.
Hopefully we'll have more to share on all of this in a week or two.
For ease of reference I just wanted to post a quick note highlighting Bob Silverberg's excellent series on using Transfer ORM and OO architecture:
- How I Use Transfer - Part I - Introduction
- How I Use Transfer - Part II - Model Architecture
- How I Use Transfer - Part III - Abstract Objects
- How I Use Transfer - Part IV - My Abstract Service Object
- How I Use Transfer - Part V - A Concrete Service Object
- How I Use Transfer - Part V.1 - A Comment and Response
- How I Use Transfer - Part VI - My Abstract Gateway Object
- How I Use Transfer - Part VII - A Concrete Gateway Object
There's a lot of good information here although it may be a bit overwhelming on first read so be prepared to keep coming back to these posts!
I haven't made it to WotP yet but given the atmosphere and buzz at MXDU/webDU, I'll bet it's a great event - the aussies are a terrific bunch and there is so much hardcore RIA work going on down under!
7/16/08 6:30 PM for networking; 7:00 PM for the main event; pizza sponsored by Internet Media Inc!
Adobe San Francisco - Kojak
Nolan Erck returns with part two of his series on ColdFusion Components (part one was our April talk). If you're ready for the next step in learning OO with CF, this talk's for you! Directions
601 Townsend St, San Francisco, California 94103
I was away in Vegas (more later!) so I missed all the trauma/drama that some people suffered. I updated my iPhone yesterday with absolutely no problems and my wife updated hers with no problems either. Yay! So it reset my home page layouts (boo!) and reset my default ringtone (grr!) but otherwise it was very smooth.
So then I went off to the AppStore to see what was useful / interesting:
- AIM - 'nuff said! I'm seancorfield on AIM (just in case you're not on my list of 200+ buddies). It works except for a repeatable crash whenever I try to view my "coldfusion" group. Not a big deal since I mostly go through the "All Online" view. Hope that gets fixed.
- WeatherBug - weird but interesting. I wish the radar would automatically zoom in on the selected station.
- AirMe - I think Flickr is really dumb but this app will have me using it a lot. It lets you take a photo and it will automatically tag it with the current location and weather and upload it to your Flickr account. Easy enough that I'll actually take more photos on my iPhone and publicize my photostream!
- Twitterific - I tried this and didn't like it (or had some issue with it?). Anyway, it did not stay installed for long. Twitter via the web is fine on the iPhone.
- Evernote - I'm just starting to use Evernote but haven't really figure out what I'm going to do with it yet. Having the application on the phone is easier than working via the website. We'll see.
- People - This is Yahoo!'s White Pages and I like being able to look people up by name or phone number and then add them to my contacts / address book.
- Dobot Todos - I don't know whether I'll actually use this. I've gotten used to 43actions via my iPhone (I'd love to see a real application version of that!). Dobot Todos is a nice, simple to-do list.
What applications are you loving? (or hating?)
I'm a big fan of unit testing but for a variety of reasons, we haven't quite established TDD as a day-to-day part of our operations at Broadchoice (something I want to change and as we bring on new team members this summer, we will instigate this as "Standard Operating Procedure").
However, today I wrote my unit tests first because I wasn't quite sure of my TQL syntax and figured that writing the tests first would help me navigate to the correct code.
It worked! Not only did I (re-)learn the lesson that TQL does not allow select class.* ... (Why Mark? It allows select * .... Can't it figure out all properties of a specified class? I know, enter it as an enhancement in the Transfer bug tracker!), but I also uncovered a bug in my transfer.xml file and a few other typos in pieces I'd mistakenly written before I started on these two decorators and their tests.
So, there you have it: write unit tests! Write them before you write your code! It helps you avoid committing code that won't run and that means less pain for your team members.
As folks know, I've been a big fan of unit testing for quite a while and used to advocate Paul Kenney's cfcUnit at every opportunity. Unfortunately, Paul hasn't been working on cfcUnit much for the last few years and MXUnit has grown up to take the crown of the most comprehensive, most robust, most feature-rich testing framework for ColdFusion.
If you're still not doing unit testing, you need to check out the MXUnit website and try to get to at least one of the presentations that the MXUnit team are giving. They're on the Online ColdFusion Meetup on Thursday July 17th (database patterns for unit testing - Bill Shelton) and if you're at MAX 2008, you can catch Marc Esher talk about advanced patterns for ColdFusion test automation which should be excellent (Wednesday, November 19th @ 9:30am).
I'm 46 years young!
Probably the best Guinness advert ever made! Raise a glass!
First off, let me say that the reason I think this causes confusion for a lot of CFers is that they don't have a Computer Science background so they've not had the "Memory and Pointers 101" course that makes this stuff a lot clearer. Hopefully, this blog post will help fill in some of the gaps.
Some basics. When you assign something to a variable in CFML, you are really doing two things: you are creating a label (the variable name) and you are allocating some memory to associate the label with the data. In particular, with structs, the struct itself exists in a block of memory (well, lots of connected blocks of memory) and then the variable "points to" the struct data.
Let's start with the simplest example (these examples require ColdFusion 8.0.1):
I've owned my house in Castro Valley for seven years (next month) and I just took advantage of the great interest rates and the new conforming loan limits to lock in a 30 year 5.5% mortgage, paying off my previous two mortgages (a $300k 30 year and a $70k 15 year balloon payment). This is the third refinance in six years and the first to lock in above what I paid for the place (paid $370k, financed $409k, value $600-700k depending on who you ask, although Indymac Bank thinks it's only worth $515k... go figure!).
So, I'm happy with my new mortgage. I am not happy with the stream of insurance spam I've received in the last week. Several offers every single day (six today, OMG!). Mortgage protection, health insurance, home insurance. Jeez, leave me alone! I have all that shit already!
I know that a mortgage is a matter of public record but this is ridiculous! The worst thing about these slimy insurance and loan spam offers is that they are all - and I mean ALL - couched in terms of something you should complete and return for your lender. Sure, they all have small print saying they're not associated with the lender but with some of them you really have to read it two or three times to convince yourself you're not reading something important from your own lender.
It's disgusting. Especially given the sub-prime lending disaster we're going through right now. Clearly these companies have no ethics at all.
David Harris has a brief post about the joys of jQuery where he comments on what, to him, was an unexpected feature that allowed binding of variables, i.e., JavaScript (and ActionScript) support closures. I find it interesting that he thinks this binding "somehow feels wrong" and I've seen the same reaction from a number of people when first confronted with closures.
This binding is what gives closures their power and why they are more than just "anonymous functions". They carry with them the context in which they were created.
It's also an interesting contrast with ColdFusion where variable binding is done at the last minute at runtime and thus you can take a UDF function that references variables.foo (which might be a page scope variable) and add that function to a CFC instance and now variables.foo will refer to foo in the variables scope of the CFC itself.
I think that's why my Closures for CFMX library has proved so puzzling for a lot of folks :)
- Reprint: Consuming Web Service complex types in ColdFusion
- Using WSDL2Java to figure out CFML arguments to a Web Service
- Special Axis types and ColdFusion
So, even tho' Tom is off doing Blaze DS and LCDS these days, he's still producing rocking blog posts about ColdFusion - go Tom!
The real gem about this post is the extended commentary by Brian Kotek and Ben's responses. Brian posts some really solid guidelines on designing well-structured object-oriented systems and the dialog between the parties is very enlightening.
I just renewed my annual subscription to Fusion Authority Quarterly Update but because I'm a (fairly) regular author and I'm also on the "staff" (as the Curmudgeon!) I get multiple copies of each issue anyway for promotion purposes. I pay my subscription to support the journal anyway but after talking to Judith at Fusion Authority, she thought it might be fun to run a little contest for someone to benefit from the subscription I pay for but essentially don't use! So Fusion Authority in conjunction with An Architect's View is offering a year's free subscription to FAQU to the first person to contact me with the answer to this simple question:
How many full articles have I written for FAQU so far and what were they called?
In this session, you'll learn from John Resig, the creator of the jQuery library, how to build a desktop application with Adobe AIR and jQuery. jQuery is a fast, concise JavaScript library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. Although jQuery is typically used inside a web browser, it's now possible to use jQuery to build rich desktop applications.Should be a great (and extremely popular) talk!
34 sessions cover AIR, 54 sessions cover Flex.
Compare that to 13 sessions on Dreamweaver and 14 on the flagship Photoshop product and I think we have no reason to complain (but, of course, some folks will).
My "Event-Driven Programming in ColdFusion" talk has been selected for MAX which I'm pleased about and I will reveal that it will be substantially different to the version shown at Scotch on the Rocks and CFUNITED...


