Wednesday, October 17, 2007

Today, we entered Rudy in the world's coolest dog contest on Check it out!
Please vote for Rudy at The 3rd Annual World’s Coolest Dog & Cat Show
Please vote for Rudy in the World's Coolest!

Tuesday, October 9, 2007

Rudy Booty

Introducing Rudy -- our foster golden retriever we've had for about a month now. We picked him up from Chicago and brought him back to Cinci to enjoy sticks in our backyard, fetching balls, and playing with other dogs in the neighborhood.

He even has a dogster page!

Plus, more photos of Rudy can be found on our Kodak gallery (View photos).

Wednesday, October 3, 2007

Adobe MAX 2007 - day 3

Final Day

Working with Data in Flex
Tom Lane

What's different about data in Flex?
the role client and server played in architecture
server is doing the work of plugging data into UI (server-side)
ajax server sends abstract data to the client (client-side/server-side hybrid model)
google suggest - selectively employs AJAX to spice up spots
roby partials - async update of a chunk of server generated HTML
Flex is 100% UI on the client
client requests and server sends abstract data

Flex Data Fundamentals
Three data "paradigm" objects:
- weakly typed
- most basic
- in actionscript
var myobject:ObjectProxy = new ObjectProxy();
myobject.title = "Pocket Symphony";
- in mxml
mx:Model (bonus: you can defined init data with xml)

<>Pocket Symphony<>

mxml has only one root node (album)

pros - you can do whatever you wan, add new properites, don't have to code anything else
cons - your misspellings kill you

- XML (still weakly typed)
in actionscript
var myxml:XML = ; (weird)
you get E4X support "dot" syntax
mytree..treeitem.@label - returns all the labels of tree item nodes at any level in a tree
if you use it, it's harder to migrate to strong typing
- strongly typed
use an actionscript class to formally define the data
public class Album {
public var title:string;
public var artist:string;
public var tracks:ArrayCollection;
To instantiate in ActionScript
var album:Album = new Album();
album.title = 'Pocket Symphony';

Pocket Symphony

flex builder catches problems - compile time validation
- code hinting
- get/set methods

Making data [Bindable] databinding
- every property in this class is now bindable

arrays class is too simple to suppor tdatabinding, but ArrayCollection does support it
ArrayCollection is generically typed in that everything is an Object when it comes out
var item = ac.getItemAt(0);
var item:* = ac.getItemAt(0); // confirm i really want to make this variable typeless
var item:Album = ac.getItemAt(0) as Album; // not 100% safe b/c no guarantee, but it's pretty safe

Flex Services
ways of talking between client and server
RPC servces (http, web, remoteobject)
data management service CRUD, pushing updates, breaking up large results into chunks
FlickrAPI HTTPService cilent proxy
webservice - overhauled
- wsdl (SOAP encoded)
- Data > Import Web Service
- aka flash remoting
- more efficient binary encoding
JSON = crazy alternative to XML serialization
security hole (never eval() JSON in the first place)

RPC service stumbling blocks
make sure to handle faults
implement fault="handleFault(event)" to display errors
function handleResult(event:resultEvent) {...

data management service
- sync collections bwetween colient & server
- resolve confilcts
- push updateds to clients
- handle large results - page results and lazily load related data

dataservice client code

- fill -
- commit
- outside of collections

automagic via servier cahcing of the fill query
to scale turn off
[Managed] on the client classes plus some service config to define relationships

server-side assembler
fill, get, count, sync
or just extend AbstractAssembeler

Robert Reinhart - schematic (flash video guy)
  • spitemout
  • capture
  • gallery2
  • ffmpeg

Tuesday, October 2, 2007

Adobe MAX 2007 - day 2

Coldfusion Powered Ajax

cfgrid (use sql based page nav)
Uses YUI libraries - download times are extremely heavy
Use compression on the files to reduce load...
cfpod like a cfdiv - not a big fan
jason graves (cf account manager)
debugging ajax logger
other tools (firebug, coldfire - debugs cf)
serviceCapture (IE)
charles - best ajax debugger/flash remoting - amazing
JSON serialize/deserialize
skinning is all css based
cf makex ajax easy
extensible through YUI & EXT
Keep an eye on EXT 2.0 - desktop like features (not silly js)

coming soon...

Building CF powered Ajax apps
w/ Ben Forta

use cases
  • auto suggest, related controls, inline content, data paging, form validation, non-intrusive login
cf8 has many features to implement ajax
  • any cf app is broken from one to two (cfc's and UI)


art = CreateObject("component",'art');

Art Search

Test component:

results = art.GetArt(1);


SELECT artname
FROM art
ORDER BY artname

SELECT mediaid, mediatype
FROM media
ORDER BY mediatype

SELECT artid, artname
FROM art
WHERE mediaid =
ORDER BY artname

SELECT artistid, lastname, firstname, email
FROM artists

ORDER BY #arguments.gridsortcolumn#, #arguments.gridsortdir#

UPDATE artists
SET #colname# = '#value#'
WHERE artistid = #arguments.gridrow.artistid#

WHERE artistid = #arguments.gridrow.artistid#

Monday, October 1, 2007

Adobe MAX 2007 - day 1

keynote session

coming soon... (it's on paper :( )

adobe coldfusion monitor

runs from CF admin

stats screen 1
  • active requests
  • active cf threads
  • slow requests
  • slow cf threads
  • sessions
  • cumulative server usage

stats screen 2
  • memory usage
  • run garbage collection (be weary of this)
  • tuning queries is a better method to tune cf server
  • monitoring and profiling are not process intensive, memory tracking is heavy
  • application scope memory usage

stats screen 3
  • server scope memory
  • database queries (active, slow, cached, status, pool status, most frequent)

stats screen 4
  • errors and timeouts

  • set them up as server crash predictors

trigger snapshots
  • displays a snapshot of the server

A Virtual Trading Floor: Bringing Wall Street to the (Biz) Classroom
Wharton Security Xchange (WSX)

  • knew long-term goal was the web
  • a good idea: all business logic done in database
  • trade handler & FIFO order handling

WSX, v1
  • The Good
  • Immediate response times
  • Rich and realistic UI
  • Compelling competitive atmosphere
  • Fine-grained centralized control
The Bad
  • Visual Basic (team of web developers can't maintain, client-based install)
  • Hindered external expansion
  • Stanford case (shipped off exe, shipped off sql server db)

Flex 2.0 w/ LiveCycle Data Services 2.5

Traders' Incoming Orders ----> Order Execution <---> Order Book ---> Order History

Move to Flex & Dataservices
  • Flex Builder 2.0 a powerful and familiar IDE
  • Resulting SWF gave total UI control in browser
  • Flex Data services

Communications - design choices
  • Data Mgt
  • Ideal for keeping clients sycnhed
  • trickey when changes can come externally
  • Data Msg'ng
  • Provides a real-time consumer producer model
  • Remote objects
  • CFC's

  • Group development: challenging synchronization
  • 1 week of rapid development w/ (in)experienced flex dev's
  • new software dev paradigm for compiled code
  • new challenge: server push

tech solution summary
  • consumer/producer messaging
  • coldfusion server push
  • one-quarter second
  • cf gateways
  • cell renderers

  • cf8/lcds 2.5
  • flex builder 2.01
  • sql server 2005

They keep 5 years of data

  • Flex helped to achieve long-term goals - external adoption
  • Flex LCDS is a viable tool fro real0time financial apps
  • freedom from client
  • keeping relevant tech in front of new gen of students

Leveraging ColdFusion Components

blessing and curse
  • the problem with rapid development is that it's too easy to write spaghetti code
  • resist the urge to File.. New,
  • spaghetti code = bad
  • cfinclude - good for reusing static html but that output can't be customized

  • for customized content

user defined functions
  • can easily return values but
  • code must be manually included
  • udfs are just collections of methods, data is not encapsulated
  • can't be used outside of a .cfm page

  • encourage better code org
  • easier to call/invoke
  • more functional than UDFs
  • stores instance data as well as encapsulate functions
  • reusable from any app that can use web services or flash remoting

basic rules
  • start w/ a set of udf's in component tag
  • use .cfc file extension
  • store .cfc files in the web root (if cfc's will be called as web services)

anatomy of a cfc
  • benefits
  • the cfc file doesn't have to be included

Demo 1
  • demo a simple CRUD app
  • pick a page and move its brains (data access code) into CFC

Using CFC's
  • building blocks for page based apps
  • vs CreateObject

My first blog

Hi, I'm here at Adobe MAX 2007 in Chicago, IL and starting my first blog to help save my thoughts and experiences. Not only for work, but for everything. Hope you enjoy...