Monday, September 10. 2007
Well, the conference is at an and and I have thoroughly enjoyed the whole thing. Apart from the obvious social networking it was really good to put faces to the names that you have communicated with via the good old Internet for many years.
It was especially great to meet Ed Leafe in person , as it was Mike Babcock and of course Kevin Cully who's hard work and dedication has produced a new fledgling conference that I can honestly say was the best I have ever attended. Kevin's attention to detail was perfection and his "hassling" of the presenters has produced the most complete set of conference notes that I have ever received. As those of you who have ever been to a conference know, the notes are ideal for revisiting the subjects covered after the event and after the "brain fade" has subsided.
Have I learnt anything? - You bet
Would I come back again? - Kevin,make me the top of your list for next year
Would I recommend it to anyone? - Definitely, but even if you can't make the next FoxForward then just GO to any of the conferences, you will not regret it
As for me, I'm off this afternoon for a short flight around the Atlanta area and up to the north where I have been told that it is really pretty, before my journey back tomorrow.
Once again, thanks to everyone who made the conference special. I still have sessions from Bo Durban and Tod McKenna to blog about which I will try and do later this evening. The only small criticism I do have though, is that I wasn't able to make a couple of the sessions due to the conflicting timetable, but that is life and good reason to return next year.
Thanks Kevin and regards to your family who really handled all the registration and organisation superbly. See you (hopefully) next year.
Sunday, September 9. 2007
Pictures available HERE
Up nice and early so that I wouldn't miss Dave's first session after a good night out at Taco Mac where we seemed to invade the restaurant and consume a fair bit of beer in a short time whilst consuming extremely good buffalo wings in a murderous hot sauce! As usual the breakfast was "expansive" and Iconsumed lots of eggs "over easy" with toast as I seem to have developed an American style appetite since my arrival which I am also sure has increased my weight - substantially <<grin>>.
Does Your Application Understand You - Dave Bernard
He then introduced Microsoft's English, which is a little known technology, and how it can be used to ask questions of a dataset in good old plain English. Hence, you can ask questions such as "What works were created by Van Gogh?" and this request is then parsed into a form of SQL which can be used to makea request on external data? Ever wanted the ability for clients to make general SQL requests on your data at any time WITHOUT being computer literate? In this case NQL (Natural Query Language) may help.
Dave explained how he had first become involved in NQL in a proof of concept application to allow art lovers to browse around a museum and make verbal request for informatio about the artworks through a location aware PDA onto a central database and then recover the resultant information in pictorial or data form or even spoken form for relay back to the user. In his naivety and just like a good developer, Dave said "no problem" and started work bolting all the modules together using Microsoft Speech Server via a browser interface. The concept made use of SOAP services to transmit the small packets of speechfrom the PDA onto the Speech recognition server as the spoken word is produced. The model then converts this request via indirection into a fully fledged SQL Re
The English Query Engine is a Com Object and you can instantiate this and call a request in VFP no problem in about 8 lines of code which was very impressive - and it is bundled with SQL Server in MSDN, so you have a license if you have an MSDN Subscription.
Next Dave set about detailing how the symantec of speech relates to data tables. There is obviosly a lot of mapping to be done in order to plug in your own english buzwords and relate them to atual data, but this is a one off hit and if done correctly allows seemingly magical spoken requests to be made on the data. Very sophisticated and interestign stuff, even if you need to make allowances for heavily regional phrases - eeh bye gum!
Once a data dictionary has been created you compile it into an EQD file and that is your bespoke Query application finished.
Make a database of previously asked questions and how many times they have been requested and your VFP applications suddenly take on a magical quality with speech recognition, natural data selection and spoken response.
GDIPlusX Library: Over the Top - Bo Durban
I won't go into the demonstrations Bo introduced as the are all available for download. However on really really neat trick that Bo introduced was as follows:
Sunday, September 9. 2007
Pictures can be found HERE
Developing Desktop Applications with Dabo - Ed Leafe
Ed enthusiastically set of introducing his pet baby Dabo to a full attentive audience. Many of the attendees were non conversat with Python (said the English way!) but Ed said this wouldn't matter. He started off detailing the strengths of Python and how his VFP background had lead to the development of Dabo as a potential desktop replacement for VFP. Dabo is not a VFP clone in a different language but is a collection of the best bits and concepts in VFP, but running on a manufacturer independent language wrapper.
Dabo encapsulates the WxPython set of widgets which, if you have ever used them seem to have a mnd of their own in that they are very inconsistent in the way the methods and properties have been put together. Ed and Paul McNett has taken all this inconsistency and wrapped it with a standard interface and property set for every control - in a similar way to VFP.
Ed then generated a simple Dabo application on the Mac via the Dabo wizard to enquire upon a client database held on his home server many miles away and then ran exactly the same code on his Virtual XP machine unchanged. Unfortunately the internet connection was not working correctly (or was it Windows!) and he went on to show the visual class designer - all written in Dabo. This showed that slowly but surely Dabo is maturing to include all the visual tools that VFP developers are used to. Although a work in progress, take a look at Dabo (www.dbodev.com) as it may well give you a path to a manufacturer independent cross platform product. Ed is always willing to help out with any Dabo problems and the usergroup, although small is very active.
Once the Internet connection came back the previously dormant demo came back to life - showing the resiliance built into Dabo and generating a sigh of relief from Ed.
Definitely one to keep in your Browser Favourites and check on as the project is beginning to gather momentum at a great rate of knots.
Personally, I think that Ed should have gone straight into the Form Generation wizard at the start of his session, as it really does show that Dabo is maturing as the visual tools are generated and you can see real code generated from Dabo which bears a very similar resemblance to VFP! Not bad for the work of two dedicated guys in a short time.Oh, yes Ed failed the "Pie-Thon" test and collected 8 yellow cards which should generate a hefty forfeit - as yet to be decided by the judges who's decision is final - and I am the judge!
Change the wiring behnd the wall switch at your own peril!!!He then went on to explain that the Isolation of logical parts UI (User Interface), DO (Data Object) etc makes maintenance considerably easier and swapping out the database back end should only mean changes in one layer, i.e. the DA (Data Access)
Follwing this, he then moved to explain the Chain of Responsibility Pattern and its importance in the n-tier design. Understand this pattern better as a code implementation of "Pass the buck" within the following schema:
UI(Get Customer) <-> BO (Not interested...pass it on) <-> DO (Go Get the data)
Finally, before running through lots of code examples the audience were reminded the importance of allways progamming to interface not implementation. Having ignored this rule to my peril until about 10 years ago when I finally discovered that this simple rule saved me hours and hours of grief when system updates were required, I can say quite categorically that if you obey no other rule, then please take this one to heart.
A very interesting session by Mike who aimed it at a "first time see" audience but still gave food for thought to those of us who already use C/S and n-Tier technology.
Next, he showed the feature of mapping data from a VFP table of datapoints. Stephen must be the only person I know who has upgraded his notepad ...to a desktop, much to the amusement of the audience.
Mappoint uses a .UDL file format (Microsoft Data Link) to connect to VFP data. This is created as a text document with the extension .UDL. Click on the new UDL file and you will get a nice interfact to add in the data connection information in a similar way to the OCBC Connection designer. Point to a VFP data source and once the data is mapped between VFP and Mappoint then you can import data into Mappoint or Link it which allows a real time display of datapoints. The data source interprets VFP data by way of its mapping.
Saturday, September 8. 2007
Pictures can be found HERE
Test Driven Development - Alan Stevens
Having mistakenly thought that the session started at 9:00am as opposed to 8:00am we skipped breakfast and hurriedly entered the session a little late but non the less looking forward to an interesting talk on something that I have been meaning to investigate further for a long long time - Test Driven Development. (TDD)
Alan admitted that he is not as "consistent" at using all the TDD features, good man as he is obviously human! His recommendation is Pay Cash - Pay up now and swallow the bitter testing pill at day 1 rather than an even BIGGER pill later on. The resultant costs are flat and not exponential (as is convoluted retrospective bug fixing)- HOWEVER, this is not the natural way that we (and Alan) goes normally. We want to satisfy customers and deadlines. The suggestion made -> Forget Deadlines and Customer Requirements, concentrate on getting the code correct.
This normally hits you very hard in terms of good design, in that time perfecting the design is not insubstantial. Once this basic design has been done, then and only then, can you test out your classes easily using something called dependency Injection where we always pass in what is required to test the class. Take the attitude a little pain now will mean less pain later.Alan admitted to becomming more conservative as he gets older and now likes to say in development meetings "hold on, lets not put this change in quite now" which he never thought he would ever be saying. Maybe wisdom comes from years of development and more relevant, years of fixing bugs that could have been avoided easily in the initial stages of development.
Next a small testing session was started with Foxunit and the rudimentart way to use it was shown. The secret to getting the best out of Foxunit is to test using very granular and simple test. Never think "I don't need to test for that" as it will eventually catch you out, if not the next person to change the code. Never think that this test is beneath you. It may well be, but reviewing the code after 9 months when changes are required will involve a re-learning of the system as it won't be obvious any more.
Alan then set up a simple ToDo list class object, showing how to add tests and what type of tests to use. All simple stuff but requiring lots of structure and perseverence....but this will pay dividends in the future, honest.
I for one, have looked at TDD a number of times and wondered whether it was really for me. Alan confirmed that it wasn't for everyone ...or every application. His recommendation -> Try it out out for 30 days, you have nothing to lose but a lot to gain. I think I'll take up his offer and report back on the results in a future blog.
Foxtrails - Brian Marquis
Using a minimal number of Com DLL's i.e only one, that need to be compiled, generating web apps becomes relatively simple using Foxtrails as all the procedures/methods in the application are simply held in .prg files which are placed in sub folders off the main application folder. The result is no recompilation of the application as the .prg files are recompiled by Foxtrails at runtime. minimal dowtime, no restarting the web app and as near to "live design" as you can get - all in VFP.
Foxtrails has an architecture based on MVC methodology and a folder structure loosly in the form of Ruby on Rails. The obvious name VFP on rails has not been used to maintain friendly relationships with other "more interested" parties as well as potential legal action shall we say.The advantages of Foxtrails are
1. Ease of understanding
2. Minimal recompilation when changing
3. Simple naming conventions
A VFP Com object drives the .prg files so we don't need to down the server on a regular basis, simply recompile the prg and place the fxp in the relevant folder. Job done:
Obvious and easy - yes but most of the good ideas are.
I have a particular wish to further Brian's efforts as I feel that the simplicity of the design allows a web application to be simply and quickly developed. Having spoken to Brian, he wants to add in the ability to connect seemlessly to multiple back end data and having done some work using Andy Kramek's Data classes I think that mating the two systems together would be a huge step forwards. Hopefully I will be able to dedicate some time to this in the next couple of months.
So, If you are looking at any type of web development or even thinking of your first VFP web application, I encourage you to take a look at Foxtrails and give Brian a hand in the development of the project - even if is os only via a message of support.
His session was all about his framework and the wrapper class he is developing for encapsulating Session class as a Business Object. I could instantly relate to the methodology that David has used in this project as I face similat problems at Flexipol, i.e I have objects, the bags that we manufacture, each of which has many many attributes (width, depth, height, gussets etc etc) which have grown and grown to the stage that 254 attributes (Fields) are not sufficient. The obvious solution is to add in an associate table with another set of 254 fields (properties) etc etc. This solution is not ideal however as it is messy as the number of associate tables increases.
David's solution is to encapsulate the record data from multiple fields into a collection object so it becomes simply one object to deal with in the BO as opposed to discrete table entries. "Centralisation Rules" is the phrase in this case and makes dealing with complicated objects (bill of materials comes to mind) much easier.
Our brief discussion after the session did reveal that we have indeed encountered similar problems. David's work is a work in progress at present and I will certainly use the ideas he presented in the future. At least I know why we both share the grey beard. It is dealing with changing specifications which in my case has resulted in a "plastic gag" object which initially had 20 properties, now having in excess of 2000 properties.
Keep posted with David's website to track the development of the really cool code in his classes.
Saturday, September 8. 2007
Pictures can be found HERE
Instrumenting your VFP Application - Dave Bernard
I went into this session not knowing anything about why and how of the expression "Instrumenting". Was this just a way of adding music into your applications perhaps? Well I was soon put at ease by Dave Bernard's smooth style as he described instrumentation as being the method of recording events within any application in such a way that errors or potential errors as well as bottlenecks (percieved and actual) could be looked at using metrics produced by the Instrumentation methodolgy.
Dave had a surprise video conference guest in the form of Bill Gates (Who is he???) demonstrating just how Windows is ....well prone to errors shallwe say!! (See Pictures if you don't believe me). Nice one Dave.
For those of you well acquainted with the VFP debugger Instrumentation, is in a way an equivalent of the VFP event log but with much more sophistication. Dave showed us one of his web apps where every single data change is logged out to an audit file in such a way that really useful statistics can be gained on potential bottlenecks in system performance and operator performance.
How many times have wee all been faced with the customer stating "The program is too slow", "The system is losing info" or "But it works on my machine".
In addition to actual error solving, this whole methodology allows you to keep in front of the customer, even letting them know when they have had errors before they are reported. Obviously, huge brownie points can be gained with this approach.
Dave stressedthe main things he uses Instrumentation for.1. Optimise the slow bits of the application
2. Reduce the load on the servers
3. Optimise bandwidth
4. Generate real time alerts
5. Refactor before a bit of code becomes critical
6. Improve curtomer experiences.
I'm sure you will agree that these are all aims which we try, but not necessarily achieve, but most of all CYA - or Cover Your Arse!
Although Dave showed very little code, what of it he did show, was simple in nature but provided logging details for all data changes in an application. This has grown into a very sophisticated system in terms of the data analysis but those of us who haven't explored this concept can start small and grow it according to our needs.
All I can say is that I shall certainly look at Dave's methodology with a view to adding "aggravation protection" to my applications from now on.
An Excellent Session.
Web Connection Revisted - Stein Goering
Now off for a well earnt drink and a good meal
Saturday, September 8. 2007
Pictures can be found HERE
Well the big event is here at last. I'm in Sunny Alpharetta Georgia and finally putting a face to all the names of guys in the various VFP lurking places.
After my arrival on Thursday Evening, I finally managed to track down Kevin Cully the orgaiser of the conference who had tentatively aranged to meet any early attendees in the reception area of the hotel where the conference is held - and what a nice hotel it is. Unfortunatly my flight was delayed and I didn't arrive until Kevin had left the lobby area after a "no show" by anyone but fortunately caught him on the phone after he had purchased a Chinese take out meal. We ended up going back to the restaurant with Kevin's take out and making it a take in much to the confusion of the staff and then to top it all he couldn't eat it all and the take in became a take out once again.
Ed Leafe Arrived the next day and obviously had a problem with his developing Alzheimers in that he had forgotten to book a room, so I offered to pitch in and help as I had a twin booked anyway, so he will be staying over 'til Sunday.
Typical of the way this conference is to progress the opening by Kevin was low key, basically asking everyone to just socialise and make use of the networking aspect of the conference as much as the technical content. I must admit that the chili cheese provided as pre conferenc nibbles woke me up with its kick - good thinking Kevin.
In a Inter Continental argument betweek Ed, myself we decided that Red and Yellow cards (in the soccer sense) would be handed out during the conference for anyone using the American pronunciation of Pythin i.e "Pie Thon" as opposed to the correct English where the "Y in Python is not emphasised.
Within the next five minutes we had 3 Yellow cards and a possible Red card issued. Once a forfeit has been decided on, this should be real fun!
After the sessions we migrated over to the bar accross the road after being marshalled under the auspice of being Kevin (The teacher)'s. We almost, but not quite, all held hands whilst we crossed the road just like in primary school.
Ed and myself tried vehemently tried to get everyone to drink the Guinness - but at room temperature as opposed to freezing cold! Why, why is it only in the UK where beer is server at the correct "room temperature" which in terms of destroying your taste buds also can inflict frostbite on your innards?
Well we all put the word to rights and quaffed lots of alchohol but then Then the bombshell - a deep dark kept secret admiission from Ed that he likes "Echo and the Bunnymen" - WHAT??? All my respect and admiration of him is suddenly put on hold - is this the end of our world as we know it!
Also we watched proper football (soccer) on the television and triedtoexplaint the finer points of the offside rule to the audience who are used to "pointy ball". This was followed by highlights of the Rugby World Cup and I just gave up trying to explain ANYTHING about the game - apart from agreeing that the players a real "hard Men" who you wouldn't like to cross on a dark night.
After leaving the Leaping Leprechaun (I think that was what it was called), we adjourned back to the hotel reception and proceeded to partake of a nice single malt which I brought over from the UK and finally departed after a thoroughly enjoyable day.
After a coule of drinks and a "put the world to rights" with Bo Durban, Kevin Ragsdale and Ed we finally retired looking forward to the next day - I hope Ed doesn't snore.....I do so I also hope he has some ear plugs!
(Page 1 of 1, totaling 6 entries)