Bender Explained

Toby Tremayne has put forth some code as to how Bender will generate AS objects and connect to Transfer. This is an early first pass and there will undoubtedly be changes, but I am pleased to see he has pushed this stone forward.

In Transfer, your business objects, their properties and relationships to other business objects are configured in Transfer.xml. Bender takes advantage of this 'single source' for object properties/relationships by consuming the Transfer.xml, creating AS classes based of the configured Transfer objects as well as a wrapper for Remoting to the back-end TransferFactory. I believe Chris Scott called the Bender Architecture a 'Remote Command Factory'.

Looking forward to more posts on Bender. Maybe Toby will come to #CFFlex again so I can Bender his ear. (Todo: Remove Bad Pun)

Is Bender an AS generator? Is it a service layer for Transfer?

Bender is a new project under planning/development by Toby Tremayne. From what I can tell, Bender will consume your Transfer.xml file and generate AS3 classes, generate an AS3 proxy with a Transfer-like API for calling your remote services and also translate back and forth from CF to AS3. Seems very cool for getting information out of a ColdFusion backend and into Flex.

There is also talk of a Service layer section to Bender though I haven't seen much information on this piece. Proper architecture would demand an intermediate layer in between the ORM and the Flex remote object calls. It only takes one sneaky 13 year old kid to methodically delete all the information in your database.

Maybe Toby can share some details on how this will all work together.

3040 Views Print Print Comments (0) Flex

Innocent until proven guilty?

Verizon is one of the major providers of wireless Broadband. The Verizon EVDO product is one of the fastest services available in North America. One can imagine the many uses for such a service.

Marketed as an "unlimited" service, the limited nature of the service has surfaced. Advertising is a laughably deceptive industry, so much that a common joke is " How can you tell an advertiser is lying? Because his lips are moving.

I do have a problem with this practice. If a service is billed as unlimited, then by all means, it should be without limits.

This article isn't to protest the misuse of the marketing-speak term "unlimited" in the context of advertising. In the wise words of a popular "As Seen On TV" host, "Wait, there is more!"

The terms of the Verizon EVDO service state the following:

view plain print about
1examples of prohibited uses include, without limitation, the following: (i) continuous uploading, downloading or streaming of audio or video programming or games; (ii) server devices or host computer applications, including, but not limited to, Web camera posts or broadcasts, automatic data feeds, automated machine to machine connections or peer to peer (P2P) file sharing; or (iii) as a substitute or backup for private lines or dedicated data connections.
view plain print about
1Anyone using more than 5 GB per line in a given month is presumed to be using the service in a manner prohibited above, and we reserve the right to immediately terminate the service of any such person without notice.

What sticks in my craw is the presumption of using prohibited services SOLELY based on the bandwidth used. We, in America, have a long tradition of "Innocent until proven guilty" which the Verizon terms certainly subvert since any monthly use of <5GB transfer is indicative of pirating movies, songs or something similar.

So not only is "Unlimited" service, in fact, limited, but if you use more than an arbitrary 5GB/mo, you are presumed to be a Thief of copyrighted materials. Does anyone else find this trend annoying?

Success!!!

I've been working on a Data Conversion for the last month and a half. I didn't want the assignment. I don't like data conversions. I only did it because I know the people. It seems I get in more trouble when I try to help people. I guess I am a sucker. Oh, and they were ready to write a check. ;)

I ran into plenty of surprises with this conversion. There were even a few places where the primary keys in a table were duplicated. In one case, there were 47 different rows with the same primary key. Since this table was the base relationship for 5 other tables, you can imagine my fun at trying to unwind it all.

The good news is I have delivered the conversion to the client. They are pleased thus far and they are going to review the data this week. If all goes well, I am done. Tell you the truth, it couldn't come any sooner.

I'd like to pick back up with the Model Glue series soon. I believe we have Security, Ajax, ORM with Transfer and Internationalization (i18n Thank you Mr Gonda :)

If there are any other requests, let me know

And remind me not to take on any more Database conversions.

Sometimes it is the obvious......

I spent several hours going over a new ModelGlue:Unity + Transfer set up and had an error that stumped me. For the life of me I couldn't get any scaffolds to work. ModelGlue and Transfer loaded up perfectly, Directly querying the database worked perfectly. All signs pointed to GO, except for the lack of any scaffolded events working.

Oops!

Message Model-Glue: There is no known event handler for "skiresort.list".

Now, I've set this up several times so I was sure I misconfigured something. I checked every possible thing I could think of that could be holding this up and then started cfdumping the internals of the frameworks. Getting nowhere fast, I started complaining about it in the IRC channel and the second I started explaining it, the answer came to me. So for public humiliation and for posterity, here is the answer.

If you want to access the event-handlers generated by the scaffolding feature, the <scaffold /> tag in the modelglue.xml file MUST be contained in the <event-handlers /> tag.

This is Bad

view plain print about
1<scaffold object="skiresort" type="list,view,edit,commit,delete">
2    <results>
3        <result do="view.template" />
4    </results>        
5</scaffold>
6
7<event-handlers>

This is Good

view plain print about
1<event-handlers>
2
3<scaffold object="skiresort" type="list,view,edit,commit,delete">
4    <results>
5        <result do="view.template" />
6    </results>        
7</scaffold>

I shall hang my head in shame for the next 5 minutes....

MG:U series, interlude

I am planning out the next few steps in our ModelGlue:Unity series and would like to tally a vote. Currently our Contact-O-Matic is barebones. We went over how to use portions of ColdSpring to manage our service and to pass in configuration parameters. We also went over adding ModelGlue results to change the programmatic flow of the application. Following this pattern, you should have a good base on ModelGlue:Unity.

However, apart from the tabs, it has a plain-jane look and feel. Heck, it doesn't even save the contacts for very long ;). Before all is said and done, we will add in database persistance, security, the Transfer ORM and some Ajax.

We are going to need to put database persistance really soon as it is keeping us from our larger goals. After that, there are three different paths we can go.

In the spirit of Choose Your Own Adventure ( man, I loved those books ) which would you rather we tackle next? The choices once again:

  1. Easy MG:U Security
  2. MG:U scaffolding with Transfer ORM
  3. Ajax Enhancements

Also, if you are following along with the series, please leave a comment or send me an email with the database you use on your development server. I am going to make an effort to be as cross-DB as I can....