Sunday, September 9, 2007

FoxForward - Day 3

In case you were wondering, I did have more than 2 people in my session yesterday afternoon. I had a good crowd that seemed to enjoy learning what MapPoint has to offer. (wow, Tod McKenna even blogged about it here and didn't say anything like "wow, this session really sucked") Tod's got a great blog that I only discovered because of this conference.

Last night's dinner was good, but the service paled in comparison to Friday night. We went to Taco Mac which is a small chain with locations in Tennessee and Georgia. The food was good and the beer selection was fantastic - probably close to 200 options. (But don't ask our waitress about it because she clearly didn't know anything about beer, or even care about it.)


Michael Babcock - Developing in n-Tier Fashion.

This morning I caught the second half of Michael's session where he walked through some of the basics of developing an n-tier application. He discussed the "Chain of Responsibility" pattern and demonstrated separating logic into UI, business objects and data objects. Michael had a simple "customer" form that he used to demonstrate how separating the logic allowed him to easily change the back end from VFP to MySQL and even CSV without changing any code at all.


One of the things I got out of the session was that he uses record objects for the control sources of the controls on his forms.


Near the end of the session Michael discovered that in his demo code he cheated a bit and had some business logic in the form. He was able to fairly quickly (as is the point of the session) move that logic to the business object and then run the same form with the desired effect. (And the crowd got to watch him debug his own code under pressure!)


Alan Stevens - How to OGLE your application.


Alan started this session out by saying that this was the complete opposite of his Test Driven Development session. Where as that session was all about being humble and disciplined, this session was all about grand and visionary thoughts.


The goals of OGLE are to make applications Future Proof, Data Source Agnostic, Location Independent and .NET Accessible.


Alan did a great job of walking through the various factories he's created and he also did a great job explaining and justifying why he's approaching application development in this fashion.


Alan showed us his error handler which he is very proud of. He billed it as "the greatest ideas of the best VFP developers" all put together in one place.


I'm going to do a terrible job of explaining this, but Alan finished by talking about how XMLTOCURSOR chokes on XML larger than 10 or 11 MB. He then showed us how he's gotten past this problem by looking at the XML Document and basically stripping out the data to clone the schema into an empty document. Then he basically processes 500 records at a time and he's done 15,000 records with no trouble at all. This also gives him a point in the execution to update the user.


I really enjoyed this session and I'm really looking forward to seeing his Unit Testing session at Southwest Fox.

Bo Durban - Custom Report Controls with Sedna.

After Bo's Dell and the projector decided to work together, Bo showed us some of the reporting features in SP2. He started by showing us some new advanced features for report controls, particularly the new HTML output features. These new features make it incredibly easy to make HTML reports and include HTML tags and anchors.

Bo did a good job of explaining on how we as VFP developers can extend VFP long into the future. He said that Sedna is an example of how this can be done and mentioned that these new tools will be released on VFPx.

Bo then showed us the new Dynamics tab where he entered a condition that when true will apply new formatting properties. In his example he created rows with alternating colors.

Next, Bo showed us a feature in SP1 where we can use the configuration table to add our own tabs to the control property sheet. He pointed out that the "Library" column is limited to so many characters and can be too small for long paths. Bo recommended that you just put your stuff in the VFP directory so it can find it and you don't need to specify a directory.

He started with a simple demo for a new tab but then showed us a more complex example tied into the GDIPlus library. The "Custom Shape" tab he created was a good practical example of where we might create our own tabs. Bo pointed out that even though we have some great new hooks, the report designer still won't show us what things will look like.

Dave Bernard - Does your application understand you?

I had the opportunity to see this session a couple years ago, but wanted to see it again to refresh my memory about Microsoft English Query and Microsoft Speech Server.

Dave showed a demo where he brought up a page in a browser and clicked on a "speak" button and then said "list the artists" His speech was translated and converted to a query which returned a list of artists. The application "spoke" back to him "I understood you to say 'list the artists'" and prompted him to click "ok" before it listed the artists. He did several examples of asking different questions and having the system kick back various replies and data sets.

He then demonstrated more of the Microsoft English Query tool using a web-based interface (that was not voice driven)

Dave mentioned that they haven't had a "soup to nuts" deployment of these technologies, but it sure looks like there would be great potential for these technologies. He also mentioned that the Microsoft English Query product has been deprecated but he still believes there's a business opportunity worth pursuing.

1 Comments:

At September 17, 2007 at 10:12 AM , Blogger Babs said...

Hi Steve!

Just to clarify: I use typical Fox cursors in my grids (not objects), and the single record controls (like textbox, editbox, spinner, etc.) I like to use objects. Ex:

txtName.ControlSource = thisform.oRecord.cName

...where the record was most likely created in the dataobj and passed back to the UI (via bizobj) or perhaps at the UI I just did a SCATTER on the cursor that I was using. The benefits for me in this approach have been to pass thisform.oRecord to my bizobj as one parameter and then validate the record that way, and then taking advantage of the INSERT INTO MyTable FROM NAME toRecord (where toRecord was the object I passed). Also, if I'm using a non-VFP backend, I get the cursor (empty for new record adds, or single existing record for edits) and then take advantage of the MakeUpdatable.prg that Paul McNett put on the ProFox downloads page (leafe.com/dls/vfp) long ago.

I really enjoyed your MapPoint presentation, btw!

 

Post a Comment

Subscribe to Post Comments [Atom]

<< Home