Thursday, July 10, 2008

Today's fun: VFP Memory Limitation

One of my clients called me with a problem with one of their VFP 6 applications crashing. The application has been running in 30 locations for 10 years with very few changes. I did not develop this particular app, but did mentor the original developer and helped with the design. It is used by engineers. At the site it was working on one computer, but not the other three. The error is one of the more common ones: Function argument value, type, or count is invalid. (11)

The IT department no longer has fresh VFP expertise because they have moved on to a new development platform. They gave me a call hoping I could fix it immediately so the engineers could keep on working. They brought the data back, but could not reproduce the problem.

Fortunately the Visual MaxFrame error logging is decent. Unfortunately the customer does not compile in the debug code so I could determine the program, but not the line number or the actual code. I dug in using the error log and traced the code to the SYS(3050) command. In the startup of the application a call is made to a procedure that sets the amount of foreground memory to a percentage of the overall memory available on the machine. The calculation uses Windows API calls to get memory on the machine and then works through a formula. In this case we are talking about three new engineering workstations and they were loaded with 4GB of physical memory. The program was determining it could have a little more than 2GB of RAM. The VFP Help file does not indicate a limit even in the latest version, but apparently there is one.

So the lesson learned today is: do not to allow the setting of the SYS(3050) function be strictly calculated. I added code to pick the minimum of the original calculated amount and something less than 2GB. It is the first time I have used the VFP MIN() function in a long time.

I never hit this problem because I have a configuration item with the amount of memory to set. I know several developers use a formula to determine the amount of memory to allocate to VFP. If you are one of these developer you might want to check your formula to see if large amounts of memory could trigger this error.

Labels:

Sunday, June 22, 2008

VFP: Include Config.FPW in EXE

I was working with one of my clients a couple weeks ago and he asked me my thoughts on using a Config.FPW with a VFP app. I mentioned I include one with every application I deploy and sometimes two.

The first one is brought into the project, marked as included, and compiled inside the EXE. Some Developers shy away from this technique because it makes the Config.FPW read-only and this sort of defeats the purpose of a configuration file. This was true in VFP 7, but since VFP 8 was released you can have more than one by including the following line in the Config.FPW:

ALLOWEXTERNAL = ON

You can include a Config.FPW file in the application folder to override any of the settings. Visual FoxPro gives the external file priority. Here is my default Config.FPW file I start with for all my applications.

* Default Configuration file for application
SCREEN = OFF
RESOURCE = OFF
ALLOWEXTERNAL = ON
_BROWSER = ""
_BUILDER = ""
_FOXREF = ""
_CONVERTER = ""
_COVERAGE
_GALLERY = ""
_GENGRAPH = ""
_GENHTML = ""
_GENMENU = ""
_GENPD = ""
_GENSCRN = ""
_GENXTAB = ""
_TASKPANE = ""
_TOOLBOX = ""
_TRANSPORT = ""
_WIZARD = ""

You might be wondering why I have a bunch of the system memory variables blanked out. I cannot recall where I read it, but this helps a run-time application start faster because VFP is not trying to find the IDE tool locations determined by the system memory variables. This has been an old trick from a long time ago. We are probably talking nanoseconds of savings because VFP is very fast, but I only really had to type these in once.

So my client implemented my idea in his app and called me back to tell me I was nuts because it was not working. Crazy talk, I know I have been using this for years. I asked him if the file was marked included, and if there was actual settings in it and he proclaimed yes. So I connected up to his machine to see what was up. He included it in the Programs section, not the Text Files section in the Project Manager. Took me about 30 seconds to figure this out and he was back in business.

I do find it interesting that Fox cares about this as I always thought it was the file name extension that mattered, but apparently the section you include the file under does have an impact on how it is treated. Good to know (and share with all of you just in case I am not the last developer to learn this {g}).

I have read where some developers are using this file to SET REPORTBEHAVIOR 80 so they can move their apps to the VFP 9 runtimes without needing to change their source code. I have an application object that calls an environment settings object to make most of the SET commands the way I like or need them for my applications. Alternatively you could set them in the Config.FPW, I just don't use it this way.

I also read something interesting this week about the Config.FPW file that I had not considered before, but if you include a Config.FPW file in the same folder as the Visual FoxPro OLE DB driver it will use your customized settings. I have not had a whole lot of use for the OLE DB driver in my Fox projects, but it is good to know in case I do have the need to do so in the future.

What techniques are you using to help me build a better default Config.FPW?

Labels:

Thursday, June 19, 2008

VFP and heart stoppage

I can probably count on both hands and feet the number of times I have literally sworn at Visual FoxPro (that would make it an average of once a year). Today was one of those days. I have been working on a new solution for one of my customers that needs to send email. I have tried several techniques with emailing from FoxPro over the years (Outlook Automation, CDO, West Wind wwIPStuff, Shelling out a MailTo, and most recently Craig Boyd's Extended MAPI FLL, and Blat). The swearing has nothing to do with any of the email techniques, but I can say working with email does cause hair loss.

The situation that caused me to swear today was one I have never seen before, and honestly cannot explain how it happened. I was working with a set of classes. One parent class (abstract) and four different subclasses with all the different implementation scenarios. I was using the Class Browser to work with the class library. I instantiated the child class like normal using a NEWOBJECT(), and then called the SelfTest method I have setup to run through different test scenarios I have to verify the code works as designed. I found the problem I was tracking down in the debugger, canceled out, and opened up the subclass.

This is when the twilight zone moment happened. When I opened the class all the source code for the class was gone. I mean gone, as in zero property settings, and no method code. I closed the class and opened it again. Same thing. Holy S&^*&&*t! (sorry, but I have to tell the whole story). A complete morning's worth of stream of conscious coding out the window. I tried to open up the parent class and got the message that the class was in use. Weird.

CLOSE ALL
CLEAR ALL
RELEASE ALL
CLEAR PROGRAM
ox=.NULL.
RELEASE ALL
*{pray}


Yes, I know the commands have some redundancy, but one can never be to sure to get the cleanest environment. Back to the Class Browser and still no luck opening the parent class: still in use. Visual FoxPro has a way to hold on to classes when I least want it to. Time for the FoxPro flush (not the FLUSH command, rather, QUIT and restart). Opened up the Class Browser and my subclass and there it is in all it's glory, the source code for methods and properties are back to normal. Relief.

So I backed up the class library and finished up the documentation in the classes and called it a morning. Hopefully the stress of potentially losing the source code made me stronger since it did not kill me (this time at least).

Labels:

Thursday, June 12, 2008

VFP Reporting Tip - paying it forward

I was mentoring one of our clients this morning because of a reporting issue he faced with some weird truncating labels (not that this tip is of any help for his problem {g}). During the session he showed me this new wiz-bang function he created to concatenate text together to be displayed on the report. He mentioned how his function removes the missing details from a snail mail address. You know the drill, customer wants to track address line 1 and 2, contact name and company name, but only wants to print the things that are filled in.

I turned around and told him about his new friend the semi-colon (;). This is a trick I learned back probably in FoxPro for Windows or even DOS when I was creating labels for customer mailings. You first drop a textbox on the Report/Label designer and size it to show the max lines you will print based on all the data being entered in the record. You can add the expression like this:

cCustomerName;cCompany;cAddress1;cAddress2;ALLTRIM(cCity)+",",cState,cPostalCode;cCountry

The semi-colon acts as a carriage return and any columns in the expression that are empty are not printed and if the line is empty the carriage return is not included. The commas (,) outside of a quote are replaced by spaces. So you can see how I am concatenating the city, state, and postal codes for a line.

I know this is an old trick and tip, but my client has been using Fox of some sorts for a long time too so in the case where you did not know this I am hoping it will be helpful. There are so many little things like this I take for granted that everyone knows, but realize in working with other Fox developers that this is not always the case. I also wonder from time-to-time how many little tips like this one I don't know about.

Labels: , ,

Sunday, May 04, 2008

Southwest Fox 2008: Sessions, Speakers, Registration

On May 1, we announced the speaker and session lineup for Southwest Fox 2008.

Menachem Bazian, Rick Borup, Craig Boyd, Bo Durban, Mike Feltman, Toni Feltman, Tamar E. Granor, Doug Hennig, Andy Kramek, Andrew R. MacNeill, Barbara Peisch, Cathy Pountney, Rick Schummer, Alan Stevens, Rick Strahl, and Christof Wollenhaupt.

It was even harder selecting from the outstanding list of proposals this year than it was last year, and Doug, Tamar, and I are very excited about the sessions being presented this year. There are some killer topics such as taking advantage of GDI+ in your VFP applications, creating custom report controls, profiling and refactoring code using the VFPX Code Analyst tool, using WMI, taking advantage of the Sedna Upsizing Wizard, using Ajax and jQuery in Web applications ... the list is long and exciting!

More details can be found on the Southwest Fox Web site and our blog.

Registration is now open, so be sure to sign up today for a fun three days in Phoenix in October. Even better, if you register before July 1, you save $75 on the registration and get a free pre-conference session, a $99 value.

We're looking forward to seeing you in October! Only 165 days until we meet in Mesa...

Labels: ,

Prague VFP DevCon 2008: Sessions, Speakers, Registration

I seen Igor Vit has the sessions posted and registration opened for the Prague VFP DevCon 2008.

July 1-3, 2008
Czech Technical University

Looks like he has set up a terrific line up of sessions and speakers! Mike and Toni Feltman, and Christof Wollenhaupt have English sessions. Martin Haluza (XFRX fame), Ivan Arnold, Štěpán Bechynský, Michal Bláha, Pavel Celba, Srdjan Djordjevic, Jan Dudek, Petr Hojný, Michael Juřek, Milan Kosina, Norbert Kustra, and Milan Štoček will present in Czech.

Check out this great conference, which leads in attendance every year as far as Fox conferences.

Labels: ,

Saturday, April 26, 2008

VFP 9 SP2 Help Fix: Glitches

As I noted last night, a new version of the VFP 9 SP2 Help file is available for download.

I have reviewed the new Help file and it does have a couple cosmetic issues, which in my opinion are minor compared to the advantage of including the 600+ missing index items. There is one unexpected minor improvement too, and I found a more serious problem, but it is not a show stopper in my opinion.

Cosmetic issues:
  1. Blue header section is white.
  2. Header section is rearranged a bit.
  3. Parameters are no longer bold.
  4. Microsoft copyright missing at the bottom (maybe this could be to our advantage. {evil grin}
  5. See Also sections with different References and Other Resources subsections are all merged under Concepts.
  6. Help title would be better as Visual FoxPro 9.0 SP2 instead of dv_foxhelp91.
Cosmetic improvements:
  1. Code is more readable without extra white space.
Real problems:
  1. The only serious problem I have found in my limited testing the Favorites are missing. I am not talking about my favorite topics (those always seem to get lost when updating CHM files), but the entire tab and feature is missing. I use this a lot and it will be a big hit my productivity. It won't stop me from using this version of the Help file.
  2. Internal links are broken on a number of pages (thanks to Andrzej for pointing this out to me and posting an image on the Foxite Upload site), also not a show stopper.
  3. PEM links are broken on pages for all objects I have looked at. This is definitely a serious problem so you have a choice, missing PEMs (used all the time by some people), or missing index entries in original SP2 Help. Both have a common workaround, use the Search page.
[RAS (26-Apr-2008 @ 10:30AM) - Updated to reflect internal links broken]
[RAS (28-Apr-2008 @ 2:26PM) - Updated to reflect PEM comment I posted yesterday, but not read by some readers based on posted feedback I have read]

Labels: ,

Friday, April 25, 2008

VFP 9 SP2 Help: Fix is available

Need Help? Specifically, need a more complete index in the VFP 9 SP2 Help?

As promised at the MVP Summit, Microsoft has made available the corrected VFP 9 SP2 Help file, which includes the missing index entries. Get the file at the Microsoft Download site.

One small step for VFP 9 SP2, one huge Help for VFP 9 developers...

Labels: ,

Monday, April 21, 2008

MVP Summit: The Fox Team

The MVP Summit completely exceeded my expectations for many reasons, but mostly because of my interaction with the other VFP MVPs and the Fox Team. Microsoft did not schedule a single session for the VFP MVPs so we decide to make our own. I learned several things and felt the trip was well worth the time and cost. I had to work at night to keep up with the project schedules so it really was an exhausting week.

There is one thing I want to address publicly that I feel is important. I have been reading many comments in the community on how the Fox Team has been disbanded and how they have gone their own separate ways. How they have abandoned our favorite developer tool and our community. Yes, this is partly true. Each of the developers, the testers, the management, the Help file folks, and the marketing team (no jokes please {g}) have all gone on to do great things in some other part of Microsoft and the entire team is not working full time on Visual FoxPro. This is part of growing as individuals and making moves in one's career.

But one thing I realized and something that should have been very apparent to me all along is this small group is still the Fox Team no matter where they go and no matter what other projects they work on. The group as a whole and individually have been smacked with a virtual baseball bat over the last year, yet they still managed to correct the Help file's missing index items and correct an annoying bug in the reporting system. I think this says a lot about the individuals involved. They listened intently with an open mind to the bugs/issues in SP2, and have left open the door to improve the SP2 experience and its adoptability by FoxPro developers. They all showed up for the product team dinner including Fox Team members from the past who long ago moved on to something new. Even someone who was on vacation and may have wanted to celebrate a birthday with the family came to spend time with us. Any one of them could have spent the time with their product groups, but choose to come to ours.

My hat goes off to the entire Fox Team and their dedication to Visual FoxPro and the Fox Community. Thanks for your efforts.

Labels: , ,

Wednesday, April 16, 2008

MVP Summit - Good News About VFP

Alan Griver spilled the beans today that Microsoft has some fixes for VFP 9 SP2. Alan announced the missing index items in the VFP 9 SP2 Help file are fixed and being reviewed, and will be available online sometime soon. The "Fox Team" has already fixed one report bug when the preview toolbar becomes unusable in the "new style" report preview. The fix is done and is going through the packaging process before being released to the Fox Community.

This is absolutely great news and a step in the right direction to help with the adoption rate of VFP 9 SP2.

There is more good news as the "Fox Team" is open to possibly fixing more SP2 regression bugs. No promises were made, but it is encouraging news that the serious bugs are being considered. It was a positive meeting and a good day.

Labels: , ,

Sunday, April 13, 2008

DAFUG: Collections

Last Thursday Mike Feltman of F1 Technologies presented his new session on Collections to the Detroit Area Fox User Group. Mike is putting this session together for the 2008 conference season and wanted to rehearse it to get some feedback before presenting it at conferences this year.

This session was excellent! Mike talked about collections, some advantages and disadvantages, how they work, how they compare to arrays, and then went in and demonstrated some code. Mike has put together a really cool set of utilities using collections based on his work with JavaScript over the last year. These utilities show the power of collections and are worth the price of admission to his session alone.

I rarely use the Collection class in Visual FoxPro, primarily because they are more difficult to debug than arrays. I use arrays for the same thing I can use a Collection. After seeing Mike's session I likely will use the Collection class more. Another thing Mike showed is how you can return an array property from a method in class code. This is something I either knew and forgot, or learned last Thursday.

Great session Mike! I know Mike is showing this session in Grand Rapids on May 10th, and anticipate this session will be selected by conference organizers too.

Labels: ,

Thursday, March 06, 2008

Southwest Fox Potential Speaker Alert

I know Doug Hennig has already blogged how the call for speakers deadline is coming up on Monday March 17th. You may have seen the post over on the Southwest Fox Conference Blog when we announced it.

I thought I would take this opportunity to point potential speakers to Craig Bailey's blog "TIP: The Top Mistake of public speaking", which has some very solid advice. Maybe Craig will submit some sessions {g}.

I am looking forward to reading the submissions from the Fox Community. I was talking with some Fox friends recently about how the selection process for last year's Southwest Fox was for me the most difficult part of putting the conference together. I expect this year to be no different.

Please note there are details on the Southwest Fox site and we expect to select some seasoned veterans, as well as some new presenters too. Please consider topics you are passionate about, and topics you think will fit both the tracks we are looking to offer as well as the spirit of the conference - Fox Rocks!

Only 224 days until we meet in Mesa!

Labels: , ,

FoxPro Content on Advisor - Updated

Back in November I posted how you can get to VFP specific content on the massive Advisor site in a post titled: FoxPro Content on Advisor

Last week I got an email from Jeff Hibbs noting this link was broken so I contacted Advisor to see what happened. Looks like they moved some servers around. The new link is:

http://my.advisor.com/whome.nsf/w/MSVisualFoxProAdvisor

This is way better than trudging though pages of material on Lotus Notes, FileMaker and SharePoint when all I want to read is what Mike Lewis has to offer for tips this month, and the rest of the content the VFP authors have to share with me before my subscription expires.

Thanks Jeff for pointing out the broken link!

Labels: , ,

Saturday, March 01, 2008

DDEX Install Instructions Updated

I am sure anyone who reads my blog looking for VFP advice and insight already reads Craig Boyd's blog, but since this is an important discovery and set of instructions I thought I would mention it here.

Last week a friend asked me about installing the Sedna component DDEX for VFP in Visual Studio so he could work with VFP data in Visual Studio.NET. These instructions are a byproduct of the initial inquiry.

Check out Craig's detailed research and corrections/enhancements to this component here.

Thanks Craig, once again your contributions to our community are huge! I love his statement at the end of his post, and maybe will become our new mantra: "That's one of the things I love about VFP... the VFP Community can provide for themselves."

Labels: , , ,

Friday, February 22, 2008

Traveling on the Darkside of VFP - Director's Cut

Christof Wollenhaupt presented a marathon session this evening at the Detroit Area Fox User Group, and what a session it was. For those who saw Christof present this session at Southwest Fox and/or German DevCon, you saw a terrific session. But DAFUG listened to Christof discuss some really interesting observations he has made with respect to the behavior of VFP for more than three hours - a true director's cut.

Christof started the session and told us (maybe warned us {g}) we are in a democracy he will talk until 50% of the people in the room left. He ended by running out of material to cover. Only one person left. I think he would have gone on to a second session, but the group was getting hungry for dinner and it was 9:30.

I personally learned numerous things and I saw part of his session in Mesa. One particular aspect was the discussion on memory, variables, and garbage collection. Christof discussed how VFP uses the idle loop to take time to purge unused memory variables. This loop is entered when VFP is waiting (READ EVENTS, INKEY(), a WAIT WINDOW, or even while tracing code in the debugger). Christof also noted something important to me in particular when he pointed out the SYS(1104) function (documented since VFP 7.0 and in the product since FoxPro 2.6) gives the developer a way to initiate garbage collection. I think this is perfect for a project I am working on where I am converting data and one of the routines is taking 11-12 hours scanning through records. The loop gets slower the more records it processes. Using the SYS(1104) function may improve performance.

Thanks Christof for taking time out of your vacation to stop in Detroit and give us a real treat! This was a terrific session! I can't wait to hear your session proposals for Southwest Fox 2008.

Labels: , , ,

Thursday, February 14, 2008

Visual FoxPro DevCon Praha (Prague)

Looks like Igor has announced the Prague DevCon for July 1-3, 2008. I can't say from personal experience, but from talking to others who have attended this conference, it is terrific. This is the conference that hits the big numbers with respect to FoxPro developers every year.

You can get all the details in April, but definitely add this to your calendar if you are near the Czech Republic, and seriously consider attending even if you live half a world away. You will not be disappointed.

Labels: , ,

Friday, February 08, 2008

wOOdy's VFP Code Snippets

I see wOOdy (aka Juergen Wondzinski, German VFP MVP and guru) has started a code repository for his own FoxPro code. Check it out here: http://code.msdn.microsoft.com/FoxPro

I have subscribed to the RSS feed. Thanks for this resource wOOdy!

Labels:

Sunday, January 27, 2008

Sedna is officially in VFPX

Looks like Craig Boyd was up all night putting the Sedna source into VFPX on CodePlex. You can read more at the Sedna page on VFPX. Craig also reveals the location for the very cool DBi Technologies ActiveX controls released with Sedna too!

Thanks Craig!

Labels: ,

Saturday, January 26, 2008

Does Sedna require VFP 9 SP2?

Over on ProFox there has been some minor grumbling about Sedna requiring SP2. I do not think SP2 is required. I can see some of the components requiring VFP 9, but my guess is the components will work fine with SP1 and maybe even the RTM version.

I think the only things required is the .NET 2.0 framework for the NET4COM, Visual Studio for DDEX, SQL Server for the Upsizing Wizard, and Vista for the VistaDialogs. I believe the SP2 requirement on the Web site is one of those things where Microsoft puts the latest version up because it is what they support.

If you think about it, Microsoft did not enhance the core VFP 9 EXE other than to fix bugs (and put some new ones in {g}). Even the new Reporting enhancements in SP2 work in SP1 (something I heard from Colin Nichols at OzFox 2007 if I remember correctly).

The one thing I have not tested is attempting the Sedna install on a machine without SP2. I would be very surprised if the installer checked to see if you have SP2 installed first. If we find out this is the case, I have a workaround to have both SP1 and SP2 on the same machine peacefully.

Labels: , ,

Sedna Released!

I know this has been long in coming, but very early this morning (1:00am EST) Microsoft released the much anticipated Sedna add-ons for Visual FoxPro 9.

You can download it from the Microsoft download site. There is a readme file and an MSI file to download.

Sedna includes the DataExplorer updates, DDEX for .NET access to VFP data, the MY IntelliSense extensions, the NET4COM examples to bridge VFP and .NET, the Upsizing Wizard for SQL Server, and VistaDialogs4COM to modernize VFP on Vista.

I will be installing it soon and will post my thoughts a little later.

Labels: , ,

Thursday, January 03, 2008

MAKETRANSACTABLE() use

Each time a new version of VFP is released I look at all the new commands and functions to see how I might be able to incorporate them into my user applications and developer tools. Each time I have found some function or command that makes me scratch my head and wonder what the Fox Team had in mind. For VFP 9 this was MAKETRANSACTABLE().

At least this is how I felt about this command up to a month ago. I received a new mini-project from one of my clients who needed a basic import of some accounting data from an external program into their custom app. The external table was a free table created and/or updated by another program. The new records needed to be imported into another DBF contained in a database container. Once the records are imported I needed to stamp them as imported in the free table. Hmmm, sounds like something I would want to do inside a transaction, but I have this free table... ah, finally the perfect reason to use MAKETRANSACTABLE().

The funny thing about this is I have never tried the new command to see if it works {g}. It is rare for me to work with free tables in a production environment. Normally I work with SQL Server, or VFP contained tables.

So I tested it out and it does indeed work, and it works well. The odds of the import not working is very, very remote because I am only adding the new records to the database table (no updates of existing records), but I thought the extra security of doing it inside a transaction was worth the extra couple of commands to add to the code.

Here is some of the code so you can understand fundamentally what I did.

TRY
USE (toParameter.cFeedFile) IN 0 EXCLUSIVE ALIAS (toParameter.cFeedFileAlias)
SELECT (toParameter.cFeedFileAlias)
INDEX ON TimPe TAG TimPe

* Allow the free table to work in a transaction

MAKETRANSACTABLE(toParameter.cFeedFileAlias)

* Set buffering so entire table gets updated or can be reverted
CURSORSETPROP("Buffering", 5, toParameter.cFeedFileAlias)

**** Open other tables...

CATCH TO loException
toParameter.lOpenedAll = .F.
toParameter.cTableUpdatedFailureMsg = "Failed opening tables - " + ;
loException.Message

ENDTRY

*** Handle processing of tables...

* Start a transaction so all changes can be backed out.

BEGIN TRANSACTION

toParameter.lDatabaseFileTableUpdatedResult = ;
TABLEUPDATE(.T., .F., toParameter.cDataBaseFileAlias)


IF toParameter.lDatabaseFileTableUpdatedResult
* Continue on with the feed table update
toParameter.lFeedFileTableUpdatedResult = ;
TABLEUPDATE(.T., .F., toParameter.cFeedFileAlias)


IF toParameter.lFeedFileTableUpdatedResult
* All changes committed
END TRANSACTION
ELSE
* Record why
AERROR(laError)
toParameter.cTableUpdatedFailureMsg = laError[2]
ENDIF
ELSE
* Record why
AERROR(laError)
toParameter.cTableUpdatedFailureMsg = laError[2]
ENDIF

* Determine the way to finish up.
IF toParameter.lDatabaseFileTableUpdatedResult AND ;
toParameter.lFeedFileTableUpdatedResult
* All went well and is commited
ELSE
* Problems and rollback
ROLLBACK
TABLEREVERT(.T., toParameter.cDataBaseFileAlias)
TABLEREVERT(.T., toParameter.cFeedFileAlias)
toParameter.nRecordsInserted = 0
ENDIF

RETURN
I think it is cool when there are others that have a vision to incorporate things into Visual FoxPro that hit me years later how I can use them.

Labels: ,

Friday, December 28, 2007

Fox Rocks with FoxRockX

The publishing industry in general has faced some troubling times in the last couple of years. This can be witnessed in spades in the Fox Community as we have all watched both FoxTalk and The Advisor Guide to Microsoft Visual FoxPro literally go away. FoxTalk is still published, but is continuing printing the "best of" articles. Advisor collapsed the majority of their technical magazines into Databased Advisor and nearly tripled the price. Both of these situations are sad. I still have active subscriptions to both publications, but I do not intend to renew either of them.

So this leaves a huge gap in the community. There are authors who are getting jittery with extra time on their hands each month and no outlet to get articles published. They could resort to blogging, but long blog entries are not fun to read (at least to me), and often hard to take with you to the reading room, or on a plane or train. More importantly they are not necessarily permanent. Bloggers change services, RSS feeds only hold so many posts, and the authors have the right to pull their posts. Magazines (paper or electronic) are delivered to me and I can keep them as long as they are useful.

It would be nice if there was a publication that would focus on FoxPro. A great magazine the entire Fox Community could subscribe to for state-of-the-art and timely information, and techniques for our favorite development tool and language. I would subscribe in a heartbeat.

Rainer Becker, the newest Lifetime Achievement awardee is stepping up and creating a new magazine called FoxRockX (pronounced Fox Rocks). He has convinced some of the regulars you have come to enjoy reading to produce some new content for this magazine. He has lined up some excellent regular topics on the Sedna extensions, VFP 9 SP2, VFPX, business topics, deep dives into development, Vista, extending with .NET, new tools, tips and tricks, Guineu, and is resurrecting the KitBox column. I am sure there are going to be many more topics as time goes on.

I am very excited by this development in the Fox Community and am glad I am able to help out with getting this magazine started. I have already sent in one article on VFPX and plan on doing more articles that deep dive into the various VFPX projects and tools being developed by developers in our community.

I am glad Rainer has been working on this because I was starting to plan again how to start my own venture in publishing I knew I did not have the amount of time and energy it was going to take and still keep White Light Computing running properly.

FoxRockX will have subscriptions in electronic and print (print is naturally more). All the details will be posted soon and the magazine will start in early 2008. Thanks to Rainer for heading this up and to all the individuals who are pouring their creative and administrative energies into this new venture. I hope everyone in the Fox Community can support this magazine. It will only be successful if people back it by subscribing to it as soon as they can. I hope Rainer can count on your support.

Labels: , ,

Tuesday, November 20, 2007

FoxPro Content on Advisor

As you may know, Advisor has consolidated all their technical magazines into Databased Advisor. Life in the business world goes in circles and Advisor has come full circle if you recall the history of Advisor and their FoxPro offerings. It all started with Databased Advisor covering several database languages including FoxBase/FoxPro. The split the FoxPro content off into FoxPro Advisor, changed the name to Advisor Guide to Microsoft Visual FoxPro, and have now consolidated it back to Databased Advisor.

While I see some value in having access to all the content, to me at least it just gets in the way of finding the excellent FoxPro content written by the usual suspects (Christof Wollenhaupt, Tamar Granor, Pamela Thalacker, Andrew MacNeill, Ceil Silver (now Mike Lewis), Rick Borup, Rick Strahl, Doug Hennig, Andy Kramek and Marcia Akins) and the cast of others who contribute less frequently.

So I emailed Advisor and asked how I can see just the FoxPro content and they quickly responded with the following link:

http://my.advisor.com/wpubs.nsf/p/MSVisualFoxProAdvisor

(Updated 6-Mar-2008)
http://my.advisor.com/whome.nsf/w/MSVisualFoxProAdvisor

Much better.

Labels: , ,

Monday, November 19, 2007

Southwest Fox: New blog

While in Germany someone made a comment to me how they are looking forward to my blog returning to a FoxPro theme, instead of it being hijacked by Southwest Fox announcements. This is a really good point. So yesterday I created a Southwest Fox Blog so the three organizers can blog about our experiences organizing the conference, and things we are considering doing for the next Southwest Fox to open up a discussion on some new ideas. I hope you take time to subscribe.

Hopefully I will be blogging soon about the whole Southwest Fox Conference 2007 experience. I have so many great memories even though the conference was truly a blur.

Only 332 days until we all return to Mesa! {g}

Labels: , ,

Saturday, November 17, 2007

Software Developer Network: Day One & Only

On Sunday Doug Hennig and I took a train to Holland so we could present sessions at the Software Developer Network FoxPro (SDN) Software Developer Event. The train is one of the high speed trains that travels at 300kph/188mph. Fast and smooth. Once we arrived we were picked up by Gerben Kessen at the train station and taken to the hotel. At the hotel we met up with the Visual Objects and Vulcan speakers for dinner. The other track at the conference had session on these two technologies. It was interesting to hear about the world of Visual Objects and Vulcan (a XBase language on the .NET framework currently in development). Naturally we had some fun in the VFP is better vs. your tool of choice discussion {g}. I went back to my room and battled the wireless Internet connection before falling asleep.

The next morning I woke up late! I requested a wake-up call for 7:00 so I could get breakfast and make sure my computer works with the beamer. I woke up at 8:00, which still gave me enough time to get to the conference room to test out the beamer, but not enough time to eat breakfast. I was happy to do the first session on the last (and only) day. Traditions are important. I also had the first session after lunch and the last session of the day. All three slots are the least preferred by most speakers, but I don't mind presenting during any of the slots.

I presented three sessions:
  1. VFPX Tools and Components – Live
  2. Creating Help - Made Easy!
  3. SQL Server Toolkit for the VFP Developer
The first session did worry me as there were only 3 or 4 developers in the room when the session was suppose to start. I expected a few more since there were 25 people signed up for the conference. A couple minutes into the session the rest of the crowd filed in. I asked how many people had heard of VFPX and not a single hand was raised. By the end of the session people were real excited by this project. We are already working to come up with some plans to get the word out about VFPX, but we are going to need your help in doing so. Make sure to spread the word about this important project, and a significant part of the future of Visual FoxPro.

My other sessions went well. During Doug's sessions I caught up on some work I needed to have done before I returned to the states. After the conference we had dinner with the organizers and then headed to Amsterdam. Tuesday Doug and I toured Amsterdam. I felt like I was a zombie. Amsterdam is definitely everything I have heard about it. It is different than any place I have visited on the planet.

I think SDN has a really good idea with the one day event. This is something I have been considering doing in North America for a couple of years. I have attended a number of "mini-conferences" over the years put on by Microsoft, and other organizations and individuals. What do you think? Would you attend a one or two-day "mini-conference" with five or six sessions in a day? If so, how much would you be willing to pay for this? Please let me know either on this blog, or even send me a private email.

Labels: , ,

Saturday, November 10, 2007

German DevCon - Day 3

Today is Saturday, the last day of the conference. Interesting, Rainer did not follow my tradition of speaking at the first session, but since my first session today is at 11:30, I will be presenting during my body clock time of 5:30AM. {g}

First this morning is Armin Neudert's "Vorschau SQL Server 2008", which is a German session revealing some of the new stuff in SQL Server 2008. I barely understood Armin's discussion and could not read most of the slides, but I got the examples he showed and found the session very beneficial. One thing I noted is the addition of some new date/time formats. I was also working on reviewing my "Creating Help - Made Easy" material in preparation for my session after lunch.

I presented my "SQL Server Developer Toolkit for the VFP Developer" during the third slot of the day. I really enjoy this session because it shows developers tools to increase productivity. This session is designed to be interactive with the people who come to the session and this session did not disappoint. Lots of questions and experiences. I normally worry about a session like this at the German DevCon, but this year it seems developers are willing to contribute, which makes the session go better. It was exciting for me.

Lunch - more smoked salmon despite Marcia's attempt to plate it all before I got to the buffet.

Next up was my "Creating Help - Made Easy" session. It is a session I developed for WhilFest 2003. I feel pretty passionate about creating Help for applications when it is required. I also know many developers who are nervous about Help because they think it is complicated. The reality is, when using the HTML Help Workshop it is hard. In fact, it is really painful. Miserable. This is why I step through the process in my session. I want to show the developers the pain and why you want to purchase a tool for a couple hundred dollars (Euros, etc.). I show you how to integrate the Help file into your application. Finally I show you a couple of HTML Help authoring tools (West Wind's HTML Help Builder and Help and Manual) to show you how easy it really can be. I realized after the session I forgot to mention you need to ship a couple of VFP HTML Help DLLs with your app to get the integration to work in production. Fortunately all this information is in the session white paper, so if you attended the sessions or the conference you can read all about it.

Andy's "Get the Most Out of Intellisense" session is in the official last slot of the conference. I have seen this session a couple of times before, but as usual I relearned several things. Couple of my favorites are:
  1. Command Tip Window (replacement for the Quick Info tooltips) which allows you to copy the text.
  2. Adding common variables you use in your code such as "loObj" and have it expand to "loObj = " and then have it drop down a list of object references such as "this", "thisform", and "this.parent".
Sweet refresher and packed with good examples, and literally a hundred items to use in our own Intellisense table. Not only do you get the code, but you get inspiration to create your own based on needs you have in development. Andy is one of, if not the authority on Intellisense. His knowledge on this topic is top-gun. I also appreciated his endorsement of using spaces instead of tabs in my code {bg}.

Based on some bugs discovered and some other quirks Andy has found over the years, I am hopeful the IntelliSense Manager becomes a project on CodePlex in VFPX once Microsoft releases the Sedna components and the XSource ZIP file. Alan Griver noted in the keynote that Sedna and XSource should be released in the next few weeks. Another session I can rate a six out of five stars.

Tonight is the speaker dinner which is something I always look forward to since Rainer brings out some of the most exotic food I have ever seen. In the past we have seen zebra, rattlesnake, fish I am sure is from another planet, and various other interesting food I cannot pronounce or spell. I am hopeful we will not see Monkey brains.

Tomorrow Doug Hennig and I head to Holland for the Software Developer Network conference on Monday. If I have time and a decent Internet connection I will make a report. I will be presenting three sessions and ignoring Doug's (especially his Vertical Market session {g}).

Thanks for the great time Germany! Rainer: you run a terrific conference. Good news to the rest of the world as he has announced German DevCon dates through 2014. Check out the Fox Wiki for absolute details.

Labels: , ,

Friday, November 09, 2007

German DevCon - Day 2

I am thankful that the sessions at German DevCon start at 8:30. I woke up with wake-up call and proceeded to fall back to sleep for 30 minutes. I still was able to get to Steven Black's "Niche Marketing for VFP" session. I learned several important points during this session. Steven pointed out a new marketing term to me called SERP (Search Engine Results Page). What Steven talked about is owning your name property. Where does your web site come up in the results when you type in your company name or your name in Google? I am happy to say mine shows up at the very top via Google Germany. Steve provided several tips to include in the HTML and tweaks you can do using Google Analytics. This session also covered what a niche is and a number of niches available for VFP developers. I found this session to be very beneficial and glad I did not oversleep a minute more. Five of five stars.

Marcia Akins was up next with her "The 26 Hour Day" session. I saw this session earlier this year as she was starting to develop it. In this session Marcia shows a number of productivity tips and tricks and talks about how much time she thinks it will save you. I told her that her time estimates are conservative. This session covered a couple of my personal favorites: DeclareLocals.PRG (from MegaFox: 1002 Things You Want to Know About Extending VFP) and the new Edit Property/Method replacement dialog (soon to be added to VFPX). These two tools save me time. Marcia also showed her form and class hacking tool and pointed out how my HackCX Professional is like her tool on steroids. Her plug was very nice (and unnecessary), but she incorrectly pointed out that HackCX will even clean your kitchen. This is not true in the current version. Doug Hennig mentioned that I need to finish the MenuDesigner before I add the kitchen cleaning feature into HackCX {g}. Another five of five stars.

Craig Berntson followed Marcia's session with "Continuous Integration." This is a fairly new term (well new to me at least) that encompasses the automation of the build process and testing. This really is about development processes with respect to using source code control, building, and testing the build in tight iterative loops. Make small changes to the code, unit test, check it in, build, review the build results, use automated testing, and check the status of the tests. Better quality software based on a repeatable and proven process. Craig showed a number of free tools and talked about some very expensive tools to implement this process. He did this from the perspective of the .NET developer. .NET developers are evidentally ahead of the curve on automating the process. Craig did have one slide to show some of the tools that work with VFP like FoxUnit (automated testing), Code Analyst from VFPX to help with refactoring, and mentioned Rick Borup's paper on FinalBuilder with VFP for "Automating the Build." Four of five stars (would have been even better if this was presented from a VFP perspective).

Lunch - more good food, and of course more good smoked salmon.

I had ti get sine more work done in the afternoon along with some interesting discussions with Christof Wollenhaupt and Igor Vit (from Prague). I wanted to go to Michael Niethammer's session "VFP - Tools und Assistenten." I reviewed his materials a couple of days ago and figured I had a thing or two I could learn. Instead I ran through my demos for the VFPX session I was about to give.

I did give my session "VFPX Tools and Components - Live." There was a big crowd in the room and you could feel the excitement as I revealed each of the tools and components. A quick poll at the beginning of the session revealed very few developers have heard of VFPX. It was consistent with the findings at Southwest Fox (15-20%). Looks like we need a "Tell a friend about VFPX" campaign. As I went through each section of the session I asked if anyone was using what I just showed and a few hands would go up. Then I followed up with the question asking how many developers might use it in the future and most of the room raised their hands. The session was definitely more interactive than any session I have given in Frankfurt the last three years. There definitely was a buzz in the room. I was very fun for me, I just hope everyone else was having a good time too.

One more day to go - conferences sure seem to fly by.

Labels: , ,

German DevCon - Day 1

My day started out with Doug Hennig's "Developing VFP Apps for Vista." I first saw this at OzFox 2007 and have recommended every VFP developer should see this session. This session was very popular at Southwest Fox and Advisor DevCon too. I am also getting closer to purchasing my first Vista computer so the session has more relevance this time around. Doug has real world practical experience on the topic and is considered the authority. I think there are two key take-aways from this session. The first important ideas is security and not working around it, but rather work with it. The second is that even if you do not want to use Vista for development, note your customers eventual will be so you need to develop this expertise. Doug has lots of useful code to help make your applications compatible too. Still a six out of five stars.

Next up is the keynote. Alan Griver started the session by presenting Rainer with the VFP Lifetime Achievement Award as I posted yesterday. Alan also talked about "the announcement" from last March. Unfortunately Alan's machine was suffering from a serious hard drive problem. He was able to boot in Vista safe mode, but none of his demos were working because they have registry dependencies. This was a bummer since I have seen his keynote material at the Advisor conference and it was very interesting, and showed some key technologies VFP developers will use for years to come. Doug Hennig stepped in with some Vista demos, and Steven Black made some compelling points on why VFP developers will be successful for many years to come. Stability is reliability. I have enjoyed Steven's sessions over the years, but today I realized during this session that Steven could become a religious evangalist if his software career wanes. Steven basically whet the attendee appetite for his all evening session "FoxPro is dead! Now What? The Case for VFP."

After lunch I had to work on some projects so I skipped the first two afternoon sessions. My "Fishing with a ProjectHook" session was the last afternoon session. It was not attended by a lot of developers because it was against Christof's "Cross Platform with VFP and Guineu" and Andy Kramek's "SQL Server for VFP Developers Part 2." Personally I would have read the white paper for the ProjectHook session, and attended Christof's session (which I heard was top gun). My session went okay, but definitely was not the best I have delivered it. It could be the fact I am still suffering a bit from jet lag, or it could be that I thrive off more energy from more attendees. I really appreciated the attendees who selected my session. Thanks for coming.

Dinner was very good. The only disappointment is they did not serve smoked salmon. This broke my streak of smoked salmon at every meal. Marcia Akins and I hunted for it for a while, but there was none to be had.

I also skipped the evening sessions to catch up with several clients. Skype is a lifesaver.

Labels: , ,

Thursday, November 08, 2007

Visual FoxPro Lifetime Achievement Award Winner

Alan Griver announced that Rainer Becker is awarded the Visual FoxPro Lifetime Achievement Award during the keynote here at the German FoxPro DevCon.

Rainer is the organizer of the German FoxPro DevCon and is one of the leaders involved with everything FoxPro in Germany. This is well deserved based on his incredible contributions to theFox Community for many, many years.

More posted on the FoxPro Wiki by Steven Black already!

Congratulations Rainer!

Labels: ,

German DevCon - Day 0

I arrived in Germany Wednesday to attend the 14th German DevCon.

Wednesday is a transition and travel day. It is brutal getting use to the new timezone so this year I took a new approach and decided to take the 10-minute power nap approach. I have tried the stay up all day without success, and tried the long-nap approach. It worked. I actually slept through the night Wednesday and woke completely refreshed Thursday morning. Nice.

I had lunch with Steve Black, Alan Griver, Craig Berntson and Doug Hennig (both Craig and Doug will be blogging about the conference too). I spent the rest of the day working on some projects, power napping, and attending some speaker related meetings.

More to come...

Labels: ,

Tuesday, November 06, 2007

Cathy Pountney is blogging!

Hot off the wire: Cathy Pountney is blogging which is great news.

http://cathypountney.blogspot.com/

Welcome to the blogosphere!

Labels:

Tuesday, October 30, 2007

More Conferences Next Week!

I am now able to focus on the next two conferences I am speaking at, and realized this morning I might not be blogging enough about the German DevCon in Frankfurt (8-Nov-2007 to 10-Nov-2007) and Software Developer Network in the Netherlands (12-Nov-2007).

Rainer Becker is working on his 14th German DevCon. Having done one-third of the work to put on one conference I personally would like to nominate Rainer for "Visual FoxPro Sainthood" {g}. I know it is one of the finest FoxPro conferences put on planet Earth. Rainer has a fantastic set of sessions lined up again, at a great conference center, and the food... none better anywhere at any conference. If you have even a remote chance to get to this conference you owe it to yourself to get there. You can read any of the many blog posts I have done live during the German DevCons by hitting the index on this page for November 2006 and November 2005. I will be presenting the following sessions:
  • Fishing with a Projecthook
  • VFPX Tools and Components – Live
  • Creating Help - Made Easy!
  • SQL Server Toolkit for the VFP Developer
Many of the same sessions heard at Southwest Fox will be presented in Germany, so if you read the buzz on Southwest Fox and wished you had not missed it, you have a chance to hear some great sessions plus some more great content presented in German and English from some of the finest presenters around. You can register here.

Quick on the heals of German DevCon is a train ride to the Netherlands for SDN and the one-day Visual FoxPro track the Monday after Frankfurt. I have heard from other speakers how fun this one-day event is and feel blessed to be asked to present three sessions:
  • VFPX Tools and Components – Live
  • Creating Help - Made Easy!
  • SQL Server Toolkit for the VFP Developer
Doug Hennig is presenting the other VFP sessions:
  • Best Practices for Vertical Application Development
  • Developing Visual FoxPro Applications for Windows Vista
I can recommend both of Doug's sessions. I have listened in on his vertical market session almost a half dozen times, and learned or re-learned something each time. His Vista session is a must for every VFP developer, and is a session I think will be popular for years to come.

More details about SDN can be found here.

One thing I learned at Southwest Fox (more blogs to come, promise) is the number of people who have not heard about VFPX. I am really looking forward to showing off the VFPX tools and components and hope to get the European VFP developers excited like what happened in Mesa a couple weeks ago.

After SDN I am headed up to Amsterdam for a day of touring and then back to work. The trip will go by fast and I am sure by the time I get to Amsterdam I will be fully adjusted to the new time zone just in time to head back to Michigan. That is the tough part of these short trips a quarter of the way around the world. Fortunately I am energized by the crowd and by the FoxPro enthusiasm. I look forward to seeing everyone at these two conferences and making some new friends.

Labels: , , ,

Sunday, October 14, 2007

Southwest Fox: T-minus 3.25 days and counting...

I can hardly believe after a year in the planning, and months of getting the details ironed out that we are only days away from Southwest Fox 2007!

Last Friday we took in three more registrations for a total of 144 people so far. There are a couple more people who have told me they want to register so there might be more. Yes, there is still time to register if you want, but do not wait much longer. With speakers and vendors we are close to 175 people. WOW!

Last night Therese and I assembled all the badges for the attendees, speakers, vendors, staff and volunteers. It took most of the afternoon to print out the badge names for the top, the SWF nameplate for the bottom, and the schedule for the back. Lots of cutting and assembling. It was not too bad except for the fact my laser printer and card stock apparently don't get along well. Babysitting a printer is not my idea of fun, but you already know my love of hardware. Going through the list of people coming was fun. Therese kept saying "I know this person, they have been to Southwest Fox before", or "I have heard you talk about {name here}, where do you know them from?" Several of them are White Light Computing customers {s}.

The conference booklet with all the specifics about the conference, maps, local restaurants, schedules, session abstracts, download details, and the like are off to the printer and with any luck will be ready for us when we get to Mesa on Tuesday afternoon. Kinko's confirmed everything as I was typing this blog entry up.

We have lots to do in Mesa. I was documenting all the stops Therese and I have on Tuesday to pick up printed material from Kinko's, items I mailed to Bob Kocher, door prizes, pick up a couple of speakers from the airport, get some food, and get some sleep. We have to leave our house at 2:30AM Arizona time to take two of our kids back to college before our flight out. So I might be a bit of a zombie if you see me walking around the conference center on Wednesday.

Oh, there are a few surprises we have not even revealed yet. {bg}

One thing that will not be a surprise is the weather: 85-90F during the day (30-32C for our metric friends) and around 60F at night (16C which sounds a whole lot colder {g}).

We will have one more email to everyone registered with some final details including the ability to download the session materials, white papers, and examples in advance of your arrival in Mesa. This way you can do some homework on the sessions before you arrive in Mesa, and print out some notes to bring to the conference.

I am hoping to blog during the conference, but we will see if there is any time. I know several other bloggers are coming to the conference and hope they have a chance to let you know how it is going as the conference proceeds. If you are coming and plan on blogging let me know so we can get the word out.

I am really psyched we are in the home stretch. The nightmares are increasing in frequency and intensity so it is definitely getting close. Last night's was the fact that every speaker, plus Doug and Tamar called me while I was in the airport to say they were delayed for a few days. I started to figure out how I could give all the sessions myself without any preparation. Ugh. I am also looking forward to taking in some R&R after the conference during our annual company retreat in Sedona next week to let go of the stress.

See everyone soon. Only 3.25 days until Southwest Fox begins!

Labels: , ,

Paul Mrozowski is blogging

Paul Mrozowski's Blog - definitely subscribed!

Paul is a friend, former co-worker, fellow DAFUGger, WebConnect MVP, MereMortals.NET MVP, and all-around smart guy in both VFP and .NET.

Good to see you are blogging Paul!

Labels:

Friday, October 12, 2007

VFP 9 SP2 Released

I saw this posted on Andrew MacNeill's blog first (but also reported by almost everyone else I subscribe to in the Fox Community). Microsoft has released the VFP 9 Service Pack 2. We talked about this last night at DAFUG after Cathy Pountney's excellent rehearsal for her Southwest Fox session "OutFox the VFP Report Writer: Printing on My Terms."

Head over and read Milind Lele's brief note on the release. A couple of notes, this is not the release of Sedna (the Xbase tools and .NET extensions to VFP 9). This will be released separately. I am not sure why these were released separately, but can guess that there are some legal issues to be ironed out to get the Sedna code posted on CodePlex under the shared source license.

One small typo in Milind's letter: he notes about not installing this over one of the "betas." He correctly instructs VFP developers to not install this over a CTP or beta. You need a clean install of VFP 9 RTM (release to manufacturing with no service packs), or the VFP 9 SP1. The typo is the word "betas." I am a little surprised that Microsoft only released one beta for this service pack. Sure we had a few CTPs along the way, but those were definitely alpha releases. Alpha releases are made before the feature set is finalized. Even under the normal service pack release process we saw a beta and release candidates. Throw on top of this the concept that this could be the last service pack released I expected at least one release candidate after the original beta. I am a little surprised we only saw one beta.

Last night during Cathy's presentation she ran into a bug under Vista where right-clicking on the method code editor freezes VFP after the shortcut menu is displayed. You can break the freeze several ways, but definitely a pain in the neck and not something I see in the list. Maybe it was fixed and overlooked in the bug list, or maybe I missed it in the list.

I am hopeful the Fox team listened to the posts about bugs and did some fantastic internal testing. Fingers crossed. Now I have to determine if I override my "no installs" two weeks before a conference rule and get this loaded before Southwest Fox.

Labels: , ,

Wednesday, October 10, 2007

Red Gate Looking for VFP User Groups

I was conversing with Rachel Hawley of Red Gate (makers of some excellent SQL Server tools). Rachel is responsible for some of the door prizes we are giving away at Southwest Fox next week. In the spirit of full disclosure: I am a "Friend of Red Gate". This is a program Red Gate offers Microsoft MVPs. The fact is I have licensed Red Gate products for years before I became a friend, and only share my experiences with their products because I find them productive. That said, they have some exciting news for Fox user groups

Red Gate is expanding their support of user groups and Rachel was asking me if I knew of any other groups they should be targeting. I naturally told her how Visual FoxPro developers often use SQL Server, and how even Access developers use SQL Server as a backend database. So Rachel is looking for Visual FoxPro user groups to get in contact. From her email:
"As our .NET division continues to grow, so I am looking for new avenues of user groups to offer Red Gate's assistance to. If you know of any Visual Fox Pro or Microsoft Access Developers groups in your local area and you think that they could benefit from our sponsorship or assistance please do pass on their details to me. As you know, we are always willing to try and reach out to the local community as much as we can and your assistance with this is always very much appreciated."
I am not exactly sure what Rachel is planning to do other than to help provide some speakers to meetings, which is a big help if you have worked on this aspect of the user group.

If you are a VFP user group leader make sure one person from your group sends Rachel an email to let her know about your group. You can get in contact with her: Rachel period Hawley at red-gate period com.

(Please note: I know this should be obvious if you know me, but I do not get any kickback by getting user groups to sign up with Red Gate, I am only doing this to help out other Fox user groups in our community.)

Labels:

Tuesday, October 02, 2007

Southwest Fox: Speaker Switcheroo

Today was another busy day here at the three offices of Southwest Fox. A flurry of activity is going on behind the scenes as we are preparing the Conference CD with all the whitepapers and examples, the conference booklet, session signs, and badge holder schedules. But hold the presses, we have to make things interesting and perform a speaker switcheroo.

So from our news page (and RSS feed):
Unfortunately, Kevin Goff will not be able to speak at Southwest Fox. Fortunately, Mike Feltman has agreed to step in and give a session on error handling in Kevin's time slots. Attendees who were registered for Kevin's preconference session on Crystal Reports will be given the opportunity to choose another precon or get a refund (assuming it wasn't the free precon from registering early).
So as the saying goes: make lemonade out of lemons.

I am really glad we have Mike stepping in and pinch hitting this late in the game (heh, it is baseball playoff time here in the USA). Mike is a true geek, and an experienced VFP professional, and probably one of the smartest people I know. He is also half the reason each and every Southwest Fox attendee is going to walk away with the opportunity to get a new license to Visual Fox Express, or an extension on their VFE subscription.

So if you are a K.O.K.O.P.E.L.L.I. fan, head out and get the latest version. The schedule is already current too.

Thanks Mike! OK, please return back to your regularly scheduled programming.

Only 15 days until Southwest Fox starts in Mesa!

Labels: , ,

Views: VFP 9 Changed Behavior

I am working on a project to enhance an existing application, and in the process I am updating it from VFP 5 to VFP 9 (more stable, less filling). I thought I was going to take advantage of the multiple detail band features of the new Report Designer, but decided on another approach. The update from VFP 5 to VFP 9 has been smooth with the help of three lines of code:

SET ENGINEBEHAVIOR 70
SET REPORTBEHAVIOR 80
_screen.Themes = .F.


That is until yesterday...

The users acceptance testing revealed two bugs that are related. The application has some calculations on a report, and the calculations were evaluating incorrectly. The users pointed me toward a number not being included in the final results, but the formula definitely included the table column in question. It turns out that data was not being correctly pulled from the SQL Server database.

My debugging session showed no records in a certain scenario. I initially thought it had to do with the data in the base tables in SQL Server not having the conditions. and told the users they needed to set up data that met the criteria. They did and it still did not pull any data. Things that make you go hmmmmm.

What I found out in closer inspection is the original developer made a local view of two remote views. The code USEs the one local view with NODATA and later does a REQUERY(). Years ago I observed strange behavior with views based on other views and have stayed away from them. This situation is even "stranger" since it is a local view based on two remote views. Looking a the code, I never gave it a thought this was the case. I assumed (incorrectly of course) that this was a view pulling data directly from SQL Server.

In VFP 9, when you open a view NODATA, and the view is based on other views that are not yet USEd, the underlying views are also opened with NODATA.

In VFP 8 and earlier (I tested every version back to VFP 5), when you open a view NODATA and the other views are not yet USEd, only that view is opened with NODATA and the underlying views are opened with data.

Back to VFP 9, issuing the REQUERY() on the view requeried no records because the other views were already empty. Ugh. It was not the SQL Server data not meeting the criteria after all, it was the local cursors being empty.

The fix is easy: open the underlying views first, then open up the original view and REQUERY(). Fortunately the IT manager who is my customer understands how things like this can happen. He has been waiting to hear the "VFP 9 update excuse" during this testing period. He is a .NET developer so we had some fun jabbing each other's favorite developer tool.

I also tested this same issue with a local view of two other local views. Same behavior. It is not remote view specific. Unfortunately I cannot find any documentation in the Help file with respect to this behavior change, so I thought I would post it here and possibly save someone else some aggravation down the road. I never ran into this because I do not do view-on-view coding, but I know others do and this is something you should be aware of when you use this technique.

Labels: , ,