Wednesday, October 17, 2007

Today, we entered Rudy in the world's coolest dog contest on dogster.com. 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
{Bindable]
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';
In MXML:

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
remoteObject
- 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)
rreinhardt@schematic.com
  • spitemout
  • capture
  • gallery2
  • ffmpeg

Tuesday, October 2, 2007

Adobe MAX 2007 - day 2

Coldfusion Powered Ajax

cfgrid (use sql based page nav)
cflayout
Uses YUI libraries - download times are extremely heavy
Use compression on the files to reduce load...
cftooltip
cfdiv
cfpod like a cfdiv - not a big fan
jason graves (cf account manager) jgraves@adobe.com
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)
Resources
http://www.robgonda.com/dev/max/cf8samples
http://exths.com/blog/2007/09/06/ext-20-a-preview/

Keynote
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)

-------------------------------------------------------------------------------------
test.cfm



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


Art Search




















Test component:


results = art.GetArt(1);


















---------------------------------------------------------------------------------------------
art.cfc






SELECT artname
FROM art
WHERE UCASE(artname) LIKE
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#




DELETE FROM artists
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

alerts
  • 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

Process
  • 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

Conclusion
  • 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

cf_customtag
  • 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

CFCs
  • 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...