Level Extreme .NET Magazine April 2008 issue

Universal Thread Magazine March 2007 issue

2008
2007
2006
2005
2004
2003

2008
2007
2006
2005
2004
2003

2008
2007
2006
2005
2004
2003
2002

2006
2005
2004

2008
2007
2006
2005
2004

2007
2006
2005
2004
2003

2004
2003
2002
2001
2000
1998
1997
1996
1993

2003
2002

2003
2001

2003
2002
2001

2003
2001

Visual FoxPro 2001
Visual FoxPro 2000
Visual Studio 2000

West Wind 2002
Double Impact 2001
FoxTeach 2001
Jam sessions
Technical Guidelines

Universal Thread documentation

About
Acronyms
Contact information
Troubleshooting
Time zones
Web Service
Terms & Conditions
Copyright

Manage your account for the messages area options, your subscription information, your invoicing, youir banners and your pictures Subscribe to the Universal Thread and get all the benefits related to the messages area A corporate subscription is needed for companies that have more than one developer Access the Universal Thread store to purchase your subscription, corporate subscriptions and banners The Universal Thread is covering several conferences per year. On site, reporters cover the technical aspect of the conference as well as making interviews, taking pictures and videos and other related content. Get all the reports from our coverages site. Universal Thread home page Level Extreme .NET Magazine, a newly published online magazine by Level Extreme about Microsoft .NET technology and its community Universal Thread Magazine, a magazine dedicated to the Visual FoxPro community German Visual FoxPro Developer Conference 2007

The German Visual FoxPro Developer conference is organized by the German FoxPro User Group. It is the main event for Visual FoxPro in Germany, Austria and Switzerland since 1994. 2007 is the 14th anniversary - as always in early November and again with UT-online coverage.

Date: 
Location: 

Day Zero

by Jan Vít and Karel Koliš

Always true about Frankfurt…

It is actually my fourth time attending the German Visual FoxPro &.NET conference here and there really seem to be a few general rules about traveling to and staying in Frankfurt.

When coming in for the first time in 2001 with my father, I have taken a role of a navigator, giving my father precise directions that got us directly to the conference hotel. There was no returning or circling around so I got the impression of Frankfurt being a very organized city, where one can find his destination without any problem. Absolutely no way you could get lost. In 2005 I got a chance to be part of the German DevCon again. As I was coming alone, I played both the role of a driver as well as navigator trying to figure out the (shortest) way. This was actually my first time as the on–line UT coverage reporter. The following year I was joined by Jan Král, who has been a great help while writing the UT reports from Prague DevCons. About our wondrous journey you can read in the last year’s report.

This year, I and Karel have called a GPS navigation into service. We were so keen on setting up the solution consisting of a separate GPS receiver and a MDA phone and connecting them together via Bluetooth, that the battery of the GPS receiver died already somewhere around Nürnberg and the MDA followed about 100 kilometers later. All this technology and we were blind again. Well, not really. Fortunately, we had the appropriate car adapters packed with us so it was just a question of sharing only one car socket. Effectively charging every battery for a while and shifting the adapters in a 10 minutes interval to get it all working. You might be thinking – not a real help, but after all only such device can show you the exact way when you missed your exit and can lead you carefully through a complicated system of getting on and off the highways on a highway crossing. Wonderful spinning!

So back to the general rules. No matter what method of finding the hotel I used in the past years, ranging from try (catch) and “finally found it” method to precise battery–less GPS navigation, I have never approached the hotel the same way twice! But hey, I hate stereotype!

Another thing I find to be a rule is what the weather is like in Frankfurt during this time of year. I don’t think there was ever a time when it wasn’t raining while I was driving to Frankfurt. In fact, as far as I remember, I have met very dense fog two years ago also. Thanks to the fact, that the conference itself takes place in a comfortable hotel, this is not a major concern. It is just the trip that gets a little funny.

Rest assured, we have arrived, waiting for another year of Visual FoxPro & .NET DevCon to start. Stay tuned!

Day One – Thursday, November 8

by Jan Vít and Karel Koliš

Welcome session – Rainer Becker

Early after breakfast, everybody went into the Auditorium hall, where Rainer Becker, the organizer of the Visual FoxPro & .NET developer conference officially started the 14th year.

Why should you attend the conference in times, when Google gives an answer in 0.22 seconds? Because, you can really simply find an answer, if you know the question, but mostly, you don’t even know the correct a question. And talking about our work and work of other people on the conference helps to find new ideas, questions and solutions.

Developing VFP apps for Vista – Doug Hennig

First part of Doug Henning’s presentation was devoted to common features of Windows Vista OS, the second part showed us how to avoid standard mistakes during developing applications for Win Vista. As I wrote before, in the beginning Doug presented us the common features of Windows Vista, such as Aero GUI, windows search, or dock applets on the right side of the desktop . As everybody probably knows, the most powerful feature Vista have is User access control. In previous versions of Windows, users were used to log in as administrators, and they stayed logged in on this user account level. But things changed with Windows Vista, and users switches (elevates) to upper level when it is necessary. If the user in Windows XP was marked as “user” level account, Program files folder would be read–only. Microsoft avoided this problem by creating a virtualization service. This means, that standard path

“C:\Program Files\{Some Folder}”
is virtualized in Vista to a path
“C:\Users\{username}\AppData\Local\VirtualStore\Program Files\{Some Folder} “
. There is virtualization of registries in Vista, as well, which could be also very useful.

But, developers have to avoid relying on virtualization service in case of these points:

1.) Microsoft could remove this service in new versions of Windows OS
2.) Every user has his own folders
3.) During uninstall process or backup process – which of these data has to be deleted or backed up?

Fortunately Doug recommended some of the solutions, how to avoid these problems, such as using preferred location instead of Application folders, or using SpecialFolders.PRG to get preferred locations.

But there are many other things which could be helpful, in Windows Vista OS. New icons, new fonts, and many more.

Let's do data – Venelina Jordanova

For this year Venelina has prepared a brand new session about cursor adapters for us. This class is in fact one of the last classes added to Visual FoxPro and some are still quite shy about using it. If you feel the same kind of shyness, this session was meant exactly for you.

The session wasn’t really an introduction to cursor adapters for a complete novice, instead it mainly focused on summarizing quite a few important points you have to take care about, once you played with it for at least a bit and would like to advance further.

The main advantage of using cursor adapter class is that you can easily target more database sources. With a little care when you design your cursor adapters you can effectively support switching the database source of your application as easy as changing a few properties.

Venelina was forced to show all the demos on a borrowed laptop as her notebook has recently crashed. From time to time she had to call Uwe, who was always nearby and happy to help, to show her how exactly certain characters are written on his laptop’s keyboard – a wonderful cooperation.

The session revolved a lot around various cursor adapters events you can bind to as well as other interesting individual items, such as how to update more tables at once, how to do parameterized queries in CAs or how and why to use stored procedures as the extra layer between VFP cursor adapters and the SQL data backend itself.

When working with SQL server, one has to remember a few differences between VFP and T–SQL languages. One of those heavily used and most disturbing is that a double quote (apostrophe) cannot be used to form strings in T–SQL. Single quote has to be used instead. Another difference is that object names that also represent T–SQL keywords should be enclosed with square brackets – and that’s where Uwe comes to aid…

In the end of her session Venelina talked a bit about debugging. One topic of all: Always remember to set the BreakOnError property to true once you would like to see why the cursor adapter failed to load its data. By default, this is set to false and figuring out why and whether the data hasn’t been fetched can be more difficult.

Keynote – Yair Alan Griver

Alan decided to dedicate the first 10 minutes of the keynote to summarize who Mr. Rainer Becker really is and how is he viewed by the VFP community. Most importantly he is a leader of the German Visual FoxPro user group and the man standing behind the organization of this whole conference. For this and other activities Alan handed Rainer a “VFP Life Time Achievement Award”. Congratulations!

As usual for the keynote, a few announcements followed. First of all, the service pack 2 for Visual FoxPro 9.0, which is mainly focused on improving VFP and Vista in interoperability, has just been released. The Sedna project, extension to current Visual FoxPro version, is looking to be completed in a few upcoming weeks. Alan also stressed out that VFP is still under support program from Microsoft until 2015 and that the VFP MVP program is going to continue.

Unfortunately already since the beginning, Alan has had problems with his laptop’s hard drive. In fact, the first parts of his session were presented from windows run in the safe mode. Even though the windows safe mode didn’t have much effect on Alan’s slides, it made showing his demos of what’s coming out with Sedna impossible. Thanks to Doug Hennig and Rick Schummer we actually got to see the parts of Sedna Alan was planning to show. All in all Sedna is going to bring more for Vista, SQL server and .NET integration.

In the second part Alan handed the “torch” to Steven Black, who as usually had a very powerful speech about different views on the recent events happening around Visual FoxPro. The most important announcement was made earlier this year by Microsoft, which states that the Visual FoxPro core development has stopped.

Usually, this is not viewed as a big surprise by the VFP community. The reason is, as Steve has pointed out, that we all know VFP never got the proper support from Microsoft. To be honest though, this cannot be said about individuals working in Microsoft on the VFP team. It is them who we owe for how the VFP is today.

To some, already the fact that Microsoft supported such a product with the royalty free runtime for so long is unbelievable. Microsoft could have switched to other products asking for more payment for licenses a long time ago. Such product having a great language, free database and a wonderful new report writer is just not a business option for Microsoft any more.

But is .NET the promise land? Well, maybe. Does this mean that there will be no more projects started in VFP? Probably not. There are still projects where VFP fits the best. Does this mean that large projects will not be started in VFP? Probably yes, sorry.

All of this however depends on how you market yourselves and how you market your solutions. These and other topics will be discussed in a lot more detail in dedicated sessions Steven is presenting later on today and tomorrow. What really makes the difference, however, is whether you yourself believe in what you are selling. If not, you won’t get the customer to believe it either.

VB Futures – Orcas – Yair Alan Griver

At the beginning, Yair Alain Griver, principal architect from Microsoft Corporation, after introducing himself, explained what his presentation would not be about. He wanted to describe new Microsoft technologies in Visual Studio 2008, which will be issued in three weeks, plans for the future and compare all these to Visual FoxPro solution.

Firstly he presented the advantages of databinding that are really simple but powerful, which he proved in a short demo, where he bounded data from a database to the controls. Another really useful feature he demonstrated was local data store and in–process cache, which may help users. Data are stored on a database server, but all changes are saved to the local cache, from where it is sent back to the server.

A shortcut LINQ, which stands for Language Integrated Query, could be a real revolution in .NET development. It is coming in Visual Basic 9 and brings unification of querying objects, SQL and XML. The importance of LINQ is multiplied by an idea of using it in either presentation and application layer.

A last project that was presented by Yair Alain Griver was Jasper.

Last part of Alans’s session was dedicated to historical summary of VB language and short peek into the future, to VBx (VB 10) technology.

Creating usable UI – Marcia Akins

Marcia Akins’s session about Usable user interfaces was not only really useful, but also funny. She started her presentation with a very wise idea that a good UI is UI which is not noticed.

The most important thing when developing an application is to know what the users are, to know how and why they will use the application. Everybody wants to use an application that is intuitive, but what does this word really mean? Marcia gave us an answer – intuitive means that it behaves exactly the way how users expect it to behave. On Widows platform, there are some rules, standards. E.g. Ctrl+V should always stand for pasting, Ctrl+C for copying.

On really good examples Marcia showed the main mistakes which developers usually do. Some of them were little, some bigger, but altogether they meant usability. Validation is a good thing to prevent undesired variances in data, but Marcia recommended to use it only on save, not while typing, because it could make users slower. Also page frames – sometimes they are useful, but more frames really abuse.

The UI has to be set clearly. E.g. check boxes will be fine only if the captions refers clearly to the two possibilities. Marcia gave an example with person sex – it is not very clear to have one check box captioned “male”, so if it is checked it will mean male, and if it is unchecked it will mean female. Sometimes is better to use option boxes, sometimes check boxes. I depends on whether it is possible to check more than one possibility or not.

In the last part of Marcia’s session she reminded that application will be usable if it has some configuration, but it is nonsense to force users to configure everything. She recommended using forms that could remember their position and size, as well as grids that remember configuration of their columns, but application should behave as a guest on user’s computer, not to change configuration of another applications or the operating system.

SQL Server for VFP developers (part I and II) – Andy Kramek

In this session Andy presented himself as a pure DBA (“Don’t bloody ask”) guy, even though we all know him as a data–oriented VFP developer.

SQL Server? Why? Why should we even bother and use a different database management system? We have our own in Visual FoxPro already. Well, perhaps the biggest motivator is security. There are many aspects that can be grouped under the term security. Firstly the obvious one is protecting data against misuse. DBFs can simply be copied out, opened, changed and otherwise manipulated with. In case of the SQL server, you have to log in first to get access.

Another view on security is the assurance that the data integrity stays intact. This in fact means managing all transactions reliably, no matter if a power outage or any error occurs. Other benefits the SQL server can provide are for example a real time backup, built in scheduling and the fact that SQL server has been designed to handle large amounts of data by design.

There are setbacks as well though. The biggest one, as usually, is a necessity to learn doing the same thing differently. In VFP we are used to opening a table in a middle of our code, using scans opening a second table locating some corresponding records etc. This kind of access just doesn’t work when using SQL server.

The idea behind using SQL server is to get used to the fact that data are fetched into an application in a single call and processed there. Updates are managed in a similar way. No row by row processing any more. No matter how strange this might seem to VFP developer who has been using DBFs for years, it has its advantages as well. In VFP, using the DBF located on a server effectively means copying the DBF’s data to the client for processing. In SQL server, only the result of your query is transferred over the network.

Ok, SQL server it is then. How do we connect to it from VFP? Well, there are basically two options: ODBC and OLE DB. To cut the long story short, ODBC is generally the best option for VFP.

There are also two options how to identify the server to connect to. We can either use connection strings or DSN. From his experience, Andy recommends using DSN at all times. It pays off especially when you will start to work with more servers and more databases.

To handle the security well, SQL server has two methods of managing users. It is either trusted authentication, when the security is inferred from the elsewhere (windows user account) or separate SQL user accounts. The later is more flexible as you can use the SQL roles as well as it provides more security. It can however be a bit cumbersome to work with when there are more users or they change too frequently.

Once you get the data from the SQL server into VFP over ODBC, they are mapped to a VFP cursor. If a data type cannot be mapped, a not–so–nice memo field with a string representation of the data type is created. A thing to remember is that once you get the data, no indexes are actually transferred together with the data. Indexes are used only on the SQL server. For sorting the data an order clause has to be added to the original select query.

In the second part of the session, Andy spend virtually all the time in the query analyzer, showing all kinds of examples and demos ranging from showing how to get the ID for table, through triggers, stored procedures to transactions and error handling.

Cross–Platform mit VFP und Guineu – Christof Wollenhaupt

“Visual FoxPro cannot run under .NET.” “Under no circumstances it is going to appear on windows mobile devices.” These are the “axioms”, we have heard over and over again for the past few years. The Guineu project, developed by Christof Wollenhaupt might change it all.

The whole idea behind the project is to take a VFP FXP file, parse it, convert it to .NET and compile it. In the end everything looks as transparent as writing a VFP code and then getting an EXE file through the Guineu compiler. The EXE can then run directly on the .NET common language runtime.

Tweaking the compiler here and there, the code can also compile using the .NET compact framework, effectively making your VFP forms run on windows mobile devices as well. Cool!

Even though the project is still under heavy development, in his session Christof was already able to show quite a few breath taking demos.

FoxPro is dead! Now what? The case for VFP – Steven Black

This was a two parts session discussing the marketing of applications you create in Visual FoxPro. Almost no technical content was presented. It was mainly a business session, but really great to listen to, especially when served by such a charismatic speaker as Steven Black.

Lesson number one: Always be happy about what you do, about the fact that you are using Visual FoxPro to develop your applications. You do not need to apologize to anybody for using VFP. If you yourself do not believe in what you are selling, neither will your customer.

Is the recent announcement from Microsoft, that there will be no VFP 10 of such a grave importance to us? Well, what is it that you are missing in the VFP? Steve can’t think of anything more that would really be that hard to live without. If anything he would wish for even better stability. You know this – a new version comes out and it has a new base class. What it does is something you have implemented a long time ago in your framework. So, do you really need this? You have everything you need already.

It is always important to focus on customers, not the technology. The task is to get the job done in the given time frame, budget, given quality and with a minimum of risk. Always use VFP if it fits the job and since you know it, there will be no unpleasant surprise. This comes once you start using a new technology. Only the uncertainty of how much time a given task is actually going to take to implement using the new technology is really big problem.

Do you plan on rewriting your current application to a “more preferred” platform? Don’t. The time it is going to take will most likely be incomparable to the time it took you to create the original application years ago. The business needs grow all the time and in the application you would have to care for everything the old system does not as well as the new stuff from business needs that have arose over the time.

Niche markets will be covered in a lot more depth in Steve’s tomorrow session, but just to give you an idea, niche markets are small markets where you can be extremely happy to work in, yet staying out of side of the very large players in the area.

Somewhere in the middle of his session Steve innocently used a phrase similar to this: “Before we get to the beer pause…”. Not much time has passed since then and Rainer was standing in front of him with words: “Have you ordered a beer sir?”. After a few more minutes, when Steve got to the end of his session, the doors of the auditorium opened again and Rainer came in pulling a cart full of beers – for all attendees in the room. Wow!

After the brake, the session continued in the same fashion, and was a real joy to listen to. Honestly if you need to convince anybody about your product, about why to use FoxPro to develop it, you should learn from Steven’s exampling. If it is you, who is not sure, you should have been at this session. Perfect presentation, really!

Day Two – Friday, November 9

by Jan Vít and Karel Koliš

Niche Marketing for Visual FoxPro – Steven Black

In the first few minutes of the session Steven explained what exactly he means by niche markets. In short, these are little gaps on the market, where you can do business very happily, successfully and still stay out of sight from the Big Players. One of the great niche markets for Visual FoxPro is, according to Steven, for example working on international applications. That is in fact the area where he does business himself. He described one of his first working experiences, when he answered a phone very early in the morning and suddenly found himself in a middle of an interview. This resulted in him spending next six months in Geneva, building software for tracking items coming to aid refugees.

Other great niche markets Steven mentioned are big back–end data management companies, data migrations, leading big development teams and for example renewing all sorts of legacy systems. On the other hand, there are some terrible VFP niches as well. Various .NET conversions, anything open to price–competition from India and Asia, anything generic or anything with no basis for credibility fits right into this category. The key for being successful in a niche market is to be visible and to be often recommended. Referrals are the fundamental building blocks of your niche marketing. Just for a start, type your name into Google. See you on the first item? No? Then you should be doing something about it! Be visible!

Make your own website, if you don’t already have one. Contribute to other VFP sites. Put your name below your post. Put you link there. This is the way you can succeed in being visible. As Steven pointed out, every single major job he has been working on came to him via internet first. Be on–line!

Make sure people that are pleased with your work can recommend you well. The five elements of a good recommendation are enthusiasm, specificity, sincerity and clarity. Make sure your customers know them and can pass the message.

The worst thing you can do when doing business in a niche market is to wish you were not in the niche market. The value lies in scarcity, not in being in the main stream, where you need to compete with other players in a “dirty” ecosystem.

VFP is great for niche markets. Make sure you use this to your advantage!

The 26–hour day – Marcia Akins

Marcia’s session was about saving time during developing applications. With the tips she recommended, you can save more than 2 hours of your developer time, which you can, of course, use for another activities, such as Freecel, or Sudoku.

One of Marcia’s advices was her own startup program, which she presented us. The advantage of this program lies in the easiness of how applications or services are started. She also recommended setting up hotkeys, for speeding up your work while using computer.

Following part of the session Marcia spent by advising how to save time during developing applications. She uses her own scripts which may really help. For example, GetFlist() function, puts names of the columns from an SQL table to the clipboard, separated by comma. Isn’t it a really useful idea you can utilize in your SQL commands? Who remembers all the columns that should be written down in a SELECT statement? No doubt, it is a really useful thing, just as well as the following ones.

Intellisense scripts may help you write common commands faster, such as IF or DO/WHILE clauses, comments with author’s credits and list of changes. Multiple selections handling may save some time as well by setting the same properties of the controls, like fonts, colors etc.

Using some of these advices, you may save a lot of time, and time is money, so why don’t save them?

SQL Server 2005 (parts I through III) – Armin Neudert

All of the three sessions discussed the SQL Server 2005. First session started right from the beginning, describing the SQL server as a whole and summarized all of its main advantages and features. Then Armin moved to the installation and comparison of the different editions and details of their licensing. He didn’t forget to include the SQL server and VFP data engine comparison as well.

The second session was targeted more on the “real programming”. There are actually two ways to write code in SQL Server 2005. First option is to use the T–SQL language, the second one is to write the code in your favorite .NET language and have it being part of the SQL database. All of the code then gets executed under the CLR. Apart from showing many of the SQL code entities, such as stored procedures, functions and triggers, Armin also showed the tool you can use to write them, the SQL Server Management Studio.

The last session focused on several administration features of the SQL server, such as performance tuning, getting the security right, creating backups and snapshots, etc.

Each of the sessions was nicely wrapped up, so you could easily follow Armin, even if you have had missed one in a row.

Continuous Integration – Craig Berntson

The session by Craig Berntson, Microsoft MVP, was dedicated to builds and systems for teams. At the beginning, Craig explained the term “Continuous integration” by a Martin Fowler’s definition. “Continuous Integration is a software development practice where members of a team integrate their work frequently; usually each person integrates at least daily – leading to multiple integrations per day”.

He explained the way how the CI is working. At first, developer builds the application on the local computer and then runs unit tests on it. If the tests are fine, he will do a check–in to the source code repository. The CI server detects a new version and gets the copy to the local system, where it performs unit tests. The results of these tests as well as the build results are posted to a web site, where every team member can see a current state of the project.

So we can say that CI software reduces risk and repetitive processes and enables better project state transparency. These reductions might save developer’s time, and the whole time of a group spent on the current project. Craig also explained different types of builds, such as incremental, daily, weekly etc.

After a theoretical part, Craig showed an example of an application called CruiseControl.NET, made by ThoughtWorks, which consists of 4 distinct parts. CCNet.exe, CCService.exe, WebDashboard and CCTray.

In the following part, Craig explained the importance of code metrics. You prevent duplications, and your code is clearer for other team members as well. For controlling code standards, Craig gave an example of an application called FxCop. Another important thing while writing applications in a team (or alone also) is documenting. Sandcastle, a project used internally in Microsoft, is used for code documentation.

We can’t forget about feedback for developers. There are many possibilities, e.g. dashboard, sound, email, sms, or a really geeky thing, called Ambient Orb, which is a strange egg–like looking lamp, capable of changing colors depending on severity of the build failure.

VSTS, der Rundumschlag – Marcus Alt

This session discussed the application life cycle management and how the Microsoft’s products can help to make them as transparent as possible.

The main team roles in the software development are architects, developers, testers and database professionals. Every one of these roles is represented by a special Visual Studio Team System edition, which on top of the professional edition brings other tools, depending on what a person belonging to a specific role requires. There is also the most comprehensive tool available, called Visual Studio Team Suite, which is a combination of all the previous four editions mentioned.

In order to achieve a successful communication within the team, Microsoft also comes with a product called Team Foundation Server. This tool integrates features such as version control system, issue tracking system, test and build center, team portal, reporting, etc. The server itself is based on Microsoft SQL Server and SharePoint technologies and apart from Visual Studio Team editions can also be connected to from casual applications like Excel or Project. This allows also the non–developers to better collaborate with the team.

In his session Marcus described how exactly the individual team editions differ and showed the main features of the Team Foundation Server. All of tools mentioned are also looking to be come in a new version very soon.

Implementing VFP Design Patterns (part I and II) – Andy Kramek

In this two part session, Andy was describing the most common design patterns. After explaining the intent and showing an UML schema of each individual design pattern Andy showed them in a very practical, yet super easy examples in VFP.

Design patterns were first published in a book of the same name by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, all also known as “The Gang of Four”. I remember trying to get myself through the book several years ago. Not only were the concepts sometimes quite difficult to grasp, it was the examples that gave me a hard time reading it. At the time, examples written in Small Talk and C were just not much of a help for me. The more difficult it was for me then, the more I could now appreciate Andy’s session with easy VFP examples.

Before writing the book, “The Gang of Four” noticed that throughout different software applications, written for completely different purposes, there are frequently similar concepts being repeated. They analyzed the most common ones, gave them a special and a unique name and voila, the book was finished.

Do not think of a design pattern as a magical solution to fix all of your development problems. It is just a template and it is mainly used to communicate the core of your development solution. It can be “a communication of you to you”, when understanding the design patterns helps you understand the core of your current development problem or it can be a communication with another developers. As Andy pointed out, saying that your solution uses the strategy pattern is a way more efficient than explaining the same to your colleague for about 45 minutes without the help of design pattern concepts. Once that has been said, Andy went on with the individual design patterns. First he has always made a simple introduction, then explained the logic behind it on a schema, showed an example and finally summarized the advantages and disadvantages of its use. Andy showed design patterns beginning with the most fundamental one, the bridge. Bridge helps you to get rid of any hard coded implementation by separating it from the interface. Strategy pattern goes a bit further and helps with a conditional implementation. Chain of responsibility pattern allows you to implement objects that can take care of infinite number of options as an alternative to using a never ending case statement directly in your code.

Andy went on with many other patterns, the mediator, wrapper, façade, factory etc. If you are a VFP developer and have always wanted to finally see through the theory around design patterns and g their real meaning, this was the session to be at!

Integrating RSS and VFP – Doug Hennig

RSS, the abbreviation for Really Simple syndication or formerly Rich Site Summary and the connection with VFP, was the topic of another Doug’s session. It is a special XML file, and it has its use especially on blogs or news servers. RSS is so great because of being of a “pull” service.

It has several versions and the mostly used one is version RSS 2.0, to which Doug’s session was dedicated. As you probably know, it is an XML file with special tags. Whole document is closed into tags, and every item (e.g. article, post, etc.) is enclosed within the pair tag . Every item has some child tags, such as , , etc. RSS is case–sensitive, so you have to pay an attention to type it correctly.

Doug also gave us some recommendations such as not to use HTML, to use a unique id, and to validate the RSS feed, because some computer readers cannot read invalid feed. Second part of the presentation was dedicated to usage of RSS in VFP. As RSS is a type of XML, which is originally text, it is very simple to parse it in Visual FoxPro. This you can do manually, which is pretty harder, or using MS XML DOM, which is definitely easier, but the larger files you have, the slower it gets. You can generate RSS in VFP as well utilizing many classes. But mind a tag which has to be in RFC 822 format. Although RSS is used mostly on weblogs and news servers, it has many other uses as well. At the end of the session, Doug named at least 3 of them. Publishing application error logs, project updates and table structure changes.

VFPX Tools and Components – Rick Schummer

There won’t be a VFP 10, Microsoft says. But there is VFPX, says the community. VFPX, formerly known as SednaX, is a community initiative to take Visual FoxPro behind version 9.0 in form of open source add–ons.

The Doug’s presentation really was one big WOW I haven’t felt on any VFP conference for quite a while. If I should compare this to something, it reminded me the keynotes led by Ken Levy years ago, when the new cool features of VFP 7 and 8 were shown. The VFPX itself is hosted on CodePlex, which is the Microsoft open source portal. There you can download all of the code and tools, read what’s new or perhaps leave a message or a feature request in a forum. The content is still under heavy development and therefore, as Rick pointed out, even what he was showing in his presentation today is already old.

The new things coming in from VFPX can be divided into two categories, new tools and new controls.

One of the new cool tools is the Code Analyst. It can analyze your VFP code and help you find all kinds of “bad smells” in there. It can identify whether a procedure or a method has no return value, whether it has more lines that is considered a good practice in your organization or it can even complain if your code has too many comments. All of these individual rules and many more can easily be turned on and off and using VFP you can also write your own rules. For those of you familiar with .NET tool FxCop, it shares the same idea.

Another great time saver is a new “New Property/Method” dialog. It can update the member data to ensure your property is capitalized correctly, it can decide the default value of your new property depending on the first letter in its name (when you follow the Hungarian notation) and much more. The dialog is also modeless, which allows you to have it open at all times and switch to it from your code whenever you need it. The “Edit Property/Method” dialog has been enhanced in a very similar way. One of the really cool things there is that you can change the type of the PEM from method to property and vice versa. Ever created a property when you wanted to add a method? There are many other tools also. New Class Browser X provides more control on how you can generate a code from your visual classes. The new Table Designer X is now modeless and a work has also begun on a new MSBuild Target for VFP.

Apart from these tools, there are also new VFP components coming with VFPX. Ctrl32_statusbar is a replacement for the standard VFP status bar. Is supports events, icons, etc. and can easily be placed on a form as well. The ctrl32_scontainer is a scrollable container that you can place on any form if you need to show more information that can fit in there. DeskTop alerts is a new control allowing you to create bubbles similar to Outlook notification windows, which are shown when a new email comes in – a great replacement for the famous and grey WAIT NOWAIT WINDOW. Don’t wait, use it right away!

There are many more controls, but two of them can really help you out if you plan to have your application look like Outlook. Tab Menu project can generate the existing menu into a ribbon and the ThemedControls project contains an Outlook–like navigation bar.

Integrating .NET Winforms with VFP – Craig Berntson

The really cool thing – integrating .NET winforms with VFP was presented by Craig Berntson. .NET technology brings new things, which are not implemented in VFP and on the other hand, there are many things in VFP, which are not available in .NET. Sometimes you need to migrate your application from VFP technology to .NET framework, but it cannot be done all at once. You may migrate it in parts, using communication between VB.NET and VFP based on COM, which Craig demonstrated.

He showed us a little VB.NET application which can pass data to VFP form and vice versa. How does this “Hello world” sample work? Very simply – you click on a linkbutton on a VB.NET form, which passes this to the VFP. VFP form handles it, and simply displays.

The real value of a toolkit developed by VB programmers is use of the .NET controls in VFP. They look like .NET ones and behave like them as well. A real surprise could be a fact, that you can embed into VFP form some WPF control. All you need for this is .NET 2.0, Microsoft.InteropFormsRedist.msi, your DLLs, Register with RegAsm.exe and Bootstrapper technology in Visual Studio 2005.

Day Three – Saturday, November 10

by Jan Vít and Karel Koliš

Vorschau SQL Server 2008 – Armin Neudert

This session could be looked upon as the follow–up of Armin’s three SQL Server 2005 sessions. Once you got to know everything about the version 2005 there, you could get a quick peek at what’s coming in Katmai, the former code name for SQL Server 2008.

Armin grouped the new features into a few key points. These are even more secure, powerful and stable platform, making the SQL more than a relational data storage system, having simpler and more dynamic development capabilities as well as business intelligence improvements.

No matter how much of the functionality you use in SQL Server, there is definitely something that will catch your attention. As Armin was stepping through the list of new features, he also showed a demo of several ones.

Vertical Applications – Doug Hennig

The third day of the Frankfurt DevCon conference started with a session by Doug Hennig, which was called “Vertical applications”. In a usual time of 75 minutes, Doug presented many ideas about developing software to multiple users, purchasing, updating and renewing the licenses.

At the beginning Doug started with some pros and cons of developing vertical applications.

As everyone probably expected, the most important topic related to licensing applications is the software piracy. No one can expect that this can’t happen to his product, so it is important to take it into account and take actions against it. Developers should pay attention to the good encryption of user data in the database as they could be altered. An example given was the situation, when five users exist in a license table in a plain text form, whre everyone can easily play with it. Doug also recommends not using a logged–in flag in a column of a login table, because if application crashes, the flag will still be set to “logged in”. Better solution he finds in locking a table row. In case the application crashes afterwards, application can automatically release the lock.

There were many topics about activation as well. It could be tied to a system, e.g. hashed serial number of hard disk drive, or a dongle version. Another possibility is using special software for activation, called “Software passport”, which Doug finds to be very comfortable.

Next part of Doug’s session was dedicated to the application maintenance and updating. He distinguishes two types of support and update subscription – “A la carte” and “Subscription” models. The provision of support should be limited somehow to avoid abuse, but on the other hand should provide the support customers are asking for.

The topic of vertical applications is so important and interesting, that it could easily be presented in two or more sessions and there would still be something left.

Working Wonders Database Design – Andy Kramek

Ever looked at the existing database and wondered why this column is in this table and not that one, where it would make much more sense? Perhaps you or someone else in the past haven’t given the database design as much thought as it deserved.

Andy’s session was one of the more theoretical ones – no code samples, pure PowerPoint slides. During his session Andy has continuously been stressing the importance of thinking everything through before you actually start implementing it. A schema on the paper is easier to change than the one an existing application is already build upon.

There are basically three types of applications. The line of business systems, where there is a lot of data input, whereas data processing and retrieval is minimal, the management systems, with minimal data input and significant amounts of data processing and retrieval and the data warehouse. The last category, the data warehouse is actually a database that has no data entry at all and specializes exclusively in data processing and retrieval. You should always keep in mind, that it is the type of system you are developing that determines the database style, the level of normalization, the amount of indexes and all other parameters.

Databases are always created for a reason. Make sure you know the reason before you start forming the database schema. Some types of queries will be executed against it all the time, some less frequently and some perhaps never. The database has to be projected and optimized with the style of its future usage in mind.

Does a database store data or information? The data of course, otherwise it would be InformationBase, right? The difference between those two lies in atomicity. The “information” is broken into atomic “data”, which is then saved in the database. The reason for saving atomic data instead of directly saving information is that we can later combine the data to form different kinds of information, depending on how we formulate the query.

Data is not just simply data. It can be differentiated even more. There is so called core data, which cannot be logically derived from another data, and then there is process data, which is derived from the core data. For each process data, there has to be a process keeping the data up to date. Last category is the system data, which just as the core data, cannot be derived. The difference lies in the fact, that unlike the core data, system data is used by the system and processes and affects their behavior.

After this introduction and explaining the terminology Andy continued to describe individual database patterns. They all fall into three categories. The structural patterns focus on different kinds of tables and their functions. The relationship patterns then define the relationships among these tables. The last category, influencing the database design, is rules. These by themselves split into another three categories, the database rules, business rules and validation rules. Mixing them up is quite a common mistake, that later leads to significantly complicated application maintenance.

Unfortunately, there are no right answers and more than one approach to a given problem can be valid one. Following the basic rules should help you avoid the most painful database design errors.

.NET Communication foundation – Craig Berntson

Craig Berntson began this session by a historical overview of application programming. He mentioned 70s, when the importance was set on not using global variables, 80s, when the developers focused on object–oriented programming, and 90s, when the components came. Nowadays, developers are interested in service orientation, which takes us directly to the topic of Craig’s session – .NET communication foundation.

A solution abbreviated as WCF brings unification in form of single API interface. The only thigs needed to run this is.NET 3.0 on windows.

Craig showed a demo application WCFCalc, which was in fact based on a calculator service. His application called a WCF service, passed the parameters, and received the result in return. This could instead be done in a console application or in a web application as well. For FoxPro developers the important fact is that this could be used with a VFP application as well, because the communication between an application and a service is based on a special XML, WSDL and other standards traveling through an http connection.

WCF is also faster than .NET remoting, and it is more industrially accepted. In short – WCF integrates, connects and makes easier changes on the fly.

SQL Server Toolkit for VFP – Rick Schummer

Every VFP developer, who’s using MS SQL database (almost all), should have not missed this Rick’s session. In a given time he presented many useful tools that can be used in development and also management part of database programming.

Many developers think that the only solution is using the SQL Server Enterprise Manager, SQL Server Management Studio, or SQL Server Management Studio Express. After Rick’s session everybody knew that there are many more useful tools! For every situation, where a tool would come in handy, Rick picked one available for demonstration. Later on he usually recommended it.

Starting with a schema comparison, where he recommended an “SQL compare” application developed by Red Gate Software, he followed by tools for Data Comparison, Database deployment, T–SQL programming tools, and many more up to the audit trail tools.

A special time was given to the database documentation. This may be used not only in teams, but also when developing something individually. In teams this really helps with orientating in large databases, as well as it helps with an ad–hoc reporting between IT departments and end users.

We can’t forget to mention the data backups and data restoring. If you often needed to backup various data, you would have found Rick’s tips really useful. I enjoyed the session very much!

.NET Presentation foundation – Craig Berntson

Probably the best Craig’s session there was dedicated to the new Microsoft technology – Windows presentation foundation. This completely new thing comes with a .NET framework 3.0 and brings a lot of new possibilities, let’s say without any limitations.

On a few demo applications Craig showed the simplicity of creating nice graphic interface and connecting it to the code. The abbreviation XAML which stands for Extensible Application Markup language is a sort of XML file, where all the graphics are set. This session was both interesting and funny, all demo applications included not only enlightening things, but Craig included there some jokes as well. In a demo application showing spinning of picture, he used a really old photo of Bill Gates, lying on the table with an old computer and in an application showing video embedding he used a really jokeful advertisement with a monkey.

As everybody saw, XAML editing or creating is now very simple with using Microsoft Expression Blend tool. There should be also mentioned, that this application was written in WPF as well! So install .NET Framework 3.0, Vista SDK and Visual studio Extentions for WPF and start to develop in WPF, because it’s effortless to include WPF application into the VFP form.

Help made easy – Rick Schummer

Help file is the thing that is sometimes missed out, but after attending Ricks’s Schummer session, you never miss it out! There are lots of reasons why to include help into your application – e.g. for doing the support, documentation etc. Also some user guide could be a good thing, but usually their printing is more expensive, so that’s next pro for creating the help file. There are also some cons, as usually – e.g. lack of author’s time, or the fact that training is easier, but still there are more pros.

Usually is the help file written by developers, authors, or some other professionals form the company, but there’re also cases when it is done by users themselves. For writing the help file, you need little bit of writing, design and HTML skills. There are lots of tools which may help you to write a good help, Html Help Workshop is the one Rick presented us in a useful demo. Sometimes is the crating really annoying thing, but remember that it is very useful for users and it brings a positive meaning about an application.

“Do not forget to include your help file into the VFP application”, Rick recommends. Html help, Win Help and DBF help are the formats supported in VFP, so set a F1 key for launching the help and create some help buttons, which will bring an easy access to your help!

The closing session – Rainer Becker

As the end of the conference has slowly come, everybody gathered in the largest room to hear what Rainer Becker, the organizer of the conference, had to say. “The days of uncertainties are gone”. After the announcement from earlier this year, we are now finally aware of the future plans as far as Visual FoxPro and Microsoft are concerned. This was the moment VFP developers have been waiting for. The community can now seize the control of VFP development and take it all into their own hands.

There are already many VFP community projects underway. You can read about the most promising ones, such as the new VFPX initiative of the Guineu project, in the report above. According to Rainer, it is not a question of what add-ons should we start using now, it is about using them all, combining their advantages and integrating them into our VFP applications right away. It is also important to stress out, that as far as the attendees are concerned, this conference was even larger than the old one. This by itself clearly demonstrates that VFP developers and their business are not as dependent on Microsoft’s decisions as it is the case with other programming languages. In years 2004 and 2005 there were about 200 attendees present. Last year the number has dropped to 170. This year, as mentioned earlier, there was a slight increase as the number reached exactly 172 attendees. The most popular sessions of this year’s DevCon were the .NET Extender, Data access in .NET, Guineu, GDI+ and VFP on Vista.

Quite a few things about the next year’s conference have been decided already. We can again be looking forward to hearing Steven Black in the keynote, this time probably joined by a representative from local the Microsoft branch. The closing session wrapped up with a traditional raffle where the lucky ones were given several computer products from the conference sponsors. Our congratulations!

Final Words & Acknowledgements

The total number of attendees in 2006 was 170 and in 2007 it went to 172. The increase of 1,x percent is to be ignored as the good message is ”The number of attendees increased just a little bit, still we hope for even more next year!”. The organizer hope to repeat this result next year and plan for this goal.

The sustainable number of attendees as well as the high level of the conference content itself certainly warrants for another conference being planned for the next year. Make sure you don’t miss that one! We will be looking forward to it. At the very end, we, the reporters, would also like to say a clear “Thank you” to all the people, who has helped us to make the report as comprehensive as possible. Our thanks go to:

  • Rainer Becker, the organizer of the whole event, the key person who has continuously been looking after all of the small details that made our work as reporters as well as our stay as attendees as comfortable as possible. Thank you, Rainer!
  • Michel Fournier, the inventor of the UT reporting, who has always been very forthcoming and realized all of our various reporting requests in the blink of on an eye. Thank you, Michel!
  • Tina, Rainer’s right hand, who has always been making sure that everything went as smooth as possible and that all the attendees were feeling comfortable. Thank you, Tina!
  • Marcia Akins, Pavel Celba, Boudewijn Lutgerink, who have all provided large amounts of high quality pictures. If it weren’t for them, the picture archive would not be as great as it is. Thanks you all!

Our extended gratitude goes also to many others, who have made our reporting job easier, if only by creating a wonderful place and atmosphere to be in and where everyone was smiling when we pulled out our cameras. Thanks to you all! Feel free to share with us your experiences from the conference, any notes on the reporting as well as your ideas of the UT coverage improvements. We are always happy to get the feedback from you!

See you next time!

 
Jan Vít, Vitsoft 
Jan Vít is a student of the University Of Economics in Prague. Since 1993 he has been actively interested in programming as well as other areas of information technology. His computer experience started with PC 80386 with FoxPro 1.02, later followed by higher versions for the DOS platform and since 1999 he has been using the newest Visual FoxPro versions together with other programming languages and tools. Presently he spends most of his time with Visual FoxPro 9.0, MS SQL Server and C# in WinForms as well as WebForms development. He has been a regular speaker on the Czech Visual FoxPro DevCons since 2004 and is also the co-author of many DevCon conference reports from Prague and Germany. His work now mainly consists of developing software for pharmacies.

 
Karel Koliš 
Karel Koliš is a student of University of economics in Prague. He works for VitSoft, s.r.o. company, which develops software for pharmacies. He is interested in .NET webforms and winforms programming, sometimes he uses PHP for easier web applications as well. His hobbies are IT, photographing and theatre.



Copyright © 1993-2008, Level Extreme Inc., All Rights Reserved
62 Rue Doucet, Petit-Rocher, New Brunswick, E8J 1L3
Telephone: 1-506-783-9007 Email: mfournier@levelextreme.com